var galleryTemplate = true; avaDebug = true; /** * Global */ AvaCart.Callbacks.global = { callback: function callback() { AvaCart.PageStructure.initialize(); /* ========================================================================== SELECT PAGE LAYOUT ========================================================================== */ // AvaCart.Layouts.layout1.initialize(); // AvaCart.Layouts.layout2.initialize(); AvaCart.Layouts.layout3.initialize(); // AvaCart.Layouts.layout4.initialize(); // AvaCart.Layouts.layout5.initialize(); AvaCart.Widgets.selectBoxes.before = function () { $('#payment option[value="1"]').html(function (i, text) { return text.replace('/Eurocard', ''); }); }; AvaCart.Widgets.selectBoxes.initialize(); AvaCart.Widgets.validateMandatoryFields.initialize(); AvaCart.Widgets.hotline.initialize({ placeholder: '.top-info', HOTLINE: avaHotline.HOTLINE, // SUPPORT: avaHotline.SUPPORT, phone: avaHotline.phones[0], // showLanguageInHeader: avaPage.isCheckoutPage // display language only on Checkout Page showLanguageInHeader: false }); AvaCart.Widgets.logo.initialize({ placeholder: '.site-branding', link: typeof omniture_vars !== 'undefined' && typeof omniture_vars.VENDOR_URL !== 'undefined' ? omniture_vars.VENDOR_URL : null, image: typeof omniture_vars !== 'undefined' && typeof omniture_vars.VENDOR_LOGO !== 'undefined' ? omniture_vars.VENDOR_LOGO : '//www.avangate.com/resources/en/general/logo.png' }); AvaCart.Widgets.cartSteps.before = function () { $('#subheader > .container > .row').prepend('
'); }; AvaCart.Widgets.cartSteps.initialize({ placeholder: '.cart-steps', steps: { 1: { url: 'cart.php', label: __order_steps.STEP_1 !== undefined ? __order_steps.STEP_1 : 'Shopping Cart', page: 'cart' }, 2: { url: 'checkout.php', label: __order_steps.STEP_2 !== undefined ? __order_steps.STEP_2 : 'Billing Informations', page: 'checkout' }, 3: { url: 'verify.php', label: __order_steps.STEP_3 !== undefined ? __order_steps.STEP_3 : 'Confirmation and Payment', page: 'verify' }, 4: { url: 'finish.php', label: __order_steps.STEP_4 !== undefined ? __order_steps.STEP_4 : 'Order finished', page: 'finish' } }, // startFromStep : 2, showOnPages: ['cart', 'checkout', 'verify', 'finish'], // removeSteps : ['2'], showLabelsOnTop: false, colorCheckedSteps: true, colorCurrenStep: false, barStyle: 'solid', // layout: 'default' // AVAILABLE OPTIONS: [default, preset-1, preset-2, preset-3, preset-4, preset-5] // layout: 'preset-1' // AVAILABLE OPTIONS: [default, preset-1, preset-2, preset-3, preset-4, preset-5] // layout: 'preset-2' // AVAILABLE OPTIONS: [default, preset-1, preset-2, preset-3, preset-4, preset-5] // layout: 'preset-3' // AVAILABLE OPTIONS: [default, preset-1, preset-2, preset-3, preset-4, preset-5] layout: 'preset-4' // AVAILABLE OPTIONS: [default, preset-1, preset-2, preset-3, preset-4, preset-5] // layout: 'preset-5' // AVAILABLE OPTIONS: [default, preset-1, preset-2, preset-3, preset-4, preset-5] }); AvaCart.Widgets.fieldHelper.initialize({ placeholder: '#order__autorenewal__container .tooltip', iconClass: 'icon-info-circled', contentTypeHtml: true, wrapContent: false, mirrored: false, contentHtml: $('#order__autorenewal__container').find('.tooltip_content').html() }); AvaCart.Widgets.inputWrappers.initialize({ inputSelector: 'input[type=text]' }); AvaCart.Widgets.inputWrappers.initialize({ inputSelector: '.select-box' }); AvaCart.Widgets.hideFields.initialize(); } }; /** * Checkout Graceful Degradation */ AvaCart.Callbacks.checkoutGracefulDegradation = { condition: avaPage.current === 'checkout' && !(avaPage.browser === 'ie-7' || avaPage.browser === 'ie-8' || avaPage.browser === 'ie-9'), callback: function callback() { AvaCart.Widgets.creditCard.before = function () { $('#order__checkout__billing__payoptions__table').after(''); $('.credit-card-container').hide(); if (_t_settings && _t_settings.accepted_cards && _t_settings.accepted_cards.hasOwnProperty($('#payment').val())) { $('.credit-card-container').show(); } }; AvaCart.Widgets.creditCard.initialize({ placeholder: '.credit-card-container' }); } }; /** * Checkout Page */ AvaCart.Callbacks.checkoutPage = { condition: avaPage.current === 'checkout', callback: function callback() { AvaCart.Widgets.productsInShoppingCart.initialize({ layout: 'default' // AVAILABLE OPTIONS: [default, layout-1, layout-2] }); AvaCart.Widgets.fieldHelper.initialize({ placeholder: '#tiCVV', iconClass: 'icon-info-circled', contentTypeHtml: true, wrapContent: false, mirrored: false, contentHtml: '' }); AvaCart.Widgets.secureCheckout.settings.content = ''; AvaCart.Widgets.secureCheckout.before = function () { $('.order__checkout').append(''); }; AvaCart.Widgets.secureCheckout.initialize({ placeholder: '#order__secure__checkout', headerLabel: __order_widgets.SECURE_CHECKOUT, headerIconClass: 'icon-lock', showBoxTitle: false, showTitle: true, showBox: true, showSealsAfterText: true, avangateLogoSrc: '/images/merchant/67caec8041b2d689a5035d3bf441c34c/avangate-logo.png' }); AvaCart.Widgets.whoisAvangate.initialize({ placeholder: '#order__secure__checkout .secure-checkout-content-text', orderProcessedBy: __order_processed_by, vendorLogoSrc: typeof omniture_vars !== 'undefined' && typeof omniture_vars.VENDOR_LOGO !== 'undefined' ? omniture_vars.VENDOR_LOGO : '/images/merchant/a86aa57ade541fdb14f856fabd997a5e/header-odin-plesk-logo-white.png' }); AvaCart.Widgets.crossSelling.before = function () { $('#order__cart__contents').after(''); }; AvaCart.Widgets.crossSelling.initialize({ // showProductDescription: true, crossSellProducts: cross_sell_products, displayCurrency: omniture_vars.DISPLAY_CURRENCY, billingCurrency: omniture_vars.BILLING_CURRENCY, placeholder: '#order__cross__sell__contents', maxProductsPerRow: 3, headerLabel: $('.order__crossselling_title').text() || 'We also recommend', addToCartLabel: $('.cross__sell__delimiter input.submit-button').val() || (typeof __order_widgets !== 'undefined' ? __order_widgets.ADD_LABEL : 'Add to cart') || 'Add to cart', omnitureVars: omniture_vars, // widgetClass: 'col-md-3', layout: 'display-vertical' // AVAILABLE OPTIONS: [display-horizontal, display-vertical, condensed] // layout: 'display-vertical' // AVAILABLE OPTIONS: [display-horizontal, display-vertical, condensed] // layout: 'display-horizontal' // AVAILABLE OPTIONS: [display-horizontal, display-vertical, condensed] }); AvaCart.Widgets.customSortedCurrencies(); AvaCart.Widgets.quantityField.initialize(); AvaCart.Widgets.purchaseAsGift.initialize(); AvaCart.Widgets.downloadInsuranceService.initialize({ addLabel: __order_widgets.ADD_LABEL || 'Add to cart' }); AvaCart.Widgets.customBackupCDDesign.initialize({ addLabel: __order_widgets.ADD_LABEL || 'Add to cart' }); AvaCart.Widgets.coupon.before = function () { $('#order__coupon__input').after(''); }; AvaCart.Widgets.coupon.initialize({ placeholder: '.coupon-placeholder' }); AvaCart.Widgets.removeProducts.initialize(); AvaCart.Widgets.paymentOptions.before = function () { if (avaPage.isExpressCheckout) { $('#order__checkout__billing__payoptions__table').before(' '); $('.payment-options-secure-wrapper').append($('#payment-options-secure-box').clone()); $('#order__checkout__form__billing__currency').after($('#boleto_fiscal_code_fields')); } else { $('#order__checkout__billing__payoptions__table').before(''); } $('#tiCNumber').after(''); }; AvaCart.Widgets.paymentOptions.paymentOptionChangeCallback = function () { $('.credit-card-container').hide(); if (_t_settings && _t_settings.accepted_cards && _t_settings.accepted_cards.hasOwnProperty($('#payment').val())) { $('.credit-card-container').show(); $('.cvv-image-helper').show(); $('.amex-cvv-image-helper').hide(); if ($('#payment').val() === '4') { // AMEX CARD $('.cvv-image-helper').hide(); $('.amex-cvv-image-helper').show(); } } }; AvaCart.Widgets.paymentOptions.initialize({ placeholder: '.payment-options-wrapper', autoDetectIconsPlaceholder: '.payment-options-card-icons', spriteSrc: avaPage.isExpressCheckout ? STATIC_CONTENT_DEFAULT_SERVER_ROOT_URL + '/images/merchant/67caec8041b2d689a5035d3bf441c34c/payment-options-sprite-32.css' : STATIC_CONTENT_DEFAULT_SERVER_ROOT_URL + '/images/merchant/67caec8041b2d689a5035d3bf441c34c/payment-options-sprite-48.css', spriteClass: avaPage.isExpressCheckout ? 'sprite-32' : 'sprite-48', // spriteSrc: STATIC_CONTENT_DEFAULT_SERVER_ROOT_URL + '/images/merchant/67caec8041b2d689a5035d3bf441c34c/payment-options-sprite-64.css', // spriteClass: 'sprite-new sprite-64', cardIconsPlaceholder: '.payment-options-card-icons', cardIconsSpriteSrc: STATIC_CONTENT_DEFAULT_SERVER_ROOT_URL + '/images/merchant/67caec8041b2d689a5035d3bf441c34c/payment-options-sprite-32.css', cardIconsSpriteClass: 'sprite-32', // === CUSTOM LAYOUTS === /* -------- Settings for 'layout-1': -------- */ // radioOptions: 0, // showRadioButtons: false, // showIcons: true, /* -------- Settings for 'layout-2': -------- */ // radioOptions: 2, // showRadioButtons: false, // showIcons: true, /* -------- Settings for 'layout-3': -------- */ radioOptions: 3, showRadioButtons: true, showIcons: avaPage.isExpressCheckout, /* -------- Settings for 'layout-4': -------- */ // showRadioButtons: true, // showLabels: false, // showIcons: true, // spriteSrc: STATIC_CONTENT_DEFAULT_SERVER_ROOT_URL + '/images/merchant/6531b32f8d02fece98ff36a64a7c8260/avacart-payment-options-sprite-32.css', // spriteClass: 'sprite-32', /* -------- Settings for 'layout-5': -------- */ // radioOptions: 3, // showIconsAfterText: true, // showRadioButtons: false, // cardIconsSpriteSrc: STATIC_CONTENT_DEFAULT_SERVER_ROOT_URL + '/images/merchant/6531b32f8d02fece98ff36a64a7c8260/avacart-payment-options-sprite-32.css', // cardIconsSpriteClass: 'sprite-32', // -------- Settings for 'layout-6': -------- // radioOptions: 3, // showRadioButtons: true, // showIcons: true, // showIconsAfterText: !avaPage.isExpressCheckout, // showGroupedCardsIcons: false, // insertPaymentInputsAfterSelectedPaymentOption: true, // moveBillingCurrencyAfterPaymentOptionsSelect: !avaPage.isExpressCheckout, // showMovedBillingCurrencyLabel: false, layout: 'layout-3', selectOtherMethods: function () { if (typeof __order_widgets === 'undefined') { return 'Select other methods'; } return __order_widgets.SELECT_OTHER_METHODS || 'Select other methods'; }(), cardsLabel: function () { if (typeof __order_widgets === 'undefined') { return 'Credit Cards'; } return __order_widgets.CREDIT_CARDS || 'Credit Cards'; }() }); AvaCart.Widgets.moveInstallmentsSelector.initialize(); AvaCart.Widgets.customPlaceholders.initialize({ placeholderSupport: 'placeholder' in document.createElement('input') }); custom_person_company({ design: 'radio' }); AvaCart.Widgets.removeUnnecessarySpacing.initialize(); } }; /** * Trial Page */ AvaCart.Callbacks.trialPage = { condition: avaPage.current === 'checkout' && $('body').hasClass('page-trial'), callback: function callback() { if (typeof _t_settings !== 'undefined' && _t_settings.trial_is_free) { AvaCart.Widgets.fieldHelper.initialize({ placeholder: '.products-total-trial', iconClass: 'icon-info-circled', contentTypeHtml: true, wrapContent: true, mirrored: true, contentHtml: $('.tooltip-trial-price .tooltip_content').text(), widgetClass: 'trial-price-popup' }); } } }; /** * Verify Page */ AvaCart.Callbacks.verifyPage = { condition: avaPage.isVerifyPage, callback: function callback() { AvaCart.Widgets.inputWrappers.initialize({ inputSelector: '.order__text__label', widgetClass: 'icon-top' }); AvaCart.Widgets.crossSelling.before = function () { $('#order__crosssell').hide().after(''); }; AvaCart.Widgets.crossSelling.initialize({ // showProductDescription: true, crossSellProducts: cross_sell_products, displayCurrency: omniture_vars.DISPLAY_CURRENCY, billingCurrency: omniture_vars.BILLING_CURRENCY, placeholder: '#order__cross__sell__contents', maxProductsPerRow: 3, headerLabel: $('.order__crossselling_title').text() || 'We also recommend', addToCartLabel: $('.cross__sell__delimiter input.submit-button').val() || (typeof __order_widgets !== 'undefined' ? __order_widgets.ADD_LABEL : 'Add to cart') || 'Add to cart', omnitureVars: omniture_vars, // widgetClass: 'col-md-3', layout: 'display-vertical' // AVAILABLE OPTIONS: [display-horizontal, display-vertical, condensed] // layout: 'display-vertical' // AVAILABLE OPTIONS: [display-horizontal, display-vertical, condensed] // layout: 'display-horizontal' // AVAILABLE OPTIONS: [display-horizontal, display-vertical, condensed] }); } }; /** * Finish Page */ AvaCart.Callbacks.finishPage = { condition: avaPage.isFinishPage, callback: function callback() { AvaCart.Widgets.inputWrappers.initialize({ inputSelector: '.order__text__label', widgetClass: 'icon-top' }); } }; /** * Thank You Page */ AvaCart.Callbacks.thankYouPage = { condition: avaPage.isFinishPage && $('body').hasClass('page-order-complete'), callback: function callback() { AvaCart.Widgets.crossSelling.before = function () { $('#order__finish__finish__order').after(''); }; AvaCart.Widgets.crossSelling.initialize({ // showProductDescription: true, crossSellProducts: cross_sell_products, displayCurrency: omniture_vars.DISPLAY_CURRENCY, billingCurrency: omniture_vars.BILLING_CURRENCY, placeholder: '#order__cross__sell__contents', maxProductsPerRow: 4, headerLabel: $('.order__crossselling_title').text() || 'We also recommend', addToCartLabel: $('.cross__sell__delimiter input.submit-button').val() || (typeof __order_widgets !== 'undefined' ? __order_widgets.ADD_LABEL : 'Add to cart') || 'Add to cart', omnitureVars: omniture_vars, // widgetClass: 'col-md-3', layout: 'display-horizontal' // AVAILABLE OPTIONS: [display-horizontal, display-vertical] // layout: 'display-horizontal' // AVAILABLE OPTIONS: [display-horizontal, display-vertical] }); } }; /** * Retry FinishPage */ AvaCart.Callbacks.retryFinishPage = { condition: avaPage.isFinishPage && $('body').hasClass('page-order-failed'), callback: function callback() { AvaCart.Widgets.hidePaymentRetryPopupOnSelectorClick.initialize(); } }; jQuery(document).ready(function ($) { AvaCart.initialize(['global', 'checkoutPage', 'trialPage' /*, 'checkoutGracefulDegradation'*/ , 'verifyPage', 'finishPage', 'retryFinishPage', 'thankYouPage']); if (navigator.userAgent.indexOf('Safari') > -1) { AvaCart.Widgets.pagePreloader.initialize({ placeholder: '.page-preloader' }); } //this is intended only for gallery templates //this code triggered based on a variable that is compiled only on release for gallery templates // DO NOT REMOVE:START!!! AvaCart.Utils.trackGalleryTemplate('3', 'Two-column classic checkout'); // DO NOT REMOVE:END!!! }); jQuery(window).on('load', function ($) { AvaCart.Widgets.pagePreloader.initialize({ placeholder: '.page-preloader' }); }); //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlcyI6WyJhdmFfY2FydF9pbml0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBnYWxsZXJ5VGVtcGxhdGUgPSB0cnVlO1xuYXZhRGVidWcgPSB0cnVlO1xuLyoqXHJcbiAqIEdsb2JhbFxyXG4gKi9cblxuQXZhQ2FydC5DYWxsYmFja3MuZ2xvYmFsID0ge1xuICBjYWxsYmFjazogZnVuY3Rpb24gY2FsbGJhY2soKSB7XG4gICAgQXZhQ2FydC5QYWdlU3RydWN0dXJlLmluaXRpYWxpemUoKTtcbiAgICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICAgU0VMRUNUIFBBR0UgTEFZT1VUXHJcbiAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuICAgIC8vICAgICAgICBBdmFDYXJ0LkxheW91dHMubGF5b3V0MS5pbml0aWFsaXplKCk7XG4gICAgLy9cdFx0IEF2YUNhcnQuTGF5b3V0cy5sYXlvdXQyLmluaXRpYWxpemUoKTtcblxuICAgIEF2YUNhcnQuTGF5b3V0cy5sYXlvdXQzLmluaXRpYWxpemUoKTsgLy9cdFx0QXZhQ2FydC5MYXlvdXRzLmxheW91dDQuaW5pdGlhbGl6ZSgpO1xuICAgIC8vXHRcdEF2YUNhcnQuTGF5b3V0cy5sYXlvdXQ1LmluaXRpYWxpemUoKTtcblxuICAgIEF2YUNhcnQuV2lkZ2V0cy5zZWxlY3RCb3hlcy5iZWZvcmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAkKCcjcGF5bWVudCBvcHRpb25bdmFsdWU9XCIxXCJdJykuaHRtbChmdW5jdGlvbiAoaSwgdGV4dCkge1xuICAgICAgICByZXR1cm4gdGV4dC5yZXBsYWNlKCcvRXVyb2NhcmQnLCAnJyk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgQXZhQ2FydC5XaWRnZXRzLnNlbGVjdEJveGVzLmluaXRpYWxpemUoKTtcbiAgICBBdmFDYXJ0LldpZGdldHMudmFsaWRhdGVNYW5kYXRvcnlGaWVsZHMuaW5pdGlhbGl6ZSgpO1xuICAgIEF2YUNhcnQuV2lkZ2V0cy5ob3RsaW5lLmluaXRpYWxpemUoe1xuICAgICAgcGxhY2Vob2xkZXI6ICcudG9wLWluZm8nLFxuICAgICAgSE9UTElORTogYXZhSG90bGluZS5IT1RMSU5FLFxuICAgICAgLy9cdFx0XHRTVVBQT1JUOiBhdmFIb3RsaW5lLlNVUFBPUlQsXG4gICAgICBwaG9uZTogYXZhSG90bGluZS5waG9uZXNbMF0sXG4gICAgICAvL1x0XHRcdHNob3dMYW5ndWFnZUluSGVhZGVyOiBhdmFQYWdlLmlzQ2hlY2tvdXRQYWdlIC8vIGRpc3BsYXkgbGFuZ3VhZ2Ugb25seSBvbiBDaGVja291dCBQYWdlXG4gICAgICBzaG93TGFuZ3VhZ2VJbkhlYWRlcjogZmFsc2VcbiAgICB9KTtcbiAgICBBdmFDYXJ0LldpZGdldHMubG9nby5pbml0aWFsaXplKHtcbiAgICAgIHBsYWNlaG9sZGVyOiAnLnNpdGUtYnJhbmRpbmcnLFxuICAgICAgbGluazogdHlwZW9mIG9tbml0dXJlX3ZhcnMgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBvbW5pdHVyZV92YXJzLlZFTkRPUl9VUkwgIT09ICd1bmRlZmluZWQnID8gb21uaXR1cmVfdmFycy5WRU5ET1JfVVJMIDogbnVsbCxcbiAgICAgIGltYWdlOiB0eXBlb2Ygb21uaXR1cmVfdmFycyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIG9tbml0dXJlX3ZhcnMuVkVORE9SX0xPR08gIT09ICd1bmRlZmluZWQnID8gb21uaXR1cmVfdmFycy5WRU5ET1JfTE9HTyA6ICcvL3d3dy5hdmFuZ2F0ZS5jb20vcmVzb3VyY2VzL2VuL2dlbmVyYWwvbG9nby5wbmcnXG4gICAgfSk7XG5cbiAgICBBdmFDYXJ0LldpZGdldHMuY2FydFN0ZXBzLmJlZm9yZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICQoJyNzdWJoZWFkZXIgPiAuY29udGFpbmVyID4gLnJvdycpLnByZXBlbmQoJzxkaXYgY2xhc3M9XCJjYXJ0LXN0ZXBzXCI+PC9kaXY+Jyk7XG4gICAgfTtcblxuICAgIEF2YUNhcnQuV2lkZ2V0cy5jYXJ0U3RlcHMuaW5pdGlhbGl6ZSh7XG4gICAgICBwbGFjZWhvbGRlcjogJy5jYXJ0LXN0ZXBzJyxcbiAgICAgIHN0ZXBzOiB7XG4gICAgICAgIDE6IHtcbiAgICAgICAgICB1cmw6ICdjYXJ0LnBocCcsXG4gICAgICAgICAgbGFiZWw6IF9fb3JkZXJfc3RlcHMuU1RFUF8xICE9PSB1bmRlZmluZWQgPyBfX29yZGVyX3N0ZXBzLlNURVBfMSA6ICdTaG9wcGluZyBDYXJ0JyxcbiAgICAgICAgICBwYWdlOiAnY2FydCdcbiAgICAgICAgfSxcbiAgICAgICAgMjoge1xuICAgICAgICAgIHVybDogJ2NoZWNrb3V0LnBocCcsXG4gICAgICAgICAgbGFiZWw6IF9fb3JkZXJfc3RlcHMuU1RFUF8yICE9PSB1bmRlZmluZWQgPyBfX29yZGVyX3N0ZXBzLlNURVBfMiA6ICdCaWxsaW5nIEluZm9ybWF0aW9ucycsXG4gICAgICAgICAgcGFnZTogJ2NoZWNrb3V0J1xuICAgICAgICB9LFxuICAgICAgICAzOiB7XG4gICAgICAgICAgdXJsOiAndmVyaWZ5LnBocCcsXG4gICAgICAgICAgbGFiZWw6IF9fb3JkZXJfc3RlcHMuU1RFUF8zICE9PSB1bmRlZmluZWQgPyBfX29yZGVyX3N0ZXBzLlNURVBfMyA6ICdDb25maXJtYXRpb24gYW5kIFBheW1lbnQnLFxuICAgICAgICAgIHBhZ2U6ICd2ZXJpZnknXG4gICAgICAgIH0sXG4gICAgICAgIDQ6IHtcbiAgICAgICAgICB1cmw6ICdmaW5pc2gucGhwJyxcbiAgICAgICAgICBsYWJlbDogX19vcmRlcl9zdGVwcy5TVEVQXzQgIT09IHVuZGVmaW5lZCA/IF9fb3JkZXJfc3RlcHMuU1RFUF80IDogJ09yZGVyIGZpbmlzaGVkJyxcbiAgICAgICAgICBwYWdlOiAnZmluaXNoJ1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gICAgICAgICAgICAgICAgc3RhcnRGcm9tU3RlcCAgIDogMixcbiAgICAgIHNob3dPblBhZ2VzOiBbJ2NhcnQnLCAnY2hlY2tvdXQnLCAndmVyaWZ5JywgJ2ZpbmlzaCddLFxuICAgICAgLy8gICAgICAgICAgICAgICAgcmVtb3ZlU3RlcHMgICAgIDogWycyJ10sXG4gICAgICBzaG93TGFiZWxzT25Ub3A6IGZhbHNlLFxuICAgICAgY29sb3JDaGVja2VkU3RlcHM6IHRydWUsXG4gICAgICBjb2xvckN1cnJlblN0ZXA6IGZhbHNlLFxuICAgICAgYmFyU3R5bGU6ICdzb2xpZCcsXG4gICAgICAvL1x0XHRcdGxheW91dDogJ2RlZmF1bHQnIC8vIEFWQUlMQUJMRSBPUFRJT05TOiBbZGVmYXVsdCwgcHJlc2V0LTEsIHByZXNldC0yLCBwcmVzZXQtMywgcHJlc2V0LTQsIHByZXNldC01XVxuICAgICAgLy8gICAgICAgICAgICBsYXlvdXQ6ICdwcmVzZXQtMScgLy8gQVZBSUxBQkxFIE9QVElPTlM6IFtkZWZhdWx0LCBwcmVzZXQtMSwgcHJlc2V0LTIsIHByZXNldC0zLCBwcmVzZXQtNCwgcHJlc2V0LTVdXG4gICAgICAvLyAgICAgICAgICAgIGxheW91dDogJ3ByZXNldC0yJyAvLyBBVkFJTEFCTEUgT1BUSU9OUzogW2RlZmF1bHQsIHByZXNldC0xLCBwcmVzZXQtMiwgcHJlc2V0LTMsIHByZXNldC00LCBwcmVzZXQtNV1cbiAgICAgIC8vICAgICAgICAgICAgbGF5b3V0OiAncHJlc2V0LTMnIC8vIEFWQUlMQUJMRSBPUFRJT05TOiBbZGVmYXVsdCwgcHJlc2V0LTEsIHByZXNldC0yLCBwcmVzZXQtMywgcHJlc2V0LTQsIHByZXNldC01XVxuICAgICAgbGF5b3V0OiAncHJlc2V0LTQnIC8vIEFWQUlMQUJMRSBPUFRJT05TOiBbZGVmYXVsdCwgcHJlc2V0LTEsIHByZXNldC0yLCBwcmVzZXQtMywgcHJlc2V0LTQsIHByZXNldC01XVxuICAgICAgLy8gICAgICAgICAgICBsYXlvdXQ6ICdwcmVzZXQtNScgLy8gQVZBSUxBQkxFIE9QVElPTlM6IFtkZWZhdWx0LCBwcmVzZXQtMSwgcHJlc2V0LTIsIHByZXNldC0zLCBwcmVzZXQtNCwgcHJlc2V0LTVdXG5cbiAgICB9KTtcbiAgICBBdmFDYXJ0LldpZGdldHMuZmllbGRIZWxwZXIuaW5pdGlhbGl6ZSh7XG4gICAgICBwbGFjZWhvbGRlcjogJyNvcmRlcl9fYXV0b3JlbmV3YWxfX2NvbnRhaW5lciAudG9vbHRpcCcsXG4gICAgICBpY29uQ2xhc3M6ICdpY29uLWluZm8tY2lyY2xlZCcsXG4gICAgICBjb250ZW50VHlwZUh0bWw6IHRydWUsXG4gICAgICB3cmFwQ29udGVudDogZmFsc2UsXG4gICAgICBtaXJyb3JlZDogZmFsc2UsXG4gICAgICBjb250ZW50SHRtbDogJCgnI29yZGVyX19hdXRvcmVuZXdhbF9fY29udGFpbmVyJykuZmluZCgnLnRvb2x0aXBfY29udGVudCcpLmh0bWwoKVxuICAgIH0pO1xuICAgIEF2YUNhcnQuV2lkZ2V0cy5pbnB1dFdyYXBwZXJzLmluaXRpYWxpemUoe1xuICAgICAgaW5wdXRTZWxlY3RvcjogJ2lucHV0W3R5cGU9dGV4dF0nXG4gICAgfSk7XG4gICAgQXZhQ2FydC5XaWRnZXRzLmlucHV0V3JhcHBlcnMuaW5pdGlhbGl6ZSh7XG4gICAgICBpbnB1dFNlbGVjdG9yOiAnLnNlbGVjdC1ib3gnXG4gICAgfSk7XG4gICAgQXZhQ2FydC5XaWRnZXRzLmhpZGVGaWVsZHMuaW5pdGlhbGl6ZSgpO1xuICB9XG59O1xuLyoqXHJcbiAqIENoZWNrb3V0IEdyYWNlZnVsIERlZ3JhZGF0aW9uXHJcbiAqL1xuXG5BdmFDYXJ0LkNhbGxiYWNrcy5jaGVja291dEdyYWNlZnVsRGVncmFkYXRpb24gPSB7XG4gIGNvbmRpdGlvbjogYXZhUGFnZS5jdXJyZW50ID09PSAnY2hlY2tvdXQnICYmICEoYXZhUGFnZS5icm93c2VyID09PSAnaWUtNycgfHwgYXZhUGFnZS5icm93c2VyID09PSAnaWUtOCcgfHwgYXZhUGFnZS5icm93c2VyID09PSAnaWUtOScpLFxuICBjYWxsYmFjazogZnVuY3Rpb24gY2FsbGJhY2soKSB7XG4gICAgQXZhQ2FydC5XaWRnZXRzLmNyZWRpdENhcmQuYmVmb3JlID0gZnVuY3Rpb24gKCkge1xuICAgICAgJCgnI29yZGVyX19jaGVja291dF9fYmlsbGluZ19fcGF5b3B0aW9uc19fdGFibGUnKS5hZnRlcignPGRpdiBjbGFzcz1cImNyZWRpdC1jYXJkLWNvbnRhaW5lclwiPjwvZGl2PicpO1xuICAgICAgJCgnLmNyZWRpdC1jYXJkLWNvbnRhaW5lcicpLmhpZGUoKTtcblxuICAgICAgaWYgKF90X3NldHRpbmdzICYmIF90X3NldHRpbmdzLmFjY2VwdGVkX2NhcmRzICYmIF90X3NldHRpbmdzLmFjY2VwdGVkX2NhcmRzLmhhc093blByb3BlcnR5KCQoJyNwYXltZW50JykudmFsKCkpKSB7XG4gICAgICAgICQoJy5jcmVkaXQtY2FyZC1jb250YWluZXInKS5zaG93KCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIEF2YUNhcnQuV2lkZ2V0cy5jcmVkaXRDYXJkLmluaXRpYWxpemUoe1xuICAgICAgcGxhY2Vob2xkZXI6ICcuY3JlZGl0LWNhcmQtY29udGFpbmVyJ1xuICAgIH0pO1xuICB9XG59O1xuLyoqXHJcbiAqIENoZWNrb3V0IFBhZ2VcclxuICovXG5cbkF2YUNhcnQuQ2FsbGJhY2tzLmNoZWNrb3V0UGFnZSA9IHtcbiAgY29uZGl0aW9uOiBhdmFQYWdlLmN1cnJlbnQgPT09ICdjaGVja291dCcsXG4gIGNhbGxiYWNrOiBmdW5jdGlvbiBjYWxsYmFjaygpIHtcbiAgICBBdmFDYXJ0LldpZGdldHMucHJvZHVjdHNJblNob3BwaW5nQ2FydC5pbml0aWFsaXplKHtcbiAgICAgIGxheW91dDogJ2RlZmF1bHQnIC8vIEFWQUlMQUJMRSBPUFRJT05TOiBbZGVmYXVsdCwgbGF5b3V0LTEsIGxheW91dC0yXVxuXG4gICAgfSk7XG4gICAgQXZhQ2FydC5XaWRnZXRzLmZpZWxkSGVscGVyLmluaXRpYWxpemUoe1xuICAgICAgcGxhY2Vob2xkZXI6ICcjdGlDVlYnLFxuICAgICAgaWNvbkNsYXNzOiAnaWNvbi1pbmZvLWNpcmNsZWQnLFxuICAgICAgY29udGVudFR5cGVIdG1sOiB0cnVlLFxuICAgICAgd3JhcENvbnRlbnQ6IGZhbHNlLFxuICAgICAgbWlycm9yZWQ6IGZhbHNlLFxuICAgICAgY29udGVudEh0bWw6ICc8aW1nIGNsYXNzPVwiY3Z2LWltYWdlLWhlbHBlclwiIGFsdD1cIlwiIHNyYz1cIicgKyBTVEFUSUNfQ09OVEVOVF9ERUZBVUxUX1NFUlZFUl9ST09UX1VSTCArICcvaW1hZ2VzL21lcmNoYW50LzY3Y2FlYzgwNDFiMmQ2ODlhNTAzNWQzYmY0NDFjMzRjL3NlY3VyaXR5LWNvZGUtYmFjay5wbmdcIi8+PGltZyBjbGFzcz1cImFtZXgtY3Z2LWltYWdlLWhlbHBlclwiIGFsdD1cIlwiIHNyYz1cIicgKyBTVEFUSUNfQ09OVEVOVF9ERUZBVUxUX1NFUlZFUl9ST09UX1VSTCArICcvaW1hZ2VzL21lcmNoYW50LzY3Y2FlYzgwNDFiMmQ2ODlhNTAzNWQzYmY0NDFjMzRjL3NlY3VyaXR5LWNvZGUtZnJvbnQucG5nXCIvPidcbiAgICB9KTtcbiAgICBBdmFDYXJ0LldpZGdldHMuc2VjdXJlQ2hlY2tvdXQuc2V0dGluZ3MuY29udGVudCA9ICcnO1xuXG4gICAgQXZhQ2FydC5XaWRnZXRzLnNlY3VyZUNoZWNrb3V0LmJlZm9yZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICQoJy5vcmRlcl9fY2hlY2tvdXQnKS5hcHBlbmQoJzxsaSBpZD1cIm9yZGVyX19zZWN1cmVfX2NoZWNrb3V0XCIgY2xhc3M9XCJjb2wtbWQtMTJcIj48L2xpPicpO1xuICAgIH07XG5cbiAgICBBdmFDYXJ0LldpZGdldHMuc2VjdXJlQ2hlY2tvdXQuaW5pdGlhbGl6ZSh7XG4gICAgICBwbGFjZWhvbGRlcjogJyNvcmRlcl9fc2VjdXJlX19jaGVja291dCcsXG4gICAgICBoZWFkZXJMYWJlbDogX19vcmRlcl93aWRnZXRzLlNFQ1VSRV9DSEVDS09VVCxcbiAgICAgIGhlYWRlckljb25DbGFzczogJ2ljb24tbG9jaycsXG4gICAgICBzaG93Qm94VGl0bGU6IGZhbHNlLFxuICAgICAgc2hvd1RpdGxlOiB0cnVlLFxuICAgICAgc2hvd0JveDogdHJ1ZSxcbiAgICAgIHNob3dTZWFsc0FmdGVyVGV4dDogdHJ1ZSxcbiAgICAgIGF2YW5nYXRlTG9nb1NyYzogJy9pbWFnZXMvbWVyY2hhbnQvNjdjYWVjODA0MWIyZDY4OWE1MDM1ZDNiZjQ0MWMzNGMvYXZhbmdhdGUtbG9nby5wbmcnXG4gICAgfSk7XG4gICAgQXZhQ2FydC5XaWRnZXRzLndob2lzQXZhbmdhdGUuaW5pdGlhbGl6ZSh7XG4gICAgICBwbGFjZWhvbGRlcjogJyNvcmRlcl9fc2VjdXJlX19jaGVja291dCAuc2VjdXJlLWNoZWNrb3V0LWNvbnRlbnQtdGV4dCcsXG4gICAgICBvcmRlclByb2Nlc3NlZEJ5OiBfX29yZGVyX3Byb2Nlc3NlZF9ieSxcbiAgICAgIHZlbmRvckxvZ29TcmM6IHR5cGVvZiBvbW5pdHVyZV92YXJzICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygb21uaXR1cmVfdmFycy5WRU5ET1JfTE9HTyAhPT0gJ3VuZGVmaW5lZCcgPyBvbW5pdHVyZV92YXJzLlZFTkRPUl9MT0dPIDogJy9pbWFnZXMvbWVyY2hhbnQvYTg2YWE1N2FkZTU0MWZkYjE0Zjg1NmZhYmQ5OTdhNWUvaGVhZGVyLW9kaW4tcGxlc2stbG9nby13aGl0ZS5wbmcnXG4gICAgfSk7XG5cbiAgICBBdmFDYXJ0LldpZGdldHMuY3Jvc3NTZWxsaW5nLmJlZm9yZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICQoJyNvcmRlcl9fY2FydF9fY29udGVudHMnKS5hZnRlcignPGxpIGlkPVwib3JkZXJfX2Nyb3NzX19zZWxsX19jb250ZW50c1wiIGNsYXNzPVwiY3Jvc3NfX3NlbGxfX3Byb2R1Y3RzX19saXN0aW5nIHByb2R1Y3RzIGNvbC1tZC0xMlwiPjwvbGk+Jyk7XG4gICAgfTtcblxuICAgIEF2YUNhcnQuV2lkZ2V0cy5jcm9zc1NlbGxpbmcuaW5pdGlhbGl6ZSh7XG4gICAgICAvLyAgICAgICAgICAgIHNob3dQcm9kdWN0RGVzY3JpcHRpb246IHRydWUsXG4gICAgICBjcm9zc1NlbGxQcm9kdWN0czogY3Jvc3Nfc2VsbF9wcm9kdWN0cyxcbiAgICAgIGRpc3BsYXlDdXJyZW5jeTogb21uaXR1cmVfdmFycy5ESVNQTEFZX0NVUlJFTkNZLFxuICAgICAgYmlsbGluZ0N1cnJlbmN5OiBvbW5pdHVyZV92YXJzLkJJTExJTkdfQ1VSUkVOQ1ksXG4gICAgICBwbGFjZWhvbGRlcjogJyNvcmRlcl9fY3Jvc3NfX3NlbGxfX2NvbnRlbnRzJyxcbiAgICAgIG1heFByb2R1Y3RzUGVyUm93OiAzLFxuICAgICAgaGVhZGVyTGFiZWw6ICQoJy5vcmRlcl9fY3Jvc3NzZWxsaW5nX3RpdGxlJykudGV4dCgpIHx8ICdXZSBhbHNvIHJlY29tbWVuZCcsXG4gICAgICBhZGRUb0NhcnRMYWJlbDogJCgnLmNyb3NzX19zZWxsX19kZWxpbWl0ZXIgaW5wdXQuc3VibWl0LWJ1dHRvbicpLnZhbCgpIHx8ICh0eXBlb2YgX19vcmRlcl93aWRnZXRzICE9PSAndW5kZWZpbmVkJyA/IF9fb3JkZXJfd2lkZ2V0cy5BRERfTEFCRUwgOiAnQWRkIHRvIGNhcnQnKSB8fCAnQWRkIHRvIGNhcnQnLFxuICAgICAgb21uaXR1cmVWYXJzOiBvbW5pdHVyZV92YXJzLFxuICAgICAgLy8gd2lkZ2V0Q2xhc3M6ICdjb2wtbWQtMycsXG4gICAgICBsYXlvdXQ6ICdkaXNwbGF5LXZlcnRpY2FsJyAvLyBBVkFJTEFCTEUgT1BUSU9OUzogW2Rpc3BsYXktaG9yaXpvbnRhbCwgZGlzcGxheS12ZXJ0aWNhbCwgY29uZGVuc2VkXVxuICAgICAgLy8gICAgICAgICAgICBsYXlvdXQ6ICdkaXNwbGF5LXZlcnRpY2FsJyAvLyBBVkFJTEFCTEUgT1BUSU9OUzogW2Rpc3BsYXktaG9yaXpvbnRhbCwgZGlzcGxheS12ZXJ0aWNhbCwgY29uZGVuc2VkXVxuICAgICAgLy9cdFx0XHRsYXlvdXQ6ICdkaXNwbGF5LWhvcml6b250YWwnIC8vIEFWQUlMQUJMRSBPUFRJT05TOiBbZGlzcGxheS1ob3Jpem9udGFsLCBkaXNwbGF5LXZlcnRpY2FsLCBjb25kZW5zZWRdXG5cbiAgICB9KTtcbiAgICBBdmFDYXJ0LldpZGdldHMuY3VzdG9tU29ydGVkQ3VycmVuY2llcygpO1xuICAgIEF2YUNhcnQuV2lkZ2V0cy5xdWFudGl0eUZpZWxkLmluaXRpYWxpemUoKTtcbiAgICBBdmFDYXJ0LldpZGdldHMucHVyY2hhc2VBc0dpZnQuaW5pdGlhbGl6ZSgpO1xuICAgIEF2YUNhcnQuV2lkZ2V0cy5kb3dubG9hZEluc3VyYW5jZVNlcnZpY2UuaW5pdGlhbGl6ZSh7XG4gICAgICBhZGRMYWJlbDogX19vcmRlcl93aWRnZXRzLkFERF9MQUJFTCB8fCAnQWRkIHRvIGNhcnQnXG4gICAgfSk7XG4gICAgQXZhQ2FydC5XaWRnZXRzLmN1c3RvbUJhY2t1cENERGVzaWduLmluaXRpYWxpemUoe1xuICAgICAgYWRkTGFiZWw6IF9fb3JkZXJfd2lkZ2V0cy5BRERfTEFCRUwgfHwgJ0FkZCB0byBjYXJ0J1xuICAgIH0pO1xuXG4gICAgQXZhQ2FydC5XaWRnZXRzLmNvdXBvbi5iZWZvcmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAkKCcjb3JkZXJfX2NvdXBvbl9faW5wdXQnKS5hZnRlcignPGRpdiBjbGFzcz1cImNvdXBvbi1wbGFjZWhvbGRlclwiIC8+Jyk7XG4gICAgfTtcblxuICAgIEF2YUNhcnQuV2lkZ2V0cy5jb3Vwb24uaW5pdGlhbGl6ZSh7XG4gICAgICBwbGFjZWhvbGRlcjogJy5jb3Vwb24tcGxhY2Vob2xkZXInXG4gICAgfSk7XG4gICAgQXZhQ2FydC5XaWRnZXRzLnJlbW92ZVByb2R1Y3RzLmluaXRpYWxpemUoKTtcblxuICAgIEF2YUNhcnQuV2lkZ2V0cy5wYXltZW50T3B0aW9ucy5iZWZvcmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoYXZhUGFnZS5pc0V4cHJlc3NDaGVja291dCkge1xuICAgICAgICAkKCcjb3JkZXJfX2NoZWNrb3V0X19iaWxsaW5nX19wYXlvcHRpb25zX190YWJsZScpLmJlZm9yZSgnPGRpdiBjbGFzcz1cInBheW1lbnQtb3B0aW9ucy13cmFwcGVyLWV4cHJlc3Mgcm93XCI+PGRpdiBjbGFzcz1cInBheW1lbnQtb3B0aW9ucy13cmFwcGVyIGNvbC1tZC0xMlwiPjwvZGl2PjxkaXYgY2xhc3M9XCJwYXltZW50LW9wdGlvbnMtc2VjdXJlLXdyYXBwZXIgY29sLW1kLTEyXCI+PC9kaXY+PC9kaXY+Jyk7XG4gICAgICAgICQoJy5wYXltZW50LW9wdGlvbnMtc2VjdXJlLXdyYXBwZXInKS5hcHBlbmQoJCgnI3BheW1lbnQtb3B0aW9ucy1zZWN1cmUtYm94JykuY2xvbmUoKSk7XG4gICAgICAgICQoJyNvcmRlcl9fY2hlY2tvdXRfX2Zvcm1fX2JpbGxpbmdfX2N1cnJlbmN5JykuYWZ0ZXIoJCgnI2JvbGV0b19maXNjYWxfY29kZV9maWVsZHMnKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAkKCcjb3JkZXJfX2NoZWNrb3V0X19iaWxsaW5nX19wYXlvcHRpb25zX190YWJsZScpLmJlZm9yZSgnPGRpdiBjbGFzcz1cInBheW1lbnQtb3B0aW9ucy13cmFwcGVyXCI+PC9kaXY+Jyk7XG4gICAgICB9XG5cbiAgICAgICQoJyN0aUNOdW1iZXInKS5hZnRlcignPGRpdiBjbGFzcz1cInBheW1lbnQtb3B0aW9ucy1jYXJkLWljb25zXCIgLz4nKTtcbiAgICB9O1xuXG4gICAgQXZhQ2FydC5XaWRnZXRzLnBheW1lbnRPcHRpb25zLnBheW1lbnRPcHRpb25DaGFuZ2VDYWxsYmFjayA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICQoJy5jcmVkaXQtY2FyZC1jb250YWluZXInKS5oaWRlKCk7XG5cbiAgICAgIGlmIChfdF9zZXR0aW5ncyAmJiBfdF9zZXR0aW5ncy5hY2NlcHRlZF9jYXJkcyAmJiBfdF9zZXR0aW5ncy5hY2NlcHRlZF9jYXJkcy5oYXNPd25Qcm9wZXJ0eSgkKCcjcGF5bWVudCcpLnZhbCgpKSkge1xuICAgICAgICAkKCcuY3JlZGl0LWNhcmQtY29udGFpbmVyJykuc2hvdygpO1xuICAgICAgICAkKCcuY3Z2LWltYWdlLWhlbHBlcicpLnNob3coKTtcbiAgICAgICAgJCgnLmFtZXgtY3Z2LWltYWdlLWhlbHBlcicpLmhpZGUoKTtcblxuICAgICAgICBpZiAoJCgnI3BheW1lbnQnKS52YWwoKSA9PT0gJzQnKSB7XG4gICAgICAgICAgLy8gQU1FWCBDQVJEXG4gICAgICAgICAgJCgnLmN2di1pbWFnZS1oZWxwZXInKS5oaWRlKCk7XG4gICAgICAgICAgJCgnLmFtZXgtY3Z2LWltYWdlLWhlbHBlcicpLnNob3coKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBBdmFDYXJ0LldpZGdldHMucGF5bWVudE9wdGlvbnMuaW5pdGlhbGl6ZSh7XG4gICAgICBwbGFjZWhvbGRlcjogJy5wYXltZW50LW9wdGlvbnMtd3JhcHBlcicsXG4gICAgICBhdXRvRGV0ZWN0SWNvbnNQbGFjZWhvbGRlcjogJy5wYXltZW50LW9wdGlvbnMtY2FyZC1pY29ucycsXG4gICAgICBzcHJpdGVTcmM6IGF2YVBhZ2UuaXNFeHByZXNzQ2hlY2tvdXQgPyBTVEFUSUNfQ09OVEVOVF9ERUZBVUxUX1NFUlZFUl9ST09UX1VSTCArICcvaW1hZ2VzL21lcmNoYW50LzY3Y2FlYzgwNDFiMmQ2ODlhNTAzNWQzYmY0NDFjMzRjL3BheW1lbnQtb3B0aW9ucy1zcHJpdGUtMzIuY3NzJyA6IFNUQVRJQ19DT05URU5UX0RFRkFVTFRfU0VSVkVSX1JPT1RfVVJMICsgJy9pbWFnZXMvbWVyY2hhbnQvNjdjYWVjODA0MWIyZDY4OWE1MDM1ZDNiZjQ0MWMzNGMvcGF5bWVudC1vcHRpb25zLXNwcml0ZS00OC5jc3MnLFxuICAgICAgc3ByaXRlQ2xhc3M6IGF2YVBhZ2UuaXNFeHByZXNzQ2hlY2tvdXQgPyAnc3ByaXRlLTMyJyA6ICdzcHJpdGUtNDgnLFxuICAgICAgLy8gc3ByaXRlU3JjOiBTVEFUSUNfQ09OVEVOVF9ERUZBVUxUX1NFUlZFUl9ST09UX1VSTCArICcvaW1hZ2VzL21lcmNoYW50LzY3Y2FlYzgwNDFiMmQ2ODlhNTAzNWQzYmY0NDFjMzRjL3BheW1lbnQtb3B0aW9ucy1zcHJpdGUtNjQuY3NzJyxcbiAgICAgIC8vIHNwcml0ZUNsYXNzOiAnc3ByaXRlLW5ldyBzcHJpdGUtNjQnLFxuICAgICAgY2FyZEljb25zUGxhY2Vob2xkZXI6ICcucGF5bWVudC1vcHRpb25zLWNhcmQtaWNvbnMnLFxuICAgICAgY2FyZEljb25zU3ByaXRlU3JjOiBTVEFUSUNfQ09OVEVOVF9ERUZBVUxUX1NFUlZFUl9ST09UX1VSTCArICcvaW1hZ2VzL21lcmNoYW50LzY3Y2FlYzgwNDFiMmQ2ODlhNTAzNWQzYmY0NDFjMzRjL3BheW1lbnQtb3B0aW9ucy1zcHJpdGUtMzIuY3NzJyxcbiAgICAgIGNhcmRJY29uc1Nwcml0ZUNsYXNzOiAnc3ByaXRlLTMyJyxcbiAgICAgIC8vID09PSBDVVNUT00gTEFZT1VUUyA9PT1cblxuICAgICAgLyogLS0tLS0tLS0gU2V0dGluZ3MgZm9yICdsYXlvdXQtMSc6IC0tLS0tLS0tICovXG4gICAgICAvLyAgICAgICAgICAgIHJhZGlvT3B0aW9uczogMCxcbiAgICAgIC8vICAgICAgICAgICAgc2hvd1JhZGlvQnV0dG9uczogZmFsc2UsXG4gICAgICAvLyAgICAgICAgICAgIHNob3dJY29uczogdHJ1ZSxcblxuICAgICAgLyogLS0tLS0tLS0gU2V0dGluZ3MgZm9yICdsYXlvdXQtMic6IC0tLS0tLS0tICovXG4gICAgICAvLyAgICAgICAgICAgIHJhZGlvT3B0aW9uczogMixcbiAgICAgIC8vICAgICAgICAgICAgc2hvd1JhZGlvQnV0dG9uczogZmFsc2UsXG4gICAgICAvLyAgICAgICAgICAgIHNob3dJY29uczogdHJ1ZSxcblxuICAgICAgLyogLS0tLS0tLS0gU2V0dGluZ3MgZm9yICdsYXlvdXQtMyc6IC0tLS0tLS0tICovXG4gICAgICByYWRpb09wdGlvbnM6IDMsXG4gICAgICBzaG93UmFkaW9CdXR0b25zOiB0cnVlLFxuICAgICAgc2hvd0ljb25zOiBhdmFQYWdlLmlzRXhwcmVzc0NoZWNrb3V0LFxuXG4gICAgICAvKiAtLS0tLS0tLSBTZXR0aW5ncyBmb3IgJ2xheW91dC00JzogLS0tLS0tLS0gKi9cbiAgICAgIC8vICAgICAgICAgICAgc2hvd1JhZGlvQnV0dG9uczogdHJ1ZSxcbiAgICAgIC8vICAgICAgICAgICAgc2hvd0xhYmVsczogZmFsc2UsXG4gICAgICAvLyAgICAgICAgICAgIHNob3dJY29uczogdHJ1ZSxcbiAgICAgIC8vICAgICAgICAgICAgc3ByaXRlU3JjOiBTVEFUSUNfQ09OVEVOVF9ERUZBVUxUX1NFUlZFUl9ST09UX1VSTCArICcvaW1hZ2VzL21lcmNoYW50LzY1MzFiMzJmOGQwMmZlY2U5OGZmMzZhNjRhN2M4MjYwL2F2YWNhcnQtcGF5bWVudC1vcHRpb25zLXNwcml0ZS0zMi5jc3MnLFxuICAgICAgLy8gICAgICAgICAgICBzcHJpdGVDbGFzczogJ3Nwcml0ZS0zMicsXG5cbiAgICAgIC8qIC0tLS0tLS0tIFNldHRpbmdzIGZvciAnbGF5b3V0LTUnOiAtLS0tLS0tLSAqL1xuICAgICAgLy8gICAgICAgICAgICByYWRpb09wdGlvbnM6IDMsXG4gICAgICAvLyAgICAgICAgICAgIHNob3dJY29uc0FmdGVyVGV4dDogdHJ1ZSxcbiAgICAgIC8vICAgICAgICAgICAgc2hvd1JhZGlvQnV0dG9uczogZmFsc2UsXG4gICAgICAvLyAgICAgICAgICAgIGNhcmRJY29uc1Nwcml0ZVNyYzogU1RBVElDX0NPTlRFTlRfREVGQVVMVF9TRVJWRVJfUk9PVF9VUkwgKyAnL2ltYWdlcy9tZXJjaGFudC82NTMxYjMyZjhkMDJmZWNlOThmZjM2YTY0YTdjODI2MC9hdmFjYXJ0LXBheW1lbnQtb3B0aW9ucy1zcHJpdGUtMzIuY3NzJyxcbiAgICAgIC8vICAgICAgICAgICAgY2FyZEljb25zU3ByaXRlQ2xhc3M6ICdzcHJpdGUtMzInLFxuICAgICAgLy8gLS0tLS0tLS0gU2V0dGluZ3MgZm9yICdsYXlvdXQtNic6IC0tLS0tLS0tXG4gICAgICAvLyAgICAgICAgICAgIHJhZGlvT3B0aW9uczogMyxcbiAgICAgIC8vICAgICAgICAgICAgc2hvd1JhZGlvQnV0dG9uczogdHJ1ZSxcbiAgICAgIC8vICAgICAgICAgICAgc2hvd0ljb25zOiB0cnVlLFxuICAgICAgLy8gICAgICAgICAgICBzaG93SWNvbnNBZnRlclRleHQ6ICFhdmFQYWdlLmlzRXhwcmVzc0NoZWNrb3V0LFxuICAgICAgLy8gICAgICAgICAgICBzaG93R3JvdXBlZENhcmRzSWNvbnM6IGZhbHNlLFxuICAgICAgLy8gICAgICAgICAgICBpbnNlcnRQYXltZW50SW5wdXRzQWZ0ZXJTZWxlY3RlZFBheW1lbnRPcHRpb246IHRydWUsXG4gICAgICAvLyAgICAgICAgICAgIG1vdmVCaWxsaW5nQ3VycmVuY3lBZnRlclBheW1lbnRPcHRpb25zU2VsZWN0OiAhYXZhUGFnZS5pc0V4cHJlc3NDaGVja291dCxcbiAgICAgIC8vICAgICAgICAgICAgc2hvd01vdmVkQmlsbGluZ0N1cnJlbmN5TGFiZWw6IGZhbHNlLFxuICAgICAgbGF5b3V0OiAnbGF5b3V0LTMnLFxuICAgICAgc2VsZWN0T3RoZXJNZXRob2RzOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0eXBlb2YgX19vcmRlcl93aWRnZXRzID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIHJldHVybiAnU2VsZWN0IG90aGVyIG1ldGhvZHMnO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIF9fb3JkZXJfd2lkZ2V0cy5TRUxFQ1RfT1RIRVJfTUVUSE9EUyB8fCAnU2VsZWN0IG90aGVyIG1ldGhvZHMnO1xuICAgICAgfSgpLFxuICAgICAgY2FyZHNMYWJlbDogZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodHlwZW9mIF9fb3JkZXJfd2lkZ2V0cyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICByZXR1cm4gJ0NyZWRpdCBDYXJkcyc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gX19vcmRlcl93aWRnZXRzLkNSRURJVF9DQVJEUyB8fCAnQ3JlZGl0IENhcmRzJztcbiAgICAgIH0oKVxuICAgIH0pO1xuICAgIEF2YUNhcnQuV2lkZ2V0cy5tb3ZlSW5zdGFsbG1lbnRzU2VsZWN0b3IuaW5pdGlhbGl6ZSgpO1xuICAgIEF2YUNhcnQuV2lkZ2V0cy5jdXN0b21QbGFjZWhvbGRlcnMuaW5pdGlhbGl6ZSh7XG4gICAgICBwbGFjZWhvbGRlclN1cHBvcnQ6ICdwbGFjZWhvbGRlcicgaW4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKVxuICAgIH0pO1xuICAgIGN1c3RvbV9wZXJzb25fY29tcGFueSh7XG4gICAgICBkZXNpZ246ICdyYWRpbydcbiAgICB9KTtcbiAgICBBdmFDYXJ0LldpZGdldHMucmVtb3ZlVW5uZWNlc3NhcnlTcGFjaW5nLmluaXRpYWxpemUoKTtcbiAgfVxufTtcbi8qKlxyXG4gKiBUcmlhbCBQYWdlXHJcbiAqL1xuXG5BdmFDYXJ0LkNhbGxiYWNrcy50cmlhbFBhZ2UgPSB7XG4gIGNvbmRpdGlvbjogYXZhUGFnZS5jdXJyZW50ID09PSAnY2hlY2tvdXQnICYmICQoJ2JvZHknKS5oYXNDbGFzcygncGFnZS10cmlhbCcpLFxuICBjYWxsYmFjazogZnVuY3Rpb24gY2FsbGJhY2soKSB7XG4gICAgaWYgKHR5cGVvZiBfdF9zZXR0aW5ncyAhPT0gJ3VuZGVmaW5lZCcgJiYgX3Rfc2V0dGluZ3MudHJpYWxfaXNfZnJlZSkge1xuICAgICAgQXZhQ2FydC5XaWRnZXRzLmZpZWxkSGVscGVyLmluaXRpYWxpemUoe1xuICAgICAgICBwbGFjZWhvbGRlcjogJy5wcm9kdWN0cy10b3RhbC10cmlhbCcsXG4gICAgICAgIGljb25DbGFzczogJ2ljb24taW5mby1jaXJjbGVkJyxcbiAgICAgICAgY29udGVudFR5cGVIdG1sOiB0cnVlLFxuICAgICAgICB3cmFwQ29udGVudDogdHJ1ZSxcbiAgICAgICAgbWlycm9yZWQ6IHRydWUsXG4gICAgICAgIGNvbnRlbnRIdG1sOiAkKCcudG9vbHRpcC10cmlhbC1wcmljZSAudG9vbHRpcF9jb250ZW50JykudGV4dCgpLFxuICAgICAgICB3aWRnZXRDbGFzczogJ3RyaWFsLXByaWNlLXBvcHVwJ1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59O1xuLyoqXHJcbiAqIFZlcmlmeSBQYWdlXHJcbiAqL1xuXG5BdmFDYXJ0LkNhbGxiYWNrcy52ZXJpZnlQYWdlID0ge1xuICBjb25kaXRpb246IGF2YVBhZ2UuaXNWZXJpZnlQYWdlLFxuICBjYWxsYmFjazogZnVuY3Rpb24gY2FsbGJhY2soKSB7XG4gICAgQXZhQ2FydC5XaWRnZXRzLmlucHV0V3JhcHBlcnMuaW5pdGlhbGl6ZSh7XG4gICAgICBpbnB1dFNlbGVjdG9yOiAnLm9yZGVyX190ZXh0X19sYWJlbCcsXG4gICAgICB3aWRnZXRDbGFzczogJ2ljb24tdG9wJ1xuICAgIH0pO1xuXG4gICAgQXZhQ2FydC5XaWRnZXRzLmNyb3NzU2VsbGluZy5iZWZvcmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAkKCcjb3JkZXJfX2Nyb3Nzc2VsbCcpLmhpZGUoKS5hZnRlcignPGRpdiBpZD1cIm9yZGVyX19jcm9zc19fc2VsbF9fY29udGVudHNcIiBjbGFzcz1cImNyb3NzX19zZWxsX19wcm9kdWN0c19fbGlzdGluZyBwcm9kdWN0cyBjb2wtbWQtMTJcIj48L2Rpdj4nKTtcbiAgICB9O1xuXG4gICAgQXZhQ2FydC5XaWRnZXRzLmNyb3NzU2VsbGluZy5pbml0aWFsaXplKHtcbiAgICAgIC8vICAgICAgICAgICAgc2hvd1Byb2R1Y3REZXNjcmlwdGlvbjogdHJ1ZSxcbiAgICAgIGNyb3NzU2VsbFByb2R1Y3RzOiBjcm9zc19zZWxsX3Byb2R1Y3RzLFxuICAgICAgZGlzcGxheUN1cnJlbmN5OiBvbW5pdHVyZV92YXJzLkRJU1BMQVlfQ1VSUkVOQ1ksXG4gICAgICBiaWxsaW5nQ3VycmVuY3k6IG9tbml0dXJlX3ZhcnMuQklMTElOR19DVVJSRU5DWSxcbiAgICAgIHBsYWNlaG9sZGVyOiAnI29yZGVyX19jcm9zc19fc2VsbF9fY29udGVudHMnLFxuICAgICAgbWF4UHJvZHVjdHNQZXJSb3c6IDMsXG4gICAgICBoZWFkZXJMYWJlbDogJCgnLm9yZGVyX19jcm9zc3NlbGxpbmdfdGl0bGUnKS50ZXh0KCkgfHwgJ1dlIGFsc28gcmVjb21tZW5kJyxcbiAgICAgIGFkZFRvQ2FydExhYmVsOiAkKCcuY3Jvc3NfX3NlbGxfX2RlbGltaXRlciBpbnB1dC5zdWJtaXQtYnV0dG9uJykudmFsKCkgfHwgKHR5cGVvZiBfX29yZGVyX3dpZGdldHMgIT09ICd1bmRlZmluZWQnID8gX19vcmRlcl93aWRnZXRzLkFERF9MQUJFTCA6ICdBZGQgdG8gY2FydCcpIHx8ICdBZGQgdG8gY2FydCcsXG4gICAgICBvbW5pdHVyZVZhcnM6IG9tbml0dXJlX3ZhcnMsXG4gICAgICAvLyB3aWRnZXRDbGFzczogJ2NvbC1tZC0zJyxcbiAgICAgIGxheW91dDogJ2Rpc3BsYXktdmVydGljYWwnIC8vIEFWQUlMQUJMRSBPUFRJT05TOiBbZGlzcGxheS1ob3Jpem9udGFsLCBkaXNwbGF5LXZlcnRpY2FsLCBjb25kZW5zZWRdXG4gICAgICAvLyAgICAgICAgICAgIGxheW91dDogJ2Rpc3BsYXktdmVydGljYWwnIC8vIEFWQUlMQUJMRSBPUFRJT05TOiBbZGlzcGxheS1ob3Jpem9udGFsLCBkaXNwbGF5LXZlcnRpY2FsLCBjb25kZW5zZWRdXG4gICAgICAvL1x0XHRcdGxheW91dDogJ2Rpc3BsYXktaG9yaXpvbnRhbCcgLy8gQVZBSUxBQkxFIE9QVElPTlM6IFtkaXNwbGF5LWhvcml6b250YWwsIGRpc3BsYXktdmVydGljYWwsIGNvbmRlbnNlZF1cblxuICAgIH0pO1xuICB9XG59O1xuLyoqXHJcbiAqIEZpbmlzaCBQYWdlXHJcbiAqL1xuXG5BdmFDYXJ0LkNhbGxiYWNrcy5maW5pc2hQYWdlID0ge1xuICBjb25kaXRpb246IGF2YVBhZ2UuaXNGaW5pc2hQYWdlLFxuICBjYWxsYmFjazogZnVuY3Rpb24gY2FsbGJhY2soKSB7XG4gICAgQXZhQ2FydC5XaWRnZXRzLmlucHV0V3JhcHBlcnMuaW5pdGlhbGl6ZSh7XG4gICAgICBpbnB1dFNlbGVjdG9yOiAnLm9yZGVyX190ZXh0X19sYWJlbCcsXG4gICAgICB3aWRnZXRDbGFzczogJ2ljb24tdG9wJ1xuICAgIH0pO1xuICB9XG59O1xuLyoqXHJcbiAqIFRoYW5rIFlvdSBQYWdlXHJcbiAqL1xuXG5BdmFDYXJ0LkNhbGxiYWNrcy50aGFua1lvdVBhZ2UgPSB7XG4gIGNvbmRpdGlvbjogYXZhUGFnZS5pc0ZpbmlzaFBhZ2UgJiYgJCgnYm9keScpLmhhc0NsYXNzKCdwYWdlLW9yZGVyLWNvbXBsZXRlJyksXG4gIGNhbGxiYWNrOiBmdW5jdGlvbiBjYWxsYmFjaygpIHtcbiAgICBBdmFDYXJ0LldpZGdldHMuY3Jvc3NTZWxsaW5nLmJlZm9yZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICQoJyNvcmRlcl9fZmluaXNoX19maW5pc2hfX29yZGVyJykuYWZ0ZXIoJzxkaXYgaWQ9XCJvcmRlcl9fY3Jvc3NfX3NlbGxfX2NvbnRlbnRzXCIgY2xhc3M9XCJjcm9zc19fc2VsbF9fcHJvZHVjdHNfX2xpc3RpbmcgcHJvZHVjdHMgY29sLW1kLTEyXCI+PC9kaXY+Jyk7XG4gICAgfTtcblxuICAgIEF2YUNhcnQuV2lkZ2V0cy5jcm9zc1NlbGxpbmcuaW5pdGlhbGl6ZSh7XG4gICAgICAvLyAgICAgICAgICAgIHNob3dQcm9kdWN0RGVzY3JpcHRpb246IHRydWUsXG4gICAgICBjcm9zc1NlbGxQcm9kdWN0czogY3Jvc3Nfc2VsbF9wcm9kdWN0cyxcbiAgICAgIGRpc3BsYXlDdXJyZW5jeTogb21uaXR1cmVfdmFycy5ESVNQTEFZX0NVUlJFTkNZLFxuICAgICAgYmlsbGluZ0N1cnJlbmN5OiBvbW5pdHVyZV92YXJzLkJJTExJTkdfQ1VSUkVOQ1ksXG4gICAgICBwbGFjZWhvbGRlcjogJyNvcmRlcl9fY3Jvc3NfX3NlbGxfX2NvbnRlbnRzJyxcbiAgICAgIG1heFByb2R1Y3RzUGVyUm93OiA0LFxuICAgICAgaGVhZGVyTGFiZWw6ICQoJy5vcmRlcl9fY3Jvc3NzZWxsaW5nX3RpdGxlJykudGV4dCgpIHx8ICdXZSBhbHNvIHJlY29tbWVuZCcsXG4gICAgICBhZGRUb0NhcnRMYWJlbDogJCgnLmNyb3NzX19zZWxsX19kZWxpbWl0ZXIgaW5wdXQuc3VibWl0LWJ1dHRvbicpLnZhbCgpIHx8ICh0eXBlb2YgX19vcmRlcl93aWRnZXRzICE9PSAndW5kZWZpbmVkJyA/IF9fb3JkZXJfd2lkZ2V0cy5BRERfTEFCRUwgOiAnQWRkIHRvIGNhcnQnKSB8fCAnQWRkIHRvIGNhcnQnLFxuICAgICAgb21uaXR1cmVWYXJzOiBvbW5pdHVyZV92YXJzLFxuICAgICAgLy8gd2lkZ2V0Q2xhc3M6ICdjb2wtbWQtMycsXG4gICAgICBsYXlvdXQ6ICdkaXNwbGF5LWhvcml6b250YWwnIC8vIEFWQUlMQUJMRSBPUFRJT05TOiBbZGlzcGxheS1ob3Jpem9udGFsLCBkaXNwbGF5LXZlcnRpY2FsXVxuICAgICAgLy9cdFx0XHRsYXlvdXQ6ICdkaXNwbGF5LWhvcml6b250YWwnIC8vIEFWQUlMQUJMRSBPUFRJT05TOiBbZGlzcGxheS1ob3Jpem9udGFsLCBkaXNwbGF5LXZlcnRpY2FsXVxuXG4gICAgfSk7XG4gIH1cbn07XG4vKipcclxuICogUmV0cnkgRmluaXNoUGFnZVxyXG4gKi9cblxuQXZhQ2FydC5DYWxsYmFja3MucmV0cnlGaW5pc2hQYWdlID0ge1xuICBjb25kaXRpb246IGF2YVBhZ2UuaXNGaW5pc2hQYWdlICYmICQoJ2JvZHknKS5oYXNDbGFzcygncGFnZS1vcmRlci1mYWlsZWQnKSxcbiAgY2FsbGJhY2s6IGZ1bmN0aW9uIGNhbGxiYWNrKCkge1xuICAgIEF2YUNhcnQuV2lkZ2V0cy5oaWRlUGF5bWVudFJldHJ5UG9wdXBPblNlbGVjdG9yQ2xpY2suaW5pdGlhbGl6ZSgpO1xuICB9XG59O1xualF1ZXJ5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbiAoJCkge1xuICBBdmFDYXJ0LmluaXRpYWxpemUoWydnbG9iYWwnLCAnY2hlY2tvdXRQYWdlJywgJ3RyaWFsUGFnZSdcbiAgLyosICdjaGVja291dEdyYWNlZnVsRGVncmFkYXRpb24nKi9cbiAgLCAndmVyaWZ5UGFnZScsICdmaW5pc2hQYWdlJywgJ3JldHJ5RmluaXNoUGFnZScsICd0aGFua1lvdVBhZ2UnXSk7XG5cbiAgaWYgKG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignU2FmYXJpJykgPiAtMSkge1xuICAgIEF2YUNhcnQuV2lkZ2V0cy5wYWdlUHJlbG9hZGVyLmluaXRpYWxpemUoe1xuICAgICAgcGxhY2Vob2xkZXI6ICcucGFnZS1wcmVsb2FkZXInXG4gICAgfSk7XG4gIH0gLy90aGlzIGlzIGludGVuZGVkIG9ubHkgZm9yIGdhbGxlcnkgdGVtcGxhdGVzXG4gIC8vdGhpcyBjb2RlIHRyaWdnZXJlZCBiYXNlZCBvbiBhIHZhcmlhYmxlIHRoYXQgaXMgY29tcGlsZWQgb25seSBvbiByZWxlYXNlIGZvciBnYWxsZXJ5IHRlbXBsYXRlc1xuICAvLyBETyBOT1QgUkVNT1ZFOlNUQVJUISEhXG5cblxuICBBdmFDYXJ0LlV0aWxzLnRyYWNrR2FsbGVyeVRlbXBsYXRlKCczJywgJ1R3by1jb2x1bW4gY2xhc3NpYyBjaGVja291dCcpOyAvLyBETyBOT1QgUkVNT1ZFOkVORCEhIVxufSk7XG5qUXVlcnkod2luZG93KS5vbignbG9hZCcsIGZ1bmN0aW9uICgkKSB7XG4gIEF2YUNhcnQuV2lkZ2V0cy5wYWdlUHJlbG9hZGVyLmluaXRpYWxpemUoe1xuICAgIHBsYWNlaG9sZGVyOiAnLnBhZ2UtcHJlbG9hZGVyJ1xuICB9KTtcbn0pOyJdLCJmaWxlIjoiYXZhX2NhcnRfaW5pdC5qcyJ9