www.cheapflightnow.com Open in urlscan Pro
64.87.5.219  Public Scan

Submitted URL: http://cheapflightnow.com/
Effective URL: https://www.cheapflightnow.com/
Submission: On October 06 via manual from US — Scanned from DE

Form analysis 1 forms found in the DOM

POST ./

<form method="post" action="./" onsubmit="javascript:return WebForm_OnSubmit();" onkeypress="javascript:return WebForm_FireDefaultButton(event, 'SearchBtn')" id="aspnetForm" target="_top">
  <div class="aspNetHidden">
    <input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="">
    <input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="">
    <input type="hidden" name="__LASTFOCUS" id="__LASTFOCUS" value="">
    <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"
      value="/wEPDwUKLTM2MTYyMTExNQ9kFgJmD2QWAmYPZBYCAgEPFgIeBGxhbmcFAmVuFgQCAQ9kFgYCAg9kFgICAQ9kFgICAQ8WAh4EVGV4dAWnUjxsaW5rIGhyZWY9Ii9oYW5kbGVycy9jc3MuYXNoeD92PTImc2l0ZWlkPTQ5JnRoZW1lPVNtYXJ0ZmFyZXMmdWl0aGVtZT1MaWdodG5lc3Mmc2l0ZWNzcz0xNTE5JnBhZ2V2ZXJzaW9uY3NzPTE1MjUmaW5jbHVkZT0mcmVmcmVzaD0zLzIwLzIwMTkgMTI6MjA6NDYgQU0iIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+PG1ldGEgbmFtZT0iZ29vZ2xlLXNpdGUtdmVyaWZpY2F0aW9uIiBjb250ZW50PSJ2UVBCVXNCbUFsRVM4WVVZV1p1QUd3SUJ3aGY0bjZfOVdscWhqaEVrdjhZIiAvPg0KPG1ldGEgbmFtZT0icmV2aXNpdC1hZnRlciIgY29udGVudD0iMTUgZGF5cyI+DQo8bWV0YSBuYW1lPSJkaXN0cmlidXRpb24iIGNvbnRlbnQ9IndlYiI+DQo8bWV0YSBuYW1lPSJwOmRvbWFpbl92ZXJpZnkiIGNvbnRlbnQ9IjQzOTM0Y2M0ZDZlYzE1MGY2MTI2NjU5OGYyOGU1NTc0Ii8+DQo8c2NyaXB0IHNyYz0iLy93d3cuZ29vZ2xlLmNvbS9hZHNlbnNlL3NlYXJjaC9hZHMuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+DQo8c2NyaXB0IHNyYz0iL1NpdGVzLzQ5L1NjcmlwdHMvYWRzX2dvb2dsZS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4NCjxtZXRhIG5hbWU9Im1zdmFsaWRhdGUuMDEiIGNvbnRlbnQ9IjI5MTBGMjQwRUYwRkI1QjFDMDM4MjcyRUZBNjZGQkIzIiAvPg0KPGxpbmsgcmVsPSJhdXRob3IiIGhyZWY9Ii8vcGx1cy5nb29nbGUuY29tLzExMzA4NTQxMjkyMDkzNDE4NDg5My9wb3N0cyIgLz4NCjxtZXRhIG5hbWU9Imdvb2dsZS1zaXRlLXZlcmlmaWNhdGlvbiIgY29udGVudD0iOFNka0VTTVhBdmJCbGptazRRYXNpa0VaWHZJQ09RUC1PcnFYYm9rVEdqZyIgLz4NCjxzY3JpcHQ+DQogICAgKGZ1bmN0aW9uIChpLCBzLCBvLCBnLCByLCBhLCBtKSB7DQogICAgICAgIGlbJ0dvb2dsZUFuYWx5dGljc09iamVjdCddID0gcjsgaVtyXSA9IGlbcl0gfHwgZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgKGlbcl0ucSA9IGlbcl0ucSB8fCBbXSkucHVzaChhcmd1bWVudHMpDQogICAgICAgIH0sIGlbcl0ubCA9IDEgKiBuZXcgRGF0ZSgpOyBhID0gcy5jcmVhdGVFbGVtZW50KG8pLA0KICAgICAgICBtID0gcy5nZXRFbGVtZW50c0J5VGFnTmFtZShvKVswXTsgYS5hc3luYyA9IDE7IGEuc3JjID0gZzsgbS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLCBtKQ0KICAgIH0pKHdpbmRvdywgZG9jdW1lbnQsICdzY3JpcHQnLCAnLy93d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20vYW5hbHl0aWNzLmpzJywgJ2dhJyk7DQogICAgZ2EoJ2NyZWF0ZScsICdVQS00Njc4NDU2MS0xJywgJ2F1dG8nKTsNCiAgICBnYSgnc2VuZCcsICdwYWdldmlldycpOw0KPC9zY3JpcHQ+DQoNCjwhLS1TdGFydCBvZiBab3BpbSBMaXZlIENoYXQgU2NyaXB0LS0+DQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQogICAgdmFyIHVybCA9IHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZQ0KICAgIHBhdGggPSB1cmwuc3BsaXQoIi4iKVswXS50b0xvd2VyQ2FzZSgpIDsNCiAgICBpZiAocGF0aCA9PSAic2F2ZSIpIHsNCiAgICAgICAgd2luZG93LiR6b3BpbSB8fCAoZnVuY3Rpb24gKGQsIHMpIHsNCiAgICAgICAgICAgIHZhciB6ID0gJHpvcGltID0gZnVuY3Rpb24gKGMpIHsNCiAgICAgICAgICAgICAgICB6Ll8ucHVzaChjKQ0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICQgPSB6LnMgPSBkLmNyZWF0ZUVsZW1lbnQocyksDQogICAgICAgICAgICBlID0gZC5nZXRFbGVtZW50c0J5VGFnTmFtZShzKVswXTsNCiAgICAgICAgICAgIHouc2V0ID0gZnVuY3Rpb24gKG8pIHsNCiAgICAgICAgICAgICAgICB6LnNldC5fLnB1c2gobykNCiAgICAgICAgICAgIH07DQogICAgICAgICAgICB6Ll8gPSBbXTsNCiAgICAgICAgICAgIHouc2V0Ll8gPSBbXTsNCiAgICAgICAgICAgICQuYXN5bmMgPSAhMDsNCiAgICAgICAgICAgICQuc2V0QXR0cmlidXRlKCdjaGFyc2V0JywgJ3V0Zi04Jyk7DQogICAgICAgICAgICAkLnNyYyA9ICdodHRwczovL3YyLnpvcGltLmNvbS8/MjdHVFdWWVRvenl6ZEJITENaZHduR0VsdzZiemJyZ2gnOw0KICAgICAgICAgICAgei50ID0gK25ldyBEYXRlOw0KICAgICAgICAgICAgJC50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7DQogICAgICAgICAgICBlLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKCQsIGUpDQogICAgICAgIH0pKGRvY3VtZW50LCAnc2NyaXB0Jyk7DQogICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgIC8vJHpvcGltLmxpdmVjaGF0LnNldExhbmd1YWdlKCdlbicpOw0KICAgICAgICAgICAgJHpvcGltLmxpdmVjaGF0LmJhZGdlLnNldFRleHQoJ0NIQVQgV0lUSCBVUycpOw0KICAgICAgICAgICAgJHpvcGltLmxpdmVjaGF0LmJhZGdlLnNldENvbG9yKCcjOEUxN0ZGJyk7DQogICAgICAgICAgICAvLyAkem9waW0ubGl2ZWNoYXQuYmFkZ2Uuc2hvdygpOw0KICAgICAgICAgICAgJHpvcGltLmxpdmVjaGF0LnRoZW1lLnNldENvbG9yKCcjOEUxN0ZGJyk7DQogICAgICAgICAgICAvLyAkem9waW0ubGl2ZWNoYXQudGhlbWUucmVsb2FkKCk7DQogICAgICAgIH0sIDEwMDApOw0KICAgIH0NCiAgICBlbHNlIHsgLy8gQ0ZODQogICAgICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgIHdpbmRvdy4kem9waW0gfHwgKGZ1bmN0aW9uIChkLCBzKSB7DQogICAgICAgICAgICAgICAgdmFyIHogPSAkem9waW0gPSBmdW5jdGlvbiAoYykgeyB6Ll8ucHVzaChjKSB9LCAkID0gei5zID0NCiAgICAgICAgZC5jcmVhdGVFbGVtZW50KHMpLCBlID0gZC5nZXRFbGVtZW50c0J5VGFnTmFtZShzKVswXTsgei5zZXQgPSBmdW5jdGlvbiAobykgew0KICAgICAgICAgICAgei5zZXQuDQogICAgICAgIF8ucHVzaChvKQ0KICAgICAgICB9Ow0KICAgICAgICAgICAgICAgIHouXyA9IFtdOw0KICAgICAgICAgICAgICAgIHouc2V0Ll8gPSBbXTsNCiAgICAgICAgICAgICAgICAkLmFzeW5jID0gITA7DQogICAgICAgICAgICAgICAgJC5zZXRBdHRyaWJ1dGUoJ2NoYXJzZXQnLCAndXRmLTgnKTsNCiAgICAgICAgICAgICAgICAkLnNyYyA9ICcvL3YyLnpvcGltLmNvbS8/MjdHVFdWWVRvenl6ZEJITENaZHduR0VsdzZiemJyZ2gnOw0KICAgICAgICAgICAgICAgIHoudCA9ICtuZXcgRGF0ZTsNCiAgICAgICAgICAgICAgICAkLnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JzsNCiAgICAgICAgICAgICAgICBlLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKCQsIGUpDQogICAgICAgICAgICB9KShkb2N1bWVudCwgJ3NjcmlwdCcpOw0KICAgICAgICAgICAgLy93aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAvLyAgICAkem9waW0ubGl2ZWNoYXQuYnV0dG9uLnNob3coKTsNCiAgICAgICAgICAgIC8vICAgICR6b3BpbS5saXZlY2hhdC53aW5kb3cuc2hvdygpOw0KICAgICAgICAgICAgLy8gICAgJHpvcGltLmxpdmVjaGF0LmJ1YmJsZS5zaG93KCk7DQogICAgICAgICAgICAvL1lvdSBjYW4gYWRkIG1vcmUgQVBJcyBvbiB0aGlzIGxpbmUNCiAgICAgICAgICAgIC8vfSwgMTIwMDAwKTsgLy90aW1l4oCZcyBpbiBtaWxsaXNlY29uZHMgLSAzMCBzZWNvbmRzID0gMzAwMDANCiAgICAgICAgfSk7DQogICAgfQ0KDQo8L3NjcmlwdD4NCg0KPCEtLUVuZCBvZiBab3BpbSBMaXZlIENoYXQgU2NyaXB0LS0+DQoNCjxzY3JpcHQ+DQovLyBTVEFSVCBSYWt1dGVuIE1hcmtldGluZyBUcmFja2luZw0KICAgICAgICAoZnVuY3Rpb24gKHVybCkgew0KICAgICAgICAgICAgLypUcmFja2luZyBCb290c3RyYXANCiAgICAgICAgICAgIFNldCBVcCBEYXRhTGF5ZXIgb2JqZWN0cy9wcm9wZXJ0aWVzIGhlcmUqLw0KICAgICAgICAgICAgaWYgKCF3aW5kb3cuRGF0YUxheWVyKSB7DQogICAgICAgICAgICAgICAgd2luZG93LkRhdGFMYXllciA9IHt9Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKCFEYXRhTGF5ZXIuZXZlbnRzKSB7DQogICAgICAgICAgICAgICAgRGF0YUxheWVyLmV2ZW50cyA9IHt9Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgRGF0YUxheWVyLmV2ZW50cy5TaXRlU2VjdGlvbiA9ICIxIjsNCg0KICAgICAgICAgICAgdmFyIGxvYywgY3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTsNCiAgICAgICAgICAgIGN0LnR5cGUgPSAidGV4dC9qYXZhc2NyaXB0IjsNCiAgICAgICAgICAgIGN0LmFzeW5jID0gdHJ1ZTsNCiAgICAgICAgICAgIGN0LnNyYyA9IHVybDsNCiAgICAgICAgICAgIGxvYyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKVswXTsNCiAgICAgICAgICAgIGxvYy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShjdCwgbG9jKTsNCiAgICAgICAgfShkb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbCArICIvL2ludGxqcy5ybXRhZy5jb20vMTEzMzg1LmN0LmpzIikpOw0KLy8gRU5EIFJha3V0ZW4gTWFya2V0aW5nIFRyYWNraW5nDQo8L3NjcmlwdD4NCg0KPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Ij4oZnVuY3Rpb24gKHcsIGQsIHQsIHIsIHUpIHsgd1t1XSA9IHdbdV0gfHwgW107IHdbdV0ucHVzaCh7ICdwcm9qZWN0SWQnOiAnMTAwMDAnLCAncHJvcGVydGllcyc6IHsgJ3BpeGVsSWQnOiAnMTAwMTU0MDYnIH0gfSk7IHZhciBzID0gZC5jcmVhdGVFbGVtZW50KHQpOyBzLnNyYyA9IHI7IHMuYXN5bmMgPSB0cnVlOyBzLm9ubG9hZCA9IHMub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkgeyB2YXIgeSwgcnMgPSB0aGlzLnJlYWR5U3RhdGUsIGMgPSB3W3VdOyBpZiAocnMgJiYgcnMgIT0gImNvbXBsZXRlIiAmJiBycyAhPSAibG9hZGVkIikgeyByZXR1cm4gfSB0cnkgeyB5ID0gWUFIT08ueXdhLkkxM04uZmlyZUJlYWNvbjsgd1t1XSA9IFtdOyB3W3VdLnB1c2ggPSBmdW5jdGlvbiAocCkgeyB5KFtwXSkgfTsgeShjKSB9IGNhdGNoIChlKSB7IH0gfTsgdmFyIHNjciA9IGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUodClbMF0sIHBhciA9IHNjci5wYXJlbnROb2RlOyBwYXIuaW5zZXJ0QmVmb3JlKHMsIHNjcikgfSkod2luZG93LCBkb2N1bWVudCwgInNjcmlwdCIsICJodHRwczovL3MueWltZy5jb20vd2kveXRjLmpzIiwgImRvdHEiKTs8L3NjcmlwdD4NCg0KICA8IS0tc2NyaXB0Pg0KICAgKGZ1bmN0aW9uICgpIHsNCgkgICAJdmFyIHVybDIgPSB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUNCgkgICAgcGF0aCA9IHVybDIuc3BsaXQoIi4iKVswXS50b0xvd2VyQ2FzZSgpIDsNCgkJdmFyIHVybCA9ICJodHRwczovL2JldHRlci1yb2kuY29tL2NsaWVudC9jMjAxOGZlNmI3ZjkwNjVmOTBkZDhlYjMyMjJkOGQ0OC5qcyI7DQoJCXZhciBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsNCgkJc2NyaXB0LnNyYyA9IHVybDsNCgkJaWYgKHBhdGggIT0gImFkIikgew0KCQkJZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpOw0KCQl9DQogICB9KCkpOw0KPC9zY3JpcHQtLT4NCg0KPCEtLSBzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCiAgICB3aW5kb3cuaGVhcCA9IHdpbmRvdy5oZWFwIHx8IFtdLCBoZWFwLmxvYWQgPSBmdW5jdGlvbiAoZSwgdCkgeyB3aW5kb3cuaGVhcC5hcHBpZCA9IGUsIHdpbmRvdy5oZWFwLmNvbmZpZyA9IHQgPSB0IHx8IHt9OyB2YXIgciA9IHQuZm9yY2VTU0wgfHwgImh0dHBzOiIgPT09IGRvY3VtZW50LmxvY2F0aW9uLnByb3RvY29sLCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7IGEudHlwZSA9ICJ0ZXh0L2phdmFzY3JpcHQiLCBhLmFzeW5jID0gITAsIGEuc3JjID0gKHIgPyAiaHR0cHM6IiA6ICJodHRwOiIpICsgIi8vY2RuLmhlYXBhbmFseXRpY3MuY29tL2pzL2hlYXAtIiArIGUgKyAiLmpzIjsgdmFyIG4gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IilbMF07IG4ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSwgbik7IGZvciAodmFyIG8gPSBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZnVuY3Rpb24gKCkgeyBoZWFwLnB1c2goW2VdLmNvbmNhdChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKSkgfSB9LCBwID0gWyJhZGRFdmVudFByb3BlcnRpZXMiLCAiYWRkVXNlclByb3BlcnRpZXMiLCAiY2xlYXJFdmVudFByb3BlcnRpZXMiLCAiaWRlbnRpZnkiLCAicmVtb3ZlRXZlbnRQcm9wZXJ0eSIsICJzZXRFdmVudFByb3BlcnRpZXMiLCAidHJhY2siLCAidW5zZXRFdmVudFByb3BlcnR5Il0sIGMgPSAwOyBjIDwgcC5sZW5ndGg7IGMrKykgaGVhcFtwW2NdXSA9IG8ocFtjXSkgfTsNCiAgICBoZWFwLmxvYWQoIjMzNTExMDQ0NjYiKTsNCjwvc2NyaXB0IC0tPg0KDQo8IS0tU3RlZWxIb3VzZSBUcmFja2luZyBQaXhlbC0tPg0KPCEtLSBJTlNUQUxMIE9OIEFMTCBQQUdFUyBPRiBTSVRFLS0+DQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQooZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIGU9bnVsbCxiPSI0LjAuMCIsDQpuPSIyMjczMyIsDQphZGRpdGlvbmFsPSIiLA0KdCxyLGk7dHJ5e3Q9dG9wLmRvY3VtZW50LnJlZmVyZXIhPT0iIj9lbmNvZGVVUklDb21wb25lbnQodG9wLmRvY3VtZW50LnJlZmVycmVyLnN1YnN0cmluZygwLDIwNDgpKToiIn1jYXRjaChvKXt0PWRvY3VtZW50LnJlZmVycmVyIT09bnVsbD9kb2N1bWVudC5yZWZlcnJlci50b1N0cmluZygpLnN1YnN0cmluZygwLDIwNDgpOiIifXRyeXtyPXdpbmRvdyYmd2luZG93LnRvcCYmZG9jdW1lbnQubG9jYXRpb24mJndpbmRvdy50b3AubG9jYXRpb249PT1kb2N1bWVudC5sb2NhdGlvbj9kb2N1bWVudC5sb2NhdGlvbjp3aW5kb3cmJndpbmRvdy50b3AmJndpbmRvdy50b3AubG9jYXRpb24mJiIiIT09d2luZG93LnRvcC5sb2NhdGlvbj93aW5kb3cudG9wLmxvY2F0aW9uOmRvY3VtZW50LmxvY2F0aW9ufWNhdGNoKHUpe3I9ZG9jdW1lbnQubG9jYXRpb259dHJ5e2k9cGFyZW50LmxvY2F0aW9uLmhyZWYhPT0iIj9lbmNvZGVVUklDb21wb25lbnQocGFyZW50LmxvY2F0aW9uLmhyZWYudG9TdHJpbmcoKS5zdWJzdHJpbmcoMCwyMDQ4KSk6IiJ9Y2F0Y2goYSl7dHJ5e2k9ciE9PW51bGw/ZW5jb2RlVVJJQ29tcG9uZW50KHIudG9TdHJpbmcoKS5zdWJzdHJpbmcoMCwyMDQ4KSk6IiJ9Y2F0Y2goZil7aT0iIn19dmFyIGwsYz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSxoPW51bGwscD1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IiksZD1OdW1iZXIocC5sZW5ndGgpLTEsdj1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IilbZF07aWYodHlwZW9mIGw9PT0idW5kZWZpbmVkIil7bD1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMWUxNyl9aD0iZHguc3RlZWxob3VzZW1lZGlhLmNvbS9zcHg/IisiZHh2ZXI9IitiKyImc2hhaWQ9IituKyImdGRyPSIrdCsiJnBsaD0iK2krIiZjYj0iK2wrYWRkaXRpb25hbDtjLnR5cGU9InRleHQvamF2YXNjcmlwdCI7Yy5zcmM9KCJodHRwczoiPT09ZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2w/Imh0dHBzOi8vIjoiaHR0cDovLyIpK2g7di5wYXJlbnROb2RlLmluc2VydEJlZm9yZShjLHYpfSkoKQ0KPC9zY3JpcHQ+DQo8IS0tIEhvdGphciBUcmFja2luZyBDb2RlIC0tPg0KPHNjcmlwdD4NCiAgICAoZnVuY3Rpb24oaCxvLHQsaixhLHIpew0KICAgICAgICBoLmhqPWguaGp8fGZ1bmN0aW9uKCl7KGguaGoucT1oLmhqLnF8fFtdKS5wdXNoKGFyZ3VtZW50cyl9Ow0KICAgICAgICBoLl9oalNldHRpbmdzPXtoamlkOjc2MDMxMixoanN2OjZ9Ow0KICAgICAgICBhPW8uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTsNCiAgICAgICAgcj1vLmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO3IuYXN5bmM9MTsNCiAgICAgICAgci5zcmM9dCtoLl9oalNldHRpbmdzLmhqaWQraitoLl9oalNldHRpbmdzLmhqc3Y7DQogICAgICAgIGEuYXBwZW5kQ2hpbGQocik7DQogICAgfSkod2luZG93LGRvY3VtZW50LCdodHRwczovL3N0YXRpYy5ob3RqYXIuY29tL2MvaG90amFyLScsJy5qcz9zdj0nKTsNCjwvc2NyaXB0Pg0KPHNjcmlwdCBkYXRhLWNmYXN5bmM9ImZhbHNlIiBjaGFyc2V0PSJ1dGYtOCI+IDsoZnVuY3Rpb24gKGcpIHsgZy5hdXJ5Y1JlYWR5Q2IgPSBnLmF1cnljUmVhZHlDYiB8fCBbXTsgdmFyIGQgPSBkb2N1bWVudCwgaSwgYW0gPSBkLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpLCBoID0gZC5oZWFkIHx8IGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXSxhZXggPSB7ICJzcmMiOiAiLy9jZG4udXNlcnR5LmNvbS81MDMtY2hlYXBmbGlnaHRub3djb20vY29udGFpbmVyLmpzIiwgImRhdGEtY2Zhc3luYyI6ICJmYWxzZSIsICJhc3luYyI6ICJ0cnVlIiwgImRlZmVyIjogInRydWUiLCAiZGF0YS12ZW5kb3IiOiAidXNlcnR5IiwgImRhdGEtcm9sZSI6ICJjb250YWluZXIiLCAiY2hhcnNldCI6ICJ1dGYtOCIgfTsgZm9yICh2YXIgYXR0ciBpbiBhZXgpIHsgYW0uc2V0QXR0cmlidXRlKGF0dHIsYWV4W2F0dHJdKTsgfSBoLmFwcGVuZENoaWxkKGFtKTsgfSkod2luZG93KTsgPC9zY3JpcHQ+PCEtLSBGYWNlYm9vayBQaXhlbCBDb2RlIC0tPg0KPHNjcmlwdD4NCiAgICAhZnVuY3Rpb24gKGYsIGIsIGUsIHYsIG4sIHQsIHMpIHsNCiAgICAgICAgaWYgKGYuZmJxKSByZXR1cm47IG4gPSBmLmZicSA9IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgIG4uY2FsbE1ldGhvZCA/DQogICAgICAgICAgICBuLmNhbGxNZXRob2QuYXBwbHkobiwgYXJndW1lbnRzKSA6IG4ucXVldWUucHVzaChhcmd1bWVudHMpDQogICAgICAgIH07DQogICAgICAgIGlmICghZi5fZmJxKSBmLl9mYnEgPSBuOyBuLnB1c2ggPSBuOyBuLmxvYWRlZCA9ICEwOyBuLnZlcnNpb24gPSAnMi4wJzsNCiAgICAgICAgbi5xdWV1ZSA9IFtdOyB0ID0gYi5jcmVhdGVFbGVtZW50KGUpOyB0LmFzeW5jID0gITA7DQogICAgICAgIHQuc3JjID0gdjsgcyA9IGIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoZSlbMF07DQogICAgICAgIHMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodCwgcykNCiAgICB9KHdpbmRvdywgZG9jdW1lbnQsICdzY3JpcHQnLA0KICAgICdodHRwczovL2Nvbm5lY3QuZmFjZWJvb2submV0L2VuX1VTL2ZiZXZlbnRzLmpzJyk7DQogICAgZmJxKCdpbml0JywgJzEzMzgyODY2NTI5NDIzMTAnKTsNCiAgICBmYnEoJ3RyYWNrJywgJ1BhZ2VWaWV3Jyk7DQo8L3NjcmlwdD4NCjxub3NjcmlwdD4NCgk8aW1nIGhlaWdodD0iMSIgd2lkdGg9IjEiIHN0eWxlPSJkaXNwbGF5Om5vbmUiIHNyYz0iaHR0cHM6Ly93d3cuZmFjZWJvb2suY29tL3RyP2lkPTEzMzgyODY2NTI5NDIzMTAmZXY9UGFnZVZpZXcmbm9zY3JpcHQ9MSIvPg0KPC9ub3NjcmlwdD4NCjwhLS0gRW5kIEZhY2Vib29rIFBpeGVsIENvZGUgLS0+DQo8IS0tIExBTkRJTkcgUEFHRSBTVEFSVCAtLT4NCjxzY3JpcHQ+DQppZiAocGF0aCA9PSAnYWQnKSB7DQogICAgY29uc29sZSAmJiBjb25zb2xlLmxvZygiQ2hlY2tpbmcgZm9yIEFkLm5ldCBwYXJhbSIpOw0KICAgIHZhciB1cmwgPSAod2luZG93LmxvY2F0aW9uICE9IHdpbmRvdy5wYXJlbnQubG9jYXRpb24pID8gZG9jdW1lbnQucmVmZXJyZXIgOiBkb2N1bWVudC5sb2NhdGlvbi5ocmVmOw0KICAgIGZ1bmN0aW9uIGdldEFuaWQobmFtZSkgew0KICAgICAgICBuYW1lID0gbmFtZS5yZXBsYWNlKC9bXFtdLywgIlxcWyIpLnJlcGxhY2UoL1tcXV0vLCAiXFxdIik7DQogICAgICAgIHZhciByZWdleCA9IG5ldyBSZWdFeHAoIltcXD8mXWFuaWQ9KFteJiNdKikiKSwNCiAgICAgICAgICAgICAgICByZXN1bHRzID0gcmVnZXguZXhlYyh1cmwp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ZmEgZmEtcnNzIj48L2k+DQogICAgICAgIDwvYT4NCiAgICA8L2xpPiAtLT4NCjwvdWw+ZAIHD2QWBmYPZBYCZg9kFgICAQ8WAh8DBcgPPG5hdiBjbGFzcz0ibmF2YmFyIG5hdmJhci1kZWZhdWx0IG5hdmJhci1maXhlZC1ib3R0b20gY2ZuLWJhbm5lciB2aXNpYmxlLXhzLWJsb2NrIj4NCiAgICA8ZGl2IGNsYXNzPSJjb250YWluZXItZmx1aWQiPg0KDQogICAgICAgIDxzY3JpcHQ+DQogICAgICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgaWYgKERpc3BsYXlQaG9uZSkgew0KICAgICAgICAgICAgICAgIGlmIChEaXNwbGF5TG9jYWxQaG9uZSkgew0KICAgICAgICAgICAgICAgICAgICAkKCcuR2VuZXJpY1Bob25lJykuaGlkZSgpOw0KICAgICAgICAgICAgICAgICAgICAkKCcuTG9jYWxQaG9uZScpLnNob3coKTsNCiAgICAgICAgICAgICAgICAgICAgJCgnLkxvY2FsUGhvbmVOYW1lJykuaHRtbChDb3VudHJ5TmFtZSk7DQogICAgICAgICAgICAgICAgICAgICQoJy5Db3VudHJ5Q29kZScpLmh0bWwoQ291bnRyeUNvZGUpOw0KICAgICAgICAgICAgICAgICAgICB2YXIgcGhvbmVsZW5ndGggPSAiKzEgODU4LTI1Ni03MTk4IjsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHBob25lbGVuZ3RoLmxlbmd0aCA+IDEyKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkKCcuYmlncGhvbmUnKS5hZGRDbGFzcygnc21hbGxwaG9uZScpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICB2YXIgdXJsID0gd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lDQogICAgICAgICAgICBwYXRoID0gdXJsLnNwbGl0KCIuIilbMF07DQoNCiAgICAgICAgICAgIGlmIChwYXRoID09ICJzYXZlIikgew0KICAgICAgICAgICAgICAgICQoJy5waG9uZV9zYXZlJykuc2hvdygpOw0KICAgICAgICAgICAgICAgICQoJy5waG9uZV9jZm4nKS5oaWRlKCk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICQoJy5waG9uZV9zYXZlJykuaGlkZSgpOw0KICAgICAgICAgICAgICAgICQoJy5waG9uZV9jZm4nKS5zaG93KCk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgfSk7DQogICAgICAgIDwvc2NyaXB0Pg0KICAgICAgICA8bmF2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWRlZmF1bHQgbmF2YmFyLWZpeGVkLWJvdHRvbSBjZm4tYmFubmVyIHZpc2libGUteHMtYmxvY2siPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyLWZsdWlkIj4NCiAgICAgICAgICAgICAgICA8YSBocmVmPSJ0ZWw6KzEgODU4LTI1Ni03MTk4IiBjbGFzcz0icGhvbmVfY2ZuIiBzdHlsZT0iIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIGRhdGEtdGFyZ2V0PSIjbW9kYWxCbGFja0xheWVyIj4NCiAgICAgICAgICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz0icHVsbC1sZWZ0Ij5DYWxsIE5vdyBmb3IgVW5wdWJsaXNoZWQgUmF0ZXMgOg0KICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXBob25lIGZhLTJ4IHB1bGwtbGVmdCBmYS1ib3JkZXIiPjwvaT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxoND4rMSA4NTgtMjU2LTcxOTg8L2g0Pg0KICAgICAgICAgICAgICAgICAgICA8L3N0cm9uZz4NCiAgICAgICAgICAgICAgICA8L2E+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0idGVsOisxIDg1OC0yNTYtNzE5OCIgY2xhc3M9InBob25lX3NhdmUiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPg0KICAgICAgICAgICAgICAgICAgICA8c3Ryb25nIGNsYXNzPSJwdWxsLWxlZnQiPkNhbGwgTm93IGZvciBVbnB1Ymxpc2hlZCBSYXRlcyA6DQogICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtcGhvbmUgZmEtMnggcHVsbC1sZWZ0IGZhLWJvcmRlciI+PC9pPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGg0PisxIDg1OC0yNTYtNzE5ODwvaDQ+DQogICAgICAgICAgICAgICAgICAgIDwvc3Ryb25nPg0KICAgICAgICAgICAgICAgIDwvYT4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICA8L25hdj4NCg0KICAgIDwvZGl2Pg0KPC9uYXY+ZAIBD2QWAmYPZBYCAgEPFgIfAwWlHTwhLS0gQmxhY2sgTGF5ZXIgLS0+DQoNCjxkaXYgY2xhc3M9Im1vZGFsIGZhZGUiIGlkPSJtb2RhbEJsYWNrTGF5ZXIiIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIj4NCiAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIiByb2xlPSJkb2N1bWVudCI+DQogICAgPGRpdiBjbGFzcz0ibW9kYWwtY29udGVudCI+ICANCg0KICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50LXdyYXAiPg0KICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQtZ3JvdXAgYW5kcm9pZCI+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctaGVhZGVyIj4gDQogICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2xvc2UiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtbGFiZWw9IkNsb3NlIj4NCiAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvc3Bhbj4NCiAgICAgICAgICAgICAgPC9idXR0b24+DQogICAgICAgICAgICAgIDxpbWcgc3JjPSIvc2l0ZXMvNDkvaW1hZ2VzL3YzL2xvZ28td2hpdGUucG5nIj4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWJvZHkiPg0KDQogICAgICAgICAgICAgIDwhLS0gVHJ1c3RCb3ggd2lkZ2V0IC0gQ2Fyb3VzZWwgLS0+IA0KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0cnVzdHBpbG90LXdpZGdldCIgZGF0YS1sb2NhbGU9ImVuLVVTIiBkYXRhLXRlbXBsYXRlLWlkPSI1M2FhODkxMmRlYzdlMTBkMzhmNTlmMzYiIGRhdGEtYnVzaW5lc3N1bml0LWlkPSI1NTFjMGJmYzAwMDBmZjAwMDU3ZTcxYWYiIGRhdGEtc3R5bGUtaGVpZ2h0PSIxMzBweCIgZGF0YS1zdHlsZS13aWR0aD0iMTAwJSIgZGF0YS10aGVtZT0iZGFyayIgZGF0YS1zdGFycz0iNCw1IiBkYXRhLXNjaGVtYS10eXBlPSJPcmdhbml6YXRpb24iPiANCiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy50cnVzdHBpbG90LmNvbS9yZXZpZXcvY2hlYXBmbGlnaHRub3cuY29tIiB0YXJnZXQ9Il9ibGFuayI+VHJ1c3RwaWxvdDwvYT4gDQogICAgICAgICAgICAgIDwvZGl2PiANCiAgICAgICAgICAgICAgPCEtLSBFbmQgVHJ1c3RCb3ggd2lkZ2V0IC0tPg0KDQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mb290ZXIiPg0KICAgICAgICAgICAgICA8aDQ+Q2FsbCBub3cgdG8gZ2V0IHVucHVsaXNoZWQgZmFyZXMgZnJvbSBvdXIgcHJvZmVzc2lvbmFsIHRyYXZlbCBleHBlcnRzLjwvaDQ+DQogICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWFycm93IGFycm93LWRvd24iPjwvaT4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgIDwvZGl2PiANCiAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50LWdyb3VwIGlvcyI+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctaGVhZGVyIj4gDQogICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2xvc2UiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtbGFiZWw9IkNsb3NlIj4NCiAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvc3Bhbj4NCiAgICAgICAgICAgICAgPC9idXR0b24+DQogICAgICAgICAgICAgIDxpbWcgc3JjPSIvc2l0ZXMvNDkvaW1hZ2VzL3YzL2xvZ28td2hpdGUucG5nIj4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWJvZHkiPg0KDQogICAgICAgICAgICAgIDwhLS0gVHJ1c3RCb3ggd2lkZ2V0IC0gQ2Fyb3VzZWwgLS0+IA0KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0cnVzdHBpbG90LXdpZGdldCIgZGF0YS1sb2NhbGU9ImVuLVVTIiBkYXRhLXRlbXBsYXRlLWlkPSI1M2FhODkxMmRlYzdlMTBkMzhmNTlmMzYiIGRhdGEtYnVzaW5lc3N1bml0LWlkPSI1NTFjMGJmYzAwMDBmZjAwMDU3ZTcxYWYiIGRhdGEtc3R5bGUtaGVpZ2h0PSIxMzBweCIgZGF0YS1zdHlsZS13aWR0aD0iMTAwJSIgZGF0YS10aGVtZT0iZGFyayIgZGF0YS1zdGFycz0iNCw1IiBkYXRhLXNjaGVtYS10eXBlPSJPcmdhbml6YXRpb24iPiANCiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy50cnVzdHBpbG90LmNvbS9yZXZpZXcvY2hlYXBmbGlnaHRub3cuY29tIiB0YXJnZXQ9Il9ibGFuayI+VHJ1c3RwaWxvdDwvYT4gDQogICAgICAgICAgICAgIDwvZGl2PiANCiAgICAgICAgICAgICAgPCEtLSBFbmQgVHJ1c3RCb3ggd2lkZ2V0IC0tPg0KDQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mb290ZXIiPg0KICAgICAgICAgICAgICA8aDQ+DQogICAgICAgICAgICAgICAgQ2FsbCBub3cgdG8gZ2V0IHVucHVsaXNoZWQgZmFyZXMgZnJvbSBvdXIgcHJvZmVzc2lvbmFsIHRyYXZlbCBleHBlcnRzLg0KICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWFycm93IGFycm93LXVwIj48L2k+IA0KICAgICAgICAgICAgICA8L2g0Pg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgPC9kaXY+DQogICAgICAgIDwvZGl2Pg0KDQogICAgPC9kaXY+DQogIDwvZGl2Pg0KPC9kaXY+DQoNCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCg0KICAgIGZ1bmN0aW9uIGdldE1vYmlsZU9wZXJhdGluZ1N5c3RlbSgpIHsNCiAgICAgICAgdmFyIHVzZXJBZ2VudCA9IG5hdmlnYXRvci51c2VyQWdlbnQgfHwgbmF2aWdhdG9yLnZlbmRvciB8fCB3aW5kb3cub3BlcmE7DQoNCiAgICAgICAgLy8gV2luZG93cyBQaG9uZSBtdXN0IGNvbWUgZmlyc3QgYmVjYXVzZSBpdHMgVUEgYWxzbyBjb250YWlucyAiQW5kcm9pZCINCiAgICAgICAgaWYgKC93aW5kb3dzIHBob25lL2kudGVzdCh1c2VyQWdlbnQpKSB7DQogICAgICAgICAgICByZXR1cm4gIldpbmRvd3MgUGhvbmUiOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKC9hbmRyb2lkL2kudGVzdCh1c2VyQWdlbnQpKSB7DQogICAgICAgICAgICByZXR1cm4gIkFuZHJvaWQiOw0KICAgICAgICB9DQoNCg0KICAgICAgICBpZiAoL2lQYWR8aVBob25lfGlQb2QvLnRlc3QodXNlckFnZW50KSAmJiAhd2luZG93Lk1TU3RyZWFtKSB7DQogICAgICAgICAgICByZXR1cm4gImlPUyI7DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gInVua25vd24iOw0KICAgIH0NCg0KICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uICgpIHsNCiAgICAgICAgaWYgKGdldE1vYmlsZU9wZXJhdGluZ1N5c3RlbSgpLnRvTG9jYWxlTG93ZXJDYXNlKCkgPT0gJ2lvcycpIHsNCiAgICAgICAgICAgICQoJy5jb250ZW50LWdyb3VwLmFuZHJvaWQnKS5oaWRlKCk7DQogICAgICAgICAgICAkKCcuY29udGVudC1ncm91cC5pb3MnKS5zaG93KCk7DQogICAgICAgIH0NCiAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAkKCcuY29udGVudC1ncm91cC5pb3MnKS5oaWRlKCk7DQogICAgICAgICAgICAkKCcuY29udGVudC1ncm91cC5hbmRyb2lkJykuc2hvdygpOw0KICAgICAgICB9DQoNCiAgICAgICAgJCgnW2RhdGEtdGFyZ2V0PSIjbW9kYWxCbGFja0xheWVyIl0nKS5jbGljayhmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICB3aW5kb3cubG9jYXRpb24gPSAidGVsOjg1OC0yNTYtNzE5OCINCiAgICAgICAgfSk7DQoNCiAgICAgICAgJCgiI21vZGFsQmxhY2tMYXllciIpLmNsaWNrKGZ1bmN0aW9uKCl7DQogICAgICAgICAgICAkKCcjbW9kYWxCbGFja0xheWVyJykubW9kYWwoJ2hpZGUnKTsNCiAgICAgICAgfSk7DQogICAgfSk7DQoNCjwvc2NyaXB0PiAgZAICD2QWAmYPZBYCAgEPFgIfAwXsDzwhLS0gQ2FsbCBPdmVybGF5IC0tPg0KPGRpdiBjbGFzcz0ibW9kYWwgZmFkZSIgaWQ9ImNhbGxPdmVybGF5IiB0YWJpbmRleD0iLTEiIHJvbGU9ImRpYWxvZyI+DQogICAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIiByb2xlPSJkb2N1bWVudCI+DQogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIj4NCiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSI+DQogICAgICAgICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIj7Dlzwvc3Bhbj4NCiAgICAgICAgICAgICAgICA8L2J1dHRvbj4NCiAgICAgICAgICAgICAgICA8aW1nIHNyYz0iL1NpdGVzLzQ5L2ltYWdlcy9ob21lL2xvZ28tbmF2LnBuZyI+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgIDxhIGhyZWY9InRlbDo4NTgtMjU2LTcxOTgiIGNsYXNzPSJncm91cENhbGwiPg0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPg0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkeW5hbWljSGVhZGluZyBDYWxsT3ZlcmxheSI+DQogICAgICAgICAgICAgICAgICAgICAgICBQbGFubmluZyBhIFRyaXAgaW4gdGhlDQogICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPk5leHQgMTIgTW9udGhzPzwvc3Ryb25nPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz0iY2FsbC1ncmFwIiBzcmM9Ii9TaXRlcy80OS9pbWFnZXMvdjMvQ0ZOLWNhbGxvdmVyLWJnLmpwZyIgYWx0PSIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2F2ZVVQVE8iPkZsaWdodCBQcmljZXMgPGI+PGRlbD5TbGFzaGVkPC9kZWw+PC9iPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVcCB0byA8Yj41MCUgT2ZmPC9iPiBGbGlnaHQgRGVhbHM8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InVucHViLWZhaXIiPk9ubHkgQXZhaWxhYmxlIG9uIHRoZSBQaG9uZTwvZGl2Pg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWZvb3RlciBjYWxsLW92ZXItZm9vdGVyIj4NCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGhvbmVVcyI+DQogICAgICAgICAgICAgICAgICAgICAgICA4NTgtMjU2LTcxOTggDQogICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYWxsQnV0dG9uIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1waG9uZSI+PC9pPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+IENBTEwgTk9XPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgIDwvYT4NCiAgICAgICAgPC9kaXY+ICAgICAgICAgICAgDQogICAgPC9kaXY+DQo8L2Rpdj4NCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCiQoZnVuY3Rpb24gKCkgew0KDQogICAgaWYgKChwYXRoID09ICd5YicpICYmICQod2luZG93KS53aWR0aCgpIDwgNzY3ICYmICgkLmNvb2tpZSgncG9wbW9kYWwnKSA9PSB1bmRlZmluZWQgfHwgJC5jb29raWUoJ3BvcG1vZGFsJykgIT0gJzEnKSkgew0KICAgICAgICAkKCcjY2FsbE92ZXJsYXknKS5tb2RhbCgnc2hvdycpOw0KICAgICAgICB2YXIgZGF0ZSA9IG5ldyBEYXRlKCk7IC8vZGF5cyAqIEhvdXIgKiBtaW51dGUgKiBzZWNvbmQgKiAxMDAwDQogICAgICAgIGRhdGUuc2V0VGltZShkYXRlLmdldFRpbWUoKSArICgxMiAqIDYwICogNjAgKiAxMDAwKSk7DQogICAgICAgICQuY29va2llKCdwb3Btb2RhbCcsICcxJywgew0KICAgICAgICAgICAgZXhwaXJlczogZGF0ZQ0KICAgICAgICB9KTsNCiAgICB9DQp9KTsNCjwvc2NyaXB0PmQCCQ9kFgRmD2QWAmYPZBYCAgEPFgIfAwX8BDxkaXYgY2xhc3M9ImNvbGxhcHNlIG5hdmJhci1jb2xsYXBzZSIgaWQ9ImNmbi1uYXZiYXIiPg0KICA8ZGl2IGNsYXNzPSJtZW51LWdyb3VwIj4NCiAgICA8dWwgY2xhc3M9Im1lbnUtYm90dG9tIj4NCiAgICAgIDxsaSBjbGFzcz0iYWN0aXZlIj48YSBocmVmPSIvIj5GbGlnaHRzPC9hPjwvbGk+DQogICAgICA8bGk+PGEg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Dw8WAh8BBQpEaXNjbGFpbWVyZGQCAw8WBB8DBQpEaXNjbGFpbWVyHgV0aXRsZQUKRGlzY2xhaW1lcmQCHQ8WAh8EaBYCAgEPFgIfBGgWAgIBDw8WAh8BBRpEbyB5b3UgaGF2ZSBhIGNvdXBvbiBjb2RlP2RkAh8PFgIfBGgWAgIBD2QWAgIBDw8WAh8BBQ9BZHZhbmNlZCBTZWFyY2hkZAIhD2QWCgIBDxAPFgIfBGhkDxYGZgIBAgICAwIEAgUWBgUHQW55dGltZQUNRWFybHkgTW9ybmluZwUHTW9ybmluZwUGTWlkZGF5BQ1FYXJseSBFdmVuaW5nBQdFdmVuaW5nFgFmZAIDDxAPFgIfBGhkDxYGZgIBAgICAwIEAgUWBgUHQW55dGltZQUNRWFybHkgTW9ybmluZwUHTW9ybmluZwUGTWlkZGF5BQ1FYXJseSBFdmVuaW5nBQdFdmVuaW5nFgFmZAIFDxAPFgIfBGhkDxYGZgIBAgICAwIEAgUWBgUHQW55dGltZQUNRWFybHkgTW9ybmluZwUHTW9ybmluZwUGTWlkZGF5BQ1FYXJseSBFdmVuaW5nBQdFdmVuaW5nFgFmZAIHDxYCHwRoFgJmDw8WAh8BBQhBaXJsaW5lOmRkAgkPFgIfBGgWBAIBDw8WAh8BBQ1Db25zb2xpZGF0b3JzZGQCAw8QZGQWAGQCIw8WAh8EaBYEAgEPEA8WAh4HQ2hlY2tlZGdkZGRkAgMPFgQfAwUfQ29tcGFyZSBQcmljZXMgd2l0aCBPdGhlciBTaXRlcx4DZm9yBTVjdGwwMF9jdGwwMF9icGhfYzFfUGFnZUNvbnRyb2xJRDU1Nzc5X0NvbXBhcmVDaGVja0JveGQCAQ9kFgJmD2QWAgIBDxYCHwMF2gE8YSBjbGFzcz0iYnRuIGJ0bi1ncm91cGJvb2siIGhyZWY9Ii9mbGlnaHRncm91cHJhdGVzIiB0YXJnZXQ9Il9ibGFuayI+DQogIDxpIGNsYXNzPSJmYSBmYS11c2VycyIgYXJpYS1oaWRkZW49InRydWUiPiA8L2k+IA0KICBHcm91cCBCb29raW5nDQo8L2E+DQoNCjxpbWcgc3JjPSIvc2l0ZXMvNDkvaW1hZ2VzL3YzL3N1cHBsaWVycy1hbGwucG5nIiBjbGFzcz0ic3NsLWxvZ28iPiAgIGQCDQ9kFgJmD2QWAmYPZBYCAgEPFgIfAwWpCTwhLS0gTWFrZXRpbmcgTWVzc2FnZSAtLT4NCjxkaXYgY2xhc3M9Imdyb3VwLW1ha2V0aW5nIj4NCg0KICA8ZGl2IGNsYXNzPSJtYXJrZXRpbmctdGV4dCI+DQogICAgPGRpdiBjbGFzcz0idGV4dC1saW5rIj4NCiAgICAgIDwhLS0gPGEgaHJlZj0iL2p1bHk0dGgtc2FsZSIgdGFyZ2V0PSJfYmxhbmsiPg0KICAgICAgICA8aW1nIHNyYz0iL3NpdGVzLzQ5L2ltYWdlcy9ob21lL21vY2svSnVseTR0aDIwMTktdGV4dC5wbmciPg0KICAgICAgPC9hPiAtLT4NCiAgICA8L2Rpdj4NCiAgPC9kaXY+DQoNCg0KICA8ZGl2IGNsYXNzPSJtYXJrZXRpbmctcGhvbmUiPg0KICAgIDxkaXYgY2xhc3M9InBob25lLWJhbm5lciI+DQogICAgICA8YSBocmVmPSJ0ZWw6KzEgODU4LTI1Ni03MTk4IiBjbGFzcz0icGhvbmVVUyI+DQogICAgICAgICsxIDg1OC0yNTYtNzE5OA0KICAgICAgPC9hPg0KICAgICAgPCEtLSA8YSBocmVmPSJ0ZWw6KzEgODU4LTI1Ni03MTk4IiBjbGFzcz0icGhvbmVJbnQiPg0KICAgICAgICArMSA4NTgtMjU2LTcxOTggPHNwYW4+KEludCdsKTwvc3Bhbj4NCiAgICAgIDwvYT4gLS0+DQogICAgICA8cD5DYWxsIE5vdyBmb3IgVW5wdWJsaXNoZWQgUmF0ZXM8L3A+DQogICAgPC9kaXY+DQogIDwvZGl2Pg0KICANCjwvZGl2Pg0KDQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPiANCiAgLnNlY3Rpb24td3JhcC1pbWFnZXMgew0KICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnL3NpdGVzLzQ5L2ltYWdlcy9ob21lL2JnL0JHLVN1bW1lcjIwMTkuanBnJyk7DQogICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsNCiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodDsNCiAgfQ0KICAubWFya2V0aW5nLXRleHQgLnRleHQtbGluayBpbWcgeyB3aWR0aDogYXV0bzsgaGVpZ2h0OiAyMjVweDsgbWFyZ2luOiA1ZW0gMCAwIDJlbTsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB9DQogIC5tYXJrZXRpbmctdGV4dCB7IG1pbi1oZWlnaHQ6IDM4MHB4OyB9DQoNCiAgQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG1heC13aWR0aDogOTkxcHgpIHsNCiAgICAuc2VjdGlvbi13cmFwLWltYWdlcyB7YmFja2dyb3VuZC1wb3NpdGlvbjogMTAwJSAxMDAlOyB9IA0KICAgIC5tYXJrZXRpbmctdGV4dCAudGV4dC1saW5rIGltZyB7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IGF1dG87IH0NCiAgfQ0KPC9zdHlsZT4gZAIPD2QWBGYPZBYCZg9kFgICAQ8WAh8DBU48c2NyaXB0IHNyYz0iL1NpdGVzLzQ5L1NjcmlwdHMvUmhvbWVkZWFscy5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD5kAgEPZBYCZg9kFgICAQ8WAh8DBbEQPCEtLSBEZXN0aW5hdGlvbnMgRGVhbHMgLS0+DQo8ZGl2IGNsYXNzPSJkZXN0aW5hdGlvbi1kZWFscyI+DQogIDxoMyBjbGFzcz0iaGVhZGluZyI+DQogICAgPGI+Q2hlYXBlc3QgRmxpZ2h0cyBmcm9tIFVuaXRlZCBTdGF0ZXM8L2I+DQogIDwvaDM+DQoNCiAgPGRpdiBpZD0iVG9wRGVzdGluYXRpb24iPjwvZGl2Pg0KIA0KPC9kaXY+IA0KDQo8IS0tIEFpcmxpbmVzIERlYWxzIC0tPg0KPGRpdiBjbGFzcz0iYWlybGluZS1kZWFscyI+DQogIDxoMyBjbGFzcz0iaGVhZGluZyI+DQogICAgPGI+VG9wIEFpcmxpbmVzPC9iPg0KICA8L2gzPg0KICA8ZGl2IGNsYXNzPSJOZXdBaXJsaW5lIj4NCiAgICA8ZGl2IGNsYXNzPSJibG9jay1haXJsaW5lIj4NCiAgICAgIDx1bCBjbGFzcz0ibGlzdC1pbmxpbmUiPg0KICAgICAgICA8bGk+TEdCPC9saT4NCiAgICAgICAgPGxpPjxpbWcgc3JjPSIvU2l0ZXMvNDkvaW1hZ2VzL25ld3N0eWxlcy9yb3VuZHRyaXAtMS5qcGciPjwvbGk+DQogICAgICAgIDxsaT5TRk88L2xpPg0KICAgICAgICA8bGkgY2xhc3M9ImxvZ29fQjYiPkpldEJsdWUgQWlyd2F5czwvbGk+DQogICAgICAgIDxsaT48c3VwPiQ8L3N1cD43NjwvbGk+DQogICAgICA8L3VsPg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9ImJsb2NrLWFpcmxpbmUiPg0KICAgICAgPHVsIGNsYXNzPSJsaXN0LWlubGluZSI+DQogICAgICAgIDxsaT5JQUQ8L2xpPg0KICAgICAgICA8bGk+PGltZyBzcmM9Ii9TaXRlcy80OS9pbWFnZXMvbmV3c3R5bGVzL3JvdW5kdHJpcC0xLmpwZyI+PC9saT4NCiAgICAgICAgPGxpPkJPUzwvbGk+DQogICAgICAgIDxsaSBjbGFzcz0ibG9nb19OSyI+U1BJUklUIEFJUkxJTkVTPC9saT4NCiAgICAgICAgPGxpPjxzdXA+JDwvc3VwPjEwNjwvbGk+DQogICAgICA8L3VsPg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9ImJsb2NrLWFpcmxpbmUiPg0KICAgICAgPHVsIGNsYXNzPSJsaXN0LWlubGluZSI+DQogICAgICAgIDxsaT5KRks8L2xpPg0KICAgICAgICA8bGk+PGltZyBzcmM9Ii9TaXRlcy80OS9pbWFnZXMvbmV3c3R5bGVzL3JvdW5kdHJpcC0xLmpwZyI+PC9saT4NCiAgICAgICAgPGxpPklBRDwvbGk+DQogICAgICAgIDxsaSBjbGFzcz0ibG9nb19CNiI+SmV0Qmx1ZSBBaXJ3YXlzPC9saT4NCiAgICAgICAgPGxpPjxzdXA+JDwvc3VwPjExMjwvbGk+DQogICAgICA8L3VsPg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9ImJsb2NrLWFpcmxpbmUiPg0KICAgICAgPHVsIGNsYXNzPSJsaXN0LWlubGluZSI+DQogICAgICAgIDxsaT5GTEw8L2xpPg0KICAgICAgICA8bGk+PGltZyBzcmM9Ii9TaXRlcy80OS9pbWFnZXMvbmV3c3R5bGVzL3JvdW5kdHJpcC0xLmpwZyI+PC9saT4NCiAgICAgICAgPGxpPk1TWTwvbGk+DQogICAgICAgIDxsaSBjbGFzcz0ibG9nb19OSyI+U1BJUklUIEFJUkxJTkVTPC9saT4NCiAgICAgICAgPGxpPjxzdXA+JDwvc3VwPjEyMDwvbGk+DQogICAgICA8L3VsPg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9ImJsb2NrLWFpcmxpbmUiPg0KICAgICAgPHVsIGNsYXNzPSJsaXN0LWlubGluZSI+DQogICAgICAgIDxsaT5GTEw8L2xpPg0KICAgICAgICA8bGk+PGltZyBzcmM9Ii9TaXRlcy80OS9pbWFnZXMvbmV3c3R5bGVzL3JvdW5kdHJpcC0xLmpwZyI+PC9saT4NCiAgICAgICAgPGxpPkNIUzwvbGk+DQogICAgICAgIDxsaSBjbGFzcz0ibG9nb19CNiI+SmV0Qmx1ZSBBaXJ3YXlzPC9saT4NCiAgICAgICAgPGxpPjxzdXA+JDwvc3VwPjEyMTwvbGk+DQogICAgICA8L3VsPg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9ImJsb2NrLWFpcmxpbmUiPg0KICAgICAgPHVsIGNsYXNzPSJsaXN0LWlubGluZSI+DQogICAgICAgIDxsaT5QSFg8L2xpPg0KICAgICAgICA8bGk+PGltZyBzcmM9Ii9TaXRlcy80OS9pbWFnZXMvbmV3c3R5bGVzL3JvdW5kdHJpcC0xLmpwZyI+PC9saT4NCiAgICAgICAgPGxpPlNBVDwvbGk+DQogICAgICAgIDxsaSBjbGFzcz0ibG9nb19GOSI+RlJPTlRJRVIgQUlSTElORVM8L2xpPg0KICAgICAgICA8bGk+PHN1cD4kPC9zdXA+MTI2PC9saT4NCiAgICAgIDwvdWw+DQogICAgPC9kaXY+DQogIDwvZGl2Pg0KPC9kaXY+ZAIRD2QWAmYPZBYCZg9kFgICAQ8WAh8DBfcHPCEtLSBBZHMgLS0+DQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KICAuaW5zdGFsbF9hcHAgew0KICAgICAgcG9zaXRpb246IHJlbGF0aXZlOw0KICAgICAgbWFyZ2luLXRvcDogNWVtOw0KICB9DQogIA0KICAuaW5zdGFsbF9hcHAgYSB7DQogICAgICB3aWR0aDogMTQwcHg7DQogICAgICBoZWlnaHQ6IDQ0cHg7DQogICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsNCiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsNCiAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHRyYW5zcGFyZW50Ow0KICAgICAgYm9yZGVyLXJhZGl1czogNnB4Ow0KICB9DQogIA0KICAuaW5zdGFsbF9hcHAgYTpob3ZlciB7DQogICAgICBib3JkZXItY29sb3I6IG9yYW5nZTsNCiAgfQ0KICANCiAgLmluc3RhbGxfYXBwIC5idXR0b24taW9zIHsNCiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsNCiAgICAgIHRvcDogMTMwcHg7DQogICAgICBsZWZ0OiAxNHB4Ow0KICB9DQogIA0KICAuaW5zdGFsbF9hcHAgLmJ1dHRvbi1hbmRyb2lkIHsNCiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsNCiAgICAgIHRvcDogMTg1cHg7DQogICAgICBsZWZ0OiAxNHB4Ow0KICB9DQo8L3N0eWxlPg0KPGRpdiBjbGFzcz0iaW5zdGFsbF9hcHAiPg0KICA8aW1nIHNyYz0iL3NpdGVzLzQ5L2ltYWdlcy9ob21lL21vY2svQXBwLXNtYWxsLmpwZyIgd2lkdGg9IjE3MCIgaGVpZ2h0PSI0OTAiIGFsdD0iUGxhbmV0cyIgdXNlbWFwPSIjcGxhbmV0bWFwIj4NCiAgPGEgY2xhc3M9ImJ1dHRvbi1pb3MiIGFsdD0iSU9TIEFwcGxpY2F0aW9uIiBocmVmPSIvL2l0dW5lcy5hcHBsZS5jb20vdGgvYXBwL2NoZWFwZmxpZ2h0bm93L2lkNTg5NTAzMTMxP210PTgiIHRhcmdldD0iX2JsYW5rIj48L2E+DQogIDxhIGNsYXNzPSJidXR0b24tYW5kcm9pZCIgYWx0PSJBbmRyb2lkIEFwcGxpY2F0aW9uIiBocmVmPSIvL3BsYXkuZ29vZ2xlLmNvbS9zdG9yZS9hcHBzL2RldGFpbHM/aWQ9Y29tLnRkcy5jZm52MiIgdGFyZ2V0PSJfYmxhbmsiPjwvYT4NCjwvZGl2PmQCEw9kFgJmD2QWAmYPZBYCAgEPFgIfAwWdLjwhLS0gRXZlbnRzIERlYWxzIC0tPg0KPGRpdiBjbGFzcz0iZXZlbnQtZGVhbHMiPg0KICA8ZGl2IGlkPSJzbGlkZS12aWV3cG9ydCIgY2xhc3M9ImNhcm91c2VsIHNsaWRlIiBkYXRhLXJpZGU9ImNhcm91c2VsIj4NCiAgICA8ZGl2IGNsYXNzPSJjYXJvdXNlbC1pbm5lciIgcm9sZT0ibGlzdGJveCI+DQogICAgICA8ZGl2IGNsYXNzPSJpdGVtIGFjdGl2ZSI+DQogICAgICAgIDxkaXYgY2xhc3M9ImNhcm91c2VsLWNhcHRpb24gZ3JvdXAtdmlld3BvcnQiPg0KICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS0yIGNvbC1tZC0yIj4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJveC1saXN0IHgxIiBzdHlsZT0iYmFja2dyb3VuZC1pbWFnZTogdXJsKCcvU2l0ZXMvNDkvaW1hZ2VzL2hvbWUvdmlld3BvcnQvdnAxLmpwZycpOyI+DQogICAgICAgICAgICAgIDxhIGhyZWY9Ii9GYW1pbHlUcmF2ZWwiPg0KICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXNlYXJjaCI+PC9pPg0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imxpc3QtaW5saW5lIj4NCiAgICAgICAgICAgICAgICAgIDxoNT5GYW1pbHkgVHJhdmVsPC9oNT4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgPC9hPg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgPC9kaXY+DQogICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXNtLTIgY29sLW1kLTIiPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm94LWxpc3QgeDEiIHN0eWxlPSJiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy9TaXRlcy80OS9pbWFnZXMvaG9tZS92aWV3cG9ydC92cDIuanBnJyk7Ij4NCiAgICAgICAgICAgICAgPGEgaHJlZj0iL1NlbmlvclRyYXZlbCI+DQogICAgICAgICAgICAgICAgPGkgY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tc2VhcmNoIj48L2k+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGlzdC1pbmxpbmUiPg0KICAgICAgICAgICAgICAgICAgPGg1PlNlbmlvciBUcmF2ZWw8L2g1Pg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICA8L2E+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tMiBjb2wtbWQtMiI+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJib3gtbGlzdCB4MSIgc3R5bGU9ImJhY2tncm91bmQtaW1hZ2U6IHVybCgnL1NpdGVzLzQ5L2ltYWdlcy9ob21lL3ZpZXdwb3J0L3ZwMy5qcGcnKTsiPg0KICAgICAgICAgICAgICA8YSBocmVmPSIvTGFzdE1pbnV0ZVRyYXZlbCI+DQogICAgICAgICAgICAgICAgPGkgY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tc2VhcmNoIj48L2k+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGlzdC1pbmxpbmUiPg0KICAgICAgICAgICAgICAgICAgPGg1Pkxhc3QgTWludXRlIFRyYXZlbDwvaDU+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgIDwvYT4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS0yIGNvbC1tZC0yIj4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJveC1saXN0IHgxIiBzdHlsZT0iYmFja2dyb3VuZC1pbWFnZTogdXJsKCcvU2l0ZXMvNDkvaW1hZ2VzL2hvbWUvdmlld3BvcnQvdnA0LmpwZycpOyI+DQogICAgICAgICAgICAgIDxhIGhyZWY9Ii9Sb21hbnRpY1RyYXZlbCI+DQogICAgICAgICAgICAgICAgPGkgY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tc2VhcmNoIj48L2k+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGlzdC1pbmxpbmUiPg0KICAgICAgICAgICAgICAgICAgPGg1PlJvbWFudGljIFRyYXZlbDwvaDU+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgIDwvYT4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS0yIGNvbC1tZC0yIj4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJveC1saXN0IHgxIiBzdHlsZT0iYmFja2dyb3VuZC1pbWFnZTogdXJsKCcvU2l0ZXMvNDkvaW1hZ2VzL2hvbWUvdmlld3BvcnQvdnA1LmpwZycpOyI+DQogICAgICAgICAgICAgIDxhIGhyZWY9Ii9Ib2xpZGF5VHJhdmVsIj4NCiAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1zZWFyY2giPjwvaT4NCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaXN0LWlubGluZSI+DQogICAgICAgICAgICAgICAgICA8aDU+SG9saWRheSBUcmF2ZWw8L2g1Pg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICA8L2E+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tMiBjb2wtbWQtMiI+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJib3gtbGlzdCB4MSIgc3R5bGU9ImJhY2tncm91bmQtaW1hZ2U6IHVybCgnL1NpdGVzLzQ5L2ltYWdlcy9ob21lL3ZpZXdwb3J0L3ZwNi5qcGcnKTsiPg0KICAgICAgICAgICAgICA8YSBocmVmPSIvTWlsaXRhcnlUcmF2ZWwiPg0KICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXNlYXJjaCI+PC9pPg0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imxpc3QtaW5saW5lIj4NCiAgICAgICAgICAgICAgICAgIDxoNT5NaWxpdGFyeSBUcmF2ZWw8L2g1Pg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICA8L2E+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgPC9kaXY+DQogICAgICA8L2Rpdj4NCiAgICAgIDxkaXYgY2xhc3M9Iml0ZW0iPg0KICAgICAgICA8ZGl2IGNsYXNzPSJjYXJvdXNlbC1jYXB0aW9uIGdyb3VwLXZpZXdwb3J0Ij4NCiAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tMiBjb2wtbWQtMiI+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJib3gtbGlzdCB4MSIgc3R5bGU9ImJhY2tncm91bmQtaW1hZ2U6IHVybCgnL1NpdGVzLzQ5L2ltYWdlcy9ob21lL3ZpZXdwb3J0L3ZwNy5qcGcnKTsiPg0KICAgICAgICAgICAgICA8YSBocmVmPSIvU3R1ZGVudFRyYXZlbCI+DQogICAgICAgICAgICAgICAgPGkgY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tc2VhcmNoIj48L2k+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGlzdC1pbmxpbmUiPg0KICAgICAgICAgICAgICAgICAgPGg1PlN0dWRlbnQgVHJhdmVsPC9oNT4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgPC9hPg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgPC9kaXY+DQogICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXNtLTIgY29sLW1kLTIiPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm94LWxpc3QgeDEiIHN0eWxlPSJiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy9TaXRlcy80OS9pbWFnZXMvaG9tZS92aWV3cG9ydC92cDguanBnJyk7Ij4NCiAgICAgICAgICAgICAgPGEgaHJlZj0iL1dlZWtlbmRHZXRhd2F5cyI+DQogICAgICAgICAgICAgICAgPGkgY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tc2VhcmNoIj48L2k+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGlzdC1pbmxpbmUiPg0KICAgICAgICAgICAgICAgICAgPGg1PldlZWtlbmQgVHJhdmVsPC9oNT4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgPC9hPg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgPC9kaXY+DQogICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXNtLTIgY29sLW1kLTIiPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm94LWxpc3QgeDEiIHN0eWxlPSJiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy9TaXRlcy80OS9pbWFnZXMvaG9tZS92aWV3cG9ydC92cDkuanBnJyk7Ij4NCiAgICAgICAgICAgICAgPGEgaHJlZj0iL1NlYXNvbmFsVHJhdmVsIj4NCiAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1zZWFyY2giPjwvaT4NCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaXN0LWlubGluZSI+DQogICAgICAgICAgICAgICAgICA8aDU+U2Vhc29uYWwgVHJhdmVsPC9oNT4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgPC9hPg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgPC9kaXY+DQogICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXNtLTIgY29sLW1kLTIiPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm94LWxpc3QgeDEiIHN0eWxlPSJiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy9TaXRlcy80OS9pbWFnZXMvaG9tZS92aWV3cG9ydC92cDEwLmpwZycpOyI+DQogICAgICAgICAgICAgIDxhIGhyZWY9Ii9Hcm91cFRyYXZlbCI+DQogICAgICAgICAgICAgICAgPGkgY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tc2VhcmNoIj48L2k+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGlzdC1pbmxpbmUiPg0KICAgICAgICAgICAgICAgICAgPGg1Pkdyb3VwIFRyYXZlbDwvaDU+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgIDwvYT4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS0yIGNvbC1tZC0yIj4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJveC1saXN0IHgxIiBzdHlsZT0iYmFja2dyb3VuZC1pbWFnZTogdXJsKCcvU2l0ZXMvNDkvaW1hZ2VzL2hvbWUvdmlld3BvcnQvdnAxMS5qcGcnKTsiPg0KICAgICAgICAgICAgICA8YSBocmVmPSIvRmlyc3RDbGFzc1RyYXZlbCI+DQogICAgICAgICAgICAgICAgPGkgY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tc2VhcmNoIj48L2k+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGlzdC1pbmxpbmUiPg0KICAgICAgICAgICAgICAgICAgPGg1PkZpcnN0IENsYXNzIFRyYXZlbDwvaDU+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgIDwvYT4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS0yIGNvbC1tZC0yIj4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJveC1saXN0IHgxIiBzdHlsZT0iYmFja2dyb3VuZC1pbWFnZTogdXJsKCcvU2l0ZXMvNDkvaW1hZ2VzL2hvbWUvdmlld3BvcnQvdnAxMi5qcGcnKTsiPg0KICAgICAgICAgICAgICA8YSBocmVmPSIvQnVzaW5lc3NDbGFzc1RyYXZlbCI+DQogICAgICAgICAgICAgICAgPGkgY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tc2VhcmNoIj48L2k+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGlzdC1pbmxpbmUiPg0KICAgICAgICAgICAgICAgICAgPGg1PkJ1c2luZXNzIENsYXNzPC9oNT4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgPC9hPg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgPC9kaXY+DQogICAgICAgIDwvZGl2Pg0KICAgICAgPC9kaXY+DQogICAgPC9kaXY+DQogICAgPCEtLSBDb250cm9scyAtLT4NCiAgICA8IS0tICAgICA8YSBjbGFzcz0ibGVmdCBjYXJvdXNlbC1jb250cm9sIiBocmVmPSIjc2xpZGUtdmlld3BvcnQiIHJvbGU9ImJ1dHRvbiIgZGF0YS1zbGlkZT0icHJldiI+DQogICAgICA8aSBjbGFzcz0iZmEgZmEtYW5nbGUtbGVmdCIgYXJpYS1oaWRkZW49InRydWUiPjwvaT4NCiAgICAgIDwvYT4NCiAgICAgIDxhIGNsYXNzPSJyaWdodCBjYXJvdXNlbC1jb250cm9sIiBocmVmPSIjc2xpZGUtdmlld3BvcnQiIHJvbGU9ImJ1dHRvbiIgZGF0YS1zbGlkZT0ibmV4dCI+DQogICAgICA8aSBjbGFzcz0iZmEgZmEtYW5nbGUtcmlnaHQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+DQogICAgICA8L2E+DQogICAgICAtLT4NCiAgPC9kaXY+DQo8L2Rpdj5kAhUPZBYCZg9kFgJmD2QWAgIBDxYCHwMFlB48c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KICAgIC5pbnN0YWxsX2FwcF9tYiB7DQogICAgICAgIHotaW5kZXg6IDEwMDc7DQogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsNCiAgICAgICAgZGlzcGxheTogZmxleDsNCiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOw0KICAgICAgICB3aWR0aDogMTAwJTsNCiAgICAgICAgbGVmdDogMDsNCiAgICAgICAgdG9wOiAwOw0KICAgICAgICBwYWRkaW5nOiAxMHB4IDEwcHggNXB4Ow0KICAgICAgICBiYWNrZ3JvdW5kOiAjZDdmMGZmOw0KICAgICAgICBib3gtc2hhZG93OiAwIDNweCAzcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMTUpOw0KICAgICAgICAtbW96LWJveC1zaGFkb3c6IDAgM3B4IDNweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4xNSk7DQogICAgICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAzcHggM3B4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjE1KTsNCiAgICB9DQogICAuaW5zdGFsbF9hcHBfbWIuYWZmaXggew0KICAgICAgICB0b3A6IDA7DQogICAgICAgIHdpZHRoOiAxMDAlOw0KICAgICAgICB6LWluZGV4OiAxMDE7DQogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsNCiAgICB9DQogICAgLmluc3RhbGxfYXBwX21iID4gYnV0dG9uIHsNCiAgICAgICAgcGFkZGluZy1yaWdodDogMTBweDsNCiAgICAgICAgY3Vyc29yOiBwb2ludGVyOw0KICAgIH0NCiAgICAuaW5zdGFsbF9hcHBfbWIgLmFwcF9sb2dvIHsgDQogICAgICAgIGNvbnRlbnQ6ICcnOw0KICAgICAgICBiYWNrZ3JvdW5kOiB1cmwoL3NpdGVzLzQ5L2ltYWdlcy9ob21lL2FwcF9sb2dvLnBuZykgIG5vLXJlcGVhdDsNCiAgICAgICAgYmFja2dyb3VuZC1zaXplOiAxMDAlIGF1dG87DQogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsNCiAgICAgICAgaGVpZ2h0OiA3MHB4Ow0KICAgICAgICB3aWR0aDogNzBweDsNCiAgICB9DQogICAgLmluc3RhbGxfYXBwX21iIC5hcHBfZGV0YWlsIHsNCiAgICAgICAgd2lkdGg6IDc1JTsNCiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDsNCiAgICAgICAgcGFkZGluZy1sZWZ0OiAxNXB4Ow0KICAgIH0NCiAgICAuaW5zdGFsbF9hcHBfbWIgLmFwcF9kZXRhaWwgdWwgew0KICAgICAgICBjb2xvcjogYmxhY2s7DQogICAgICAgIGZvbnQtc2l6ZTogMTRweDsNCiAgICB9DQogICAgLmluc3RhbGxfYXBwX21iIC5hcHBfZGV0YWlsIHVsIGxpIHsgDQogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsNCiAgICB9DQogICAgLmluc3RhbGxfYXBwX21iIC5hcHBfZGV0YWlsIHVsIGxpOmxhc3QtY2hpbGQgeyANCiAgICAgICAgZGlzcGxheTogYmxvY2s7DQogICAgfQ0KICAgIC5pbnN0YWxsX2FwcF9tYiAuYXBwX2RldGFpbCB1bCBsaTpmaXJzdC1jaGlsZCB7IA0KICAgICAgICBmb250LXdlaWdodDogYm9sZDsNCiAgICAgICAgZGlzcGxheTogYmxvY2s7DQogICAgfQ0KICAgIC5pbnN0YWxsX2FwcF9tYiAuYXBwX2RldGFpbCAuc3RhciB7IA0KICAgICAgICBjb2xvcjogI2ZiZDEwOTsNCiAgICB9DQogICAgLmluc3RhbGxfYXBwX21iIC5hcHBfZGV0YWlsIC5idG4gew0KICAgICAgICBiYWNrZ3JvdW5kOiAjRkZGOw0KICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjOTRiYmU0Ow0KICAgICAgICBjb2xvcjogIzI0NzFjMzsNCiAgICAgICAgbWFyZ2luOiA1cHggMDsNCiAgICAgICAgY3Vyc29yOiBwb2ludGVyOw0KICAgICAgICBmb250LXNpemU6IDE0cHg7DQogICAgICAgIHBhZGRpbmc6IDVweCAxMHB4Ow0KICAgICAgICBib3gtc2hhZG93OiAwIDFweCA1cHggI2YxZjFmMTsNCiAgICB9DQogICAgDQogICAgQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7DQogICAgICAgIC5pbnN0YWxsX2FwcF9tYiB7DQogICAgICAgICAgICBkaXNwbGF5OiBub25lOw0KICAgICAgICB9DQogICAgfQ0KPC9zdHlsZT4NCjxkaXYgY2xhc3M9Imluc3RhbGxfYXBwX21iIGFmZml4LXRvcCIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiIGRhdGEtc3B5PSJhZmZpeCIgZGF0YS1vZmZzZXQtdG9wPSI1MCIgZGF0YS1vZmZzZXQtYm90dG9tPSI1MCI+DQogICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJjbG9zZSIgZGF0YS1kaXNtaXNzPSJhbGVydCIgYXJpYS1sYWJlbD0iQ2xvc2UiPg0KICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvc3Bhbj4NCiAgICA8L2J1dHRvbj4NCiAgICA8ZGl2IGNsYXNzPSJhcHBfbG9nbyI+PC9kaXY+DQogICAgPGRpdiBjbGFzcz0iYXBwX2RldGFpbCI+DQogICAgICAgIDx1bD4NCiAgICAgICAgICAgIDxsaT5GcmVlIENoZWFwRmxpZ2h0Tm93IEFwcDwvbGk+DQogICAgICAgICAgICANCiAgICAgICAgICAgIDxsaSBjbGFzcz0ic3RhciI+DQogICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXN0YXIiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+DQogICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXN0YXIiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+DQogICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXN0YXIiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+DQogICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXN0YXIiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+DQogICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXN0YXItaGFsZi1vIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPg0KICAgICAgICAgICAgPC9saT4NCiAgICAgICAgICAgIDxsaT48L2xpPg0KICAgICAgICAgICAgPGxpPg0KICAgICAgICAgICAgICAgIDwhLS08YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biIgaHJlZj0iLyIgPk9wZW4gaW4gYXBwPC9idXR0b24+LS0+DQogICAgICAgICAgICAgICAgPGEgaWQ9ImRvd25sb2FkIiBjbGFzcz0iYnRuIiB0YXJnZXQ9Il9ibGFuayI+IE9wZW4gaW4gYXBwPC9hPg0KICAgICAgICAgICAgPC9saT4NCiAgICAgICAgPC91bD4NCiAgICA8L2Rpdj4NCjwvZGl2Pg0KDQo8c2NyaXB0Pg0KDQogICAgdmFyIGRvd25sb2FkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Rvd25sb2FkJyk7DQoNCiAgICBpZiAoISFuYXZpZ2F0b3IucGxhdGZvcm0gJiYgL2lQYWR8aVBob25lfGlQb2QvLnRlc3QobmF2aWdhdG9yLnBsYXRmb3JtKSkgew0KDQogICAgICAgIGRvd25sb2FkLmhyZWYgPSAiLy9pdHVuZXMuYXBwbGUuY29tL3RoL2FwcC9jaGVhcGZsaWdodG5vdy9pZDU4OTUwMzEzMT9tdD04Ig0KICAgIH0NCiAgICBlbHNlIHsNCiAgICAgICAgZG93bmxvYWQuaHJlZiA9ICIvL3BsYXkuZ29vZ2xlLmNvbS9zdG9yZS9hcHBzL2RldGFpbHM/aWQ9Y29tLnRkcy5jZm52MiI7DQogICAgfQ0KDQoNCiAgICBmdW5jdGlvbiBTZXRDb29raWUoKSB7DQogICAgICAgIHZhciBkYXRlID0gbmV3IERhdGUoKTsNCiAgICAgICAgZGF0ZS5zZXRUaW1lKGRhdGUuZ2V0VGltZSgpICsgKDMgKiAyNCAqIDYwICogNjAgKiAxMDAwKSk7DQogICAgICAgICQuY29va2llKCdzaG93QXBwJywgJzEnLCB7IGV4cGlyZXM6IGRhdGUgfSk7DQogICAgfQ0KDQogICAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24gKCkgew0KICAgICAgICBpZiAoJCh3aW5kb3cpLndpZHRoKCkgPD0gNzY3KSB7DQogICAgICAgICAgICBpZiAoJC5jb29raWUoJ3Nob3dBcHAnKSAhPSB1bmRlZmluZWQgJiYgJC5jb29raWUoJ3Nob3dBcHAnKSA9PSAnMScpIHsNCiAgICAgICAgICAgICAgICAkKCcuaW5zdGFsbF9hcHBfbWInKS5oaWRlKCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICAkKCcuaW5zdGFsbF9hcHBfbWInKS5zaG93KCk7DQogICAgICAgICAgICAgICAgU2V0Q29va2llKCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9KTsNCjwvc2NyaXB0PmQCFw9kFgJmD2QWAmYPZBYCAgEPFgIfAwX0CjwhLS0NClN0YXJ0IG9mIERvdWJsZUNsaWNrIEZsb29kbGlnaHQgVGFnOiBQbGVhc2UgZG8gbm90IHJlbW92ZQ0KQWN0aXZpdHkgbmFtZSBvZiB0aGlzIHRhZzogQ0ZOIEZyb250DQpVUkwgb2YgdGhlIHdlYnBhZ2Ugd2hlcmUgdGhlIHRhZyBpcyBleHBlY3RlZCB0byBiZSBwbGFjZWQ6IGh0dHA6Ly93d3cudHJhdmVsZ3VpZGVzZnJlZS5jb20NClRoaXMgdGFnIG11c3QgYmUgcGxhY2VkIGJldHdlZW4gdGhlIDxib2R5PiBhbmQgPC9ib2R5PiB0YWdzLCBhcyBjbG9zZSBhcyBwb3NzaWJsZSB0byB0aGUgb3BlbmluZyB0YWcuDQpDcmVhdGlvbiBEYXRlOiAxMi8xNy8yMDEzDQotLT4NCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCiAgICB2YXIgYXhlbCA9IE1hdGgucmFuZG9tKCkgKyAiIjsNCiAgICB2YXIgYSA9IGF4ZWwgKiAxMDAwMDAwMDAwMDAwMDsNCiAgICBkb2N1bWVudC53cml0ZSgnPGlmcmFtZSBzcmM9Ii8vNDMxNzY0Mi5mbHMuZG91YmxlY2xpY2submV0L2FjdGl2aXR5aTtzcmM9NDMxNzY0Mjt0eXBlPWludm1lZGlhO2NhdD01bGhmbnl0bDtvcmQ9JyArIGEgKyAnPyIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZnJhbWVib3JkZXI9IjAiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPjwvaWZyYW1lPicpOw0KPC9zY3JpcHQ+DQo8IS0tc2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQogICAgICAgIChmdW5jdGlvbihwLHUscyxoKXsNCiAgICAgICAgICAgIHAuX3BjcT1wLl9wY3F8fFtdOw0KICAgICAgICAgICAgcC5fcGNxLnB1c2goWydfY3VycmVudFRpbWUnLERhdGUubm93KCldKTsNCiAgICAgICAgICAgIHM9dS5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsNCiAgICAgICAgICAgIHMudHlwZT0ndGV4dC9qYXZhc2NyaXB0JzsNCiAgICAgICAgICAgIHMuYXN5bmM9dHJ1ZTsNCiAgICAgICAgICAgIHMuc3JjPSdodHRwczovL2Nkbi5wdXNoY3Jldy5jb20vanMvMmM2OTY4Y2RiNmE4YTZhYWExODNjMzc3MGIxNWVkNWIuanMnOw0KICAgICAgICAgICAgaD11LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKVswXTsNCiAgICAgICAgICAgIGgucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocyxoKTsNCiAgICAgICAgfSkod2luZG93LGRvY3VtZW50KTsNCjwvc2NyaXB0LS0+DQo8bm9zY3JpcHQ+DQo8aWZyYW1lIHNyYz0iLy80MzE3NjQyLmZscy5kb3VibGVjbGljay5uZXQvYWN0aXZpdHlpO3NyYz00MzE3NjQyO3R5cGU9aW52bWVkaWE7Y2F0PTVsaGZueXRsO29yZD0xPyIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZnJhbWVib3JkZXI9IjAiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPjwvaWZyYW1lPg0KPC9ub3NjcmlwdD4NCg0KPCEtLSBFbmQgb2YgRG91YmxlQ2xpY2sgRmxvb2RsaWdodCBUYWc6IFBsZWFzZSBkbyBub3QgcmVtb3ZlIC0tPg0KDQpkAh0PZBYCZg9kFgJmD2QWAgIBDxYCHwMF3gI8c2NyaXB0Pg0KDQovLyBTdXBwb3J0IE11bHRpLWNpdHkgdGFiDQoNCiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uICgpIHsNCiANCiAgICAkKCAiaW5wdXRbaWQqPSdUeXBlXzInXSIgKS5jbGljayhmdW5jdGlvbiAoKSB7DQogICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9ob21lX211bHRpY2l0eSc7DQogICAgICAgIHJldHVybiBmYWxzZTsNCiAgICB9KTsNCg0KICAgICQoICJpbnB1dFtpZCo9J1R5cGVfMiddIiApLmFkZENsYXNzKCdoaWRkZW4teHMnKTsNCiAgICAkKCAiaW5wdXRbaWQqPSdUeXBlXzInXSIgKS5uZXh0KCkuYWRkQ2xhc3MoJ2hpZGRlbi14cycpOw0KDQp9KTsNCg0KPC9zY3JpcHQ+IGQCHw9kFgJmD2QWAmYPZBYCAgEPFgIfAwXgHTxkaXYgY2xhc3M9ImxlZnQiPg0KICAgIDxkaXYgY2xhc3M9InRpdGxlIj5DaGVhcGZsaWdodG5vdyBIb3QgTGluazwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9ImJsb2NrIj4NCiAgICAgICAgPGRpdj5Gb3IgYXNzaXN0YW5jZSBvciB0bw0KICAgICAgICAgICAgPGJyPiBib29rIGJ5IHBob25lOjwvZGl2Pg0KICAgICAgICA8ZGl2PjxhIGhyZWY9InRlbDorMSA4NTgtMjU2LTcxOTgiPisxIDg1OC0yNTYtNzE5ODwvYT48L2Rpdj4NCiAgICAgICAgPGRpdj5PcGVuIDI0IEhvdXJzIEV2ZXJ5IERheTwvZGl2Pg0KICAgIDwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJyaWdodCI+DQogICAgPGRpdiBjbGFzcz0iYmxvY2siPg0KICAgICAgICA8dWw+DQogICAgICAgICAgICA8bGkgY2xhc3M9InRpdGxlIj5UcmF2ZWxlciBIZWxwIFRvb2xzPC9saT4NCiAgICAgICAgICAgIDxsaT48YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iL0NvbnRhY3RVcyI+Q29udGFjdCBVczwvYT48L2xpPg0KICAgICAgICAgICAgPGxpPjxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSIvcmVzZXJ2YXRpb25zdGF0dXMiPk15IFJlc2VydmF0aW9uPC9hPjwvbGk+DQogICAgICAgICAgICA8bGk+PGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Ii9mYXEiPkZBUTwvYT48L2xpPg0KICAgICAgICAgICAgPGxpPjxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSIvL3d3dy50cmF2ZWxlcmhlbHBkZXNrLmNvbS9DcmVkaXRDYXJkQXV0aG9yaXphdGlvbkZvcm0ucGRmIj5DcmVkaXQgQ2FyZCBBdXRob3JpemF0aW9uIEZvcm08L2E+PC9saT4NCiAgICAgICAgICAgIDxsaT48YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iL1NpdGVtYXBzIj5TaXRlIE1hcDwvYT48L2xpPg0KICAgICAgICA8L3VsPg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9ImJsb2NrIj4NCiAgICAgICAgPHVsPg0KICAgICAgICAgICAgPGxpIGNsYXNzPSJ0aXRsZSI+Qm9vazwvbGk+DQogICAgICAgICAgICA8bGk+PGEgaHJlZj0iLyI+Q2hlYXAgRmxpZ2h0czwvYT48L2xpPg0KICAgICAgICAgICAgPGxpPjxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSIvL3d3dy5ob3RlbHdpei5jb20vP21pYz0ybTh1MTdqIj5DaGVhcCBIb3RlbHM8L2E+PC9saT4NCiAgICAgICAgICAgIDxsaT48YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iL2NhcnMiPkNoZWFwIENhciBSZW50YWxzPC9hPjwvbGk+DQogICAgICAgICAgICA8bGk+PGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Ii8vcGFja2FnZXMuY2hlYXBmbGlnaHRub3cuY29tL3ZwL2hvbWUvP3JlZmlkPTUzMTYiPkNoZWFwIFZhY2F0aW9uczwvYT48L2xpPg0KICAgICAgICAgICAgPGxpPjxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSIvZmxpZ2h0Z3JvdXByYXRlcyI+R3JvdXAgVHJhdmVsPC9hPjwvbGk+DQogICAgICAgICAgICANCiAgICAgICAgPC91bD4NCiAgICA8L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJibG9jayI+DQogICAgICAgIDx1bD4NCiAgICAgICAgICAgIDxsaSBjbGFzcz0idGl0bGUiPlRyYXZlbCBEZWFsczwvbGk+DQogICAgICAgICAgICA8bGk+PGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Ii9haXJmYXJlcy1zYWxlIj5BaXJmYXJlcyBTYWxlPC9hPjwvbGk+DQogICAgICAgICAgICA8bGk+PGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Ii9CdXNpbmVzc0NsYXNzVHJhdmVsIj5CdXNpbmVzcyBDbGFzcyBUcmF2ZWw8L2E+PC9saT4NCiAgICAgICAgICAgIDxsaT48YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iL2NoZWFwLXRpY2tldHMiPkNoZWFwIFRpY2tldHM8L2E+PC9saT4NCiAgICAgICAgICAgIDxsaT48YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iL2RvbWVzdGljLWZsaWdodHMiPkRvbWVzdGljIEZsaWdodHM8L2E+PC9saT4NCiAgICAgICAgICAgIDxsaT48YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iL0ZpcnN0Q2xhc3NUcmF2ZWwiPkZpcnN0IENsYXNzIFRyYXZlbDwvYT48L2xpPg0KICAgICAgICAgICAgPGxpPjxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSIvaW50ZXJuYXRpb25hbC1mbGlnaHRzIj5JbnRlcm5hdGlvbmFsIEZsaWdodDwvYT48L2xpPg0KICAgICAgICA8L3VsPg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9ImJsb2NrIGJsb2NrLWdyb3VwIj4NCiAgICAgICAgPHVsPg0KICAgICAgICAgICAgPGxpIGNsYXNzPSJ0aXRsZSI+VHJhdmVsIFRvb2xzPC9saT4NCiAgICAgICAgICAgIDxsaT48YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iL0FpcmxpbmVzQ29udGFjdCI+QWlybGluZSBDb250YWN0PC9hPjwvbGk+DQogICAgICAgICAgICA8bGk+PGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Ii9BaXJwb3J0Q29kZSI+QWlycG9ydCBDaXR5IENvZGVzPC9hPjwvbGk+DQogICAgICAgIDwvdWw+DQogICAgICAgIDx1bD4NCiAgICAgICAgICAgIDxsaSBjbGFzcz0idGl0bGUiPkxlZ2FsPC9saT4NCiAgICAgICAgICAgIDxsaT48YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iL1Rlcm1zT2ZVc2UiPlRlcm1zIG9mIFVzZTwvYT48L2xpPg0KICAgICAgICAgICAgPGxpPjxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSIvUHJpdmFjeVBvbGljeSI+UHJpdmFjeSBQb2xpY3k8L2E+PC9saT4NCiAgICAgICAgICAgIDxsaT48YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iL0Nvb2tpZVBvbGljeSI+Q29va2llIFBvbGljeTwvYT48L2xpPg0KICAgICAgICA8L3VsPg0KICAgICAgICA8ZGl2IGNsYXNzPSJkb3dubG9hZC1hcHAgdmlzaWJsZS1sZyI+DQogICAgICAgICAgICA8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iLy9wbGF5Lmdvb2dsZS5jb20vc3RvcmUvYXBwcy9kZXRhaWxzP2lkPWNvbS50ZHMuY2ZudjIiPg0KICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1hbmRyb2lkIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPg0KICAgICAgICAgICAgICAgIDxzcGFuPkRvd25sb2Fkb24gdGhlIDxzdHJvbmc+R29vZ2xlIHBsYXk8L3N0cm9uZz48L3NwYW4+DQogICAgICAgICAgICA8L2E+DQogICAgICAgICAgICA8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iLy9pdHVuZXMuYXBwbGUuY29tL2NuL2FwcC9jaGVhcGZsaWdodG5vdy9pZDU4OTUwMzEzMT9sPWVuJm10PTgiPg0KICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1hcHBsZSIgYXJpYS1oaWRkZW49InRydWUiPjwvaT4NCiAgICAgICAgICAgICAgICA8c3Bhbj5Eb3dubG9hZCBvbiB0aGUgPHN0cm9uZz5BcHAgU3RvcmU8L3N0cm9uZz48L3NwYW4+DQogICAgICAgICAgICA8L2E+DQogICAgICAgIDwvZGl2Pg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9ImJsb2NrIj4NCiAgICAgICAgPHVsPg0KICAgICAgICAgICAgPGxpPjxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSIvL3d3dy5mYWNlYm9vay5jb20vQ2hlYXBGbGlnaHROb3ciPjxpIGNsYXNzPSJmYSBmYS1mYWNlYm9vayI+PC9pPjwvYT48L2xpPg0KICAgICAgICAgICAgPGxpPjxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSIvL3R3aXR0ZXIuY29tL0NGTl9UcmF2ZWwiPjxpIGNsYXNzPSJmYSBmYS10d2l0dGVyIj48L2k+PC9hPjwvbGk+DQogICAgICAgICAgICA8IS0tIDxsaT48YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iLy9wbHVzLmdvb2dsZS5jb20vMTEzMDg1NDEyOTIwOTM0MTg0ODkzL3Bvc3RzIj48aSBjbGFzcz0iZmEgZmEtZ29vZ2xlLXBsdXMiPjwvaT48L2E+PC9saT4NCiAgICAgICAgICAgIDxsaT48YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iLy9ibG9nLmNoZWFwZmxpZ2h0bm93LmNvbSI+PGkgY2xhc3M9ImZhIGZhLXJzcyI+PC9pPjwvYT48L2xpPg0KICAgICAgICAgICAgLS0+DQogICAgICAgIDwvdWw+DQogICAgPC9kaXY+DQo8L2Rpdj5kAiEPZBYCZg9kFgJmD2QWAgIBDxYCHwMF6wg8ZGl2IGNsYXNzPSJ0ZXh0LWdyb3VwLTIiPg0KICAgIDxwPiogVGhlIGNvdXBvbiBvZmZlciBpcyBvbiBvdXIgYWdlbmN5IHNlcnZpY2UgZmVlcyBvbmx5LiBUaGlzIGRpc2NvdW50IG1heSB2YXJ5IGJhc2VkIG9uIHRoZSBhZ2VuY3kgc2VydmljZSBmZWVzIGNoYXJnZWQgZm9yIGEgcGFydGljdWxhciB0aWNrZXQsIGFuZCB0aGUgdmFsdWUgb2YgZGlzY291bnQgd2lsbCBiZSB1cCB0byB0aGUgYW1vdW50IG9mIHRoZSBhZ2VuY3kgc2VydmljZSBmZWVzIGNoYXJnZWQgZm9yIGEgdHJhbnNhY3Rpb24gdW5sZXNzIG90aGVyd2lzZSBub3RlZC4gWW91IG11c3QgdXNlIHRoZSBjb3Vwb24gY29kZSBhdCBjaGVja291dCB0byByZWRlZW0gdGhpcyBvZmZlci4gVGhpcyBvZmZlciBpcyB0aW1lIHNlbnNpdGl2ZSBhbmQgbWF5IGJlIHJldmlzZWQgb3IgZGlzY29udGludWVkIHdpdGhvdXQgbm90aWNlLiBQcmljZXMgYXJlIHF1b3RlZCBpbiBVUyBEb2xsYXJzLiBGYXJlcyBxdW90ZWQgYXJlIHZhbGlkIGZvciByb3VuZCB0cmlwIGFpcmZhcmUsIGluY2x1ZGluZyB0YXhlcyBhbmQgZmVlcy4gUHJpY2VzIGFkdmVydGlzZWQgYXJlIHZhbGlkIGF0IHRoZSB0aW1lIG9mIGJlaW5nIHB1Ymxpc2hlZCBhbmQgY2hhbmdlIGZyZXF1ZW50bHkgd2l0aG91dCBub3RpY2UuPC9wPg0KICAgIDxwPkNoZWFwZmxpZ2h0bm93IGd1YXJkcyB5b3VyIHByaXZhY3kgYW5kIHNlY3VyaXR5LiBXZSdyZSBjZXJ0aWZpZWQgYnkgR2VvVHJ1c3QuICZjb3B5OyA8c3BhbiBpZD0ieWVhci1mb290ZXIiPjwvc3Bhbj48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+KGZ1bmN0aW9uKCkgeyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgieWVhci1mb290ZXIiKS5pbm5lckhUTUwgPSBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCk7IH0pKCk7PC9zY3JpcHQ+IENoZWFwZmxpZ2h0bm93LmNvbSBBbGwgcmlnaHRzIHJlc2VydmVkLiBDU1QjOiAyMTAzNDM1LTcwLiBSZWdpc3RyYXRpb24gYXMgYSBzZWxsZXIgb2YgdHJhdmVsIGluIENhbGlmb3JuaWEgZG9lcyBub3QgY29uc3RpdHV0ZSB0aGUgU3RhdGUncyBhcHByb3ZhbC48L3A+DQogICAgPGltZyBzcmM9Ii9TaXRlcy80OS9pbWFnZXMvdjIvdHJ1c3QuZ2lmIiBhbHQ9IiI+DQo8L2Rpdj5kAiUPZBYCZg9kFgJmD2QWAgIBDxYCHwMFnho8IS0tIEJFR0lOIEFELk5FVCBQSE9ORSBUUkFDSyAtLT4NCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii8vcG5hcGkwLmludm9jYS5uZXQvMC9wbmFwaV9pbnRlZ3JhdGlvbi5qcyI+PC9zY3JpcHQ+DQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvL2Nkbi5pbnZvY2Euc29sdXRpb25zL2pzL3NvbHV0aW9ucy0xLjIubWluLmpzIj48L3NjcmlwdD4NCg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KDQogICAgaWYgKHBhdGggPT0gJ2FkJykgew0KDQogICAgICAgIHZhciBkb2l0ID0gZmFsc2U7DQogICAgICAgIGlmICgvWz8mXWFuaWQ9Ly50ZXN0KGxvY2F0aW9uLnNlYXJjaCkpIHsNCiAgICAgICAgICAgIGRvaXQgPSB0cnVlOw0KICAgICAgICAgICAgdmFyIGQgPSBuZXcgRGF0ZSgpOw0KICAgICAgICAgICAgZC5zZXRUaW1lKGQuZ2V0VGltZSgpICsgKDEgKiA2MCAqIDYwICogMTAwMCkpOw0KICAgICAgICAgICAgdmFyIGV4cGlyZXMgPSAiZXhwaXJlcz0iICsgZC50b1VUQ1N0cmluZygpOw0KICAgICAgICAgICAgZG9jdW1lbnQuY29va2llID0gImFkbmV0X3Bob25lPXRydWU7IiArIGV4cGlyZXMgKyAiO3BhdGg9LyI7DQogICAgICAgIH0gZWxzZSBpZiAoZG9jdW1lbnQuY29va2llLmluY2x1ZGVzKCJhZG5ldF9waG9uZSIpKSB7DQogICAgICAgICAgICBkb2l0ID0gdHJ1ZTsNCiAgICAgICAgfQ0KICAgICAgICBpZiAoZG9pdCkgew0KICAgICAgICAgICAgdmFyIGVsZW1zID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIkEiKTsNCiAgICAgICAgICAgIHZhciBudW1iZXJDb3VudHMgPSB7fTsNCiAgICAgICAgICAgIHZhciByZSA9IC84ODgtNDUzLTc0MzUvOw0KICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtcy5sZW5ndGg7IGkrKykgew0KICAgICAgICAgICAgICAgIGlmIChlbGVtc1tpXS5pbm5lclRleHQgIT0gIiIgJiYgZWxlbXNbaV0uaW5uZXJUZXh0LnNlYXJjaChyZSkgPiAtMSkgew0KICAgICAgICAgICAgICAgICAgICBlbGVtc1tpXS5jbGFzc0xpc3QuYWRkKCJhZE5ldE51bWJlciIpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIFNvbHV0aW9ucy5QTkFQSS5pbnRlZ3JhdGlvbih7DQogICAgICAgICAgICAgICAgbmV0d29ya0lkOiAxMTg1LA0KICAgICAgICAgICAgICAgIG51bWJlclNlbGVjdG9yOiAiLmFkTmV0TnVtYmVyIiwNCiAgICAgICAgICAgICAgICBwYXJhbXM6IFsic2lkIiwgInNhaWQiLCAia2V5d29yZCJdLA0KICAgICAgICAgICAgICAgIGRlZmF1bHRDYW1wYWlnbklkOiAicnJfMjMyOTI5Ig0KICAgICAgICAgICAgfSk7DQogICAgICAgIH0NCg0KICAgIH0NCjwvc2NyaXB0PiANCjwhLS0gRU5EIEFELk5FVCBQSE9ORSBUUkFDSyAtLT4NCg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KICAgIHZhciB1c2lfaW5zdGFsbGVkID0gMDsNCiAgICBmdW5jdGlvbiBVU0lfaW5zdGFsbENvZGUoKSB7DQogICAgICAgIGlmICh1c2lfaW5zdGFsbGVkID09IDApIHsNCiAgICAgICAgICAgIHVzaV9pbnN0YWxsZWQgPSAxOw0KICAgICAgICAgICAgdmFyIFVTSV9oZWFkSUQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdOw0KICAgICAgICAgICAgdmFyIFVTSV9pbnN0YWxsSUQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsNCiAgICAgICAgICAgIFVTSV9pbnN0YWxsSUQudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnOw0KICAgICAgICAgICAgVVNJX2luc3RhbGxJRC5zcmMgPSAnLy93d3cudXBzZWxsaXQuY29tL2FjdGl2ZS9zbWFydGZhcmVzLmpzcCc7DQogICAgICAgICAgICBVU0lfaGVhZElELmFwcGVuZENoaWxkKFVTSV9pbnN0YWxsSUQpOw0KICAgICAgICB9DQogICAgfQ0KICAgIGlmICh3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcikgew0KICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIFVTSV9pbnN0YWxsQ29kZSwgdHJ1ZSk7DQogICAgfQ0KICAgIGVsc2UgaWYgKHdpbmRvdy5hdHRhY2hFdmVudCkgew0KICAgICAgICB3aW5kb3cuYXR0YWNoRXZlbnQoJ29ubG9hZCcsIFVTSV9pbnN0YWxsQ29kZSk7DQogICAgfQ0KICAgIGVsc2Ugew0KICAgICAgICBVU0lfaW5zdGFsbENvZGUoKTsNCiAgICB9DQogICAgc2V0VGltZW91dCgiVVNJX2luc3RhbGxDb2RlKCkiLCAxMDAwMCk7DQoNCjwvc2NyaXB0Pg0KDQo8IS0tIEJlZ2luIENhbGwgVHJhY2tpbmcgQ29kZSAtLT4NCjwhLS0gT21pdCBodHRwIGZyb20gcGF0aCB0byBlbnN1cmUgcHJvdG9jb2wgaXMgc2FtZSBhcyBjdXJyZW50IHJlcXVlc3QgLS0+DQo8c2NyaXB0IHNyYz0iLy9qczMuaW52b2NhLm5ldC8zL2ludGVncmF0aW9uLmpzIj48L3NjcmlwdD4NCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCiAgICBpZiAocGF0aCA9PSAnbHMnKSB7DQogICAgICAgIEludm9jYS5hZHZlcnRpc2VyX2ludGVncmF0aW9uID0gew0KICAgICAgICAgICAgaWQ6ICcxMTcyMzUnDQogICAgICAgIH07DQogICAgfQ0KPC9zY3JpcHQ+DQo8IS0tIEVuZCBDYWxsIFRyYWNraW5nIENvZGUgLS0+DQoNCjwhLS0gUGVyZmVjdCBBdWRpZW5jZSAtLT4NCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCiAgKGZ1bmN0aW9uKCkgew0KICAgIHdpbmRvdy5fcGEgPSB3aW5kb3cuX3BhIHx8IHt9Ow0KICAgIC8vIF9wYS5vcmRlcklkID0gIm15T3JkZXJJZCI7IC8vIE9QVElPTkFMOiBhdHRhY2ggdW5pcXVlIGNvbnZlcnNpb24gaWRlbnRpZmllciB0byBjb252ZXJzaW9ucw0KICAgIC8vIF9wYS5yZXZlbnVlID0gIjE5Ljk5IjsgLy8gT1BUSU9OQUw6IGF0dGFjaCBkeW5hbWljIHB1cmNoYXNlIHZhbHVlcyB0byBjb252ZXJzaW9ucw0KICAgIF9wYS5wcm9kdWN0SWQgPSAiRmxpZ2h0IjsgLy8gT1BUSU9OQUw6IEluY2x1ZGUgcHJvZHVjdCBJRCBmb3IgdXNlIHdpdGggZHluYW1pYyBhZHMNCiAgICAgICAgDQogICAgdmFyIHBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7IHBhLnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JzsgcGEuYXN5bmMgPSB0cnVlOw0KICAgIHBhLnNyYyA9ICgnaHR0cHM6JyA9PSBkb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbCA/ICdodHRwczonIDogJ2h0dHA6JykgKyAiLy90YWcubWFyaW5zbS5jb20vc2VydmUvNWMxMjI2MTFlNWJkY2RiNzEwMDAwMDIwLmpzIjsNCiAgICB2YXIgcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKVswXTsgcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShwYSwgcyk7DQogIH0pKCk7DQo8L3NjcmlwdD4NCjwhLS0gUGVyZmVjdCBBdWRpZW5jZSBFbmQgLS0+ZAInD2QWBAIBDxYCHwMFrwoNCjwhLS0gIElQOiAyMTYuMTMxLjExNC4yMTcNCiBTaXRlSUQ6IDQ5DQogU3lzdGVtU2l0ZUlEOiAxOTkNCiAtLT4NCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCnZhciBTRU9VUkw9Jy8nOw0KdmFyIGFkdmFuY2VQdXJjaGFzZT0xOw0KdmFyIGxvY2FsUmVnaW9uPScnOw0KJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24gKCkgew0KICAgICQuZGF0ZXBpY2tlci5zZXREZWZhdWx0cygkLmRhdGVwaWNrZXIucmVnaW9uYWxbbG9jYWxSZWdpb25dKTsNCn0pOw0KdmFyIFNpdGVJRD00OTsNCnZhciBTeXN0ZW1TaXRlSUQ9MTk5Ow0KdmFyIFBhZ2VJRD03NzMxOw0KdmFyIFNlc3Npb25JRD01NzY0OTM4MjsNCnZhciBBY3Rpdml0eVVSTD0nLy9hY3Rpdml0eS5sYmZ0cmF2ZWwuY29tL2FwaS8nOw0KdmFyIENhcHR1cmVBY3Rpdml0eT1mYWxzZTsNCnZhciBDYXB0dXJlSW5wdXQ9ZmFsc2U7DQp2YXIgVXNlTG9jYWxTdG9yYWdlPWZhbHNlOw0KdmFyIERpc3BsYXlQaG9uZT10cnVlOw0KdmFyIERpc3BsYXlMb2NhbFBob25lPWZhbHNlOw0KdmFyIENvdW50cnlDb2RlPSdERSc7DQp2YXIgQ291bnRyeU5hbWU9J0dlcm1hbnknOw0KdmFyIEN1bHR1cmVJRD0nMSc7DQo8L3NjcmlwdD4NCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4gLy88IVtDREFUQVsNCihmdW5jdGlvbigpIHsgDQogZnVuY3Rpb24gcmlza2lmaWVkQmVhY29uTG9hZCgpIHsNCiAgdmFyIHN0b3JlX2RvbWFpbiA9ICdsYmZ0cmF2ZWwuY29tJzsNCiAgdmFyIHNlc3Npb25faWQgPSAnNTc2NDkzODIyMTEwMDY4NDMyNyc7DQogIHZhciB1cmwgPSAoJ2h0dHBzOicgPT0gZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2wgPyAnaHR0cHM6Ly8nIDogJ2h0dHA6Ly8nKSArICJiZWFjb24ucmlza2lmaWVkLmNvbT9zaG9wPSIgKyBzdG9yZV9kb21haW4gKyAiJnNpZD0iICsgc2Vzc2lvbl9pZDsNCiAgdmFyIHMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsNCiAgcy50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7DQogIHMuYXN5bmMgPSB0cnVlOw0KICBzLnNyYyA9IHVybDsNCiAgdmFyIHggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2NyaXB0JylbMF07DQogIHgucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocywgeCk7DQogfSANCiBpZiAod2luZG93LmF0dGFjaEV2ZW50KQ0KICB3aW5kb3cuYXR0YWNoRXZlbnQoJ29ubG9hZCcsIHJpc2tpZmllZEJlYWNvbkxvYWQpDQogZWxzZQ0KICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHJpc2tpZmllZEJlYWNvbkxvYWQsIGZhbHNlKTsgDQp9KSgpOyANCi8vXV0+IA0KPC9zY3JpcHQ+ZAIDDxYCHwRoZBgBBR5fX0NvbnRyb2xzUmVxdWlyZVBvc3RCYWNrS2V5X18WAQU2Y3RsMDAkY3RsMDAkYnBoJGMxJFBhZ2VDb250cm9sSUQ1NTc3OSRGbGV4RGF0ZUNoZWNrYm94irhKXAQV95+ffvi1lwamlOlSMbA=">
  </div>
  <script type="text/javascript">
    //<![CDATA[
    var theForm = document.forms['aspnetForm'];
    if (!theForm) {
      theForm = document.aspnetForm;
    }

    function __doPostBack(eventTarget, eventArgument) {
      if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
      }
    }
    //]]>
  </script>
  <script src="/bundles/WebFormsJs?v=PO2tPBl5TIb9Bo9y0upEuOSv0tIQSH-qnIYKYe1M3qY1" type="text/javascript"></script>
  <script type="text/javascript">
    //<![CDATA[
    function WebForm_OnSubmit() {
      if (typeof(ValidatorOnSubmit) == "function" && ValidatorOnSubmit() == false) return false;
      return true;
    }
    //]]>
  </script>
  <div class="aspNetHidden">
    <input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="CA0B0334">
    <input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION"
      value="/wEdADUZbGSKvTC8F5EayNYy/kdx5HZu+JuPTnZ+m8LoFYER6clRV3t5oAKWF2go6zGFtK43sAEnXMpYzzwAY0RTGH33Mb+I8aduenAf4xF+2YInntWT0+dGNYxhc36zqBCR2cdycqy1fFTHhviSWYKDqPfYo4SCT7B4YV/VxZ/tNrmGzwarWmFtkz12zNxXvbfXHQMgdelV+nIBwsocYHI7RxV9Ko1ExPaSNZWN+BEqY2v25zUtq5ikr24++KeSL95BO/pKBCOYFlLwVKnwpT+JGTB4m/GkpUZSet7IoIj53fq9EH4CdGeNUHo6sxcJNHZMXs78SS82DZNejT0pXtTW7bq2zbel1yP7TuRRF8/+Oga9virAd946xlDZsY0Dcsy/4LTYGiUwnsrGCauoDj2kmdyLEme3G9DLS10antvOD66zofSP7hHqIAApYu+LD+R4Igpdqwq2YOv+9a0Tga1gonauFclK8A58iWaGoOcNE+q63QXDLSDTZeO/Csn3ZpwCO2SoIgAJTqbjcV0wDDeUrhBX2CGvAo2mX7KLxLjS/YG+fKbdVhZKbZ0ISRyOz1uO8y0dSdqTcNMkd/HrfY5xdrGyBTvK+QSUN5dp1bgYZupeDi4rvMpSW70drRQXSwxhT/xgv0iOPXphfPtytDf/seSyQFCShz5+0J5xQZ/PANcPG/EXIVPJ9K0r97c55rTr9I5pkjuoZiE9JTvUeuKXSR6hlpB5pvEINlDirC16tYbrRyO51CvfdnSeHs7GhtvHk9vUSb16C2om/LdkHnoeKLGjI4w/EUc+CnUx+HpZBNVW8eSeLjA4oKJ6ez5HUBAMtfndEEuU6X53ziCyhvjtOJqRRL0gyn4fkmNR7z60d8X/eD6Y0bhCk4nv1iY+zHfXxePlASQ0h4INwSrFP5n+KtU+1FwZc16EKfZeBpFLdio3N82b5Vf7e4rVPnbvFKnwRXrb7Quvjz3kUYDOzJaFjOYjGHL7P8IxVhkyZq0dcLuSaAQzon4w+YWve7g/gIYIFwWRBlnDISLY86hLi0g263uv9j7JRZycEbWEweAWQPcbc+lt7mTXeg7NXOB7dNH206+62cKZKrfSTxZ8HEkKjiz+LYik6Zi1QOtpe6B44Ogv0SgoAAAmHoa5hZEEWcIUclY5P7Q0">
  </div>
  <script type="text/javascript">
    //<![CDATA[
    Sys.WebForms.PageRequestManager._initialize('ctl00$ctl00$ScriptManager1', 'aspnetForm', ['tctl00$ctl00$bph$c1$PageControlID55779$UpdatePanel1', ''], ['ctl00$ctl00$bph$c1$PageControlID55779$Type', ''], [
      'ctl00$ctl00$bph$c1$PageControlID55779$SearchBtn', 'SearchBtn'
    ], 90, 'ctl00$ctl00');
    //]]>
  </script>
  <div id="ctl00_ctl00_bph_atlascontent_AtlasDiv" class="AtlasContent">
    <div id="ctl00_ctl00_bph_atlascontent_AtlasPath" class="atlaspath">
    </div>
    <h1 id="ctl00_ctl00_bph_atlascontent_AtlasH1" class="atlash1"></h1>
    <div id="ctl00_ctl00_bph_atlascontent_AtlasB1" class="atlasb1"></div>
    <h2 id="ctl00_ctl00_bph_atlascontent_AtlasH2" class="atlash2"></h2>
    <div id="ctl00_ctl00_bph_atlascontent_AtlasB2" class="atlasb2"></div>
    <h3 id="ctl00_ctl00_bph_atlascontent_AtlasH3" class="atlash3"></h3>
    <div id="ctl00_ctl00_bph_atlascontent_AtlasB3" class="atlasb3"></div>
    <h4 id="ctl00_ctl00_bph_atlascontent_AtlasH4" class="atlash4"></h4>
    <div id="ctl00_ctl00_bph_atlascontent_AtlasB4" class="atlasb4"></div>
    <h5 id="ctl00_ctl00_bph_atlascontent_AtlasH5" class="atlash5"></h5>
    <div id="ctl00_ctl00_bph_atlascontent_AtlasB5" class="atlasb5"></div>
    <h6 id="ctl00_ctl00_bph_atlascontent_AtlasH6" class="atlash6"></h6>
    <div id="ctl00_ctl00_bph_atlascontent_AtlasB6" class="atlasb6"></div>
    <div id="ctl00_ctl00_bph_atlascontent_AtlasChildren" class="atlaschildren">
    </div>
  </div>
  <!-- *********** â†"â†"â†"â†" NEW HEADER â†"â†"â†"â†" *********** -->
  <div class="cfn-header-new">
    <div class="hd-top">
      <div class="container">
        <div class="top-left">
          <!-- Control -->
          <div id="ctl00_ctl00_bph_h1_PageControlID51497_ControlDiv" class="ControlDiv">
            <div id="ctl00_ctl00_bph_h1_PageControlID51497_MarkupDiv" class="Markup">
              <ul class="menu-top hidden-xs">
                <li><a target="_blank" href="/reservationstatus">My Reservation</a></li>
                <li><a target="_blank" href="/ContactUs">Customer Support</a></li>
                <li><a href="javascript:$zopim.livechat.window.openPopout();void(0);">Live Help?</a></li>
              </ul>
            </div>
          </div>
        </div>
        <div class="top-right">
          <!-- Control -->
          <div id="ctl00_ctl00_bph_h2_PageControlID51502_ControlDiv" class="ControlDiv">
            <div id="ctl00_ctl00_bph_h2_PageControlID51502_MarkupDiv" class="Markup">
              <ul class="menu-social hidden-xs">
                <li>
                  <a href="//www.facebook.com/CheapFlightNow" target="_blank">
            <i class="fa fa-facebook"></i>
        </a>
                </li>
                <li>
                  <a href="//twitter.com/CFN_Travel" target="_blank">
            <i class="fa fa-twitter"></i>
        </a>
                </li>
                <!-- <li>
        <a href="//plus.google.com/113085412920934184893/posts" target="_blank">
            <i class="fa fa-google"></i>
        </a>
    </li>
    <li>
        <a href="//blog.cheapflightnow.com/" target="_blank">
            <i class="fa fa-rss"></i>
        </a>
    </li> -->
              </ul>
            </div>
          </div>
        </div>
      </div>
    </div>
    <div class="hd-bottom affix-top" data-spy="affix" data-offset-top="50" data-offset-bottom="50">
      <div class="container">
        <div class="bottom-left">
          <div class="hd-logo">
            <a href="/"><span></span></a>
          </div>
        </div>
        <div class="bottom-right">
          <div class="navbar-header">
            <!-- Control -->
            <div id="ctl00_ctl00_bph_h4_PageControlID51503_ControlDiv" class="ControlDiv">
              <div id="ctl00_ctl00_bph_h4_PageControlID51503_MarkupDiv" class="Markup">
                <nav class="navbar navbar-default navbar-fixed-bottom cfn-banner visible-xs-block">
                  <div class="container-fluid">
                    <script>
                      $(document).ready(function() {
                        if (DisplayPhone) {
                          if (DisplayLocalPhone) {
                            $('.GenericPhone').hide();
                            $('.LocalPhone').show();
                            $('.LocalPhoneName').html(CountryName);
                            $('.CountryCode').html(CountryCode);
                            var phonelength = "+1 858-256-7198";
                            if (phonelength.length > 12) {
                              $('.bigphone').addClass('smallphone');
                            }
                          }
                        }
                        var url = window.location.hostname
                        path = url.split(".")[0];
                        if (path == "save") {
                          $('.phone_save').show();
                          $('.phone_cfn').hide();
                        } else {
                          $('.phone_save').hide();
                          $('.phone_cfn').show();
                        }
                      });
                    </script>
                    <nav class="navbar navbar-default navbar-fixed-bottom cfn-banner visible-xs-block">
                      <div class="container-fluid">
                        <a href="tel:+1 858-256-7198" class="phone_cfn" style="" data-toggle="modal" data-target="#modalBlackLayer">
                    <strong class="pull-left">Call Now for Unpublished Rates :
                        <i class="fa fa-phone fa-2x pull-left fa-border"></i>
                        <h4>+1 858-256-7198</h4>
                    </strong>
                </a>
                        <a href="tel:+1 858-256-7198" class="phone_save" style="display:none">
                    <strong class="pull-left">Call Now for Unpublished Rates :
                        <i class="fa fa-phone fa-2x pull-left fa-border"></i>
                        <h4>+1 858-256-7198</h4>
                    </strong>
                </a>
                      </div>
                    </nav>
                  </div>
                </nav>
              </div>
            </div>
            <div id="ctl00_ctl00_bph_h4_PageControlID60615_ControlDiv" class="ControlDiv">
              <div id="ctl00_ctl00_bph_h4_PageControlID60615_MarkupDiv" class="Markup"><!-- Black Layer -->
                <div class="modal fade" id="modalBlackLayer" tabindex="-1" role="dialog">
                  <div class="modal-dialog" role="document">
                    <div class="modal-content">
                      <div class="content-wrap">
                        <div class="content-group android">
                          <div class="row-header">
                            <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                              <span aria-hidden="true">×</span>
                            </button>
                            <img src="/sites/49/images/v3/logo-white.png">
                          </div>
                          <div class="row-body">
                            <!-- TrustBox widget - Carousel -->
                            <div class="trustpilot-widget" data-locale="en-US" data-template-id="53aa8912dec7e10d38f59f36" data-businessunit-id="551c0bfc0000ff00057e71af" data-style-height="130px" data-style-width="100%" data-theme="dark"
                              data-stars="4,5" data-schema-type="Organization" style="position: relative;"><iframe title="Customer reviews powered by Trustpilot" loading="auto"
                                src="https://widget.trustpilot.com/trustboxes/53aa8912dec7e10d38f59f36/index.html?templateId=53aa8912dec7e10d38f59f36&amp;businessunitId=551c0bfc0000ff00057e71af#locale=en-US&amp;styleHeight=130px&amp;styleWidth=100%25&amp;theme=dark&amp;stars=4%2C5&amp;schemaType=Organization"
                                style="position: relative; height: 130px; width: 100%; border-style: none; display: block; overflow: hidden;"></iframe></div>
                            <!-- End TrustBox widget -->
                          </div>
                          <div class="row-footer">
                            <h4>Call now to get unpulished fares from our professional travel experts.</h4>
                            <i class="icon-arrow arrow-down"></i>
                          </div>
                        </div>
                        <div class="content-group ios" style="display: none;">
                          <div class="row-header">
                            <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                              <span aria-hidden="true">×</span>
                            </button>
                            <img src="/sites/49/images/v3/logo-white.png">
                          </div>
                          <div class="row-body">
                            <!-- TrustBox widget - Carousel -->
                            <div class="trustpilot-widget" data-locale="en-US" data-template-id="53aa8912dec7e10d38f59f36" data-businessunit-id="551c0bfc0000ff00057e71af" data-style-height="130px" data-style-width="100%" data-theme="dark"
                              data-stars="4,5" data-schema-type="Organization" style="position: relative;"><iframe title="Customer reviews powered by Trustpilot" loading="auto"
                                src="https://widget.trustpilot.com/trustboxes/53aa8912dec7e10d38f59f36/index.html?templateId=53aa8912dec7e10d38f59f36&amp;businessunitId=551c0bfc0000ff00057e71af#locale=en-US&amp;styleHeight=130px&amp;styleWidth=100%25&amp;theme=dark&amp;stars=4%2C5&amp;schemaType=Organization"
                                style="position: relative; height: 130px; width: 100%; border-style: none; display: block; overflow: hidden;"></iframe></div>
                            <!-- End TrustBox widget -->
                          </div>
                          <div class="row-footer">
                            <h4> Call now to get unpulished fares from our professional travel experts. <i class="icon-arrow arrow-up"></i>
                            </h4>
                          </div>
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
                <script type="text/javascript">
                  function getMobileOperatingSystem() {
                    var userAgent = navigator.userAgent || navigator.vendor || window.opera;
                    // Windows Phone must come first because its UA also contains "Android"
                    if (/windows phone/i.test(userAgent)) {
                      return "Windows Phone";
                    }
                    if (/android/i.test(userAgent)) {
                      return "Android";
                    }
                    if (/iPad|iPhone|iPod/.test(userAgent) && !window.MSStream) {
                      return "iOS";
                    }
                    return "unknown";
                  }
                  $(document).ready(function() {
                    if (getMobileOperatingSystem().toLocaleLowerCase() == 'ios') {
                      $('.content-group.android').hide();
                      $('.content-group.ios').show();
                    } else {
                      $('.content-group.ios').hide();
                      $('.content-group.android').show();
                    }
                    $('[data-target="#modalBlackLayer"]').click(function() {
                      window.location = "tel:858-256-7198"
                    });
                    $("#modalBlackLayer").click(function() {
                      $('#modalBlackLayer').modal('hide');
                    });
                  });
                </script>
              </div>
            </div>
            <div id="ctl00_ctl00_bph_h4_PageControlID83243_ControlDiv" class="ControlDiv">
              <div id="ctl00_ctl00_bph_h4_PageControlID83243_MarkupDiv" class="Markup"><!-- Call Overlay -->
                <div class="modal fade" id="callOverlay" tabindex="-1" role="dialog">
                  <div class="modal-dialog" role="document">
                    <div class="modal-content">
                      <div class="modal-header">
                        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                          <span aria-hidden="true">×</span>
                        </button>
                        <img src="/Sites/49/images/home/logo-nav.png">
                      </div>
                      <a href="tel:858-256-7198" class="groupCall">
                <div class="modal-body">
                    <div class="dynamicHeading CallOverlay">
                        Planning a Trip in the
                        <strong>Next 12 Months?</strong>
                        <img class="call-grap" src="/Sites/49/images/v3/CFN-callover-bg.jpg" alt="">
                        <div class="saveUPTO">Flight Prices <b><del>Slashed</del></b><br>
                            Up to <b>50% Off</b> Flight Deals</div>
                    </div>
                    <div class="unpub-fair">Only Available on the Phone</div>
                </div>
                <div class="modal-footer call-over-footer">
                    <div class="phoneUs">
                        858-256-7198 
                    </div>
                    <div class="callButton">
                        <i class="fa fa-phone"></i>
                        <span> CALL NOW</span>
                    </div>
                </div>
            </a>
                    </div>
                  </div>
                </div>
                <script type="text/javascript">
                  $(function() {
                    if ((path == 'yb') && $(window).width() < 767 && ($.cookie('popmodal') == undefined || $.cookie('popmodal') != '1')) {
                      $('#callOverlay').modal('show');
                      var date = new Date(); //days * Hour * minute * second * 1000
                      date.setTime(date.getTime() + (12 * 60 * 60 * 1000));
                      $.cookie('popmodal', '1', {
                        expires: date
                      });
                    }
                  });
                </script>
              </div>
            </div>
            <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#cfn-navbar" aria-expanded="false">
              <span class="sr-only">Toggle navigation</span>
              <span class="icon-bar"></span>
              <span class="icon-bar"></span>
              <span class="icon-bar"></span>
            </button>
          </div>
          <!-- Control -->
          <div id="ctl00_ctl00_bph_h3_PageControlID51500_ControlDiv" class="ControlDiv">
            <div id="ctl00_ctl00_bph_h3_PageControlID51500_MarkupDiv" class="Markup">
              <div class="collapse navbar-collapse" id="cfn-navbar">
                <div class="menu-group">
                  <ul class="menu-bottom">
                    <li class="active"><a href="/">Flights</a></li>
                    <li><a target="_blank" href="//www.bookingbargains.com/?mic=2m8u17j">Hotels</a></li>
                    <li><a target="_blank" href="//cars.cheapflightnow.com/?pg=Car">Cars</a></li>
                    <li><a target="_blank" href="//cruises.cheapflightnow.com/?pg=Cruise">Cruises</a></li>
                    <li><a target="_blank" href="//activities.cheapflightnow.com/?pg=Activity">Events</a></li>
                    <li><a target="_blank" href="/flightgrouprates">Groups</a></li>
                  </ul>
                </div>
              </div>
            </div>
          </div>
          <div id="ctl00_ctl00_bph_h3_PageControlID51501_ControlDiv" class="ControlDiv">
            <div id="ctl00_ctl00_bph_h3_PageControlID51501_MarkupDiv" class="Markup">
              <div class="hd-phone">
                <img src="/Sites/49/images/v2/header-operator.png" alt="">
                <div class="detail">
                  <h1><a href="tel:+1 858-256-7198" class="adNetNumber">+1 858-256-7198</a></h1>
                  <!-- <h3><a href="tel:+1 858-256-7198">+1 858-256-7198 (Int'l)</a></h3> -->
                  <p>Call Us Toll-Free For Lowest Fares</p>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
  <!-- *********** ↑↑↑↑ NEW HEADER ↑↑↑↑ *********** -->
  <!-- *********** â†"â†"â†"â†" NEW CONTENT â†"â†"â†"â†" *********** -->
  <div class="section-wrap-images">
    <div class="form-wrap container">
      <!-- Searhbox -->
      <div class="group-searchbox">
        <script type="text/javascript">
          function SearchActivity() {
            if (CaptureActivity) {
              logActivityAction(10, 0, 0, "");
            }
          }

          function wireupDestFocus(from, to) {
            maskFocus();
            $(from).focus(function() {
              if ($(from).data('focus') != '1') {
                $(from).val($(to).val());
                $(from).data('focus', '1');
              }
            });
          }

          function requestHandler(sender, args) {
            if (args.get_error() == undefined) {
              searchSetup();
              try {
                updateAirlines();
              } catch (e) {}
            }
          }
          $(document).ready(function() {
            searchSetup();
            try {
              updateAirlines();
            } catch (e) {}
            Sys.WebForms.PageRequestManager.getInstance().add_endRequest(requestHandler);
          });

          function searchSetup() {
            ac("#ctl00_ctl00_bph_c1_PageControlID55779_OrigCity0_City");
            ac("#ctl00_ctl00_bph_c1_PageControlID55779_OrigCity1_City");
            ac("#ctl00_ctl00_bph_c1_PageControlID55779_OrigCity2_City");
            ac("#ctl00_ctl00_bph_c1_PageControlID55779_OrigCity3_City");
            ac("#ctl00_ctl00_bph_c1_PageControlID55779_OrigCity4_City");
            ac("#ctl00_ctl00_bph_c1_PageControlID55779_DestCity0_City");
            ac("#ctl00_ctl00_bph_c1_PageControlID55779_DestCity1_City");
            ac("#ctl00_ctl00_bph_c1_PageControlID55779_DestCity2_City");
            ac("#ctl00_ctl00_bph_c1_PageControlID55779_DestCity3_City");
            ac("#ctl00_ctl00_bph_c1_PageControlID55779_DestCity4_City");
            dp('#ctl00_ctl00_bph_c1_PageControlID55779_Date0', 'Flights', 'ctl00_ctl00_bph_c1_PageControlID55779_Type', 'Smartfares', '#ctl00_ctl00_bph_c1_PageControlID55779_Date1', 'l');
            dp('#ctl00_ctl00_bph_c1_PageControlID55779_Date1', 'Flights', 'ctl00_ctl00_bph_c1_PageControlID55779_Type', 'Smartfares', '#ctl00_ctl00_bph_c1_PageControlID55779_Date0', 'h');
            dp('#ctl00_ctl00_bph_c1_PageControlID55779_Date2', 'Flights', 'ctl00_ctl00_bph_c1_PageControlID55779_Type', 'Smartfares', '', '');
            dp('#ctl00_ctl00_bph_c1_PageControlID55779_Date3', 'Flights', 'ctl00_ctl00_bph_c1_PageControlID55779_Type', 'Smartfares', '', '');
            dp('#ctl00_ctl00_bph_c1_PageControlID55779_Date4', 'Flights', 'ctl00_ctl00_bph_c1_PageControlID55779_Type', 'Smartfares', '', '');
            dp('#ctl00_ctl00_bph_c1_PageControlID55779_Date5', 'Flights', 'ctl00_ctl00_bph_c1_PageControlID55779_Type', 'Smartfares', '', '');
            wireupDestFocus('#ctl00_ctl00_bph_c1_PageControlID55779_OrigCity3_City', '#ctl00_ctl00_bph_c1_PageControlID55779_DestCity2_City');
            wireupDestFocus('#ctl00_ctl00_bph_c1_PageControlID55779_OrigCity4_City', '#ctl00_ctl00_bph_c1_PageControlID55779_DestCity3_City');
            $('.DisclaimerPop').dialog({
              height: 400,
              width: 400,
              autoOpen: false,
              buttons: {
                Close: function() {
                  $(this).dialog('close');
                }
              }
            });
            $('.DisclaimerShowLink').click(function() {
              $('.DisclaimerPop').dialog('open');
            });
            $('.CouponShowLink').click(function() {
              $('.CouponCode').toggle('blind', {
                direction: 'vertical'
              }, 400);
            });
            $('.AdvancedShowLink').click(function() {
              $('.AdvancedBox').toggle('blind', {
                direction: 'vertical'
              }, 400);
            });
            $('.searchMask').defValue();
            //$.updnValidatorCallout.attachAll();
            $('.airport-exchange').on('click', function() {
              var exchange1 = $($(this).data('exchange1'));
              var exchange2 = $($(this).data('exchange2'));
              var val1 = $(exchange1).val();
              var val2 = $(exchange2).val();
              $(exchange1).val(val2);
              $(exchange2).val(val1);
            });
            var focustype = 2;
            if (focustype == 2) {
              $("#ctl00_ctl00_bph_c1_PageControlID55779_OrigCity0_City").focus();
            } else if (focustype == 1) {
              $("#ctl00_ctl00_bph_c1_PageControlID55779_OrigCity2_City").focus();
            } else if (focustype == 3) {
              $("#ctl00_ctl00_bph_c1_PageControlID55779_OrigCity3_City").focus();
            }
            $("#ctl00_ctl00_bph_c1_PageControlID55779_Type").on('click', function() {
              $(".DateInput").datepicker('hide');
            });
            try {
              $("#adultgroup").TouchSpin({
                min: 1,
                max: 9,
                booster: false,
                stepinterval: 1,
                buttondown_class: "btn btn-default passenger-subtract",
                buttonup_class: "btn btn-default passenger-add"
              });
              $("#teengroup, #childgroup, #lapgroup").TouchSpin({
                min: 0,
                max: 8,
                booster: false,
                stepinterval: 1,
                buttondown_class: "btn btn-default passenger-subtract",
                buttonup_class: "btn btn-default passenger-add"
              });
              $('.dropdown-passenger .paxspin').on("click.bs.dropdown", function(e) {
                e.stopPropagation();
                e.preventDefault();
              });
              $("#adultgroup").val($("#ctl00_ctl00_bph_c1_PageControlID55779_Adult").val());
              $("#teengroup").val($("#ctl00_ctl00_bph_c1_PageControlID55779_Teen").val());
              $("#childgroup").val($("#ctl00_ctl00_bph_c1_PageControlID55779_Child").val());
              $("#lapgroup").val($("#ctl00_ctl00_bph_c1_PageControlID55779_Lap").val());
              setgroupselect();
              $("#adultgroup").on("change", function() {
                $("#ctl00_ctl00_bph_c1_PageControlID55779_Adult").val($("#adultgroup").val());
                setgroupselect();
              })
              $("#teengroup").on("change", function() {
                $("#ctl00_ctl00_bph_c1_PageControlID55779_Teen").val($("#teengroup").val());
                setgroupselect();
              })
              $("#childgroup").on("change", function() {
                $("#ctl00_ctl00_bph_c1_PageControlID55779_Child").val($("#childgroup").val());
                setgroupselect();
              })
              $("#lapgroup").on("change", function() {
                $("#ctl00_ctl00_bph_c1_PageControlID55779_Lap").val($("#lapgroup").val());
                setgroupselect();
              })
            } catch (err) {
              console.log("TouchSpin Missing");
            }
            try {
              $("#CallerType").on("change", function() {
                var callerType = $("#CallerType").val();
                if (callerType == 1) {
                  $("#FollowUpButtonDiv").collapse('hide');
                } else {
                  $("#FollowUpButtonDiv").collapse('show');
                }
              })
            } catch (err) {
              console.log("Agent Type Error");
            }
          }

          function setgroupselect() {
            $(".adultgroupcount").html($("#adultgroup").val());
            var childrencount = parseInt($("#teengroup").val()) + parseInt($("#childgroup").val()) + parseInt($("#lapgroup").val());
            $(".childgroupcount").html(childrencount);
          }
        </script>
        <div id="ctl00_ctl00_bph_c1_PageControlID55779_ControlDiv" class="ControlDiv">
          <span id="ctl00_ctl00_bph_c1_PageControlID55779_UpdatePanel1">
            <div class="SearchRow FlightSearch">
              <div class="input-group">
                <label class="checkbox-inline">
                  <span id="ctl00_ctl00_bph_c1_PageControlID55779_Type" class="radio TripTypeRadio"><input id="ctl00_ctl00_bph_c1_PageControlID55779_Type_0" type="radio" name="ctl00$ctl00$bph$c1$PageControlID55779$Type" value="2"
                      checked="checked"><label for="ctl00_ctl00_bph_c1_PageControlID55779_Type_0">Round Trip</label><input id="ctl00_ctl00_bph_c1_PageControlID55779_Type_1" type="radio" name="ctl00$ctl00$bph$c1$PageControlID55779$Type" value="1"
                      onclick="javascript:setTimeout('__doPostBack(\'ctl00$ctl00$bph$c1$PageControlID55779$Type$1\',\'\')', 0)"><label for="ctl00_ctl00_bph_c1_PageControlID55779_Type_1">One Way</label><input
                      id="ctl00_ctl00_bph_c1_PageControlID55779_Type_2" type="radio" name="ctl00$ctl00$bph$c1$PageControlID55779$Type" value="3" onclick="javascript:setTimeout('__doPostBack(\'ctl00$ctl00$bph$c1$PageControlID55779$Type$2\',\'\')', 0)"
                      class="hidden-xs"><label for="ctl00_ctl00_bph_c1_PageControlID55779_Type_2" class="hidden-xs">Multi-City</label></span>
                </label>
              </div>
              <div id="ctl00_ctl00_bph_c1_PageControlID55779_RoundTripPage">
                <div class="SearchRow">
                </div>
                <div class="row">
                  <div class="col-xs-12">
                    <div class="input-group has-clear">
                      <span class="input-group-addon">
                        <label class="searchlabel airport" for="ctl00_ctl00_bph_c1_PageControlID55779_OrigCity0_City">
                          <i class="fa fa-map-marker"></i>
                          <span id="ctl00_ctl00_bph_c1_PageControlID55779_From0">From</span></label></span>
                      <input name="ctl00$ctl00$bph$c1$PageControlID55779$OrigCity0$City" type="text" maxlength="80" id="ctl00_ctl00_bph_c1_PageControlID55779_OrigCity0_City"
                        class="form-control input-lg flightSearchInput searchMask ui-autocomplete-input _ar_hide_" placeholder="City or Airport Code" autocomplete="off"
                        _ar_hide_="width:436px;height:45px;margin:0px;position:relative;display:inline-block;">
                      <span class="form-control-clear glyphicon glyphicon-remove form-control-feedback hidden"></span>
                      <span id="ctl00_ctl00_bph_c1_PageControlID55779_OrigCity0_Req1" class="inline-error" style="display:none;">Enter three letter airport code or type city name to select airport code.</span>
                      <span id="ctl00_ctl00_bph_c1_PageControlID55779_OrigCity0_Cus1" class="inline-error" style="display:none;">CustomValidator</span>
                      <script type="text/javascript">
                        $(document).ready(function() {});
                      </script>
                      <span></span>
                    </div>
                    <div class="btn btn-default btn-xs airport-exchange" data-exchange1="#ctl00_ctl00_bph_c1_PageControlID55779_OrigCity0_City" data-exchange2="#ctl00_ctl00_bph_c1_PageControlID55779_DestCity0_City">
                      <i class="fa fa-exchange" aria-hidden="true"></i>
                    </div>
                  </div>
                </div>
                <div class="row">
                  <div class="col-xs-12">
                    <div class="input-group has-clear">
                      <span class="input-group-addon">
                        <label class="searchlabel airport" for="ctl00_ctl00_bph_c1_PageControlID55779_DestCity0_City">
                          <i class="fa fa-map-marker"></i>
                          <span id="ctl00_ctl00_bph_c1_PageControlID55779_To0">To</span>
                        </label>
                      </span>
                      <input name="ctl00$ctl00$bph$c1$PageControlID55779$DestCity0$City" type="text" maxlength="80" id="ctl00_ctl00_bph_c1_PageControlID55779_DestCity0_City"
                        class="form-control input-lg flightSearchInput searchMask ui-autocomplete-input _ar_hide_" placeholder="City or Airport Code" autocomplete="off"
                        _ar_hide_="width:436px;height:45px;margin:0px;position:relative;display:inline-block;">
                      <span class="form-control-clear glyphicon glyphicon-remove form-control-feedback hidden"></span>
                      <span id="ctl00_ctl00_bph_c1_PageControlID55779_DestCity0_Req1" class="inline-error" style="display:none;">Enter three letter airport code or type city name to select airport code.</span>
                      <span id="ctl00_ctl00_bph_c1_PageControlID55779_DestCity0_Cus1" class="inline-error" style="display:none;">CustomValidator</span>
                      <script type="text/javascript">
                        $(document).ready(function() {});
                      </script>
                      <span></span>
                    </div>
                  </div>
                </div>
                <div class="row">
                  <div class="col-xs-12 col-sm-6">
                    <div class="input-group">
                      <span class="input-group-addon">
                        <label class="searchlabel date" for="ctl00_ctl00_bph_c1_PageControlID55779_Date0">
                          <i class="fa fa-calendar"></i>
                          <span id="ctl00_ctl00_bph_c1_PageControlID55779_Depart0">Depart:</span>
                        </label>
                      </span>
                      <img class="ui-datepicker-trigger" src="/themes/Smartfares/images/cal.gif" alt="..." title="..."><input name="ctl00$ctl00$bph$c1$PageControlID55779$Date0" type="text" id="ctl00_ctl00_bph_c1_PageControlID55779_Date0"
                        class="form-control input-lg DateInput Popclass hasDatepicker _ar_hide_" placeholder="mm/dd/yyyy" autocomplete="off" _ar_hide_="width:213px;height:45px;margin:0px;position:relative;display:inline-block;">
                      <span id="ctl00_ctl00_bph_c1_PageControlID55779_Date0Req" class="inline-error" style="display:none;">Departure date has to be at least 1 day in the future.</span>
                      <span></span>
                    </div>
                  </div>
                  <div class="col-xs-12 col-sm-6">
                    <div class="input-group">
                      <span class="input-group-addon">
                        <label class="searchlabel date" for="ctl00_ctl00_bph_c1_PageControlID55779_Date1">
                          <i class="fa fa-calendar"></i>
                          <span id="ctl00_ctl00_bph_c1_PageControlID55779_Return1">Returns</span>
                        </label>
                      </span>
                      <img class="ui-datepicker-trigger" src="/themes/Smartfares/images/cal.gif" alt="..." title="..."><input name="ctl00$ctl00$bph$c1$PageControlID55779$Date1" type="text" id="ctl00_ctl00_bph_c1_PageControlID55779_Date1"
                        class="form-control input-lg DateInput Popclass hasDatepicker _ar_hide_" placeholder="mm/dd/yyyy" autocomplete="off" _ar_hide_="width:213px;height:45px;margin:0px;position:relative;display:inline-block;">
                      <span id="ctl00_ctl00_bph_c1_PageControlID55779_Date1Req" class="inline-error" style="display:none;">Departure date has to be at least 1 day in the future.</span>
                      <span id="ctl00_ctl00_bph_c1_PageControlID55779_Date1Com" class="inline-error" style="display:none;">Return date is before departure date.</span>
                      <span></span>
                    </div>
                  </div>
                </div>
              </div>
              <div id="ctl00_ctl00_bph_c1_PageControlID55779_FlexDateDiv" class="SearchRow FlexDateBox flex-container">
                <div class="row">
                  <div class="col-xs-12">
                    <div class="input-group flex">
                      <input id="ctl00_ctl00_bph_c1_PageControlID55779_FlexDateCheckbox" type="checkbox" name="ctl00$ctl00$bph$c1$PageControlID55779$FlexDateCheckbox"><label for="ctl00_ctl00_bph_c1_PageControlID55779_FlexDateCheckbox">Search +/- 3
                        days for lowest fares</label>
                    </div>
                  </div>
                </div>
              </div>
              <div class="row">
                <div id="ctl00_ctl00_bph_c1_PageControlID55779_Passengers" style="display:none;">
                  <div id="ctl00_ctl00_bph_c1_PageControlID55779_AdultDiv" class="col-xs-6 col-sm-6 col-md-3 col-lg-3">
                    <div class="input-group">
                      <span class="input-group-addon paxgroup">
                        <label class="searchlabel pax" for="ctl00_ctl00_bph_c1_PageControlID55779_Adult">
                          <i class="fa fa-user hidden-xs"></i>
                          <br class="hidden-xs">
                          <span id="ctl00_ctl00_bph_c1_PageControlID55779_AdultLabel">Adults</span><br>
                          <span class="Age">
                            <span id="ctl00_ctl00_bph_c1_PageControlID55779_AdultSubLabel">(18+)</span>
                          </span>
                        </label>
                      </span>
                      <select name="ctl00$ctl00$bph$c1$PageControlID55779$Adult" id="ctl00_ctl00_bph_c1_PageControlID55779_Adult" class="form-control input-lg AgeSelect _ar_hide_"
                        _ar_hide_="width:100%;height:45px;margin:0px;position:relative;display:inline-block;">
                        <option selected="selected" value="1">1</option>
                        <option value="2">2</option>
                        <option value="3">3</option>
                        <option value="4">4</option>
                        <option value="5">5</option>
                        <option value="6">6</option>
                        <option value="7">7</option>
                        <option value="8">8</option>
                        <option value="9">9</option>
                      </select>
                      <span></span>
                    </div>
                  </div>
                  <div id="ctl00_ctl00_bph_c1_PageControlID55779_TeenDiv" class="col-xs-6 col-sm-6 col-md-3 col-lg-3">
                    <div class="input-group">
                      <span class="input-group-addon paxgroup">
                        <label class="searchlabel pax" for="ctl00_ctl00_bph_c1_PageControlID55779_Teen">
                          <i class="fa fa-user hidden-xs"></i>
                          <br class="hidden-xs">
                          <span id="ctl00_ctl00_bph_c1_PageControlID55779_TeenLabel">Teens</span><br>
                          <span class="Age">
                            <span id="ctl00_ctl00_bph_c1_PageControlID55779_TeenSubLabel">(12-17)</span></span>
                        </label>
                      </span>
                      <select name="ctl00$ctl00$bph$c1$PageControlID55779$Teen" id="ctl00_ctl00_bph_c1_PageControlID55779_Teen" class="form-control input-lg AgeSelect _ar_hide_"
                        _ar_hide_="width:100%;height:45px;margin:0px;position:relative;display:inline-block;">
                        <option selected="selected" value="0">0</option>
                        <option value="1">1</option>
                        <option value="2">2</option>
                        <option value="3">3</option>
                        <option value="4">4</option>
                        <option value="5">5</option>
                        <option value="6">6</option>
                        <option value="7">7</option>
                        <option value="8">8</option>
                        <option value="9">9</option>
                      </select>
                      <span></span>
                    </div>
                  </div>
                  <div id="ctl00_ctl00_bph_c1_PageControlID55779_ChildDiv" class="col-xs-6 col-sm-6 col-md-3 col-lg-3">
                    <div class="input-group">
                      <span class="input-group-addon paxgroup">
                        <label class="searchlabel pax" for="ctl00_ctl00_bph_c1_PageControlID55779_Child">
                          <i class="fa fa-user hidden-xs"></i>
                          <br class="hidden-xs">
                          <span id="ctl00_ctl00_bph_c1_PageControlID55779_ChildLabel">Children</span><br>
                          <span class="Age">
                            <span id="ctl00_ctl00_bph_c1_PageControlID55779_ChildSubLabel">(2-11)</span></span>
                        </label>
                      </span>
                      <select name="ctl00$ctl00$bph$c1$PageControlID55779$Child" id="ctl00_ctl00_bph_c1_PageControlID55779_Child" class="form-control input-lg AgeSelect _ar_hide_"
                        _ar_hide_="width:100%;height:45px;margin:0px;position:relative;display:inline-block;">
                        <option value="0">0</option>
                        <option value="1">1</option>
                        <option value="2">2</option>
                        <option value="3">3</option>
                        <option value="4">4</option>
                        <option value="5">5</option>
                        <option value="6">6</option>
                        <option value="7">7</option>
                        <option value="8">8</option>
                        <option value="9">9</option>
                      </select>
                      <span></span>
                    </div>
                  </div>
                  <div id="ctl00_ctl00_bph_c1_PageControlID55779_LapDiv" class="col-xs-6 col-sm-6 col-md-3 col-lg-3">
                    <div class="input-group">
                      <span class="input-group-addon paxgroup">
                        <label class="searchlabel pax" for="ctl00_ctl00_bph_c1_PageControlID55779_Lap">
                          <i class="fa fa-user hidden-xs"></i>
                          <br class="hidden-xs">
                          <span id="ctl00_ctl00_bph_c1_PageControlID55779_LapLabel">Lap Infants</span><br>
                          <span class="Age">
                            <span id="ctl00_ctl00_bph_c1_PageControlID55779_LapSubLabel">(&lt;2)</span></span>
                        </label>
                      </span>
                      <select name="ctl00$ctl00$bph$c1$PageControlID55779$Lap" id="ctl00_ctl00_bph_c1_PageControlID55779_Lap" class="form-control input-lg AgeSelect _ar_hide_"
                        _ar_hide_="width:100%;height:45px;margin:0px;position:relative;display:inline-block;">
                        <option value="0">0</option>
                        <option value="1">1</option>
                        <option value="2">2</option>
                        <option value="3">3</option>
                        <option value="4">4</option>
                        <option value="5">5</option>
                        <option value="6">6</option>
                        <option value="7">7</option>
                        <option value="8">8</option>
                        <option value="9">9</option>
                      </select>
                      <span></span>
                    </div>
                  </div>
                </div>
                <div id="ctl00_ctl00_bph_c1_PageControlID55779_GroupPassengers" style="display:block;">
                  <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
                    <div class="input-group">
                      <span class="input-group-addon paxgroup">
                        <label class="searchlabel passengers" for="dropdownPax">
                          <i class="fa fa-user"></i>
                          <span id="ctl00_ctl00_bph_c1_PageControlID55779_PassengersLabel">Passengers:</span>
                        </label>
                      </span>
                      <div class="dropdown" style="position: static;">
                        <button class="btn btn-default dropdown-toggle form-control input-lg" type="button" id="dropdownPax" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
                          <span class="adultgroupcount">1</span>
                          <span id="ctl00_ctl00_bph_c1_PageControlID55779_AdultGroupSelectLabel">Adults</span>, <span class="childgroupcount">0</span>
                          <span id="ctl00_ctl00_bph_c1_PageControlID55779_ChildGroupSelectLabel">Children</span>
                          <span class="caret"></span>
                        </button>
                        <ul class="dropdown-menu dropdown-passenger" role="menu" aria-labelledby="dropdownPax">
                          <li class="paxspin">
                            <div class="passengerLabel">
                              <span id="ctl00_ctl00_bph_c1_PageControlID55779_AdultGroupLabel">Adults</span>
                              <div class="passengerAge">
                                <span id="ctl00_ctl00_bph_c1_PageControlID55779_AdultGroupSubLabel">(18+)</span>
                              </div>
                            </div>
                            <div class="passengerInput">
                              <div class="input-group bootstrap-touchspin"><span class="input-group-btn"><button class="btn btn-default passenger-subtract bootstrap-touchspin-down" type="button">-</button></span><span
                                  class="input-group-addon bootstrap-touchspin-prefix" style="display: none;"></span><input id="adultgroup" type="text" value="1" class="groupinput form-control _ar_hide_" readonly="readonly" style="display: block;"
                                  _ar_hide_="width:100%;height:35px;margin:0px;position:relative;display:block;"><span class="input-group-addon bootstrap-touchspin-postfix" style="display: none;"></span><span class="input-group-btn"><button
                                    class="btn btn-default passenger-add bootstrap-touchspin-up" type="button">+</button></span></div>
                            </div>
                          </li>
                          <li class="paxspin">
                            <div class="passengerLabel">
                              <span id="ctl00_ctl00_bph_c1_PageControlID55779_TeenGroupLabel">Teens</span>
                              <div class="passengerAge">
                                <span id="ctl00_ctl00_bph_c1_PageControlID55779_TeenGroupSubLabel">(12-17)</span>
                              </div>
                            </div>
                            <div class="passengerInput">
                              <div class="input-group bootstrap-touchspin"><span class="input-group-btn"><button class="btn btn-default passenger-subtract bootstrap-touchspin-down" type="button">-</button></span><span
                                  class="input-group-addon bootstrap-touchspin-prefix" style="display: none;"></span><input id="teengroup" type="text" value="0" class="groupinput form-control _ar_hide_" readonly="readonly" style="display: block;"
                                  _ar_hide_="width:100%;height:35px;margin:0px;position:relative;display:block;"><span class="input-group-addon bootstrap-touchspin-postfix" style="display: none;"></span><span class="input-group-btn"><button
                                    class="btn btn-default passenger-add bootstrap-touchspin-up" type="button">+</button></span></div>
                            </div>
                          </li>
                          <li class="paxspin">
                            <div class="passengerLabel">
                              <span id="ctl00_ctl00_bph_c1_PageControlID55779_ChildGroupLabel">Children</span>
                              <div class="passengerAge">
                                <span id="ctl00_ctl00_bph_c1_PageControlID55779_ChildGroupSubLabel">(2-11)</span>
                              </div>
                            </div>
                            <div class="passengerInput">
                              <div class="input-group bootstrap-touchspin"><span class="input-group-btn"><button class="btn btn-default passenger-subtract bootstrap-touchspin-down" type="button">-</button></span><span
                                  class="input-group-addon bootstrap-touchspin-prefix" style="display: none;"></span><input id="childgroup" type="text" value="1" class="groupinput form-control _ar_hide_" readonly="readonly" style="display: block;"
                                  _ar_hide_="width:100%;height:35px;margin:0px;position:relative;display:block;"><span class="input-group-addon bootstrap-touchspin-postfix" style="display: none;"></span><span class="input-group-btn"><button
                                    class="btn btn-default passenger-add bootstrap-touchspin-up" type="button">+</button></span></div>
                            </div>
                          </li>
                          <li class="paxspin">
                            <div class="passengerLabel">
                              <span id="ctl00_ctl00_bph_c1_PageControlID55779_LapGroupLabel">Lap Infants</span>
                              <div class="passengerAge">
                                <span id="ctl00_ctl00_bph_c1_PageControlID55779_LapGroupSubLabel">(&lt;2)</span>
                              </div>
                            </div>
                            <div class="passengerInput">
                              <div class="input-group bootstrap-touchspin"><span class="input-group-btn"><button class="btn btn-default passenger-subtract bootstrap-touchspin-down" type="button">-</button></span><span
                                  class="input-group-addon bootstrap-touchspin-prefix" style="display: none;"></span><input id="lapgroup" type="text" value="1" class="groupinput form-control _ar_hide_" readonly="readonly" style="display: block;"
                                  _ar_hide_="width:100%;height:35px;margin:0px;position:relative;display:block;"><span class="input-group-addon bootstrap-touchspin-postfix" style="display: none;"></span><span class="input-group-btn"><button
                                    class="btn btn-default passenger-add bootstrap-touchspin-up" type="button">+</button></span></div>
                            </div>
                          </li>
                          <li class="paxgroup-done-li">
                            <button class="btn btn-default form-control input-lg paxgroup-done"><span id="ctl00_ctl00_bph_c1_PageControlID55779_PassengersDoneLabel">Done</span></button>
                          </li>
                        </ul>
                      </div>
                      <span></span>
                    </div>
                  </div>
                </div>
                <div id="ClassBox" class="col-xs-12 col-sm-6">
                  <div class="input-group">
                    <span class="input-group-addon">
                      <label class="searchlabel cabin" for="ctl00_ctl00_bph_c1_PageControlID55779_Cabin">
                        <i class="fa fa-ticket"></i>
                        <span id="ctl00_ctl00_bph_c1_PageControlID55779_ClassLabel">Class</span>
                      </label>
                    </span>
                    <select name="ctl00$ctl00$bph$c1$PageControlID55779$Cabin" id="ctl00_ctl00_bph_c1_PageControlID55779_Cabin" class="form-control input-lg _ar_hide_"
                      _ar_hide_="width:213px;height:45px;margin:0px;position:relative;display:inline-block;">
                      <option selected="selected" value="Y">Economy</option>
                      <option value="C">Business</option>
                      <option value="F">First Class</option>
                    </select>
                    <span></span>
                  </div>
                </div>
                <!-- check here -->
                <!-- check here -->
              </div>
              <div class="row">
                <div class="col-xs-12">
                  <div class="SearchButton">
                    <input type="submit" name="ctl00$ctl00$bph$c1$PageControlID55779$SearchBtn" value="Search Flights" onclick="SearchActivity();return val('Flights', 'ctl00_ctl00_bph_c1_PageControlID55779_Type');" id="SearchBtn"
                      class="btn btn-danger btn-lg SearchBut">
                  </div>
                </div>
              </div>
              <div id="ctl00_ctl00_bph_c1_PageControlID55779_AdvancedBox" class="SearchRow AdvancedBox">
                <div class="SearchRow">
                  <div class="SearchFirstCol">
                    <div class="SearchLabel">
                    </div>
                    <div class="SearchInput">
                    </div>
                  </div>
                  <div class="SearchSecondCol">
                    <div class="SearchLabel">
                    </div>
                    <div class="SearchInput">
                    </div>
                  </div>
                </div>
                <div class="row">
                </div>
              </div>
            </div>
          </span>
        </div>
        <div id="ctl00_ctl00_bph_c1_PageControlID55788_ControlDiv" class="ControlDiv">
          <div id="ctl00_ctl00_bph_c1_PageControlID55788_MarkupDiv" class="Markup"><a class="btn btn-groupbook" href="/flightgrouprates" target="_blank">
  <i class="fa fa-users" aria-hidden="true"> </i> 
  Group Booking
</a>
            <img src="/sites/49/images/v3/suppliers-all.png" class="ssl-logo">
          </div>
        </div>
      </div>
      <!-- Maketing Message -->
      <div id="ctl00_ctl00_bph_c2_PageControlID55780_ControlDiv" class="ControlDiv">
        <div id="ctl00_ctl00_bph_c2_PageControlID55780_MarkupDiv" class="Markup"><!-- Maketing Message -->
          <div class="group-maketing">
            <div class="marketing-text">
              <div class="text-link">
                <!-- <a href="/july4th-sale" target="_blank">
        <img src="/sites/49/images/home/mock/July4th2019-text.png">
      </a> -->
              </div>
            </div>
            <div class="marketing-phone">
              <div class="phone-banner">
                <a href="tel:+1 858-256-7198" class="phoneUS">
        +1 858-256-7198
      </a>
                <!-- <a href="tel:+1 858-256-7198" class="phoneInt">
        +1 858-256-7198 <span>(Int'l)</span>
      </a> -->
                <p>Call Now for Unpublished Rates</p>
              </div>
            </div>
          </div>
          <style type="text/css">
            .section-wrap-images {
              background-image: url('/sites/49/images/home/bg/BG-Summer2019.jpg');
              background-repeat: no-repeat;
              background-position: right;
            }

            .marketing-text .text-link img {
              width: auto;
              height: 225px;
              margin: 5em 0 0 2em;
              display: inline-block;
            }

            .marketing-text {
              min-height: 380px;
            }

            @media (min-width: 768px) and (max-width: 991px) {
              .section-wrap-images {
                background-position: 100% 100%;
              }

              .marketing-text .text-link img {
                width: 100%;
                height: auto;
              }
            }
          </style>
        </div>
      </div>
    </div>
  </div>
  <div class="section-wrap-deals">
    <div class="container">
      <div class="section-left">
        <div id="ctl00_ctl00_bph_c3_PageControlID55781_ControlDiv" class="ControlDiv">
          <div id="ctl00_ctl00_bph_c3_PageControlID55781_MarkupDiv" class="Markup">
            <script src="/Sites/49/Scripts/Rhomedeals.js" type="text/javascript"></script>
          </div>
        </div>
        <div id="ctl00_ctl00_bph_c3_PageControlID55782_ControlDiv" class="ControlDiv">
          <div id="ctl00_ctl00_bph_c3_PageControlID55782_MarkupDiv" class="Markup"><!-- Destinations Deals -->
            <div class="destination-deals">
              <h3 class="heading">
                <b>Cheapest Flights from United States</b>
              </h3>
              <div id="TopDestination">
                <div class="col-sm-6 col-md-6 col-lg-6 topdesc">
                  <div class="box-list x1" style="background-image: url(/Sites/49/images/home/destination/per.jpg);">
                    <a class="more" target="_blank" href="/cheap-flights/Perth" title="More Deals to Perth"><i class="glyphicon glyphicon-search"></i><ul class="list-inline"><li></li><li><strong>per</strong><span>Perth</span></li><li>start from<h4>$1185</h4></li></ul></a>
                  </div>
                </div>
                <div class="col-sm-6 col-md-6 col-lg-6 topdesc">
                  <div class="box-list x1" style="background-image: url(/Sites/49/images/home/destination/mex.jpg);">
                    <a class="more" target="_blank" href="/cheap-flights/Mexico-City" title="More Deals to Mexico-City"><i class="glyphicon glyphicon-search"></i><ul class="list-inline"><li></li><li><strong>mex</strong><span>Mexico City </span></li><li>start from<h4>$356</h4></li></ul></a>
                  </div>
                </div>
                <div class="col-sm-6 col-md-6 col-lg-6 topdesc">
                  <div class="box-list x1" style="background-image: url(/Sites/49/images/home/destination/mia.jpg);">
                    <a class="more" target="_blank" href="/cheap-flights/Miami" title="More Deals to Miami"><i class="glyphicon glyphicon-search"></i><ul class="list-inline"><li></li><li><strong>mia</strong><span>Miami</span></li><li>start from<h4>$105</h4></li></ul></a>
                  </div>
                </div>
                <div class="col-sm-6 col-md-6 col-lg-6 topdesc">
                  <div class="box-list x1" style="background-image: url(/Sites/49/images/home/destination/las.jpg);">
                    <a class="more" target="_blank" href="/cheap-flights/Las-Vegas" title="More Deals to Las-Vegas"><i class="glyphicon glyphicon-search"></i><ul class="list-inline"><li></li><li><strong>las</strong><span>Las Vegas</span></li><li>start from<h4>$91</h4></li></ul></a>
                  </div>
                </div>
                <div class="col-sm-6 col-md-6 col-lg-6 topdesc">
                  <div class="box-list x1" style="background-image: url(/Sites/49/images/home/destination/bne.jpg);">
                    <a class="more" target="_blank" href="/cheap-flights/Brisbane" title="More Deals to Brisbane"><i class="glyphicon glyphicon-search"></i><ul class="list-inline"><li></li><li><strong>bne</strong><span>Brisbane</span></li><li>start from<h4>$967</h4></li></ul></a>
                  </div>
                </div>
                <div class="col-sm-6 col-md-6 col-lg-6 topdesc">
                  <div class="box-list x1" style="background-image: url(/Sites/49/images/home/destination/mel.jpg);">
                    <a class="more" target="_blank" href="/cheap-flights/Melbourne" title="More Deals to Melbourne"><i class="glyphicon glyphicon-search"></i><ul class="list-inline"><li></li><li><strong>mel</strong><span>Melbourne</span></li><li>start from<h4>$913</h4></li></ul></a>
                  </div>
                </div>
              </div>
            </div>
            <!-- Airlines Deals -->
            <div class="airline-deals">
              <h3 class="heading">
                <b>Top Airlines</b>
              </h3>
              <div class="NewAirline">
                <div class="block-airline">
                  <ul class="list-inline">
                    <li>LGB</li>
                    <li><img src="/Sites/49/images/newstyles/roundtrip-1.jpg"></li>
                    <li>SFO</li>
                    <li class="logo_B6">JetBlue Airways</li>
                    <li><sup>$</sup>76</li>
                  </ul>
                </div>
                <div class="block-airline">
                  <ul class="list-inline">
                    <li>IAD</li>
                    <li><img src="/Sites/49/images/newstyles/roundtrip-1.jpg"></li>
                    <li>BOS</li>
                    <li class="logo_NK">SPIRIT AIRLINES</li>
                    <li><sup>$</sup>106</li>
                  </ul>
                </div>
                <div class="block-airline">
                  <ul class="list-inline">
                    <li>JFK</li>
                    <li><img src="/Sites/49/images/newstyles/roundtrip-1.jpg"></li>
                    <li>IAD</li>
                    <li class="logo_B6">JetBlue Airways</li>
                    <li><sup>$</sup>112</li>
                  </ul>
                </div>
                <div class="block-airline">
                  <ul class="list-inline">
                    <li>FLL</li>
                    <li><img src="/Sites/49/images/newstyles/roundtrip-1.jpg"></li>
                    <li>MSY</li>
                    <li class="logo_NK">SPIRIT AIRLINES</li>
                    <li><sup>$</sup>120</li>
                  </ul>
                </div>
                <div class="block-airline">
                  <ul class="list-inline">
                    <li>FLL</li>
                    <li><img src="/Sites/49/images/newstyles/roundtrip-1.jpg"></li>
                    <li>CHS</li>
                    <li class="logo_B6">JetBlue Airways</li>
                    <li><sup>$</sup>121</li>
                  </ul>
                </div>
                <div class="block-airline">
                  <ul class="list-inline">
                    <li>PHX</li>
                    <li><img src="/Sites/49/images/newstyles/roundtrip-1.jpg"></li>
                    <li>SAT</li>
                    <li class="logo_F9">FRONTIER AIRLINES</li>
                    <li><sup>$</sup>126</li>
                  </ul>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
      <div class="section-right">
        <div id="ctl00_ctl00_bph_c4_PageControlID55783_ControlDiv" class="ControlDiv">
          <div id="ctl00_ctl00_bph_c4_PageControlID55783_MarkupDiv" class="Markup"><!-- Ads -->
            <style type="text/css">
              .install_app {
                position: relative;
                margin-top: 5em;
              }

              .install_app a {
                width: 140px;
                height: 44px;
                background: transparent;
                display: inline-block;
                border: 2px solid transparent;
                border-radius: 6px;
              }

              .install_app a:hover {
                border-color: orange;
              }

              .install_app .button-ios {
                position: absolute;
                top: 130px;
                left: 14px;
              }

              .install_app .button-android {
                position: absolute;
                top: 185px;
                left: 14px;
              }
            </style>
            <div class="install_app">
              <img src="/sites/49/images/home/mock/App-small.jpg" width="170" height="490" alt="Planets" usemap="#planetmap">
              <a class="button-ios" alt="IOS Application" href="//itunes.apple.com/th/app/cheapflightnow/id589503131?mt=8" target="_blank"></a>
              <a class="button-android" alt="Android Application" href="//play.google.com/store/apps/details?id=com.tds.cfnv2" target="_blank"></a>
            </div>
          </div>
        </div>
      </div>
      <div id="ctl00_ctl00_bph_c5_PageControlID55784_ControlDiv" class="ControlDiv">
        <div id="ctl00_ctl00_bph_c5_PageControlID55784_MarkupDiv" class="Markup"><!-- Events Deals -->
          <div class="event-deals">
            <div id="slide-viewport" class="carousel slide" data-ride="carousel">
              <div class="carousel-inner" role="listbox">
                <div class="item active">
                  <div class="carousel-caption group-viewport">
                    <div class="col-sm-2 col-md-2">
                      <div class="box-list x1" style="background-image: url('/Sites/49/images/home/viewport/vp1.jpg');">
                        <a href="/FamilyTravel">
                <i class="glyphicon glyphicon-search"></i>
                <div class="list-inline">
                  <h5>Family Travel</h5>
                </div>
              </a>
                      </div>
                    </div>
                    <div class="col-sm-2 col-md-2">
                      <div class="box-list x1" style="background-image: url('/Sites/49/images/home/viewport/vp2.jpg');">
                        <a href="/SeniorTravel">
                <i class="glyphicon glyphicon-search"></i>
                <div class="list-inline">
                  <h5>Senior Travel</h5>
                </div>
              </a>
                      </div>
                    </div>
                    <div class="col-sm-2 col-md-2">
                      <div class="box-list x1" style="background-image: url('/Sites/49/images/home/viewport/vp3.jpg');">
                        <a href="/LastMinuteTravel">
                <i class="glyphicon glyphicon-search"></i>
                <div class="list-inline">
                  <h5>Last Minute Travel</h5>
                </div>
              </a>
                      </div>
                    </div>
                    <div class="col-sm-2 col-md-2">
                      <div class="box-list x1" style="background-image: url('/Sites/49/images/home/viewport/vp4.jpg');">
                        <a href="/RomanticTravel">
                <i class="glyphicon glyphicon-search"></i>
                <div class="list-inline">
                  <h5>Romantic Travel</h5>
                </div>
              </a>
                      </div>
                    </div>
                    <div class="col-sm-2 col-md-2">
                      <div class="box-list x1" style="background-image: url('/Sites/49/images/home/viewport/vp5.jpg');">
                        <a href="/HolidayTravel">
                <i class="glyphicon glyphicon-search"></i>
                <div class="list-inline">
                  <h5>Holiday Travel</h5>
                </div>
              </a>
                      </div>
                    </div>
                    <div class="col-sm-2 col-md-2">
                      <div class="box-list x1" style="background-image: url('/Sites/49/images/home/viewport/vp6.jpg');">
                        <a href="/MilitaryTravel">
                <i class="glyphicon glyphicon-search"></i>
                <div class="list-inline">
                  <h5>Military Travel</h5>
                </div>
              </a>
                      </div>
                    </div>
                  </div>
                </div>
                <div class="item">
                  <div class="carousel-caption group-viewport">
                    <div class="col-sm-2 col-md-2">
                      <div class="box-list x1" style="background-image: url('/Sites/49/images/home/viewport/vp7.jpg');">
                        <a href="/StudentTravel">
                <i class="glyphicon glyphicon-search"></i>
                <div class="list-inline">
                  <h5>Student Travel</h5>
                </div>
              </a>
                      </div>
                    </div>
                    <div class="col-sm-2 col-md-2">
                      <div class="box-list x1" style="background-image: url('/Sites/49/images/home/viewport/vp8.jpg');">
                        <a href="/WeekendGetaways">
                <i class="glyphicon glyphicon-search"></i>
                <div class="list-inline">
                  <h5>Weekend Travel</h5>
                </div>
              </a>
                      </div>
                    </div>
                    <div class="col-sm-2 col-md-2">
                      <div class="box-list x1" style="background-image: url('/Sites/49/images/home/viewport/vp9.jpg');">
                        <a href="/SeasonalTravel">
                <i class="glyphicon glyphicon-search"></i>
                <div class="list-inline">
                  <h5>Seasonal Travel</h5>
                </div>
              </a>
                      </div>
                    </div>
                    <div class="col-sm-2 col-md-2">
                      <div class="box-list x1" style="background-image: url('/Sites/49/images/home/viewport/vp10.jpg');">
                        <a href="/GroupTravel">
                <i class="glyphicon glyphicon-search"></i>
                <div class="list-inline">
                  <h5>Group Travel</h5>
                </div>
              </a>
                      </div>
                    </div>
                    <div class="col-sm-2 col-md-2">
                      <div class="box-list x1" style="background-image: url('/Sites/49/images/home/viewport/vp11.jpg');">
                        <a href="/FirstClassTravel">
                <i class="glyphicon glyphicon-search"></i>
                <div class="list-inline">
                  <h5>First Class Travel</h5>
                </div>
              </a>
                      </div>
                    </div>
                    <div class="col-sm-2 col-md-2">
                      <div class="box-list x1" style="background-image: url('/Sites/49/images/home/viewport/vp12.jpg');">
                        <a href="/BusinessClassTravel">
                <i class="glyphicon glyphicon-search"></i>
                <div class="list-inline">
                  <h5>Business Class</h5>
                </div>
              </a>
                      </div>
                    </div>
                  </div>
                </div>
              </div>
              <!-- Controls -->
              <!--     <a class="left carousel-control" href="#slide-viewport" role="button" data-slide="prev">
      <i class="fa fa-angle-left" aria-hidden="true"></i>
      </a>
      <a class="right carousel-control" href="#slide-viewport" role="button" data-slide="next">
      <i class="fa fa-angle-right" aria-hidden="true"></i>
      </a>
      -->
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
  <div class="container" style="display: none; ">
    <div id="ctl00_ctl00_bph_c6_PageControlID55785_ControlDiv" class="ControlDiv">
      <div id="ctl00_ctl00_bph_c6_PageControlID55785_MarkupDiv" class="Markup">
        <style type="text/css">
          .install_app_mb {
            z-index: 1007;
            position: relative;
            display: flex;
            justify-content: space-between;
            width: 100%;
            left: 0;
            top: 0;
            padding: 10px 10px 5px;
            background: #d7f0ff;
            box-shadow: 0 3px 3px -2px rgba(0, 0, 0, 0.15);
            -moz-box-shadow: 0 3px 3px -2px rgba(0, 0, 0, 0.15);
            -webkit-box-shadow: 0 3px 3px -2px rgba(0, 0, 0, 0.15);
          }

          .install_app_mb.affix {
            top: 0;
            width: 100%;
            z-index: 101;
            position: fixed;
          }

          .install_app_mb>button {
            padding-right: 10px;
            cursor: pointer;
          }

          .install_app_mb .app_logo {
            content: '';
            background: url(/sites/49/images/home/app_logo.png) no-repeat;
            background-size: 100% auto;
            display: inline-block;
            height: 70px;
            width: 70px;
          }

          .install_app_mb .app_detail {
            width: 75%;
            text-align: left;
            padding-left: 15px;
          }

          .install_app_mb .app_detail ul {
            color: black;
            font-size: 14px;
          }

          .install_app_mb .app_detail ul li {
            display: inline-block;
          }

          .install_app_mb .app_detail ul li:last-child {
            display: block;
          }

          .install_app_mb .app_detail ul li:first-child {
            font-weight: bold;
            display: block;
          }

          .install_app_mb .app_detail .star {
            color: #fbd109;
          }

          .install_app_mb .app_detail .btn {
            background: #FFF;
            border: 1px solid #94bbe4;
            color: #2471c3;
            margin: 5px 0;
            cursor: pointer;
            font-size: 14px;
            padding: 5px 10px;
            box-shadow: 0 1px 5px #f1f1f1;
          }

          @media (min-width: 768px) {
            .install_app_mb {
              display: none;
            }
          }
        </style>
        <div class="install_app_mb affix-top" style="display:none;" data-spy="affix" data-offset-top="50" data-offset-bottom="50">
          <button type="button" class="close" data-dismiss="alert" aria-label="Close">
            <span aria-hidden="true">×</span>
          </button>
          <div class="app_logo"></div>
          <div class="app_detail">
            <ul>
              <li>Free CheapFlightNow App</li>
              <li class="star">
                <i class="fa fa-star" aria-hidden="true"></i>
                <i class="fa fa-star" aria-hidden="true"></i>
                <i class="fa fa-star" aria-hidden="true"></i>
                <i class="fa fa-star" aria-hidden="true"></i>
                <i class="fa fa-star-half-o" aria-hidden="true"></i>
              </li>
              <li></li>
              <li>
                <!--<button type="button" class="btn" href="/" >Open in app</button>-->
                <a id="download" class="btn" target="_blank" href="//play.google.com/store/apps/details?id=com.tds.cfnv2"> Open in app</a>
              </li>
            </ul>
          </div>
        </div>
        <script>
          var download = document.getElementById('download');
          if (!!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform)) {
            download.href = "//itunes.apple.com/th/app/cheapflightnow/id589503131?mt=8"
          } else {
            download.href = "//play.google.com/store/apps/details?id=com.tds.cfnv2";
          }

          function SetCookie() {
            var date = new Date();
            date.setTime(date.getTime() + (3 * 24 * 60 * 60 * 1000));
            $.cookie('showApp', '1', {
              expires: date
            });
          }
          $(document).ready(function() {
            if ($(window).width() <= 767) {
              if ($.cookie('showApp') != undefined && $.cookie('showApp') == '1') {
                $('.install_app_mb').hide();
              } else {
                $('.install_app_mb').show();
                SetCookie();
              }
            }
          });
        </script>
      </div>
    </div>
    <div id="ctl00_ctl00_bph_c7_PageControlID55786_ControlDiv" class="ControlDiv">
      <div id="ctl00_ctl00_bph_c7_PageControlID55786_MarkupDiv" class="Markup"><!--
Start of DoubleClick Floodlight Tag: Please do not remove
Activity name of this tag: CFN Front
URL of the webpage where the tag is expected to be placed: http://www.travelguidesfree.com
This tag must be placed between the <body> and </body> tags, as close as possible to the opening tag.
Creation Date: 12/17/2013
-->
        <script type="text/javascript">
          var axel = Math.random() + "";
          var a = axel * 10000000000000;
          document.write('<iframe src="//4317642.fls.doubleclick.net/activityi;src=4317642;type=invmedia;cat=5lhfnytl;ord=' + a + '?" width="1" height="1" frameborder="0" style="display:none"></iframe>');
        </script><iframe src="//4317642.fls.doubleclick.net/activityi;src=4317642;type=invmedia;cat=5lhfnytl;ord=7573991300433.114?" width="1" height="1" frameborder="0" style="display:none"></iframe>
        <!--script type="text/javascript">
        (function(p,u,s,h){
            p._pcq=p._pcq||[];
            p._pcq.push(['_currentTime',Date.now()]);
            s=u.createElement('script');
            s.type='text/javascript';
            s.async=true;
            s.src='https://cdn.pushcrew.com/js/2c6968cdb6a8a6aaa183c3770b15ed5b.js';
            h=u.getElementsByTagName('script')[0];
            h.parentNode.insertBefore(s,h);
        })(window,document);
</script-->
        <noscript>
          <iframe src="//4317642.fls.doubleclick.net/activityi;src=4317642;type=invmedia;cat=5lhfnytl;ord=1?" width="1" height="1" frameborder="0" style="display:none"></iframe>
        </noscript>
        <!-- End of DoubleClick Floodlight Tag: Please do not remove -->
      </div>
    </div>
    <div id="ctl00_ctl00_bph_c10_PageControlID55789_ControlDiv" class="ControlDiv">
      <div id="ctl00_ctl00_bph_c10_PageControlID55789_MarkupDiv" class="Markup">
        <script>
          // Support Multi-city tab
          $(document).ready(function() {
            $("input[id*='Type_2']").click(function() {
              window.location.href = '/home_multicity';
              return false;
            });
            $("input[id*='Type_2']").addClass('hidden-xs');
            $("input[id*='Type_2']").next().addClass('hidden-xs');
          });
        </script>
      </div>
    </div>
  </div>
  <!-- *********** ↑↑↑↑ NEW CONTENT ↑↑↑↑ *********** -->
  <!-- *********** â†"â†"â†"â†" NEW FOOTER â†"â†"â†"â†" *********** -->
  <div class="cfn-footer">
    <div class="ft-top">
      <div class="container">
        <!-- Control -->
        <div id="ctl00_ctl00_bph_f1_PageControlID51504_ControlDiv" class="ControlDiv">
          <div id="ctl00_ctl00_bph_f1_PageControlID51504_MarkupDiv" class="Markup">
            <div class="left">
              <div class="title">Cheapflightnow Hot Link</div>
              <div class="block">
                <div>For assistance or to <br> book by phone:</div>
                <div><a href="tel:+1 858-256-7198">+1 858-256-7198</a></div>
                <div>Open 24 Hours Every Day</div>
              </div>
            </div>
            <div class="right">
              <div class="block">
                <ul>
                  <li class="title">Traveler Help Tools</li>
                  <li><a target="_blank" href="/ContactUs">Contact Us</a></li>
                  <li><a target="_blank" href="/reservationstatus">My Reservation</a></li>
                  <li><a target="_blank" href="/faq">FAQ</a></li>
                  <li><a target="_blank" href="//www.travelerhelpdesk.com/CreditCardAuthorizationForm.pdf">Credit Card Authorization Form</a></li>
                  <li><a target="_blank" href="/Sitemaps">Site Map</a></li>
                </ul>
              </div>
              <div class="block">
                <ul>
                  <li class="title">Book</li>
                  <li><a href="/">Cheap Flights</a></li>
                  <li><a target="_blank" href="//www.hotelwiz.com/?mic=2m8u17j">Cheap Hotels</a></li>
                  <li><a target="_blank" href="/cars">Cheap Car Rentals</a></li>
                  <li><a target="_blank" href="//packages.cheapflightnow.com/vp/home/?refid=5316">Cheap Vacations</a></li>
                  <li><a target="_blank" href="/flightgrouprates">Group Travel</a></li>
                </ul>
              </div>
              <div class="block">
                <ul>
                  <li class="title">Travel Deals</li>
                  <li><a target="_blank" href="/airfares-sale">Airfares Sale</a></li>
                  <li><a target="_blank" href="/BusinessClassTravel">Business Class Travel</a></li>
                  <li><a target="_blank" href="/cheap-tickets">Cheap Tickets</a></li>
                  <li><a target="_blank" href="/domestic-flights">Domestic Flights</a></li>
                  <li><a target="_blank" href="/FirstClassTravel">First Class Travel</a></li>
                  <li><a target="_blank" href="/international-flights">International Flight</a></li>
                </ul>
              </div>
              <div class="block block-group">
                <ul>
                  <li class="title">Travel Tools</li>
                  <li><a target="_blank" href="/AirlinesContact">Airline Contact</a></li>
                  <li><a target="_blank" href="/AirportCode">Airport City Codes</a></li>
                </ul>
                <ul>
                  <li class="title">Legal</li>
                  <li><a target="_blank" href="/TermsOfUse">Terms of Use</a></li>
                  <li><a target="_blank" href="/PrivacyPolicy">Privacy Policy</a></li>
                  <li><a target="_blank" href="/CookiePolicy">Cookie Policy</a></li>
                </ul>
                <div class="download-app visible-lg">
                  <a target="_blank" href="//play.google.com/store/apps/details?id=com.tds.cfnv2">
                <i class="fa fa-android" aria-hidden="true"></i>
                <span>Downloadon the <strong>Google play</strong></span>
            </a>
                  <a target="_blank" href="//itunes.apple.com/cn/app/cheapflightnow/id589503131?l=en&amp;mt=8">
                <i class="fa fa-apple" aria-hidden="true"></i>
                <span>Download on the <strong>App Store</strong></span>
            </a>
                </div>
              </div>
              <div class="block">
                <ul>
                  <li><a target="_blank" href="//www.facebook.com/CheapFlightNow"><i class="fa fa-facebook"></i></a></li>
                  <li><a target="_blank" href="//twitter.com/CFN_Travel"><i class="fa fa-twitter"></i></a></li>
                  <!-- <li><a target="_blank" href="//plus.google.com/113085412920934184893/posts"><i class="fa fa-google-plus"></i></a></li>
            <li><a target="_blank" href="//blog.cheapflightnow.com"><i class="fa fa-rss"></i></a></li>
            -->
                </ul>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
    <div class="ft-bottom">
      <div class="container">
        <!-- Control -->
        <div id="ctl00_ctl00_bph_f2_PageControlID51505_ControlDiv" class="ControlDiv">
          <div id="ctl00_ctl00_bph_f2_PageControlID51505_MarkupDiv" class="Markup">
            <div class="text-group-2">
              <p>* The coupon offer is on our agency service fees only. This discount may vary based on the agency service fees charged for a particular ticket, and the value of discount will be up to the amount of the agency service fees charged for
                a transaction unless otherwise noted. You must use the coupon code at checkout to redeem this offer. This offer is time sensitive and may be revised or discontinued without notice. Prices are quoted in US Dollars. Fares quoted are
                valid for round trip airfare, including taxes and fees. Prices advertised are valid at the time of being published and change frequently without notice.</p>
              <p>Cheapflightnow guards your privacy and security. We're certified by GeoTrust. © <span id="year-footer">2021</span>
                <script type="text/javascript">
                  (function() {
                    document.getElementById("year-footer").innerHTML = new Date().getFullYear();
                  })();
                </script> Cheapflightnow.com All rights reserved. CST#: 2103435-70. Registration as a seller of travel in California does not constitute the State's approval.
              </p>
              <img src="/Sites/49/images/v2/trust.gif" alt="">
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
  <div id="ctl00_ctl00_bph_f4_PageControlID51519_ControlDiv" class="ControlDiv">
    <div id="ctl00_ctl00_bph_f4_PageControlID51519_MarkupDiv" class="Markup"><!-- BEGIN AD.NET PHONE TRACK -->
      <script type="text/javascript" src="//pnapi0.invoca.net/0/pnapi_integration.js"></script>
      <script type="text/javascript" src="//cdn.invoca.solutions/js/solutions-1.2.min.js"></script>
      <script type="text/javascript">
        if (path == 'ad') {
          var doit = false;
          if (/[?&]anid=/.test(location.search)) {
            doit = true;
            var d = new Date();
            d.setTime(d.getTime() + (1 * 60 * 60 * 1000));
            var expires = "expires=" + d.toUTCString();
            document.cookie = "adnet_phone=true;" + expires + ";path=/";
          } else if (document.cookie.includes("adnet_phone")) {
            doit = true;
          }
          if (doit) {
            var elems = document.getElementsByTagName("A");
            var numberCounts = {};
            var re = /888-453-7435/;
            for (var i = 0; i < elems.length; i++) {
              if (elems[i].innerText != "" && elems[i].innerText.search(re) > -1) {
                elems[i].classList.add("adNetNumber");
              }
            }
            Solutions.PNAPI.integration({
              networkId: 1185,
              numberSelector: ".adNetNumber",
              params: ["sid", "said", "keyword"],
              defaultCampaignId: "rr_232929"
            });
          }
        }
      </script>
      <!-- END AD.NET PHONE TRACK -->
      <script type="text/javascript">
        var usi_installed = 0;

        function USI_installCode() {
          if (usi_installed == 0) {
            usi_installed = 1;
            var USI_headID = document.getElementsByTagName("head")[0];
            var USI_installID = document.createElement('script');
            USI_installID.type = 'text/javascript';
            USI_installID.src = '//www.upsellit.com/active/smartfares.jsp';
            USI_headID.appendChild(USI_installID);
          }
        }
        if (window.addEventListener) {
          window.addEventListener('load', USI_installCode, true);
        } else if (window.attachEvent) {
          window.attachEvent('onload', USI_installCode);
        } else {
          USI_installCode();
        }
        setTimeout("USI_installCode()", 10000);
      </script>
      <!-- Begin Call Tracking Code -->
      <!-- Omit http from path to ensure protocol is same as current request -->
      <script src="//js3.invoca.net/3/integration.js"></script>
      <script type="text/javascript">
        if (path == 'ls') {
          Invoca.advertiser_integration = {
            id: '117235'
          };
        }
      </script>
      <!-- End Call Tracking Code -->
      <!-- Perfect Audience -->
      <script type="text/javascript">
        (function() {
          window._pa = window._pa || {};
          // _pa.orderId = "myOrderId"; // OPTIONAL: attach unique conversion identifier to conversions
          // _pa.revenue = "19.99"; // OPTIONAL: attach dynamic purchase values to conversions
          _pa.productId = "Flight"; // OPTIONAL: Include product ID for use with dynamic ads
          var pa = document.createElement('script');
          pa.type = 'text/javascript';
          pa.async = true;
          pa.src = ('https:' == document.location.protocol ? 'https:' : 'http:') + "//tag.marinsm.com/serve/5c122611e5bdcdb710000020.js";
          var s = document.getElementsByTagName('script')[0];
          s.parentNode.insertBefore(pa, s);
        })();
      </script>
      <!-- Perfect Audience End -->
    </div>
  </div>
  <div id="ctl00_ctl00_bph_f4_PageControlID52729_ControlDiv" visable="false">
    <link rel="stylesheet" type="text/css" href="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.0.3/cookieconsent.min.css">
    <script src="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.0.3/cookieconsent.min.js"></script>
    <script>
      window.addEventListener('load', function() {
        window.cookieconsent.initialise({
          'palette': {
            'popup': {
              'background': '#000000',
              'text': '#ffffff'
            },
            'button': {
              'background': '#f1d600',
              'text': '#000000'
            }
          },
          'theme': 'classic',
          'position': 'bottom-left',
          'content': {
            'message': 'We use cookies for technical, analytical and marketing purposes. By continuing to use the website, you agree to our Cookie Policy.',
            'dismiss': 'Got it!',
            'link': 'Learn More',
            'href': '/CookiePolicy',
          },
          'law': {
            'regionalLaw': false,
            'countryCode': 'DE'
          },
          'location': false
        })
      });
    </script>
  </div>
  <!-- *********** ↑↑↑↑ NEW FOOTER ↑↑↑↑ *********** -->
  <div>
    <div id="ctl00_ctl00_bph_admin_Debug" class="Debug">
      <!--  IP: 216.131.114.217
 SiteID: 49
 SystemSiteID: 199
 -->
      <script type="text/javascript">
        var SEOURL = '/';
        var advancePurchase = 1;
        var localRegion = '';
        $(document).ready(function() {
          $.datepicker.setDefaults($.datepicker.regional[localRegion]);
        });
        var SiteID = 49;
        var SystemSiteID = 199;
        var PageID = 7731;
        var SessionID = 57649382;
        var ActivityURL = '//activity.lbftravel.com/api/';
        var CaptureActivity = false;
        var CaptureInput = false;
        var UseLocalStorage = false;
        var DisplayPhone = true;
        var DisplayLocalPhone = false;
        var CountryCode = 'DE';
        var CountryName = 'Germany';
        var CultureID = '1';
      </script>
      <script type="text/javascript">
        //<![CDATA[
        (function() {
          function riskifiedBeaconLoad() {
            var store_domain = 'lbftravel.com';
            var session_id = '5764938221100684327';
            var url = ('https:' == document.location.protocol ? 'https://' : 'http://') + "beacon.riskified.com?shop=" + store_domain + "&sid=" + session_id;
            var s = document.createElement('script');
            s.type = 'text/javascript';
            s.async = true;
            s.src = url;
            var x = document.getElementsByTagName('script')[0];
            x.parentNode.insertBefore(s, x);
          }
          if (window.attachEvent) window.attachEvent('onload', riskifiedBeaconLoad)
          else window.addEventListener('load', riskifiedBeaconLoad, false);
        })();
        //]]> 
      </script>
    </div>
    <div id="ctl00_ctl00_bph_admin_JSBodyBundle"></div>
  </div>
  <script src="/scripts/jquery-ui-touch-punch.js" type="text/javascript"></script>
  <script src="/scripts/i18n/jquery-ui-i18n.min.js" type="text/javascript"></script>
  <script src="/js/initauto.4.31.min.js" type="text/javascript"></script>
  <script src="/scripts/bootstrap.min.js"></script>
  <script src="/scripts/respond.min.js"></script>
  <script src="/scripts/jquery.bootstrap-touchspin.min.js"></script>
  <script>
    if (navigator.userAgent.match(/IEMobile\/10\.0/)) {
      var msViewportStyle = document.createElement('style')
      msViewportStyle.appendChild(document.createTextNode('@-ms-viewport{width:auto!important}'))
      document.querySelector('head').appendChild(msViewportStyle)
    }
  </script>
  <script type="text/javascript">
    //<![CDATA[
    var Page_Validators = new Array(document.getElementById("ctl00_ctl00_bph_c1_PageControlID55779_OrigCity0_Req1"), document.getElementById("ctl00_ctl00_bph_c1_PageControlID55779_OrigCity0_Cus1"), document.getElementById(
      "ctl00_ctl00_bph_c1_PageControlID55779_DestCity0_Req1"), document.getElementById("ctl00_ctl00_bph_c1_PageControlID55779_DestCity0_Cus1"), document.getElementById("ctl00_ctl00_bph_c1_PageControlID55779_Date0Req"), document.getElementById(
      "ctl00_ctl00_bph_c1_PageControlID55779_Date1Req"), document.getElementById("ctl00_ctl00_bph_c1_PageControlID55779_Date1Com"));
    //]]>
  </script>
  <script type="text/javascript">
    //<![CDATA[
    var ctl00_ctl00_bph_c1_PageControlID55779_OrigCity0_Req1 = document.all ? document.all["ctl00_ctl00_bph_c1_PageControlID55779_OrigCity0_Req1"] : document.getElementById("ctl00_ctl00_bph_c1_PageControlID55779_OrigCity0_Req1");
    ctl00_ctl00_bph_c1_PageControlID55779_OrigCity0_Req1.controltovalidate = "ctl00_ctl00_bph_c1_PageControlID55779_OrigCity0_City";
    ctl00_ctl00_bph_c1_PageControlID55779_OrigCity0_Req1.focusOnError = "t";
    ctl00_ctl00_bph_c1_PageControlID55779_OrigCity0_Req1.errormessage = "Enter three letter airport code or type city name to select airport code.";
    ctl00_ctl00_bph_c1_PageControlID55779_OrigCity0_Req1.display = "Dynamic";
    ctl00_ctl00_bph_c1_PageControlID55779_OrigCity0_Req1.validationGroup = "RoundTrip";
    ctl00_ctl00_bph_c1_PageControlID55779_OrigCity0_Req1.evaluationfunction = "RequiredFieldValidatorEvaluateIsValid";
    ctl00_ctl00_bph_c1_PageControlID55779_OrigCity0_Req1.initialvalue = "City or Airport Code";
    var ctl00_ctl00_bph_c1_PageControlID55779_OrigCity0_Cus1 = document.all ? document.all["ctl00_ctl00_bph_c1_PageControlID55779_OrigCity0_Cus1"] : document.getElementById("ctl00_ctl00_bph_c1_PageControlID55779_OrigCity0_Cus1");
    ctl00_ctl00_bph_c1_PageControlID55779_OrigCity0_Cus1.controltovalidate = "ctl00_ctl00_bph_c1_PageControlID55779_OrigCity0_City";
    ctl00_ctl00_bph_c1_PageControlID55779_OrigCity0_Cus1.focusOnError = "t";
    ctl00_ctl00_bph_c1_PageControlID55779_OrigCity0_Cus1.errormessage = "CustomValidator";
    ctl00_ctl00_bph_c1_PageControlID55779_OrigCity0_Cus1.display = "Dynamic";
    ctl00_ctl00_bph_c1_PageControlID55779_OrigCity0_Cus1.validationGroup = "RoundTrip";
    ctl00_ctl00_bph_c1_PageControlID55779_OrigCity0_Cus1.evaluationfunction = "CustomValidatorEvaluateIsValid";
    var ctl00_ctl00_bph_c1_PageControlID55779_DestCity0_Req1 = document.all ? document.all["ctl00_ctl00_bph_c1_PageControlID55779_DestCity0_Req1"] : document.getElementById("ctl00_ctl00_bph_c1_PageControlID55779_DestCity0_Req1");
    ctl00_ctl00_bph_c1_PageControlID55779_DestCity0_Req1.controltovalidate = "ctl00_ctl00_bph_c1_PageControlID55779_DestCity0_City";
    ctl00_ctl00_bph_c1_PageControlID55779_DestCity0_Req1.focusOnError = "t";
    ctl00_ctl00_bph_c1_PageControlID55779_DestCity0_Req1.errormessage = "Enter three letter airport code or type city name to select airport code.";
    ctl00_ctl00_bph_c1_PageControlID55779_DestCity0_Req1.display = "Dynamic";
    ctl00_ctl00_bph_c1_PageControlID55779_DestCity0_Req1.validationGroup = "RoundTrip";
    ctl00_ctl00_bph_c1_PageControlID55779_DestCity0_Req1.evaluationfunction = "RequiredFieldValidatorEvaluateIsValid";
    ctl00_ctl00_bph_c1_PageControlID55779_DestCity0_Req1.initialvalue = "City or Airport Code";
    var ctl00_ctl00_bph_c1_PageControlID55779_DestCity0_Cus1 = document.all ? document.all["ctl00_ctl00_bph_c1_PageControlID55779_DestCity0_Cus1"] : document.getElementById("ctl00_ctl00_bph_c1_PageControlID55779_DestCity0_Cus1");
    ctl00_ctl00_bph_c1_PageControlID55779_DestCity0_Cus1.controltovalidate = "ctl00_ctl00_bph_c1_PageControlID55779_DestCity0_City";
    ctl00_ctl00_bph_c1_PageControlID55779_DestCity0_Cus1.focusOnError = "t";
    ctl00_ctl00_bph_c1_PageControlID55779_DestCity0_Cus1.errormessage = "CustomValidator";
    ctl00_ctl00_bph_c1_PageControlID55779_DestCity0_Cus1.display = "Dynamic";
    ctl00_ctl00_bph_c1_PageControlID55779_DestCity0_Cus1.validationGroup = "RoundTrip";
    ctl00_ctl00_bph_c1_PageControlID55779_DestCity0_Cus1.evaluationfunction = "CustomValidatorEvaluateIsValid";
    var ctl00_ctl00_bph_c1_PageControlID55779_Date0Req = document.all ? document.all["ctl00_ctl00_bph_c1_PageControlID55779_Date0Req"] : document.getElementById("ctl00_ctl00_bph_c1_PageControlID55779_Date0Req");
    ctl00_ctl00_bph_c1_PageControlID55779_Date0Req.controltovalidate = "ctl00_ctl00_bph_c1_PageControlID55779_Date0";
    ctl00_ctl00_bph_c1_PageControlID55779_Date0Req.errormessage = "Departure date has to be at least 1 day in the future.";
    ctl00_ctl00_bph_c1_PageControlID55779_Date0Req.display = "Dynamic";
    ctl00_ctl00_bph_c1_PageControlID55779_Date0Req.validationGroup = "RoundTrip";
    ctl00_ctl00_bph_c1_PageControlID55779_Date0Req.evaluationfunction = "RequiredFieldValidatorEvaluateIsValid";
    ctl00_ctl00_bph_c1_PageControlID55779_Date0Req.initialvalue = "";
    var ctl00_ctl00_bph_c1_PageControlID55779_Date1Req = document.all ? document.all["ctl00_ctl00_bph_c1_PageControlID55779_Date1Req"] : document.getElementById("ctl00_ctl00_bph_c1_PageControlID55779_Date1Req");
    ctl00_ctl00_bph_c1_PageControlID55779_Date1Req.controltovalidate = "ctl00_ctl00_bph_c1_PageControlID55779_Date1";
    ctl00_ctl00_bph_c1_PageControlID55779_Date1Req.errormessage = "Departure date has to be at least 1 day in the future.";
    ctl00_ctl00_bph_c1_PageControlID55779_Date1Req.display = "Dynamic";
    ctl00_ctl00_bph_c1_PageControlID55779_Date1Req.validationGroup = "RoundTrip";
    ctl00_ctl00_bph_c1_PageControlID55779_Date1Req.evaluationfunction = "RequiredFieldValidatorEvaluateIsValid";
    ctl00_ctl00_bph_c1_PageControlID55779_Date1Req.initialvalue = "";
    var ctl00_ctl00_bph_c1_PageControlID55779_Date1Com = document.all ? document.all["ctl00_ctl00_bph_c1_PageControlID55779_Date1Com"] : document.getElementById("ctl00_ctl00_bph_c1_PageControlID55779_Date1Com");
    ctl00_ctl00_bph_c1_PageControlID55779_Date1Com.controltovalidate = "ctl00_ctl00_bph_c1_PageControlID55779_Date1";
    ctl00_ctl00_bph_c1_PageControlID55779_Date1Com.errormessage = "Return date is before departure date.";
    ctl00_ctl00_bph_c1_PageControlID55779_Date1Com.display = "Dynamic";
    ctl00_ctl00_bph_c1_PageControlID55779_Date1Com.validationGroup = "RoundTrip";
    ctl00_ctl00_bph_c1_PageControlID55779_Date1Com.type = "Date";
    ctl00_ctl00_bph_c1_PageControlID55779_Date1Com.dateorder = "mdy";
    ctl00_ctl00_bph_c1_PageControlID55779_Date1Com.cutoffyear = "2029";
    ctl00_ctl00_bph_c1_PageControlID55779_Date1Com.century = "2000";
    ctl00_ctl00_bph_c1_PageControlID55779_Date1Com.evaluationfunction = "CompareValidatorEvaluateIsValid";
    ctl00_ctl00_bph_c1_PageControlID55779_Date1Com.controltocompare = "ctl00_ctl00_bph_c1_PageControlID55779_Date0";
    ctl00_ctl00_bph_c1_PageControlID55779_Date1Com.controlhookup = "ctl00_ctl00_bph_c1_PageControlID55779_Date0";
    ctl00_ctl00_bph_c1_PageControlID55779_Date1Com.operator = "GreaterThanEqual";
    //]]>
  </script>
  <script type="text/javascript">
    function Pops() {
      if ($('.CompareCheckBox input:checked').val() == 'on') {
        if ($('#ctl00_ctl00_bph_c1_PageControlID55779_Type :radio[value=1]:checked').val() == '1') {
          popundertab('http://www.compareyourfare.com/results.aspx?cid=2k4qblu&sectioncode=1&type=1&orig=' + $('#ctl00_ctl00_bph_c1_PageControlID55779_OrigCity1_City').val() + '&dest=' + $('#ctl00_ctl00_bph_c1_PageControlID55779_DestCity1_City')
          .val() + '&departdate=' + $.datepicker.formatDate('mm/dd/yy', $('#ctl00_ctl00_bph_c1_PageControlID55779_Date2').datepicker('getDate')) + '&returndate=' + $.datepicker.formatDate('mm/dd/yy', $(
            '#ctl00_ctl00_bph_c1_PageControlID55779_Date2').datepicker('getDate')) + '&travelers=' + Math.abs(parseInt($('#ctl00_ctl00_bph_c1_PageControlID55779_Adult').val()) + parseInt($('#ctl00_ctl00_bph_c1_PageControlID55779_Child').val()) +
            parseInt($('#ctl00_ctl00_bph_c1_PageControlID55779_Teen').val())).toString(), 'cyf');
        } else if ($('#ctl00_ctl00_bph_c1_PageControlID55779_Type :radio[value=2]:checked').val() == '2') {
          popundertab('http://www.compareyourfare.com/results.aspx?cid=2k4qblu&sectioncode=1&type=2&orig=' + $('#ctl00_ctl00_bph_c1_PageControlID55779_OrigCity0_City').val() + '&dest=' + $('#ctl00_ctl00_bph_c1_PageControlID55779_DestCity0_City')
          .val() + '&departdate=' + $.datepicker.formatDate('mm/dd/yy', $('#ctl00_ctl00_bph_c1_PageControlID55779_Date0').datepicker('getDate')) + '&returndate=' + $.datepicker.formatDate('mm/dd/yy', $(
            '#ctl00_ctl00_bph_c1_PageControlID55779_Date1').datepicker('getDate')) + '&travelers=' + Math.abs(parseInt($('#ctl00_ctl00_bph_c1_PageControlID55779_Adult').val()) + parseInt($('#ctl00_ctl00_bph_c1_PageControlID55779_Child').val()) +
            parseInt($('#ctl00_ctl00_bph_c1_PageControlID55779_Teen').val())).toString(), 'cyf');
        }
      }
    }
    var popcall = 0;
  </script>
  <script type="text/javascript"
    src="https://px.steelhousemedia.com/st?ga_tracking_id=UA-46784561-1&amp;ga_client_id=1674598301.1633535319&amp;shpt=&amp;ga_info=%7B%22status%22%3A%22OK%22%2C%22ga_tracking_id%22%3A%22UA-46784561-1%22%2C%22ga_client_id%22%3A%221674598301.1633535319%22%2C%22shpt%22%3A%22%22%2C%22dcm_cid%22%3A%221674598301.1633535319%22%2C%22dcm_gid%22%3A%221078313784.1633535319%22%2C%22execution_workflow%22%3A%7B%22iteration%22%3A1%2C%22getTrackingIdByGA%22%3A%22FAILED%22%2C%22getTrackingIdByOther1%22%3A%22FAILED%22%2C%22getTrackingIdByOther2%22%3A%22OK%22%2C%22getClientIdByGA%22%3A%22OK%22%2C%22shpt%22%3A%22OK%22%2C%22dcm_gid%22%3A%22OK%22%7D%7D&amp;dcm_cid=1674598301.1633535319&amp;dcm_gid=1078313784.1633535319&amp;dxver=4.0.0&amp;shaid=22733&amp;plh=https%3A%2F%2Fwww.cheapflightnow.com%2F%3F&amp;cb=67134896488602650&amp;shadditional=&amp;shpic=0">
  </script>
  <script type="text/javascript" src="https://ww.steelhousemedia.com/gs"></script>
  <script type="text/javascript"
    src="https://px.steelhousemedia.com/st?ga_tracking_id=UA-46784561-1&amp;ga_client_id=1674598301.1633535319&amp;shpt=&amp;ga_info=%7B%22status%22%3A%22OK%22%2C%22ga_tracking_id%22%3A%22UA-46784561-1%22%2C%22ga_client_id%22%3A%221674598301.1633535319%22%2C%22shpt%22%3A%22%22%2C%22dcm_cid%22%3A%221674598301.1633535319%22%2C%22dcm_gid%22%3A%221078313784.1633535319%22%2C%22execution_workflow%22%3A%7B%22iteration%22%3A1%2C%22getTrackingIdByGA%22%3A%22FAILED%22%2C%22getTrackingIdByOther1%22%3A%22FAILED%22%2C%22getTrackingIdByOther2%22%3A%22OK%22%2C%22getClientIdByGA%22%3A%22OK%22%2C%22shpt%22%3A%22OK%22%2C%22dcm_gid%22%3A%22OK%22%7D%7D&amp;dcm_cid=1674598301.1633535319&amp;dcm_gid=1078313784.1633535319&amp;dxver=4.0.0&amp;shaid=22733&amp;plh=https%3A%2F%2Fwww.cheapflightnow.com%2F%3F&amp;shadditional=&amp;shpic=0&amp;cb=1633535319921844&amp;shguid=e8bcced5-fa9f-34cc-93d5-0639c67406cd&amp;shgts=1633535320609">
  </script>
  <script type="text/javascript">
    //<![CDATA[
    var Page_ValidationActive = false;
    if (typeof(ValidatorOnLoad) == "function") {
      ValidatorOnLoad();
    }

    function ValidatorOnSubmit() {
      if (Page_ValidationActive) {
        return ValidatorCommonOnSubmit();
      } else {
        return true;
      }
    }
    document.getElementById('ctl00_ctl00_bph_c1_PageControlID55779_OrigCity0_Req1').dispose = function() {
      Array.remove(Page_Validators, document.getElementById('ctl00_ctl00_bph_c1_PageControlID55779_OrigCity0_Req1'));
    }
    document.getElementById('ctl00_ctl00_bph_c1_PageControlID55779_OrigCity0_Cus1').dispose = function() {
      Array.remove(Page_Validators, document.getElementById('ctl00_ctl00_bph_c1_PageControlID55779_OrigCity0_Cus1'));
    }
    document.getElementById('ctl00_ctl00_bph_c1_PageControlID55779_DestCity0_Req1').dispose = function() {
      Array.remove(Page_Validators, document.getElementById('ctl00_ctl00_bph_c1_PageControlID55779_DestCity0_Req1'));
    }
    document.getElementById('ctl00_ctl00_bph_c1_PageControlID55779_DestCity0_Cus1').dispose = function() {
      Array.remove(Page_Validators, document.getElementById('ctl00_ctl00_bph_c1_PageControlID55779_DestCity0_Cus1'));
    }
    document.getElementById('ctl00_ctl00_bph_c1_PageControlID55779_Date0Req').dispose = function() {
      Array.remove(Page_Validators, document.getElementById('ctl00_ctl00_bph_c1_PageControlID55779_Date0Req'));
    }
    document.getElementById('ctl00_ctl00_bph_c1_PageControlID55779_Date1Req').dispose = function() {
      Array.remove(Page_Validators, document.getElementById('ctl00_ctl00_bph_c1_PageControlID55779_Date1Req'));
    }
    document.getElementById('ctl00_ctl00_bph_c1_PageControlID55779_Date1Com').dispose = function() {
      Array.remove(Page_Validators, document.getElementById('ctl00_ctl00_bph_c1_PageControlID55779_Date1Com'));
    }
    //]]>
  </script>
</form>

Text Content

We use cookies for technical, analytical and marketing purposes. By continuing
to use the website, you agree to our Cookie Policy. Learn More
Got it!


 * My Reservation
 * Customer Support
 * Live Help?

 * 
 * 
   

Call Now for Unpublished Rates :

+1 858-256-7198

Call Now for Unpublished Rates :

+1 858-256-7198

×


CALL NOW TO GET UNPULISHED FARES FROM OUR PROFESSIONAL TRAVEL EXPERTS.

×


CALL NOW TO GET UNPULISHED FARES FROM OUR PROFESSIONAL TRAVEL EXPERTS.

×
Planning a Trip in the Next 12 Months?
Flight Prices Slashed
Up to 50% Off Flight Deals
Only Available on the Phone
858-256-7198
CALL NOW
Toggle navigation
 * Flights
 * Hotels
 * Cars
 * Cruises
 * Events
 * Groups


+1 858-256-7198

Call Us Toll-Free For Lowest Fares

Round TripOne WayMulti-City
From Enter three letter airport code or type city name to select airport code.
CustomValidator

To Enter three letter airport code or type city name to select airport code.
CustomValidator
Depart: Departure date has to be at least 1 day in the future.
Returns Departure date has to be at least 1 day in the future. Return date is
before departure date.
Search +/- 3 days for lowest fares

Adults
(18+) 1 2 3 4 5 6 7 8 9

Teens
(12-17) 0 1 2 3 4 5 6 7 8 9

Children
(2-11) 0 1 2 3 4 5 6 7 8 9

Lap Infants
(<2) 0 1 2 3 4 5 6 7 8 9
Passengers:
1 Adults, 0 Children
 * Adults
   (18+)
   -+
 * Teens
   (12-17)
   -+
 * Children
   (2-11)
   -+
 * Lap Infants
   (<2)
   -+
 * Done

Class Economy Business First Class


Group Booking
+1 858-256-7198

Call Now for Unpublished Rates


CHEAPEST FLIGHTS FROM UNITED STATES

 * 
 * perPerth
 * start from
   
   $1185

 * 
 * mexMexico City
 * start from
   
   $356

 * 
 * miaMiami
 * start from
   
   $105

 * 
 * lasLas Vegas
 * start from
   
   $91

 * 
 * bneBrisbane
 * start from
   
   $967

 * 
 * melMelbourne
 * start from
   
   $913


TOP AIRLINES

 * LGB
 * 
 * SFO
 * JetBlue Airways
 * $76

 * IAD
 * 
 * BOS
 * SPIRIT AIRLINES
 * $106

 * JFK
 * 
 * IAD
 * JetBlue Airways
 * $112

 * FLL
 * 
 * MSY
 * SPIRIT AIRLINES
 * $120

 * FLL
 * 
 * CHS
 * JetBlue Airways
 * $121

 * PHX
 * 
 * SAT
 * FRONTIER AIRLINES
 * $126



FAMILY TRAVEL

SENIOR TRAVEL

LAST MINUTE TRAVEL

ROMANTIC TRAVEL

HOLIDAY TRAVEL

MILITARY TRAVEL

STUDENT TRAVEL

WEEKEND TRAVEL

SEASONAL TRAVEL

GROUP TRAVEL

FIRST CLASS TRAVEL

BUSINESS CLASS

×

 * Free CheapFlightNow App
 * 
 * 
 * Open in app



Cheapflightnow Hot Link
For assistance or to
book by phone:
+1 858-256-7198
Open 24 Hours Every Day
 * Traveler Help Tools
 * Contact Us
 * My Reservation
 * FAQ
 * Credit Card Authorization Form
 * Site Map

 * Book
 * Cheap Flights
 * Cheap Hotels
 * Cheap Car Rentals
 * Cheap Vacations
 * Group Travel

 * Travel Deals
 * Airfares Sale
 * Business Class Travel
 * Cheap Tickets
 * Domestic Flights
 * First Class Travel
 * International Flight

 * Travel Tools
 * Airline Contact
 * Airport City Codes

 * Legal
 * Terms of Use
 * Privacy Policy
 * Cookie Policy

Downloadon the Google play Download on the App Store
 * 
 * 
   

* The coupon offer is on our agency service fees only. This discount may vary
based on the agency service fees charged for a particular ticket, and the value
of discount will be up to the amount of the agency service fees charged for a
transaction unless otherwise noted. You must use the coupon code at checkout to
redeem this offer. This offer is time sensitive and may be revised or
discontinued without notice. Prices are quoted in US Dollars. Fares quoted are
valid for round trip airfare, including taxes and fees. Prices advertised are
valid at the time of being published and change frequently without notice.

Cheapflightnow guards your privacy and security. We're certified by GeoTrust. ©
2021 Cheapflightnow.com All rights reserved. CST#: 2103435-70. Registration as a
seller of travel in California does not constitute the State's approval.







Feedback