(window["webpackJsonp"] = window["webpackJsonp"] || []).push([["bootstrap_env~jquery-ui_env"],{
/***/ "./assets/css/handsontable.css":
/*!*************************************!*\
!*** ./assets/css/handsontable.css ***!
\*************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
// extracted by mini-css-extract-plugin
/***/ }),
/***/ "./assets/js/components/googlemaps.js":
/*!********************************************!*\
!*** ./assets/js/components/googlemaps.js ***!
\********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var core_js_modules_es_array_for_each_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.for-each.js */ "./node_modules/core-js/modules/es.array.for-each.js");
/* harmony import */ var core_js_modules_es_array_for_each_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_for_each_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ "./node_modules/core-js/modules/web.dom-collections.for-each.js");
/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ "./node_modules/core-js/modules/es.function.name.js");
/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ "./node_modules/core-js/modules/es.array.map.js");
/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_3__);
/**
* Created by PhpStorm
* User: daniele
* Date: 11/06/21
* Time: 13:36
*/
/* harmony default export */ __webpack_exports__["default"] = ({
buildGoogleMaps: function buildGoogleMaps(googlemap) {
var latitudine = $(googlemap).data("latitudine");
var longitudine = $(googlemap).data("longitudine");
var markers = $(googlemap).data("markers");
var zoom = $(googlemap).data("zoom");
var viewSearchBox = $(googlemap).data("viewsearchbox");
var map = new google.maps.Map($(googlemap)[0], {
zoom: zoom,
center: {
lat: getFloat(latitudine),
lng: getFloat(longitudine)
}
});
if (viewSearchBox) {
// Create the search box and link it to the UI element.
var input = $("#" + $(googlemap).attr("id") + "_pac_input")[0];
var searchBox = new google.maps.places.SearchBox(input);
map.controls[google.maps.ControlPosition.TOP_LEFT].push(input); // Bias the SearchBox results towards current map's viewport.
map.addListener("bounds_changed", function () {
searchBox.setBounds(map.getBounds());
});
var s_markers = []; // Listen for the event fired when the user selects a prediction and retrieve
// more details for that place.
searchBox.addListener("places_changed", function () {
var places = searchBox.getPlaces();
if (!places.length) {
return;
} // Clear out the old markers.
s_markers.forEach(function (marker) {
marker.setMap(null);
});
s_markers = []; // For each place, get the icon, name and location.
var bounds = new google.maps.LatLngBounds();
places.forEach(function (place) {
if (!place.geometry || !place.geometry.location) {
console.log("Returned place contains no geometry");
return;
}
var icon = {
url: place.icon,
size: new google.maps.Size(71, 71),
origin: new google.maps.Point(0, 0),
anchor: new google.maps.Point(17, 34),
scaledSize: new google.maps.Size(25, 25)
}; // Create a marker for each place.
s_markers.push(new google.maps.Marker({
map: map,
icon: icon,
title: place.name,
position: place.geometry.location
}));
if (place.geometry.viewport) {
// Only geocodes have viewport.
bounds.union(place.geometry.viewport);
} else {
bounds.extend(place.geometry.location);
}
});
map.fitBounds(bounds);
});
}
var geocoder;
markers.map(function (marker) {
var opts = {
map: map
};
if (marker.label) opts.label = marker.label;
if (marker.title) opts.title = marker.title;
if (marker.color) opts.icon = {
url: "https://maps.google.com/mapfiles/ms/icons/" + marker.color + "-dot.png"
};
var setInfoWindow;
if (marker.text) setInfoWindow = function setInfoWindow(gmarker) {
var info = new google.maps.InfoWindow({
content: marker.text
});
info.addListener("closeclick", function () {
$(".ui-tooltip").hide();
});
gmarker.addListener("click", function () {
info.open({
anchor: gmarker,
map: map,
shouldFocus: false
});
});
};
if (!marker.address) {
opts.position = {
lat: getFloat(marker.lat),
lng: getFloat(marker.lng)
};
var gmarker = new google.maps.Marker(opts);
if (setInfoWindow) setInfoWindow(gmarker);
return;
}
geocoder = new google.maps.Geocoder();
geocoder.geocode({
address: marker.address
}, function (results, status) {
if (status !== 'OK') {
console.log('Geocode was not successful for the following reason: ' + status);
return;
}
opts.position = results[0].geometry.location;
var gmarker = new google.maps.Marker(opts);
if (setInfoWindow) setInfoWindow(gmarker);
});
});
}
});
/***/ }),
/***/ "./assets/js/components/handsontables.js":
/*!***********************************************!*\
!*** ./assets/js/components/handsontables.js ***!
\***********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ "./node_modules/core-js/modules/es.array.map.js");
/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var core_js_modules_es_object_values_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.values.js */ "./node_modules/core-js/modules/es.object.values.js");
/* harmony import */ var core_js_modules_es_object_values_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_values_js__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var handsontable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! handsontable */ "./node_modules/handsontable/index.mjs");
/* harmony import */ var handsontable_dist_handsontable_full_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! handsontable/dist/handsontable.full.css */ "./node_modules/handsontable/dist/handsontable.full.css");
/* harmony import */ var handsontable_dist_handsontable_full_css__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(handsontable_dist_handsontable_full_css__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var _css_handsontable_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../css/handsontable.css */ "./assets/css/handsontable.css");
/* harmony import */ var _css_handsontable_css__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_css_handsontable_css__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js");
/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_5__);
/**
* Created by PhpStorm
* User: daniele
* Date: 03/06/21
* Time: 14:46
*/
/* harmony default export */ __webpack_exports__["default"] = ({
buildTable: function buildTable(table) {
var idtable = jquery__WEBPACK_IMPORTED_MODULE_5___default()(table).attr("id");
var $table = jquery__WEBPACK_IMPORTED_MODULE_5___default()("#" + idtable);
var columns = $table.data("columns");
var colHeaders = [],
hcolumns = [],
hiddenColumns = {
columns: []
};
var index_col = 0;
var date_format, currency_pattern, firstDay, culture;
var locale = $table.data("locale");
switch (locale) {
case "jap":
firstDay = 0;
date_format = "YYYY/MM/DD";
currency_pattern = "0,0.00 $";
culture = "ja-JP";
break;
case "us":
firstDay = 0;
date_format = "MM/DD/YYYY";
currency_pattern = "$0,0.00";
culture = "en-US";
break;
default:
firstDay = 1;
date_format = "DD/MM/YYYY";
currency_pattern = "0,0.00 $";
culture = "it-IT";
break;
}
console.log(culture);
console.log(currency_pattern);
var aligns = {
"L": "htLeft",
"C": "htCenter",
"R": "htRight",
"J": "htJustify"
};
columns.map(function (col) {
colHeaders.push(col.header);
if (col.hidden) hiddenColumns.columns.push(index_col);
var align = aligns[col.align];
switch (col.type) {
case "dropdown":
hcolumns.push({
data: col.key,
type: "dropdown",
source: Object.values(col.select_options),
readOnly: col.readonly,
className: align
});
break;
case "numeric":
hcolumns.push({
type: "numeric",
data: col.key,
readOnly: col.readonly,
className: align
});
break;
case "currency":
hcolumns.push({
type: "numeric",
data: col.key,
numericFormat: {
culture: culture,
pattern: currency_pattern
},
readOnly: col.readonly,
className: align
});
break;
case "date":
hcolumns.push({
type: "date",
data: col.key,
dateFormat: date_format,
correctFormat: true,
datePickerConfig: {
firstDay: firstDay,
showWeekNumber: false
},
readOnly: col.readonly,
className: align
});
break;
case "autocompleteCodiceArticolo":
hcolumns.push({
data: col.key,
type: "autocomplete",
source: function source(query, process) {
ajaxSourceIWAutocomplete({}, "IWAutocompleteCodiceArticolo", query, null, process);
},
readOnly: col.readonly,
className: align
});
break;
case "autocompleteArticolo":
hcolumns.push({
data: col.key,
type: "autocomplete",
source: function source(query, process) {
ajaxSourceIWAutocomplete({}, "IWAutocomplteArticolo", query, null, process);
},
readOnly: col.readonly,
className: align
});
break;
default:
hcolumns.push({
data: col.key,
readOnly: col.readonly,
className: align
});
break;
}
index_col++;
});
jquery__WEBPACK_IMPORTED_MODULE_5___default.a.ajax({
url: $table.data("url"),
dataType: "json",
type: "post",
data: $table.data("div_data_id") ? jquery__WEBPACK_IMPORTED_MODULE_5___default()("#" + $table.data("div_data_id")) : jquery__WEBPACK_IMPORTED_MODULE_5___default()("#form1").serialize(),
success: function success(json) {
var hot = new handsontable__WEBPACK_IMPORTED_MODULE_2__["default"](table, {
licenseKey: 'non-commercial-and-evaluation',
data: json,
minSpareRows: 10,
startRows: 50,
rowHeaders: true,
colHeaders: colHeaders,
columns: hcolumns,
hiddenColumns: hiddenColumns,
manualColumnResize: true,
manualRowResize: true,
width: '100%',
height: "auto",
rowHeights: 30,
colWidths: 100
});
}
});
}
});
/***/ }),
/***/ "./css/jquery.qtip.css":
/*!*****************************!*\
!*** ./css/jquery.qtip.css ***!
\*****************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
// extracted by mini-css-extract-plugin
/***/ }),
/***/ "./css/jquery.ui.theme.css":
/*!*********************************!*\
!*** ./css/jquery.ui.theme.css ***!
\*********************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
// extracted by mini-css-extract-plugin
/***/ }),
/***/ "./include/js/date.js":
/*!****************************!*\
!*** ./include/js/date.js ***!
\****************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(/*! core-js/modules/es.date.to-string.js */ "./node_modules/core-js/modules/es.date.to-string.js");
__webpack_require__(/*! core-js/modules/es.parse-int.js */ "./node_modules/core-js/modules/es.parse-int.js");
__webpack_require__(/*! core-js/modules/es.number.is-integer.js */ "./node_modules/core-js/modules/es.number.is-integer.js");
__webpack_require__(/*! core-js/modules/es.number.constructor.js */ "./node_modules/core-js/modules/es.number.constructor.js");
__webpack_require__(/*! core-js/modules/es.array.index-of.js */ "./node_modules/core-js/modules/es.array.index-of.js");
__webpack_require__(/*! core-js/modules/es.array.map.js */ "./node_modules/core-js/modules/es.array.map.js");
__webpack_require__(/*! core-js/modules/es.object.keys.js */ "./node_modules/core-js/modules/es.object.keys.js");
/**
* Created by PhpStorm
* User: daniele
* Date: 15/05/20
* Time: 12.52
*/
module.exports = {
/**
* Prende in ingresso una data in formato ita e la trasforma in jap
* @param {string} data_it
* @returns {string}
*/
Date__jap: function Date__jap(data_it) {
if (!data_it) return "";
var date_format = $("#DPC_DEFAULT_FORMAT").val();
if (date_format === "yy/mm/dd") return data_it;
return moment(data_it, date_format === "dd/mm/yy" ? "DD/MM/YYYY" : "MM/DD/YYYY").format("YYYY/MM/DD");
},
/**
* Prende in ingresso una data in formato jap e la trasforma in ita
* @param {string} data_jap
* @returns {string}
*/
Date__it: function Date__it(data_jap) {
if (!data_jap) return "";
var date_format = $("#DPC_DEFAULT_FORMAT").val();
if (date_format === "yy/mm/dd") return data_jap;
return moment(data_jap, "YYYY/MM/DD").format(date_format === "dd/mm/yy" ? "DD/MM/YYYY" : "MM/DD/YYYY");
},
/**
* ritorna l'ora corrente in formato HH.MM
* @returns {string}
* @constructor
*/
Date__OraNow: function Date__OraNow() {
return moment().format("HH.mm");
},
//ritorna il giorno giuliano a 3 caratteri fissi, passando una data in japp
Date__ggiuliano: function Date__ggiuliano(data_jap) {
var adesso = new Date(data_jap.substr(0, 4), parseInt(data_jap.substr(5, 2), 10) - 1, data_jap.substr(8, 2), 4, 0, 0);
var anno = adesso.getFullYear();
var inizioanno = new Date(anno, 0, 0);
var GG = String(Math.floor((adesso - inizioanno) / 86400000));
return str_pad(GG, 3, "0", "STR_PAD_LEFT");
},
/**
* Aggiunge alla data_jap un numero di giorni. Restituisce una data_jap
* @param data_jap
* @param ngiorni
* @param conta_da_fine_mese
* @param usa_calendario_commerciale
* @returns {string}
* @constructor
*/
Date__add: function Date__add(data_jap, ngiorni, conta_da_fine_mese, usa_calendario_commerciale) {
ngiorni = getFloat(ngiorni);
if (Number.isInteger(ngiorni / 30) && !conta_da_fine_mese && usa_calendario_commerciale) return Date__sommamesi(data_jap, ngiorni / 30);
if (conta_da_fine_mese) {
data_jap = data_jap.substr(0, 8) + "15";
var d = moment(data_jap, "YYYY/MM/DD");
}
if (ngiorni > 0) d.add(ngiorni, "days");else d.subtract(Math.abs(ngiorni), "days");
if (conta_da_fine_mese) d.endOf("month");
return d.format("YYYY/MM/DD");
},
/**
* funzione che somma x mesi alla data passata come parametro.
* torna lo stesso giorno di x mesi dopo; se per caso il giorno è impossibile (es. 31/06) ritorna il primo giorno successivo
* dipsonibile (es. 01/07)
* @param {string} data_jap
* @param {int} nmesi
* @returns {string}
*/
Date__sommamesi: function Date__sommamesi(data_jap, nmesi) {
var d = moment(data_jap, "YYYY/MM/DD");
d.add(nmesi, "months");
return d.format("YYYY/MM/DD");
},
/**
* Ritorna la data odierna
* @returns {string}
*/
Date__now: function Date__now() {
return moment().format("YYYY/MM/DD");
},
/**
* Aggiunge tot minuti e secondi all'orario passato. Ritorna un orario solo HH.MM
* @param {string} orario
* @param {string} mm
* @param {number} ss
* @returns {string}
*/
minutiAdd: function minutiAdd(orario, mm, ss) {
if (ss == null) ss = 0;
var h = getFloat(orario.substr(0, 2));
var m = getFloat(orario.substr(3, 2));
ss = mm * 60 + ss;
var d = new Date(2000, 1, 1, h, m, 0, 0);
var t = d.getTime();
t += ss * 1000;
d.setTime(t);
var h2 = d.getHours();
var m2 = d.getMinutes();
if (h2 <= 9) h2 = "0" + h2;
if (m2 <= 9) m2 = "0" + m2;
return h2 + "." + m2;
},
/**
* Ritorna true se è un orario valido nel formato HH.MM col carattere '.' come separatore
* @param {string} s
* @returns {boolean}
*/
isOrario: function isOrario(s) {
var i = s.indexOf('.');
if (i == -1) return false;
if (i == 1) s = "0" + s;
if (parseInt(s.substr(0, 2), 10) > 23) return false;
if (parseInt(s.substr(3, 2), 10) > 59) return false;
return true;
},
getParamsForDatepicker: function getParamsForDatepicker(params) {
var date_format = $("#DPC_DEFAULT_FORMAT").val();
var format;
switch (date_format) {
case "dd/mm/yy":
format = "dd/mm/yyyy";
break;
case "mm/dd/yy":
format = "mm/dd/yyyy";
break;
default:
format = "yyyy/mm/dd";
break;
}
var standard_params = {
format: format,
autoclose: true,
todayHighlight: true,
language: $("#LANG").val(),
clearBtn: true
};
if (params) {
Object.keys(params).map(function (key) {
standard_params[key] = params[key];
});
}
return standard_params;
},
bsDatePickerInit: function bsDatePickerInit() {
var self = this;
$(".input-group.date").datepicker(self.getParamsForDatepicker());
},
bsDatePickerRangeInit: function bsDatePickerRangeInit(params) {
var self = this;
$('.input-daterange input').each(function () {
$(this).datepicker(self.getParamsForDatepicker(params));
});
}
};
/***/ }),
/***/ "./include/js/pack/0050.autocomplete-events.js":
/*!*****************************************************!*\
!*** ./include/js/pack/0050.autocomplete-events.js ***!
\*****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(/*! core-js/modules/es.function.bind.js */ "./node_modules/core-js/modules/es.function.bind.js");
/**
* Created by Daniele on 06/07/16.
*/
(function ($) {
$.fn.autocompleteOnFocusEvent = function () {
$(this).focus(function () {
$(this).select();
$(this).one("mouseup", function (ev) {
ev.preventDefault();
});
});
};
$.fn.autocompleteSearchAllOnDblClick = function () {
$(this).bind("dblclick", function () {
if (!$(this).attr("readonly")) {
$(this).val("");
$(this).keyup();
$(this).val("%");
$(this).keyup();
$(this).val("");
}
});
};
})(jQuery);
$(document).ready(function () {
$(".searchBox_codearticolo").autocompleteOnFocusEvent();
$(".searchBox_articolo").autocompleteOnFocusEvent();
$(".searchBox_user").autocompleteOnFocusEvent();
$(".searchBox_pdc").autocompleteOnFocusEvent();
$(".searchBox_banca").autocompleteOnFocusEvent();
$(".searchBox_pagamento").autocompleteOnFocusEvent();
$(".searchBox_comuni").autocompleteOnFocusEvent();
$(".searchBox_CDC").autocompleteOnFocusEvent();
$(".searchBox_commesse").autocompleteOnFocusEvent();
$(".searchBox_iva").autocompleteOnFocusEvent();
$(".searchBox_causalecontabile_codice").autocompleteOnFocusEvent();
$(".searchBox_causalecontabile").autocompleteOnFocusEvent();
$(".searchBox_lotto").autocompleteOnFocusEvent();
$(".searchBox_mag").autocompleteOnFocusEvent();
$(".searchBox_user").autocompleteSearchAllOnDblClick();
$(".searchBox_articolo").autocompleteSearchAllOnDblClick();
$(".searchBox_iva").autocompleteSearchAllOnDblClick();
$(".searchBox_causalecontabile_codice").autocompleteSearchAllOnDblClick();
$(".searchBox_commesse").autocompleteSearchAllOnDblClick();
});
/***/ }),
/***/ "./include/js/pack/0150.jquery.tabledisplay-0.2.js":
/*!*********************************************************!*\
!*** ./include/js/pack/0150.jquery.tabledisplay-0.2.js ***!
\*********************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
/*
* jQuery Table Display
*
* Copyright (c) 2008 Gabriel Langhans, Lucas Leite, Maicon Martins
* Dual licensed under the MIT (MIT-LICENSE.txt)
* and GPL (GPL-LICENSE.txt) licenses.
*
* $Date: 2008-08-06 14:01:12 +0300 (Wed, 06 Aug 2008) $
*/
(function ($) {
$.fn.toggleRow = function () {
if ($(this).css('display') == 'none') {
$(this).showRow();
} else {
$(this).hideRow();
}
};
$.fn.hideRow = function () {
$(this).hide();
};
$.fn.showRow = function () {
if ($(this).css('display') == 'none') {
$(this).css('display', 'table-row');
}
};
})(jQuery);
/***/ }),
/***/ "./include/js/pack/0170.jquery.simplecurrency.js":
/*!*******************************************************!*\
!*** ./include/js/pack/0170.jquery.simplecurrency.js ***!
\*******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(/*! core-js/modules/es.function.bind.js */ "./node_modules/core-js/modules/es.function.bind.js");
__webpack_require__(/*! core-js/modules/es.array.index-of.js */ "./node_modules/core-js/modules/es.array.index-of.js");
__webpack_require__(/*! core-js/modules/es.number.constructor.js */ "./node_modules/core-js/modules/es.number.constructor.js");
__webpack_require__(/*! core-js/modules/es.number.to-fixed.js */ "./node_modules/core-js/modules/es.number.to-fixed.js");
__webpack_require__(/*! core-js/modules/es.regexp.exec.js */ "./node_modules/core-js/modules/es.regexp.exec.js");
__webpack_require__(/*! core-js/modules/es.string.replace.js */ "./node_modules/core-js/modules/es.string.replace.js");
/*
* jQuery SimpleCurrency plugin
* Version 1.0 (3-MAY-2009)
*
* Examples at: http://www.roncosoftware.it/jquery.simplecurrency
* Copyright Giovanni Ronco
* Licensed under LGPL
*/
/*
This is an automatic script that trasform the normal input-field in a currency-field. Just attach to the
text-field css class="Currency"
This field (for example with id="curr1") must have a hidden-field near with id="curr1_hidden". This hidden-field contains
a real float number that you can use...
Must exists 4 hidden fields in the top of the page:
In every currency-field it's possibile to override symbol or decimals, adding "symbol" or "decimals"
proprerty (this is no XHTML strict)
examples:
normal:
with symbol overload:
with decimals overload:
*/
var CURRENCY__SYMBOL = "";
var CURRENCY__DECIMALS = 2;
var CURRENCY__DECIMAL_SEPARATOR = ".";
var CURRENCY__THOUSANDS_SEPARATOR = ",";
$(document).ready(function () {
CURRENCY__SYMBOL = $("#CURRENCY__SYMBOL").val(); //CURRENCY__DECIMALS=$("#CURRENCY__DECIMALS").val();
CURRENCY__DECIMAL_SEPARATOR = $("#CURRENCY__DECIMAL_SEPARATOR").val();
CURRENCY__THOUSANDS_SEPARATOR = $("#CURRENCY__THOUSANDS_SEPARATOR").val();
$(".Currency").prop("autocomplete", "off");
$(".Currency").bind("keydown focus blur", function (e) {
//*********
var objID = e.target.id;
var objID_hidden = objID + "_hidden";
var mCURRENCY__SYMBOL = CURRENCY__SYMBOL;
var mCURRENCY__DECIMALS = CURRENCY__DECIMALS;
var s, n; //overload eventuali del simbolo e del numero di decimali
if ($("#" + objID).prop("symbol") != undefined) mCURRENCY__SYMBOL = $("#" + objID).prop("symbol");
if ($("#" + objID).attr("decimals") != undefined) mCURRENCY__DECIMALS = $("#" + objID).attr("decimals");
if (e.type == "keydown") {
var keynum;
if (window.event) keynum = e.keyCode;else if (e.which) keynum = e.which;
if (keynum == 188) {
e.keyCode = 190;
e.which = 190;
} //la virgola � disabilitata
//tastierino numerico....
if (keynum == 110) {
keynum = 190;
return true;
} //questo � il punto
if (keynum >= 96 && keynum <= 105) keynum -= 48; //***************************
var keychar = String.fromCharCode(keynum);
if (keynum == 188) keychar = ',';
if (keynum == 190) keychar = '.';
if (keynum == 109) keychar = '-';
if (keynum == 173) keychar = '-';
if (keynum == 8 || keynum == 37 || keynum == 39 || keynum == 9 || keynum == 36 || keynum == 35) return true;
var numbers = "0123456789";
if (numbers.indexOf(keychar) > -1) return true;
if (keychar == CURRENCY__DECIMAL_SEPARATOR && $("#" + objID).val().indexOf(CURRENCY__DECIMAL_SEPARATOR) == -1) return true;
if (keychar == '-' && $("#" + objID).val().indexOf('-') == -1) return true;
return false;
}
if (e.type == "focus") {
//var mCURRENCY__DECIMALS=CURRENCY__DECIMALS;
s = getFloat($("#" + objID_hidden).val());
n = new Number(s);
$("#" + objID).val(n.toFixed(mCURRENCY__DECIMALS));
$("#" + objID).select();
$("#" + objID).one('mouseup', function (ev) {
ev.preventDefault();
});
}
if (e.type == "blur") {
//overload eventuali del simbolo e del numero di decimali
if ($("#" + objID).prop("symbol") != undefined) mCURRENCY__SYMBOL = $("#" + objID).prop("symbol");
if ($("#" + objID).prop("decimals") != undefined) mCURRENCY__DECIMALS = $("#" + objID).prop("decimals");
s = $("#" + objID).val();
s = s.replace(mCURRENCY__SYMBOL, '.'); //quando compilo il campo QUALSIASI SIA LA LINGUA COMPILO USANDO IL . COME SEPARATORE DECIMALE
//s=s.replace(CURRENCY__THOUSANDS_SEPARATOR,'');
//s=s.replace(CURRENCY__DECIMAL_SEPARATOR,'.');
n = getFloat(s);
$("#" + objID_hidden).val(n);
$("#" + objID).updateCurrency();
$("#" + objID_hidden).change();
}
}); //********
});
$.fn.updateCurrency = function () {
var objID = $(this).prop("id");
var objID_hidden = objID + "_hidden";
var mCURRENCY__SYMBOL = $("#CURRENCY__SYMBOL").val();
var mCURRENCY__DECIMALS = getFloat($("#" + objID).attr("decimals")) == 0 ? CURRENCY__DECIMALS : getFloat($("#" + objID).attr("decimals"));
var if_zero_empty = false; //overload eventuali del simbolo e del numero di decimali
if ($("#" + objID).prop("if_zero_empty") != undefined) if_zero_empty = true;
if ($("#" + objID).prop("symbol") != undefined) mCURRENCY__SYMBOL = $("#" + objID).prop("symbol");
var n = getFloat($("#" + objID_hidden).val());
var sign = n < 0 ? "- " : "";
var n2 = number_format(Math.abs(n), mCURRENCY__DECIMALS, CURRENCY__DECIMAL_SEPARATOR, CURRENCY__THOUSANDS_SEPARATOR);
if (n == 0 && if_zero_empty) $("#" + objID).val("");else $("#" + objID).val(sign + mCURRENCY__SYMBOL + " " + n2);
};
/***/ }),
/***/ "./include/js/pack/0180.jquery.selectboxes.js":
/*!****************************************************!*\
!*** ./include/js/pack/0180.jquery.selectboxes.js ***!
\****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(/*! core-js/modules/es.regexp.constructor.js */ "./node_modules/core-js/modules/es.regexp.constructor.js");
__webpack_require__(/*! core-js/modules/es.regexp.exec.js */ "./node_modules/core-js/modules/es.regexp.exec.js");
__webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ "./node_modules/core-js/modules/es.regexp.to-string.js");
__webpack_require__(/*! core-js/modules/es.string.match.js */ "./node_modules/core-js/modules/es.string.match.js");
__webpack_require__(/*! core-js/modules/es.array.sort.js */ "./node_modules/core-js/modules/es.array.sort.js");
__webpack_require__(/*! core-js/modules/es.array.find.js */ "./node_modules/core-js/modules/es.array.find.js");
__webpack_require__(/*! core-js/modules/es.symbol.js */ "./node_modules/core-js/modules/es.symbol.js");
__webpack_require__(/*! core-js/modules/es.symbol.description.js */ "./node_modules/core-js/modules/es.symbol.description.js");
__webpack_require__(/*! core-js/modules/es.object.to-string.js */ "./node_modules/core-js/modules/es.object.to-string.js");
__webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ "./node_modules/core-js/modules/es.symbol.iterator.js");
__webpack_require__(/*! core-js/modules/es.array.iterator.js */ "./node_modules/core-js/modules/es.array.iterator.js");
__webpack_require__(/*! core-js/modules/es.string.iterator.js */ "./node_modules/core-js/modules/es.string.iterator.js");
__webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ "./node_modules/core-js/modules/web.dom-collections.iterator.js");
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
/*
*
* Copyright (c) 2006-2009 Sam Collett (http://www.texotela.co.uk)
* Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
* and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
*
* Version 2.2.4
* Demo: http://www.texotela.co.uk/code/jquery/select/
*
* $LastChangedDate$
* $Rev$
*
*/
;
(function ($) {
/**
* Adds (single/multiple) options to a select box (or series of select boxes)
*
* @name addOption
* @author Sam Collett (http://www.texotela.co.uk)
* @type jQuery
* @example $("#myselect").addOption("Value", "Text"); // add single value (will be selected)
* @example $("#myselect").addOption("Value 2", "Text 2", false); // add single value (won't be selected)
* @example $("#myselect").addOption({"foo":"bar","bar":"baz"}, false); // add multiple values, but don't select
*
*/
$.fn.addOption = function () {
var add = function add(el, v, t, sO) {
var option = document.createElement("option");
option.value = v, option.text = t; // get options
var o = el.options; // get number of options
var oL = o.length;
if (!el.cache) {
el.cache = {}; // loop through existing options, adding to cache
for (var i = 0; i < oL; i++) {
el.cache[o[i].value] = i;
}
} // add to cache if it isn't already
if (typeof el.cache[v] == "undefined") el.cache[v] = oL;
el.options[el.cache[v]] = option;
if (sO) {
option.selected = true;
}
};
var a = arguments;
if (a.length == 0) return this; // select option when added? default is true
var sO = true; // multiple items
var m = false; // other variables
var items, v, t;
if (_typeof(a[0]) == "object") {
m = true;
items = a[0];
}
if (a.length >= 2) {
if (typeof a[1] == "boolean") sO = a[1];else if (typeof a[2] == "boolean") sO = a[2];
if (!m) {
v = a[0];
t = a[1];
}
}
this.each(function () {
if (this.nodeName.toLowerCase() != "select") return;
if (m) {
for (var item in items) {
add(this, item, items[item], sO);
}
} else {
add(this, v, t, sO);
}
});
return this;
};
/**
* Add options via ajax
*
* @name ajaxAddOption
* @author Sam Collett (http://www.texotela.co.uk)
* @type jQuery
* @param String url Page to get options from (must be valid JSON)
* @param Object params (optional) Any parameters to send with the request
* @param Boolean select (optional) Select the added options, default true
* @param Function fn (optional) Call this function with the select object as param after completion
* @param Array args (optional) Array with params to pass to the function afterwards
* @example $("#myselect").ajaxAddOption("myoptions.php");
* @example $("#myselect").ajaxAddOption("myoptions.php", {"code" : "007"});
* @example $("#myselect").ajaxAddOption("myoptions.php", {"code" : "007"}, false, sortoptions, [{"dir": "desc"}]);
*
*/
$.fn.ajaxAddOption = function (url, params, select, fn, args) {
if (typeof url != "string") return this;
if (_typeof(params) != "object") params = {};
if (typeof select != "boolean") select = true;
this.each(function () {
var el = this;
$.getJSON(url, params, function (r) {
$(el).addOption(r, select);
if (typeof fn == "function") {
if (_typeof(args) == "object") {
fn.apply(el, args);
} else {
fn.call(el);
}
}
});
});
return this;
};
/**
* Removes an option (by value or index) from a select box (or series of select boxes)
*
* @name removeOption
* @author Sam Collett (http://www.texotela.co.uk)
* @type jQuery
* @param String|RegExp|Number what Option to remove
* @param Boolean selectedOnly (optional) Remove only if it has been selected (default false)
* @example $("#myselect").removeOption("Value"); // remove by value
* @example $("#myselect").removeOption(/^val/i); // remove options with a value starting with 'val'
* @example $("#myselect").removeOption(/./); // remove all options
* @example $("#myselect").removeOption(/./, true); // remove all options that have been selected
* @example $("#myselect").removeOption(0); // remove by index
* @example $("#myselect").removeOption(["myselect_1","myselect_2"]); // values contained in passed array
*
*/
$.fn.removeOption = function () {
var a = arguments;
if (a.length == 0) return this;
var ta = _typeof(a[0]);
var v, index; // has to be a string or regular expression (object in IE, function in Firefox)
if (ta == "string" || ta == "object" || ta == "function") {
v = a[0]; // if an array, remove items
if (v.constructor == Array) {
var l = v.length;
for (var i = 0; i < l; i++) {
this.removeOption(v[i], a[1]);
}
return this;
}
} else if (ta == "number") index = a[0];else return this;
this.each(function () {
if (this.nodeName.toLowerCase() != "select") return; // clear cache
if (this.cache) this.cache = null; // does the option need to be removed?
var remove = false; // get options
var o = this.options;
if (!!v) {
// get number of options
var oL = o.length;
for (var i = oL - 1; i >= 0; i--) {
if (v.constructor == RegExp) {
if (o[i].value.match(v)) {
remove = true;
}
} else if (o[i].value == v) {
remove = true;
} // if the option is only to be removed if selected
if (remove && a[1] === true) remove = o[i].selected;
if (remove) {
o[i] = null;
}
remove = false;
}
} else {
// only remove if selected?
if (a[1] === true) {
remove = o[index].selected;
} else {
remove = true;
}
if (remove) {
this.remove(index);
}
}
});
return this;
};
/**
* Sort options (ascending or descending) in a select box (or series of select boxes)
*
* @name sortOptions
* @author Sam Collett (http://www.texotela.co.uk)
* @type jQuery
* @param Boolean ascending (optional) Sort ascending (true/undefined), or descending (false)
* @example // ascending
* $("#myselect").sortOptions(); // or $("#myselect").sortOptions(true);
* @example // descending
* $("#myselect").sortOptions(false);
*
*/
$.fn.sortOptions = function (ascending) {
// get selected values first
var sel = $(this).selectedValues();
var a = typeof ascending == "undefined" ? true : !!ascending;
this.each(function () {
if (this.nodeName.toLowerCase() != "select") return; // get options
var o = this.options; // get number of options
var oL = o.length; // create an array for sorting
var sA = []; // loop through options, adding to sort array
for (var i = 0; i < oL; i++) {
sA[i] = {
v: o[i].value,
t: o[i].text
};
} // sort items in array
sA.sort(function (o1, o2) {
// option text is made lowercase for case insensitive sorting
o1t = o1.t.toLowerCase(), o2t = o2.t.toLowerCase(); // if options are the same, no sorting is needed
if (o1t == o2t) return 0;
if (a) {
return o1t < o2t ? -1 : 1;
} else {
return o1t > o2t ? -1 : 1;
}
}); // change the options to match the sort array
for (var i = 0; i < oL; i++) {
o[i].text = sA[i].t;
o[i].value = sA[i].v;
}
}).selectOptions(sel, true); // select values, clearing existing ones
return this;
};
/**
* Selects an option by value
*
* @name selectOptions
* @author Mathias Bank (http://www.mathias-bank.de), original function
* @author Sam Collett (http://www.texotela.co.uk), addition of regular expression matching
* @type jQuery
* @param String|RegExp|Array value Which options should be selected
* can be a string or regular expression, or an array of strings / regular expressions
* @param Boolean clear Clear existing selected options, default false
* @example $("#myselect").selectOptions("val1"); // with the value 'val1'
* @example $("#myselect").selectOptions(["val1","val2","val3"]); // with the values 'val1' 'val2' 'val3'
* @example $("#myselect").selectOptions(/^val/i); // with the value starting with 'val', case insensitive
*
*/
$.fn.selectOptions = function (value, clear) {
var v = value;
var vT = _typeof(value); // handle arrays
if (vT == "object" && v.constructor == Array) {
var $this = this;
$.each(v, function () {
$this.selectOptions(this, clear);
});
}
;
var c = clear || false; // has to be a string or regular expression (object in IE, function in Firefox)
if (vT != "string" && vT != "function" && vT != "object") return this;
this.each(function () {
if (this.nodeName.toLowerCase() != "select") return this; // get options
var o = this.options; // get number of options
var oL = o.length;
for (var i = 0; i < oL; i++) {
if (v.constructor == RegExp) {
if (o[i].value.match(v)) {
o[i].selected = true;
} else if (c) {
o[i].selected = false;
}
} else {
if (o[i].value == v) {
o[i].selected = true;
} else if (c) {
o[i].selected = false;
}
}
}
});
return this;
};
/**
* Copy options to another select
*
* @name copyOptions
* @author Sam Collett (http://www.texotela.co.uk)
* @type jQuery
* @param String to Element to copy to
* @param String which (optional) Specifies which options should be copied - 'all' or 'selected'. Default is 'selected'
* @example $("#myselect").copyOptions("#myselect2"); // copy selected options from 'myselect' to 'myselect2'
* @example $("#myselect").copyOptions("#myselect2","selected"); // same as above
* @example $("#myselect").copyOptions("#myselect2","all"); // copy all options from 'myselect' to 'myselect2'
*
*/
$.fn.copyOptions = function (to, which) {
var w = which || "selected";
if ($(to).size() == 0) return this;
this.each(function () {
if (this.nodeName.toLowerCase() != "select") return this; // get options
var o = this.options; // get number of options
var oL = o.length;
for (var i = 0; i < oL; i++) {
if (w == "all" || w == "selected" && o[i].selected) {
$(to).addOption(o[i].value, o[i].text);
}
}
});
return this;
};
/**
* Checks if a select box has an option with the supplied value
*
* @name containsOption
* @author Sam Collett (http://www.texotela.co.uk)
* @type Boolean|jQuery
* @param String|RegExp value Which value to check for. Can be a string or regular expression
* @param Function fn (optional) Function to apply if an option with the given value is found.
* Use this if you don't want to break the chaining
* @example if($("#myselect").containsOption("val1")) alert("Has an option with the value 'val1'");
* @example if($("#myselect").containsOption(/^val/i)) alert("Has an option with the value starting with 'val'");
* @example $("#myselect").containsOption("val1", copyoption).doSomethingElseWithSelect(); // calls copyoption (user defined function) for any options found, chain is continued
*
*/
$.fn.containsOption = function (value, fn) {
var found = false;
var v = value;
var vT = _typeof(v);
var fT = _typeof(fn); // has to be a string or regular expression (object in IE, function in Firefox)
if (vT != "string" && vT != "function" && vT != "object") return fT == "function" ? this : found;
this.each(function () {
if (this.nodeName.toLowerCase() != "select") return this; // option already found
if (found && fT != "function") return false; // get options
var o = this.options; // get number of options
var oL = o.length;
for (var i = 0; i < oL; i++) {
if (v.constructor == RegExp) {
if (o[i].value.match(v)) {
found = true;
if (fT == "function") fn.call(o[i], i);
}
} else {
if (o[i].value == v) {
found = true;
if (fT == "function") fn.call(o[i], i);
}
}
}
});
return fT == "function" ? this : found;
};
/**
* Returns values which have been selected
*
* @name selectedValues
* @author Sam Collett (http://www.texotela.co.uk)
* @type Array
* @example $("#myselect").selectedValues();
*
*/
$.fn.selectedValues = function () {
var v = [];
this.selectedOptions().each(function () {
v[v.length] = this.value;
});
return v;
};
/**
* Returns text which has been selected
*
* @name selectedTexts
* @author Sam Collett (http://www.texotela.co.uk)
* @type Array
* @example $("#myselect").selectedTexts();
*
*/
$.fn.selectedTexts = function () {
var t = [];
this.selectedOptions().each(function () {
t[t.length] = this.text;
});
return t;
};
/**
* Returns options which have been selected
*
* @name selectedOptions
* @author Sam Collett (http://www.texotela.co.uk)
* @type jQuery
* @example $("#myselect").selectedOptions();
*
*/
$.fn.selectedOptions = function () {
return this.find("option:selected");
};
})(jQuery);
/***/ }),
/***/ "./include/js/pack/0290.iridegallery.js":
/*!**********************************************!*\
!*** ./include/js/pack/0290.iridegallery.js ***!
\**********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(/*! core-js/modules/es.symbol.js */ "./node_modules/core-js/modules/es.symbol.js");
__webpack_require__(/*! core-js/modules/es.symbol.description.js */ "./node_modules/core-js/modules/es.symbol.description.js");
__webpack_require__(/*! core-js/modules/es.regexp.exec.js */ "./node_modules/core-js/modules/es.regexp.exec.js");
__webpack_require__(/*! core-js/modules/es.string.replace.js */ "./node_modules/core-js/modules/es.string.replace.js");
__webpack_require__(/*! core-js/modules/es.string.split.js */ "./node_modules/core-js/modules/es.string.split.js");
$.fn.iwgallery = function (options) {
var opts = $.extend({}, $.fn.iwgallery.defaults, options);
this.divGallery = $("
");
this.divHiddens = $("
");
this.divFiles = $("
");
this.buildImage = function (img) {
return " ";
};
this.buildHidden = function (idupload) {
return " ";
};
this.buildFileLink = function (img) {
var $removeLink = $("X ");
var obj = this;
$removeLink.on("click", function () {
var current;
var images = [];
for (var i = 0; i < obj.apiGallery.getNumItems(); i++) {
current = obj.apiGallery.getItem(i);
if (getFloat(current.idupload) === getFloat(img.idupload)) continue;
images.push(current);
}
if (typeof opts.onChangeGallery === "function") opts.onChangeGallery(images);
obj.buildGallery(images);
});
var div = $("" + img.description + " [
");
div.append($removeLink);
div.append("] ");
return div;
};
this.buildGallery = function (images) {
var imgsToAppend = '',
hiddens = '';
this.divFiles.html("");
var img;
for (var i = 0; i < images.length; i++) {
img = images[i];
imgsToAppend += this.buildImage(img);
hiddens += this.buildHidden(img.idupload);
if (!getFloat(img.idupload)) continue;
this.divFiles.append(this.buildFileLink(img));
}
this.divGallery.html(imgsToAppend);
this.apiGallery = this.divGallery.unitegallery({
gallery_theme: "compact",
theme_panel_position: "right",
theme_hide_panel_under_width: 1000,
gallery_width: opts.galleryWidth,
gallery_height: opts.galleryHeight,
slider_scale_mode: "fit"
});
if (this.apiGallery.getNumItems() - 1 >= 0) this.apiGallery.selectItem(this.apiGallery.getNumItems() - 1);
this.divHiddens.html(hiddens);
if (this.apiGallery.getNumItems() <= 1) $("#" + this.divGallery.attr("id") + " .ug-panel-handle-tip").click();
};
var obj = this;
var div_upload = $("
");
div_upload.uploadFile({
url: "ajax.php?object=UploadedFile&tipoview=jqueryPluginUploadInGallery&is_crypted=1",
allowedTypes: 'jpg,jpeg,png,bmp,gif,tiff',
dragDropStr: opts.dragDropString,
extErrorStr: opts.extErrorString,
uploadStr: opts.uploadString,
showDownload: true,
showDelete: true,
onSuccess: function onSuccess(files, data) {
var idupload = getFloat(data.split(',')[1].replace(']', ''));
if (idupload === 0) return;
var images = [];
var img;
for (var i = 0; i < obj.apiGallery.getNumItems(); i++) {
img = obj.apiGallery.getItem(i);
if (img.idupload === 0) continue;
images.push(img);
}
var path = "include/show_files.php?idupload=" + idupload + "&token=" + opts.token;
images.push({
urlImage: path,
description: files,
idupload: idupload
});
if (typeof opts.onChangeGallery === "function") opts.onChangeGallery(images);
obj.buildGallery(images);
}
});
this.append(this.divGallery);
this.append(opts.labelString + " ");
this.append(div_upload);
this.append(this.divHiddens);
this.append(this.divFiles);
this.buildGallery(opts.images);
};
$.fn.iwgallery.defaults = {
labelString: "",
codcliente: "",
images: [],
dragDropString: "",
extErrorString: "",
uploadString: "",
galleryWidth: 900,
galleryHeight: 500,
token: "",
sessId: "",
onChangeGallery: null
};
/***/ }),
/***/ "./node_modules/handsontable/node_modules/moment/locale sync recursive ^\\.\\/.*$":
/*!****************************************************************************!*\
!*** ./node_modules/handsontable/node_modules/moment/locale sync ^\.\/.*$ ***!
\****************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var map = {
"./af": "./node_modules/handsontable/node_modules/moment/locale/af.js",
"./af.js": "./node_modules/handsontable/node_modules/moment/locale/af.js",
"./ar": "./node_modules/handsontable/node_modules/moment/locale/ar.js",
"./ar-dz": "./node_modules/handsontable/node_modules/moment/locale/ar-dz.js",
"./ar-dz.js": "./node_modules/handsontable/node_modules/moment/locale/ar-dz.js",
"./ar-kw": "./node_modules/handsontable/node_modules/moment/locale/ar-kw.js",
"./ar-kw.js": "./node_modules/handsontable/node_modules/moment/locale/ar-kw.js",
"./ar-ly": "./node_modules/handsontable/node_modules/moment/locale/ar-ly.js",
"./ar-ly.js": "./node_modules/handsontable/node_modules/moment/locale/ar-ly.js",
"./ar-ma": "./node_modules/handsontable/node_modules/moment/locale/ar-ma.js",
"./ar-ma.js": "./node_modules/handsontable/node_modules/moment/locale/ar-ma.js",
"./ar-sa": "./node_modules/handsontable/node_modules/moment/locale/ar-sa.js",
"./ar-sa.js": "./node_modules/handsontable/node_modules/moment/locale/ar-sa.js",
"./ar-tn": "./node_modules/handsontable/node_modules/moment/locale/ar-tn.js",
"./ar-tn.js": "./node_modules/handsontable/node_modules/moment/locale/ar-tn.js",
"./ar.js": "./node_modules/handsontable/node_modules/moment/locale/ar.js",
"./az": "./node_modules/handsontable/node_modules/moment/locale/az.js",
"./az.js": "./node_modules/handsontable/node_modules/moment/locale/az.js",
"./be": "./node_modules/handsontable/node_modules/moment/locale/be.js",
"./be.js": "./node_modules/handsontable/node_modules/moment/locale/be.js",
"./bg": "./node_modules/handsontable/node_modules/moment/locale/bg.js",
"./bg.js": "./node_modules/handsontable/node_modules/moment/locale/bg.js",
"./bm": "./node_modules/handsontable/node_modules/moment/locale/bm.js",
"./bm.js": "./node_modules/handsontable/node_modules/moment/locale/bm.js",
"./bn": "./node_modules/handsontable/node_modules/moment/locale/bn.js",
"./bn.js": "./node_modules/handsontable/node_modules/moment/locale/bn.js",
"./bo": "./node_modules/handsontable/node_modules/moment/locale/bo.js",
"./bo.js": "./node_modules/handsontable/node_modules/moment/locale/bo.js",
"./br": "./node_modules/handsontable/node_modules/moment/locale/br.js",
"./br.js": "./node_modules/handsontable/node_modules/moment/locale/br.js",
"./bs": "./node_modules/handsontable/node_modules/moment/locale/bs.js",
"./bs.js": "./node_modules/handsontable/node_modules/moment/locale/bs.js",
"./ca": "./node_modules/handsontable/node_modules/moment/locale/ca.js",
"./ca.js": "./node_modules/handsontable/node_modules/moment/locale/ca.js",
"./cs": "./node_modules/handsontable/node_modules/moment/locale/cs.js",
"./cs.js": "./node_modules/handsontable/node_modules/moment/locale/cs.js",
"./cv": "./node_modules/handsontable/node_modules/moment/locale/cv.js",
"./cv.js": "./node_modules/handsontable/node_modules/moment/locale/cv.js",
"./cy": "./node_modules/handsontable/node_modules/moment/locale/cy.js",
"./cy.js": "./node_modules/handsontable/node_modules/moment/locale/cy.js",
"./da": "./node_modules/handsontable/node_modules/moment/locale/da.js",
"./da.js": "./node_modules/handsontable/node_modules/moment/locale/da.js",
"./de": "./node_modules/handsontable/node_modules/moment/locale/de.js",
"./de-at": "./node_modules/handsontable/node_modules/moment/locale/de-at.js",
"./de-at.js": "./node_modules/handsontable/node_modules/moment/locale/de-at.js",
"./de-ch": "./node_modules/handsontable/node_modules/moment/locale/de-ch.js",
"./de-ch.js": "./node_modules/handsontable/node_modules/moment/locale/de-ch.js",
"./de.js": "./node_modules/handsontable/node_modules/moment/locale/de.js",
"./dv": "./node_modules/handsontable/node_modules/moment/locale/dv.js",
"./dv.js": "./node_modules/handsontable/node_modules/moment/locale/dv.js",
"./el": "./node_modules/handsontable/node_modules/moment/locale/el.js",
"./el.js": "./node_modules/handsontable/node_modules/moment/locale/el.js",
"./en-SG": "./node_modules/handsontable/node_modules/moment/locale/en-SG.js",
"./en-SG.js": "./node_modules/handsontable/node_modules/moment/locale/en-SG.js",
"./en-au": "./node_modules/handsontable/node_modules/moment/locale/en-au.js",
"./en-au.js": "./node_modules/handsontable/node_modules/moment/locale/en-au.js",
"./en-ca": "./node_modules/handsontable/node_modules/moment/locale/en-ca.js",
"./en-ca.js": "./node_modules/handsontable/node_modules/moment/locale/en-ca.js",
"./en-gb": "./node_modules/handsontable/node_modules/moment/locale/en-gb.js",
"./en-gb.js": "./node_modules/handsontable/node_modules/moment/locale/en-gb.js",
"./en-ie": "./node_modules/handsontable/node_modules/moment/locale/en-ie.js",
"./en-ie.js": "./node_modules/handsontable/node_modules/moment/locale/en-ie.js",
"./en-il": "./node_modules/handsontable/node_modules/moment/locale/en-il.js",
"./en-il.js": "./node_modules/handsontable/node_modules/moment/locale/en-il.js",
"./en-nz": "./node_modules/handsontable/node_modules/moment/locale/en-nz.js",
"./en-nz.js": "./node_modules/handsontable/node_modules/moment/locale/en-nz.js",
"./eo": "./node_modules/handsontable/node_modules/moment/locale/eo.js",
"./eo.js": "./node_modules/handsontable/node_modules/moment/locale/eo.js",
"./es": "./node_modules/handsontable/node_modules/moment/locale/es.js",
"./es-do": "./node_modules/handsontable/node_modules/moment/locale/es-do.js",
"./es-do.js": "./node_modules/handsontable/node_modules/moment/locale/es-do.js",
"./es-us": "./node_modules/handsontable/node_modules/moment/locale/es-us.js",
"./es-us.js": "./node_modules/handsontable/node_modules/moment/locale/es-us.js",
"./es.js": "./node_modules/handsontable/node_modules/moment/locale/es.js",
"./et": "./node_modules/handsontable/node_modules/moment/locale/et.js",
"./et.js": "./node_modules/handsontable/node_modules/moment/locale/et.js",
"./eu": "./node_modules/handsontable/node_modules/moment/locale/eu.js",
"./eu.js": "./node_modules/handsontable/node_modules/moment/locale/eu.js",
"./fa": "./node_modules/handsontable/node_modules/moment/locale/fa.js",
"./fa.js": "./node_modules/handsontable/node_modules/moment/locale/fa.js",
"./fi": "./node_modules/handsontable/node_modules/moment/locale/fi.js",
"./fi.js": "./node_modules/handsontable/node_modules/moment/locale/fi.js",
"./fo": "./node_modules/handsontable/node_modules/moment/locale/fo.js",
"./fo.js": "./node_modules/handsontable/node_modules/moment/locale/fo.js",
"./fr": "./node_modules/handsontable/node_modules/moment/locale/fr.js",
"./fr-ca": "./node_modules/handsontable/node_modules/moment/locale/fr-ca.js",
"./fr-ca.js": "./node_modules/handsontable/node_modules/moment/locale/fr-ca.js",
"./fr-ch": "./node_modules/handsontable/node_modules/moment/locale/fr-ch.js",
"./fr-ch.js": "./node_modules/handsontable/node_modules/moment/locale/fr-ch.js",
"./fr.js": "./node_modules/handsontable/node_modules/moment/locale/fr.js",
"./fy": "./node_modules/handsontable/node_modules/moment/locale/fy.js",
"./fy.js": "./node_modules/handsontable/node_modules/moment/locale/fy.js",
"./ga": "./node_modules/handsontable/node_modules/moment/locale/ga.js",
"./ga.js": "./node_modules/handsontable/node_modules/moment/locale/ga.js",
"./gd": "./node_modules/handsontable/node_modules/moment/locale/gd.js",
"./gd.js": "./node_modules/handsontable/node_modules/moment/locale/gd.js",
"./gl": "./node_modules/handsontable/node_modules/moment/locale/gl.js",
"./gl.js": "./node_modules/handsontable/node_modules/moment/locale/gl.js",
"./gom-latn": "./node_modules/handsontable/node_modules/moment/locale/gom-latn.js",
"./gom-latn.js": "./node_modules/handsontable/node_modules/moment/locale/gom-latn.js",
"./gu": "./node_modules/handsontable/node_modules/moment/locale/gu.js",
"./gu.js": "./node_modules/handsontable/node_modules/moment/locale/gu.js",
"./he": "./node_modules/handsontable/node_modules/moment/locale/he.js",
"./he.js": "./node_modules/handsontable/node_modules/moment/locale/he.js",
"./hi": "./node_modules/handsontable/node_modules/moment/locale/hi.js",
"./hi.js": "./node_modules/handsontable/node_modules/moment/locale/hi.js",
"./hr": "./node_modules/handsontable/node_modules/moment/locale/hr.js",
"./hr.js": "./node_modules/handsontable/node_modules/moment/locale/hr.js",
"./hu": "./node_modules/handsontable/node_modules/moment/locale/hu.js",
"./hu.js": "./node_modules/handsontable/node_modules/moment/locale/hu.js",
"./hy-am": "./node_modules/handsontable/node_modules/moment/locale/hy-am.js",
"./hy-am.js": "./node_modules/handsontable/node_modules/moment/locale/hy-am.js",
"./id": "./node_modules/handsontable/node_modules/moment/locale/id.js",
"./id.js": "./node_modules/handsontable/node_modules/moment/locale/id.js",
"./is": "./node_modules/handsontable/node_modules/moment/locale/is.js",
"./is.js": "./node_modules/handsontable/node_modules/moment/locale/is.js",
"./it": "./node_modules/handsontable/node_modules/moment/locale/it.js",
"./it-ch": "./node_modules/handsontable/node_modules/moment/locale/it-ch.js",
"./it-ch.js": "./node_modules/handsontable/node_modules/moment/locale/it-ch.js",
"./it.js": "./node_modules/handsontable/node_modules/moment/locale/it.js",
"./ja": "./node_modules/handsontable/node_modules/moment/locale/ja.js",
"./ja.js": "./node_modules/handsontable/node_modules/moment/locale/ja.js",
"./jv": "./node_modules/handsontable/node_modules/moment/locale/jv.js",
"./jv.js": "./node_modules/handsontable/node_modules/moment/locale/jv.js",
"./ka": "./node_modules/handsontable/node_modules/moment/locale/ka.js",
"./ka.js": "./node_modules/handsontable/node_modules/moment/locale/ka.js",
"./kk": "./node_modules/handsontable/node_modules/moment/locale/kk.js",
"./kk.js": "./node_modules/handsontable/node_modules/moment/locale/kk.js",
"./km": "./node_modules/handsontable/node_modules/moment/locale/km.js",
"./km.js": "./node_modules/handsontable/node_modules/moment/locale/km.js",
"./kn": "./node_modules/handsontable/node_modules/moment/locale/kn.js",
"./kn.js": "./node_modules/handsontable/node_modules/moment/locale/kn.js",
"./ko": "./node_modules/handsontable/node_modules/moment/locale/ko.js",
"./ko.js": "./node_modules/handsontable/node_modules/moment/locale/ko.js",
"./ku": "./node_modules/handsontable/node_modules/moment/locale/ku.js",
"./ku.js": "./node_modules/handsontable/node_modules/moment/locale/ku.js",
"./ky": "./node_modules/handsontable/node_modules/moment/locale/ky.js",
"./ky.js": "./node_modules/handsontable/node_modules/moment/locale/ky.js",
"./lb": "./node_modules/handsontable/node_modules/moment/locale/lb.js",
"./lb.js": "./node_modules/handsontable/node_modules/moment/locale/lb.js",
"./lo": "./node_modules/handsontable/node_modules/moment/locale/lo.js",
"./lo.js": "./node_modules/handsontable/node_modules/moment/locale/lo.js",
"./lt": "./node_modules/handsontable/node_modules/moment/locale/lt.js",
"./lt.js": "./node_modules/handsontable/node_modules/moment/locale/lt.js",
"./lv": "./node_modules/handsontable/node_modules/moment/locale/lv.js",
"./lv.js": "./node_modules/handsontable/node_modules/moment/locale/lv.js",
"./me": "./node_modules/handsontable/node_modules/moment/locale/me.js",
"./me.js": "./node_modules/handsontable/node_modules/moment/locale/me.js",
"./mi": "./node_modules/handsontable/node_modules/moment/locale/mi.js",
"./mi.js": "./node_modules/handsontable/node_modules/moment/locale/mi.js",
"./mk": "./node_modules/handsontable/node_modules/moment/locale/mk.js",
"./mk.js": "./node_modules/handsontable/node_modules/moment/locale/mk.js",
"./ml": "./node_modules/handsontable/node_modules/moment/locale/ml.js",
"./ml.js": "./node_modules/handsontable/node_modules/moment/locale/ml.js",
"./mn": "./node_modules/handsontable/node_modules/moment/locale/mn.js",
"./mn.js": "./node_modules/handsontable/node_modules/moment/locale/mn.js",
"./mr": "./node_modules/handsontable/node_modules/moment/locale/mr.js",
"./mr.js": "./node_modules/handsontable/node_modules/moment/locale/mr.js",
"./ms": "./node_modules/handsontable/node_modules/moment/locale/ms.js",
"./ms-my": "./node_modules/handsontable/node_modules/moment/locale/ms-my.js",
"./ms-my.js": "./node_modules/handsontable/node_modules/moment/locale/ms-my.js",
"./ms.js": "./node_modules/handsontable/node_modules/moment/locale/ms.js",
"./mt": "./node_modules/handsontable/node_modules/moment/locale/mt.js",
"./mt.js": "./node_modules/handsontable/node_modules/moment/locale/mt.js",
"./my": "./node_modules/handsontable/node_modules/moment/locale/my.js",
"./my.js": "./node_modules/handsontable/node_modules/moment/locale/my.js",
"./nb": "./node_modules/handsontable/node_modules/moment/locale/nb.js",
"./nb.js": "./node_modules/handsontable/node_modules/moment/locale/nb.js",
"./ne": "./node_modules/handsontable/node_modules/moment/locale/ne.js",
"./ne.js": "./node_modules/handsontable/node_modules/moment/locale/ne.js",
"./nl": "./node_modules/handsontable/node_modules/moment/locale/nl.js",
"./nl-be": "./node_modules/handsontable/node_modules/moment/locale/nl-be.js",
"./nl-be.js": "./node_modules/handsontable/node_modules/moment/locale/nl-be.js",
"./nl.js": "./node_modules/handsontable/node_modules/moment/locale/nl.js",
"./nn": "./node_modules/handsontable/node_modules/moment/locale/nn.js",
"./nn.js": "./node_modules/handsontable/node_modules/moment/locale/nn.js",
"./pa-in": "./node_modules/handsontable/node_modules/moment/locale/pa-in.js",
"./pa-in.js": "./node_modules/handsontable/node_modules/moment/locale/pa-in.js",
"./pl": "./node_modules/handsontable/node_modules/moment/locale/pl.js",
"./pl.js": "./node_modules/handsontable/node_modules/moment/locale/pl.js",
"./pt": "./node_modules/handsontable/node_modules/moment/locale/pt.js",
"./pt-br": "./node_modules/handsontable/node_modules/moment/locale/pt-br.js",
"./pt-br.js": "./node_modules/handsontable/node_modules/moment/locale/pt-br.js",
"./pt.js": "./node_modules/handsontable/node_modules/moment/locale/pt.js",
"./ro": "./node_modules/handsontable/node_modules/moment/locale/ro.js",
"./ro.js": "./node_modules/handsontable/node_modules/moment/locale/ro.js",
"./ru": "./node_modules/handsontable/node_modules/moment/locale/ru.js",
"./ru.js": "./node_modules/handsontable/node_modules/moment/locale/ru.js",
"./sd": "./node_modules/handsontable/node_modules/moment/locale/sd.js",
"./sd.js": "./node_modules/handsontable/node_modules/moment/locale/sd.js",
"./se": "./node_modules/handsontable/node_modules/moment/locale/se.js",
"./se.js": "./node_modules/handsontable/node_modules/moment/locale/se.js",
"./si": "./node_modules/handsontable/node_modules/moment/locale/si.js",
"./si.js": "./node_modules/handsontable/node_modules/moment/locale/si.js",
"./sk": "./node_modules/handsontable/node_modules/moment/locale/sk.js",
"./sk.js": "./node_modules/handsontable/node_modules/moment/locale/sk.js",
"./sl": "./node_modules/handsontable/node_modules/moment/locale/sl.js",
"./sl.js": "./node_modules/handsontable/node_modules/moment/locale/sl.js",
"./sq": "./node_modules/handsontable/node_modules/moment/locale/sq.js",
"./sq.js": "./node_modules/handsontable/node_modules/moment/locale/sq.js",
"./sr": "./node_modules/handsontable/node_modules/moment/locale/sr.js",
"./sr-cyrl": "./node_modules/handsontable/node_modules/moment/locale/sr-cyrl.js",
"./sr-cyrl.js": "./node_modules/handsontable/node_modules/moment/locale/sr-cyrl.js",
"./sr.js": "./node_modules/handsontable/node_modules/moment/locale/sr.js",
"./ss": "./node_modules/handsontable/node_modules/moment/locale/ss.js",
"./ss.js": "./node_modules/handsontable/node_modules/moment/locale/ss.js",
"./sv": "./node_modules/handsontable/node_modules/moment/locale/sv.js",
"./sv.js": "./node_modules/handsontable/node_modules/moment/locale/sv.js",
"./sw": "./node_modules/handsontable/node_modules/moment/locale/sw.js",
"./sw.js": "./node_modules/handsontable/node_modules/moment/locale/sw.js",
"./ta": "./node_modules/handsontable/node_modules/moment/locale/ta.js",
"./ta.js": "./node_modules/handsontable/node_modules/moment/locale/ta.js",
"./te": "./node_modules/handsontable/node_modules/moment/locale/te.js",
"./te.js": "./node_modules/handsontable/node_modules/moment/locale/te.js",
"./tet": "./node_modules/handsontable/node_modules/moment/locale/tet.js",
"./tet.js": "./node_modules/handsontable/node_modules/moment/locale/tet.js",
"./tg": "./node_modules/handsontable/node_modules/moment/locale/tg.js",
"./tg.js": "./node_modules/handsontable/node_modules/moment/locale/tg.js",
"./th": "./node_modules/handsontable/node_modules/moment/locale/th.js",
"./th.js": "./node_modules/handsontable/node_modules/moment/locale/th.js",
"./tl-ph": "./node_modules/handsontable/node_modules/moment/locale/tl-ph.js",
"./tl-ph.js": "./node_modules/handsontable/node_modules/moment/locale/tl-ph.js",
"./tlh": "./node_modules/handsontable/node_modules/moment/locale/tlh.js",
"./tlh.js": "./node_modules/handsontable/node_modules/moment/locale/tlh.js",
"./tr": "./node_modules/handsontable/node_modules/moment/locale/tr.js",
"./tr.js": "./node_modules/handsontable/node_modules/moment/locale/tr.js",
"./tzl": "./node_modules/handsontable/node_modules/moment/locale/tzl.js",
"./tzl.js": "./node_modules/handsontable/node_modules/moment/locale/tzl.js",
"./tzm": "./node_modules/handsontable/node_modules/moment/locale/tzm.js",
"./tzm-latn": "./node_modules/handsontable/node_modules/moment/locale/tzm-latn.js",
"./tzm-latn.js": "./node_modules/handsontable/node_modules/moment/locale/tzm-latn.js",
"./tzm.js": "./node_modules/handsontable/node_modules/moment/locale/tzm.js",
"./ug-cn": "./node_modules/handsontable/node_modules/moment/locale/ug-cn.js",
"./ug-cn.js": "./node_modules/handsontable/node_modules/moment/locale/ug-cn.js",
"./uk": "./node_modules/handsontable/node_modules/moment/locale/uk.js",
"./uk.js": "./node_modules/handsontable/node_modules/moment/locale/uk.js",
"./ur": "./node_modules/handsontable/node_modules/moment/locale/ur.js",
"./ur.js": "./node_modules/handsontable/node_modules/moment/locale/ur.js",
"./uz": "./node_modules/handsontable/node_modules/moment/locale/uz.js",
"./uz-latn": "./node_modules/handsontable/node_modules/moment/locale/uz-latn.js",
"./uz-latn.js": "./node_modules/handsontable/node_modules/moment/locale/uz-latn.js",
"./uz.js": "./node_modules/handsontable/node_modules/moment/locale/uz.js",
"./vi": "./node_modules/handsontable/node_modules/moment/locale/vi.js",
"./vi.js": "./node_modules/handsontable/node_modules/moment/locale/vi.js",
"./x-pseudo": "./node_modules/handsontable/node_modules/moment/locale/x-pseudo.js",
"./x-pseudo.js": "./node_modules/handsontable/node_modules/moment/locale/x-pseudo.js",
"./yo": "./node_modules/handsontable/node_modules/moment/locale/yo.js",
"./yo.js": "./node_modules/handsontable/node_modules/moment/locale/yo.js",
"./zh-cn": "./node_modules/handsontable/node_modules/moment/locale/zh-cn.js",
"./zh-cn.js": "./node_modules/handsontable/node_modules/moment/locale/zh-cn.js",
"./zh-hk": "./node_modules/handsontable/node_modules/moment/locale/zh-hk.js",
"./zh-hk.js": "./node_modules/handsontable/node_modules/moment/locale/zh-hk.js",
"./zh-tw": "./node_modules/handsontable/node_modules/moment/locale/zh-tw.js",
"./zh-tw.js": "./node_modules/handsontable/node_modules/moment/locale/zh-tw.js"
};
function webpackContext(req) {
var id = webpackContextResolve(req);
return __webpack_require__(id);
}
function webpackContextResolve(req) {
if(!__webpack_require__.o(map, req)) {
var e = new Error("Cannot find module '" + req + "'");
e.code = 'MODULE_NOT_FOUND';
throw e;
}
return map[req];
}
webpackContext.keys = function webpackContextKeys() {
return Object.keys(map);
};
webpackContext.resolve = webpackContextResolve;
module.exports = webpackContext;
webpackContext.id = "./node_modules/handsontable/node_modules/moment/locale sync recursive ^\\.\\/.*$";
/***/ }),
/***/ "./vendor/bower_js/jquery-timeentry/jquery.plugin.min.js":
/*!***************************************************************!*\
!*** ./vendor/bower_js/jquery-timeentry/jquery.plugin.min.js ***!
\***************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
__webpack_require__(/*! core-js/modules/es.function.name.js */ "./node_modules/core-js/modules/es.function.name.js");
__webpack_require__(/*! core-js/modules/es.array.slice.js */ "./node_modules/core-js/modules/es.array.slice.js");
__webpack_require__(/*! core-js/modules/es.array.concat.js */ "./node_modules/core-js/modules/es.array.concat.js");
__webpack_require__(/*! core-js/modules/es.regexp.exec.js */ "./node_modules/core-js/modules/es.regexp.exec.js");
__webpack_require__(/*! core-js/modules/es.string.replace.js */ "./node_modules/core-js/modules/es.string.replace.js");
__webpack_require__(/*! core-js/modules/es.string.match.js */ "./node_modules/core-js/modules/es.string.match.js");
__webpack_require__(/*! core-js/modules/es.symbol.js */ "./node_modules/core-js/modules/es.symbol.js");
__webpack_require__(/*! core-js/modules/es.symbol.description.js */ "./node_modules/core-js/modules/es.symbol.description.js");
__webpack_require__(/*! core-js/modules/es.object.to-string.js */ "./node_modules/core-js/modules/es.object.to-string.js");
__webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ "./node_modules/core-js/modules/es.symbol.iterator.js");
__webpack_require__(/*! core-js/modules/es.array.iterator.js */ "./node_modules/core-js/modules/es.array.iterator.js");
__webpack_require__(/*! core-js/modules/es.string.iterator.js */ "./node_modules/core-js/modules/es.string.iterator.js");
__webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ "./node_modules/core-js/modules/web.dom-collections.iterator.js");
/** Abstract base class for collection plugins v1.0.1.
Written by Keith Wood (kbwood{at}iinet.com.au) December 2013.
Licensed under the MIT (https://github.com/jquery/jquery/blob/master/MIT-LICENSE.txt) license. */
(function () {
var j = false;
window.JQClass = function () {};
JQClass.classes = {};
JQClass.extend = function extender(f) {
var g = this.prototype;
j = true;
var h = new this();
j = false;
for (var i in f) {
h[i] = typeof f[i] == 'function' && typeof g[i] == 'function' ? function (d, e) {
return function () {
var b = this._super;
this._super = function (a) {
return g[d].apply(this, a || []);
};
var c = e.apply(this, arguments);
this._super = b;
return c;
};
}(i, f[i]) : f[i];
}
function JQClass() {
if (!j && this._init) {
this._init.apply(this, arguments);
}
}
JQClass.prototype = h;
JQClass.prototype.constructor = JQClass;
JQClass.extend = extender;
return JQClass;
};
})();
(function ($) {
JQClass.classes.JQPlugin = JQClass.extend({
name: 'plugin',
defaultOptions: {},
regionalOptions: {},
_getters: [],
_getMarker: function _getMarker() {
return 'is-' + this.name;
},
_init: function _init() {
$.extend(this.defaultOptions, this.regionalOptions && this.regionalOptions[''] || {});
var c = camelCase(this.name);
$[c] = this;
$.fn[c] = function (a) {
var b = Array.prototype.slice.call(arguments, 1);
if ($[c]._isNotChained(a, b)) {
return $[c][a].apply($[c], [this[0]].concat(b));
}
return this.each(function () {
if (typeof a === 'string') {
if (a[0] === '_' || !$[c][a]) {
throw 'Unknown method: ' + a;
}
$[c][a].apply($[c], [this].concat(b));
} else {
$[c]._attach(this, a);
}
});
};
},
setDefaults: function setDefaults(a) {
$.extend(this.defaultOptions, a || {});
},
_isNotChained: function _isNotChained(a, b) {
if (a === 'option' && (b.length === 0 || b.length === 1 && typeof b[0] === 'string')) {
return true;
}
return $.inArray(a, this._getters) > -1;
},
_attach: function _attach(a, b) {
a = $(a);
if (a.hasClass(this._getMarker())) {
return;
}
a.addClass(this._getMarker());
b = $.extend({}, this.defaultOptions, this._getMetadata(a), b || {});
var c = $.extend({
name: this.name,
elem: a,
options: b
}, this._instSettings(a, b));
a.data(this.name, c);
this._postAttach(a, c);
this.option(a, b);
},
_instSettings: function _instSettings(a, b) {
return {};
},
_postAttach: function _postAttach(a, b) {},
_getMetadata: function _getMetadata(d) {
try {
var f = d.data(this.name.toLowerCase()) || '';
f = f.replace(/'/g, '"');
f = f.replace(/([a-zA-Z0-9]+):/g, function (a, b, i) {
var c = f.substring(0, i).match(/"/g);
return !c || c.length % 2 === 0 ? '"' + b + '":' : b + ':';
});
f = $.parseJSON('{' + f + '}');
for (var g in f) {
var h = f[g];
if (typeof h === 'string' && h.match(/^new Date\((.*)\)$/)) {
f[g] = eval(h);
}
}
return f;
} catch (e) {
return {};
}
},
_getInst: function _getInst(a) {
return $(a).data(this.name) || {};
},
option: function option(a, b, c) {
a = $(a);
var d = a.data(this.name);
if (!b || typeof b === 'string' && c == null) {
var e = (d || {}).options;
return e && b ? e[b] : e;
}
if (!a.hasClass(this._getMarker())) {
return;
}
var e = b || {};
if (typeof b === 'string') {
e = {};
e[b] = c;
}
this._optionsChanged(a, d, e);
$.extend(d.options, e);
},
_optionsChanged: function _optionsChanged(a, b, c) {},
destroy: function destroy(a) {
a = $(a);
if (!a.hasClass(this._getMarker())) {
return;
}
this._preDestroy(a, this._getInst(a));
a.removeData(this.name).removeClass(this._getMarker());
},
_preDestroy: function _preDestroy(a, b) {}
});
function camelCase(c) {
return c.replace(/-([a-z])/g, function (a, b) {
return b.toUpperCase();
});
}
$.JQPlugin = {
createPlugin: function createPlugin(a, b) {
if (_typeof(a) === 'object') {
b = a;
a = 'JQPlugin';
}
a = camelCase(a);
var c = camelCase(b.name);
JQClass.classes[c] = JQClass.classes[a].extend(b);
new JQClass.classes[c]();
}
};
})(jQuery);
/***/ }),
/***/ "./vendor/bower_js/jquery-timeentry/jquery.timeentry.css":
/*!***************************************************************!*\
!*** ./vendor/bower_js/jquery-timeentry/jquery.timeentry.css ***!
\***************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
// extracted by mini-css-extract-plugin
/***/ }),
/***/ "./vendor/bower_js/jquery-timeentry/jquery.timeentry.min.js":
/*!******************************************************************!*\
!*** ./vendor/bower_js/jquery-timeentry/jquery.timeentry.min.js ***!
\******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
__webpack_require__(/*! core-js/modules/es.function.name.js */ "./node_modules/core-js/modules/es.function.name.js");
__webpack_require__(/*! core-js/modules/web.timers.js */ "./node_modules/core-js/modules/web.timers.js");
__webpack_require__(/*! core-js/modules/es.date.to-string.js */ "./node_modules/core-js/modules/es.date.to-string.js");
__webpack_require__(/*! core-js/modules/es.array.find.js */ "./node_modules/core-js/modules/es.array.find.js");
__webpack_require__(/*! core-js/modules/es.array.map.js */ "./node_modules/core-js/modules/es.array.map.js");
__webpack_require__(/*! core-js/modules/es.regexp.exec.js */ "./node_modules/core-js/modules/es.regexp.exec.js");
__webpack_require__(/*! core-js/modules/es.string.split.js */ "./node_modules/core-js/modules/es.string.split.js");
__webpack_require__(/*! core-js/modules/es.parse-int.js */ "./node_modules/core-js/modules/es.parse-int.js");
__webpack_require__(/*! core-js/modules/es.array.index-of.js */ "./node_modules/core-js/modules/es.array.index-of.js");
__webpack_require__(/*! core-js/modules/es.array.slice.js */ "./node_modules/core-js/modules/es.array.slice.js");
__webpack_require__(/*! core-js/modules/es.symbol.js */ "./node_modules/core-js/modules/es.symbol.js");
__webpack_require__(/*! core-js/modules/es.symbol.description.js */ "./node_modules/core-js/modules/es.symbol.description.js");
__webpack_require__(/*! core-js/modules/es.object.to-string.js */ "./node_modules/core-js/modules/es.object.to-string.js");
__webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ "./node_modules/core-js/modules/es.symbol.iterator.js");
__webpack_require__(/*! core-js/modules/es.array.iterator.js */ "./node_modules/core-js/modules/es.array.iterator.js");
__webpack_require__(/*! core-js/modules/es.string.iterator.js */ "./node_modules/core-js/modules/es.string.iterator.js");
__webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ "./node_modules/core-js/modules/web.dom-collections.iterator.js");
/* http://keith-wood.name/timeEntry.html
Time entry for jQuery v2.0.1.
Written by Keith Wood (kbwood{at}iinet.com.au) June 2007.
Available under the MIT (https://github.com/jquery/jquery/blob/master/MIT-LICENSE.txt) license.
Please attribute the author if you use it. */
(function ($) {
var n = 'timeEntry';
$.JQPlugin.createPlugin({
name: n,
defaultOptions: {
appendText: '',
showSeconds: false,
unlimitedHours: false,
timeSteps: [1, 1, 1],
initialField: null,
noSeparatorEntry: false,
tabToExit: false,
useMouseWheel: true,
defaultTime: null,
minTime: null,
maxTime: null,
spinnerImage: 'spinnerDefault.png',
spinnerSize: [20, 20, 8],
spinnerBigImage: '',
spinnerBigSize: [40, 40, 16],
spinnerIncDecOnly: false,
spinnerRepeat: [500, 250],
beforeShow: null,
beforeSetTime: null
},
regionalOptions: {
'': {
show24Hours: false,
separator: ':',
ampmPrefix: '',
ampmNames: ['AM', 'PM'],
spinnerTexts: ['Now', 'Previous field', 'Next field', 'Increment', 'Decrement']
}
},
_getters: ['getOffset', 'getTime', 'isDisabled'],
_appendClass: n + '-append',
_controlClass: n + '-control',
_expandClass: n + '-expand',
_disabledInputs: [],
_instSettings: function _instSettings(a, b) {
return {
_field: 0,
_selectedHour: 0,
_selectedMinute: 0,
_selectedSecond: 0
};
},
_postAttach: function _postAttach(b, c) {
b.on('focus.' + c.name, this._doFocus).on('blur.' + c.name, this._doBlur).on('click.' + c.name, this._doClick).on('keydown.' + c.name, this._doKeyDown).on('keypress.' + c.name, this._doKeyPress).on('paste.' + c.name, function (a) {
setTimeout(function () {
o._parseTime(c);
}, 1);
});
},
_optionsChanged: function _optionsChanged(a, b, c) {
var d = this._extractTime(b);
$.extend(b.options, c);
b.options.show24Hours = b.options.show24Hours || b.options.unlimitedHours;
b._field = 0;
if (d) {
this._setTime(b, new Date(0, 0, 0, d[0], d[1], d[2]));
}
a.next('span.' + this._appendClass).remove();
a.parent().find('span.' + this._controlClass).remove();
if ($.fn.mousewheel) {
a.unmousewheel();
}
var e = !b.options.spinnerImage ? null : $(' ');
a.after(b.options.appendText ? '' + b.options.appendText + ' ' : '').after(e || '');
if (b.options.useMouseWheel && $.fn.mousewheel) {
a.mousewheel(this._doMouseWheel);
}
if (e) {
e.mousedown(this._handleSpinner).mouseup(this._endSpinner).mouseover(this._expandSpinner).mouseout(this._endSpinner).mousemove(this._describeSpinner);
}
},
enable: function enable(a) {
this._enableDisable(a, false);
},
disable: function disable(a) {
this._enableDisable(a, true);
},
_enableDisable: function _enableDisable(b, c) {
var d = this._getInst(b);
if (!d) {
return;
}
b.disabled = c;
if (b.nextSibling && b.nextSibling.nodeName.toLowerCase() === 'span') {
this._changeSpinner(d, b.nextSibling, c ? 5 : -1);
}
this._disabledInputs = $.map(this._disabledInputs, function (a) {
return a === b ? null : a;
});
if (c) {
this._disabledInputs.push(b);
}
},
isDisabled: function isDisabled(a) {
return $.inArray(a, this._disabledInputs) > -1;
},
_preDestroy: function _preDestroy(b, c) {
b = $(b).off('.' + n);
if ($.fn.mousewheel) {
b.unmousewheel();
}
this._disabledInputs = $.map(this._disabledInputs, function (a) {
return a === b[0] ? null : a;
});
b.siblings('.' + this._appendClass + ',.' + this._controlClass).remove();
},
setTime: function setTime(a, b) {
var c = this._getInst(a);
if (c) {
if (b === null || b === '') {
$(a).val('');
} else {
this._setTime(c, b ? $.isArray(b) ? b : _typeof(b) === 'object' ? new Date(b.getTime()) : b : null);
}
}
},
getTime: function getTime(a) {
var b = this._getInst(a);
var c = b ? this._extractTime(b) : null;
return !c ? null : new Date(0, 0, 0, c[0], c[1], c[2]);
},
getOffset: function getOffset(a) {
var b = this._getInst(a);
var c = b ? this._extractTime(b) : null;
return !c ? 0 : (c[0] * 3600 + c[1] * 60 + c[2]) * 1000;
},
_doFocus: function _doFocus(a) {
var b = a.nodeName && a.nodeName.toLowerCase() === 'input' ? a : this;
if (o._lastInput === b || o.isDisabled(b)) {
o._focussed = false;
return;
}
var c = o._getInst(b);
o._focussed = true;
o._lastInput = b;
o._blurredInput = null;
$.extend(c.options, $.isFunction(c.options.beforeShow) ? c.options.beforeShow.apply(b, [b]) : {});
o._parseTime(c, a.nodeName ? null : a);
setTimeout(function () {
o._showField(c);
}, 10);
},
_doBlur: function _doBlur(a) {
o._blurredInput = o._lastInput;
o._lastInput = null;
},
_doClick: function _doClick(a) {
var b = a.target;
var c = o._getInst(b);
var d = c._field;
if (!o._focussed) {
c._field = o._getSelection(c, b, a);
}
if (d !== c._field) {
c._lastChr = '';
}
o._showField(c);
o._focussed = false;
},
_getSelection: function _getSelection(b, c, d) {
var e = 0;
var f = [b.elem.val().split(b.options.separator)[0].length, 2, 2];
if (c.selectionStart !== null) {
var g = 0;
for (var h = 0; h <= Math.max(1, b._secondField, b._ampmField); h++) {
g += h !== b._ampmField ? f[h] + b.options.separator.length : b.options.ampmPrefix.length + b.options.ampmNames[0].length;
e = h;
if (c.selectionStart < g) {
break;
}
}
} else if (c.createTextRange && d != null) {
var i = $(d.srcElement);
var j = c.createTextRange();
var k = function k(a) {
return {
thin: 2,
medium: 4,
thick: 6
}[a] || a;
};
var l = d.clientX + document.documentElement.scrollLeft - (i.offset().left + parseInt(k(i.css('border-left-width')), 10)) - j.offsetLeft;
for (var h = 0; h <= Math.max(1, b._secondField, b._ampmField); h++) {
var g = h !== b._ampmField ? h * fieldSize + 2 : b._ampmField * fieldSize + b.options.ampmPrefix.length + b.options.ampmNames[0].length;
j.collapse();
j.moveEnd('character', g);
e = h;
if (l < j.boundingWidth) {
break;
}
}
}
return e;
},
_doKeyDown: function _doKeyDown(a) {
if (a.keyCode >= 48) {
return true;
}
var b = o._getInst(a.target);
switch (a.keyCode) {
case 9:
return b.options.tabToExit ? true : a.shiftKey ? o._changeField(b, -1, true) : o._changeField(b, +1, true);
case 35:
if (a.ctrlKey) {
o._setValue(b, '');
} else {
b._field = Math.max(1, b._secondField, b._ampmField);
o._adjustField(b, 0);
}
break;
case 36:
if (a.ctrlKey) {
o._setTime(b);
} else {
b._field = 0;
o._adjustField(b, 0);
}
break;
case 37:
o._changeField(b, -1, false);
break;
case 38:
o._adjustField(b, +1);
break;
case 39:
o._changeField(b, +1, false);
break;
case 40:
o._adjustField(b, -1);
break;
case 46:
o._setValue(b, '');
break;
case 8:
b._lastChr = '';
default:
return true;
}
return false;
},
_doKeyPress: function _doKeyPress(a) {
var b = String.fromCharCode(a.charCode === undefined ? a.keyCode : a.charCode);
if (b < ' ') {
return true;
}
var c = o._getInst(a.target);
o._handleKeyPress(c, b);
return false;
},
_handleKeyPress: function _handleKeyPress(a, b) {
if (b === a.options.separator) {
this._changeField(a, +1, false);
} else if (b >= '0' && b <= '9') {
var c = parseInt(b, 10);
var d = parseInt(a._lastChr + b, 10);
var e = a._field !== 0 ? a._selectedHour : a.options.unlimitedHours ? d : a.options.show24Hours ? d < 24 ? d : c : (d >= 1 && d <= 12 ? d : c > 0 ? c : a._selectedHour) % 12 + (a._selectedHour >= 12 ? 12 : 0);
var f = a._field !== 1 ? a._selectedMinute : d < 60 ? d : c;
var g = a._field !== a._secondField ? a._selectedSecond : d < 60 ? d : c;
var h = this._constrainTime(a, [e, f, g]);
this._setTime(a, a.options.unlimitedHours ? h : new Date(0, 0, 0, h[0], h[1], h[2]));
if (a.options.noSeparatorEntry && a._lastChr) {
this._changeField(a, +1, false);
} else {
a._lastChr = a.options.unlimitedHours && a._field === 0 ? a._lastChr + b : b;
}
} else if (!a.options.show24Hours) {
b = b.toLowerCase();
if (b === a.options.ampmNames[0].substring(0, 1).toLowerCase() && a._selectedHour >= 12 || b === a.options.ampmNames[1].substring(0, 1).toLowerCase() && a._selectedHour < 12) {
var i = a._field;
a._field = a._ampmField;
this._adjustField(a, +1);
a._field = i;
this._showField(a);
}
}
},
_doMouseWheel: function _doMouseWheel(a, b) {
if (o.isDisabled(a.target)) {
return;
}
var c = o._getInst(a.target);
c.elem.focus();
if (!c.elem.val()) {
o._parseTime(c);
}
o._adjustField(c, b);
a.preventDefault();
},
_expandSpinner: function _expandSpinner(b) {
var c = o._getSpinnerTarget(b);
var d = o._getInst(o._getInput(c));
if (o.isDisabled(d.elem[0])) {
return;
}
if (d.options.spinnerBigImage) {
d._expanded = true;
var e = $(c).offset();
var f = null;
$(c).parents().each(function () {
var a = $(this);
if (a.css('position') === 'relative' || a.css('position') === 'absolute') {
f = a.offset();
}
return !f;
});
$('
').mousedown(o._handleSpinner).mouseup(o._endSpinner).mouseout(o._endExpand).mousemove(o._describeSpinner).insertAfter(c);
}
},
_getInput: function _getInput(a) {
return $(a).siblings('.' + this._getMarker())[0];
},
_describeSpinner: function _describeSpinner(a) {
var b = o._getSpinnerTarget(a);
var c = o._getInst(o._getInput(b));
b.title = c.options.spinnerTexts[o._getSpinnerRegion(c, a)];
},
_handleSpinner: function _handleSpinner(a) {
var b = o._getSpinnerTarget(a);
var c = o._getInput(b);
if (o.isDisabled(c)) {
return;
}
if (c === o._blurredInput) {
o._lastInput = c;
o._blurredInput = null;
}
var d = o._getInst(c);
o._doFocus(c);
var e = o._getSpinnerRegion(d, a);
o._changeSpinner(d, b, e);
o._actionSpinner(d, e);
o._timer = null;
o._handlingSpinner = true;
if (e >= 3 && d.options.spinnerRepeat[0]) {
o._timer = setTimeout(function () {
o._repeatSpinner(d, e);
}, d.options.spinnerRepeat[0]);
$(b).one('mouseout', o._releaseSpinner).one('mouseup', o._releaseSpinner);
}
},
_actionSpinner: function _actionSpinner(a, b) {
if (!a.elem.val()) {
o._parseTime(a);
}
switch (b) {
case 0:
this._setTime(a);
break;
case 1:
this._changeField(a, -1, false);
break;
case 2:
this._changeField(a, +1, false);
break;
case 3:
this._adjustField(a, +1);
break;
case 4:
this._adjustField(a, -1);
break;
}
},
_repeatSpinner: function _repeatSpinner(a, b) {
if (!o._timer) {
return;
}
o._lastInput = o._blurredInput;
this._actionSpinner(a, b);
this._timer = setTimeout(function () {
o._repeatSpinner(a, b);
}, a.options.spinnerRepeat[1]);
},
_releaseSpinner: function _releaseSpinner(a) {
clearTimeout(o._timer);
o._timer = null;
},
_endExpand: function _endExpand(a) {
o._timer = null;
var b = o._getSpinnerTarget(a);
var c = o._getInput(b);
var d = o._getInst(c);
$(b).remove();
d._expanded = false;
},
_endSpinner: function _endSpinner(a) {
o._timer = null;
var b = o._getSpinnerTarget(a);
var c = o._getInput(b);
var d = o._getInst(c);
if (!o.isDisabled(c)) {
o._changeSpinner(d, b, -1);
}
if (o._handlingSpinner) {
o._lastInput = o._blurredInput;
}
if (o._lastInput && o._handlingSpinner) {
o._showField(d);
}
o._handlingSpinner = false;
},
_getSpinnerTarget: function _getSpinnerTarget(a) {
return a.target || a.srcElement;
},
_getSpinnerRegion: function _getSpinnerRegion(a, b) {
var c = this._getSpinnerTarget(b);
var d = $(c).offset();
var e = [document.documentElement.scrollLeft || document.body.scrollLeft, document.documentElement.scrollTop || document.body.scrollTop];
var f = a.options.spinnerIncDecOnly ? 99 : b.clientX + e[0] - d.left;
var g = b.clientY + e[1] - d.top;
var h = a.options[a._expanded ? 'spinnerBigSize' : 'spinnerSize'];
var i = a.options.spinnerIncDecOnly ? 99 : h[0] - 1 - f;
var j = h[1] - 1 - g;
if (h[2] > 0 && Math.abs(f - i) <= h[2] && Math.abs(g - j) <= h[2]) {
return 0;
}
var k = Math.min(f, g, i, j);
return k === f ? 1 : k === i ? 2 : k === g ? 3 : 4;
},
_changeSpinner: function _changeSpinner(a, b, c) {
$(b).css('background-position', '-' + (c + 1) * a.options[a._expanded ? 'spinnerBigSize' : 'spinnerSize'][0] + 'px 0px');
},
_parseTime: function _parseTime(a, b) {
var c = this._extractTime(a);
if (c) {
a._selectedHour = c[0];
a._selectedMinute = c[1];
a._selectedSecond = c[2];
} else {
var d = this._constrainTime(a);
a._selectedHour = d[0];
a._selectedMinute = d[1];
a._selectedSecond = a.options.showSeconds ? d[2] : 0;
}
a._secondField = a.options.showSeconds ? 2 : -1;
a._ampmField = a.options.show24Hours ? -1 : a.options.showSeconds ? 3 : 2;
a._lastChr = '';
var e = function e() {
if (a.elem.val() !== '') {
o._showTime(a);
}
};
if (typeof a.options.initialField === 'number') {
a._field = Math.max(0, Math.min(Math.max(1, a._secondField, a._ampmField), a.options.initialField));
e();
} else {
setTimeout(function () {
a._field = o._getSelection(a, a.elem[0], b);
e();
}, 0);
}
},
_extractTime: function _extractTime(a, b) {
b = b || a.elem.val();
var c = b.split(a.options.separator);
if (a.options.separator === '' && b !== '') {
c[0] = b.substring(0, 2);
c[1] = b.substring(2, 4);
c[2] = b.substring(4, 6);
}
if (c.length >= 2) {
var d = !a.options.show24Hours && b.indexOf(a.options.ampmNames[0]) > -1;
var e = !a.options.show24Hours && b.indexOf(a.options.ampmNames[1]) > -1;
var f = parseInt(c[0], 10);
f = isNaN(f) ? 0 : f;
f = ((d || e) && f === 12 ? 0 : f) + (e ? 12 : 0);
var g = parseInt(c[1], 10);
g = isNaN(g) ? 0 : g;
var h = c.length >= 3 ? parseInt(c[2], 10) : 0;
h = isNaN(h) || !a.options.showSeconds ? 0 : h;
return this._constrainTime(a, [f, g, h]);
}
return null;
},
_constrainTime: function _constrainTime(a, b) {
var c = b !== null && b !== undefined;
if (!c) {
var d = this._determineTime(a.options.defaultTime, a) || new Date();
b = [d.getHours(), d.getMinutes(), d.getSeconds()];
}
var e = false;
for (var i = 0; i < a.options.timeSteps.length; i++) {
if (e) {
b[i] = 0;
} else if (a.options.timeSteps[i] > 1) {
b[i] = Math.round(b[i] / a.options.timeSteps[i]) * a.options.timeSteps[i];
e = true;
}
}
return b;
},
_showTime: function _showTime(a) {
var b = (a.options.unlimitedHours ? a._selectedHour : this._formatNumber(a.options.show24Hours ? a._selectedHour : (a._selectedHour + 11) % 12 + 1)) + a.options.separator + this._formatNumber(a._selectedMinute) + (a.options.showSeconds ? a.options.separator + this._formatNumber(a._selectedSecond) : '') + (a.options.show24Hours ? '' : a.options.ampmPrefix + a.options.ampmNames[a._selectedHour < 12 ? 0 : 1]);
this._setValue(a, b);
this._showField(a);
},
_showField: function _showField(a) {
var b = a.elem[0];
if (a.elem.is(':hidden') || o._lastInput !== b) {
return;
}
var c = [a.elem.val().split(a.options.separator)[0].length, 2, 2];
var d = 0;
var e = 0;
while (e < a._field) {
d += c[e] + (e === Math.max(1, a._secondField) ? 0 : a.options.separator.length);
e++;
}
var f = d + (a._field !== a._ampmField ? c[e] : a.options.ampmPrefix.length + a.options.ampmNames[0].length);
if (b.setSelectionRange) {
b.setSelectionRange(d, f);
} else if (b.createTextRange) {
var g = b.createTextRange();
g.moveStart('character', d);
g.moveEnd('character', f - a.elem.val().length);
g.select();
}
if (!b.disabled) {
b.focus();
}
},
_formatNumber: function _formatNumber(a) {
return (a < 10 ? '0' : '') + a;
},
_setValue: function _setValue(a, b) {
if (b !== a.elem.val()) {
a.elem.val(b).trigger('change');
}
},
_changeField: function _changeField(a, b, c) {
var d = a.elem.val() === '' || a._field === (b === -1 ? 0 : Math.max(1, a._secondField, a._ampmField));
if (!d) {
a._field += b;
}
this._showField(a);
a._lastChr = '';
return d && c;
},
_adjustField: function _adjustField(a, b) {
if (a.elem.val() === '') {
b = 0;
}
if (a.options.unlimitedHours) {
this._setTime(a, [a._selectedHour + (a._field === 0 ? b * a.options.timeSteps[0] : 0), a._selectedMinute + (a._field === 1 ? b * a.options.timeSteps[1] : 0), a._selectedSecond + (a._field === a._secondField ? b * a.options.timeSteps[2] : 0)]);
} else {
this._setTime(a, new Date(0, 0, 0, a._selectedHour + (a._field === 0 ? b * a.options.timeSteps[0] : 0) + (a._field === a._ampmField ? b * 12 : 0), a._selectedMinute + (a._field === 1 ? b * a.options.timeSteps[1] : 0), a._selectedSecond + (a._field === a._secondField ? b * a.options.timeSteps[2] : 0)));
}
},
_setTime: function _setTime(a, b) {
if (a.options.unlimitedHours && $.isArray(b)) {
var c = b;
} else {
b = this._determineTime(b, a);
var c = b ? [b.getHours(), b.getMinutes(), b.getSeconds()] : null;
}
c = this._constrainTime(a, c);
b = new Date(0, 0, 0, c[0], c[1], c[2]);
var b = this._normaliseTime(b);
var d = this._normaliseTime(this._determineTime(a.options.minTime, a));
var e = this._normaliseTime(this._determineTime(a.options.maxTime, a));
if (a.options.unlimitedHours) {
while (c[2] < 0) {
c[2] += 60;
c[1]--;
}
while (c[2] > 59) {
c[2] -= 60;
c[1]++;
}
while (c[1] < 0) {
c[1] += 60;
c[0]--;
}
while (c[1] > 59) {
c[1] -= 60;
c[0]++;
}
d = a.options.minTime != null && $.isArray(a.options.minTime) ? a.options.minTime : [0, 0, 0];
if (c[0] < d[0]) {
c = d.slice(0, 3);
} else if (c[0] === d[0]) {
if (c[1] < d[1]) {
c[1] = d[1];
c[2] = d[2];
} else if (c[1] === d[1]) {
if (c[2] < d[2]) {
c[2] = d[2];
}
}
}
if (a.options.maxTime != null && $.isArray(a.options.maxTime)) {
if (c[0] > a.options.maxTime[0]) {
c = a.options.maxTime.slice(0, 3);
} else if (c[0] === a.options.maxTime[0]) {
if (c[1] > a.options.maxTime[1]) {
c[1] = a.options.maxTime[1];
c[2] = a.options.maxTime[2];
} else if (c[1] === a.options.maxTime[1]) {
if (c[2] > a.options.maxTime[2]) {
c[2] = a.options.maxTime[2];
}
}
}
}
} else {
if (d && e && d > e) {
if (b < d && b > e) {
b = Math.abs(b - d) < Math.abs(b - e) ? d : e;
}
} else {
b = d && b < d ? d : e && b > e ? e : b;
}
c[0] = b.getHours();
c[1] = b.getMinutes();
c[2] = b.getSeconds();
}
if ($.isFunction(a.options.beforeSetTime)) {
b = a.options.beforeSetTime.apply(a.elem[0], [this.getTime(a.elem[0]), b, d, e]);
c[0] = b.getHours();
c[1] = b.getMinutes();
c[2] = b.getSeconds();
}
a._selectedHour = c[0];
a._selectedMinute = c[1];
a._selectedSecond = c[2];
this._showTime(a);
},
_determineTime: function _determineTime(i, j) {
var k = function k(a) {
var b = new Date();
b.setTime(b.getTime() + a * 1000);
return b;
};
var l = function l(a) {
var b = o._extractTime(j, a);
var c = new Date();
var d = b ? b[0] : c.getHours();
var e = b ? b[1] : c.getMinutes();
var f = b ? b[2] : c.getSeconds();
if (!b) {
var g = /([+-]?[0-9]+)\s*(s|S|m|M|h|H)?/g;
var h = g.exec(a);
while (h) {
switch (h[2] || 's') {
case 's':
case 'S':
f += parseInt(h[1], 10);
break;
case 'm':
case 'M':
e += parseInt(h[1], 10);
break;
case 'h':
case 'H':
d += parseInt(h[1], 10);
break;
}
h = g.exec(a);
}
}
c = new Date(0, 0, 10, d, e, f, 0);
if (/^!/.test(a)) {
if (c.getDate() > 10) {
c = new Date(0, 0, 10, 23, 59, 59);
} else if (c.getDate() < 10) {
c = new Date(0, 0, 10, 0, 0, 0);
}
}
return c;
};
var m = function m(a) {
return new Date(0, 0, 0, a[0], a[1] || 0, a[2] || 0, 0);
};
return i ? typeof i === 'string' ? l(i) : typeof i === 'number' ? k(i) : $.isArray(i) ? m(i) : i : null;
},
_normaliseTime: function _normaliseTime(a) {
if (!a) {
return null;
}
a.setFullYear(1900);
a.setMonth(0);
a.setDate(0);
return a;
}
});
var o = $.timeEntry;
})(jQuery);
/***/ }),
/***/ "./vendor/bower_js/jquery-ui-multiselect-widget-iride/jquery.multiselect.css":
/*!***********************************************************************************!*\
!*** ./vendor/bower_js/jquery-ui-multiselect-widget-iride/jquery.multiselect.css ***!
\***********************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
// extracted by mini-css-extract-plugin
/***/ }),
/***/ "./vendor/bower_js/jquery-ui-multiselect-widget-iride/src/jquery.multiselect.js":
/*!**************************************************************************************!*\
!*** ./vendor/bower_js/jquery-ui-multiselect-widget-iride/src/jquery.multiselect.js ***!
\**************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
__webpack_require__(/*! core-js/modules/es.array.find.js */ "./node_modules/core-js/modules/es.array.find.js");
__webpack_require__(/*! core-js/modules/es.array.join.js */ "./node_modules/core-js/modules/es.array.join.js");
__webpack_require__(/*! core-js/modules/es.array.filter.js */ "./node_modules/core-js/modules/es.array.filter.js");
__webpack_require__(/*! core-js/modules/es.array.map.js */ "./node_modules/core-js/modules/es.array.map.js");
__webpack_require__(/*! core-js/modules/es.regexp.exec.js */ "./node_modules/core-js/modules/es.regexp.exec.js");
__webpack_require__(/*! core-js/modules/es.string.replace.js */ "./node_modules/core-js/modules/es.string.replace.js");
__webpack_require__(/*! core-js/modules/es.function.bind.js */ "./node_modules/core-js/modules/es.function.bind.js");
__webpack_require__(/*! core-js/modules/web.timers.js */ "./node_modules/core-js/modules/web.timers.js");
__webpack_require__(/*! core-js/modules/es.string.match.js */ "./node_modules/core-js/modules/es.string.match.js");
__webpack_require__(/*! core-js/modules/es.parse-int.js */ "./node_modules/core-js/modules/es.parse-int.js");
__webpack_require__(/*! core-js/modules/es.symbol.js */ "./node_modules/core-js/modules/es.symbol.js");
__webpack_require__(/*! core-js/modules/es.symbol.description.js */ "./node_modules/core-js/modules/es.symbol.description.js");
__webpack_require__(/*! core-js/modules/es.object.to-string.js */ "./node_modules/core-js/modules/es.object.to-string.js");
__webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ "./node_modules/core-js/modules/es.symbol.iterator.js");
__webpack_require__(/*! core-js/modules/es.array.iterator.js */ "./node_modules/core-js/modules/es.array.iterator.js");
__webpack_require__(/*! core-js/modules/es.string.iterator.js */ "./node_modules/core-js/modules/es.string.iterator.js");
__webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ "./node_modules/core-js/modules/web.dom-collections.iterator.js");
/* jshint forin:true, noarg:true, noempty:true, eqeqeq:true, boss:true, undef:true, curly:true, browser:true, jquery:true */
/*
* jQuery MultiSelect UI Widget 2.0.1
* Copyright (c) 2012 Eric Hynds
*
* http://www.erichynds.com/jquery/jquery-ui-multiselect-widget/
*
* Depends:
* - jQuery 1.4.2+
* - jQuery UI 1.11 widget factory
*
* Optional:
* - jQuery UI effects
* - jQuery UI position utility
*
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
*/
(function ($, undefined) {
// Counter used to prevent collisions
var multiselectID = 0;
var $doc = $(document);
$.widget("ech.multiselect", {
// default options
options: {
header: true,
height: 175,
minWidth: 225,
classes: '',
checkAllText: 'Check all',
uncheckAllText: 'Uncheck all',
noneSelectedText: 'Select options',
showCheckAll: true,
showUncheckAll: true,
selectedText: '# selected',
selectedList: 0,
closeIcon: 'ui-icon-circle-close',
show: null,
hide: null,
autoOpen: false,
multiple: true,
position: {},
appendTo: null,
menuWidth: null,
selectedListSeparator: ', ',
disableInputsOnToggle: true,
groupColumns: false
},
_getAppendEl: function _getAppendEl() {
var element = this.options.appendTo;
if (element) {
element = element.jquery || element.nodeType ? $(element) : this.document.find(element).eq(0);
}
if (!element || !element[0]) {
element = this.element.closest(".ui-front, dialog");
}
if (!element.length) {
element = this.document[0].body;
}
return element;
},
_create: function _create() {
var el = this.element;
var o = this.options;
this.speed = $.fx.speeds._default; // default speed for effects
this._isOpen = false; // assume no
this.inputIdCounter = 0; // create a unique namespace for events that the widget
// factory cannot unbind automatically. Use eventNamespace if on
// jQuery UI 1.9+, and otherwise fallback to a custom string.
this._namespaceID = this.eventNamespace || 'multiselect' + multiselectID; // bump unique ID after assigning it to the widget instance
this.multiselectID = multiselectID++;
var button = (this.button = $(' ')).addClass('ui-multiselect ui-widget ui-state-default ui-corner-all').addClass(o.classes).attr({
'title': el.attr('title'),
'tabIndex': el.attr('tabIndex'),
'id': el.attr('id') ? el.attr('id') + '_ms' : null
}).prop('aria-haspopup', true).insertAfter(el);
this.buttonlabel = $(' ').html(o.noneSelectedText).appendTo(button);
this.menu = $('
').addClass('ui-multiselect-menu ui-widget ui-widget-content ui-corner-all').addClass(o.classes).appendTo(this._getAppendEl());
this.header = $('
').addClass('ui-widget-header ui-corner-all ui-multiselect-header ui-helper-clearfix').appendTo(this.menu);
this.headerLinkContainer = $('').addClass('ui-helper-reset').html(function () {
if (o.header === true) {
var header_lis = '';
if (o.showCheckAll) {
header_lis = '' + o.checkAllText + ' ';
}
if (o.showUncheckAll) {
header_lis += '' + o.uncheckAllText + ' ';
}
return header_lis;
} else if (typeof o.header === "string") {
return '' + o.header + ' ';
} else {
return '';
}
}).append(' ').appendTo(this.header);
var checkboxContainer = (this.checkboxContainer = $('')).addClass('ui-multiselect-checkboxes ui-helper-reset').appendTo(this.menu); // perform event bindings
this._bindEvents(); // build menu
this.refresh(true); // some addl. logic for single selects
if (!o.multiple) {
this.menu.addClass('ui-multiselect-single');
}
el.hide();
},
_init: function _init() {
if (this.options.header === false) {
this.header.hide();
}
if (!this.options.multiple) {
this.headerLinkContainer.find('.ui-multiselect-all, .ui-multiselect-none').hide();
} else {
this.headerLinkContainer.find('.ui-multiselect-all, .ui-multiselect-none').show();
}
if (this.options.autoOpen) {
this.open();
}
if (this.element.is(':disabled')) {
this.disable();
}
},
_makeOption: function _makeOption(option) {
var title = option.title ? option.title : null;
var value = option.value;
var id = this.element.attr('id') || this.multiselectID; // unique ID for the label & option tags
var inputID = 'ui-multiselect-' + this.multiselectID + '-' + (option.id || id + '-option-' + this.inputIdCounter++);
var isDisabled = option.disabled;
var isSelected = option.selected;
var labelClasses = ['ui-corner-all'];
var liClasses = [];
var o = this.options;
if (isDisabled) {
liClasses.push('ui-multiselect-disabled');
labelClasses.push('ui-state-disabled');
}
if (option.className) {
liClasses.push(option.className);
}
if (isSelected && !o.multiple) {
labelClasses.push('ui-state-active');
}
var $item = $(" ").addClass(liClasses.join(' '));
var $label = $(" ").attr({
"for": inputID,
"title": title
}).addClass(labelClasses.join(' ')).appendTo($item);
var $input = $(" ").attr({
"name": "multiselect_" + id,
"type": o.multiple ? "checkbox" : "radio",
"value": value,
"title": title,
"id": inputID,
"checked": isSelected ? "checked" : null,
"aria-selected": isSelected ? "true" : null,
"disabled": isDisabled ? "disabled" : null,
"aria-disabled": isDisabled ? "true" : null
}).data($(option).data()).appendTo($label);
$(" ").text($(option).text()).appendTo($label);
return $item;
},
_buildOptionList: function _buildOptionList(element, $appendTo) {
var self = this;
element.children().each(function () {
var $this = $(this);
if (this.tagName === 'OPTGROUP') {
var $optionGroup = $("").addClass('ui-multiselect-optgroup ' + this.className).appendTo($appendTo);
if (self.options.groupColumns) {
$optionGroup.addClass("ui-multiselect-columns");
}
$(" ").text(this.getAttribute('label')).appendTo($optionGroup);
self._buildOptionList($this, $optionGroup);
} else {
var $listItem = self._makeOption(this).appendTo($appendTo);
}
});
},
refresh: function refresh(init) {
var self = this;
var el = this.element;
var o = this.options;
var menu = this.menu;
var checkboxContainer = this.checkboxContainer;
var html = "";
var $dropdown = $("").addClass('ui-multiselect-checkboxes ui-helper-reset');
this.inputIdCounter = 0; // update header link container visibility if needed
if (this.options.header) {
if (!this.options.multiple) {
this.headerLinkContainer.find('.ui-multiselect-all, .ui-multiselect-none').hide();
} else {
this.headerLinkContainer.find('.ui-multiselect-all, .ui-multiselect-none').show();
}
}
this._buildOptionList(el, $dropdown);
this.menu.find(".ui-multiselect-checkboxes").remove();
this.menu.append($dropdown); // cache some moar useful elements
this.labels = menu.find('label');
this.inputs = this.labels.children('input');
this._setButtonWidth();
this.update(true); // broadcast refresh event; useful for widgets
if (!init) {
this._trigger('refresh');
}
},
// updates the button text. call refresh() to rebuild
update: function update(isDefault) {
var o = this.options;
var $inputs = this.inputs;
var $checked = $inputs.filter(':checked');
var numChecked = $checked.length;
var value;
if (numChecked === 0) {
value = o.noneSelectedText;
} else {
if ($.isFunction(o.selectedText)) {
value = o.selectedText.call(this, numChecked, $inputs.length, $checked.get());
} else if (/\d/.test(o.selectedList) && o.selectedList > 0 && numChecked <= o.selectedList) {
value = $checked.map(function () {
return $(this).next().text();
}).get().join(o.selectedListSeparator);
} else {
value = o.selectedText.replace('#', numChecked).replace('#', $inputs.length);
}
}
this._setButtonValue(value);
if (isDefault) {
this.button[0].defaultValue = value;
}
},
// this exists as a separate method so that the developer
// can easily override it.
_setButtonValue: function _setButtonValue(value) {
this.buttonlabel.text(value);
},
_bindButtonEvents: function _bindButtonEvents() {
var self = this;
var button = this.button;
function clickHandler() {
self[self._isOpen ? 'close' : 'open']();
return false;
} // webkit doesn't like it when you click on the span :(
button.find('span').bind('click.multiselect', clickHandler); // button events
button.bind({
click: clickHandler,
keypress: function keypress(e) {
switch (e.which) {
case 27: // esc
case 38: // up
case 37:
// left
self.close();
break;
case 39: // right
case 40:
// down
self.open();
break;
}
},
mouseenter: function mouseenter() {
if (!button.hasClass('ui-state-disabled')) {
$(this).addClass('ui-state-hover');
}
},
mouseleave: function mouseleave() {
$(this).removeClass('ui-state-hover');
},
focus: function focus() {
if (!button.hasClass('ui-state-disabled')) {
$(this).addClass('ui-state-focus');
}
},
blur: function blur() {
$(this).removeClass('ui-state-focus');
}
});
},
_bindMenuEvents: function _bindMenuEvents() {
var self = this; // optgroup label toggle support
this.menu.delegate('.ui-multiselect-optgroup a', 'click.multiselect', function (e) {
e.preventDefault();
var $this = $(this);
var $inputs = $this.parent().find('input:visible:not(:disabled)');
var nodes = $inputs.get();
var label = $this.text(); // trigger event and bail if the return is false
if (self._trigger('beforeoptgrouptoggle', e, {
inputs: nodes,
label: label
}) === false) {
return;
} // toggle inputs
self._toggleChecked($inputs.filter(':checked').length !== $inputs.length, $inputs);
self._trigger('optgrouptoggle', e, {
inputs: nodes,
label: label,
checked: nodes.length ? nodes[0].checked : null
});
}).delegate('label', 'mouseenter.multiselect', function () {
if (!$(this).hasClass('ui-state-disabled')) {
self.labels.removeClass('ui-state-hover');
$(this).addClass('ui-state-hover').find('input').focus();
}
}).delegate('label', 'keydown.multiselect', function (e) {
if (e.which === 82) {
return; //"r" key, often used for reload.
}
if (e.which > 111 && e.which < 124) {
return; //Keyboard function keys.
}
e.preventDefault();
switch (e.which) {
case 9:
// tab
if (e.shiftKey) {
self.menu.find(".ui-state-hover").removeClass("ui-state-hover");
self.header.find("li").last().find("a").focus();
} else {
self.close();
}
break;
case 27:
// esc
self.close();
break;
case 38: // up
case 40: // down
case 37: // left
case 39:
// right
self._traverse(e.which, this);
break;
case 13: // enter
case 32:
$(this).find('input')[0].click();
break;
case 65:
if (e.altKey) {
self.checkAll();
}
break;
case 85:
if (e.altKey) {
self.uncheckAll();
}
break;
}
}).delegate('input[type="checkbox"], input[type="radio"]', 'click.multiselect', function (e) {
var $this = $(this);
var val = this.value;
var optionText = $this.parent().find("span").text();
var checked = this.checked;
var tags = self.element.find('option'); // bail if this input is disabled or the event is cancelled
if (this.disabled || self._trigger('click', e, {
value: val,
text: optionText,
checked: checked
}) === false) {
e.preventDefault();
return;
} // make sure the input has focus. otherwise, the esc key
// won't close the menu after clicking an item.
$this.focus(); // toggle aria state
$this.prop('aria-selected', checked); // change state on the original option tags
tags.each(function () {
if (this.value === val) {
this.selected = checked;
} else if (!self.options.multiple) {
this.selected = false;
}
}); // some additional single select-specific logic
if (!self.options.multiple) {
self.labels.removeClass('ui-state-active');
$this.closest('label').toggleClass('ui-state-active', checked); // close menu
self.close();
} // fire change on the select box
self.element.trigger("change"); // setTimeout is to fix multiselect issue #14 and #47. caused by jQuery issue #3827
// http://bugs.jquery.com/ticket/3827
setTimeout($.proxy(self.update, self), 10);
});
},
_bindHeaderEvents: function _bindHeaderEvents() {
var self = this; // header links
this.header.delegate('a', 'click.multiselect', function (e) {
var $this = $(this);
if ($this.hasClass('ui-multiselect-close')) {
self.close();
} else if ($this.hasClass("ui-multiselect-all")) {
self.checkAll();
} else if ($this.hasClass("ui-multiselect-none")) {
self.uncheckAll();
}
e.preventDefault();
}).delegate('a', 'keydown.multiselect', function (e) {
switch (e.which) {
case 27:
self.close();
break;
case 9:
var $target = $(e.target);
if (e.shiftKey && !$target.parent().prev().length && !self.header.find(".ui-multiselect-filter").length || !$target.parent().next().length && !self.labels.length && !e.shiftKey) {
self.close();
e.preventDefault();
}
break;
}
});
},
// binds events
_bindEvents: function _bindEvents() {
var self = this;
this._bindButtonEvents();
this._bindMenuEvents();
this._bindHeaderEvents(); // close each widget when clicking on any other element/anywhere else on the page
$doc.bind('mousedown.' + self._namespaceID, function (event) {
var target = event.target;
if (self._isOpen && target !== self.button[0] && target !== self.menu[0] && !$.contains(self.menu[0], target) && !$.contains(self.button[0], target)) {
self.close();
}
}); // deal with form resets. the problem here is that buttons aren't
// restored to their defaultValue prop on form reset, and the reset
// handler fires before the form is actually reset. delaying it a bit
// gives the form inputs time to clear.
$(this.element[0].form).bind('reset.' + this._namespaceID, function () {
setTimeout($.proxy(self.refresh, self), 10);
});
},
_getMinWidth: function _getMinWidth() {
var minVal = this.options.minWidth;
var width = 0;
switch (_typeof(minVal)) {
case 'number':
width = minVal;
break;
case 'string':
var lastChar = minVal[minVal.length - 1];
width = minVal.match(/\d+/);
if (lastChar === '%') {
width = this.element.parent().outerWidth() * (width / 100);
} else {
width = parseInt(minVal, 10);
}
break;
}
return width;
},
// set button width
_setButtonWidth: function _setButtonWidth() {
var width = this._getMinWidth(); // set widths
this.button.outerWidth(width);
},
// set menu width
_setMenuWidth: function _setMenuWidth() {
var m = this.menu;
var width = this.button.outerWidth() <= 0 ? this._getMinWidth() : this.button.outerWidth();
m.outerWidth(this.options.menuWidth || width);
},
_setMenuHeight: function _setMenuHeight() {
var headerHeight = this.menu.children(".ui-multiselect-header:visible").outerHeight(true);
var ulHeight = 0;
this.menu.find(".ui-multiselect-checkboxes li, .ui-multiselect-checkboxes a").each(function (idx, li) {
ulHeight += $(li).outerHeight(true);
});
if (ulHeight > this.options.height) {
this.menu.children(".ui-multiselect-checkboxes").css("overflow", "auto");
ulHeight = this.options.height;
} else {
this.menu.children(".ui-multiselect-checkboxes").css("overflow", "hidden");
}
this.menu.children(".ui-multiselect-checkboxes").height(ulHeight);
this.menu.height(ulHeight + headerHeight);
},
_resizeMenu: function _resizeMenu() {
this._setMenuWidth();
this._setMenuHeight();
},
// move up or down within the menu
_traverse: function _traverse(which, start) {
var $start = $(start);
var moveToLast = which === 38 || which === 37; // select the first li that isn't an optgroup label / disabled
var $next = $start.parent()[moveToLast ? 'prevAll' : 'nextAll']('li:not(.ui-multiselect-disabled, .ui-multiselect-optgroup):visible').first(); // we might have to jump to the next/previous option group
if (!$next.length) {
$next = $start.parents(".ui-multiselect-optgroup")[moveToLast ? "prev" : "next"]();
} // if at the first/last element
if (!$next.length) {
var $container = this.menu.find('ul').last(); // move to the first/last
this.menu.find('label:visible')[moveToLast ? 'last' : 'first']().trigger('mouseover'); // set scroll position
$container.scrollTop(moveToLast ? $container.height() : 0);
} else {
$next.find('label:visible')[moveToLast ? "last" : "first"]().trigger('mouseover');
}
},
// This is an internal function to toggle the checked property and
// other related attributes of a checkbox.
//
// The context of this function should be a checkbox; do not proxy it.
_toggleState: function _toggleState(prop, flag) {
return function () {
if (!this.disabled) {
this[prop] = flag;
}
if (flag) {
this.setAttribute('aria-selected', true);
} else {
this.removeAttribute('aria-selected');
}
};
},
_toggleChecked: function _toggleChecked(flag, group) {
var $inputs = group && group.length ? group : this.inputs;
var self = this; // toggle state on inputs
$inputs.each(this._toggleState('checked', flag)); // give the first input focus
$inputs.eq(0).focus(); // update button text
this.update(); // gather an array of the values that actually changed
var values = {};
$inputs.each(function () {
values[this.value] = true;
}); // toggle state on original option tags
this.element.find('option').each(function () {
if (!this.disabled && values[this.value]) {
self._toggleState('selected', flag).call(this);
}
}); // trigger the change event on the select
if ($inputs.length) {
this.element.trigger("change");
}
},
_toggleDisabled: function _toggleDisabled(flag) {
this.button.prop({
'disabled': flag,
'aria-disabled': flag
})[flag ? 'addClass' : 'removeClass']('ui-state-disabled');
if (this.options.disableInputsOnToggle) {
var checkboxes = this.menu.find(".ui-multiselect-checkboxes").get(0);
var matchedInputs = [];
var key = "ech-multiselect-disabled";
var i = 0;
if (flag) {
// remember which elements this widget disabled (not pre-disabled)
// elements, so that they can be restored if the widget is re-enabled.
matchedInputs = checkboxes.querySelectorAll("input:enabled");
for (i = 0; i < matchedInputs.length; i++) {
matchedInputs[i].setAttribute(key, true);
matchedInputs[i].setAttribute("disabled", "disabled");
matchedInputs[i].setAttribute("aria-disabled", "disabled");
matchedInputs[i].parentNode.className = matchedInputs[i].parentNode.className + " ui-state-disabled";
}
} else {
matchedInputs = checkboxes.querySelectorAll("input:disabled");
for (i = 0; i < matchedInputs.length; i++) {
if (matchedInputs[i].hasAttribute(key)) {
matchedInputs[i].removeAttribute(key);
matchedInputs[i].removeAttribute("disabled");
matchedInputs[i].removeAttribute("aria-disabled");
matchedInputs[i].parentNode.className = matchedInputs[i].parentNode.className.replace(" ui-state-disabled", "");
}
}
}
}
this.element.prop({
'disabled': flag,
'aria-disabled': flag
});
},
// open the menu
open: function open(e) {
var self = this;
var button = this.button;
var menu = this.menu;
var speed = this.speed;
var o = this.options;
var args = []; // bail if the multiselectopen event returns false, this widget is disabled, or is already open
if (this._trigger('beforeopen') === false || button.hasClass('ui-state-disabled') || this._isOpen) {
return;
}
var $container = menu.find('.ui-multiselect-checkboxes');
var effect = o.show; // figure out opening effects/speeds
if ($.isArray(o.show)) {
effect = o.show[0];
speed = o.show[1] || self.speed;
} // if there's an effect, assume jQuery UI is in use
// build the arguments to pass to show()
if (effect) {
args = [effect, speed];
} // set the scroll of the checkbox container
$container.scrollTop(0); // show the menu, maybe with a speed/effect combo
$.fn.show.apply(menu, args);
this._resizeMenu(); // positon
this.position(); // select the first not disabled option or the filter input if available
var filter = this.header.find(".ui-multiselect-filter");
if (filter.length) {
filter.first().find('input').trigger('focus');
} else if (this.labels.length) {
this.labels.filter(':not(.ui-state-disabled)').eq(0).trigger('mouseover').trigger('mouseenter').find('input').trigger('focus');
} else {
this.header.find('a').first().trigger('focus');
}
button.addClass('ui-state-active');
this._isOpen = true;
this._trigger('open');
},
// close the menu
close: function close() {
if (this._trigger('beforeclose') === false) {
return;
}
var o = this.options;
var effect = o.hide;
var speed = this.speed;
var args = []; // figure out opening effects/speeds
if ($.isArray(o.hide)) {
effect = o.hide[0];
speed = o.hide[1] || this.speed;
}
if (effect) {
args = [effect, speed];
}
$.fn.hide.apply(this.menu, args);
this.button.removeClass('ui-state-active').trigger('blur').trigger('mouseleave');
this._isOpen = false;
this._trigger('close');
this.button.trigger('focus');
},
enable: function enable() {
this._toggleDisabled(false);
},
disable: function disable() {
this._toggleDisabled(true);
},
checkAll: function checkAll(e) {
this._toggleChecked(true);
this._trigger('checkAll');
},
uncheckAll: function uncheckAll() {
this._toggleChecked(false);
this._trigger('uncheckAll');
},
getChecked: function getChecked() {
return this.menu.find('input').filter(':checked');
},
getUnchecked: function getUnchecked() {
return this.menu.find('input').not(':checked');
},
destroy: function destroy() {
// remove classes + data
$.Widget.prototype.destroy.call(this); // unbind events
$doc.unbind(this._namespaceID);
$(this.element[0].form).unbind(this._namespaceID);
this.button.remove();
this.menu.remove();
this.element.show();
return this;
},
isOpen: function isOpen() {
return this._isOpen;
},
widget: function widget() {
return this.menu;
},
getButton: function getButton() {
return this.button;
},
getMenu: function getMenu() {
return this.menu;
},
getLabels: function getLabels() {
return this.labels;
},
addOption: function addOption(attributes, text, groupLabel) {
var $option = $(" ").attr(attributes).text(text);
var optionNode = $option.get(0);
if (groupLabel) {
this.element.children("OPTGROUP").filter(function () {
return $(this).prop("label") === groupLabel;
}).append($option);
this.menu.find(".ui-multiselect-optgroup").filter(function () {
return $(this).find("a").text() === groupLabel;
}).append(this._makeOption(optionNode));
} else {
this.element.append($option);
this.menu.find(".ui-multiselect-checkboxes").append(this._makeOption(optionNode));
} //update cached elements
this.labels = this.menu.find('label');
this.inputs = this.labels.children('input');
},
removeOption: function removeOption(value) {
if (!value) {
return;
}
this.element.find("option[value=" + value + "]").remove();
this.labels.find("input[value=" + value + "]").parents("li").remove(); //update cached elements
this.labels = this.menu.find('label');
this.inputs = this.labels.children('input');
},
position: function position() {
var pos = {
my: "top",
at: "bottom",
of: this.button
};
if (!$.isEmptyObject(this.options.position)) {
pos.my = this.options.position.my || pos.my;
pos.at = this.options.position.at || pos.at;
pos.of = this.options.position.of || pos.of;
}
if ($.ui && $.ui.position) {
this.menu.position(pos);
} else {
pos = this.button.position();
pos.top += this.button.outerHeight(false);
this.menu.offset(pos);
}
},
// react to option changes after initialization
_setOption: function _setOption(key, value) {
var menu = this.menu;
switch (key) {
case 'header':
if (typeof value === 'boolean') {
this.header[value ? 'show' : 'hide']();
} else if (typeof value === 'string') {
this.headerLinkContainer.children("li:not(:last-child)").remove();
this.headerLinkContainer.prepend("" + value + " ");
}
break;
case 'checkAllText':
menu.find('a.ui-multiselect-all span').eq(-1).text(value);
break;
case 'uncheckAllText':
menu.find('a.ui-multiselect-none span').eq(-1).text(value);
break;
case 'height':
this.options[key] = value;
this._setMenuHeight();
break;
case 'minWidth':
case 'menuWidth':
this.options[key] = value;
this._setButtonWidth();
this._setMenuWidth();
break;
case 'selectedText':
case 'selectedList':
case 'noneSelectedText':
this.options[key] = value; // these all needs to update immediately for the update() call
this.update();
break;
case 'classes':
menu.add(this.button).removeClass(this.options.classes).addClass(value);
break;
case 'multiple':
menu.toggleClass('ui-multiselect-single', !value);
this.options.multiple = value;
this.element[0].multiple = value;
this.uncheckAll();
this.refresh();
break;
case 'position':
this.position();
break;
case 'selectedListSeparator':
this.options[key] = value;
this.update(true);
break;
}
$.Widget.prototype._setOption.apply(this, arguments);
}
});
})(jQuery);
/***/ }),
/***/ "./vendor/bower_js/jquery-uploadfile/css/uploadfile.css":
/*!**************************************************************!*\
!*** ./vendor/bower_js/jquery-uploadfile/css/uploadfile.css ***!
\**************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
// extracted by mini-css-extract-plugin
/***/ }),
/***/ "./vendor/bower_js/jquery-uploadfile/js/jquery.uploadfile.min.js":
/*!***********************************************************************!*\
!*** ./vendor/bower_js/jquery-uploadfile/js/jquery.uploadfile.min.js ***!
\***********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(/*! core-js/modules/web.timers.js */ "./node_modules/core-js/modules/web.timers.js");
__webpack_require__(/*! core-js/modules/es.parse-int.js */ "./node_modules/core-js/modules/es.parse-int.js");
__webpack_require__(/*! core-js/modules/es.number.to-fixed.js */ "./node_modules/core-js/modules/es.number.to-fixed.js");
__webpack_require__(/*! core-js/modules/es.regexp.exec.js */ "./node_modules/core-js/modules/es.regexp.exec.js");
__webpack_require__(/*! core-js/modules/es.string.split.js */ "./node_modules/core-js/modules/es.string.split.js");
__webpack_require__(/*! core-js/modules/es.string.replace.js */ "./node_modules/core-js/modules/es.string.replace.js");
__webpack_require__(/*! core-js/modules/es.function.name.js */ "./node_modules/core-js/modules/es.function.name.js");
__webpack_require__(/*! core-js/modules/es.array.index-of.js */ "./node_modules/core-js/modules/es.array.index-of.js");
__webpack_require__(/*! core-js/modules/es.array.splice.js */ "./node_modules/core-js/modules/es.array.splice.js");
__webpack_require__(/*! core-js/modules/es.array.find.js */ "./node_modules/core-js/modules/es.array.find.js");
__webpack_require__(/*! core-js/modules/es.date.to-string.js */ "./node_modules/core-js/modules/es.date.to-string.js");
/*!
* jQuery Upload File Plugin
* version: 4.0.1
* @requires jQuery v1.5 or later & form plugin
* Copyright (c) 2013 Ravishanker Kusuma
* http://hayageek.com/
*/
!function (e) {
void 0 == e.fn.ajaxForm && e.getScript(("https:" == document.location.protocol ? "https://" : "http://") + "malsup.github.io/jquery.form.js");
var a = {};
a.fileapi = void 0 !== e(" ").get(0).files, a.formdata = void 0 !== window.FormData, e.fn.uploadFile = function (t) {
function r() {
S || (S = !0, function e() {
if (0 == x.length && 0 == D.length) w.afterUploadAll(C), S = !1;else {
if (D.length < w.sequentialCount) {
var a = x.shift();
void 0 != a && (D.push(a), a.submit());
}
window.setTimeout(e, 100);
}
}());
}
function o(a, t, r) {
r.on("dragenter", function (a) {
a.stopPropagation(), a.preventDefault(), e(this).addClass(t.dragDropHoverClass);
}), r.on("dragover", function (a) {
a.stopPropagation(), a.preventDefault();
var r = e(this);
r.hasClass(t.dragDropContainerClass) && !r.hasClass(t.dragDropHoverClass) && r.addClass(t.dragDropHoverClass);
}), r.on("drop", function (r) {
r.preventDefault(), e(this).removeClass(t.dragDropHoverClass), a.errorLog.html("");
var o = r.originalEvent.dataTransfer.files;
return !t.multiple && o.length > 1 ? void (t.showError && e("" + t.multiDragErrorStr + "
").appendTo(a.errorLog)) : void (0 != t.onSelect(o) && l(t, a, o));
}), r.on("dragleave", function () {
e(this).removeClass(t.dragDropHoverClass);
}), e(document).on("dragenter", function (e) {
e.stopPropagation(), e.preventDefault();
}), e(document).on("dragover", function (a) {
a.stopPropagation(), a.preventDefault();
var r = e(this);
r.hasClass(t.dragDropContainerClass) || r.removeClass(t.dragDropHoverClass);
}), e(document).on("drop", function (a) {
a.stopPropagation(), a.preventDefault(), e(this).removeClass(t.dragDropHoverClass);
});
}
function s(e) {
var a = "",
t = e / 1024;
if (parseInt(t) > 1024) {
var r = t / 1024;
a = r.toFixed(2) + " MB";
} else a = t.toFixed(2) + " KB";
return a;
}
function i(a) {
var t = [];
t = "string" == jQuery.type(a) ? a.split("&") : e.param(a).split("&");
var r,
o,
s = t.length,
i = [];
for (r = 0; s > r; r++) {
t[r] = t[r].replace(/\+/g, " "), o = t[r].split("="), i.push([decodeURIComponent(o[0]), decodeURIComponent(o[1])]);
}
return i;
}
function l(a, t, r) {
for (var o = 0; o < r.length; o++) {
if (n(t, a, r[o].name)) {
if (a.allowDuplicates || !d(t, r[o].name)) {
if (-1 != a.maxFileSize && r[o].size > a.maxFileSize) a.showError && e("" + r[o].name + " " + a.sizeErrorStr + s(a.maxFileSize) + "
").appendTo(t.errorLog);else if (-1 != a.maxFileCount && t.selectedFiles >= a.maxFileCount) a.showError && e("" + r[o].name + " " + a.maxFileCountErrorStr + a.maxFileCount + "
").appendTo(t.errorLog);else {
t.selectedFiles++, t.existingFileNames.push(r[o].name);
var l = a,
p = new FormData(),
u = a.fileName.replace("[]", "");
p.append(u, r[o]);
var c = a.formData;
if (c) for (var h = i(c), f = 0; f < h.length; f++) {
h[f] && p.append(h[f][0], h[f][1]);
}
l.fileData = p;
var w = new m(t, a),
g = "";
g = a.showFileCounter ? t.fileCounter + a.fileCounterStyle + r[o].name : r[o].name, a.showFileSize && (g += " (" + s(r[o].size) + ")"), w.filename.html(g);
var C = e("");
C.appendTo("body");
var b = [];
b.push(r[o].name), v(C, l, w, b, t, r[o]), t.fileCounter++;
}
} else a.showError && e("" + r[o].name + " " + a.duplicateErrorStr + "
").appendTo(t.errorLog);
} else a.showError && e("" + r[o].name + " " + a.extErrorStr + a.allowedTypes + "
").appendTo(t.errorLog);
}
}
function n(e, a, t) {
var r = a.allowedTypes.toLowerCase().split(","),
o = t.split(".").pop().toLowerCase();
return "*" != a.allowedTypes && jQuery.inArray(o, r) < 0 ? !1 : !0;
}
function d(e, a) {
var t = !1;
if (e.existingFileNames.length) for (var r = 0; r < e.existingFileNames.length; r++) {
(e.existingFileNames[r] == a || w.duplicateStrict && e.existingFileNames[r].toLowerCase() == a.toLowerCase()) && (t = !0);
}
return t;
}
function p(e, a) {
if (e.existingFileNames.length) for (var t = 0; t < a.length; t++) {
var r = e.existingFileNames.indexOf(a[t]);
-1 != r && e.existingFileNames.splice(r, 1);
}
}
function u(e, a) {
if (e) {
a.show();
var t = new FileReader();
t.onload = function (e) {
a.attr("src", e.target.result);
}, t.readAsDataURL(e);
}
}
function c(a, t) {
if (a.showFileCounter) {
var r = e(t.container).find(".ajax-file-upload-filename").length;
t.fileCounter = r + 1, e(t.container).find(".ajax-file-upload-filename").each(function () {
var t = e(this).html().split(a.fileCounterStyle),
o = (parseInt(t[0]) - 1, r + a.fileCounterStyle + t[1]);
e(this).html(o), r--;
});
}
}
function h(t, r, o, s) {
var i = "ajax-upload-id-" + new Date().getTime(),
d = e(""),
p = " ";
o.multiple && (o.fileName.indexOf("[]") != o.fileName.length - 2 && (o.fileName += "[]"), p = " ");
var u = e(p).appendTo(d);
u.change(function () {
t.errorLog.html("");
var i = (o.allowedTypes.toLowerCase().split(","), []);
if (this.files) {
for (g = 0; g < this.files.length; g++) {
i.push(this.files[g].name);
}
if (0 == o.onSelect(this.files)) return;
} else {
var p = e(this).val(),
u = [];
if (i.push(p), !n(t, o, p)) return void (o.showError && e("" + p + " " + o.extErrorStr + o.allowedTypes + "
").appendTo(t.errorLog));
if (u.push({
name: p,
size: "NA"
}), 0 == o.onSelect(u)) return;
}
if (c(o, t), s.unbind("click"), d.hide(), h(t, r, o, s), d.addClass(r), o.serialize && a.fileapi && a.formdata) {
d.removeClass(r);
var f = this.files;
d.remove(), l(o, t, f);
} else {
for (var w = "", g = 0; g < i.length; g++) {
w += o.showFileCounter ? t.fileCounter + o.fileCounterStyle + i[g] + " " : i[g] + " ", t.fileCounter++;
}
if (-1 != o.maxFileCount && t.selectedFiles + i.length > o.maxFileCount) return void (o.showError && e("" + w + " " + o.maxFileCountErrorStr + o.maxFileCount + "
").appendTo(t.errorLog));
t.selectedFiles += i.length;
var C = new m(t, o);
C.filename.html(w), C.filename.html(""), v(d, o, C, i, t, null);
}
}), o.nestedForms ? (d.css({
margin: 0,
padding: 0
}), s.css({
position: "relative",
overflow: "hidden",
cursor: "default"
}), u.css({
position: "absolute",
cursor: "pointer",
top: "0px",
width: "100%",
height: "100%",
left: "0px",
"z-index": "100",
opacity: "0.0",
filter: "alpha(opacity=0)",
"-ms-filter": "alpha(opacity=0)",
"-khtml-opacity": "0.0",
"-moz-opacity": "0.0"
}), d.appendTo(s)) : (d.appendTo(e("body")), d.css({
margin: 0,
padding: 0,
display: "block",
position: "absolute",
left: "-250px"
}), -1 != navigator.appVersion.indexOf("MSIE ") ? s.attr("for", i) : s.click(function () {
u.click();
}));
}
function f(a, t) {
return this.statusbar = e("
").width(t.statusBarWidth), this.preview = e(" ").width(t.previewWidth).height(t.previewHeight).appendTo(this.statusbar).hide(), this.filename = e("
").appendTo(this.statusbar), this.progressDiv = e("").appendTo(this.statusbar).hide(), this.progressbar = e("
").appendTo(this.progressDiv), this.abort = e("
" + t.abortStr + "
").appendTo(this.statusbar).hide(), this.cancel = e("
" + t.cancelStr + "
").appendTo(this.statusbar).hide(), this.done = e("
" + t.doneStr + "
").appendTo(this.statusbar).hide(), this.download = e("
" + t.downloadStr + "
").appendTo(this.statusbar).hide(), this.del = e("
" + t.deletelStr + "
").appendTo(this.statusbar).hide(), this.abort.addClass("ajax-file-upload-red"), this.done.addClass("ajax-file-upload-green"), this.download.addClass("ajax-file-upload-green"), this.cancel.addClass("ajax-file-upload-red"), this.del.addClass("ajax-file-upload-red"), this;
}
function m(a, t) {
var r = null;
return r = t.customProgressBar ? new t.customProgressBar(a, t) : new f(a, t), r.abort.addClass(a.formGroup), r.abort.addClass(t.abortButtonClass), r.cancel.addClass(a.formGroup), r.cancel.addClass(t.cancelButtonClass), t.extraHTML && (r.extraHTML = e("").insertAfter(r.filename)), e(a.container).append(r.statusbar), r;
}
function v(t, o, s, l, n, d) {
var h = {
cache: !1,
contentType: !1,
processData: !1,
forceSync: !1,
type: o.method,
data: o.formData,
formData: o.fileData,
dataType: o.returnType,
beforeSubmit: function beforeSubmit(a, r, d) {
if (0 != o.onSubmit.call(this, l)) {
if (o.dynamicFormData) {
var u = i(o.dynamicFormData());
if (u) for (var h = 0; h < u.length; h++) {
u[h] && (void 0 != o.fileData ? d.formData.append(u[h][0], u[h][1]) : d.data[u[h][0]] = u[h][1]);
}
}
return o.extraHTML && e(s.extraHTML).find("input,select,textarea").each(function () {
void 0 != o.fileData ? d.formData.append(e(this).attr("name"), e(this).val()) : d.data[e(this).attr("name")] = e(this).val();
}), !0;
}
return s.statusbar.append("
" + o.uploadErrorStr + "
"), s.cancel.show(), t.remove(), s.cancel.click(function () {
x.pop(), p(n, l), s.statusbar.remove(), o.onCancel.call(n, l, s), n.selectedFiles -= l.length, c(o, n);
}), !1;
},
beforeSend: function beforeSend(e) {
s.progressDiv.show(), s.cancel.hide(), s.done.hide(), o.showAbort && (s.abort.show(), s.abort.click(function () {
p(n, l), e.abort(), n.selectedFiles -= l.length;
})), s.progressbar.width(a.formdata ? "1%" : "5%");
},
uploadProgress: function uploadProgress(e, a, t, r) {
r > 98 && (r = 98);
var i = r + "%";
r > 1 && s.progressbar.width(i), o.showProgress && (s.progressbar.html(i), s.progressbar.css("text-align", "center"));
},
success: function success(a, r, i) {
if (s.cancel.remove(), D.pop(), "json" == o.returnType && "object" == e.type(a) && a.hasOwnProperty(o.customErrorKeyStr)) {
s.abort.hide();
var d = a[o.customErrorKeyStr];
return o.onError.call(this, l, 200, d, s), o.showStatusAfterError ? (s.progressDiv.hide(), s.statusbar.append("
ERROR: " + d + " ")) : (s.statusbar.hide(), s.statusbar.remove()), n.selectedFiles -= l.length, void t.remove();
}
n.responses.push(a), s.progressbar.width("100%"), o.showProgress && (s.progressbar.html("100%"), s.progressbar.css("text-align", "center")), s.abort.hide(), o.onSuccess.call(this, l, a, i, s), o.showStatusAfterSuccess ? (o.showDone ? (s.done.show(), s.done.click(function () {
s.statusbar.hide("slow"), s.statusbar.remove();
})) : s.done.hide(), o.showDelete ? (s.del.show(), s.del.click(function () {
s.statusbar.hide().remove(), o.deleteCallback && o.deleteCallback.call(this, a, s), n.selectedFiles -= l.length, c(o, n);
})) : s.del.hide()) : (s.statusbar.hide("slow"), s.statusbar.remove()), o.showDownload && (s.download.show(), s.download.click(function () {
o.downloadCallback && o.downloadCallback(a);
})), t.remove();
},
error: function error(e, a, r) {
s.cancel.remove(), D.pop(), s.abort.hide(), "abort" == e.statusText ? (s.statusbar.hide("slow").remove(), c(o, n)) : (o.onError.call(this, l, a, r, s), o.showStatusAfterError ? (s.progressDiv.hide(), s.statusbar.append("
ERROR: " + r + " ")) : (s.statusbar.hide(), s.statusbar.remove()), n.selectedFiles -= l.length), t.remove();
}
};
o.showPreview && null != d && "image" == d.type.toLowerCase().split("/").shift() && u(d, s.preview), o.autoSubmit ? o.sequential ? (t.ajaxForm(h), x.push(t), r()) : t.ajaxSubmit(h) : (o.showCancel && (s.cancel.show(), s.cancel.click(function () {
x.pop(), p(n, l), t.remove(), s.statusbar.remove(), o.onCancel.call(n, l, s), n.selectedFiles -= l.length, c(o, n);
})), t.ajaxForm(h));
}
var w = e.extend({
url: "",
method: "POST",
enctype: "multipart/form-data",
returnType: null,
allowDuplicates: !0,
duplicateStrict: !1,
allowedTypes: "*",
acceptFiles: "*",
fileName: "file",
formData: !1,
dynamicFormData: !1,
maxFileSize: -1,
maxFileCount: -1,
multiple: !0,
dragDrop: !0,
autoSubmit: !0,
showCancel: !0,
showAbort: !0,
showDone: !1,
showDelete: !1,
showError: !0,
showStatusAfterSuccess: !0,
showStatusAfterError: !0,
showFileCounter: !0,
fileCounterStyle: "). ",
showFileSize: !0,
showProgress: !1,
nestedForms: !0,
showDownload: !1,
onLoad: function onLoad() {},
onSelect: function onSelect() {
return !0;
},
onSubmit: function onSubmit() {},
onSuccess: function onSuccess() {},
onError: function onError() {},
onCancel: function onCancel() {},
downloadCallback: !1,
deleteCallback: !1,
afterUploadAll: !1,
serialize: !0,
sequential: !1,
sequentialCount: 2,
customProgressBar: !1,
abortButtonClass: "ajax-file-upload-abort",
cancelButtonClass: "ajax-file-upload-cancel",
dragDropContainerClass: "ajax-upload-dragdrop",
dragDropHoverClass: "state-hover",
errorClass: "ajax-file-upload-error",
uploadButtonClass: "ajax-file-upload",
dragDropStr: "
Drag & Drop Files ",
uploadStr: "Upload",
abortStr: "Abort",
cancelStr: "Cancel",
deletelStr: "Delete",
doneStr: "Done",
multiDragErrorStr: "Multiple File Drag & Drop is not allowed.",
extErrorStr: "is not allowed. Allowed extensions: ",
duplicateErrorStr: "is not allowed. File already exists.",
sizeErrorStr: "is not allowed. Allowed Max size: ",
uploadErrorStr: "Upload is not allowed",
maxFileCountErrorStr: " is not allowed. Maximum allowed files are:",
downloadStr: "Download",
customErrorKeyStr: "jquery-upload-file-error",
showQueueDiv: !1,
statusBarWidth: 400,
dragdropWidth: 400,
showPreview: !1,
previewHeight: "auto",
previewWidth: "100%",
extraHTML: !1
}, t);
this.fileCounter = 1, this.selectedFiles = 0;
var g = "ajax-file-upload-" + new Date().getTime();
this.formGroup = g, this.errorLog = e("
"), this.responses = [], this.existingFileNames = [], a.formdata || (w.dragDrop = !1), a.formdata || (w.multiple = !1), e(this).html("");
var C = this,
b = e("
" + w.uploadStr + "
");
e(b).addClass(w.uploadButtonClass), function F() {
if (e.fn.ajaxForm) {
if (w.dragDrop) {
var a = e('
').width(w.dragdropWidth);
e(C).append(a), e(a).append(b), e(a).append(e(w.dragDropStr)), o(C, w, a);
} else e(C).append(b);
e(C).append(C.errorLog), C.container = w.showQueueDiv ? e("#" + w.showQueueDiv) : e("
").insertAfter(e(C)), w.onLoad.call(this, C), h(C, g, w, b);
} else window.setTimeout(F, 10);
}(), this.startUpload = function () {
e("." + this.formGroup).each(function () {
e(this).is("form") && x.push(e(this));
}), r();
}, this.getFileCount = function () {
return C.selectedFiles;
}, this.stopUpload = function () {
e("." + w.abortButtonClass).each(function () {
e(this).hasClass(C.formGroup) && e(this).click();
}), e("." + w.cancelButtonClass).each(function () {
e(this).hasClass(C.formGroup) && e(this).click();
});
}, this.cancelAll = function () {
e("." + w.cancelButtonClass).each(function () {
e(this).hasClass(C.formGroup) && e(this).click();
});
}, this.update = function (a) {
w = e.extend(w, a);
}, this.reset = function (e) {
C.fileCounter = 1, C.selectedFiles = 0, C.errorLog.html(""), 0 != e && C.container.html("");
}, this.remove = function () {
C.container.html(""), e(C).remove();
}, this.createProgress = function (e) {
var a = new m(this, w);
a.progressDiv.show(), a.progressbar.width("100%");
var t = "";
t = w.showFileCounter ? C.fileCounter + w.fileCounterStyle + e : e, a.filename.html(t), C.fileCounter++, C.selectedFiles++, w.showPreview && (a.preview.attr("src", w.filename), a.preview.show()), w.showDownload && (a.download.show(), a.download.click(function () {
w.downloadCallback && w.downloadCallback.call(C, [e]);
})), a.del.show(), a.del.click(function () {
a.statusbar.hide().remove();
var t = [e];
w.deleteCallback && w.deleteCallback.call(this, t, a), C.selectedFiles -= 1, c(w, C);
});
}, this.getResponses = function () {
return this.responses;
};
var x = [],
D = [],
S = !1;
return this;
};
}(jQuery);
/***/ })
}]);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvY3NzL2hhbmRzb250YWJsZS5jc3MiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2pzL2NvbXBvbmVudHMvZ29vZ2xlbWFwcy5qcyIsIndlYnBhY2s6Ly8vLi9hc3NldHMvanMvY29tcG9uZW50cy9oYW5kc29udGFibGVzLmpzIiwid2VicGFjazovLy8uL2Nzcy9qcXVlcnkucXRpcC5jc3MiLCJ3ZWJwYWNrOi8vLy4vY3NzL2pxdWVyeS51aS50aGVtZS5jc3MiLCJ3ZWJwYWNrOi8vLy4vaW5jbHVkZS9qcy9kYXRlLmpzIiwid2VicGFjazovLy8uL2luY2x1ZGUvanMvcGFjay8wMDUwLmF1dG9jb21wbGV0ZS1ldmVudHMuanMiLCJ3ZWJwYWNrOi8vLy4vaW5jbHVkZS9qcy9wYWNrLzAxNTAuanF1ZXJ5LnRhYmxlZGlzcGxheS0wLjIuanMiLCJ3ZWJwYWNrOi8vLy4vaW5jbHVkZS9qcy9wYWNrLzAxNzAuanF1ZXJ5LnNpbXBsZWN1cnJlbmN5LmpzIiwid2VicGFjazovLy8uL2luY2x1ZGUvanMvcGFjay8wMTgwLmpxdWVyeS5zZWxlY3Rib3hlcy5qcyIsIndlYnBhY2s6Ly8vLi9pbmNsdWRlL2pzL3BhY2svMDI5MC5pcmlkZWdhbGxlcnkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZSBzeW5jIF5cXC5cXC8uKiQiLCJ3ZWJwYWNrOi8vLy4vdmVuZG9yL2Jvd2VyX2pzL2pxdWVyeS10aW1lZW50cnkvanF1ZXJ5LnBsdWdpbi5taW4uanMiLCJ3ZWJwYWNrOi8vLy4vdmVuZG9yL2Jvd2VyX2pzL2pxdWVyeS10aW1lZW50cnkvanF1ZXJ5LnRpbWVlbnRyeS5jc3MiLCJ3ZWJwYWNrOi8vLy4vdmVuZG9yL2Jvd2VyX2pzL2pxdWVyeS10aW1lZW50cnkvanF1ZXJ5LnRpbWVlbnRyeS5taW4uanMiLCJ3ZWJwYWNrOi8vLy4vdmVuZG9yL2Jvd2VyX2pzL2pxdWVyeS11aS1tdWx0aXNlbGVjdC13aWRnZXQtaXJpZGUvanF1ZXJ5Lm11bHRpc2VsZWN0LmNzcyIsIndlYnBhY2s6Ly8vLi92ZW5kb3IvYm93ZXJfanMvanF1ZXJ5LXVpLW11bHRpc2VsZWN0LXdpZGdldC1pcmlkZS9zcmMvanF1ZXJ5Lm11bHRpc2VsZWN0LmpzIiwid2VicGFjazovLy8uL3ZlbmRvci9ib3dlcl9qcy9qcXVlcnktdXBsb2FkZmlsZS9jc3MvdXBsb2FkZmlsZS5jc3MiLCJ3ZWJwYWNrOi8vLy4vdmVuZG9yL2Jvd2VyX2pzL2pxdWVyeS11cGxvYWRmaWxlL2pzL2pxdWVyeS51cGxvYWRmaWxlLm1pbi5qcyJdLCJuYW1lcyI6WyJidWlsZEdvb2dsZU1hcHMiLCJnb29nbGVtYXAiLCJsYXRpdHVkaW5lIiwiJCIsImRhdGEiLCJsb25naXR1ZGluZSIsIm1hcmtlcnMiLCJ6b29tIiwidmlld1NlYXJjaEJveCIsIm1hcCIsImdvb2dsZSIsIm1hcHMiLCJNYXAiLCJjZW50ZXIiLCJsYXQiLCJnZXRGbG9hdCIsImxuZyIsImlucHV0IiwiYXR0ciIsInNlYXJjaEJveCIsInBsYWNlcyIsIlNlYXJjaEJveCIsImNvbnRyb2xzIiwiQ29udHJvbFBvc2l0aW9uIiwiVE9QX0xFRlQiLCJwdXNoIiwiYWRkTGlzdGVuZXIiLCJzZXRCb3VuZHMiLCJnZXRCb3VuZHMiLCJzX21hcmtlcnMiLCJnZXRQbGFjZXMiLCJsZW5ndGgiLCJmb3JFYWNoIiwibWFya2VyIiwic2V0TWFwIiwiYm91bmRzIiwiTGF0TG5nQm91bmRzIiwicGxhY2UiLCJnZW9tZXRyeSIsImxvY2F0aW9uIiwiY29uc29sZSIsImxvZyIsImljb24iLCJ1cmwiLCJzaXplIiwiU2l6ZSIsIm9yaWdpbiIsIlBvaW50IiwiYW5jaG9yIiwic2NhbGVkU2l6ZSIsIk1hcmtlciIsInRpdGxlIiwibmFtZSIsInBvc2l0aW9uIiwidmlld3BvcnQiLCJ1bmlvbiIsImV4dGVuZCIsImZpdEJvdW5kcyIsImdlb2NvZGVyIiwib3B0cyIsImxhYmVsIiwiY29sb3IiLCJzZXRJbmZvV2luZG93IiwidGV4dCIsImdtYXJrZXIiLCJpbmZvIiwiSW5mb1dpbmRvdyIsImNvbnRlbnQiLCJoaWRlIiwib3BlbiIsInNob3VsZEZvY3VzIiwiYWRkcmVzcyIsIkdlb2NvZGVyIiwiZ2VvY29kZSIsInJlc3VsdHMiLCJzdGF0dXMiLCJidWlsZFRhYmxlIiwidGFibGUiLCJpZHRhYmxlIiwiJHRhYmxlIiwiY29sdW1ucyIsImNvbEhlYWRlcnMiLCJoY29sdW1ucyIsImhpZGRlbkNvbHVtbnMiLCJpbmRleF9jb2wiLCJkYXRlX2Zvcm1hdCIsImN1cnJlbmN5X3BhdHRlcm4iLCJmaXJzdERheSIsImN1bHR1cmUiLCJsb2NhbGUiLCJhbGlnbnMiLCJjb2wiLCJoZWFkZXIiLCJoaWRkZW4iLCJhbGlnbiIsInR5cGUiLCJrZXkiLCJzb3VyY2UiLCJPYmplY3QiLCJ2YWx1ZXMiLCJzZWxlY3Rfb3B0aW9ucyIsInJlYWRPbmx5IiwicmVhZG9ubHkiLCJjbGFzc05hbWUiLCJudW1lcmljRm9ybWF0IiwicGF0dGVybiIsImRhdGVGb3JtYXQiLCJjb3JyZWN0Rm9ybWF0IiwiZGF0ZVBpY2tlckNvbmZpZyIsInNob3dXZWVrTnVtYmVyIiwicXVlcnkiLCJwcm9jZXNzIiwiYWpheFNvdXJjZUlXQXV0b2NvbXBsZXRlIiwiYWpheCIsImRhdGFUeXBlIiwic2VyaWFsaXplIiwic3VjY2VzcyIsImpzb24iLCJob3QiLCJIYW5kc29udGFibGUiLCJsaWNlbnNlS2V5IiwibWluU3BhcmVSb3dzIiwic3RhcnRSb3dzIiwicm93SGVhZGVycyIsIm1hbnVhbENvbHVtblJlc2l6ZSIsIm1hbnVhbFJvd1Jlc2l6ZSIsIndpZHRoIiwiaGVpZ2h0Iiwicm93SGVpZ2h0cyIsImNvbFdpZHRocyIsIm1vZHVsZSIsImV4cG9ydHMiLCJEYXRlX19qYXAiLCJkYXRhX2l0IiwidmFsIiwibW9tZW50IiwiZm9ybWF0IiwiRGF0ZV9faXQiLCJkYXRhX2phcCIsIkRhdGVfX09yYU5vdyIsIkRhdGVfX2dnaXVsaWFubyIsImFkZXNzbyIsIkRhdGUiLCJzdWJzdHIiLCJwYXJzZUludCIsImFubm8iLCJnZXRGdWxsWWVhciIsImluaXppb2Fubm8iLCJHRyIsIlN0cmluZyIsIk1hdGgiLCJmbG9vciIsInN0cl9wYWQiLCJEYXRlX19hZGQiLCJuZ2lvcm5pIiwiY29udGFfZGFfZmluZV9tZXNlIiwidXNhX2NhbGVuZGFyaW9fY29tbWVyY2lhbGUiLCJOdW1iZXIiLCJpc0ludGVnZXIiLCJEYXRlX19zb21tYW1lc2kiLCJkIiwiYWRkIiwic3VidHJhY3QiLCJhYnMiLCJlbmRPZiIsIm5tZXNpIiwiRGF0ZV9fbm93IiwibWludXRpQWRkIiwib3JhcmlvIiwibW0iLCJzcyIsImgiLCJtIiwidCIsImdldFRpbWUiLCJzZXRUaW1lIiwiaDIiLCJnZXRIb3VycyIsIm0yIiwiZ2V0TWludXRlcyIsImlzT3JhcmlvIiwicyIsImkiLCJpbmRleE9mIiwiZ2V0UGFyYW1zRm9yRGF0ZXBpY2tlciIsInBhcmFtcyIsInN0YW5kYXJkX3BhcmFtcyIsImF1dG9jbG9zZSIsInRvZGF5SGlnaGxpZ2h0IiwibGFuZ3VhZ2UiLCJjbGVhckJ0biIsImtleXMiLCJic0RhdGVQaWNrZXJJbml0Iiwic2VsZiIsImRhdGVwaWNrZXIiLCJic0RhdGVQaWNrZXJSYW5nZUluaXQiLCJlYWNoIiwiZm4iLCJhdXRvY29tcGxldGVPbkZvY3VzRXZlbnQiLCJmb2N1cyIsInNlbGVjdCIsIm9uZSIsImV2IiwicHJldmVudERlZmF1bHQiLCJhdXRvY29tcGxldGVTZWFyY2hBbGxPbkRibENsaWNrIiwiYmluZCIsImtleXVwIiwialF1ZXJ5IiwiZG9jdW1lbnQiLCJyZWFkeSIsInRvZ2dsZVJvdyIsImNzcyIsInNob3dSb3ciLCJoaWRlUm93IiwiQ1VSUkVOQ1lfX1NZTUJPTCIsIkNVUlJFTkNZX19ERUNJTUFMUyIsIkNVUlJFTkNZX19ERUNJTUFMX1NFUEFSQVRPUiIsIkNVUlJFTkNZX19USE9VU0FORFNfU0VQQVJBVE9SIiwicHJvcCIsImUiLCJvYmpJRCIsInRhcmdldCIsImlkIiwib2JqSURfaGlkZGVuIiwibUNVUlJFTkNZX19TWU1CT0wiLCJtQ1VSUkVOQ1lfX0RFQ0lNQUxTIiwibiIsInVuZGVmaW5lZCIsImtleW51bSIsIndpbmRvdyIsImV2ZW50Iiwia2V5Q29kZSIsIndoaWNoIiwia2V5Y2hhciIsImZyb21DaGFyQ29kZSIsIm51bWJlcnMiLCJ0b0ZpeGVkIiwicmVwbGFjZSIsInVwZGF0ZUN1cnJlbmN5IiwiY2hhbmdlIiwiaWZfemVyb19lbXB0eSIsInNpZ24iLCJuMiIsIm51bWJlcl9mb3JtYXQiLCJhZGRPcHRpb24iLCJlbCIsInYiLCJzTyIsIm9wdGlvbiIsImNyZWF0ZUVsZW1lbnQiLCJ2YWx1ZSIsIm8iLCJvcHRpb25zIiwib0wiLCJjYWNoZSIsInNlbGVjdGVkIiwiYSIsImFyZ3VtZW50cyIsIml0ZW1zIiwibm9kZU5hbWUiLCJ0b0xvd2VyQ2FzZSIsIml0ZW0iLCJhamF4QWRkT3B0aW9uIiwiYXJncyIsImdldEpTT04iLCJyIiwiYXBwbHkiLCJjYWxsIiwicmVtb3ZlT3B0aW9uIiwidGEiLCJpbmRleCIsImNvbnN0cnVjdG9yIiwiQXJyYXkiLCJsIiwicmVtb3ZlIiwiUmVnRXhwIiwibWF0Y2giLCJzb3J0T3B0aW9ucyIsImFzY2VuZGluZyIsInNlbCIsInNlbGVjdGVkVmFsdWVzIiwic0EiLCJzb3J0IiwibzEiLCJvMiIsIm8xdCIsIm8ydCIsInNlbGVjdE9wdGlvbnMiLCJjbGVhciIsInZUIiwiJHRoaXMiLCJjIiwiY29weU9wdGlvbnMiLCJ0byIsInciLCJjb250YWluc09wdGlvbiIsImZvdW5kIiwiZlQiLCJzZWxlY3RlZE9wdGlvbnMiLCJzZWxlY3RlZFRleHRzIiwiZmluZCIsIml3Z2FsbGVyeSIsImRlZmF1bHRzIiwiZGl2R2FsbGVyeSIsImRpdkhpZGRlbnMiLCJkaXZGaWxlcyIsImJ1aWxkSW1hZ2UiLCJpbWciLCJ1cmxJbWFnZSIsImRlc2NyaXB0aW9uIiwiaWR1cGxvYWQiLCJidWlsZEhpZGRlbiIsImJ1aWxkRmlsZUxpbmsiLCIkcmVtb3ZlTGluayIsIm9iaiIsIm9uIiwiY3VycmVudCIsImltYWdlcyIsImFwaUdhbGxlcnkiLCJnZXROdW1JdGVtcyIsImdldEl0ZW0iLCJvbkNoYW5nZUdhbGxlcnkiLCJidWlsZEdhbGxlcnkiLCJkaXYiLCJhcHBlbmQiLCJpbWdzVG9BcHBlbmQiLCJoaWRkZW5zIiwiaHRtbCIsInVuaXRlZ2FsbGVyeSIsImdhbGxlcnlfdGhlbWUiLCJ0aGVtZV9wYW5lbF9wb3NpdGlvbiIsInRoZW1lX2hpZGVfcGFuZWxfdW5kZXJfd2lkdGgiLCJnYWxsZXJ5X3dpZHRoIiwiZ2FsbGVyeVdpZHRoIiwiZ2FsbGVyeV9oZWlnaHQiLCJnYWxsZXJ5SGVpZ2h0Iiwic2xpZGVyX3NjYWxlX21vZGUiLCJzZWxlY3RJdGVtIiwiY2xpY2siLCJkaXZfdXBsb2FkIiwidXBsb2FkRmlsZSIsImFsbG93ZWRUeXBlcyIsImRyYWdEcm9wU3RyIiwiZHJhZ0Ryb3BTdHJpbmciLCJleHRFcnJvclN0ciIsImV4dEVycm9yU3RyaW5nIiwidXBsb2FkU3RyIiwidXBsb2FkU3RyaW5nIiwic2hvd0Rvd25sb2FkIiwic2hvd0RlbGV0ZSIsIm9uU3VjY2VzcyIsImZpbGVzIiwic3BsaXQiLCJwYXRoIiwidG9rZW4iLCJsYWJlbFN0cmluZyIsImNvZGNsaWVudGUiLCJzZXNzSWQiLCJqIiwiSlFDbGFzcyIsImNsYXNzZXMiLCJleHRlbmRlciIsImYiLCJnIiwicHJvdG90eXBlIiwiYiIsIl9zdXBlciIsIl9pbml0IiwiSlFQbHVnaW4iLCJkZWZhdWx0T3B0aW9ucyIsInJlZ2lvbmFsT3B0aW9ucyIsIl9nZXR0ZXJzIiwiX2dldE1hcmtlciIsImNhbWVsQ2FzZSIsInNsaWNlIiwiX2lzTm90Q2hhaW5lZCIsImNvbmNhdCIsIl9hdHRhY2giLCJzZXREZWZhdWx0cyIsImluQXJyYXkiLCJoYXNDbGFzcyIsImFkZENsYXNzIiwiX2dldE1ldGFkYXRhIiwiZWxlbSIsIl9pbnN0U2V0dGluZ3MiLCJfcG9zdEF0dGFjaCIsInN1YnN0cmluZyIsInBhcnNlSlNPTiIsImV2YWwiLCJfZ2V0SW5zdCIsIl9vcHRpb25zQ2hhbmdlZCIsImRlc3Ryb3kiLCJfcHJlRGVzdHJveSIsInJlbW92ZURhdGEiLCJyZW1vdmVDbGFzcyIsInRvVXBwZXJDYXNlIiwiY3JlYXRlUGx1Z2luIiwiYXBwZW5kVGV4dCIsInNob3dTZWNvbmRzIiwidW5saW1pdGVkSG91cnMiLCJ0aW1lU3RlcHMiLCJpbml0aWFsRmllbGQiLCJub1NlcGFyYXRvckVudHJ5IiwidGFiVG9FeGl0IiwidXNlTW91c2VXaGVlbCIsImRlZmF1bHRUaW1lIiwibWluVGltZSIsIm1heFRpbWUiLCJzcGlubmVySW1hZ2UiLCJzcGlubmVyU2l6ZSIsInNwaW5uZXJCaWdJbWFnZSIsInNwaW5uZXJCaWdTaXplIiwic3Bpbm5lckluY0RlY09ubHkiLCJzcGlubmVyUmVwZWF0IiwiYmVmb3JlU2hvdyIsImJlZm9yZVNldFRpbWUiLCJzaG93MjRIb3VycyIsInNlcGFyYXRvciIsImFtcG1QcmVmaXgiLCJhbXBtTmFtZXMiLCJzcGlubmVyVGV4dHMiLCJfYXBwZW5kQ2xhc3MiLCJfY29udHJvbENsYXNzIiwiX2V4cGFuZENsYXNzIiwiX2Rpc2FibGVkSW5wdXRzIiwiX2ZpZWxkIiwiX3NlbGVjdGVkSG91ciIsIl9zZWxlY3RlZE1pbnV0ZSIsIl9zZWxlY3RlZFNlY29uZCIsIl9kb0ZvY3VzIiwiX2RvQmx1ciIsIl9kb0NsaWNrIiwiX2RvS2V5RG93biIsIl9kb0tleVByZXNzIiwic2V0VGltZW91dCIsIl9wYXJzZVRpbWUiLCJfZXh0cmFjdFRpbWUiLCJfc2V0VGltZSIsIm5leHQiLCJwYXJlbnQiLCJtb3VzZXdoZWVsIiwidW5tb3VzZXdoZWVsIiwiYWZ0ZXIiLCJfZG9Nb3VzZVdoZWVsIiwibW91c2Vkb3duIiwiX2hhbmRsZVNwaW5uZXIiLCJtb3VzZXVwIiwiX2VuZFNwaW5uZXIiLCJtb3VzZW92ZXIiLCJfZXhwYW5kU3Bpbm5lciIsIm1vdXNlb3V0IiwibW91c2Vtb3ZlIiwiX2Rlc2NyaWJlU3Bpbm5lciIsImVuYWJsZSIsIl9lbmFibGVEaXNhYmxlIiwiZGlzYWJsZSIsImRpc2FibGVkIiwibmV4dFNpYmxpbmciLCJfY2hhbmdlU3Bpbm5lciIsImlzRGlzYWJsZWQiLCJvZmYiLCJzaWJsaW5ncyIsImlzQXJyYXkiLCJnZXRPZmZzZXQiLCJfbGFzdElucHV0IiwiX2ZvY3Vzc2VkIiwiX2JsdXJyZWRJbnB1dCIsImlzRnVuY3Rpb24iLCJfc2hvd0ZpZWxkIiwiX2dldFNlbGVjdGlvbiIsIl9sYXN0Q2hyIiwic2VsZWN0aW9uU3RhcnQiLCJtYXgiLCJfc2Vjb25kRmllbGQiLCJfYW1wbUZpZWxkIiwiY3JlYXRlVGV4dFJhbmdlIiwic3JjRWxlbWVudCIsImsiLCJ0aGluIiwibWVkaXVtIiwidGhpY2siLCJjbGllbnRYIiwiZG9jdW1lbnRFbGVtZW50Iiwic2Nyb2xsTGVmdCIsIm9mZnNldCIsImxlZnQiLCJvZmZzZXRMZWZ0IiwiZmllbGRTaXplIiwiY29sbGFwc2UiLCJtb3ZlRW5kIiwiYm91bmRpbmdXaWR0aCIsInNoaWZ0S2V5IiwiX2NoYW5nZUZpZWxkIiwiY3RybEtleSIsIl9zZXRWYWx1ZSIsIl9hZGp1c3RGaWVsZCIsImNoYXJDb2RlIiwiX2hhbmRsZUtleVByZXNzIiwiX2NvbnN0cmFpblRpbWUiLCJfZ2V0U3Bpbm5lclRhcmdldCIsIl9nZXRJbnB1dCIsIl9leHBhbmRlZCIsInBhcmVudHMiLCJ0b3AiLCJfZW5kRXhwYW5kIiwiaW5zZXJ0QWZ0ZXIiLCJfZ2V0U3Bpbm5lclJlZ2lvbiIsIl9hY3Rpb25TcGlubmVyIiwiX3RpbWVyIiwiX2hhbmRsaW5nU3Bpbm5lciIsIl9yZXBlYXRTcGlubmVyIiwiX3JlbGVhc2VTcGlubmVyIiwiY2xlYXJUaW1lb3V0IiwiYm9keSIsInNjcm9sbFRvcCIsImNsaWVudFkiLCJtaW4iLCJfc2hvd1RpbWUiLCJpc05hTiIsIl9kZXRlcm1pbmVUaW1lIiwiZ2V0U2Vjb25kcyIsInJvdW5kIiwiX2Zvcm1hdE51bWJlciIsImlzIiwic2V0U2VsZWN0aW9uUmFuZ2UiLCJtb3ZlU3RhcnQiLCJ0cmlnZ2VyIiwiX25vcm1hbGlzZVRpbWUiLCJleGVjIiwidGVzdCIsImdldERhdGUiLCJzZXRGdWxsWWVhciIsInNldE1vbnRoIiwic2V0RGF0ZSIsInRpbWVFbnRyeSIsIm11bHRpc2VsZWN0SUQiLCIkZG9jIiwid2lkZ2V0IiwibWluV2lkdGgiLCJjaGVja0FsbFRleHQiLCJ1bmNoZWNrQWxsVGV4dCIsIm5vbmVTZWxlY3RlZFRleHQiLCJzaG93Q2hlY2tBbGwiLCJzaG93VW5jaGVja0FsbCIsInNlbGVjdGVkVGV4dCIsInNlbGVjdGVkTGlzdCIsImNsb3NlSWNvbiIsInNob3ciLCJhdXRvT3BlbiIsIm11bHRpcGxlIiwiYXBwZW5kVG8iLCJtZW51V2lkdGgiLCJzZWxlY3RlZExpc3RTZXBhcmF0b3IiLCJkaXNhYmxlSW5wdXRzT25Ub2dnbGUiLCJncm91cENvbHVtbnMiLCJfZ2V0QXBwZW5kRWwiLCJlbGVtZW50IiwianF1ZXJ5Iiwibm9kZVR5cGUiLCJlcSIsImNsb3Nlc3QiLCJfY3JlYXRlIiwic3BlZWQiLCJmeCIsInNwZWVkcyIsIl9kZWZhdWx0IiwiX2lzT3BlbiIsImlucHV0SWRDb3VudGVyIiwiX25hbWVzcGFjZUlEIiwiZXZlbnROYW1lc3BhY2UiLCJidXR0b24iLCJidXR0b25sYWJlbCIsIm1lbnUiLCJoZWFkZXJMaW5rQ29udGFpbmVyIiwiaGVhZGVyX2xpcyIsImNoZWNrYm94Q29udGFpbmVyIiwiX2JpbmRFdmVudHMiLCJyZWZyZXNoIiwiX21ha2VPcHRpb24iLCJpbnB1dElEIiwiaXNTZWxlY3RlZCIsImxhYmVsQ2xhc3NlcyIsImxpQ2xhc3NlcyIsIiRpdGVtIiwiam9pbiIsIiRsYWJlbCIsIiRpbnB1dCIsIl9idWlsZE9wdGlvbkxpc3QiLCIkYXBwZW5kVG8iLCJjaGlsZHJlbiIsInRhZ05hbWUiLCIkb3B0aW9uR3JvdXAiLCJnZXRBdHRyaWJ1dGUiLCIkbGlzdEl0ZW0iLCJpbml0IiwiJGRyb3Bkb3duIiwibGFiZWxzIiwiaW5wdXRzIiwiX3NldEJ1dHRvbldpZHRoIiwidXBkYXRlIiwiX3RyaWdnZXIiLCJpc0RlZmF1bHQiLCIkaW5wdXRzIiwiJGNoZWNrZWQiLCJmaWx0ZXIiLCJudW1DaGVja2VkIiwiZ2V0IiwiX3NldEJ1dHRvblZhbHVlIiwiZGVmYXVsdFZhbHVlIiwiX2JpbmRCdXR0b25FdmVudHMiLCJjbGlja0hhbmRsZXIiLCJrZXlwcmVzcyIsImNsb3NlIiwibW91c2VlbnRlciIsIm1vdXNlbGVhdmUiLCJibHVyIiwiX2JpbmRNZW51RXZlbnRzIiwiZGVsZWdhdGUiLCJub2RlcyIsIl90b2dnbGVDaGVja2VkIiwiY2hlY2tlZCIsImxhc3QiLCJfdHJhdmVyc2UiLCJhbHRLZXkiLCJjaGVja0FsbCIsInVuY2hlY2tBbGwiLCJvcHRpb25UZXh0IiwidGFncyIsInRvZ2dsZUNsYXNzIiwicHJveHkiLCJfYmluZEhlYWRlckV2ZW50cyIsIiR0YXJnZXQiLCJwcmV2IiwiY29udGFpbnMiLCJmb3JtIiwiX2dldE1pbldpZHRoIiwibWluVmFsIiwibGFzdENoYXIiLCJvdXRlcldpZHRoIiwiX3NldE1lbnVXaWR0aCIsIl9zZXRNZW51SGVpZ2h0IiwiaGVhZGVySGVpZ2h0Iiwib3V0ZXJIZWlnaHQiLCJ1bEhlaWdodCIsImlkeCIsImxpIiwiX3Jlc2l6ZU1lbnUiLCJzdGFydCIsIiRzdGFydCIsIm1vdmVUb0xhc3QiLCIkbmV4dCIsImZpcnN0IiwiJGNvbnRhaW5lciIsIl90b2dnbGVTdGF0ZSIsImZsYWciLCJzZXRBdHRyaWJ1dGUiLCJyZW1vdmVBdHRyaWJ1dGUiLCJncm91cCIsIl90b2dnbGVEaXNhYmxlZCIsImNoZWNrYm94ZXMiLCJtYXRjaGVkSW5wdXRzIiwicXVlcnlTZWxlY3RvckFsbCIsInBhcmVudE5vZGUiLCJoYXNBdHRyaWJ1dGUiLCJlZmZlY3QiLCJnZXRDaGVja2VkIiwiZ2V0VW5jaGVja2VkIiwibm90IiwiV2lkZ2V0IiwidW5iaW5kIiwiaXNPcGVuIiwiZ2V0QnV0dG9uIiwiZ2V0TWVudSIsImdldExhYmVscyIsImF0dHJpYnV0ZXMiLCJncm91cExhYmVsIiwiJG9wdGlvbiIsIm9wdGlvbk5vZGUiLCJwb3MiLCJteSIsImF0Iiwib2YiLCJpc0VtcHR5T2JqZWN0IiwidWkiLCJfc2V0T3B0aW9uIiwicHJlcGVuZCIsImFqYXhGb3JtIiwiZ2V0U2NyaXB0IiwicHJvdG9jb2wiLCJmaWxlYXBpIiwiZm9ybWRhdGEiLCJGb3JtRGF0YSIsIlMiLCJ4IiwiRCIsImFmdGVyVXBsb2FkQWxsIiwiQyIsInNlcXVlbnRpYWxDb3VudCIsInNoaWZ0Iiwic3VibWl0Iiwic3RvcFByb3BhZ2F0aW9uIiwiZHJhZ0Ryb3BIb3ZlckNsYXNzIiwiZHJhZ0Ryb3BDb250YWluZXJDbGFzcyIsImVycm9yTG9nIiwib3JpZ2luYWxFdmVudCIsImRhdGFUcmFuc2ZlciIsInNob3dFcnJvciIsImVycm9yQ2xhc3MiLCJtdWx0aURyYWdFcnJvclN0ciIsIm9uU2VsZWN0IiwicGFyYW0iLCJkZWNvZGVVUklDb21wb25lbnQiLCJhbGxvd0R1cGxpY2F0ZXMiLCJtYXhGaWxlU2l6ZSIsInNpemVFcnJvclN0ciIsIm1heEZpbGVDb3VudCIsInNlbGVjdGVkRmlsZXMiLCJtYXhGaWxlQ291bnRFcnJvclN0ciIsImV4aXN0aW5nRmlsZU5hbWVzIiwicCIsInUiLCJmaWxlTmFtZSIsImZvcm1EYXRhIiwiZmlsZURhdGEiLCJzaG93RmlsZUNvdW50ZXIiLCJmaWxlQ291bnRlciIsImZpbGVDb3VudGVyU3R5bGUiLCJzaG93RmlsZVNpemUiLCJmaWxlbmFtZSIsImZvcm1Hcm91cCIsIm1ldGhvZCIsImVuY3R5cGUiLCJkdXBsaWNhdGVFcnJvclN0ciIsInBvcCIsImR1cGxpY2F0ZVN0cmljdCIsInNwbGljZSIsIkZpbGVSZWFkZXIiLCJvbmxvYWQiLCJyZXN1bHQiLCJyZWFkQXNEYXRhVVJMIiwiY29udGFpbmVyIiwiYWNjZXB0RmlsZXMiLCJuZXN0ZWRGb3JtcyIsIm1hcmdpbiIsInBhZGRpbmciLCJvdmVyZmxvdyIsImN1cnNvciIsIm9wYWNpdHkiLCJkaXNwbGF5IiwibmF2aWdhdG9yIiwiYXBwVmVyc2lvbiIsInN0YXR1c2JhciIsInN0YXR1c0JhcldpZHRoIiwicHJldmlldyIsInByZXZpZXdXaWR0aCIsInByZXZpZXdIZWlnaHQiLCJwcm9ncmVzc0RpdiIsInByb2dyZXNzYmFyIiwiYWJvcnQiLCJhYm9ydFN0ciIsImNhbmNlbCIsImNhbmNlbFN0ciIsImRvbmUiLCJkb25lU3RyIiwiZG93bmxvYWQiLCJkb3dubG9hZFN0ciIsImRlbCIsImRlbGV0ZWxTdHIiLCJjdXN0b21Qcm9ncmVzc0JhciIsImFib3J0QnV0dG9uQ2xhc3MiLCJjYW5jZWxCdXR0b25DbGFzcyIsImV4dHJhSFRNTCIsImNvbnRlbnRUeXBlIiwicHJvY2Vzc0RhdGEiLCJmb3JjZVN5bmMiLCJyZXR1cm5UeXBlIiwiYmVmb3JlU3VibWl0Iiwib25TdWJtaXQiLCJkeW5hbWljRm9ybURhdGEiLCJ1cGxvYWRFcnJvclN0ciIsIm9uQ2FuY2VsIiwiYmVmb3JlU2VuZCIsInNob3dBYm9ydCIsInVwbG9hZFByb2dyZXNzIiwic2hvd1Byb2dyZXNzIiwiaGFzT3duUHJvcGVydHkiLCJjdXN0b21FcnJvcktleVN0ciIsIm9uRXJyb3IiLCJzaG93U3RhdHVzQWZ0ZXJFcnJvciIsInJlc3BvbnNlcyIsInNob3dTdGF0dXNBZnRlclN1Y2Nlc3MiLCJzaG93RG9uZSIsImRlbGV0ZUNhbGxiYWNrIiwiZG93bmxvYWRDYWxsYmFjayIsImVycm9yIiwic3RhdHVzVGV4dCIsInNob3dQcmV2aWV3IiwiYXV0b1N1Ym1pdCIsInNlcXVlbnRpYWwiLCJhamF4U3VibWl0Iiwic2hvd0NhbmNlbCIsImRyYWdEcm9wIiwib25Mb2FkIiwidXBsb2FkQnV0dG9uQ2xhc3MiLCJzaG93UXVldWVEaXYiLCJkcmFnZHJvcFdpZHRoIiwiRiIsInN0YXJ0VXBsb2FkIiwiZ2V0RmlsZUNvdW50Iiwic3RvcFVwbG9hZCIsImNhbmNlbEFsbCIsInJlc2V0IiwiY3JlYXRlUHJvZ3Jlc3MiLCJnZXRSZXNwb25zZXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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LENBQUM4QyxDQUFELENBQU47QUFBVTJFLFNBQUMsQ0FBQ2tmLGNBQUYsSUFBa0JsZixDQUFDLENBQUNrZixjQUFGLENBQWlCN2dCLElBQWpCLENBQXNCLElBQXRCLEVBQTJCOUYsQ0FBM0IsRUFBNkJtRixDQUE3QixDQUFsQixFQUFrRHdiLENBQUMsQ0FBQ29CLGFBQUYsSUFBaUIsQ0FBbkUsRUFBcUV6YSxDQUFDLENBQUNHLENBQUQsRUFBR2taLENBQUgsQ0FBdEU7QUFBNEUsT0FBekksQ0FBblQ7QUFBOGIsS0FBOXNELEVBQStzRCxLQUFLcUgsWUFBTCxHQUFrQixZQUFVO0FBQUMsYUFBTyxLQUFLeEIsU0FBWjtBQUFzQixLQUFsd0Q7QUFBbXdELFFBQUloRyxDQUFDLEdBQUMsRUFBTjtBQUFBLFFBQVNDLENBQUMsR0FBQyxFQUFYO0FBQUEsUUFBY0YsQ0FBQyxHQUFDLENBQUMsQ0FBakI7QUFBbUIsV0FBTyxJQUFQO0FBQVksR0FBdmhjO0FBQXdoYyxDQUEvcWMsQ0FBZ3JjcmUsTUFBaHJjLENBQUQsQyIsImZpbGUiOiJib290c3RyYXBfZW52fmpxdWVyeS11aV9lbnYuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4iLCIvKipcbiAqIENyZWF0ZWQgYnkgUGhwU3Rvcm1cbiAqIFVzZXI6IGRhbmllbGVcbiAqIERhdGU6IDExLzA2LzIxXG4gKiBUaW1lOiAxMzozNlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBidWlsZEdvb2dsZU1hcHM6IGZ1bmN0aW9uIChnb29nbGVtYXApIHtcbiAgICAgICAgY29uc3QgbGF0aXR1ZGluZSA9ICQoZ29vZ2xlbWFwKS5kYXRhKFwibGF0aXR1ZGluZVwiKTtcbiAgICAgICAgY29uc3QgbG9uZ2l0dWRpbmUgPSAkKGdvb2dsZW1hcCkuZGF0YShcImxvbmdpdHVkaW5lXCIpO1xuICAgICAgICBjb25zdCBtYXJrZXJzID0gJChnb29nbGVtYXApLmRhdGEoXCJtYXJrZXJzXCIpO1xuICAgICAgICBjb25zdCB6b29tID0gJChnb29nbGVtYXApLmRhdGEoXCJ6b29tXCIpO1xuICAgICAgICBjb25zdCB2aWV3U2VhcmNoQm94ID0gJChnb29nbGVtYXApLmRhdGEoXCJ2aWV3c2VhcmNoYm94XCIpO1xuXG4gICAgICAgIGNvbnN0IG1hcCA9IG5ldyBnb29nbGUubWFwcy5NYXAoJChnb29nbGVtYXApWzBdLCB7XG4gICAgICAgICAgICB6b29tOiB6b29tLFxuICAgICAgICAgICAgY2VudGVyOiB7bGF0OiBnZXRGbG9hdChsYXRpdHVkaW5lKSwgbG5nOiBnZXRGbG9hdChsb25naXR1ZGluZSl9LFxuICAgICAgICB9KTtcblxuICAgICAgICBpZih2aWV3U2VhcmNoQm94KSB7XG4gICAgICAgICAgICAvLyBDcmVhdGUgdGhlIHNlYXJjaCBib3ggYW5kIGxpbmsgaXQgdG8gdGhlIFVJIGVsZW1lbnQuXG4gICAgICAgICAgICBjb25zdCBpbnB1dCA9ICQoXCIjXCIgKyAkKGdvb2dsZW1hcCkuYXR0cihcImlkXCIpICsgXCJfcGFjX2lucHV0XCIpWzBdO1xuICAgICAgICAgICAgY29uc3Qgc2VhcmNoQm94ID0gbmV3IGdvb2dsZS5tYXBzLnBsYWNlcy5TZWFyY2hCb3goaW5wdXQpO1xuXG4gICAgICAgICAgICBtYXAuY29udHJvbHNbZ29vZ2xlLm1hcHMuQ29udHJvbFBvc2l0aW9uLlRPUF9MRUZUXS5wdXNoKGlucHV0KTtcbiAgICAgICAgICAgIC8vIEJpYXMgdGhlIFNlYXJjaEJveCByZXN1bHRzIHRvd2FyZHMgY3VycmVudCBtYXAncyB2aWV3cG9ydC5cbiAgICAgICAgICAgIG1hcC5hZGRMaXN0ZW5lcihcImJvdW5kc19jaGFuZ2VkXCIsICgpID0+IHtcbiAgICAgICAgICAgICAgICBzZWFyY2hCb3guc2V0Qm91bmRzKG1hcC5nZXRCb3VuZHMoKSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgbGV0IHNfbWFya2VycyA9IFtdO1xuXG4gICAgICAgICAgICAvLyBMaXN0ZW4gZm9yIHRoZSBldmVudCBmaXJlZCB3aGVuIHRoZSB1c2VyIHNlbGVjdHMgYSBwcmVkaWN0aW9uIGFuZCByZXRyaWV2ZVxuICAgICAgICAgICAgLy8gbW9yZSBkZXRhaWxzIGZvciB0aGF0IHBsYWNlLlxuICAgICAgICAgICAgc2VhcmNoQm94LmFkZExpc3RlbmVyKFwicGxhY2VzX2NoYW5nZWRcIiwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBsYWNlcyA9IHNlYXJjaEJveC5nZXRQbGFjZXMoKTtcblxuICAgICAgICAgICAgICAgIGlmICghcGxhY2VzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gQ2xlYXIgb3V0IHRoZSBvbGQgbWFya2Vycy5cbiAgICAgICAgICAgICAgICBzX21hcmtlcnMuZm9yRWFjaCgobWFya2VyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmtlci5zZXRNYXAobnVsbCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgc19tYXJrZXJzID0gW107XG5cbiAgICAgICAgICAgICAgICAvLyBGb3IgZWFjaCBwbGFjZSwgZ2V0IHRoZSBpY29uLCBuYW1lIGFuZCBsb2NhdGlvbi5cbiAgICAgICAgICAgICAgICBjb25zdCBib3VuZHMgPSBuZXcgZ29vZ2xlLm1hcHMuTGF0TG5nQm91bmRzKCk7XG5cbiAgICAgICAgICAgICAgICBwbGFjZXMuZm9yRWFjaCgocGxhY2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFwbGFjZS5nZW9tZXRyeSB8fCAhcGxhY2UuZ2VvbWV0cnkubG9jYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiUmV0dXJuZWQgcGxhY2UgY29udGFpbnMgbm8gZ2VvbWV0cnlcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpY29uID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBwbGFjZS5pY29uLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogbmV3IGdvb2dsZS5tYXBzLlNpemUoNzEsIDcxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbjogbmV3IGdvb2dsZS5tYXBzLlBvaW50KDAsIDApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYW5jaG9yOiBuZXcgZ29vZ2xlLm1hcHMuUG9pbnQoMTcsIDM0KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlZFNpemU6IG5ldyBnb29nbGUubWFwcy5TaXplKDI1LCAyNSksXG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGEgbWFya2VyIGZvciBlYWNoIHBsYWNlLlxuICAgICAgICAgICAgICAgICAgICBzX21hcmtlcnMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBnb29nbGUubWFwcy5NYXJrZXIoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwbGFjZS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBwbGFjZS5nZW9tZXRyeS5sb2NhdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwbGFjZS5nZW9tZXRyeS52aWV3cG9ydCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gT25seSBnZW9jb2RlcyBoYXZlIHZpZXdwb3J0LlxuICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRzLnVuaW9uKHBsYWNlLmdlb21ldHJ5LnZpZXdwb3J0KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kcy5leHRlbmQocGxhY2UuZ2VvbWV0cnkubG9jYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgbWFwLmZpdEJvdW5kcyhib3VuZHMpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBnZW9jb2RlcjtcblxuICAgICAgICBtYXJrZXJzLm1hcCgobWFya2VyKSA9PiB7XG4gICAgICAgICAgICBsZXQgb3B0cyA9IHtcbiAgICAgICAgICAgICAgICBtYXA6IG1hcFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmKG1hcmtlci5sYWJlbCkgb3B0cy5sYWJlbCA9IG1hcmtlci5sYWJlbDtcbiAgICAgICAgICAgIGlmKG1hcmtlci50aXRsZSkgb3B0cy50aXRsZSA9IG1hcmtlci50aXRsZTtcbiAgICAgICAgICAgIGlmKG1hcmtlci5jb2xvcikgb3B0cy5pY29uID0ge1xuICAgICAgICAgICAgICAgIHVybDogXCJodHRwczovL21hcHMuZ29vZ2xlLmNvbS9tYXBmaWxlcy9tcy9pY29ucy9cIisgbWFya2VyLmNvbG9yICsgXCItZG90LnBuZ1wiXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBsZXQgc2V0SW5mb1dpbmRvdztcbiAgICAgICAgICAgIGlmKG1hcmtlci50ZXh0KSBzZXRJbmZvV2luZG93ID0gKGdtYXJrZXIpID0+e1xuICAgICAgICAgICAgICAgIGxldCBpbmZvID0gbmV3IGdvb2dsZS5tYXBzLkluZm9XaW5kb3coeyBjb250ZW50OiBtYXJrZXIudGV4dCB9KTtcbiAgICAgICAgICAgICAgICBpbmZvLmFkZExpc3RlbmVyKFwiY2xvc2VjbGlja1wiLCAoKSA9PiB7ICQoXCIudWktdG9vbHRpcFwiKS5oaWRlKCk7IH0pO1xuICAgICAgICAgICAgICAgIGdtYXJrZXIuYWRkTGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7IGluZm8ub3Blbih7YW5jaG9yOiBnbWFya2VyLCBtYXAsIHNob3VsZEZvY3VzOiBmYWxzZX0pIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZighbWFya2VyLmFkZHJlc3Mpe1xuICAgICAgICAgICAgICAgIG9wdHMucG9zaXRpb24gPSB7bGF0OiBnZXRGbG9hdChtYXJrZXIubGF0KSwgbG5nOiBnZXRGbG9hdChtYXJrZXIubG5nKX07XG4gICAgICAgICAgICAgICAgbGV0IGdtYXJrZXIgPSBuZXcgZ29vZ2xlLm1hcHMuTWFya2VyKG9wdHMpO1xuICAgICAgICAgICAgICAgIGlmKHNldEluZm9XaW5kb3cpIHNldEluZm9XaW5kb3coZ21hcmtlcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBnZW9jb2RlciA9IG5ldyBnb29nbGUubWFwcy5HZW9jb2RlcigpO1xuICAgICAgICAgICAgZ2VvY29kZXIuZ2VvY29kZSh7YWRkcmVzczogbWFya2VyLmFkZHJlc3N9LCBmdW5jdGlvbiAocmVzdWx0cywgc3RhdHVzKXtcbiAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICE9PSAnT0snKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdHZW9jb2RlIHdhcyBub3Qgc3VjY2Vzc2Z1bCBmb3IgdGhlIGZvbGxvd2luZyByZWFzb246ICcgKyBzdGF0dXMpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG9wdHMucG9zaXRpb24gPSByZXN1bHRzWzBdLmdlb21ldHJ5LmxvY2F0aW9uXG4gICAgICAgICAgICAgICAgbGV0IGdtYXJrZXIgPSBuZXcgZ29vZ2xlLm1hcHMuTWFya2VyKG9wdHMpO1xuICAgICAgICAgICAgICAgIGlmKHNldEluZm9XaW5kb3cpIHNldEluZm9XaW5kb3coZ21hcmtlcik7XG4gICAgICAgICAgICB9KVxuICAgICAgICB9KTtcbiAgICB9XG59IiwiLyoqXG4gKiBDcmVhdGVkIGJ5IFBocFN0b3JtXG4gKiBVc2VyOiBkYW5pZWxlXG4gKiBEYXRlOiAwMy8wNi8yMVxuICogVGltZTogMTQ6NDZcbiAqL1xuXG5pbXBvcnQgSGFuZHNvbnRhYmxlIGZyb20gXCJoYW5kc29udGFibGVcIjtcbmltcG9ydCAnaGFuZHNvbnRhYmxlL2Rpc3QvaGFuZHNvbnRhYmxlLmZ1bGwuY3NzJztcbmltcG9ydCBcIi4uLy4uL2Nzcy9oYW5kc29udGFibGUuY3NzXCI7XG5pbXBvcnQgJCBmcm9tIFwianF1ZXJ5XCI7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBidWlsZFRhYmxlOiAodGFibGUpID0+IHtcbiAgICAgICAgY29uc3QgaWR0YWJsZSA9ICQodGFibGUpLmF0dHIoXCJpZFwiKTtcbiAgICAgICAgY29uc3QgJHRhYmxlID0gJChcIiNcIiArIGlkdGFibGUpO1xuXG4gICAgICAgIGNvbnN0IGNvbHVtbnMgPSAkdGFibGUuZGF0YShcImNvbHVtbnNcIik7XG5cbiAgICAgICAgbGV0IGNvbEhlYWRlcnMgPSBbXSwgaGNvbHVtbnMgPSBbXSwgaGlkZGVuQ29sdW1ucyA9IHsgY29sdW1uczogW119O1xuICAgICAgICBsZXQgaW5kZXhfY29sID0gMDtcblxuICAgICAgICBsZXQgZGF0ZV9mb3JtYXQsIGN1cnJlbmN5X3BhdHRlcm4sIGZpcnN0RGF5LCBjdWx0dXJlO1xuXG4gICAgICAgIGNvbnN0IGxvY2FsZSA9ICR0YWJsZS5kYXRhKFwibG9jYWxlXCIpO1xuICAgICAgICBzd2l0Y2ggKGxvY2FsZSl7XG4gICAgICAgICAgICBjYXNlIFwiamFwXCI6XG4gICAgICAgICAgICAgICAgZmlyc3REYXkgPSAwO1xuICAgICAgICAgICAgICAgIGRhdGVfZm9ybWF0ID0gXCJZWVlZL01NL0REXCI7XG4gICAgICAgICAgICAgICAgY3VycmVuY3lfcGF0dGVybiA9IFwiMCwwLjAwICRcIjtcbiAgICAgICAgICAgICAgICBjdWx0dXJlID0gXCJqYS1KUFwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcInVzXCI6XG4gICAgICAgICAgICAgICAgZmlyc3REYXkgPSAwO1xuICAgICAgICAgICAgICAgIGRhdGVfZm9ybWF0ID0gXCJNTS9ERC9ZWVlZXCI7XG4gICAgICAgICAgICAgICAgY3VycmVuY3lfcGF0dGVybiA9IFwiJDAsMC4wMFwiO1xuICAgICAgICAgICAgICAgIGN1bHR1cmUgPSBcImVuLVVTXCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGZpcnN0RGF5ID0gMTtcbiAgICAgICAgICAgICAgICBkYXRlX2Zvcm1hdCA9IFwiREQvTU0vWVlZWVwiO1xuICAgICAgICAgICAgICAgIGN1cnJlbmN5X3BhdHRlcm4gPSBcIjAsMC4wMCAkXCI7XG4gICAgICAgICAgICAgICAgY3VsdHVyZSA9IFwiaXQtSVRcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKGN1bHR1cmUpO2NvbnNvbGUubG9nKGN1cnJlbmN5X3BhdHRlcm4pO1xuXG4gICAgICAgIGNvbnN0IGFsaWducyA9IHtcIkxcIjogXCJodExlZnRcIiwgXCJDXCI6IFwiaHRDZW50ZXJcIiwgXCJSXCI6IFwiaHRSaWdodFwiLCBcIkpcIjogXCJodEp1c3RpZnlcIn07XG4gICAgICAgIGNvbHVtbnMubWFwKChjb2wpID0+IHtcbiAgICAgICAgICAgIGNvbEhlYWRlcnMucHVzaChjb2wuaGVhZGVyKTtcbiAgICAgICAgICAgIGlmKGNvbC5oaWRkZW4pIGhpZGRlbkNvbHVtbnMuY29sdW1ucy5wdXNoKGluZGV4X2NvbCk7XG5cblxuICAgICAgICAgICAgbGV0IGFsaWduID0gYWxpZ25zW2NvbC5hbGlnbl07XG5cbiAgICAgICAgICAgIHN3aXRjaCAoY29sLnR5cGUpe1xuICAgICAgICAgICAgICAgIGNhc2UgXCJkcm9wZG93blwiOiBoY29sdW1ucy5wdXNoKHtkYXRhOiBjb2wua2V5LCB0eXBlOiBcImRyb3Bkb3duXCIsIHNvdXJjZTogT2JqZWN0LnZhbHVlcyhjb2wuc2VsZWN0X29wdGlvbnMpLCByZWFkT25seTogY29sLnJlYWRvbmx5LCBjbGFzc05hbWU6IGFsaWdufSk7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJudW1lcmljXCI6IGhjb2x1bW5zLnB1c2goe3R5cGU6IFwibnVtZXJpY1wiLCBkYXRhOiBjb2wua2V5LCByZWFkT25seTogY29sLnJlYWRvbmx5LCBjbGFzc05hbWU6IGFsaWdufSk7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJjdXJyZW5jeVwiOlxuICAgICAgICAgICAgICAgICAgICBoY29sdW1ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwibnVtZXJpY1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogY29sLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWVyaWNGb3JtYXQ6e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1bHR1cmU6IGN1bHR1cmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybjogY3VycmVuY3lfcGF0dGVybixcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICByZWFkT25seTogY29sLnJlYWRvbmx5LFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBhbGlnblxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcImRhdGVcIjpcbiAgICAgICAgICAgICAgICAgICAgaGNvbHVtbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImRhdGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGNvbC5rZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRlRm9ybWF0OiBkYXRlX2Zvcm1hdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvcnJlY3RGb3JtYXQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRlUGlja2VyQ29uZmlnOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3REYXk6IGZpcnN0RGF5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dXZWVrTnVtYmVyOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICByZWFkT25seTogY29sLnJlYWRvbmx5LFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBhbGlnblxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcImF1dG9jb21wbGV0ZUNvZGljZUFydGljb2xvXCI6XG4gICAgICAgICAgICAgICAgICAgIGhjb2x1bW5zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogY29sLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiYXV0b2NvbXBsZXRlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U6IGZ1bmN0aW9uIChxdWVyeSwgcHJvY2Vzcyl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWpheFNvdXJjZUlXQXV0b2NvbXBsZXRlKHt9LCBcIklXQXV0b2NvbXBsZXRlQ29kaWNlQXJ0aWNvbG9cIiwgcXVlcnksIG51bGwsIHByb2Nlc3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRPbmx5OiBjb2wucmVhZG9ubHksXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IGFsaWduXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwiYXV0b2NvbXBsZXRlQXJ0aWNvbG9cIjpcbiAgICAgICAgICAgICAgICAgICAgaGNvbHVtbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBjb2wua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJhdXRvY29tcGxldGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZTogZnVuY3Rpb24gKHF1ZXJ5LCBwcm9jZXNzKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhamF4U291cmNlSVdBdXRvY29tcGxldGUoe30sIFwiSVdBdXRvY29tcGx0ZUFydGljb2xvXCIsIHF1ZXJ5LCBudWxsLCBwcm9jZXNzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICByZWFkT25seTogY29sLnJlYWRvbmx5LFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBhbGlnblxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDogaGNvbHVtbnMucHVzaCh7ZGF0YTogY29sLmtleSwgcmVhZE9ubHk6IGNvbC5yZWFkb25seSwgY2xhc3NOYW1lOiBhbGlnbn0pOyBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaW5kZXhfY29sKys7XG4gICAgICAgIH0pO1xuXG4gICAgICAgICQuYWpheCh7XG4gICAgICAgICAgICB1cmw6ICR0YWJsZS5kYXRhKFwidXJsXCIpLFxuICAgICAgICAgICAgZGF0YVR5cGU6IFwianNvblwiLFxuICAgICAgICAgICAgdHlwZTogXCJwb3N0XCIsXG4gICAgICAgICAgICBkYXRhOiAkdGFibGUuZGF0YShcImRpdl9kYXRhX2lkXCIpID8gJChcIiNcIiArICR0YWJsZS5kYXRhKFwiZGl2X2RhdGFfaWRcIikpIDogJChcIiNmb3JtMVwiKS5zZXJpYWxpemUoKSxcbiAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChqc29uKXtcbiAgICAgICAgICAgICAgICBjb25zdCBob3QgPSBuZXcgSGFuZHNvbnRhYmxlKHRhYmxlLCB7XG4gICAgICAgICAgICAgICAgICAgIGxpY2Vuc2VLZXk6ICdub24tY29tbWVyY2lhbC1hbmQtZXZhbHVhdGlvbicsXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IGpzb24sXG4gICAgICAgICAgICAgICAgICAgIG1pblNwYXJlUm93czogMTAsXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0Um93czogNTAsXG4gICAgICAgICAgICAgICAgICAgIHJvd0hlYWRlcnM6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGNvbEhlYWRlcnM6IGNvbEhlYWRlcnMsXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IGhjb2x1bW5zLFxuICAgICAgICAgICAgICAgICAgICBoaWRkZW5Db2x1bW5zOiBoaWRkZW5Db2x1bW5zLFxuICAgICAgICAgICAgICAgICAgICBtYW51YWxDb2x1bW5SZXNpemU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIG1hbnVhbFJvd1Jlc2l6ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBcImF1dG9cIixcbiAgICAgICAgICAgICAgICAgICAgcm93SGVpZ2h0czogMzAsXG4gICAgICAgICAgICAgICAgICAgIGNvbFdpZHRoczogMTAwXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luIiwiLyoqXG4gKiBDcmVhdGVkIGJ5IFBocFN0b3JtXG4gKiBVc2VyOiBkYW5pZWxlXG4gKiBEYXRlOiAxNS8wNS8yMFxuICogVGltZTogMTIuNTJcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgLyoqXG4gICAgICogUHJlbmRlIGluIGluZ3Jlc3NvIHVuYSBkYXRhIGluIGZvcm1hdG8gaXRhIGUgbGEgdHJhc2Zvcm1hIGluIGphcFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhX2l0XG4gICAgICogQHJldHVybnMge3N0cmluZ31cbiAgICAgKi9cbiAgICBEYXRlX19qYXA6IGZ1bmN0aW9uIChkYXRhX2l0KSB7XG4gICAgICAgIGlmKCFkYXRhX2l0KSByZXR1cm4gXCJcIjtcblxuICAgICAgICB2YXIgZGF0ZV9mb3JtYXQ9JChcIiNEUENfREVGQVVMVF9GT1JNQVRcIikudmFsKCk7XG4gICAgICAgIGlmKCBkYXRlX2Zvcm1hdCA9PT0gXCJ5eS9tbS9kZFwiICkgcmV0dXJuIGRhdGFfaXQ7XG5cbiAgICAgICAgcmV0dXJuIG1vbWVudChkYXRhX2l0LCBkYXRlX2Zvcm1hdCA9PT0gXCJkZC9tbS95eVwiID8gXCJERC9NTS9ZWVlZXCIgOiBcIk1NL0REL1lZWVlcIikuZm9ybWF0KFwiWVlZWS9NTS9ERFwiKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogUHJlbmRlIGluIGluZ3Jlc3NvIHVuYSBkYXRhIGluIGZvcm1hdG8gamFwIGUgbGEgdHJhc2Zvcm1hIGluIGl0YVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhX2phcFxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAgICovXG4gICAgRGF0ZV9faXQ6IGZ1bmN0aW9uIChkYXRhX2phcClcbiAgICB7XG4gICAgICAgIGlmKCFkYXRhX2phcCkgcmV0dXJuIFwiXCI7XG4gICAgICAgIHZhciBkYXRlX2Zvcm1hdD0kKFwiI0RQQ19ERUZBVUxUX0ZPUk1BVFwiKS52YWwoKTtcbiAgICAgICAgaWYoIGRhdGVfZm9ybWF0ID09PSBcInl5L21tL2RkXCIgKSByZXR1cm4gZGF0YV9qYXA7XG5cbiAgICAgICAgcmV0dXJuIG1vbWVudChkYXRhX2phcCwgXCJZWVlZL01NL0REXCIpLmZvcm1hdChkYXRlX2Zvcm1hdCA9PT0gXCJkZC9tbS95eVwiID8gXCJERC9NTS9ZWVlZXCIgOiBcIk1NL0REL1lZWVlcIik7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIHJpdG9ybmEgbCdvcmEgY29ycmVudGUgaW4gZm9ybWF0byBISC5NTVxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICovXG4gICAgRGF0ZV9fT3JhTm93OiBmdW5jdGlvbigpXG4gICAge1xuICAgICAgICByZXR1cm4gbW9tZW50KCkuZm9ybWF0KFwiSEgubW1cIik7XG4gICAgfSxcblxuICAgIC8vcml0b3JuYSBpbCBnaW9ybm8gZ2l1bGlhbm8gYSAzIGNhcmF0dGVyaSBmaXNzaSwgcGFzc2FuZG8gdW5hIGRhdGEgaW4gamFwcFxuICAgIERhdGVfX2dnaXVsaWFubzogZnVuY3Rpb24oZGF0YV9qYXApIHtcbiAgICAgICAgdmFyIGFkZXNzbyA9IG5ldyBEYXRlKCAgICBkYXRhX2phcC5zdWJzdHIoMCw0KSwgICBwYXJzZUludChkYXRhX2phcC5zdWJzdHIoNSwyKSwxMCktMSwgICBkYXRhX2phcC5zdWJzdHIoOCwyKSAgLDQsMCwwICk7XG4gICAgICAgIHZhciBhbm5vID0gYWRlc3NvLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgIHZhciBpbml6aW9hbm5vID0gbmV3IERhdGUoYW5ubywgMCwgMCk7XG4gICAgICAgIHZhciAgR0cgPSBTdHJpbmcoTWF0aC5mbG9vcigoYWRlc3NvIC0gaW5pemlvYW5ubykgLyA4NjQwMDAwMCkpO1xuXG4gICAgICAgIHJldHVybiBzdHJfcGFkKEdHLCAzLCBcIjBcIiwgXCJTVFJfUEFEX0xFRlRcIik7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEFnZ2l1bmdlIGFsbGEgZGF0YV9qYXAgdW4gbnVtZXJvIGRpIGdpb3JuaS4gUmVzdGl0dWlzY2UgdW5hIGRhdGFfamFwXG4gICAgICogQHBhcmFtIGRhdGFfamFwXG4gICAgICogQHBhcmFtIG5naW9ybmlcbiAgICAgKiBAcGFyYW0gY29udGFfZGFfZmluZV9tZXNlXG4gICAgICogQHBhcmFtIHVzYV9jYWxlbmRhcmlvX2NvbW1lcmNpYWxlXG4gICAgICogQHJldHVybnMge3N0cmluZ31cbiAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgKi9cbiAgICBEYXRlX19hZGQ6IGZ1bmN0aW9uKGRhdGFfamFwLG5naW9ybmksY29udGFfZGFfZmluZV9tZXNlLCB1c2FfY2FsZW5kYXJpb19jb21tZXJjaWFsZSlcbiAgICB7XG4gICAgICAgIG5naW9ybmkgPSBnZXRGbG9hdChuZ2lvcm5pKTtcbiAgICAgICAgaWYoTnVtYmVyLmlzSW50ZWdlcihuZ2lvcm5pIC8gMzApICYmICFjb250YV9kYV9maW5lX21lc2UgJiYgdXNhX2NhbGVuZGFyaW9fY29tbWVyY2lhbGUpIHJldHVybiBEYXRlX19zb21tYW1lc2koZGF0YV9qYXAsIG5naW9ybmkgLyAzMCk7XG5cbiAgICAgICAgaWYoY29udGFfZGFfZmluZV9tZXNlKSB7XG4gICAgICAgICAgICBkYXRhX2phcCA9IGRhdGFfamFwLnN1YnN0cigwLCA4KSArIFwiMTVcIjtcbiAgICAgICAgICAgIHZhciBkID0gbW9tZW50KGRhdGFfamFwLCBcIllZWVkvTU0vRERcIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZihuZ2lvcm5pID4gMClcbiAgICAgICAgICAgIGQuYWRkKG5naW9ybmksIFwiZGF5c1wiKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgZC5zdWJ0cmFjdChNYXRoLmFicyhuZ2lvcm5pKSwgXCJkYXlzXCIpO1xuXG4gICAgICAgIGlmKGNvbnRhX2RhX2ZpbmVfbWVzZSkgZC5lbmRPZihcIm1vbnRoXCIpO1xuXG4gICAgICAgIHJldHVybiBkLmZvcm1hdChcIllZWVkvTU0vRERcIik7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIGZ1bnppb25lIGNoZSBzb21tYSB4IG1lc2kgYWxsYSBkYXRhIHBhc3NhdGEgY29tZSBwYXJhbWV0cm8uXG4gICAgICogdG9ybmEgbG8gc3Rlc3NvIGdpb3JubyBkaSB4IG1lc2kgZG9wbzsgc2UgcGVyIGNhc28gaWwgZ2lvcm5vIMOoIGltcG9zc2liaWxlIChlcy4gMzEvMDYpIHJpdG9ybmEgaWwgcHJpbW8gZ2lvcm5vIHN1Y2Nlc3Npdm9cbiAgICAgKiBkaXBzb25pYmlsZSAoZXMuIDAxLzA3KVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhX2phcFxuICAgICAqIEBwYXJhbSB7aW50fSBubWVzaVxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAgICovXG4gICAgRGF0ZV9fc29tbWFtZXNpOmZ1bmN0aW9uKGRhdGFfamFwLG5tZXNpKVxuICAgIHtcbiAgICAgICAgdmFyIGQgPSBtb21lbnQoZGF0YV9qYXAsIFwiWVlZWS9NTS9ERFwiKTtcbiAgICAgICAgZC5hZGQobm1lc2ksIFwibW9udGhzXCIpO1xuICAgICAgICByZXR1cm4gZC5mb3JtYXQoXCJZWVlZL01NL0REXCIpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBSaXRvcm5hIGxhIGRhdGEgb2RpZXJuYVxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAgICovXG4gICAgRGF0ZV9fbm93OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIG1vbWVudCgpLmZvcm1hdChcIllZWVkvTU0vRERcIik7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEFnZ2l1bmdlIHRvdCBtaW51dGkgZSBzZWNvbmRpIGFsbCdvcmFyaW8gcGFzc2F0by4gUml0b3JuYSB1biBvcmFyaW8gc29sbyBISC5NTVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcmFyaW9cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbW1cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gc3NcbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgICAqL1xuICAgIG1pbnV0aUFkZDogZnVuY3Rpb24ob3JhcmlvLG1tLHNzKVxuICAgIHtcbiAgICAgICAgaWYoc3M9PW51bGwpIHNzPTA7XG4gICAgICAgIHZhciBoPWdldEZsb2F0KG9yYXJpby5zdWJzdHIoMCwyKSk7XG4gICAgICAgIHZhciBtPWdldEZsb2F0KG9yYXJpby5zdWJzdHIoMywyKSk7XG5cbiAgICAgICAgc3M9bW0qNjArc3M7XG5cbiAgICAgICAgdmFyIGQ9bmV3IERhdGUoMjAwMCwgMSwgMSwgaCwgbSwgMCwgMCk7XG4gICAgICAgIHZhciB0PWQuZ2V0VGltZSgpO1xuICAgICAgICB0Kz1zcyoxMDAwO1xuICAgICAgICBkLnNldFRpbWUodCk7XG4gICAgICAgIHZhciBoMj1kLmdldEhvdXJzKCk7XG4gICAgICAgIHZhciBtMj1kLmdldE1pbnV0ZXMoKTtcblxuICAgICAgICBpZihoMjw9OSkgaDI9XCIwXCIraDI7XG4gICAgICAgIGlmKG0yPD05KSBtMj1cIjBcIittMjtcblxuICAgICAgICByZXR1cm4gKGgyK1wiLlwiK20yKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogUml0b3JuYSB0cnVlIHNlIMOoIHVuIG9yYXJpbyB2YWxpZG8gbmVsIGZvcm1hdG8gSEguTU0gY29sIGNhcmF0dGVyZSAnLicgY29tZSBzZXBhcmF0b3JlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHNcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICBpc09yYXJpbzogZnVuY3Rpb24ocylcbiAgICB7XG4gICAgICAgIHZhciBpPXMuaW5kZXhPZignLicpO1xuICAgICAgICBpZihpPT0tMSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgIGlmKGk9PTEpIHM9XCIwXCIrcztcbiAgICAgICAgaWYoIHBhcnNlSW50KHMuc3Vic3RyKDAsMiksMTApPjIzICkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiggcGFyc2VJbnQocy5zdWJzdHIoMywyKSwxMCk+NTkgKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSxcblxuICAgIGdldFBhcmFtc0ZvckRhdGVwaWNrZXI6IGZ1bmN0aW9uIChwYXJhbXMpe1xuICAgICAgICB2YXIgZGF0ZV9mb3JtYXQgPSAkKFwiI0RQQ19ERUZBVUxUX0ZPUk1BVFwiKS52YWwoKTtcbiAgICAgICAgdmFyIGZvcm1hdDtcbiAgICAgICAgc3dpdGNoIChkYXRlX2Zvcm1hdCl7XG4gICAgICAgICAgICBjYXNlIFwiZGQvbW0veXlcIjogZm9ybWF0ID0gXCJkZC9tbS95eXl5XCI7IGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIm1tL2RkL3l5XCI6IGZvcm1hdCA9IFwibW0vZGQveXl5eVwiOyBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZvcm1hdCA9IFwieXl5eS9tbS9kZFwiOyBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBzdGFuZGFyZF9wYXJhbXMgPSB7XG4gICAgICAgICAgICBmb3JtYXQ6IGZvcm1hdCxcbiAgICAgICAgICAgIGF1dG9jbG9zZTogdHJ1ZSxcbiAgICAgICAgICAgIHRvZGF5SGlnaGxpZ2h0OiB0cnVlLFxuICAgICAgICAgICAgbGFuZ3VhZ2U6ICQoXCIjTEFOR1wiKS52YWwoKSxcbiAgICAgICAgICAgIGNsZWFyQnRuOiB0cnVlLFxuICAgICAgICB9O1xuICAgICAgICBpZihwYXJhbXMpe1xuICAgICAgICAgICAgT2JqZWN0LmtleXMocGFyYW1zKS5tYXAoIGtleSA9PiB7XG4gICAgICAgICAgICAgICAgc3RhbmRhcmRfcGFyYW1zW2tleV0gPSBwYXJhbXNba2V5XTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3RhbmRhcmRfcGFyYW1zO1xuICAgIH0sXG5cbiAgICBic0RhdGVQaWNrZXJJbml0OiBmdW5jdGlvbiAoKXtcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgICAgICQoXCIuaW5wdXQtZ3JvdXAuZGF0ZVwiKS5kYXRlcGlja2VyKHNlbGYuZ2V0UGFyYW1zRm9yRGF0ZXBpY2tlcigpKTtcbiAgICB9LFxuXG4gICAgYnNEYXRlUGlja2VyUmFuZ2VJbml0OiBmdW5jdGlvbiAocGFyYW1zKXtcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgICAgICAkKCcuaW5wdXQtZGF0ZXJhbmdlIGlucHV0JykuZWFjaChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICQodGhpcykuZGF0ZXBpY2tlcihzZWxmLmdldFBhcmFtc0ZvckRhdGVwaWNrZXIocGFyYW1zKSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn0iLCIvKipcbiAqIENyZWF0ZWQgYnkgRGFuaWVsZSBvbiAwNi8wNy8xNi5cbiAqL1xuKGZ1bmN0aW9uKCQpe1xuICAgICQuZm4uYXV0b2NvbXBsZXRlT25Gb2N1c0V2ZW50ID0gZnVuY3Rpb24oKXtcbiAgICAgICAgJCh0aGlzKS5mb2N1cyhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAkKHRoaXMpLnNlbGVjdCgpO1xuICAgICAgICAgICAgJCh0aGlzKS5vbmUoXCJtb3VzZXVwXCIsZnVuY3Rpb24oZXYpeyBldi5wcmV2ZW50RGVmYXVsdCgpOyB9KTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICAkLmZuLmF1dG9jb21wbGV0ZVNlYXJjaEFsbE9uRGJsQ2xpY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICQodGhpcykuYmluZChcImRibGNsaWNrXCIsZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBpZighJCh0aGlzKS5hdHRyKFwicmVhZG9ubHlcIikpIHtcbiAgICAgICAgICAgICAgICAkKHRoaXMpLnZhbChcIlwiKTtcbiAgICAgICAgICAgICAgICAkKHRoaXMpLmtleXVwKCk7XG4gICAgICAgICAgICAgICAgJCh0aGlzKS52YWwoXCIlXCIpO1xuICAgICAgICAgICAgICAgICQodGhpcykua2V5dXAoKTtcbiAgICAgICAgICAgICAgICAkKHRoaXMpLnZhbChcIlwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufSkoalF1ZXJ5KTtcblxuJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7XG4gICAgJChcIi5zZWFyY2hCb3hfY29kZWFydGljb2xvXCIpLmF1dG9jb21wbGV0ZU9uRm9jdXNFdmVudCgpO1xuICAgICQoXCIuc2VhcmNoQm94X2FydGljb2xvXCIpLmF1dG9jb21wbGV0ZU9uRm9jdXNFdmVudCgpO1xuICAgICQoXCIuc2VhcmNoQm94X3VzZXJcIikuYXV0b2NvbXBsZXRlT25Gb2N1c0V2ZW50KCk7XG4gICAgJChcIi5zZWFyY2hCb3hfcGRjXCIpLmF1dG9jb21wbGV0ZU9uRm9jdXNFdmVudCgpO1xuICAgICQoXCIuc2VhcmNoQm94X2JhbmNhXCIpLmF1dG9jb21wbGV0ZU9uRm9jdXNFdmVudCgpO1xuICAgICQoXCIuc2VhcmNoQm94X3BhZ2FtZW50b1wiKS5hdXRvY29tcGxldGVPbkZvY3VzRXZlbnQoKTtcbiAgICAkKFwiLnNlYXJjaEJveF9jb211bmlcIikuYXV0b2NvbXBsZXRlT25Gb2N1c0V2ZW50KCk7XG4gICAgJChcIi5zZWFyY2hCb3hfQ0RDXCIpLmF1dG9jb21wbGV0ZU9uRm9jdXNFdmVudCgpO1xuICAgICQoXCIuc2VhcmNoQm94X2NvbW1lc3NlXCIpLmF1dG9jb21wbGV0ZU9uRm9jdXNFdmVudCgpO1xuICAgICQoXCIuc2VhcmNoQm94X2l2YVwiKS5hdXRvY29tcGxldGVPbkZvY3VzRXZlbnQoKTtcbiAgICAkKFwiLnNlYXJjaEJveF9jYXVzYWxlY29udGFiaWxlX2NvZGljZVwiKS5hdXRvY29tcGxldGVPbkZvY3VzRXZlbnQoKTtcbiAgICAkKFwiLnNlYXJjaEJveF9jYXVzYWxlY29udGFiaWxlXCIpLmF1dG9jb21wbGV0ZU9uRm9jdXNFdmVudCgpO1xuICAgICQoXCIuc2VhcmNoQm94X2xvdHRvXCIpLmF1dG9jb21wbGV0ZU9uRm9jdXNFdmVudCgpO1xuICAgICQoXCIuc2VhcmNoQm94X21hZ1wiKS5hdXRvY29tcGxldGVPbkZvY3VzRXZlbnQoKTtcblxuICAgICQoXCIuc2VhcmNoQm94X3VzZXJcIikuYXV0b2NvbXBsZXRlU2VhcmNoQWxsT25EYmxDbGljaygpO1xuXG4gICAgJChcIi5zZWFyY2hCb3hfYXJ0aWNvbG9cIikuYXV0b2NvbXBsZXRlU2VhcmNoQWxsT25EYmxDbGljaygpO1xuXG4gICAgJChcIi5zZWFyY2hCb3hfaXZhXCIpLmF1dG9jb21wbGV0ZVNlYXJjaEFsbE9uRGJsQ2xpY2soKTtcblxuICAgICQoXCIuc2VhcmNoQm94X2NhdXNhbGVjb250YWJpbGVfY29kaWNlXCIpLmF1dG9jb21wbGV0ZVNlYXJjaEFsbE9uRGJsQ2xpY2soKTtcblxuICAgICQoXCIuc2VhcmNoQm94X2NvbW1lc3NlXCIpLmF1dG9jb21wbGV0ZVNlYXJjaEFsbE9uRGJsQ2xpY2soKTtcbn0pOyIsIi8qXG4gKiBqUXVlcnkgVGFibGUgRGlzcGxheVxuICpcbiAqIENvcHlyaWdodCAoYykgMjAwOCBHYWJyaWVsIExhbmdoYW5zLCBMdWNhcyBMZWl0ZSwgTWFpY29uIE1hcnRpbnNcbiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCAoTUlULUxJQ0VOU0UudHh0KVxuICogYW5kIEdQTCAoR1BMLUxJQ0VOU0UudHh0KSBsaWNlbnNlcy5cbiAqXG4gKiAkRGF0ZTogMjAwOC0wOC0wNiAxNDowMToxMiArMDMwMCAoV2VkLCAwNiBBdWcgMjAwOCkgJFxuICovXG4oZnVuY3Rpb24oJCl7XG5cbiAgICQuZm4udG9nZ2xlUm93ID0gZnVuY3Rpb24oKSB7XG4gICAgICBpZigkKHRoaXMpLmNzcygnZGlzcGxheScpPT0nbm9uZScpIHtcbiAgICAgICAgICQodGhpcykuc2hvd1JvdygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgICQodGhpcykuaGlkZVJvdygpO1xuICAgICAgfVxuICAgfTtcblxuICAgJC5mbi5oaWRlUm93ID0gZnVuY3Rpb24oKSB7XG4gICAgICAkKHRoaXMpLmhpZGUoKTtcbiAgIH07XG5cbiAgICQuZm4uc2hvd1JvdyA9IGZ1bmN0aW9uKCkge1xuICAgICAgaWYoJCh0aGlzKS5jc3MoJ2Rpc3BsYXknKT09J25vbmUnKXtcbiAgICAgICAgICAgICQodGhpcykuY3NzKCdkaXNwbGF5JywgJ3RhYmxlLXJvdycpO1xuICAgICAgfVxuICAgfTtcbiAgIFxufSkoalF1ZXJ5KTsiLCIvKlxuICogalF1ZXJ5IFNpbXBsZUN1cnJlbmN5IHBsdWdpblxuICogVmVyc2lvbiAxLjAgKDMtTUFZLTIwMDkpXG4gKiBcbiAqIEV4YW1wbGVzIGF0OiBodHRwOi8vd3d3LnJvbmNvc29mdHdhcmUuaXQvanF1ZXJ5LnNpbXBsZWN1cnJlbmN5XG4gKiBDb3B5cmlnaHQgR2lvdmFubmkgUm9uY29cbiAqIExpY2Vuc2VkIHVuZGVyIExHUExcbiAqL1xuLyogXG5cblRoaXMgaXMgYW4gYXV0b21hdGljIHNjcmlwdCB0aGF0IHRyYXNmb3JtIHRoZSBub3JtYWwgaW5wdXQtZmllbGQgaW4gYSBjdXJyZW5jeS1maWVsZC4gSnVzdCBhdHRhY2ggdG8gdGhlIFxudGV4dC1maWVsZCBjc3MgY2xhc3M9XCJDdXJyZW5jeVwiXG5cblRoaXMgZmllbGQgKGZvciBleGFtcGxlIHdpdGggaWQ9XCJjdXJyMVwiKSBtdXN0IGhhdmUgYSBoaWRkZW4tZmllbGQgbmVhciB3aXRoIGlkPVwiY3VycjFfaGlkZGVuXCIuIFRoaXMgaGlkZGVuLWZpZWxkIGNvbnRhaW5zIFxuYSByZWFsIGZsb2F0IG51bWJlciB0aGF0IHlvdSBjYW4gdXNlLi4uXG5cbk11c3QgZXhpc3RzIDQgaGlkZGVuIGZpZWxkcyBpbiB0aGUgdG9wIG9mIHRoZSBwYWdlOlxuPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBpZD1cIkNVUlJFTkNZX19TWU1CT0xcIiB2YWx1ZT1cIuKCrFwiPlxuPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBpZD1cIkNVUlJFTkNZX19ERUNJTUFMX1NFUEFSQVRPUlwiIHZhbHVlPVwiLlwiPlxuPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBpZD1cIkNVUlJFTkNZX19USE9VU0FORFNfU0VQQVJBVE9SXCIgdmFsdWU9XCIsXCI+IFxuPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBpZD1cIkNVUlJFTkNZX19ERUNJTUFMU1wiIHZhbHVlPVwiMlwiPiBcblxuSW4gZXZlcnkgY3VycmVuY3ktZmllbGQgaXQncyBwb3NzaWJpbGUgdG8gb3ZlcnJpZGUgc3ltYm9sIG9yIGRlY2ltYWxzLCBhZGRpbmcgXCJzeW1ib2xcIiBvciBcImRlY2ltYWxzXCIgXG5wcm9wcmVydHkgKHRoaXMgaXMgbm8gWEhUTUwgc3RyaWN0KVxuXG5leGFtcGxlczpcblxubm9ybWFsOiA8aW5wdXQgbmFtZT1cImV1cm8xXCIgdHlwZT1cInRleHRcIiBpZD1cImV1cm8xXCIgY2xhc3M9XCJDdXJyZW5jeVwiPlxud2l0aCBzeW1ib2wgb3ZlcmxvYWQ6IDxpbnB1dCBuYW1lPVwiZXVybzJcIiB0eXBlPVwidGV4dFwiIGlkPVwiZXVybzJcIiBjbGFzcz1cIkN1cnJlbmN5XCIgc3ltYm9sPVwiJFwiPlxud2l0aCBkZWNpbWFscyBvdmVybG9hZDogPGlucHV0IG5hbWU9XCJldXJvM1wiIHR5cGU9XCJ0ZXh0XCIgaWQ9XCJldXJvM1wiIGNsYXNzPVwiQ3VycmVuY3lcIiBkZWNpbWFscz1cIjVcIj5cblxuKi9cbnZhciBDVVJSRU5DWV9fU1lNQk9MPVwiXCI7XG52YXIgQ1VSUkVOQ1lfX0RFQ0lNQUxTPTI7XG52YXIgQ1VSUkVOQ1lfX0RFQ0lNQUxfU0VQQVJBVE9SPVwiLlwiO1xudmFyIENVUlJFTkNZX19USE9VU0FORFNfU0VQQVJBVE9SPVwiLFwiO1xuXG4kKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpXG57XG5cdENVUlJFTkNZX19TWU1CT0w9JChcIiNDVVJSRU5DWV9fU1lNQk9MXCIpLnZhbCgpO1xuXHQvL0NVUlJFTkNZX19ERUNJTUFMUz0kKFwiI0NVUlJFTkNZX19ERUNJTUFMU1wiKS52YWwoKTtcblx0Q1VSUkVOQ1lfX0RFQ0lNQUxfU0VQQVJBVE9SPSQoXCIjQ1VSUkVOQ1lfX0RFQ0lNQUxfU0VQQVJBVE9SXCIpLnZhbCgpO1xuXHRDVVJSRU5DWV9fVEhPVVNBTkRTX1NFUEFSQVRPUj0kKFwiI0NVUlJFTkNZX19USE9VU0FORFNfU0VQQVJBVE9SXCIpLnZhbCgpO1xuXHRcblx0JChcIi5DdXJyZW5jeVwiKS5wcm9wKFwiYXV0b2NvbXBsZXRlXCIsXCJvZmZcIik7XG5cdCQoXCIuQ3VycmVuY3lcIikuYmluZChcImtleWRvd24gZm9jdXMgYmx1clwiLCBmdW5jdGlvbihlKVxuXHR7XG5cdFx0Ly8qKioqKioqKipcblx0XHR2YXIgb2JqSUQ9ZS50YXJnZXQuaWQ7XG5cdFx0dmFyIG9iaklEX2hpZGRlbj1vYmpJRCtcIl9oaWRkZW5cIjtcblx0XHR2YXIgbUNVUlJFTkNZX19TWU1CT0w9Q1VSUkVOQ1lfX1NZTUJPTDtcblx0XHR2YXIgbUNVUlJFTkNZX19ERUNJTUFMUz1DVVJSRU5DWV9fREVDSU1BTFM7XG4gICAgICAgIHZhciBzLG47XG5cdFx0XG5cdFx0Ly9vdmVybG9hZCBldmVudHVhbGkgZGVsIHNpbWJvbG8gZSBkZWwgbnVtZXJvIGRpIGRlY2ltYWxpXG5cdFx0aWYoICQoXCIjXCIrb2JqSUQpLnByb3AoXCJzeW1ib2xcIikhPXVuZGVmaW5lZCApXG5cdFx0XHRtQ1VSUkVOQ1lfX1NZTUJPTD0kKFwiI1wiK29iaklEKS5wcm9wKFwic3ltYm9sXCIpO1xuXHRcdGlmKCAkKFwiI1wiK29iaklEKS5hdHRyKFwiZGVjaW1hbHNcIikhPXVuZGVmaW5lZCApXG5cdFx0XHRtQ1VSUkVOQ1lfX0RFQ0lNQUxTPSQoXCIjXCIrb2JqSUQpLmF0dHIoXCJkZWNpbWFsc1wiKTtcblx0XHRcdFx0XG5cdFx0aWYoZS50eXBlPT1cImtleWRvd25cIilcblx0XHR7XG5cdFx0XHR2YXIga2V5bnVtO1xuXHRcdFx0aWYod2luZG93LmV2ZW50KSBcblx0XHRcdFx0a2V5bnVtPWUua2V5Q29kZTtcblx0XHRcdGVsc2UgaWYoZS53aGljaCkgXG5cdFx0XHRcdGtleW51bT1lLndoaWNoO1xuXHRcblx0XHRcdGlmKGtleW51bT09MTg4KXsgZS5rZXlDb2RlPTE5MDsgZS53aGljaD0xOTA7fVx0Ly9sYSB2aXJnb2xhIO+/vSBkaXNhYmlsaXRhdGFcblxuXHRcdFx0Ly90YXN0aWVyaW5vIG51bWVyaWNvLi4uLlxuXHRcdFx0aWYoa2V5bnVtPT0xMTApeyBrZXludW09MTkwOyByZXR1cm4gdHJ1ZTsgfVx0XHQvL3F1ZXN0byDvv70gaWwgcHVudG9cblx0XHRcdGlmKGtleW51bT49OTYgJiYga2V5bnVtPD0xMDUpIGtleW51bS09NDg7XG5cdFx0XHQvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5cdFx0XHR2YXIga2V5Y2hhcj1TdHJpbmcuZnJvbUNoYXJDb2RlKGtleW51bSk7XHRcblx0XHRcdGlmKGtleW51bT09MTg4KSBrZXljaGFyPScsJzsgXG5cdFx0XHRpZihrZXludW09PTE5MCkga2V5Y2hhcj0nLic7XG5cdFx0XHRpZihrZXludW09PTEwOSkga2V5Y2hhcj0nLSc7XG4gICAgICAgICAgICBpZihrZXludW09PTE3Mykga2V5Y2hhcj0nLSc7XG5cblx0XHRcdGlmKGtleW51bT09OHx8a2V5bnVtPT0zN3x8a2V5bnVtPT0zOXx8a2V5bnVtPT05fHxrZXludW09PTM2fHxrZXludW09PTM1KVxuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHRcblx0XHRcdHZhciBudW1iZXJzPVwiMDEyMzQ1Njc4OVwiO1xuXHRcdFx0aWYobnVtYmVycy5pbmRleE9mKGtleWNoYXIpPi0xKVxuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblxuXHRcdFx0aWYoXHRrZXljaGFyPT1DVVJSRU5DWV9fREVDSU1BTF9TRVBBUkFUT1IgJiYgJChcIiNcIitvYmpJRCkudmFsKCkuaW5kZXhPZihDVVJSRU5DWV9fREVDSU1BTF9TRVBBUkFUT1IpPT0tMSlcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cblx0XHRcdGlmKFx0a2V5Y2hhcj09Jy0nICYmICQoXCIjXCIrb2JqSUQpLnZhbCgpLmluZGV4T2YoJy0nKT09LTEpXG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdFx0XG5cdFx0aWYoZS50eXBlPT1cImZvY3VzXCIpXG5cdFx0e1xuXHRcdFx0Ly92YXIgbUNVUlJFTkNZX19ERUNJTUFMUz1DVVJSRU5DWV9fREVDSU1BTFM7XG5cdFx0XG5cdFx0XHRzPWdldEZsb2F0KCAkKFwiI1wiK29iaklEX2hpZGRlbikudmFsKCkgKTtcblx0XHRcdG49bmV3IE51bWJlcihzKTtcblx0XHRcdCQoXCIjXCIrb2JqSUQpLnZhbCggbi50b0ZpeGVkKG1DVVJSRU5DWV9fREVDSU1BTFMpICk7XG5cdFx0XHQkKFwiI1wiK29iaklEKS5zZWxlY3QoKTtcbiAgICAgICAgICAgICQoXCIjXCIrb2JqSUQpLm9uZSgnbW91c2V1cCcsIGZ1bmN0aW9uKGV2KSB7XG4gICAgICAgICAgICAgICAgZXYucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIH0pO1xuXHRcdH1cblx0XHRcdFxuXHRcdGlmKGUudHlwZT09XCJibHVyXCIpXG5cdFx0e1xuXHRcdFx0Ly9vdmVybG9hZCBldmVudHVhbGkgZGVsIHNpbWJvbG8gZSBkZWwgbnVtZXJvIGRpIGRlY2ltYWxpXG5cdFx0XHRpZiggJChcIiNcIitvYmpJRCkucHJvcChcInN5bWJvbFwiKSE9dW5kZWZpbmVkIClcblx0XHRcdFx0bUNVUlJFTkNZX19TWU1CT0w9JChcIiNcIitvYmpJRCkucHJvcChcInN5bWJvbFwiKTtcblx0XHRcdGlmKCAkKFwiI1wiK29iaklEKS5wcm9wKFwiZGVjaW1hbHNcIikhPXVuZGVmaW5lZCApXG5cdFx0XHRcdG1DVVJSRU5DWV9fREVDSU1BTFM9JChcIiNcIitvYmpJRCkucHJvcChcImRlY2ltYWxzXCIpO1xuXHRcdFxuXHRcdFx0cz0kKFwiI1wiK29iaklEKS52YWwoKTtcblxuXHRcdFx0cz1zLnJlcGxhY2UobUNVUlJFTkNZX19TWU1CT0wsJy4nKTtcblx0XHRcdC8vcXVhbmRvIGNvbXBpbG8gaWwgY2FtcG8gUVVBTFNJQVNJIFNJQSBMQSBMSU5HVUEgQ09NUElMTyBVU0FORE8gSUwgLiBDT01FIFNFUEFSQVRPUkUgREVDSU1BTEVcblx0XHRcdC8vcz1zLnJlcGxhY2UoQ1VSUkVOQ1lfX1RIT1VTQU5EU19TRVBBUkFUT1IsJycpO1xuXHRcdFx0Ly9zPXMucmVwbGFjZShDVVJSRU5DWV9fREVDSU1BTF9TRVBBUkFUT1IsJy4nKTtcblx0XHRcdG49Z2V0RmxvYXQoIHMgKTtcblx0XHRcdCQoXCIjXCIrb2JqSURfaGlkZGVuKS52YWwoIG4gKTtcblx0XHRcdCQoXCIjXCIrb2JqSUQpLnVwZGF0ZUN1cnJlbmN5KCk7XG5cdFx0XHQkKFwiI1wiK29iaklEX2hpZGRlbikuY2hhbmdlKCk7XG5cdFx0fVxuXHR9KTtcbi8vKioqKioqKipcbn0pO1xuXG4kLmZuLnVwZGF0ZUN1cnJlbmN5ID0gZnVuY3Rpb24oKSBcbntcblx0dmFyIG9iaklEPSQodGhpcykucHJvcChcImlkXCIpO1xuXHR2YXIgb2JqSURfaGlkZGVuPW9iaklEK1wiX2hpZGRlblwiO1xuXHR2YXIgbUNVUlJFTkNZX19TWU1CT0w9JChcIiNDVVJSRU5DWV9fU1lNQk9MXCIpLnZhbCgpO1xuXHR2YXIgbUNVUlJFTkNZX19ERUNJTUFMUz1nZXRGbG9hdCgkKFwiI1wiK29iaklEKS5hdHRyKFwiZGVjaW1hbHNcIikpPT0wID8gQ1VSUkVOQ1lfX0RFQ0lNQUxTIDogZ2V0RmxvYXQoJChcIiNcIitvYmpJRCkuYXR0cihcImRlY2ltYWxzXCIpKTtcblx0dmFyIGlmX3plcm9fZW1wdHk9ZmFsc2U7XG5cdC8vb3ZlcmxvYWQgZXZlbnR1YWxpIGRlbCBzaW1ib2xvIGUgZGVsIG51bWVybyBkaSBkZWNpbWFsaVxuXHRpZiggJChcIiNcIitvYmpJRCkucHJvcChcImlmX3plcm9fZW1wdHlcIikhPXVuZGVmaW5lZCApXG5cdFx0aWZfemVyb19lbXB0eT10cnVlO1xuXHRpZiggJChcIiNcIitvYmpJRCkucHJvcChcInN5bWJvbFwiKSE9dW5kZWZpbmVkIClcblx0XHRtQ1VSUkVOQ1lfX1NZTUJPTD0kKFwiI1wiK29iaklEKS5wcm9wKFwic3ltYm9sXCIpO1xuXHRcdFx0XHRcblx0dmFyIG49Z2V0RmxvYXQoICQoXCIjXCIrb2JqSURfaGlkZGVuKS52YWwoKSApO1xuXHR2YXIgc2lnbj0objwwID8gXCItIFwiIDogXCJcIik7XG5cdHZhciBuMj1udW1iZXJfZm9ybWF0KE1hdGguYWJzKG4pLG1DVVJSRU5DWV9fREVDSU1BTFMsQ1VSUkVOQ1lfX0RFQ0lNQUxfU0VQQVJBVE9SLENVUlJFTkNZX19USE9VU0FORFNfU0VQQVJBVE9SKTtcblxuXHRpZiggbj09MCAmJiBpZl96ZXJvX2VtcHR5ICkgXG5cdFx0JChcIiNcIitvYmpJRCkudmFsKFwiXCIpO1xuXHRlbHNlXG5cdFx0JChcIiNcIitvYmpJRCkudmFsKHNpZ24rIG1DVVJSRU5DWV9fU1lNQk9MK1wiIFwiK24yICk7XG5cdFxufTsiLCIvKlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAwNi0yMDA5IFNhbSBDb2xsZXR0IChodHRwOi8vd3d3LnRleG90ZWxhLmNvLnVrKVxuICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIChodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocClcbiAqIGFuZCBHUEwgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvZ3BsLWxpY2Vuc2UucGhwKSBsaWNlbnNlcy5cbiAqXG4gKiBWZXJzaW9uIDIuMi40XG4gKiBEZW1vOiBodHRwOi8vd3d3LnRleG90ZWxhLmNvLnVrL2NvZGUvanF1ZXJ5L3NlbGVjdC9cbiAqXG4gKiAkTGFzdENoYW5nZWREYXRlJFxuICogJFJldiRcbiAqXG4gKi9cbiBcbjsoZnVuY3Rpb24oJCkge1xuIFxuLyoqXG4gKiBBZGRzIChzaW5nbGUvbXVsdGlwbGUpIG9wdGlvbnMgdG8gYSBzZWxlY3QgYm94IChvciBzZXJpZXMgb2Ygc2VsZWN0IGJveGVzKVxuICpcbiAqIEBuYW1lICAgICBhZGRPcHRpb25cbiAqIEBhdXRob3IgICBTYW0gQ29sbGV0dCAoaHR0cDovL3d3dy50ZXhvdGVsYS5jby51aylcbiAqIEB0eXBlICAgICBqUXVlcnlcbiAqIEBleGFtcGxlICAkKFwiI215c2VsZWN0XCIpLmFkZE9wdGlvbihcIlZhbHVlXCIsIFwiVGV4dFwiKTsgLy8gYWRkIHNpbmdsZSB2YWx1ZSAod2lsbCBiZSBzZWxlY3RlZClcbiAqIEBleGFtcGxlICAkKFwiI215c2VsZWN0XCIpLmFkZE9wdGlvbihcIlZhbHVlIDJcIiwgXCJUZXh0IDJcIiwgZmFsc2UpOyAvLyBhZGQgc2luZ2xlIHZhbHVlICh3b24ndCBiZSBzZWxlY3RlZClcbiAqIEBleGFtcGxlICAkKFwiI215c2VsZWN0XCIpLmFkZE9wdGlvbih7XCJmb29cIjpcImJhclwiLFwiYmFyXCI6XCJiYXpcIn0sIGZhbHNlKTsgLy8gYWRkIG11bHRpcGxlIHZhbHVlcywgYnV0IGRvbid0IHNlbGVjdFxuICpcbiAqL1xuJC5mbi5hZGRPcHRpb24gPSBmdW5jdGlvbigpXG57XG5cdHZhciBhZGQgPSBmdW5jdGlvbihlbCwgdiwgdCwgc08pXG5cdHtcblx0XHR2YXIgb3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcIm9wdGlvblwiKTtcblx0XHRvcHRpb24udmFsdWUgPSB2LCBvcHRpb24udGV4dCA9IHQ7XG5cdFx0Ly8gZ2V0IG9wdGlvbnNcblx0XHR2YXIgbyA9IGVsLm9wdGlvbnM7XG5cdFx0Ly8gZ2V0IG51bWJlciBvZiBvcHRpb25zXG5cdFx0dmFyIG9MID0gby5sZW5ndGg7XG5cdFx0aWYoIWVsLmNhY2hlKVxuXHRcdHtcblx0XHRcdGVsLmNhY2hlID0ge307XG5cdFx0XHQvLyBsb29wIHRocm91Z2ggZXhpc3Rpbmcgb3B0aW9ucywgYWRkaW5nIHRvIGNhY2hlXG5cdFx0XHRmb3IodmFyIGkgPSAwOyBpIDwgb0w7IGkrKylcblx0XHRcdHtcblx0XHRcdFx0ZWwuY2FjaGVbb1tpXS52YWx1ZV0gPSBpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHQvLyBhZGQgdG8gY2FjaGUgaWYgaXQgaXNuJ3QgYWxyZWFkeVxuXHRcdGlmKHR5cGVvZiBlbC5jYWNoZVt2XSA9PSBcInVuZGVmaW5lZFwiKSBlbC5jYWNoZVt2XSA9IG9MO1xuXHRcdGVsLm9wdGlvbnNbZWwuY2FjaGVbdl1dID0gb3B0aW9uO1xuXHRcdGlmKHNPKVxuXHRcdHtcblx0XHRcdG9wdGlvbi5zZWxlY3RlZCA9IHRydWU7XG5cdFx0fVxuXHR9O1xuXHRcblx0dmFyIGEgPSBhcmd1bWVudHM7XG5cdGlmKGEubGVuZ3RoID09IDApIHJldHVybiB0aGlzO1xuXHQvLyBzZWxlY3Qgb3B0aW9uIHdoZW4gYWRkZWQ/IGRlZmF1bHQgaXMgdHJ1ZVxuXHR2YXIgc08gPSB0cnVlO1xuXHQvLyBtdWx0aXBsZSBpdGVtc1xuXHR2YXIgbSA9IGZhbHNlO1xuXHQvLyBvdGhlciB2YXJpYWJsZXNcblx0dmFyIGl0ZW1zLCB2LCB0O1xuXHRpZih0eXBlb2YoYVswXSkgPT0gXCJvYmplY3RcIilcblx0e1xuXHRcdG0gPSB0cnVlO1xuXHRcdGl0ZW1zID0gYVswXTtcblx0fVxuXHRpZihhLmxlbmd0aCA+PSAyKVxuXHR7XG5cdFx0aWYodHlwZW9mKGFbMV0pID09IFwiYm9vbGVhblwiKSBzTyA9IGFbMV07XG5cdFx0ZWxzZSBpZih0eXBlb2YoYVsyXSkgPT0gXCJib29sZWFuXCIpIHNPID0gYVsyXTtcblx0XHRpZighbSlcblx0XHR7XG5cdFx0XHR2ID0gYVswXTtcblx0XHRcdHQgPSBhWzFdO1xuXHRcdH1cblx0fVxuXHR0aGlzLmVhY2goXG5cdFx0ZnVuY3Rpb24oKVxuXHRcdHtcblx0XHRcdGlmKHRoaXMubm9kZU5hbWUudG9Mb3dlckNhc2UoKSAhPSBcInNlbGVjdFwiKSByZXR1cm47XG5cdFx0XHRpZihtKVxuXHRcdFx0e1xuXHRcdFx0XHRmb3IodmFyIGl0ZW0gaW4gaXRlbXMpXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRhZGQodGhpcywgaXRlbSwgaXRlbXNbaXRlbV0sIHNPKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0ZWxzZVxuXHRcdFx0e1xuXHRcdFx0XHRhZGQodGhpcywgdiwgdCwgc08pO1xuXHRcdFx0fVxuXHRcdH1cblx0KTtcblx0cmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIEFkZCBvcHRpb25zIHZpYSBhamF4XG4gKlxuICogQG5hbWUgICAgIGFqYXhBZGRPcHRpb25cbiAqIEBhdXRob3IgICBTYW0gQ29sbGV0dCAoaHR0cDovL3d3dy50ZXhvdGVsYS5jby51aylcbiAqIEB0eXBlICAgICBqUXVlcnlcbiAqIEBwYXJhbSAgICBTdHJpbmcgdXJsICAgICAgUGFnZSB0byBnZXQgb3B0aW9ucyBmcm9tIChtdXN0IGJlIHZhbGlkIEpTT04pXG4gKiBAcGFyYW0gICAgT2JqZWN0IHBhcmFtcyAgIChvcHRpb25hbCkgQW55IHBhcmFtZXRlcnMgdG8gc2VuZCB3aXRoIHRoZSByZXF1ZXN0XG4gKiBAcGFyYW0gICAgQm9vbGVhbiBzZWxlY3QgIChvcHRpb25hbCkgU2VsZWN0IHRoZSBhZGRlZCBvcHRpb25zLCBkZWZhdWx0IHRydWVcbiAqIEBwYXJhbSAgICBGdW5jdGlvbiBmbiAgICAgKG9wdGlvbmFsKSBDYWxsIHRoaXMgZnVuY3Rpb24gd2l0aCB0aGUgc2VsZWN0IG9iamVjdCBhcyBwYXJhbSBhZnRlciBjb21wbGV0aW9uXG4gKiBAcGFyYW0gICAgQXJyYXkgYXJncyAgICAgIChvcHRpb25hbCkgQXJyYXkgd2l0aCBwYXJhbXMgdG8gcGFzcyB0byB0aGUgZnVuY3Rpb24gYWZ0ZXJ3YXJkc1xuICogQGV4YW1wbGUgICQoXCIjbXlzZWxlY3RcIikuYWpheEFkZE9wdGlvbihcIm15b3B0aW9ucy5waHBcIik7XG4gKiBAZXhhbXBsZSAgJChcIiNteXNlbGVjdFwiKS5hamF4QWRkT3B0aW9uKFwibXlvcHRpb25zLnBocFwiLCB7XCJjb2RlXCIgOiBcIjAwN1wifSk7XG4gKiBAZXhhbXBsZSAgJChcIiNteXNlbGVjdFwiKS5hamF4QWRkT3B0aW9uKFwibXlvcHRpb25zLnBocFwiLCB7XCJjb2RlXCIgOiBcIjAwN1wifSwgZmFsc2UsIHNvcnRvcHRpb25zLCBbe1wiZGlyXCI6IFwiZGVzY1wifV0pO1xuICpcbiAqL1xuJC5mbi5hamF4QWRkT3B0aW9uID0gZnVuY3Rpb24odXJsLCBwYXJhbXMsIHNlbGVjdCwgZm4sIGFyZ3MpXG57XG5cdGlmKHR5cGVvZih1cmwpICE9IFwic3RyaW5nXCIpIHJldHVybiB0aGlzO1xuXHRpZih0eXBlb2YocGFyYW1zKSAhPSBcIm9iamVjdFwiKSBwYXJhbXMgPSB7fTtcblx0aWYodHlwZW9mKHNlbGVjdCkgIT0gXCJib29sZWFuXCIpIHNlbGVjdCA9IHRydWU7XG5cdHRoaXMuZWFjaChcblx0XHRmdW5jdGlvbigpXG5cdFx0e1xuXHRcdFx0dmFyIGVsID0gdGhpcztcblx0XHRcdCQuZ2V0SlNPTih1cmwsXG5cdFx0XHRcdHBhcmFtcyxcblx0XHRcdFx0ZnVuY3Rpb24ocilcblx0XHRcdFx0e1xuXHRcdFx0XHRcdCQoZWwpLmFkZE9wdGlvbihyLCBzZWxlY3QpO1xuXHRcdFx0XHRcdGlmKHR5cGVvZiBmbiA9PSBcImZ1bmN0aW9uXCIpXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0aWYodHlwZW9mIGFyZ3MgPT0gXCJvYmplY3RcIilcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0Zm4uYXBwbHkoZWwsIGFyZ3MpO1xuXHRcdFx0XHRcdFx0fSBcblx0XHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0Zm4uY2FsbChlbCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHQpO1xuXHRcdH1cblx0KTtcblx0cmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIFJlbW92ZXMgYW4gb3B0aW9uIChieSB2YWx1ZSBvciBpbmRleCkgZnJvbSBhIHNlbGVjdCBib3ggKG9yIHNlcmllcyBvZiBzZWxlY3QgYm94ZXMpXG4gKlxuICogQG5hbWUgICAgIHJlbW92ZU9wdGlvblxuICogQGF1dGhvciAgIFNhbSBDb2xsZXR0IChodHRwOi8vd3d3LnRleG90ZWxhLmNvLnVrKVxuICogQHR5cGUgICAgIGpRdWVyeVxuICogQHBhcmFtICAgIFN0cmluZ3xSZWdFeHB8TnVtYmVyIHdoYXQgIE9wdGlvbiB0byByZW1vdmVcbiAqIEBwYXJhbSAgICBCb29sZWFuIHNlbGVjdGVkT25seSAgICAgICAob3B0aW9uYWwpIFJlbW92ZSBvbmx5IGlmIGl0IGhhcyBiZWVuIHNlbGVjdGVkIChkZWZhdWx0IGZhbHNlKSAgIFxuICogQGV4YW1wbGUgICQoXCIjbXlzZWxlY3RcIikucmVtb3ZlT3B0aW9uKFwiVmFsdWVcIik7IC8vIHJlbW92ZSBieSB2YWx1ZVxuICogQGV4YW1wbGUgICQoXCIjbXlzZWxlY3RcIikucmVtb3ZlT3B0aW9uKC9edmFsL2kpOyAvLyByZW1vdmUgb3B0aW9ucyB3aXRoIGEgdmFsdWUgc3RhcnRpbmcgd2l0aCAndmFsJ1xuICogQGV4YW1wbGUgICQoXCIjbXlzZWxlY3RcIikucmVtb3ZlT3B0aW9uKC8uLyk7IC8vIHJlbW92ZSBhbGwgb3B0aW9uc1xuICogQGV4YW1wbGUgICQoXCIjbXlzZWxlY3RcIikucmVtb3ZlT3B0aW9uKC8uLywgdHJ1ZSk7IC8vIHJlbW92ZSBhbGwgb3B0aW9ucyB0aGF0IGhhdmUgYmVlbiBzZWxlY3RlZFxuICogQGV4YW1wbGUgICQoXCIjbXlzZWxlY3RcIikucmVtb3ZlT3B0aW9uKDApOyAvLyByZW1vdmUgYnkgaW5kZXhcbiAqIEBleGFtcGxlICAkKFwiI215c2VsZWN0XCIpLnJlbW92ZU9wdGlvbihbXCJteXNlbGVjdF8xXCIsXCJteXNlbGVjdF8yXCJdKTsgLy8gdmFsdWVzIGNvbnRhaW5lZCBpbiBwYXNzZWQgYXJyYXlcbiAqXG4gKi9cbiQuZm4ucmVtb3ZlT3B0aW9uID0gZnVuY3Rpb24oKVxue1xuXHR2YXIgYSA9IGFyZ3VtZW50cztcblx0aWYoYS5sZW5ndGggPT0gMCkgcmV0dXJuIHRoaXM7XG5cdHZhciB0YSA9IHR5cGVvZihhWzBdKTtcblx0dmFyIHYsIGluZGV4O1xuXHQvLyBoYXMgdG8gYmUgYSBzdHJpbmcgb3IgcmVndWxhciBleHByZXNzaW9uIChvYmplY3QgaW4gSUUsIGZ1bmN0aW9uIGluIEZpcmVmb3gpXG5cdGlmKHRhID09IFwic3RyaW5nXCIgfHwgdGEgPT0gXCJvYmplY3RcIiB8fCB0YSA9PSBcImZ1bmN0aW9uXCIgKVxuXHR7XG5cdFx0diA9IGFbMF07XG5cdFx0Ly8gaWYgYW4gYXJyYXksIHJlbW92ZSBpdGVtc1xuXHRcdGlmKHYuY29uc3RydWN0b3IgPT0gQXJyYXkpXG5cdFx0e1xuXHRcdFx0dmFyIGwgPSB2Lmxlbmd0aDtcblx0XHRcdGZvcih2YXIgaSA9IDA7IGk8bDsgaSsrKVxuXHRcdFx0e1xuXHRcdFx0XHR0aGlzLnJlbW92ZU9wdGlvbih2W2ldLCBhWzFdKTsgXG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9XG5cdH1cblx0ZWxzZSBpZih0YSA9PSBcIm51bWJlclwiKSBpbmRleCA9IGFbMF07XG5cdGVsc2UgcmV0dXJuIHRoaXM7XG5cdHRoaXMuZWFjaChcblx0XHRmdW5jdGlvbigpXG5cdFx0e1xuXHRcdFx0aWYodGhpcy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpICE9IFwic2VsZWN0XCIpIHJldHVybjtcblx0XHRcdC8vIGNsZWFyIGNhY2hlXG5cdFx0XHRpZih0aGlzLmNhY2hlKSB0aGlzLmNhY2hlID0gbnVsbDtcblx0XHRcdC8vIGRvZXMgdGhlIG9wdGlvbiBuZWVkIHRvIGJlIHJlbW92ZWQ/XG5cdFx0XHR2YXIgcmVtb3ZlID0gZmFsc2U7XG5cdFx0XHQvLyBnZXQgb3B0aW9uc1xuXHRcdFx0dmFyIG8gPSB0aGlzLm9wdGlvbnM7XG5cdFx0XHRpZighIXYpXG5cdFx0XHR7XG5cdFx0XHRcdC8vIGdldCBudW1iZXIgb2Ygb3B0aW9uc1xuXHRcdFx0XHR2YXIgb0wgPSBvLmxlbmd0aDtcblx0XHRcdFx0Zm9yKHZhciBpPW9MLTE7IGk+PTA7IGktLSlcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGlmKHYuY29uc3RydWN0b3IgPT0gUmVnRXhwKVxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGlmKG9baV0udmFsdWUubWF0Y2godikpXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHJlbW92ZSA9IHRydWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGVsc2UgaWYob1tpXS52YWx1ZSA9PSB2KVxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdHJlbW92ZSA9IHRydWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdC8vIGlmIHRoZSBvcHRpb24gaXMgb25seSB0byBiZSByZW1vdmVkIGlmIHNlbGVjdGVkXG5cdFx0XHRcdFx0aWYocmVtb3ZlICYmIGFbMV0gPT09IHRydWUpIHJlbW92ZSA9IG9baV0uc2VsZWN0ZWQ7XG5cdFx0XHRcdFx0aWYocmVtb3ZlKVxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdG9baV0gPSBudWxsO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZW1vdmUgPSBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0ZWxzZVxuXHRcdFx0e1xuXHRcdFx0XHQvLyBvbmx5IHJlbW92ZSBpZiBzZWxlY3RlZD9cblx0XHRcdFx0aWYoYVsxXSA9PT0gdHJ1ZSlcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHJlbW92ZSA9IG9baW5kZXhdLnNlbGVjdGVkO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2Vcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHJlbW92ZSA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYocmVtb3ZlKVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGhpcy5yZW1vdmUoaW5kZXgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHQpO1xuXHRyZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogU29ydCBvcHRpb25zIChhc2NlbmRpbmcgb3IgZGVzY2VuZGluZykgaW4gYSBzZWxlY3QgYm94IChvciBzZXJpZXMgb2Ygc2VsZWN0IGJveGVzKVxuICpcbiAqIEBuYW1lICAgICBzb3J0T3B0aW9uc1xuICogQGF1dGhvciAgIFNhbSBDb2xsZXR0IChodHRwOi8vd3d3LnRleG90ZWxhLmNvLnVrKVxuICogQHR5cGUgICAgIGpRdWVyeVxuICogQHBhcmFtICAgIEJvb2xlYW4gYXNjZW5kaW5nICAgKG9wdGlvbmFsKSBTb3J0IGFzY2VuZGluZyAodHJ1ZS91bmRlZmluZWQpLCBvciBkZXNjZW5kaW5nIChmYWxzZSlcbiAqIEBleGFtcGxlICAvLyBhc2NlbmRpbmdcbiAqICQoXCIjbXlzZWxlY3RcIikuc29ydE9wdGlvbnMoKTsgLy8gb3IgJChcIiNteXNlbGVjdFwiKS5zb3J0T3B0aW9ucyh0cnVlKTtcbiAqIEBleGFtcGxlICAvLyBkZXNjZW5kaW5nXG4gKiAkKFwiI215c2VsZWN0XCIpLnNvcnRPcHRpb25zKGZhbHNlKTtcbiAqXG4gKi9cbiQuZm4uc29ydE9wdGlvbnMgPSBmdW5jdGlvbihhc2NlbmRpbmcpXG57XG5cdC8vIGdldCBzZWxlY3RlZCB2YWx1ZXMgZmlyc3Rcblx0dmFyIHNlbCA9ICQodGhpcykuc2VsZWN0ZWRWYWx1ZXMoKTtcblx0dmFyIGEgPSB0eXBlb2YoYXNjZW5kaW5nKSA9PSBcInVuZGVmaW5lZFwiID8gdHJ1ZSA6ICEhYXNjZW5kaW5nO1xuXHR0aGlzLmVhY2goXG5cdFx0ZnVuY3Rpb24oKVxuXHRcdHtcblx0XHRcdGlmKHRoaXMubm9kZU5hbWUudG9Mb3dlckNhc2UoKSAhPSBcInNlbGVjdFwiKSByZXR1cm47XG5cdFx0XHQvLyBnZXQgb3B0aW9uc1xuXHRcdFx0dmFyIG8gPSB0aGlzLm9wdGlvbnM7XG5cdFx0XHQvLyBnZXQgbnVtYmVyIG9mIG9wdGlvbnNcblx0XHRcdHZhciBvTCA9IG8ubGVuZ3RoO1xuXHRcdFx0Ly8gY3JlYXRlIGFuIGFycmF5IGZvciBzb3J0aW5nXG5cdFx0XHR2YXIgc0EgPSBbXTtcblx0XHRcdC8vIGxvb3AgdGhyb3VnaCBvcHRpb25zLCBhZGRpbmcgdG8gc29ydCBhcnJheVxuXHRcdFx0Zm9yKHZhciBpID0gMDsgaTxvTDsgaSsrKVxuXHRcdFx0e1xuXHRcdFx0XHRzQVtpXSA9IHtcblx0XHRcdFx0XHR2OiBvW2ldLnZhbHVlLFxuXHRcdFx0XHRcdHQ6IG9baV0udGV4dFxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHQvLyBzb3J0IGl0ZW1zIGluIGFycmF5XG5cdFx0XHRzQS5zb3J0KFxuXHRcdFx0XHRmdW5jdGlvbihvMSwgbzIpXG5cdFx0XHRcdHtcblx0XHRcdFx0XHQvLyBvcHRpb24gdGV4dCBpcyBtYWRlIGxvd2VyY2FzZSBmb3IgY2FzZSBpbnNlbnNpdGl2ZSBzb3J0aW5nXG5cdFx0XHRcdFx0bzF0ID0gbzEudC50b0xvd2VyQ2FzZSgpLCBvMnQgPSBvMi50LnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRcdFx0Ly8gaWYgb3B0aW9ucyBhcmUgdGhlIHNhbWUsIG5vIHNvcnRpbmcgaXMgbmVlZGVkXG5cdFx0XHRcdFx0aWYobzF0ID09IG8ydCkgcmV0dXJuIDA7XG5cdFx0XHRcdFx0aWYoYSlcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRyZXR1cm4gbzF0IDwgbzJ0ID8gLTEgOiAxO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0cmV0dXJuIG8xdCA+IG8ydCA/IC0xIDogMTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdCk7XG5cdFx0XHQvLyBjaGFuZ2UgdGhlIG9wdGlvbnMgdG8gbWF0Y2ggdGhlIHNvcnQgYXJyYXlcblx0XHRcdGZvcih2YXIgaSA9IDA7IGk8b0w7IGkrKylcblx0XHRcdHtcblx0XHRcdFx0b1tpXS50ZXh0ID0gc0FbaV0udDtcblx0XHRcdFx0b1tpXS52YWx1ZSA9IHNBW2ldLnY7XG5cdFx0XHR9XG5cdFx0fVxuXHQpLnNlbGVjdE9wdGlvbnMoc2VsLCB0cnVlKTsgLy8gc2VsZWN0IHZhbHVlcywgY2xlYXJpbmcgZXhpc3Rpbmcgb25lc1xuXHRyZXR1cm4gdGhpcztcbn07XG4vKipcbiAqIFNlbGVjdHMgYW4gb3B0aW9uIGJ5IHZhbHVlXG4gKlxuICogQG5hbWUgICAgIHNlbGVjdE9wdGlvbnNcbiAqIEBhdXRob3IgICBNYXRoaWFzIEJhbmsgKGh0dHA6Ly93d3cubWF0aGlhcy1iYW5rLmRlKSwgb3JpZ2luYWwgZnVuY3Rpb25cbiAqIEBhdXRob3IgICBTYW0gQ29sbGV0dCAoaHR0cDovL3d3dy50ZXhvdGVsYS5jby51ayksIGFkZGl0aW9uIG9mIHJlZ3VsYXIgZXhwcmVzc2lvbiBtYXRjaGluZ1xuICogQHR5cGUgICAgIGpRdWVyeVxuICogQHBhcmFtICAgIFN0cmluZ3xSZWdFeHB8QXJyYXkgdmFsdWUgIFdoaWNoIG9wdGlvbnMgc2hvdWxkIGJlIHNlbGVjdGVkXG4gKiBjYW4gYmUgYSBzdHJpbmcgb3IgcmVndWxhciBleHByZXNzaW9uLCBvciBhbiBhcnJheSBvZiBzdHJpbmdzIC8gcmVndWxhciBleHByZXNzaW9uc1xuICogQHBhcmFtICAgIEJvb2xlYW4gY2xlYXIgIENsZWFyIGV4aXN0aW5nIHNlbGVjdGVkIG9wdGlvbnMsIGRlZmF1bHQgZmFsc2VcbiAqIEBleGFtcGxlICAkKFwiI215c2VsZWN0XCIpLnNlbGVjdE9wdGlvbnMoXCJ2YWwxXCIpOyAvLyB3aXRoIHRoZSB2YWx1ZSAndmFsMSdcbiAqIEBleGFtcGxlICAkKFwiI215c2VsZWN0XCIpLnNlbGVjdE9wdGlvbnMoW1widmFsMVwiLFwidmFsMlwiLFwidmFsM1wiXSk7IC8vIHdpdGggdGhlIHZhbHVlcyAndmFsMScgJ3ZhbDInICd2YWwzJ1xuICogQGV4YW1wbGUgICQoXCIjbXlzZWxlY3RcIikuc2VsZWN0T3B0aW9ucygvXnZhbC9pKTsgLy8gd2l0aCB0aGUgdmFsdWUgc3RhcnRpbmcgd2l0aCAndmFsJywgY2FzZSBpbnNlbnNpdGl2ZVxuICpcbiAqL1xuJC5mbi5zZWxlY3RPcHRpb25zID0gZnVuY3Rpb24odmFsdWUsIGNsZWFyKVxue1xuXHR2YXIgdiA9IHZhbHVlO1xuXHR2YXIgdlQgPSB0eXBlb2YodmFsdWUpO1xuXHQvLyBoYW5kbGUgYXJyYXlzXG5cdGlmKHZUID09IFwib2JqZWN0XCIgJiYgdi5jb25zdHJ1Y3RvciA9PSBBcnJheSlcblx0e1xuXHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0JC5lYWNoKHYsIGZ1bmN0aW9uKClcblx0XHRcdHtcbiAgICAgIFx0XHRcdFx0JHRoaXMuc2VsZWN0T3B0aW9ucyh0aGlzLCBjbGVhcik7XG4gICAgXHRcdFx0fVxuXHRcdCk7XG5cdH07XG5cdHZhciBjID0gY2xlYXIgfHwgZmFsc2U7XG5cdC8vIGhhcyB0byBiZSBhIHN0cmluZyBvciByZWd1bGFyIGV4cHJlc3Npb24gKG9iamVjdCBpbiBJRSwgZnVuY3Rpb24gaW4gRmlyZWZveClcblx0aWYodlQgIT0gXCJzdHJpbmdcIiAmJiB2VCAhPSBcImZ1bmN0aW9uXCIgJiYgdlQgIT0gXCJvYmplY3RcIikgcmV0dXJuIHRoaXM7XG5cdHRoaXMuZWFjaChcblx0XHRmdW5jdGlvbigpXG5cdFx0e1xuXHRcdFx0aWYodGhpcy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpICE9IFwic2VsZWN0XCIpIHJldHVybiB0aGlzO1xuXHRcdFx0Ly8gZ2V0IG9wdGlvbnNcblx0XHRcdHZhciBvID0gdGhpcy5vcHRpb25zO1xuXHRcdFx0Ly8gZ2V0IG51bWJlciBvZiBvcHRpb25zXG5cdFx0XHR2YXIgb0wgPSBvLmxlbmd0aDtcblx0XHRcdGZvcih2YXIgaSA9IDA7IGk8b0w7IGkrKylcblx0XHRcdHtcblx0XHRcdFx0aWYodi5jb25zdHJ1Y3RvciA9PSBSZWdFeHApXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRpZihvW2ldLnZhbHVlLm1hdGNoKHYpKVxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdG9baV0uc2VsZWN0ZWQgPSB0cnVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRlbHNlIGlmKGMpXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0b1tpXS5zZWxlY3RlZCA9IGZhbHNlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRpZihvW2ldLnZhbHVlID09IHYpXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0b1tpXS5zZWxlY3RlZCA9IHRydWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGVsc2UgaWYoYylcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRvW2ldLnNlbGVjdGVkID0gZmFsc2U7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHQpO1xuXHRyZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogQ29weSBvcHRpb25zIHRvIGFub3RoZXIgc2VsZWN0XG4gKlxuICogQG5hbWUgICAgIGNvcHlPcHRpb25zXG4gKiBAYXV0aG9yICAgU2FtIENvbGxldHQgKGh0dHA6Ly93d3cudGV4b3RlbGEuY28udWspXG4gKiBAdHlwZSAgICAgalF1ZXJ5XG4gKiBAcGFyYW0gICAgU3RyaW5nIHRvICBFbGVtZW50IHRvIGNvcHkgdG9cbiAqIEBwYXJhbSAgICBTdHJpbmcgd2hpY2ggIChvcHRpb25hbCkgU3BlY2lmaWVzIHdoaWNoIG9wdGlvbnMgc2hvdWxkIGJlIGNvcGllZCAtICdhbGwnIG9yICdzZWxlY3RlZCcuIERlZmF1bHQgaXMgJ3NlbGVjdGVkJ1xuICogQGV4YW1wbGUgICQoXCIjbXlzZWxlY3RcIikuY29weU9wdGlvbnMoXCIjbXlzZWxlY3QyXCIpOyAvLyBjb3B5IHNlbGVjdGVkIG9wdGlvbnMgZnJvbSAnbXlzZWxlY3QnIHRvICdteXNlbGVjdDInXG4gKiBAZXhhbXBsZSAgJChcIiNteXNlbGVjdFwiKS5jb3B5T3B0aW9ucyhcIiNteXNlbGVjdDJcIixcInNlbGVjdGVkXCIpOyAvLyBzYW1lIGFzIGFib3ZlXG4gKiBAZXhhbXBsZSAgJChcIiNteXNlbGVjdFwiKS5jb3B5T3B0aW9ucyhcIiNteXNlbGVjdDJcIixcImFsbFwiKTsgLy8gY29weSBhbGwgb3B0aW9ucyBmcm9tICdteXNlbGVjdCcgdG8gJ215c2VsZWN0MidcbiAqXG4gKi9cbiQuZm4uY29weU9wdGlvbnMgPSBmdW5jdGlvbih0bywgd2hpY2gpXG57XG5cdHZhciB3ID0gd2hpY2ggfHwgXCJzZWxlY3RlZFwiO1xuXHRpZigkKHRvKS5zaXplKCkgPT0gMCkgcmV0dXJuIHRoaXM7XG5cdHRoaXMuZWFjaChcblx0XHRmdW5jdGlvbigpXG5cdFx0e1xuXHRcdFx0aWYodGhpcy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpICE9IFwic2VsZWN0XCIpIHJldHVybiB0aGlzO1xuXHRcdFx0Ly8gZ2V0IG9wdGlvbnNcblx0XHRcdHZhciBvID0gdGhpcy5vcHRpb25zO1xuXHRcdFx0Ly8gZ2V0IG51bWJlciBvZiBvcHRpb25zXG5cdFx0XHR2YXIgb0wgPSBvLmxlbmd0aDtcblx0XHRcdGZvcih2YXIgaSA9IDA7IGk8b0w7IGkrKylcblx0XHRcdHtcblx0XHRcdFx0aWYodyA9PSBcImFsbFwiIHx8ICh3ID09IFwic2VsZWN0ZWRcIiAmJiBvW2ldLnNlbGVjdGVkKSlcblx0XHRcdFx0e1xuXHRcdFx0XHRcdCQodG8pLmFkZE9wdGlvbihvW2ldLnZhbHVlLCBvW2ldLnRleHQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHQpO1xuXHRyZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgc2VsZWN0IGJveCBoYXMgYW4gb3B0aW9uIHdpdGggdGhlIHN1cHBsaWVkIHZhbHVlXG4gKlxuICogQG5hbWUgICAgIGNvbnRhaW5zT3B0aW9uXG4gKiBAYXV0aG9yICAgU2FtIENvbGxldHQgKGh0dHA6Ly93d3cudGV4b3RlbGEuY28udWspXG4gKiBAdHlwZSAgICAgQm9vbGVhbnxqUXVlcnlcbiAqIEBwYXJhbSAgICBTdHJpbmd8UmVnRXhwIHZhbHVlICBXaGljaCB2YWx1ZSB0byBjaGVjayBmb3IuIENhbiBiZSBhIHN0cmluZyBvciByZWd1bGFyIGV4cHJlc3Npb25cbiAqIEBwYXJhbSAgICBGdW5jdGlvbiBmbiAgICAgICAgICAob3B0aW9uYWwpIEZ1bmN0aW9uIHRvIGFwcGx5IGlmIGFuIG9wdGlvbiB3aXRoIHRoZSBnaXZlbiB2YWx1ZSBpcyBmb3VuZC5cbiAqIFVzZSB0aGlzIGlmIHlvdSBkb24ndCB3YW50IHRvIGJyZWFrIHRoZSBjaGFpbmluZ1xuICogQGV4YW1wbGUgIGlmKCQoXCIjbXlzZWxlY3RcIikuY29udGFpbnNPcHRpb24oXCJ2YWwxXCIpKSBhbGVydChcIkhhcyBhbiBvcHRpb24gd2l0aCB0aGUgdmFsdWUgJ3ZhbDEnXCIpO1xuICogQGV4YW1wbGUgIGlmKCQoXCIjbXlzZWxlY3RcIikuY29udGFpbnNPcHRpb24oL152YWwvaSkpIGFsZXJ0KFwiSGFzIGFuIG9wdGlvbiB3aXRoIHRoZSB2YWx1ZSBzdGFydGluZyB3aXRoICd2YWwnXCIpO1xuICogQGV4YW1wbGUgICQoXCIjbXlzZWxlY3RcIikuY29udGFpbnNPcHRpb24oXCJ2YWwxXCIsIGNvcHlvcHRpb24pLmRvU29tZXRoaW5nRWxzZVdpdGhTZWxlY3QoKTsgLy8gY2FsbHMgY29weW9wdGlvbiAodXNlciBkZWZpbmVkIGZ1bmN0aW9uKSBmb3IgYW55IG9wdGlvbnMgZm91bmQsIGNoYWluIGlzIGNvbnRpbnVlZFxuICpcbiAqL1xuJC5mbi5jb250YWluc09wdGlvbiA9IGZ1bmN0aW9uKHZhbHVlLCBmbilcbntcblx0dmFyIGZvdW5kID0gZmFsc2U7XG5cdHZhciB2ID0gdmFsdWU7XG5cdHZhciB2VCA9IHR5cGVvZih2KTtcblx0dmFyIGZUID0gdHlwZW9mKGZuKTtcblx0Ly8gaGFzIHRvIGJlIGEgc3RyaW5nIG9yIHJlZ3VsYXIgZXhwcmVzc2lvbiAob2JqZWN0IGluIElFLCBmdW5jdGlvbiBpbiBGaXJlZm94KVxuXHRpZih2VCAhPSBcInN0cmluZ1wiICYmIHZUICE9IFwiZnVuY3Rpb25cIiAmJiB2VCAhPSBcIm9iamVjdFwiKSByZXR1cm4gZlQgPT0gXCJmdW5jdGlvblwiID8gdGhpczogZm91bmQ7XG5cdHRoaXMuZWFjaChcblx0XHRmdW5jdGlvbigpXG5cdFx0e1xuXHRcdFx0aWYodGhpcy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpICE9IFwic2VsZWN0XCIpIHJldHVybiB0aGlzO1xuXHRcdFx0Ly8gb3B0aW9uIGFscmVhZHkgZm91bmRcblx0XHRcdGlmKGZvdW5kICYmIGZUICE9IFwiZnVuY3Rpb25cIikgcmV0dXJuIGZhbHNlO1xuXHRcdFx0Ly8gZ2V0IG9wdGlvbnNcblx0XHRcdHZhciBvID0gdGhpcy5vcHRpb25zO1xuXHRcdFx0Ly8gZ2V0IG51bWJlciBvZiBvcHRpb25zXG5cdFx0XHR2YXIgb0wgPSBvLmxlbmd0aDtcblx0XHRcdGZvcih2YXIgaSA9IDA7IGk8b0w7IGkrKylcblx0XHRcdHtcblx0XHRcdFx0aWYodi5jb25zdHJ1Y3RvciA9PSBSZWdFeHApXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRpZiAob1tpXS52YWx1ZS5tYXRjaCh2KSlcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRmb3VuZCA9IHRydWU7XG5cdFx0XHRcdFx0XHRpZihmVCA9PSBcImZ1bmN0aW9uXCIpIGZuLmNhbGwob1tpXSwgaSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2Vcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGlmIChvW2ldLnZhbHVlID09IHYpXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0Zm91bmQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0aWYoZlQgPT0gXCJmdW5jdGlvblwiKSBmbi5jYWxsKG9baV0sIGkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0KTtcblx0cmV0dXJuIGZUID09IFwiZnVuY3Rpb25cIiA/IHRoaXMgOiBmb3VuZDtcbn07XG5cbi8qKlxuICogUmV0dXJucyB2YWx1ZXMgd2hpY2ggaGF2ZSBiZWVuIHNlbGVjdGVkXG4gKlxuICogQG5hbWUgICAgIHNlbGVjdGVkVmFsdWVzXG4gKiBAYXV0aG9yICAgU2FtIENvbGxldHQgKGh0dHA6Ly93d3cudGV4b3RlbGEuY28udWspXG4gKiBAdHlwZSAgICAgQXJyYXlcbiAqIEBleGFtcGxlICAkKFwiI215c2VsZWN0XCIpLnNlbGVjdGVkVmFsdWVzKCk7XG4gKlxuICovXG4kLmZuLnNlbGVjdGVkVmFsdWVzID0gZnVuY3Rpb24oKVxue1xuXHR2YXIgdiA9IFtdO1xuXHR0aGlzLnNlbGVjdGVkT3B0aW9ucygpLmVhY2goXG5cdFx0ZnVuY3Rpb24oKVxuXHRcdHtcblx0XHRcdHZbdi5sZW5ndGhdID0gdGhpcy52YWx1ZTtcblx0XHR9XG5cdCk7XG5cdHJldHVybiB2O1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRleHQgd2hpY2ggaGFzIGJlZW4gc2VsZWN0ZWRcbiAqXG4gKiBAbmFtZSAgICAgc2VsZWN0ZWRUZXh0c1xuICogQGF1dGhvciAgIFNhbSBDb2xsZXR0IChodHRwOi8vd3d3LnRleG90ZWxhLmNvLnVrKVxuICogQHR5cGUgICAgIEFycmF5XG4gKiBAZXhhbXBsZSAgJChcIiNteXNlbGVjdFwiKS5zZWxlY3RlZFRleHRzKCk7XG4gKlxuICovXG4kLmZuLnNlbGVjdGVkVGV4dHMgPSBmdW5jdGlvbigpXG57XG5cdHZhciB0ID0gW107XG5cdHRoaXMuc2VsZWN0ZWRPcHRpb25zKCkuZWFjaChcblx0XHRmdW5jdGlvbigpXG5cdFx0e1xuXHRcdFx0dFt0Lmxlbmd0aF0gPSB0aGlzLnRleHQ7XG5cdFx0fVxuXHQpO1xuXHRyZXR1cm4gdDtcbn07XG5cbi8qKlxuICogUmV0dXJucyBvcHRpb25zIHdoaWNoIGhhdmUgYmVlbiBzZWxlY3RlZFxuICpcbiAqIEBuYW1lICAgICBzZWxlY3RlZE9wdGlvbnNcbiAqIEBhdXRob3IgICBTYW0gQ29sbGV0dCAoaHR0cDovL3d3dy50ZXhvdGVsYS5jby51aylcbiAqIEB0eXBlICAgICBqUXVlcnlcbiAqIEBleGFtcGxlICAkKFwiI215c2VsZWN0XCIpLnNlbGVjdGVkT3B0aW9ucygpO1xuICpcbiAqL1xuJC5mbi5zZWxlY3RlZE9wdGlvbnMgPSBmdW5jdGlvbigpXG57XG5cdHJldHVybiB0aGlzLmZpbmQoXCJvcHRpb246c2VsZWN0ZWRcIik7XG59O1xuXG59KShqUXVlcnkpOyIsIiQuZm4uaXdnYWxsZXJ5ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcblxuICAgIHZhciBvcHRzID0gJC5leHRlbmQoIHt9LCAkLmZuLml3Z2FsbGVyeS5kZWZhdWx0cywgb3B0aW9ucyApO1xuXG4gICAgdGhpcy5kaXZHYWxsZXJ5ID0gJChcIjxkaXYgaWQ9J1wiICsgdGhpcy5hdHRyKFwiaWRcIikgKyBcIl9nYWxsZXJ5Jz48L2Rpdj5cIik7XG4gICAgdGhpcy5kaXZIaWRkZW5zID0gJChcIjxkaXYgaWQ9J1wiICsgdGhpcy5hdHRyKFwiaWRcIikgKyBcIl9kaXZfaGlkZGVucyc+PC9kaXY+XCIpO1xuICAgIHRoaXMuZGl2RmlsZXMgPSAkKFwiPGRpdiBpZD0nXCIgKyB0aGlzLmF0dHIoXCJpZFwiKSArIFwiX2ZpbGVzbGlzdCc+PC9kaXY+XCIpO1xuXG5cbiAgICB0aGlzLmJ1aWxkSW1hZ2UgPSBmdW5jdGlvbiAoaW1nKSB7XG4gICAgICAgIHJldHVybiBcIjxpbWcgc3JjPSdcIiArIGltZy51cmxJbWFnZSArIFwiJyBkYXRhLWltYWdlPSdcIiArIGltZy51cmxJbWFnZSArIFwiJyBkYXRhLWRlc2NyaXB0aW9uPSdcIiArIGltZy5kZXNjcmlwdGlvbiArXCInIGRhdGEtaWR1cGxvYWQ9J1wiKyBpbWcuaWR1cGxvYWQgK1wiJz5cIjtcbiAgICB9O1xuXG4gICAgdGhpcy5idWlsZEhpZGRlbiA9IGZ1bmN0aW9uIChpZHVwbG9hZCkge1xuICAgICAgICByZXR1cm4gXCI8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdcIiArIHRoaXMuYXR0cihcImlkXCIpICtcIl9oaWRkZW5zW10nIHZhbHVlPSdcIiArIGlkdXBsb2FkICsgXCInPlwiO1xuICAgIH07XG5cbiAgICB0aGlzLmJ1aWxkRmlsZUxpbmsgPSBmdW5jdGlvbiAoaW1nKSB7XG4gICAgICAgIHZhciAkcmVtb3ZlTGluayA9ICQoXCI8YSBocmVmPSdqYXZhc2NyaXB0OnZvaWQoMCknIGlkPSdcIiArIHRoaXMuYXR0cihcImlkXCIpICtcIl9cIiArIGltZy5pZHVwbG9hZCtcIl9kZWxldGUnPlg8L2E+XCIpO1xuICAgICAgICB2YXIgb2JqID0gdGhpcztcbiAgICAgICAgJHJlbW92ZUxpbmsub24oXCJjbGlja1wiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgY3VycmVudDtcbiAgICAgICAgICAgIHZhciBpbWFnZXMgPSBbXTtcbiAgICAgICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBvYmouYXBpR2FsbGVyeS5nZXROdW1JdGVtcygpOyBpKyspe1xuICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBvYmouYXBpR2FsbGVyeS5nZXRJdGVtKGkpO1xuICAgICAgICAgICAgICAgIGlmKGdldEZsb2F0KGN1cnJlbnQuaWR1cGxvYWQpID09PSBnZXRGbG9hdChpbWcuaWR1cGxvYWQpKSBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBpbWFnZXMucHVzaChjdXJyZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmKHR5cGVvZiBvcHRzLm9uQ2hhbmdlR2FsbGVyeSA9PT0gXCJmdW5jdGlvblwiKSBvcHRzLm9uQ2hhbmdlR2FsbGVyeShpbWFnZXMpO1xuICAgICAgICAgICAgb2JqLmJ1aWxkR2FsbGVyeShpbWFnZXMpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGRpdiA9ICQoXCI8ZGl2IGlkPSdcIisgdGhpcy5hdHRyKFwiaWRcIikgKyBcIl9cIiArIGltZy5pZHVwbG9hZCArICBcIl9kaXZSZW1vdmVMaW5rJz5cIiArIGltZy5kZXNjcmlwdGlvbiArIFwiIFs8L2Rpdj5cIik7XG4gICAgICAgIGRpdi5hcHBlbmQoJHJlbW92ZUxpbmspO1xuICAgICAgICBkaXYuYXBwZW5kKFwiXSBcIik7XG4gICAgICAgIHJldHVybiBkaXY7XG4gICAgfTtcblxuICAgIHRoaXMuYnVpbGRHYWxsZXJ5ID0gZnVuY3Rpb24gKGltYWdlcykge1xuICAgICAgICB2YXIgaW1nc1RvQXBwZW5kID0gJycsIGhpZGRlbnMgPSAnJztcbiAgICAgICAgdGhpcy5kaXZGaWxlcy5odG1sKFwiXCIpO1xuXG4gICAgICAgIHZhciBpbWc7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBpbWFnZXMubGVuZ3RoOyBpKyspe1xuICAgICAgICAgICAgaW1nID0gaW1hZ2VzW2ldO1xuICAgICAgICAgICAgaW1nc1RvQXBwZW5kICs9IHRoaXMuYnVpbGRJbWFnZShpbWcpO1xuICAgICAgICAgICAgaGlkZGVucyArPSB0aGlzLmJ1aWxkSGlkZGVuKGltZy5pZHVwbG9hZCk7XG4gICAgICAgICAgICBpZighZ2V0RmxvYXQoaW1nLmlkdXBsb2FkKSkgY29udGludWU7XG4gICAgICAgICAgICB0aGlzLmRpdkZpbGVzLmFwcGVuZCh0aGlzLmJ1aWxkRmlsZUxpbmsoaW1nKSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRpdkdhbGxlcnkuaHRtbChpbWdzVG9BcHBlbmQpO1xuICAgICAgICB0aGlzLmFwaUdhbGxlcnkgPSB0aGlzLmRpdkdhbGxlcnkudW5pdGVnYWxsZXJ5KHtcbiAgICAgICAgICAgIGdhbGxlcnlfdGhlbWU6IFwiY29tcGFjdFwiLFxuICAgICAgICAgICAgdGhlbWVfcGFuZWxfcG9zaXRpb246IFwicmlnaHRcIixcbiAgICAgICAgICAgIHRoZW1lX2hpZGVfcGFuZWxfdW5kZXJfd2lkdGg6IDEwMDAsXG4gICAgICAgICAgICBnYWxsZXJ5X3dpZHRoOiBvcHRzLmdhbGxlcnlXaWR0aCxcbiAgICAgICAgICAgIGdhbGxlcnlfaGVpZ2h0OiBvcHRzLmdhbGxlcnlIZWlnaHQsXG4gICAgICAgICAgICBzbGlkZXJfc2NhbGVfbW9kZTogXCJmaXRcIlxuICAgICAgICB9KTtcbiAgICAgICAgaWYodGhpcy5hcGlHYWxsZXJ5LmdldE51bUl0ZW1zKCkgLSAxID49IDApIHRoaXMuYXBpR2FsbGVyeS5zZWxlY3RJdGVtKHRoaXMuYXBpR2FsbGVyeS5nZXROdW1JdGVtcygpIC0gMSk7XG4gICAgICAgIHRoaXMuZGl2SGlkZGVucy5odG1sKGhpZGRlbnMpO1xuICAgICAgICBpZih0aGlzLmFwaUdhbGxlcnkuZ2V0TnVtSXRlbXMoKSA8PSAxKSAkKFwiI1wiICsgdGhpcy5kaXZHYWxsZXJ5LmF0dHIoXCJpZFwiKSArXCIgLnVnLXBhbmVsLWhhbmRsZS10aXBcIikuY2xpY2soKTtcbiAgICB9O1xuXG4gICAgdmFyIG9iaiA9IHRoaXM7XG4gICAgdmFyIGRpdl91cGxvYWQgPSAkKFwiPGRpdiBpZD0nXCIrIHRoaXMuYXR0cihcImlkXCIpICtcIl91cGxvYWQnPjwvZGl2PlwiKTtcbiAgICBkaXZfdXBsb2FkLnVwbG9hZEZpbGUoe1xuICAgICAgICB1cmw6IFwiYWpheC5waHA/b2JqZWN0PVVwbG9hZGVkRmlsZSZ0aXBvdmlldz1qcXVlcnlQbHVnaW5VcGxvYWRJbkdhbGxlcnkmaXNfY3J5cHRlZD0xXCIsXG4gICAgICAgIGFsbG93ZWRUeXBlczogJ2pwZyxqcGVnLHBuZyxibXAsZ2lmLHRpZmYnLFxuICAgICAgICBkcmFnRHJvcFN0cjogb3B0cy5kcmFnRHJvcFN0cmluZyxcbiAgICAgICAgZXh0RXJyb3JTdHI6IG9wdHMuZXh0RXJyb3JTdHJpbmcsXG4gICAgICAgIHVwbG9hZFN0cjogb3B0cy51cGxvYWRTdHJpbmcsXG4gICAgICAgIHNob3dEb3dubG9hZDogdHJ1ZSxcbiAgICAgICAgc2hvd0RlbGV0ZTogdHJ1ZSxcbiAgICAgICAgb25TdWNjZXNzOiBmdW5jdGlvbiAoZmlsZXMsIGRhdGEpIHtcbiAgICAgICAgICAgIHZhciBpZHVwbG9hZCA9IGdldEZsb2F0KGRhdGEuc3BsaXQoJywnKVsxXS5yZXBsYWNlKCddJywnJykpO1xuXG4gICAgICAgICAgICBpZiAoaWR1cGxvYWQgPT09IDApIHJldHVybjtcblxuICAgICAgICAgICAgdmFyIGltYWdlcyA9IFtdO1xuXG4gICAgICAgICAgICB2YXIgaW1nO1xuICAgICAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IG9iai5hcGlHYWxsZXJ5LmdldE51bUl0ZW1zKCk7IGkrKyl7XG4gICAgICAgICAgICAgICAgaW1nID0gb2JqLmFwaUdhbGxlcnkuZ2V0SXRlbShpKTtcbiAgICAgICAgICAgICAgICBpZihpbWcuaWR1cGxvYWQgPT09IDApIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGltYWdlcy5wdXNoKGltZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgcGF0aCA9IFwiaW5jbHVkZS9zaG93X2ZpbGVzLnBocD9pZHVwbG9hZD1cIiArIGlkdXBsb2FkICsgXCImdG9rZW49XCIgKyBvcHRzLnRva2VuO1xuICAgICAgICAgICAgaW1hZ2VzLnB1c2goe3VybEltYWdlOiBwYXRoLCBkZXNjcmlwdGlvbjogZmlsZXMsIGlkdXBsb2FkOiBpZHVwbG9hZH0pO1xuXG4gICAgICAgICAgICBpZih0eXBlb2Ygb3B0cy5vbkNoYW5nZUdhbGxlcnkgPT09IFwiZnVuY3Rpb25cIikgb3B0cy5vbkNoYW5nZUdhbGxlcnkoaW1hZ2VzKTtcbiAgICAgICAgICAgIG9iai5idWlsZEdhbGxlcnkoaW1hZ2VzKTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5hcHBlbmQodGhpcy5kaXZHYWxsZXJ5KTtcbiAgICB0aGlzLmFwcGVuZChvcHRzLmxhYmVsU3RyaW5nICsgXCI8YnI+XCIpO1xuICAgIHRoaXMuYXBwZW5kKGRpdl91cGxvYWQpO1xuICAgIHRoaXMuYXBwZW5kKHRoaXMuZGl2SGlkZGVucyk7XG4gICAgdGhpcy5hcHBlbmQodGhpcy5kaXZGaWxlcyk7XG4gICAgdGhpcy5idWlsZEdhbGxlcnkob3B0cy5pbWFnZXMpO1xufTtcblxuJC5mbi5pd2dhbGxlcnkuZGVmYXVsdHMgPSAge1xuICAgIGxhYmVsU3RyaW5nOiBcIlwiLFxuICAgIGNvZGNsaWVudGU6IFwiXCIsXG4gICAgaW1hZ2VzOiBbXSxcbiAgICBkcmFnRHJvcFN0cmluZzogXCJcIixcbiAgICBleHRFcnJvclN0cmluZzogXCJcIixcbiAgICB1cGxvYWRTdHJpbmc6IFwiXCIsXG4gICAgZ2FsbGVyeVdpZHRoOiA5MDAsXG4gICAgZ2FsbGVyeUhlaWdodDogNTAwLFxuICAgIHRva2VuOiBcIlwiLFxuICAgIHNlc3NJZDogXCJcIixcbiAgICBvbkNoYW5nZUdhbGxlcnk6IG51bGxcbn07IiwidmFyIG1hcCA9IHtcblx0XCIuL2FmXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FmLmpzXCIsXG5cdFwiLi9hZi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hZi5qc1wiLFxuXHRcIi4vYXJcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXIuanNcIixcblx0XCIuL2FyLWR6XCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLWR6LmpzXCIsXG5cdFwiLi9hci1kei5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1kei5qc1wiLFxuXHRcIi4vYXIta3dcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXIta3cuanNcIixcblx0XCIuL2FyLWt3LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLWt3LmpzXCIsXG5cdFwiLi9hci1seVwiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1seS5qc1wiLFxuXHRcIi4vYXItbHkuanNcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItbHkuanNcIixcblx0XCIuL2FyLW1hXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLW1hLmpzXCIsXG5cdFwiLi9hci1tYS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1tYS5qc1wiLFxuXHRcIi4vYXItc2FcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItc2EuanNcIixcblx0XCIuL2FyLXNhLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLXNhLmpzXCIsXG5cdFwiLi9hci10blwiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci10bi5qc1wiLFxuXHRcIi4vYXItdG4uanNcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItdG4uanNcIixcblx0XCIuL2FyLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLmpzXCIsXG5cdFwiLi9helwiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hei5qc1wiLFxuXHRcIi4vYXouanNcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXouanNcIixcblx0XCIuL2JlXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JlLmpzXCIsXG5cdFwiLi9iZS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9iZS5qc1wiLFxuXHRcIi4vYmdcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYmcuanNcIixcblx0XCIuL2JnLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JnLmpzXCIsXG5cdFwiLi9ibVwiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ibS5qc1wiLFxuXHRcIi4vYm0uanNcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYm0uanNcIixcblx0XCIuL2JuXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JuLmpzXCIsXG5cdFwiLi9ibi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ibi5qc1wiLFxuXHRcIi4vYm9cIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYm8uanNcIixcblx0XCIuL2JvLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JvLmpzXCIsXG5cdFwiLi9iclwiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ici5qc1wiLFxuXHRcIi4vYnIuanNcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYnIuanNcIixcblx0XCIuL2JzXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JzLmpzXCIsXG5cdFwiLi9icy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9icy5qc1wiLFxuXHRcIi4vY2FcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvY2EuanNcIixcblx0XCIuL2NhLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2NhLmpzXCIsXG5cdFwiLi9jc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9jcy5qc1wiLFxuXHRcIi4vY3MuanNcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvY3MuanNcIixcblx0XCIuL2N2XCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2N2LmpzXCIsXG5cdFwiLi9jdi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9jdi5qc1wiLFxuXHRcIi4vY3lcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvY3kuanNcIixcblx0XCIuL2N5LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2N5LmpzXCIsXG5cdFwiLi9kYVwiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kYS5qc1wiLFxuXHRcIi4vZGEuanNcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZGEuanNcIixcblx0XCIuL2RlXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2RlLmpzXCIsXG5cdFwiLi9kZS1hdFwiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kZS1hdC5qc1wiLFxuXHRcIi4vZGUtYXQuanNcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZGUtYXQuanNcIixcblx0XCIuL2RlLWNoXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2RlLWNoLmpzXCIsXG5cdFwiLi9kZS1jaC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kZS1jaC5qc1wiLFxuXHRcIi4vZGUuanNcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZGUuanNcIixcblx0XCIuL2R2XCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2R2LmpzXCIsXG5cdFwiLi9kdi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kdi5qc1wiLFxuXHRcIi4vZWxcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZWwuanNcIixcblx0XCIuL2VsLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VsLmpzXCIsXG5cdFwiLi9lbi1TR1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1TRy5qc1wiLFxuXHRcIi4vZW4tU0cuanNcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tU0cuanNcIixcblx0XCIuL2VuLWF1XCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWF1LmpzXCIsXG5cdFwiLi9lbi1hdS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1hdS5qc1wiLFxuXHRcIi4vZW4tY2FcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tY2EuanNcIixcblx0XCIuL2VuLWNhLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWNhLmpzXCIsXG5cdFwiLi9lbi1nYlwiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1nYi5qc1wiLFxuXHRcIi4vZW4tZ2IuanNcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tZ2IuanNcIixcblx0XCIuL2VuLWllXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWllLmpzXCIsXG5cdFwiLi9lbi1pZS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1pZS5qc1wiLFxuXHRcIi4vZW4taWxcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4taWwuanNcIixcblx0XCIuL2VuLWlsLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWlsLmpzXCIsXG5cdFwiLi9lbi1uelwiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1uei5qc1wiLFxuXHRcIi4vZW4tbnouanNcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tbnouanNcIixcblx0XCIuL2VvXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VvLmpzXCIsXG5cdFwiLi9lby5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lby5qc1wiLFxuXHRcIi4vZXNcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXMuanNcIixcblx0XCIuL2VzLWRvXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VzLWRvLmpzXCIsXG5cdFwiLi9lcy1kby5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lcy1kby5qc1wiLFxuXHRcIi4vZXMtdXNcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXMtdXMuanNcIixcblx0XCIuL2VzLXVzLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VzLXVzLmpzXCIsXG5cdFwiLi9lcy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lcy5qc1wiLFxuXHRcIi4vZXRcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXQuanNcIixcblx0XCIuL2V0LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2V0LmpzXCIsXG5cdFwiLi9ldVwiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ldS5qc1wiLFxuXHRcIi4vZXUuanNcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXUuanNcIixcblx0XCIuL2ZhXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZhLmpzXCIsXG5cdFwiLi9mYS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mYS5qc1wiLFxuXHRcIi4vZmlcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZmkuanNcIixcblx0XCIuL2ZpLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZpLmpzXCIsXG5cdFwiLi9mb1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mby5qc1wiLFxuXHRcIi4vZm8uanNcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZm8uanNcIixcblx0XCIuL2ZyXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZyLmpzXCIsXG5cdFwiLi9mci1jYVwiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mci1jYS5qc1wiLFxuXHRcIi4vZnItY2EuanNcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZnItY2EuanNcIixcblx0XCIuL2ZyLWNoXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZyLWNoLmpzXCIsXG5cdFwiLi9mci1jaC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mci1jaC5qc1wiLFxuXHRcIi4vZnIuanNcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZnIuanNcIixcblx0XCIuL2Z5XCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2Z5LmpzXCIsXG5cdFwiLi9meS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9meS5qc1wiLFxuXHRcIi4vZ2FcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ2EuanNcIixcblx0XCIuL2dhLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2dhLmpzXCIsXG5cdFwiLi9nZFwiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9nZC5qc1wiLFxuXHRcIi4vZ2QuanNcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ2QuanNcIixcblx0XCIuL2dsXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2dsLmpzXCIsXG5cdFwiLi9nbC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9nbC5qc1wiLFxuXHRcIi4vZ29tLWxhdG5cIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ29tLWxhdG4uanNcIixcblx0XCIuL2dvbS1sYXRuLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2dvbS1sYXRuLmpzXCIsXG5cdFwiLi9ndVwiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ndS5qc1wiLFxuXHRcIi4vZ3UuanNcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ3UuanNcIixcblx0XCIuL2hlXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2hlLmpzXCIsXG5cdFwiLi9oZS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9oZS5qc1wiLFxuXHRcIi4vaGlcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaGkuanNcIixcblx0XCIuL2hpLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2hpLmpzXCIsXG5cdFwiLi9oclwiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9oci5qc1wiLFxuXHRcIi4vaHIuanNcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaHIuanNcIixcblx0XCIuL2h1XCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2h1LmpzXCIsXG5cdFwiLi9odS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9odS5qc1wiLFxuXHRcIi4vaHktYW1cIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaHktYW0uanNcIixcblx0XCIuL2h5LWFtLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2h5LWFtLmpzXCIsXG5cdFwiLi9pZFwiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9pZC5qc1wiLFxuXHRcIi4vaWQuanNcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaWQuanNcIixcblx0XCIuL2lzXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2lzLmpzXCIsXG5cdFwiLi9pcy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9pcy5qc1wiLFxuXHRcIi4vaXRcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaXQuanNcIixcblx0XCIuL2l0LWNoXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2l0LWNoLmpzXCIsXG5cdFwiLi9pdC1jaC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9pdC1jaC5qc1wiLFxuXHRcIi4vaXQuanNcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaXQuanNcIixcblx0XCIuL2phXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2phLmpzXCIsXG5cdFwiLi9qYS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9qYS5qc1wiLFxuXHRcIi4vanZcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvanYuanNcIixcblx0XCIuL2p2LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2p2LmpzXCIsXG5cdFwiLi9rYVwiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rYS5qc1wiLFxuXHRcIi4va2EuanNcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva2EuanNcIixcblx0XCIuL2trXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2trLmpzXCIsXG5cdFwiLi9ray5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ray5qc1wiLFxuXHRcIi4va21cIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva20uanNcIixcblx0XCIuL2ttLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ttLmpzXCIsXG5cdFwiLi9rblwiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rbi5qc1wiLFxuXHRcIi4va24uanNcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva24uanNcIixcblx0XCIuL2tvXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2tvLmpzXCIsXG5cdFwiLi9rby5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rby5qc1wiLFxuXHRcIi4va3VcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva3UuanNcIixcblx0XCIuL2t1LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2t1LmpzXCIsXG5cdFwiLi9reVwiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9reS5qc1wiLFxuXHRcIi4va3kuanNcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva3kuanNcIixcblx0XCIuL2xiXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2xiLmpzXCIsXG5cdFwiLi9sYi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9sYi5qc1wiLFxuXHRcIi4vbG9cIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbG8uanNcIixcblx0XCIuL2xvLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2xvLmpzXCIsXG5cdFwiLi9sdFwiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9sdC5qc1wiLFxuXHRcIi4vbHQuanNcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbHQuanNcIixcblx0XCIuL2x2XCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2x2LmpzXCIsXG5cdFwiLi9sdi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9sdi5qc1wiLFxuXHRcIi4vbWVcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbWUuanNcIixcblx0XCIuL21lLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21lLmpzXCIsXG5cdFwiLi9taVwiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9taS5qc1wiLFxuXHRcIi4vbWkuanNcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbWkuanNcIixcblx0XCIuL21rXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21rLmpzXCIsXG5cdFwiLi9tay5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tay5qc1wiLFxuXHRcIi4vbWxcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbWwuanNcIixcblx0XCIuL21sLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21sLmpzXCIsXG5cdFwiLi9tblwiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tbi5qc1wiLFxuXHRcIi4vbW4uanNcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbW4uanNcIixcblx0XCIuL21yXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21yLmpzXCIsXG5cdFwiLi9tci5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tci5qc1wiLFxuXHRcIi4vbXNcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXMuanNcIixcblx0XCIuL21zLW15XCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21zLW15LmpzXCIsXG5cdFwiLi9tcy1teS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tcy1teS5qc1wiLFxuXHRcIi4vbXMuanNcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXMuanNcIixcblx0XCIuL210XCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL210LmpzXCIsXG5cdFwiLi9tdC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tdC5qc1wiLFxuXHRcIi4vbXlcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXkuanNcIixcblx0XCIuL215LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL215LmpzXCIsXG5cdFwiLi9uYlwiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9uYi5qc1wiLFxuXHRcIi4vbmIuanNcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbmIuanNcIixcblx0XCIuL25lXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25lLmpzXCIsXG5cdFwiLi9uZS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9uZS5qc1wiLFxuXHRcIi4vbmxcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbmwuanNcIixcblx0XCIuL25sLWJlXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25sLWJlLmpzXCIsXG5cdFwiLi9ubC1iZS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ubC1iZS5qc1wiLFxuXHRcIi4vbmwuanNcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbmwuanNcIixcblx0XCIuL25uXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25uLmpzXCIsXG5cdFwiLi9ubi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ubi5qc1wiLFxuXHRcIi4vcGEtaW5cIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcGEtaW4uanNcIixcblx0XCIuL3BhLWluLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3BhLWluLmpzXCIsXG5cdFwiLi9wbFwiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9wbC5qc1wiLFxuXHRcIi4vcGwuanNcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcGwuanNcIixcblx0XCIuL3B0XCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3B0LmpzXCIsXG5cdFwiLi9wdC1iclwiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9wdC1ici5qc1wiLFxuXHRcIi4vcHQtYnIuanNcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcHQtYnIuanNcIixcblx0XCIuL3B0LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3B0LmpzXCIsXG5cdFwiLi9yb1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9yby5qc1wiLFxuXHRcIi4vcm8uanNcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcm8uanNcIixcblx0XCIuL3J1XCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3J1LmpzXCIsXG5cdFwiLi9ydS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ydS5qc1wiLFxuXHRcIi4vc2RcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2QuanNcIixcblx0XCIuL3NkLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NkLmpzXCIsXG5cdFwiLi9zZVwiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zZS5qc1wiLFxuXHRcIi4vc2UuanNcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2UuanNcIixcblx0XCIuL3NpXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NpLmpzXCIsXG5cdFwiLi9zaS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zaS5qc1wiLFxuXHRcIi4vc2tcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2suanNcIixcblx0XCIuL3NrLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NrLmpzXCIsXG5cdFwiLi9zbFwiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zbC5qc1wiLFxuXHRcIi4vc2wuanNcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2wuanNcIixcblx0XCIuL3NxXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NxLmpzXCIsXG5cdFwiLi9zcS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zcS5qc1wiLFxuXHRcIi4vc3JcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3IuanNcIixcblx0XCIuL3NyLWN5cmxcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3ItY3lybC5qc1wiLFxuXHRcIi4vc3ItY3lybC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zci1jeXJsLmpzXCIsXG5cdFwiLi9zci5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zci5qc1wiLFxuXHRcIi4vc3NcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3MuanNcIixcblx0XCIuL3NzLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NzLmpzXCIsXG5cdFwiLi9zdlwiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zdi5qc1wiLFxuXHRcIi4vc3YuanNcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3YuanNcIixcblx0XCIuL3N3XCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3N3LmpzXCIsXG5cdFwiLi9zdy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zdy5qc1wiLFxuXHRcIi4vdGFcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGEuanNcIixcblx0XCIuL3RhLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RhLmpzXCIsXG5cdFwiLi90ZVwiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90ZS5qc1wiLFxuXHRcIi4vdGUuanNcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGUuanNcIixcblx0XCIuL3RldFwiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90ZXQuanNcIixcblx0XCIuL3RldC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90ZXQuanNcIixcblx0XCIuL3RnXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RnLmpzXCIsXG5cdFwiLi90Zy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90Zy5qc1wiLFxuXHRcIi4vdGhcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGguanNcIixcblx0XCIuL3RoLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RoLmpzXCIsXG5cdFwiLi90bC1waFwiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90bC1waC5qc1wiLFxuXHRcIi4vdGwtcGguanNcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGwtcGguanNcIixcblx0XCIuL3RsaFwiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90bGguanNcIixcblx0XCIuL3RsaC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90bGguanNcIixcblx0XCIuL3RyXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RyLmpzXCIsXG5cdFwiLi90ci5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90ci5qc1wiLFxuXHRcIi4vdHpsXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3R6bC5qc1wiLFxuXHRcIi4vdHpsLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3R6bC5qc1wiLFxuXHRcIi4vdHptXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3R6bS5qc1wiLFxuXHRcIi4vdHptLWxhdG5cIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdHptLWxhdG4uanNcIixcblx0XCIuL3R6bS1sYXRuLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3R6bS1sYXRuLmpzXCIsXG5cdFwiLi90em0uanNcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdHptLmpzXCIsXG5cdFwiLi91Zy1jblwiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91Zy1jbi5qc1wiLFxuXHRcIi4vdWctY24uanNcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdWctY24uanNcIixcblx0XCIuL3VrXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3VrLmpzXCIsXG5cdFwiLi91ay5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91ay5qc1wiLFxuXHRcIi4vdXJcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdXIuanNcIixcblx0XCIuL3VyLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3VyLmpzXCIsXG5cdFwiLi91elwiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91ei5qc1wiLFxuXHRcIi4vdXotbGF0blwiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91ei1sYXRuLmpzXCIsXG5cdFwiLi91ei1sYXRuLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3V6LWxhdG4uanNcIixcblx0XCIuL3V6LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3V6LmpzXCIsXG5cdFwiLi92aVwiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS92aS5qc1wiLFxuXHRcIi4vdmkuanNcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdmkuanNcIixcblx0XCIuL3gtcHNldWRvXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3gtcHNldWRvLmpzXCIsXG5cdFwiLi94LXBzZXVkby5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS94LXBzZXVkby5qc1wiLFxuXHRcIi4veW9cIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUveW8uanNcIixcblx0XCIuL3lvLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3lvLmpzXCIsXG5cdFwiLi96aC1jblwiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS96aC1jbi5qc1wiLFxuXHRcIi4vemgtY24uanNcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvemgtY24uanNcIixcblx0XCIuL3poLWhrXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3poLWhrLmpzXCIsXG5cdFwiLi96aC1oay5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS96aC1oay5qc1wiLFxuXHRcIi4vemgtdHdcIjogXCIuL25vZGVfbW9kdWxlcy9oYW5kc29udGFibGUvbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvemgtdHcuanNcIixcblx0XCIuL3poLXR3LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvaGFuZHNvbnRhYmxlL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3poLXR3LmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4vbm9kZV9tb2R1bGVzL2hhbmRzb250YWJsZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZSBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qJFwiOyIsIi8qKiBBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBjb2xsZWN0aW9uIHBsdWdpbnMgdjEuMC4xLlxuXHRXcml0dGVuIGJ5IEtlaXRoIFdvb2QgKGtid29vZHthdH1paW5ldC5jb20uYXUpIERlY2VtYmVyIDIwMTMuXG5cdExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS9qcXVlcnkvanF1ZXJ5L2Jsb2IvbWFzdGVyL01JVC1MSUNFTlNFLnR4dCkgbGljZW5zZS4gKi9cbihmdW5jdGlvbigpe3ZhciBqPWZhbHNlO3dpbmRvdy5KUUNsYXNzPWZ1bmN0aW9uKCl7fTtKUUNsYXNzLmNsYXNzZXM9e307SlFDbGFzcy5leHRlbmQ9ZnVuY3Rpb24gZXh0ZW5kZXIoZil7dmFyIGc9dGhpcy5wcm90b3R5cGU7aj10cnVlO3ZhciBoPW5ldyB0aGlzKCk7aj1mYWxzZTtmb3IodmFyIGkgaW4gZil7aFtpXT10eXBlb2YgZltpXT09J2Z1bmN0aW9uJyYmdHlwZW9mIGdbaV09PSdmdW5jdGlvbic/KGZ1bmN0aW9uKGQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5fc3VwZXI7dGhpcy5fc3VwZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIGdbZF0uYXBwbHkodGhpcyxhfHxbXSl9O3ZhciBjPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuX3N1cGVyPWI7cmV0dXJuIGN9fSkoaSxmW2ldKTpmW2ldfWZ1bmN0aW9uIEpRQ2xhc3MoKXtpZighaiYmdGhpcy5faW5pdCl7dGhpcy5faW5pdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fUpRQ2xhc3MucHJvdG90eXBlPWg7SlFDbGFzcy5wcm90b3R5cGUuY29uc3RydWN0b3I9SlFDbGFzcztKUUNsYXNzLmV4dGVuZD1leHRlbmRlcjtyZXR1cm4gSlFDbGFzc319KSgpOyhmdW5jdGlvbigkKXtKUUNsYXNzLmNsYXNzZXMuSlFQbHVnaW49SlFDbGFzcy5leHRlbmQoe25hbWU6J3BsdWdpbicsZGVmYXVsdE9wdGlvbnM6e30scmVnaW9uYWxPcHRpb25zOnt9LF9nZXR0ZXJzOltdLF9nZXRNYXJrZXI6ZnVuY3Rpb24oKXtyZXR1cm4naXMtJyt0aGlzLm5hbWV9LF9pbml0OmZ1bmN0aW9uKCl7JC5leHRlbmQodGhpcy5kZWZhdWx0T3B0aW9ucywodGhpcy5yZWdpb25hbE9wdGlvbnMmJnRoaXMucmVnaW9uYWxPcHRpb25zWycnXSl8fHt9KTt2YXIgYz1jYW1lbENhc2UodGhpcy5uYW1lKTskW2NdPXRoaXM7JC5mbltjXT1mdW5jdGlvbihhKXt2YXIgYj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSk7aWYoJFtjXS5faXNOb3RDaGFpbmVkKGEsYikpe3JldHVybiAkW2NdW2FdLmFwcGx5KCRbY10sW3RoaXNbMF1dLmNvbmNhdChiKSl9cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2lmKHR5cGVvZiBhPT09J3N0cmluZycpe2lmKGFbMF09PT0nXyd8fCEkW2NdW2FdKXt0aHJvdydVbmtub3duIG1ldGhvZDogJythO30kW2NdW2FdLmFwcGx5KCRbY10sW3RoaXNdLmNvbmNhdChiKSl9ZWxzZXskW2NdLl9hdHRhY2godGhpcyxhKX19KX19LHNldERlZmF1bHRzOmZ1bmN0aW9uKGEpeyQuZXh0ZW5kKHRoaXMuZGVmYXVsdE9wdGlvbnMsYXx8e30pfSxfaXNOb3RDaGFpbmVkOmZ1bmN0aW9uKGEsYil7aWYoYT09PSdvcHRpb24nJiYoYi5sZW5ndGg9PT0wfHwoYi5sZW5ndGg9PT0xJiZ0eXBlb2YgYlswXT09PSdzdHJpbmcnKSkpe3JldHVybiB0cnVlfXJldHVybiAkLmluQXJyYXkoYSx0aGlzLl9nZXR0ZXJzKT4tMX0sX2F0dGFjaDpmdW5jdGlvbihhLGIpe2E9JChhKTtpZihhLmhhc0NsYXNzKHRoaXMuX2dldE1hcmtlcigpKSl7cmV0dXJufWEuYWRkQ2xhc3ModGhpcy5fZ2V0TWFya2VyKCkpO2I9JC5leHRlbmQoe30sdGhpcy5kZWZhdWx0T3B0aW9ucyx0aGlzLl9nZXRNZXRhZGF0YShhKSxifHx7fSk7dmFyIGM9JC5leHRlbmQoe25hbWU6dGhpcy5uYW1lLGVsZW06YSxvcHRpb25zOmJ9LHRoaXMuX2luc3RTZXR0aW5ncyhhLGIpKTthLmRhdGEodGhpcy5uYW1lLGMpO3RoaXMuX3Bvc3RBdHRhY2goYSxjKTt0aGlzLm9wdGlvbihhLGIpfSxfaW5zdFNldHRpbmdzOmZ1bmN0aW9uKGEsYil7cmV0dXJue319LF9wb3N0QXR0YWNoOmZ1bmN0aW9uKGEsYil7fSxfZ2V0TWV0YWRhdGE6ZnVuY3Rpb24oZCl7dHJ5e3ZhciBmPWQuZGF0YSh0aGlzLm5hbWUudG9Mb3dlckNhc2UoKSl8fCcnO2Y9Zi5yZXBsYWNlKC8nL2csJ1wiJyk7Zj1mLnJlcGxhY2UoLyhbYS16QS1aMC05XSspOi9nLGZ1bmN0aW9uKGEsYixpKXt2YXIgYz1mLnN1YnN0cmluZygwLGkpLm1hdGNoKC9cIi9nKTtyZXR1cm4oIWN8fGMubGVuZ3RoJTI9PT0wPydcIicrYisnXCI6JzpiKyc6Jyl9KTtmPSQucGFyc2VKU09OKCd7JytmKyd9Jyk7Zm9yKHZhciBnIGluIGYpe3ZhciBoPWZbZ107aWYodHlwZW9mIGg9PT0nc3RyaW5nJyYmaC5tYXRjaCgvXm5ldyBEYXRlXFwoKC4qKVxcKSQvKSl7ZltnXT1ldmFsKGgpfX1yZXR1cm4gZn1jYXRjaChlKXtyZXR1cm57fX19LF9nZXRJbnN0OmZ1bmN0aW9uKGEpe3JldHVybiAkKGEpLmRhdGEodGhpcy5uYW1lKXx8e319LG9wdGlvbjpmdW5jdGlvbihhLGIsYyl7YT0kKGEpO3ZhciBkPWEuZGF0YSh0aGlzLm5hbWUpO2lmKCFifHwodHlwZW9mIGI9PT0nc3RyaW5nJyYmYz09bnVsbCkpe3ZhciBlPShkfHx7fSkub3B0aW9ucztyZXR1cm4oZSYmYj9lW2JdOmUpfWlmKCFhLmhhc0NsYXNzKHRoaXMuX2dldE1hcmtlcigpKSl7cmV0dXJufXZhciBlPWJ8fHt9O2lmKHR5cGVvZiBiPT09J3N0cmluZycpe2U9e307ZVtiXT1jfXRoaXMuX29wdGlvbnNDaGFuZ2VkKGEsZCxlKTskLmV4dGVuZChkLm9wdGlvbnMsZSl9LF9vcHRpb25zQ2hhbmdlZDpmdW5jdGlvbihhLGIsYyl7fSxkZXN0cm95OmZ1bmN0aW9uKGEpe2E9JChhKTtpZighYS5oYXNDbGFzcyh0aGlzLl9nZXRNYXJrZXIoKSkpe3JldHVybn10aGlzLl9wcmVEZXN0cm95KGEsdGhpcy5fZ2V0SW5zdChhKSk7YS5yZW1vdmVEYXRhKHRoaXMubmFtZSkucmVtb3ZlQ2xhc3ModGhpcy5fZ2V0TWFya2VyKCkpfSxfcHJlRGVzdHJveTpmdW5jdGlvbihhLGIpe319KTtmdW5jdGlvbiBjYW1lbENhc2UoYyl7cmV0dXJuIGMucmVwbGFjZSgvLShbYS16XSkvZyxmdW5jdGlvbihhLGIpe3JldHVybiBiLnRvVXBwZXJDYXNlKCl9KX0kLkpRUGx1Z2luPXtjcmVhdGVQbHVnaW46ZnVuY3Rpb24oYSxiKXtpZih0eXBlb2YgYT09PSdvYmplY3QnKXtiPWE7YT0nSlFQbHVnaW4nfWE9Y2FtZWxDYXNlKGEpO3ZhciBjPWNhbWVsQ2FzZShiLm5hbWUpO0pRQ2xhc3MuY2xhc3Nlc1tjXT1KUUNsYXNzLmNsYXNzZXNbYV0uZXh0ZW5kKGIpO25ldyBKUUNsYXNzLmNsYXNzZXNbY10oKX19fSkoalF1ZXJ5KTsiLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4iLCIvKiBodHRwOi8va2VpdGgtd29vZC5uYW1lL3RpbWVFbnRyeS5odG1sXG4gICBUaW1lIGVudHJ5IGZvciBqUXVlcnkgdjIuMC4xLlxuICAgV3JpdHRlbiBieSBLZWl0aCBXb29kIChrYndvb2R7YXR9aWluZXQuY29tLmF1KSBKdW5lIDIwMDcuXG4gICBBdmFpbGFibGUgdW5kZXIgdGhlIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL2pxdWVyeS9qcXVlcnkvYmxvYi9tYXN0ZXIvTUlULUxJQ0VOU0UudHh0KSBsaWNlbnNlLlxuICAgUGxlYXNlIGF0dHJpYnV0ZSB0aGUgYXV0aG9yIGlmIHlvdSB1c2UgaXQuICovXG4oZnVuY3Rpb24oJCl7dmFyIG49J3RpbWVFbnRyeSc7JC5KUVBsdWdpbi5jcmVhdGVQbHVnaW4oe25hbWU6bixkZWZhdWx0T3B0aW9uczp7YXBwZW5kVGV4dDonJyxzaG93U2Vjb25kczpmYWxzZSx1bmxpbWl0ZWRIb3VyczpmYWxzZSx0aW1lU3RlcHM6WzEsMSwxXSxpbml0aWFsRmllbGQ6bnVsbCxub1NlcGFyYXRvckVudHJ5OmZhbHNlLHRhYlRvRXhpdDpmYWxzZSx1c2VNb3VzZVdoZWVsOnRydWUsZGVmYXVsdFRpbWU6bnVsbCxtaW5UaW1lOm51bGwsbWF4VGltZTpudWxsLHNwaW5uZXJJbWFnZTonc3Bpbm5lckRlZmF1bHQucG5nJyxzcGlubmVyU2l6ZTpbMjAsMjAsOF0sc3Bpbm5lckJpZ0ltYWdlOicnLHNwaW5uZXJCaWdTaXplOls0MCw0MCwxNl0sc3Bpbm5lckluY0RlY09ubHk6ZmFsc2Usc3Bpbm5lclJlcGVhdDpbNTAwLDI1MF0sYmVmb3JlU2hvdzpudWxsLGJlZm9yZVNldFRpbWU6bnVsbH0scmVnaW9uYWxPcHRpb25zOnsnJzp7c2hvdzI0SG91cnM6ZmFsc2Usc2VwYXJhdG9yOic6JyxhbXBtUHJlZml4OicnLGFtcG1OYW1lczpbJ0FNJywnUE0nXSxzcGlubmVyVGV4dHM6WydOb3cnLCdQcmV2aW91cyBmaWVsZCcsJ05leHQgZmllbGQnLCdJbmNyZW1lbnQnLCdEZWNyZW1lbnQnXX19LF9nZXR0ZXJzOlsnZ2V0T2Zmc2V0JywnZ2V0VGltZScsJ2lzRGlzYWJsZWQnXSxfYXBwZW5kQ2xhc3M6bisnLWFwcGVuZCcsX2NvbnRyb2xDbGFzczpuKyctY29udHJvbCcsX2V4cGFuZENsYXNzOm4rJy1leHBhbmQnLF9kaXNhYmxlZElucHV0czpbXSxfaW5zdFNldHRpbmdzOmZ1bmN0aW9uKGEsYil7cmV0dXJue19maWVsZDowLF9zZWxlY3RlZEhvdXI6MCxfc2VsZWN0ZWRNaW51dGU6MCxfc2VsZWN0ZWRTZWNvbmQ6MH19LF9wb3N0QXR0YWNoOmZ1bmN0aW9uKGIsYyl7Yi5vbignZm9jdXMuJytjLm5hbWUsdGhpcy5fZG9Gb2N1cykub24oJ2JsdXIuJytjLm5hbWUsdGhpcy5fZG9CbHVyKS5vbignY2xpY2suJytjLm5hbWUsdGhpcy5fZG9DbGljaykub24oJ2tleWRvd24uJytjLm5hbWUsdGhpcy5fZG9LZXlEb3duKS5vbigna2V5cHJlc3MuJytjLm5hbWUsdGhpcy5fZG9LZXlQcmVzcykub24oJ3Bhc3RlLicrYy5uYW1lLGZ1bmN0aW9uKGEpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtvLl9wYXJzZVRpbWUoYyl9LDEpfSl9LF9vcHRpb25zQ2hhbmdlZDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5fZXh0cmFjdFRpbWUoYik7JC5leHRlbmQoYi5vcHRpb25zLGMpO2Iub3B0aW9ucy5zaG93MjRIb3Vycz1iLm9wdGlvbnMuc2hvdzI0SG91cnN8fGIub3B0aW9ucy51bmxpbWl0ZWRIb3VycztiLl9maWVsZD0wO2lmKGQpe3RoaXMuX3NldFRpbWUoYixuZXcgRGF0ZSgwLDAsMCxkWzBdLGRbMV0sZFsyXSkpfWEubmV4dCgnc3Bhbi4nK3RoaXMuX2FwcGVuZENsYXNzKS5yZW1vdmUoKTthLnBhcmVudCgpLmZpbmQoJ3NwYW4uJyt0aGlzLl9jb250cm9sQ2xhc3MpLnJlbW92ZSgpO2lmKCQuZm4ubW91c2V3aGVlbCl7YS51bm1vdXNld2hlZWwoKX12YXIgZT0oIWIub3B0aW9ucy5zcGlubmVySW1hZ2U/bnVsbDokKCc8c3BhbiBjbGFzcz1cIicrdGhpcy5fY29udHJvbENsYXNzKydcIiBzdHlsZT1cImRpc3BsYXk6IGlubGluZS1ibG9jazsgJysnYmFja2dyb3VuZDogdXJsKFxcJycrYi5vcHRpb25zLnNwaW5uZXJJbWFnZSsnXFwnKSAwIDAgbm8tcmVwZWF0OyB3aWR0aDogJytiLm9wdGlvbnMuc3Bpbm5lclNpemVbMF0rJ3B4OyBoZWlnaHQ6ICcrYi5vcHRpb25zLnNwaW5uZXJTaXplWzFdKydweDtcIj48L3NwYW4+JykpO2EuYWZ0ZXIoYi5vcHRpb25zLmFwcGVuZFRleHQ/JzxzcGFuIGNsYXNzPVwiJyt0aGlzLl9hcHBlbmRDbGFzcysnXCI+JytiLm9wdGlvbnMuYXBwZW5kVGV4dCsnPC9zcGFuPic6JycpLmFmdGVyKGV8fCcnKTtpZihiLm9wdGlvbnMudXNlTW91c2VXaGVlbCYmJC5mbi5tb3VzZXdoZWVsKXthLm1vdXNld2hlZWwodGhpcy5fZG9Nb3VzZVdoZWVsKX1pZihlKXtlLm1vdXNlZG93bih0aGlzLl9oYW5kbGVTcGlubmVyKS5tb3VzZXVwKHRoaXMuX2VuZFNwaW5uZXIpLm1vdXNlb3Zlcih0aGlzLl9leHBhbmRTcGlubmVyKS5tb3VzZW91dCh0aGlzLl9lbmRTcGlubmVyKS5tb3VzZW1vdmUodGhpcy5fZGVzY3JpYmVTcGlubmVyKX19LGVuYWJsZTpmdW5jdGlvbihhKXt0aGlzLl9lbmFibGVEaXNhYmxlKGEsZmFsc2UpfSxkaXNhYmxlOmZ1bmN0aW9uKGEpe3RoaXMuX2VuYWJsZURpc2FibGUoYSx0cnVlKX0sX2VuYWJsZURpc2FibGU6ZnVuY3Rpb24oYixjKXt2YXIgZD10aGlzLl9nZXRJbnN0KGIpO2lmKCFkKXtyZXR1cm59Yi5kaXNhYmxlZD1jO2lmKGIubmV4dFNpYmxpbmcmJmIubmV4dFNpYmxpbmcubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PSdzcGFuJyl7dGhpcy5fY2hhbmdlU3Bpbm5lcihkLGIubmV4dFNpYmxpbmcsKGM/NTotMSkpfXRoaXMuX2Rpc2FibGVkSW5wdXRzPSQubWFwKHRoaXMuX2Rpc2FibGVkSW5wdXRzLGZ1bmN0aW9uKGEpe3JldHVybihhPT09Yj9udWxsOmEpfSk7aWYoYyl7dGhpcy5fZGlzYWJsZWRJbnB1dHMucHVzaChiKX19LGlzRGlzYWJsZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuICQuaW5BcnJheShhLHRoaXMuX2Rpc2FibGVkSW5wdXRzKT4tMX0sX3ByZURlc3Ryb3k6ZnVuY3Rpb24oYixjKXtiPSQoYikub2ZmKCcuJytuKTtpZigkLmZuLm1vdXNld2hlZWwpe2IudW5tb3VzZXdoZWVsKCl9dGhpcy5fZGlzYWJsZWRJbnB1dHM9JC5tYXAodGhpcy5fZGlzYWJsZWRJbnB1dHMsZnVuY3Rpb24oYSl7cmV0dXJuKGE9PT1iWzBdP251bGw6YSl9KTtiLnNpYmxpbmdzKCcuJyt0aGlzLl9hcHBlbmRDbGFzcysnLC4nK3RoaXMuX2NvbnRyb2xDbGFzcykucmVtb3ZlKCl9LHNldFRpbWU6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLl9nZXRJbnN0KGEpO2lmKGMpe2lmKGI9PT1udWxsfHxiPT09JycpeyQoYSkudmFsKCcnKX1lbHNle3RoaXMuX3NldFRpbWUoYyxiPygkLmlzQXJyYXkoYik/YjoodHlwZW9mIGI9PT0nb2JqZWN0Jz9uZXcgRGF0ZShiLmdldFRpbWUoKSk6YikpOm51bGwpfX19LGdldFRpbWU6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5fZ2V0SW5zdChhKTt2YXIgYz0oYj90aGlzLl9leHRyYWN0VGltZShiKTpudWxsKTtyZXR1cm4oIWM/bnVsbDpuZXcgRGF0ZSgwLDAsMCxjWzBdLGNbMV0sY1syXSkpfSxnZXRPZmZzZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5fZ2V0SW5zdChhKTt2YXIgYz0oYj90aGlzLl9leHRyYWN0VGltZShiKTpudWxsKTtyZXR1cm4oIWM/MDooY1swXSozNjAwK2NbMV0qNjArY1syXSkqMTAwMCl9LF9kb0ZvY3VzOmZ1bmN0aW9uKGEpe3ZhciBiPShhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT0naW5wdXQnP2E6dGhpcyk7aWYoby5fbGFzdElucHV0PT09Ynx8by5pc0Rpc2FibGVkKGIpKXtvLl9mb2N1c3NlZD1mYWxzZTtyZXR1cm59dmFyIGM9by5fZ2V0SW5zdChiKTtvLl9mb2N1c3NlZD10cnVlO28uX2xhc3RJbnB1dD1iO28uX2JsdXJyZWRJbnB1dD1udWxsOyQuZXh0ZW5kKGMub3B0aW9ucywoJC5pc0Z1bmN0aW9uKGMub3B0aW9ucy5iZWZvcmVTaG93KT9jLm9wdGlvbnMuYmVmb3JlU2hvdy5hcHBseShiLFtiXSk6e30pKTtvLl9wYXJzZVRpbWUoYyxhLm5vZGVOYW1lP251bGw6YSk7c2V0VGltZW91dChmdW5jdGlvbigpe28uX3Nob3dGaWVsZChjKX0sMTApfSxfZG9CbHVyOmZ1bmN0aW9uKGEpe28uX2JsdXJyZWRJbnB1dD1vLl9sYXN0SW5wdXQ7by5fbGFzdElucHV0PW51bGx9LF9kb0NsaWNrOmZ1bmN0aW9uKGEpe3ZhciBiPWEudGFyZ2V0O3ZhciBjPW8uX2dldEluc3QoYik7dmFyIGQ9Yy5fZmllbGQ7aWYoIW8uX2ZvY3Vzc2VkKXtjLl9maWVsZD1vLl9nZXRTZWxlY3Rpb24oYyxiLGEpfWlmKGQhPT1jLl9maWVsZCl7Yy5fbGFzdENocj0nJ31vLl9zaG93RmllbGQoYyk7by5fZm9jdXNzZWQ9ZmFsc2V9LF9nZXRTZWxlY3Rpb246ZnVuY3Rpb24oYixjLGQpe3ZhciBlPTA7dmFyIGY9W2IuZWxlbS52YWwoKS5zcGxpdChiLm9wdGlvbnMuc2VwYXJhdG9yKVswXS5sZW5ndGgsMiwyXTtpZihjLnNlbGVjdGlvblN0YXJ0IT09bnVsbCl7dmFyIGc9MDtmb3IodmFyIGg9MDtoPD1NYXRoLm1heCgxLGIuX3NlY29uZEZpZWxkLGIuX2FtcG1GaWVsZCk7aCsrKXtnKz0oaCE9PWIuX2FtcG1GaWVsZD9mW2hdK2Iub3B0aW9ucy5zZXBhcmF0b3IubGVuZ3RoOmIub3B0aW9ucy5hbXBtUHJlZml4Lmxlbmd0aCtiLm9wdGlvbnMuYW1wbU5hbWVzWzBdLmxlbmd0aCk7ZT1oO2lmKGMuc2VsZWN0aW9uU3RhcnQ8Zyl7YnJlYWt9fX1lbHNlIGlmKGMuY3JlYXRlVGV4dFJhbmdlJiZkIT1udWxsKXt2YXIgaT0kKGQuc3JjRWxlbWVudCk7dmFyIGo9Yy5jcmVhdGVUZXh0UmFuZ2UoKTt2YXIgaz1mdW5jdGlvbihhKXtyZXR1cm57dGhpbjoyLG1lZGl1bTo0LHRoaWNrOjZ9W2FdfHxhfTt2YXIgbD1kLmNsaWVudFgrZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQtKGkub2Zmc2V0KCkubGVmdCtwYXJzZUludChrKGkuY3NzKCdib3JkZXItbGVmdC13aWR0aCcpKSwxMCkpLWoub2Zmc2V0TGVmdDtmb3IodmFyIGg9MDtoPD1NYXRoLm1heCgxLGIuX3NlY29uZEZpZWxkLGIuX2FtcG1GaWVsZCk7aCsrKXt2YXIgZz0oaCE9PWIuX2FtcG1GaWVsZD8oaCpmaWVsZFNpemUpKzI6KGIuX2FtcG1GaWVsZCpmaWVsZFNpemUpK2Iub3B0aW9ucy5hbXBtUHJlZml4Lmxlbmd0aCtiLm9wdGlvbnMuYW1wbU5hbWVzWzBdLmxlbmd0aCk7ai5jb2xsYXBzZSgpO2oubW92ZUVuZCgnY2hhcmFjdGVyJyxnKTtlPWg7aWYobDxqLmJvdW5kaW5nV2lkdGgpe2JyZWFrfX19cmV0dXJuIGV9LF9kb0tleURvd246ZnVuY3Rpb24oYSl7aWYoYS5rZXlDb2RlPj00OCl7cmV0dXJuIHRydWV9dmFyIGI9by5fZ2V0SW5zdChhLnRhcmdldCk7c3dpdGNoKGEua2V5Q29kZSl7Y2FzZSA5OnJldHVybihiLm9wdGlvbnMudGFiVG9FeGl0P3RydWU6KGEuc2hpZnRLZXk/by5fY2hhbmdlRmllbGQoYiwtMSx0cnVlKTpvLl9jaGFuZ2VGaWVsZChiLCsxLHRydWUpKSk7Y2FzZSAzNTppZihhLmN0cmxLZXkpe28uX3NldFZhbHVlKGIsJycpfWVsc2V7Yi5fZmllbGQ9TWF0aC5tYXgoMSxiLl9zZWNvbmRGaWVsZCxiLl9hbXBtRmllbGQpO28uX2FkanVzdEZpZWxkKGIsMCl9YnJlYWs7Y2FzZSAzNjppZihhLmN0cmxLZXkpe28uX3NldFRpbWUoYil9ZWxzZXtiLl9maWVsZD0wO28uX2FkanVzdEZpZWxkKGIsMCl9YnJlYWs7Y2FzZSAzNzpvLl9jaGFuZ2VGaWVsZChiLC0xLGZhbHNlKTticmVhaztjYXNlIDM4Om8uX2FkanVzdEZpZWxkKGIsKzEpO2JyZWFrO2Nhc2UgMzk6by5fY2hhbmdlRmllbGQoYiwrMSxmYWxzZSk7YnJlYWs7Y2FzZSA0MDpvLl9hZGp1c3RGaWVsZChiLC0xKTticmVhaztjYXNlIDQ2Om8uX3NldFZhbHVlKGIsJycpO2JyZWFrO2Nhc2UgODpiLl9sYXN0Q2hyPScnO2RlZmF1bHQ6cmV0dXJuIHRydWV9cmV0dXJuIGZhbHNlfSxfZG9LZXlQcmVzczpmdW5jdGlvbihhKXt2YXIgYj1TdHJpbmcuZnJvbUNoYXJDb2RlKGEuY2hhckNvZGU9PT11bmRlZmluZWQ/YS5rZXlDb2RlOmEuY2hhckNvZGUpO2lmKGI8JyAnKXtyZXR1cm4gdHJ1ZX12YXIgYz1vLl9nZXRJbnN0KGEudGFyZ2V0KTtvLl9oYW5kbGVLZXlQcmVzcyhjLGIpO3JldHVybiBmYWxzZX0sX2hhbmRsZUtleVByZXNzOmZ1bmN0aW9uKGEsYil7aWYoYj09PWEub3B0aW9ucy5zZXBhcmF0b3Ipe3RoaXMuX2NoYW5nZUZpZWxkKGEsKzEsZmFsc2UpfWVsc2UgaWYoYj49JzAnJiZiPD0nOScpe3ZhciBjPXBhcnNlSW50KGIsMTApO3ZhciBkPXBhcnNlSW50KGEuX2xhc3RDaHIrYiwxMCk7dmFyIGU9KGEuX2ZpZWxkIT09MD9hLl9zZWxlY3RlZEhvdXI6KGEub3B0aW9ucy51bmxpbWl0ZWRIb3Vycz9kOihhLm9wdGlvbnMuc2hvdzI0SG91cnM/KGQ8MjQ/ZDpjKTooZD49MSYmZDw9MTI/ZDooYz4wP2M6YS5fc2VsZWN0ZWRIb3VyKSklMTIrKGEuX3NlbGVjdGVkSG91cj49MTI/MTI6MCkpKSk7dmFyIGY9KGEuX2ZpZWxkIT09MT9hLl9zZWxlY3RlZE1pbnV0ZTooZDw2MD9kOmMpKTt2YXIgZz0oYS5fZmllbGQhPT1hLl9zZWNvbmRGaWVsZD9hLl9zZWxlY3RlZFNlY29uZDooZDw2MD9kOmMpKTt2YXIgaD10aGlzLl9jb25zdHJhaW5UaW1lKGEsW2UsZixnXSk7dGhpcy5fc2V0VGltZShhLChhLm9wdGlvbnMudW5saW1pdGVkSG91cnM/aDpuZXcgRGF0ZSgwLDAsMCxoWzBdLGhbMV0saFsyXSkpKTtpZihhLm9wdGlvbnMubm9TZXBhcmF0b3JFbnRyeSYmYS5fbGFzdENocil7dGhpcy5fY2hhbmdlRmllbGQoYSwrMSxmYWxzZSl9ZWxzZXthLl9sYXN0Q2hyPShhLm9wdGlvbnMudW5saW1pdGVkSG91cnMmJmEuX2ZpZWxkPT09MD9hLl9sYXN0Q2hyK2I6Yil9fWVsc2UgaWYoIWEub3B0aW9ucy5zaG93MjRIb3Vycyl7Yj1iLnRvTG93ZXJDYXNlKCk7aWYoKGI9PT1hLm9wdGlvbnMuYW1wbU5hbWVzWzBdLnN1YnN0cmluZygwLDEpLnRvTG93ZXJDYXNlKCkmJmEuX3NlbGVjdGVkSG91cj49MTIpfHwoYj09PWEub3B0aW9ucy5hbXBtTmFtZXNbMV0uc3Vic3RyaW5nKDAsMSkudG9Mb3dlckNhc2UoKSYmYS5fc2VsZWN0ZWRIb3VyPDEyKSl7dmFyIGk9YS5fZmllbGQ7YS5fZmllbGQ9YS5fYW1wbUZpZWxkO3RoaXMuX2FkanVzdEZpZWxkKGEsKzEpO2EuX2ZpZWxkPWk7dGhpcy5fc2hvd0ZpZWxkKGEpfX19LF9kb01vdXNlV2hlZWw6ZnVuY3Rpb24oYSxiKXtpZihvLmlzRGlzYWJsZWQoYS50YXJnZXQpKXtyZXR1cm59dmFyIGM9by5fZ2V0SW5zdChhLnRhcmdldCk7Yy5lbGVtLmZvY3VzKCk7aWYoIWMuZWxlbS52YWwoKSl7by5fcGFyc2VUaW1lKGMpfW8uX2FkanVzdEZpZWxkKGMsYik7YS5wcmV2ZW50RGVmYXVsdCgpfSxfZXhwYW5kU3Bpbm5lcjpmdW5jdGlvbihiKXt2YXIgYz1vLl9nZXRTcGlubmVyVGFyZ2V0KGIpO3ZhciBkPW8uX2dldEluc3Qoby5fZ2V0SW5wdXQoYykpO2lmKG8uaXNEaXNhYmxlZChkLmVsZW1bMF0pKXtyZXR1cm59aWYoZC5vcHRpb25zLnNwaW5uZXJCaWdJbWFnZSl7ZC5fZXhwYW5kZWQ9dHJ1ZTt2YXIgZT0kKGMpLm9mZnNldCgpO3ZhciBmPW51bGw7JChjKS5wYXJlbnRzKCkuZWFjaChmdW5jdGlvbigpe3ZhciBhPSQodGhpcyk7aWYoYS5jc3MoJ3Bvc2l0aW9uJyk9PT0ncmVsYXRpdmUnfHxhLmNzcygncG9zaXRpb24nKT09PSdhYnNvbHV0ZScpe2Y9YS5vZmZzZXQoKX1yZXR1cm4hZn0pOyQoJzxkaXYgY2xhc3M9XCInK28uX2V4cGFuZENsYXNzKydcIiBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogJysoZS5sZWZ0LShkLm9wdGlvbnMuc3Bpbm5lckJpZ1NpemVbMF0tZC5vcHRpb25zLnNwaW5uZXJTaXplWzBdKS8yLShmP2YubGVmdDowKSkrJ3B4OyB0b3A6ICcrKGUudG9wLShkLm9wdGlvbnMuc3Bpbm5lckJpZ1NpemVbMV0tZC5vcHRpb25zLnNwaW5uZXJTaXplWzFdKS8yLShmP2YudG9wOjApKSsncHg7IHdpZHRoOiAnK2Qub3B0aW9ucy5zcGlubmVyQmlnU2l6ZVswXSsncHg7IGhlaWdodDogJytkLm9wdGlvbnMuc3Bpbm5lckJpZ1NpemVbMV0rJ3B4OyBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoJytkLm9wdGlvbnMuc3Bpbm5lckJpZ0ltYWdlKycpIG5vLXJlcGVhdCAwcHggMHB4OyB6LWluZGV4OiAxMDtcIj48L2Rpdj4nKS5tb3VzZWRvd24oby5faGFuZGxlU3Bpbm5lcikubW91c2V1cChvLl9lbmRTcGlubmVyKS5tb3VzZW91dChvLl9lbmRFeHBhbmQpLm1vdXNlbW92ZShvLl9kZXNjcmliZVNwaW5uZXIpLmluc2VydEFmdGVyKGMpfX0sX2dldElucHV0OmZ1bmN0aW9uKGEpe3JldHVybiAkKGEpLnNpYmxpbmdzKCcuJyt0aGlzLl9nZXRNYXJrZXIoKSlbMF19LF9kZXNjcmliZVNwaW5uZXI6ZnVuY3Rpb24oYSl7dmFyIGI9by5fZ2V0U3Bpbm5lclRhcmdldChhKTt2YXIgYz1vLl9nZXRJbnN0KG8uX2dldElucHV0KGIpKTtiLnRpdGxlPWMub3B0aW9ucy5zcGlubmVyVGV4dHNbby5fZ2V0U3Bpbm5lclJlZ2lvbihjLGEpXX0sX2hhbmRsZVNwaW5uZXI6ZnVuY3Rpb24oYSl7dmFyIGI9by5fZ2V0U3Bpbm5lclRhcmdldChhKTt2YXIgYz1vLl9nZXRJbnB1dChiKTtpZihvLmlzRGlzYWJsZWQoYykpe3JldHVybn1pZihjPT09by5fYmx1cnJlZElucHV0KXtvLl9sYXN0SW5wdXQ9YztvLl9ibHVycmVkSW5wdXQ9bnVsbH12YXIgZD1vLl9nZXRJbnN0KGMpO28uX2RvRm9jdXMoYyk7dmFyIGU9by5fZ2V0U3Bpbm5lclJlZ2lvbihkLGEpO28uX2NoYW5nZVNwaW5uZXIoZCxiLGUpO28uX2FjdGlvblNwaW5uZXIoZCxlKTtvLl90aW1lcj1udWxsO28uX2hhbmRsaW5nU3Bpbm5lcj10cnVlO2lmKGU+PTMmJmQub3B0aW9ucy5zcGlubmVyUmVwZWF0WzBdKXtvLl90aW1lcj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7by5fcmVwZWF0U3Bpbm5lcihkLGUpfSxkLm9wdGlvbnMuc3Bpbm5lclJlcGVhdFswXSk7JChiKS5vbmUoJ21vdXNlb3V0JyxvLl9yZWxlYXNlU3Bpbm5lcikub25lKCdtb3VzZXVwJyxvLl9yZWxlYXNlU3Bpbm5lcil9fSxfYWN0aW9uU3Bpbm5lcjpmdW5jdGlvbihhLGIpe2lmKCFhLmVsZW0udmFsKCkpe28uX3BhcnNlVGltZShhKX1zd2l0Y2goYil7Y2FzZSAwOnRoaXMuX3NldFRpbWUoYSk7YnJlYWs7Y2FzZSAxOnRoaXMuX2NoYW5nZUZpZWxkKGEsLTEsZmFsc2UpO2JyZWFrO2Nhc2UgMjp0aGlzLl9jaGFuZ2VGaWVsZChhLCsxLGZhbHNlKTticmVhaztjYXNlIDM6dGhpcy5fYWRqdXN0RmllbGQoYSwrMSk7YnJlYWs7Y2FzZSA0OnRoaXMuX2FkanVzdEZpZWxkKGEsLTEpO2JyZWFrfX0sX3JlcGVhdFNwaW5uZXI6ZnVuY3Rpb24oYSxiKXtpZighby5fdGltZXIpe3JldHVybn1vLl9sYXN0SW5wdXQ9by5fYmx1cnJlZElucHV0O3RoaXMuX2FjdGlvblNwaW5uZXIoYSxiKTt0aGlzLl90aW1lcj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7by5fcmVwZWF0U3Bpbm5lcihhLGIpfSxhLm9wdGlvbnMuc3Bpbm5lclJlcGVhdFsxXSl9LF9yZWxlYXNlU3Bpbm5lcjpmdW5jdGlvbihhKXtjbGVhclRpbWVvdXQoby5fdGltZXIpO28uX3RpbWVyPW51bGx9LF9lbmRFeHBhbmQ6ZnVuY3Rpb24oYSl7by5fdGltZXI9bnVsbDt2YXIgYj1vLl9nZXRTcGlubmVyVGFyZ2V0KGEpO3ZhciBjPW8uX2dldElucHV0KGIpO3ZhciBkPW8uX2dldEluc3QoYyk7JChiKS5yZW1vdmUoKTtkLl9leHBhbmRlZD1mYWxzZX0sX2VuZFNwaW5uZXI6ZnVuY3Rpb24oYSl7by5fdGltZXI9bnVsbDt2YXIgYj1vLl9nZXRTcGlubmVyVGFyZ2V0KGEpO3ZhciBjPW8uX2dldElucHV0KGIpO3ZhciBkPW8uX2dldEluc3QoYyk7aWYoIW8uaXNEaXNhYmxlZChjKSl7by5fY2hhbmdlU3Bpbm5lcihkLGIsLTEpfWlmKG8uX2hhbmRsaW5nU3Bpbm5lcil7by5fbGFzdElucHV0PW8uX2JsdXJyZWRJbnB1dH1pZihvLl9sYXN0SW5wdXQmJm8uX2hhbmRsaW5nU3Bpbm5lcil7by5fc2hvd0ZpZWxkKGQpfW8uX2hhbmRsaW5nU3Bpbm5lcj1mYWxzZX0sX2dldFNwaW5uZXJUYXJnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEudGFyZ2V0fHxhLnNyY0VsZW1lbnR9LF9nZXRTcGlubmVyUmVnaW9uOmZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5fZ2V0U3Bpbm5lclRhcmdldChiKTt2YXIgZD0kKGMpLm9mZnNldCgpO3ZhciBlPVtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdHx8ZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0LGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3B8fGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wXTt2YXIgZj0oYS5vcHRpb25zLnNwaW5uZXJJbmNEZWNPbmx5Pzk5OmIuY2xpZW50WCtlWzBdLWQubGVmdCk7dmFyIGc9Yi5jbGllbnRZK2VbMV0tZC50b3A7dmFyIGg9YS5vcHRpb25zW2EuX2V4cGFuZGVkPydzcGlubmVyQmlnU2l6ZSc6J3NwaW5uZXJTaXplJ107dmFyIGk9KGEub3B0aW9ucy5zcGlubmVySW5jRGVjT25seT85OTpoWzBdLTEtZik7dmFyIGo9aFsxXS0xLWc7aWYoaFsyXT4wJiZNYXRoLmFicyhmLWkpPD1oWzJdJiZNYXRoLmFicyhnLWopPD1oWzJdKXtyZXR1cm4gMH12YXIgaz1NYXRoLm1pbihmLGcsaSxqKTtyZXR1cm4oaz09PWY/MTooaz09PWk/Mjooaz09PWc/Mzo0KSkpfSxfY2hhbmdlU3Bpbm5lcjpmdW5jdGlvbihhLGIsYyl7JChiKS5jc3MoJ2JhY2tncm91bmQtcG9zaXRpb24nLCctJysoKGMrMSkqYS5vcHRpb25zW2EuX2V4cGFuZGVkPydzcGlubmVyQmlnU2l6ZSc6J3NwaW5uZXJTaXplJ11bMF0pKydweCAwcHgnKX0sX3BhcnNlVGltZTpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuX2V4dHJhY3RUaW1lKGEpO2lmKGMpe2EuX3NlbGVjdGVkSG91cj1jWzBdO2EuX3NlbGVjdGVkTWludXRlPWNbMV07YS5fc2VsZWN0ZWRTZWNvbmQ9Y1syXX1lbHNle3ZhciBkPXRoaXMuX2NvbnN0cmFpblRpbWUoYSk7YS5fc2VsZWN0ZWRIb3VyPWRbMF07YS5fc2VsZWN0ZWRNaW51dGU9ZFsxXTthLl9zZWxlY3RlZFNlY29uZD0oYS5vcHRpb25zLnNob3dTZWNvbmRzP2RbMl06MCl9YS5fc2Vjb25kRmllbGQ9KGEub3B0aW9ucy5zaG93U2Vjb25kcz8yOi0xKTthLl9hbXBtRmllbGQ9KGEub3B0aW9ucy5zaG93MjRIb3Vycz8tMTooYS5vcHRpb25zLnNob3dTZWNvbmRzPzM6MikpO2EuX2xhc3RDaHI9Jyc7dmFyIGU9ZnVuY3Rpb24oKXtpZihhLmVsZW0udmFsKCkhPT0nJyl7by5fc2hvd1RpbWUoYSl9fTtpZih0eXBlb2YgYS5vcHRpb25zLmluaXRpYWxGaWVsZD09PSdudW1iZXInKXthLl9maWVsZD1NYXRoLm1heCgwLE1hdGgubWluKE1hdGgubWF4KDEsYS5fc2Vjb25kRmllbGQsYS5fYW1wbUZpZWxkKSxhLm9wdGlvbnMuaW5pdGlhbEZpZWxkKSk7ZSgpfWVsc2V7c2V0VGltZW91dChmdW5jdGlvbigpe2EuX2ZpZWxkPW8uX2dldFNlbGVjdGlvbihhLGEuZWxlbVswXSxiKTtlKCl9LDApfX0sX2V4dHJhY3RUaW1lOmZ1bmN0aW9uKGEsYil7Yj1ifHxhLmVsZW0udmFsKCk7dmFyIGM9Yi5zcGxpdChhLm9wdGlvbnMuc2VwYXJhdG9yKTtpZihhLm9wdGlvbnMuc2VwYXJhdG9yPT09JycmJmIhPT0nJyl7Y1swXT1iLnN1YnN0cmluZygwLDIpO2NbMV09Yi5zdWJzdHJpbmcoMiw0KTtjWzJdPWIuc3Vic3RyaW5nKDQsNil9aWYoYy5sZW5ndGg+PTIpe3ZhciBkPSFhLm9wdGlvbnMuc2hvdzI0SG91cnMmJihiLmluZGV4T2YoYS5vcHRpb25zLmFtcG1OYW1lc1swXSk+LTEpO3ZhciBlPSFhLm9wdGlvbnMuc2hvdzI0SG91cnMmJihiLmluZGV4T2YoYS5vcHRpb25zLmFtcG1OYW1lc1sxXSk+LTEpO3ZhciBmPXBhcnNlSW50KGNbMF0sMTApO2Y9KGlzTmFOKGYpPzA6Zik7Zj0oKGR8fGUpJiZmPT09MTI/MDpmKSsoZT8xMjowKTt2YXIgZz1wYXJzZUludChjWzFdLDEwKTtnPShpc05hTihnKT8wOmcpO3ZhciBoPShjLmxlbmd0aD49Mz9wYXJzZUludChjWzJdLDEwKTowKTtoPShpc05hTihoKXx8IWEub3B0aW9ucy5zaG93U2Vjb25kcz8wOmgpO3JldHVybiB0aGlzLl9jb25zdHJhaW5UaW1lKGEsW2YsZyxoXSl9cmV0dXJuIG51bGx9LF9jb25zdHJhaW5UaW1lOmZ1bmN0aW9uKGEsYil7dmFyIGM9KGIhPT1udWxsJiZiIT09dW5kZWZpbmVkKTtpZighYyl7dmFyIGQ9dGhpcy5fZGV0ZXJtaW5lVGltZShhLm9wdGlvbnMuZGVmYXVsdFRpbWUsYSl8fG5ldyBEYXRlKCk7Yj1bZC5nZXRIb3VycygpLGQuZ2V0TWludXRlcygpLGQuZ2V0U2Vjb25kcygpXX12YXIgZT1mYWxzZTtmb3IodmFyIGk9MDtpPGEub3B0aW9ucy50aW1lU3RlcHMubGVuZ3RoO2krKyl7aWYoZSl7YltpXT0wfWVsc2UgaWYoYS5vcHRpb25zLnRpbWVTdGVwc1tpXT4xKXtiW2ldPU1hdGgucm91bmQoYltpXS9hLm9wdGlvbnMudGltZVN0ZXBzW2ldKSphLm9wdGlvbnMudGltZVN0ZXBzW2ldO2U9dHJ1ZX19cmV0dXJuIGJ9LF9zaG93VGltZTpmdW5jdGlvbihhKXt2YXIgYj0oYS5vcHRpb25zLnVubGltaXRlZEhvdXJzP2EuX3NlbGVjdGVkSG91cjp0aGlzLl9mb3JtYXROdW1iZXIoYS5vcHRpb25zLnNob3cyNEhvdXJzP2EuX3NlbGVjdGVkSG91cjooKGEuX3NlbGVjdGVkSG91cisxMSklMTIpKzEpKSthLm9wdGlvbnMuc2VwYXJhdG9yK3RoaXMuX2Zvcm1hdE51bWJlcihhLl9zZWxlY3RlZE1pbnV0ZSkrKGEub3B0aW9ucy5zaG93U2Vjb25kcz9hLm9wdGlvbnMuc2VwYXJhdG9yK3RoaXMuX2Zvcm1hdE51bWJlcihhLl9zZWxlY3RlZFNlY29uZCk6JycpKyhhLm9wdGlvbnMuc2hvdzI0SG91cnM/Jyc6YS5vcHRpb25zLmFtcG1QcmVmaXgrYS5vcHRpb25zLmFtcG1OYW1lc1soYS5fc2VsZWN0ZWRIb3VyPDEyPzA6MSldKTt0aGlzLl9zZXRWYWx1ZShhLGIpO3RoaXMuX3Nob3dGaWVsZChhKX0sX3Nob3dGaWVsZDpmdW5jdGlvbihhKXt2YXIgYj1hLmVsZW1bMF07aWYoYS5lbGVtLmlzKCc6aGlkZGVuJyl8fG8uX2xhc3RJbnB1dCE9PWIpe3JldHVybn12YXIgYz1bYS5lbGVtLnZhbCgpLnNwbGl0KGEub3B0aW9ucy5zZXBhcmF0b3IpWzBdLmxlbmd0aCwyLDJdO3ZhciBkPTA7dmFyIGU9MDt3aGlsZShlPGEuX2ZpZWxkKXtkKz1jW2VdKyhlPT09TWF0aC5tYXgoMSxhLl9zZWNvbmRGaWVsZCk/MDphLm9wdGlvbnMuc2VwYXJhdG9yLmxlbmd0aCk7ZSsrfXZhciBmPWQrKGEuX2ZpZWxkIT09YS5fYW1wbUZpZWxkP2NbZV06YS5vcHRpb25zLmFtcG1QcmVmaXgubGVuZ3RoK2Eub3B0aW9ucy5hbXBtTmFtZXNbMF0ubGVuZ3RoKTtpZihiLnNldFNlbGVjdGlvblJhbmdlKXtiLnNldFNlbGVjdGlvblJhbmdlKGQsZil9ZWxzZSBpZihiLmNyZWF0ZVRleHRSYW5nZSl7dmFyIGc9Yi5jcmVhdGVUZXh0UmFuZ2UoKTtnLm1vdmVTdGFydCgnY2hhcmFjdGVyJyxkKTtnLm1vdmVFbmQoJ2NoYXJhY3RlcicsZi1hLmVsZW0udmFsKCkubGVuZ3RoKTtnLnNlbGVjdCgpfWlmKCFiLmRpc2FibGVkKXtiLmZvY3VzKCl9fSxfZm9ybWF0TnVtYmVyOmZ1bmN0aW9uKGEpe3JldHVybihhPDEwPycwJzonJykrYX0sX3NldFZhbHVlOmZ1bmN0aW9uKGEsYil7aWYoYiE9PWEuZWxlbS52YWwoKSl7YS5lbGVtLnZhbChiKS50cmlnZ2VyKCdjaGFuZ2UnKX19LF9jaGFuZ2VGaWVsZDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9KGEuZWxlbS52YWwoKT09PScnfHxhLl9maWVsZD09PShiPT09LTE/MDpNYXRoLm1heCgxLGEuX3NlY29uZEZpZWxkLGEuX2FtcG1GaWVsZCkpKTtpZighZCl7YS5fZmllbGQrPWJ9dGhpcy5fc2hvd0ZpZWxkKGEpO2EuX2xhc3RDaHI9Jyc7cmV0dXJuKGQmJmMpfSxfYWRqdXN0RmllbGQ6ZnVuY3Rpb24oYSxiKXtpZihhLmVsZW0udmFsKCk9PT0nJyl7Yj0wfWlmKGEub3B0aW9ucy51bmxpbWl0ZWRIb3Vycyl7dGhpcy5fc2V0VGltZShhLFthLl9zZWxlY3RlZEhvdXIrKGEuX2ZpZWxkPT09MD9iKmEub3B0aW9ucy50aW1lU3RlcHNbMF06MCksYS5fc2VsZWN0ZWRNaW51dGUrKGEuX2ZpZWxkPT09MT9iKmEub3B0aW9ucy50aW1lU3RlcHNbMV06MCksYS5fc2VsZWN0ZWRTZWNvbmQrKGEuX2ZpZWxkPT09YS5fc2Vjb25kRmllbGQ/YiphLm9wdGlvbnMudGltZVN0ZXBzWzJdOjApXSl9ZWxzZXt0aGlzLl9zZXRUaW1lKGEsbmV3IERhdGUoMCwwLDAsYS5fc2VsZWN0ZWRIb3VyKyhhLl9maWVsZD09PTA/YiphLm9wdGlvbnMudGltZVN0ZXBzWzBdOjApKyhhLl9maWVsZD09PWEuX2FtcG1GaWVsZD9iKjEyOjApLGEuX3NlbGVjdGVkTWludXRlKyhhLl9maWVsZD09PTE/YiphLm9wdGlvbnMudGltZVN0ZXBzWzFdOjApLGEuX3NlbGVjdGVkU2Vjb25kKyhhLl9maWVsZD09PWEuX3NlY29uZEZpZWxkP2IqYS5vcHRpb25zLnRpbWVTdGVwc1syXTowKSkpfX0sX3NldFRpbWU6ZnVuY3Rpb24oYSxiKXtpZihhLm9wdGlvbnMudW5saW1pdGVkSG91cnMmJiQuaXNBcnJheShiKSl7dmFyIGM9Yn1lbHNle2I9dGhpcy5fZGV0ZXJtaW5lVGltZShiLGEpO3ZhciBjPShiP1tiLmdldEhvdXJzKCksYi5nZXRNaW51dGVzKCksYi5nZXRTZWNvbmRzKCldOm51bGwpfWM9dGhpcy5fY29uc3RyYWluVGltZShhLGMpO2I9bmV3IERhdGUoMCwwLDAsY1swXSxjWzFdLGNbMl0pO3ZhciBiPXRoaXMuX25vcm1hbGlzZVRpbWUoYik7dmFyIGQ9dGhpcy5fbm9ybWFsaXNlVGltZSh0aGlzLl9kZXRlcm1pbmVUaW1lKGEub3B0aW9ucy5taW5UaW1lLGEpKTt2YXIgZT10aGlzLl9ub3JtYWxpc2VUaW1lKHRoaXMuX2RldGVybWluZVRpbWUoYS5vcHRpb25zLm1heFRpbWUsYSkpO2lmKGEub3B0aW9ucy51bmxpbWl0ZWRIb3Vycyl7d2hpbGUoY1syXTwwKXtjWzJdKz02MDtjWzFdLS19d2hpbGUoY1syXT41OSl7Y1syXS09NjA7Y1sxXSsrfXdoaWxlKGNbMV08MCl7Y1sxXSs9NjA7Y1swXS0tfXdoaWxlKGNbMV0+NTkpe2NbMV0tPTYwO2NbMF0rK31kPShhLm9wdGlvbnMubWluVGltZSE9bnVsbCYmJC5pc0FycmF5KGEub3B0aW9ucy5taW5UaW1lKSk/YS5vcHRpb25zLm1pblRpbWU6WzAsMCwwXTtpZihjWzBdPGRbMF0pe2M9ZC5zbGljZSgwLDMpfWVsc2UgaWYoY1swXT09PWRbMF0pe2lmKGNbMV08ZFsxXSl7Y1sxXT1kWzFdO2NbMl09ZFsyXX1lbHNlIGlmKGNbMV09PT1kWzFdKXtpZihjWzJdPGRbMl0pe2NbMl09ZFsyXX19fWlmKGEub3B0aW9ucy5tYXhUaW1lIT1udWxsJiYkLmlzQXJyYXkoYS5vcHRpb25zLm1heFRpbWUpKXtpZihjWzBdPmEub3B0aW9ucy5tYXhUaW1lWzBdKXtjPWEub3B0aW9ucy5tYXhUaW1lLnNsaWNlKDAsMyl9ZWxzZSBpZihjWzBdPT09YS5vcHRpb25zLm1heFRpbWVbMF0pe2lmKGNbMV0+YS5vcHRpb25zLm1heFRpbWVbMV0pe2NbMV09YS5vcHRpb25zLm1heFRpbWVbMV07Y1syXT1hLm9wdGlvbnMubWF4VGltZVsyXX1lbHNlIGlmKGNbMV09PT1hLm9wdGlvbnMubWF4VGltZVsxXSl7aWYoY1syXT5hLm9wdGlvbnMubWF4VGltZVsyXSl7Y1syXT1hLm9wdGlvbnMubWF4VGltZVsyXX19fX19ZWxzZXtpZihkJiZlJiZkPmUpe2lmKGI8ZCYmYj5lKXtiPShNYXRoLmFicyhiLWQpPE1hdGguYWJzKGItZSk/ZDplKX19ZWxzZXtiPShkJiZiPGQ/ZDooZSYmYj5lP2U6YikpfWNbMF09Yi5nZXRIb3VycygpO2NbMV09Yi5nZXRNaW51dGVzKCk7Y1syXT1iLmdldFNlY29uZHMoKX1pZigkLmlzRnVuY3Rpb24oYS5vcHRpb25zLmJlZm9yZVNldFRpbWUpKXtiPWEub3B0aW9ucy5iZWZvcmVTZXRUaW1lLmFwcGx5KGEuZWxlbVswXSxbdGhpcy5nZXRUaW1lKGEuZWxlbVswXSksYixkLGVdKTtjWzBdPWIuZ2V0SG91cnMoKTtjWzFdPWIuZ2V0TWludXRlcygpO2NbMl09Yi5nZXRTZWNvbmRzKCl9YS5fc2VsZWN0ZWRIb3VyPWNbMF07YS5fc2VsZWN0ZWRNaW51dGU9Y1sxXTthLl9zZWxlY3RlZFNlY29uZD1jWzJdO3RoaXMuX3Nob3dUaW1lKGEpfSxfZGV0ZXJtaW5lVGltZTpmdW5jdGlvbihpLGope3ZhciBrPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBEYXRlKCk7Yi5zZXRUaW1lKGIuZ2V0VGltZSgpK2EqMTAwMCk7cmV0dXJuIGJ9O3ZhciBsPWZ1bmN0aW9uKGEpe3ZhciBiPW8uX2V4dHJhY3RUaW1lKGosYSk7dmFyIGM9bmV3IERhdGUoKTt2YXIgZD0oYj9iWzBdOmMuZ2V0SG91cnMoKSk7dmFyIGU9KGI/YlsxXTpjLmdldE1pbnV0ZXMoKSk7dmFyIGY9KGI/YlsyXTpjLmdldFNlY29uZHMoKSk7aWYoIWIpe3ZhciBnPS8oWystXT9bMC05XSspXFxzKihzfFN8bXxNfGh8SCk/L2c7dmFyIGg9Zy5leGVjKGEpO3doaWxlKGgpe3N3aXRjaChoWzJdfHwncycpe2Nhc2Uncyc6Y2FzZSdTJzpmKz1wYXJzZUludChoWzFdLDEwKTticmVhaztjYXNlJ20nOmNhc2UnTSc6ZSs9cGFyc2VJbnQoaFsxXSwxMCk7YnJlYWs7Y2FzZSdoJzpjYXNlJ0gnOmQrPXBhcnNlSW50KGhbMV0sMTApO2JyZWFrfWg9Zy5leGVjKGEpfX1jPW5ldyBEYXRlKDAsMCwxMCxkLGUsZiwwKTtpZigvXiEvLnRlc3QoYSkpe2lmKGMuZ2V0RGF0ZSgpPjEwKXtjPW5ldyBEYXRlKDAsMCwxMCwyMyw1OSw1OSl9ZWxzZSBpZihjLmdldERhdGUoKTwxMCl7Yz1uZXcgRGF0ZSgwLDAsMTAsMCwwLDApfX1yZXR1cm4gY307dmFyIG09ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBEYXRlKDAsMCwwLGFbMF0sYVsxXXx8MCxhWzJdfHwwLDApfTtyZXR1cm4oaT8odHlwZW9mIGk9PT0nc3RyaW5nJz9sKGkpOih0eXBlb2YgaT09PSdudW1iZXInP2soaSk6KCQuaXNBcnJheShpKT9tKGkpOmkpKSk6bnVsbCl9LF9ub3JtYWxpc2VUaW1lOmZ1bmN0aW9uKGEpe2lmKCFhKXtyZXR1cm4gbnVsbH1hLnNldEZ1bGxZZWFyKDE5MDApO2Euc2V0TW9udGgoMCk7YS5zZXREYXRlKDApO3JldHVybiBhfX0pO3ZhciBvPSQudGltZUVudHJ5fSkoalF1ZXJ5KTsiLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4iLCIvKiBqc2hpbnQgZm9yaW46dHJ1ZSwgbm9hcmc6dHJ1ZSwgbm9lbXB0eTp0cnVlLCBlcWVxZXE6dHJ1ZSwgYm9zczp0cnVlLCB1bmRlZjp0cnVlLCBjdXJseTp0cnVlLCBicm93c2VyOnRydWUsIGpxdWVyeTp0cnVlICovXG4vKlxuICogalF1ZXJ5IE11bHRpU2VsZWN0IFVJIFdpZGdldCAyLjAuMVxuICogQ29weXJpZ2h0IChjKSAyMDEyIEVyaWMgSHluZHNcbiAqXG4gKiBodHRwOi8vd3d3LmVyaWNoeW5kcy5jb20vanF1ZXJ5L2pxdWVyeS11aS1tdWx0aXNlbGVjdC13aWRnZXQvXG4gKlxuICogRGVwZW5kczpcbiAqICAgLSBqUXVlcnkgMS40LjIrXG4gKiAgIC0galF1ZXJ5IFVJIDEuMTEgd2lkZ2V0IGZhY3RvcnlcbiAqXG4gKiBPcHRpb25hbDpcbiAqICAgLSBqUXVlcnkgVUkgZWZmZWN0c1xuICogICAtIGpRdWVyeSBVSSBwb3NpdGlvbiB1dGlsaXR5XG4gKlxuICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCBHUEwgbGljZW5zZXM6XG4gKiAgIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwXG4gKiAgIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwuaHRtbFxuICpcbiAqL1xuKGZ1bmN0aW9uKCQsIHVuZGVmaW5lZCkge1xuICAvLyBDb3VudGVyIHVzZWQgdG8gcHJldmVudCBjb2xsaXNpb25zXG4gIHZhciBtdWx0aXNlbGVjdElEID0gMDtcbiAgdmFyICRkb2MgPSAkKGRvY3VtZW50KTtcblxuICAkLndpZGdldChcImVjaC5tdWx0aXNlbGVjdFwiLCB7XG5cbiAgICAvLyBkZWZhdWx0IG9wdGlvbnNcbiAgICBvcHRpb25zOiB7XG4gICAgICBoZWFkZXI6IHRydWUsXG4gICAgICBoZWlnaHQ6IDE3NSxcbiAgICAgIG1pbldpZHRoOiAyMjUsXG4gICAgICBjbGFzc2VzOiAnJyxcbiAgICAgIGNoZWNrQWxsVGV4dDogJ0NoZWNrIGFsbCcsXG4gICAgICB1bmNoZWNrQWxsVGV4dDogJ1VuY2hlY2sgYWxsJyxcbiAgICAgIG5vbmVTZWxlY3RlZFRleHQ6ICdTZWxlY3Qgb3B0aW9ucycsXG4gICAgICBzaG93Q2hlY2tBbGw6IHRydWUsXG4gICAgICBzaG93VW5jaGVja0FsbDogdHJ1ZSxcbiAgICAgIHNlbGVjdGVkVGV4dDogJyMgc2VsZWN0ZWQnLFxuICAgICAgc2VsZWN0ZWRMaXN0OiAwLFxuICAgICAgY2xvc2VJY29uOiAndWktaWNvbi1jaXJjbGUtY2xvc2UnLFxuICAgICAgc2hvdzogbnVsbCxcbiAgICAgIGhpZGU6IG51bGwsXG4gICAgICBhdXRvT3BlbjogZmFsc2UsXG4gICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgIHBvc2l0aW9uOiB7fSxcbiAgICAgIGFwcGVuZFRvOiBudWxsLFxuICAgICAgbWVudVdpZHRoOm51bGwsXG4gICAgICBzZWxlY3RlZExpc3RTZXBhcmF0b3I6ICcsICcsXG4gICAgICBkaXNhYmxlSW5wdXRzT25Ub2dnbGU6IHRydWUsXG4gICAgICBncm91cENvbHVtbnM6IGZhbHNlXG4gICAgfSxcblxuICAgIF9nZXRBcHBlbmRFbDogZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgZWxlbWVudCA9IHRoaXMub3B0aW9ucy5hcHBlbmRUbztcbiAgICAgIGlmKGVsZW1lbnQpIHtcbiAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQuanF1ZXJ5IHx8IGVsZW1lbnQubm9kZVR5cGUgPyAkKGVsZW1lbnQpIDogdGhpcy5kb2N1bWVudC5maW5kKGVsZW1lbnQpLmVxKDApO1xuICAgICAgfVxuICAgICAgaWYoIWVsZW1lbnQgfHwgIWVsZW1lbnRbMF0pIHtcbiAgICAgICAgZWxlbWVudCA9IHRoaXMuZWxlbWVudC5jbG9zZXN0KFwiLnVpLWZyb250LCBkaWFsb2dcIik7XG4gICAgICB9XG4gICAgICBpZighZWxlbWVudC5sZW5ndGgpIHtcbiAgICAgICAgZWxlbWVudCA9IHRoaXMuZG9jdW1lbnRbMF0uYm9keTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBlbGVtZW50O1xuICAgIH0sXG5cbiAgICBfY3JlYXRlOiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBlbCA9IHRoaXMuZWxlbWVudDtcbiAgICAgIHZhciBvID0gdGhpcy5vcHRpb25zO1xuXG4gICAgICB0aGlzLnNwZWVkID0gJC5meC5zcGVlZHMuX2RlZmF1bHQ7IC8vIGRlZmF1bHQgc3BlZWQgZm9yIGVmZmVjdHNcbiAgICAgIHRoaXMuX2lzT3BlbiA9IGZhbHNlOyAvLyBhc3N1bWUgbm9cbiAgICAgIHRoaXMuaW5wdXRJZENvdW50ZXIgPSAwO1xuXG4gICAgICAvLyBjcmVhdGUgYSB1bmlxdWUgbmFtZXNwYWNlIGZvciBldmVudHMgdGhhdCB0aGUgd2lkZ2V0XG4gICAgICAvLyBmYWN0b3J5IGNhbm5vdCB1bmJpbmQgYXV0b21hdGljYWxseS4gVXNlIGV2ZW50TmFtZXNwYWNlIGlmIG9uXG4gICAgICAvLyBqUXVlcnkgVUkgMS45KywgYW5kIG90aGVyd2lzZSBmYWxsYmFjayB0byBhIGN1c3RvbSBzdHJpbmcuXG4gICAgICB0aGlzLl9uYW1lc3BhY2VJRCA9IHRoaXMuZXZlbnROYW1lc3BhY2UgfHwgKCdtdWx0aXNlbGVjdCcgKyBtdWx0aXNlbGVjdElEKTtcbiAgICAgIC8vIGJ1bXAgdW5pcXVlIElEIGFmdGVyIGFzc2lnbmluZyBpdCB0byB0aGUgd2lkZ2V0IGluc3RhbmNlXG4gICAgICB0aGlzLm11bHRpc2VsZWN0SUQgPSBtdWx0aXNlbGVjdElEKys7XG5cbiAgICAgIHZhciBidXR0b24gPSAodGhpcy5idXR0b24gPSAkKCc8YnV0dG9uIHR5cGU9XCJidXR0b25cIj48c3BhbiBjbGFzcz1cInVpLWljb24gdWktaWNvbi10cmlhbmdsZS0xLXNcIj48L3NwYW4+PC9idXR0b24+JykpXG4gICAgICAgIC5hZGRDbGFzcygndWktbXVsdGlzZWxlY3QgdWktd2lkZ2V0IHVpLXN0YXRlLWRlZmF1bHQgdWktY29ybmVyLWFsbCcpXG4gICAgICAgIC5hZGRDbGFzcyhvLmNsYXNzZXMpXG4gICAgICAgIC5hdHRyKHsgJ3RpdGxlJzplbC5hdHRyKCd0aXRsZScpLCAndGFiSW5kZXgnOmVsLmF0dHIoJ3RhYkluZGV4JyksICdpZCc6IGVsLmF0dHIoJ2lkJykgPyBlbC5hdHRyKCdpZCcpICArICdfbXMnIDogbnVsbCB9KVxuICAgICAgICAucHJvcCgnYXJpYS1oYXNwb3B1cCcsIHRydWUpXG4gICAgICAgIC5pbnNlcnRBZnRlcihlbCk7XG5cbiAgICAgICAgdGhpcy5idXR0b25sYWJlbCA9ICQoJzxzcGFuIC8+JylcbiAgICAgICAgICAuaHRtbChvLm5vbmVTZWxlY3RlZFRleHQpXG4gICAgICAgICAgLmFwcGVuZFRvKGJ1dHRvbik7XG5cbiAgICAgICAgdGhpcy5tZW51ID0gJCgnPGRpdiAvPicpXG4gICAgICAgICAgLmFkZENsYXNzKCd1aS1tdWx0aXNlbGVjdC1tZW51IHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYWxsJylcbiAgICAgICAgICAuYWRkQ2xhc3Moby5jbGFzc2VzKVxuICAgICAgICAgIC5hcHBlbmRUbyh0aGlzLl9nZXRBcHBlbmRFbCgpKTtcblxuICAgICAgICB0aGlzLmhlYWRlciA9ICQoJzxkaXYgLz4nKVxuICAgICAgICAgIC5hZGRDbGFzcygndWktd2lkZ2V0LWhlYWRlciB1aS1jb3JuZXItYWxsIHVpLW11bHRpc2VsZWN0LWhlYWRlciB1aS1oZWxwZXItY2xlYXJmaXgnKVxuICAgICAgICAgIC5hcHBlbmRUbyh0aGlzLm1lbnUpO1xuXG4gICAgICAgIHRoaXMuaGVhZGVyTGlua0NvbnRhaW5lciA9ICQoJzx1bCAvPicpXG4gICAgICAgICAgLmFkZENsYXNzKCd1aS1oZWxwZXItcmVzZXQnKVxuICAgICAgICAgIC5odG1sKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgaWYoby5oZWFkZXIgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgdmFyIGhlYWRlcl9saXMgPSAnJztcbiAgICAgICAgICAgICAgaWYoby5zaG93Q2hlY2tBbGwpIHtcbiAgICAgICAgICAgICAgICBoZWFkZXJfbGlzID0gJzxsaT48YSBjbGFzcz1cInVpLW11bHRpc2VsZWN0LWFsbFwiIGhyZWY9XCIjXCI+PHNwYW4gY2xhc3M9XCJ1aS1pY29uIHVpLWljb24tY2hlY2tcIj48L3NwYW4+PHNwYW4+JyArIG8uY2hlY2tBbGxUZXh0ICsgJzwvc3Bhbj48L2E+PC9saT4nO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmKG8uc2hvd1VuY2hlY2tBbGwpIHtcbiAgICAgICAgICAgICAgICBoZWFkZXJfbGlzICs9ICc8bGk+PGEgY2xhc3M9XCJ1aS1tdWx0aXNlbGVjdC1ub25lXCIgaHJlZj1cIiNcIj48c3BhbiBjbGFzcz1cInVpLWljb24gdWktaWNvbi1jbG9zZXRoaWNrXCI+PC9zcGFuPjxzcGFuPicgKyBvLnVuY2hlY2tBbGxUZXh0ICsgJzwvc3Bhbj48L2E+PC9saT4nO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBoZWFkZXJfbGlzO1xuICAgICAgICAgICAgfSBlbHNlIGlmKHR5cGVvZiBvLmhlYWRlciA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICByZXR1cm4gJzxsaT4nICsgby5oZWFkZXIgKyAnPC9saT4nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmFwcGVuZCgnPGxpIGNsYXNzPVwidWktbXVsdGlzZWxlY3QtY2xvc2VcIj48YSBocmVmPVwiI1wiIGNsYXNzPVwidWktbXVsdGlzZWxlY3QtY2xvc2VcIj48c3BhbiBjbGFzcz1cInVpLWljb24gJytvLmNsb3NlSWNvbisnXCI+PC9zcGFuPjwvYT48L2xpPicpXG4gICAgICAgICAgLmFwcGVuZFRvKHRoaXMuaGVhZGVyKTtcblxuICAgICAgICB2YXIgY2hlY2tib3hDb250YWluZXIgPSAodGhpcy5jaGVja2JveENvbnRhaW5lciA9ICQoJzx1bCAvPicpKVxuICAgICAgICAgIC5hZGRDbGFzcygndWktbXVsdGlzZWxlY3QtY2hlY2tib3hlcyB1aS1oZWxwZXItcmVzZXQnKVxuICAgICAgICAgIC5hcHBlbmRUbyh0aGlzLm1lbnUpO1xuXG4gICAgICAgIC8vIHBlcmZvcm0gZXZlbnQgYmluZGluZ3NcbiAgICAgICAgdGhpcy5fYmluZEV2ZW50cygpO1xuXG4gICAgICAgIC8vIGJ1aWxkIG1lbnVcbiAgICAgICAgdGhpcy5yZWZyZXNoKHRydWUpO1xuXG4gICAgICAgIC8vIHNvbWUgYWRkbC4gbG9naWMgZm9yIHNpbmdsZSBzZWxlY3RzXG4gICAgICAgIGlmKCFvLm11bHRpcGxlKSB7XG4gICAgICAgICAgdGhpcy5tZW51LmFkZENsYXNzKCd1aS1tdWx0aXNlbGVjdC1zaW5nbGUnKTtcbiAgICAgICAgfVxuICAgICAgICBlbC5oaWRlKCk7XG4gICAgfSxcblxuICAgIF9pbml0OiBmdW5jdGlvbigpIHtcbiAgICAgIGlmKHRoaXMub3B0aW9ucy5oZWFkZXIgPT09IGZhbHNlKSB7XG4gICAgICAgIHRoaXMuaGVhZGVyLmhpZGUoKTtcbiAgICAgIH1cbiAgICAgIGlmKCF0aGlzLm9wdGlvbnMubXVsdGlwbGUpIHtcbiAgICAgICAgdGhpcy5oZWFkZXJMaW5rQ29udGFpbmVyLmZpbmQoJy51aS1tdWx0aXNlbGVjdC1hbGwsIC51aS1tdWx0aXNlbGVjdC1ub25lJykuaGlkZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5oZWFkZXJMaW5rQ29udGFpbmVyLmZpbmQoJy51aS1tdWx0aXNlbGVjdC1hbGwsIC51aS1tdWx0aXNlbGVjdC1ub25lJykuc2hvdygpO1xuICAgICAgfVxuICAgICAgaWYodGhpcy5vcHRpb25zLmF1dG9PcGVuKSB7XG4gICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgfVxuICAgICAgaWYodGhpcy5lbGVtZW50LmlzKCc6ZGlzYWJsZWQnKSkge1xuICAgICAgICB0aGlzLmRpc2FibGUoKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgX21ha2VPcHRpb246IGZ1bmN0aW9uKG9wdGlvbikge1xuICAgICAgdmFyIHRpdGxlID0gb3B0aW9uLnRpdGxlID8gb3B0aW9uLnRpdGxlIDogbnVsbDtcbiAgICAgIHZhciB2YWx1ZSA9IG9wdGlvbi52YWx1ZTtcbiAgICAgIHZhciBpZCA9IHRoaXMuZWxlbWVudC5hdHRyKCdpZCcpIHx8IHRoaXMubXVsdGlzZWxlY3RJRDsgLy8gdW5pcXVlIElEIGZvciB0aGUgbGFiZWwgJiBvcHRpb24gdGFnc1xuICAgICAgdmFyIGlucHV0SUQgPSAndWktbXVsdGlzZWxlY3QtJyArIHRoaXMubXVsdGlzZWxlY3RJRCArICctJyArIChvcHRpb24uaWQgfHwgaWQgKyAnLW9wdGlvbi0nICsgdGhpcy5pbnB1dElkQ291bnRlcisrKTtcbiAgICAgIHZhciBpc0Rpc2FibGVkID0gb3B0aW9uLmRpc2FibGVkO1xuICAgICAgdmFyIGlzU2VsZWN0ZWQgPSBvcHRpb24uc2VsZWN0ZWQ7XG4gICAgICB2YXIgbGFiZWxDbGFzc2VzID0gWyAndWktY29ybmVyLWFsbCcgXTtcbiAgICAgIHZhciBsaUNsYXNzZXMgPSBbXTtcbiAgICAgIHZhciBvID0gdGhpcy5vcHRpb25zO1xuXG4gICAgICBpZihpc0Rpc2FibGVkKSB7XG4gICAgICAgIGxpQ2xhc3Nlcy5wdXNoKCd1aS1tdWx0aXNlbGVjdC1kaXNhYmxlZCcpO1xuICAgICAgICBsYWJlbENsYXNzZXMucHVzaCgndWktc3RhdGUtZGlzYWJsZWQnKTtcbiAgICAgIH1cbiAgICAgIGlmKG9wdGlvbi5jbGFzc05hbWUpIHtcbiAgICAgICAgbGlDbGFzc2VzLnB1c2gob3B0aW9uLmNsYXNzTmFtZSk7XG4gICAgICB9XG4gICAgICBpZihpc1NlbGVjdGVkICYmICFvLm11bHRpcGxlKSB7XG4gICAgICAgIGxhYmVsQ2xhc3Nlcy5wdXNoKCd1aS1zdGF0ZS1hY3RpdmUnKTtcbiAgICAgIH1cblxuICAgICAgdmFyICRpdGVtID0gJChcIjxsaS8+XCIpLmFkZENsYXNzKGxpQ2xhc3Nlcy5qb2luKCcgJykpO1xuICAgICAgdmFyICRsYWJlbCA9ICQoXCI8bGFiZWwvPlwiKS5hdHRyKHtcbiAgICAgICAgXCJmb3JcIjogaW5wdXRJRCxcbiAgICAgICAgXCJ0aXRsZVwiOiB0aXRsZVxuICAgICAgfSkuYWRkQ2xhc3MobGFiZWxDbGFzc2VzLmpvaW4oJyAnKSkuYXBwZW5kVG8oJGl0ZW0pO1xuICAgICAgdmFyICRpbnB1dCA9ICQoXCI8aW5wdXQvPlwiKS5hdHRyKHtcbiAgICAgICAgXCJuYW1lXCI6IFwibXVsdGlzZWxlY3RfXCIgKyBpZCxcbiAgICAgICAgXCJ0eXBlXCI6IG8ubXVsdGlwbGUgPyBcImNoZWNrYm94XCIgOiBcInJhZGlvXCIsXG4gICAgICAgIFwidmFsdWVcIjogdmFsdWUsXG4gICAgICAgIFwidGl0bGVcIjogdGl0bGUsXG4gICAgICAgIFwiaWRcIjogaW5wdXRJRCxcbiAgICAgICAgXCJjaGVja2VkXCI6IGlzU2VsZWN0ZWQgPyBcImNoZWNrZWRcIiA6IG51bGwsXG4gICAgICAgIFwiYXJpYS1zZWxlY3RlZFwiOiBpc1NlbGVjdGVkID8gXCJ0cnVlXCIgOiBudWxsLFxuICAgICAgICBcImRpc2FibGVkXCI6IGlzRGlzYWJsZWQgPyBcImRpc2FibGVkXCIgOiBudWxsLFxuICAgICAgICBcImFyaWEtZGlzYWJsZWRcIjogaXNEaXNhYmxlZCA/IFwidHJ1ZVwiIDogbnVsbFxuICAgICAgfSkuZGF0YSgkKG9wdGlvbikuZGF0YSgpKS5hcHBlbmRUbygkbGFiZWwpO1xuXG4gICAgICAkKFwiPHNwYW4vPlwiKS50ZXh0KCQob3B0aW9uKS50ZXh0KCkpLmFwcGVuZFRvKCRsYWJlbCk7XG5cbiAgICAgIHJldHVybiAkaXRlbTtcbiAgICB9LFxuXG4gICAgX2J1aWxkT3B0aW9uTGlzdDogZnVuY3Rpb24oZWxlbWVudCwgJGFwcGVuZFRvKSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICBlbGVtZW50LmNoaWxkcmVuKCkuZWFjaChmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyICR0aGlzID0gJCh0aGlzKTtcbiAgICAgICAgaWYodGhpcy50YWdOYW1lID09PSAnT1BUR1JPVVAnKSB7XG4gICAgICAgICAgdmFyICRvcHRpb25Hcm91cCA9ICQoXCI8dWwvPlwiKS5hZGRDbGFzcygndWktbXVsdGlzZWxlY3Qtb3B0Z3JvdXAgJyArIHRoaXMuY2xhc3NOYW1lKS5hcHBlbmRUbygkYXBwZW5kVG8pO1xuICAgICAgICAgIGlmKHNlbGYub3B0aW9ucy5ncm91cENvbHVtbnMpIHtcbiAgICAgICAgICAgICRvcHRpb25Hcm91cC5hZGRDbGFzcyhcInVpLW11bHRpc2VsZWN0LWNvbHVtbnNcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgICQoXCI8YS8+XCIpLnRleHQodGhpcy5nZXRBdHRyaWJ1dGUoJ2xhYmVsJykpLmFwcGVuZFRvKCRvcHRpb25Hcm91cCk7XG4gICAgICAgICAgc2VsZi5fYnVpbGRPcHRpb25MaXN0KCR0aGlzLCAkb3B0aW9uR3JvdXApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciAkbGlzdEl0ZW0gPSBzZWxmLl9tYWtlT3B0aW9uKHRoaXMpLmFwcGVuZFRvKCRhcHBlbmRUbyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgfSxcblxuICAgIHJlZnJlc2g6IGZ1bmN0aW9uKGluaXQpIHtcbiAgICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAgIHZhciBlbCA9IHRoaXMuZWxlbWVudDtcbiAgICAgIHZhciBvID0gdGhpcy5vcHRpb25zO1xuICAgICAgdmFyIG1lbnUgPSB0aGlzLm1lbnU7XG4gICAgICB2YXIgY2hlY2tib3hDb250YWluZXIgPSB0aGlzLmNoZWNrYm94Q29udGFpbmVyO1xuICAgICAgdmFyIGh0bWwgPSBcIlwiO1xuICAgICAgdmFyICRkcm9wZG93biA9ICQoXCI8dWwvPlwiKS5hZGRDbGFzcygndWktbXVsdGlzZWxlY3QtY2hlY2tib3hlcyB1aS1oZWxwZXItcmVzZXQnKTtcbiAgICAgIHRoaXMuaW5wdXRJZENvdW50ZXIgPSAwO1xuXG5cbiAgICAgIC8vIHVwZGF0ZSBoZWFkZXIgbGluayBjb250YWluZXIgdmlzaWJpbGl0eSBpZiBuZWVkZWRcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGVhZGVyKSB7XG4gICAgICAgIGlmKCF0aGlzLm9wdGlvbnMubXVsdGlwbGUpIHtcbiAgICAgICAgICB0aGlzLmhlYWRlckxpbmtDb250YWluZXIuZmluZCgnLnVpLW11bHRpc2VsZWN0LWFsbCwgLnVpLW11bHRpc2VsZWN0LW5vbmUnKS5oaWRlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5oZWFkZXJMaW5rQ29udGFpbmVyLmZpbmQoJy51aS1tdWx0aXNlbGVjdC1hbGwsIC51aS1tdWx0aXNlbGVjdC1ub25lJykuc2hvdygpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2J1aWxkT3B0aW9uTGlzdChlbCwgJGRyb3Bkb3duKTtcblxuICAgICAgdGhpcy5tZW51LmZpbmQoXCIudWktbXVsdGlzZWxlY3QtY2hlY2tib3hlc1wiKS5yZW1vdmUoKTtcbiAgICAgIHRoaXMubWVudS5hcHBlbmQoJGRyb3Bkb3duKTtcblxuICAgICAgLy8gY2FjaGUgc29tZSBtb2FyIHVzZWZ1bCBlbGVtZW50c1xuICAgICAgdGhpcy5sYWJlbHMgPSBtZW51LmZpbmQoJ2xhYmVsJyk7XG4gICAgICB0aGlzLmlucHV0cyA9IHRoaXMubGFiZWxzLmNoaWxkcmVuKCdpbnB1dCcpO1xuXG4gICAgICB0aGlzLl9zZXRCdXR0b25XaWR0aCgpO1xuXG4gICAgICB0aGlzLnVwZGF0ZSh0cnVlKTtcblxuICAgICAgLy8gYnJvYWRjYXN0IHJlZnJlc2ggZXZlbnQ7IHVzZWZ1bCBmb3Igd2lkZ2V0c1xuICAgICAgaWYoIWluaXQpIHtcbiAgICAgICAgdGhpcy5fdHJpZ2dlcigncmVmcmVzaCcpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICAvLyB1cGRhdGVzIHRoZSBidXR0b24gdGV4dC4gY2FsbCByZWZyZXNoKCkgdG8gcmVidWlsZFxuICAgIHVwZGF0ZTogZnVuY3Rpb24oaXNEZWZhdWx0KSB7XG4gICAgICB2YXIgbyA9IHRoaXMub3B0aW9ucztcbiAgICAgIHZhciAkaW5wdXRzID0gdGhpcy5pbnB1dHM7XG4gICAgICB2YXIgJGNoZWNrZWQgPSAkaW5wdXRzLmZpbHRlcignOmNoZWNrZWQnKTtcbiAgICAgIHZhciBudW1DaGVja2VkID0gJGNoZWNrZWQubGVuZ3RoO1xuICAgICAgdmFyIHZhbHVlO1xuXG4gICAgICBpZihudW1DaGVja2VkID09PSAwKSB7XG4gICAgICAgIHZhbHVlID0gby5ub25lU2VsZWN0ZWRUZXh0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYoJC5pc0Z1bmN0aW9uKG8uc2VsZWN0ZWRUZXh0KSkge1xuICAgICAgICAgIHZhbHVlID0gby5zZWxlY3RlZFRleHQuY2FsbCh0aGlzLCBudW1DaGVja2VkLCAkaW5wdXRzLmxlbmd0aCwgJGNoZWNrZWQuZ2V0KCkpO1xuICAgICAgICB9IGVsc2UgaWYoL1xcZC8udGVzdChvLnNlbGVjdGVkTGlzdCkgJiYgby5zZWxlY3RlZExpc3QgPiAwICYmIG51bUNoZWNrZWQgPD0gby5zZWxlY3RlZExpc3QpIHtcbiAgICAgICAgICB2YWx1ZSA9ICRjaGVja2VkLm1hcChmdW5jdGlvbigpIHsgcmV0dXJuICQodGhpcykubmV4dCgpLnRleHQoKTsgfSkuZ2V0KCkuam9pbihvLnNlbGVjdGVkTGlzdFNlcGFyYXRvcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFsdWUgPSBvLnNlbGVjdGVkVGV4dC5yZXBsYWNlKCcjJywgbnVtQ2hlY2tlZCkucmVwbGFjZSgnIycsICRpbnB1dHMubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLl9zZXRCdXR0b25WYWx1ZSh2YWx1ZSk7XG4gICAgICBpZihpc0RlZmF1bHQpIHtcbiAgICAgICAgdGhpcy5idXR0b25bMF0uZGVmYXVsdFZhbHVlID0gdmFsdWU7XG4gICAgICB9XG5cbiAgICB9LFxuXG4gICAgLy8gdGhpcyBleGlzdHMgYXMgYSBzZXBhcmF0ZSBtZXRob2Qgc28gdGhhdCB0aGUgZGV2ZWxvcGVyXG4gICAgLy8gY2FuIGVhc2lseSBvdmVycmlkZSBpdC5cbiAgICBfc2V0QnV0dG9uVmFsdWU6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICB0aGlzLmJ1dHRvbmxhYmVsLnRleHQodmFsdWUpO1xuICAgIH0sXG5cbiAgICBfYmluZEJ1dHRvbkV2ZW50czogZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICB2YXIgYnV0dG9uID0gdGhpcy5idXR0b247XG4gICAgICBmdW5jdGlvbiBjbGlja0hhbmRsZXIoKSB7XG4gICAgICAgIHNlbGZbIHNlbGYuX2lzT3BlbiA/ICdjbG9zZScgOiAnb3BlbicgXSgpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIC8vIHdlYmtpdCBkb2Vzbid0IGxpa2UgaXQgd2hlbiB5b3UgY2xpY2sgb24gdGhlIHNwYW4gOihcbiAgICAgIGJ1dHRvblxuICAgICAgICAuZmluZCgnc3BhbicpXG4gICAgICAgIC5iaW5kKCdjbGljay5tdWx0aXNlbGVjdCcsIGNsaWNrSGFuZGxlcik7XG5cbiAgICAgIC8vIGJ1dHRvbiBldmVudHNcbiAgICAgIGJ1dHRvbi5iaW5kKHtcbiAgICAgICAgY2xpY2s6IGNsaWNrSGFuZGxlcixcbiAgICAgICAga2V5cHJlc3M6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICBzd2l0Y2goZS53aGljaCkge1xuICAgICAgICAgICAgY2FzZSAyNzogLy8gZXNjXG4gICAgICAgICAgICBjYXNlIDM4OiAvLyB1cFxuICAgICAgICAgICAgY2FzZSAzNzogLy8gbGVmdFxuICAgICAgICAgICAgICBzZWxmLmNsb3NlKCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAzOTogLy8gcmlnaHRcbiAgICAgICAgICAgIGNhc2UgNDA6IC8vIGRvd25cbiAgICAgICAgICAgICAgc2VsZi5vcGVuKCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbW91c2VlbnRlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgaWYoIWJ1dHRvbi5oYXNDbGFzcygndWktc3RhdGUtZGlzYWJsZWQnKSkge1xuICAgICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygndWktc3RhdGUtaG92ZXInKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1vdXNlbGVhdmU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICQodGhpcykucmVtb3ZlQ2xhc3MoJ3VpLXN0YXRlLWhvdmVyJyk7XG4gICAgICAgIH0sXG4gICAgICAgIGZvY3VzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICBpZighYnV0dG9uLmhhc0NsYXNzKCd1aS1zdGF0ZS1kaXNhYmxlZCcpKSB7XG4gICAgICAgICAgICAkKHRoaXMpLmFkZENsYXNzKCd1aS1zdGF0ZS1mb2N1cycpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgYmx1cjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgJCh0aGlzKS5yZW1vdmVDbGFzcygndWktc3RhdGUtZm9jdXMnKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSxcblxuICAgIF9iaW5kTWVudUV2ZW50czogZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICAvLyBvcHRncm91cCBsYWJlbCB0b2dnbGUgc3VwcG9ydFxuICAgICAgdGhpcy5tZW51LmRlbGVnYXRlKCcudWktbXVsdGlzZWxlY3Qtb3B0Z3JvdXAgYScsICdjbGljay5tdWx0aXNlbGVjdCcsIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIHZhciAkdGhpcyA9ICQodGhpcyk7XG4gICAgICAgIHZhciAkaW5wdXRzID0gJHRoaXMucGFyZW50KCkuZmluZCgnaW5wdXQ6dmlzaWJsZTpub3QoOmRpc2FibGVkKScpO1xuICAgICAgICB2YXIgbm9kZXMgPSAkaW5wdXRzLmdldCgpO1xuICAgICAgICB2YXIgbGFiZWwgPSAkdGhpcy50ZXh0KCk7XG5cbiAgICAgICAgLy8gdHJpZ2dlciBldmVudCBhbmQgYmFpbCBpZiB0aGUgcmV0dXJuIGlzIGZhbHNlXG4gICAgICAgIGlmKHNlbGYuX3RyaWdnZXIoJ2JlZm9yZW9wdGdyb3VwdG9nZ2xlJywgZSwgeyBpbnB1dHM6bm9kZXMsIGxhYmVsOmxhYmVsIH0pID09PSBmYWxzZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRvZ2dsZSBpbnB1dHNcbiAgICAgICAgc2VsZi5fdG9nZ2xlQ2hlY2tlZChcbiAgICAgICAgICAkaW5wdXRzLmZpbHRlcignOmNoZWNrZWQnKS5sZW5ndGggIT09ICRpbnB1dHMubGVuZ3RoLFxuICAgICAgICAgICRpbnB1dHNcbiAgICAgICAgKTtcblxuICAgICAgICBzZWxmLl90cmlnZ2VyKCdvcHRncm91cHRvZ2dsZScsIGUsIHtcbiAgICAgICAgICBpbnB1dHM6IG5vZGVzLFxuICAgICAgICAgIGxhYmVsOiBsYWJlbCxcbiAgICAgICAgICBjaGVja2VkOiBub2Rlcy5sZW5ndGggPyBub2Rlc1swXS5jaGVja2VkIDogbnVsbFxuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgICAuZGVsZWdhdGUoJ2xhYmVsJywgJ21vdXNlZW50ZXIubXVsdGlzZWxlY3QnLCBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYoISQodGhpcykuaGFzQ2xhc3MoJ3VpLXN0YXRlLWRpc2FibGVkJykpIHtcbiAgICAgICAgICBzZWxmLmxhYmVscy5yZW1vdmVDbGFzcygndWktc3RhdGUtaG92ZXInKTtcbiAgICAgICAgICAkKHRoaXMpLmFkZENsYXNzKCd1aS1zdGF0ZS1ob3ZlcicpLmZpbmQoJ2lucHV0JykuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5kZWxlZ2F0ZSgnbGFiZWwnLCAna2V5ZG93bi5tdWx0aXNlbGVjdCcsIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgaWYoZS53aGljaCA9PT0gODIpIHtcbiAgICAgICAgICByZXR1cm47IC8vXCJyXCIga2V5LCBvZnRlbiB1c2VkIGZvciByZWxvYWQuXG4gICAgICAgIH1cbiAgICAgICAgaWYoZS53aGljaCA+IDExMSAmJiBlLndoaWNoIDwgMTI0KSB7XG4gICAgICAgICAgcmV0dXJuOyAvL0tleWJvYXJkIGZ1bmN0aW9uIGtleXMuXG4gICAgICAgIH1cbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBzd2l0Y2goZS53aGljaCkge1xuICAgICAgICAgIGNhc2UgOTogLy8gdGFiXG4gICAgICAgICAgICBpZihlLnNoaWZ0S2V5KSB7XG4gICAgICAgICAgICAgIHNlbGYubWVudS5maW5kKFwiLnVpLXN0YXRlLWhvdmVyXCIpLnJlbW92ZUNsYXNzKFwidWktc3RhdGUtaG92ZXJcIik7XG4gICAgICAgICAgICAgIHNlbGYuaGVhZGVyLmZpbmQoXCJsaVwiKS5sYXN0KCkuZmluZChcImFcIikuZm9jdXMoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHNlbGYuY2xvc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMjc6IC8vIGVzY1xuICAgICAgICAgICAgc2VsZi5jbG9zZSgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAzODogLy8gdXBcbiAgICAgICAgICBjYXNlIDQwOiAvLyBkb3duXG4gICAgICAgICAgY2FzZSAzNzogLy8gbGVmdFxuICAgICAgICAgIGNhc2UgMzk6IC8vIHJpZ2h0XG4gICAgICAgICAgICBzZWxmLl90cmF2ZXJzZShlLndoaWNoLCB0aGlzKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMTM6IC8vIGVudGVyXG4gICAgICAgICAgY2FzZSAzMjpcbiAgICAgICAgICAgICQodGhpcykuZmluZCgnaW5wdXQnKVswXS5jbGljaygpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSA2NTpcbiAgICAgICAgICAgIGlmKGUuYWx0S2V5KSB7XG4gICAgICAgICAgICAgIHNlbGYuY2hlY2tBbGwoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgODU6XG4gICAgICAgICAgICBpZihlLmFsdEtleSkge1xuICAgICAgICAgICAgICBzZWxmLnVuY2hlY2tBbGwoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLmRlbGVnYXRlKCdpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0sIGlucHV0W3R5cGU9XCJyYWRpb1wiXScsICdjbGljay5tdWx0aXNlbGVjdCcsIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgdmFyICR0aGlzID0gJCh0aGlzKTtcbiAgICAgICAgdmFyIHZhbCA9IHRoaXMudmFsdWU7XG4gICAgICAgIHZhciBvcHRpb25UZXh0ID0gJHRoaXMucGFyZW50KCkuZmluZChcInNwYW5cIikudGV4dCgpO1xuICAgICAgICB2YXIgY2hlY2tlZCA9IHRoaXMuY2hlY2tlZDtcbiAgICAgICAgdmFyIHRhZ3MgPSBzZWxmLmVsZW1lbnQuZmluZCgnb3B0aW9uJyk7XG5cbiAgICAgICAgLy8gYmFpbCBpZiB0aGlzIGlucHV0IGlzIGRpc2FibGVkIG9yIHRoZSBldmVudCBpcyBjYW5jZWxsZWRcbiAgICAgICAgaWYodGhpcy5kaXNhYmxlZCB8fCBzZWxmLl90cmlnZ2VyKCdjbGljaycsIGUsIHsgdmFsdWU6IHZhbCwgdGV4dDogb3B0aW9uVGV4dCwgY2hlY2tlZDogY2hlY2tlZCB9KSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gbWFrZSBzdXJlIHRoZSBpbnB1dCBoYXMgZm9jdXMuIG90aGVyd2lzZSwgdGhlIGVzYyBrZXlcbiAgICAgICAgLy8gd29uJ3QgY2xvc2UgdGhlIG1lbnUgYWZ0ZXIgY2xpY2tpbmcgYW4gaXRlbS5cbiAgICAgICAgJHRoaXMuZm9jdXMoKTtcblxuICAgICAgICAvLyB0b2dnbGUgYXJpYSBzdGF0ZVxuICAgICAgICAkdGhpcy5wcm9wKCdhcmlhLXNlbGVjdGVkJywgY2hlY2tlZCk7XG5cbiAgICAgICAgLy8gY2hhbmdlIHN0YXRlIG9uIHRoZSBvcmlnaW5hbCBvcHRpb24gdGFnc1xuICAgICAgICB0YWdzLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgICAgaWYodGhpcy52YWx1ZSA9PT0gdmFsKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkID0gY2hlY2tlZDtcbiAgICAgICAgICB9IGVsc2UgaWYoIXNlbGYub3B0aW9ucy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gc29tZSBhZGRpdGlvbmFsIHNpbmdsZSBzZWxlY3Qtc3BlY2lmaWMgbG9naWNcbiAgICAgICAgaWYoIXNlbGYub3B0aW9ucy5tdWx0aXBsZSkge1xuICAgICAgICAgIHNlbGYubGFiZWxzLnJlbW92ZUNsYXNzKCd1aS1zdGF0ZS1hY3RpdmUnKTtcbiAgICAgICAgICAkdGhpcy5jbG9zZXN0KCdsYWJlbCcpLnRvZ2dsZUNsYXNzKCd1aS1zdGF0ZS1hY3RpdmUnLCBjaGVja2VkKTtcblxuICAgICAgICAgIC8vIGNsb3NlIG1lbnVcbiAgICAgICAgICBzZWxmLmNsb3NlKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBmaXJlIGNoYW5nZSBvbiB0aGUgc2VsZWN0IGJveFxuICAgICAgICBzZWxmLmVsZW1lbnQudHJpZ2dlcihcImNoYW5nZVwiKTtcblxuICAgICAgICAvLyBzZXRUaW1lb3V0IGlzIHRvIGZpeCBtdWx0aXNlbGVjdCBpc3N1ZSAjMTQgYW5kICM0Ny4gY2F1c2VkIGJ5IGpRdWVyeSBpc3N1ZSAjMzgyN1xuICAgICAgICAvLyBodHRwOi8vYnVncy5qcXVlcnkuY29tL3RpY2tldC8zODI3XG4gICAgICAgIHNldFRpbWVvdXQoJC5wcm94eShzZWxmLnVwZGF0ZSwgc2VsZiksIDEwKTtcbiAgICAgIH0pO1xuICAgIH0sXG5cbiAgICBfYmluZEhlYWRlckV2ZW50czogZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICAvLyBoZWFkZXIgbGlua3NcbiAgICAgIHRoaXMuaGVhZGVyLmRlbGVnYXRlKCdhJywgJ2NsaWNrLm11bHRpc2VsZWN0JywgZnVuY3Rpb24oZSkge1xuICAgICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpO1xuICAgICAgICBpZigkdGhpcy5oYXNDbGFzcygndWktbXVsdGlzZWxlY3QtY2xvc2UnKSkge1xuICAgICAgICAgIHNlbGYuY2xvc2UoKTtcbiAgICAgICAgfSBlbHNlIGlmKCR0aGlzLmhhc0NsYXNzKFwidWktbXVsdGlzZWxlY3QtYWxsXCIpKSB7XG4gICAgICAgICAgc2VsZi5jaGVja0FsbCgpO1xuICAgICAgICB9IGVsc2UgaWYoJHRoaXMuaGFzQ2xhc3MoXCJ1aS1tdWx0aXNlbGVjdC1ub25lXCIpKSB7XG4gICAgICAgICAgc2VsZi51bmNoZWNrQWxsKCk7XG4gICAgICAgIH1cbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfSkuZGVsZWdhdGUoJ2EnLCAna2V5ZG93bi5tdWx0aXNlbGVjdCcsIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgc3dpdGNoKGUud2hpY2gpIHtcbiAgICAgICAgICBjYXNlIDI3OlxuICAgICAgICAgICAgc2VsZi5jbG9zZSgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSA5OlxuICAgICAgICAgICAgdmFyICR0YXJnZXQgPSAkKGUudGFyZ2V0KTtcbiAgICAgICAgICAgIGlmKChlLnNoaWZ0S2V5ICYmICEkdGFyZ2V0LnBhcmVudCgpLnByZXYoKS5sZW5ndGggJiYgIXNlbGYuaGVhZGVyLmZpbmQoXCIudWktbXVsdGlzZWxlY3QtZmlsdGVyXCIpLmxlbmd0aCkgfHwgKCEkdGFyZ2V0LnBhcmVudCgpLm5leHQoKS5sZW5ndGggJiYgIXNlbGYubGFiZWxzLmxlbmd0aCAmJiAhZS5zaGlmdEtleSkpIHtcbiAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpO1xuICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSxcblxuICAgIC8vIGJpbmRzIGV2ZW50c1xuICAgIF9iaW5kRXZlbnRzOiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgICAgdGhpcy5fYmluZEJ1dHRvbkV2ZW50cygpO1xuICAgICAgdGhpcy5fYmluZE1lbnVFdmVudHMoKTtcbiAgICAgIHRoaXMuX2JpbmRIZWFkZXJFdmVudHMoKTtcblxuICAgICAgLy8gY2xvc2UgZWFjaCB3aWRnZXQgd2hlbiBjbGlja2luZyBvbiBhbnkgb3RoZXIgZWxlbWVudC9hbnl3aGVyZSBlbHNlIG9uIHRoZSBwYWdlXG4gICAgICAkZG9jLmJpbmQoJ21vdXNlZG93bi4nICsgc2VsZi5fbmFtZXNwYWNlSUQsIGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgICAgIHZhciB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG5cbiAgICAgICAgaWYoc2VsZi5faXNPcGVuICYmXG4gICAgICAgICAgICB0YXJnZXQgIT09IHNlbGYuYnV0dG9uWzBdICYmXG4gICAgICAgICAgICB0YXJnZXQgIT09IHNlbGYubWVudVswXSAmJlxuICAgICAgICAgICAgISQuY29udGFpbnMoc2VsZi5tZW51WzBdLCB0YXJnZXQpICYmXG4gICAgICAgICAgICAhJC5jb250YWlucyhzZWxmLmJ1dHRvblswXSwgdGFyZ2V0KVxuICAgICAgICAgICkge1xuICAgICAgICAgIHNlbGYuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIC8vIGRlYWwgd2l0aCBmb3JtIHJlc2V0cy4gIHRoZSBwcm9ibGVtIGhlcmUgaXMgdGhhdCBidXR0b25zIGFyZW4ndFxuICAgICAgLy8gcmVzdG9yZWQgdG8gdGhlaXIgZGVmYXVsdFZhbHVlIHByb3Agb24gZm9ybSByZXNldCwgYW5kIHRoZSByZXNldFxuICAgICAgLy8gaGFuZGxlciBmaXJlcyBiZWZvcmUgdGhlIGZvcm0gaXMgYWN0dWFsbHkgcmVzZXQuICBkZWxheWluZyBpdCBhIGJpdFxuICAgICAgLy8gZ2l2ZXMgdGhlIGZvcm0gaW5wdXRzIHRpbWUgdG8gY2xlYXIuXG4gICAgICAkKHRoaXMuZWxlbWVudFswXS5mb3JtKS5iaW5kKCdyZXNldC4nICsgdGhpcy5fbmFtZXNwYWNlSUQsIGZ1bmN0aW9uKCkge1xuICAgICAgICBzZXRUaW1lb3V0KCQucHJveHkoc2VsZi5yZWZyZXNoLCBzZWxmKSwgMTApO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBfZ2V0TWluV2lkdGg6IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIG1pblZhbCA9IHRoaXMub3B0aW9ucy5taW5XaWR0aDtcbiAgICAgIHZhciB3aWR0aCA9IDA7XG4gICAgICBzd2l0Y2ggKHR5cGVvZiBtaW5WYWwpIHtcbiAgICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgICB3aWR0aCA9IG1pblZhbDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgICB2YXIgbGFzdENoYXIgPSBtaW5WYWxbIG1pblZhbC5sZW5ndGggLTEgXTtcbiAgICAgICAgICB3aWR0aCA9IG1pblZhbC5tYXRjaCgvXFxkKy8pO1xuICAgICAgICAgIGlmKGxhc3RDaGFyID09PSAnJScpIHtcbiAgICAgICAgICAgIHdpZHRoID0gdGhpcy5lbGVtZW50LnBhcmVudCgpLm91dGVyV2lkdGgoKSAqICh3aWR0aC8xMDApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB3aWR0aCA9IHBhcnNlSW50KG1pblZhbCwgMTApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHJldHVybiB3aWR0aDtcbiAgICB9LFxuICAgIC8vIHNldCBidXR0b24gd2lkdGhcbiAgICBfc2V0QnV0dG9uV2lkdGg6IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHdpZHRoID0gdGhpcy5fZ2V0TWluV2lkdGgoKTtcblxuICAgICAgLy8gc2V0IHdpZHRoc1xuICAgICAgdGhpcy5idXR0b24ub3V0ZXJXaWR0aCh3aWR0aCk7XG4gICAgfSxcblxuICAgIC8vIHNldCBtZW51IHdpZHRoXG4gICAgX3NldE1lbnVXaWR0aDogZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgbSA9IHRoaXMubWVudTtcbiAgICAgIHZhciB3aWR0aCA9ICh0aGlzLmJ1dHRvbi5vdXRlcldpZHRoKCkgPD0gMCkgPyB0aGlzLl9nZXRNaW5XaWR0aCgpIDogdGhpcy5idXR0b24ub3V0ZXJXaWR0aCgpO1xuICAgICAgbS5vdXRlcldpZHRoKHRoaXMub3B0aW9ucy5tZW51V2lkdGggfHwgd2lkdGgpO1xuICAgIH0sXG5cbiAgICBfc2V0TWVudUhlaWdodDogZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgaGVhZGVySGVpZ2h0ID0gdGhpcy5tZW51LmNoaWxkcmVuKFwiLnVpLW11bHRpc2VsZWN0LWhlYWRlcjp2aXNpYmxlXCIpLm91dGVySGVpZ2h0KHRydWUpO1xuICAgICAgdmFyIHVsSGVpZ2h0ID0gMDtcbiAgICAgIHRoaXMubWVudS5maW5kKFwiLnVpLW11bHRpc2VsZWN0LWNoZWNrYm94ZXMgbGksIC51aS1tdWx0aXNlbGVjdC1jaGVja2JveGVzIGFcIikuZWFjaChmdW5jdGlvbihpZHgsIGxpKSB7XG4gICAgICAgIHVsSGVpZ2h0ICs9ICQobGkpLm91dGVySGVpZ2h0KHRydWUpO1xuICAgICAgfSk7XG4gICAgICBpZih1bEhlaWdodCA+IHRoaXMub3B0aW9ucy5oZWlnaHQpIHtcbiAgICAgICAgdGhpcy5tZW51LmNoaWxkcmVuKFwiLnVpLW11bHRpc2VsZWN0LWNoZWNrYm94ZXNcIikuY3NzKFwib3ZlcmZsb3dcIiwgXCJhdXRvXCIpO1xuICAgICAgICB1bEhlaWdodCA9IHRoaXMub3B0aW9ucy5oZWlnaHQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm1lbnUuY2hpbGRyZW4oXCIudWktbXVsdGlzZWxlY3QtY2hlY2tib3hlc1wiKS5jc3MoXCJvdmVyZmxvd1wiLCBcImhpZGRlblwiKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5tZW51LmNoaWxkcmVuKFwiLnVpLW11bHRpc2VsZWN0LWNoZWNrYm94ZXNcIikuaGVpZ2h0KHVsSGVpZ2h0KTtcbiAgICAgIHRoaXMubWVudS5oZWlnaHQodWxIZWlnaHQgKyBoZWFkZXJIZWlnaHQpO1xuICAgIH0sXG5cbiAgICBfcmVzaXplTWVudTogZnVuY3Rpb24oKSB7XG4gICAgICB0aGlzLl9zZXRNZW51V2lkdGgoKTtcbiAgICAgIHRoaXMuX3NldE1lbnVIZWlnaHQoKTtcbiAgICB9LFxuXG4gICAgLy8gbW92ZSB1cCBvciBkb3duIHdpdGhpbiB0aGUgbWVudVxuICAgIF90cmF2ZXJzZTogZnVuY3Rpb24od2hpY2gsIHN0YXJ0KSB7XG4gICAgICB2YXIgJHN0YXJ0ID0gJChzdGFydCk7XG4gICAgICB2YXIgbW92ZVRvTGFzdCA9IHdoaWNoID09PSAzOCB8fCB3aGljaCA9PT0gMzc7XG5cbiAgICAgIC8vIHNlbGVjdCB0aGUgZmlyc3QgbGkgdGhhdCBpc24ndCBhbiBvcHRncm91cCBsYWJlbCAvIGRpc2FibGVkXG4gICAgICB2YXIgJG5leHQgPSAkc3RhcnQucGFyZW50KClbbW92ZVRvTGFzdCA/ICdwcmV2QWxsJyA6ICduZXh0QWxsJ10oJ2xpOm5vdCgudWktbXVsdGlzZWxlY3QtZGlzYWJsZWQsIC51aS1tdWx0aXNlbGVjdC1vcHRncm91cCk6dmlzaWJsZScpLmZpcnN0KCk7XG4gICAgICAvLyB3ZSBtaWdodCBoYXZlIHRvIGp1bXAgdG8gdGhlIG5leHQvcHJldmlvdXMgb3B0aW9uIGdyb3VwXG4gICAgICBpZighJG5leHQubGVuZ3RoKSB7XG4gICAgICAgICRuZXh0ID0gJHN0YXJ0LnBhcmVudHMoXCIudWktbXVsdGlzZWxlY3Qtb3B0Z3JvdXBcIilbbW92ZVRvTGFzdCA/IFwicHJldlwiIDogXCJuZXh0XCIgXSgpO1xuICAgICAgfVxuXG4gICAgICAvLyBpZiBhdCB0aGUgZmlyc3QvbGFzdCBlbGVtZW50XG4gICAgICBpZighJG5leHQubGVuZ3RoKSB7XG4gICAgICAgIHZhciAkY29udGFpbmVyID0gdGhpcy5tZW51LmZpbmQoJ3VsJykubGFzdCgpO1xuXG4gICAgICAgIC8vIG1vdmUgdG8gdGhlIGZpcnN0L2xhc3RcbiAgICAgICAgdGhpcy5tZW51LmZpbmQoJ2xhYmVsOnZpc2libGUnKVsgbW92ZVRvTGFzdCA/ICdsYXN0JyA6ICdmaXJzdCcgXSgpLnRyaWdnZXIoJ21vdXNlb3ZlcicpO1xuXG4gICAgICAgIC8vIHNldCBzY3JvbGwgcG9zaXRpb25cbiAgICAgICAgJGNvbnRhaW5lci5zY3JvbGxUb3AobW92ZVRvTGFzdCA/ICRjb250YWluZXIuaGVpZ2h0KCkgOiAwKTtcblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgJG5leHQuZmluZCgnbGFiZWw6dmlzaWJsZScpWyBtb3ZlVG9MYXN0ID8gXCJsYXN0XCIgOiBcImZpcnN0XCIgXSgpLnRyaWdnZXIoJ21vdXNlb3ZlcicpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICAvLyBUaGlzIGlzIGFuIGludGVybmFsIGZ1bmN0aW9uIHRvIHRvZ2dsZSB0aGUgY2hlY2tlZCBwcm9wZXJ0eSBhbmRcbiAgICAvLyBvdGhlciByZWxhdGVkIGF0dHJpYnV0ZXMgb2YgYSBjaGVja2JveC5cbiAgICAvL1xuICAgIC8vIFRoZSBjb250ZXh0IG9mIHRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGEgY2hlY2tib3g7IGRvIG5vdCBwcm94eSBpdC5cbiAgICBfdG9nZ2xlU3RhdGU6IGZ1bmN0aW9uKHByb3AsIGZsYWcpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICB0aGlzWyBwcm9wIF0gPSBmbGFnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYoZmxhZykge1xuICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCdhcmlhLXNlbGVjdGVkJywgdHJ1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtc2VsZWN0ZWQnKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9LFxuXG4gICAgX3RvZ2dsZUNoZWNrZWQ6IGZ1bmN0aW9uKGZsYWcsIGdyb3VwKSB7XG4gICAgICB2YXIgJGlucHV0cyA9IChncm91cCAmJiBncm91cC5sZW5ndGgpID8gIGdyb3VwIDogdGhpcy5pbnB1dHM7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICAgIC8vIHRvZ2dsZSBzdGF0ZSBvbiBpbnB1dHNcbiAgICAgICRpbnB1dHMuZWFjaCh0aGlzLl90b2dnbGVTdGF0ZSgnY2hlY2tlZCcsIGZsYWcpKTtcblxuICAgICAgLy8gZ2l2ZSB0aGUgZmlyc3QgaW5wdXQgZm9jdXNcbiAgICAgICRpbnB1dHMuZXEoMCkuZm9jdXMoKTtcblxuICAgICAgLy8gdXBkYXRlIGJ1dHRvbiB0ZXh0XG4gICAgICB0aGlzLnVwZGF0ZSgpO1xuXG4gICAgICAvLyBnYXRoZXIgYW4gYXJyYXkgb2YgdGhlIHZhbHVlcyB0aGF0IGFjdHVhbGx5IGNoYW5nZWRcbiAgICAgIHZhciB2YWx1ZXMgPSB7fTtcbiAgICAgICRpbnB1dHMuZWFjaChmdW5jdGlvbigpIHtcbiAgICAgICAgdmFsdWVzW3RoaXMudmFsdWVdID0gdHJ1ZTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyB0b2dnbGUgc3RhdGUgb24gb3JpZ2luYWwgb3B0aW9uIHRhZ3NcbiAgICAgIHRoaXMuZWxlbWVudFxuICAgICAgICAuZmluZCgnb3B0aW9uJylcbiAgICAgICAgLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgICAgaWYoIXRoaXMuZGlzYWJsZWQgJiYgdmFsdWVzW3RoaXMudmFsdWVdKSB7XG4gICAgICAgICAgICBzZWxmLl90b2dnbGVTdGF0ZSgnc2VsZWN0ZWQnLCBmbGFnKS5jYWxsKHRoaXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgIC8vIHRyaWdnZXIgdGhlIGNoYW5nZSBldmVudCBvbiB0aGUgc2VsZWN0XG4gICAgICBpZigkaW5wdXRzLmxlbmd0aCkge1xuICAgICAgICB0aGlzLmVsZW1lbnQudHJpZ2dlcihcImNoYW5nZVwiKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgX3RvZ2dsZURpc2FibGVkOiBmdW5jdGlvbihmbGFnKSB7XG4gICAgICB0aGlzLmJ1dHRvbi5wcm9wKHsgJ2Rpc2FibGVkJzpmbGFnLCAnYXJpYS1kaXNhYmxlZCc6ZmxhZyB9KVsgZmxhZyA/ICdhZGRDbGFzcycgOiAncmVtb3ZlQ2xhc3MnIF0oJ3VpLXN0YXRlLWRpc2FibGVkJyk7XG5cbiAgICAgIGlmKHRoaXMub3B0aW9ucy5kaXNhYmxlSW5wdXRzT25Ub2dnbGUpIHtcbiAgICAgICAgdmFyIGNoZWNrYm94ZXMgPSB0aGlzLm1lbnUuZmluZChcIi51aS1tdWx0aXNlbGVjdC1jaGVja2JveGVzXCIpLmdldCgwKTtcbiAgICAgICAgdmFyIG1hdGNoZWRJbnB1dHMgPSBbXTtcbiAgICAgICAgdmFyIGtleSA9IFwiZWNoLW11bHRpc2VsZWN0LWRpc2FibGVkXCI7XG4gICAgICAgIHZhciBpID0gMDtcbiAgICAgICAgaWYoZmxhZykge1xuICAgICAgICAgIC8vIHJlbWVtYmVyIHdoaWNoIGVsZW1lbnRzIHRoaXMgd2lkZ2V0IGRpc2FibGVkIChub3QgcHJlLWRpc2FibGVkKVxuICAgICAgICAgIC8vIGVsZW1lbnRzLCBzbyB0aGF0IHRoZXkgY2FuIGJlIHJlc3RvcmVkIGlmIHRoZSB3aWRnZXQgaXMgcmUtZW5hYmxlZC5cbiAgICAgICAgICBtYXRjaGVkSW5wdXRzID0gY2hlY2tib3hlcy5xdWVyeVNlbGVjdG9yQWxsKFwiaW5wdXQ6ZW5hYmxlZFwiKTtcbiAgICAgICAgICBmb3IoaSA9IDA7IGkgPCBtYXRjaGVkSW5wdXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBtYXRjaGVkSW5wdXRzW2ldLnNldEF0dHJpYnV0ZShrZXksIHRydWUpO1xuICAgICAgICAgICAgbWF0Y2hlZElucHV0c1tpXS5zZXRBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiLCBcImRpc2FibGVkXCIpO1xuICAgICAgICAgICAgbWF0Y2hlZElucHV0c1tpXS5zZXRBdHRyaWJ1dGUoXCJhcmlhLWRpc2FibGVkXCIsIFwiZGlzYWJsZWRcIik7XG4gICAgICAgICAgICBtYXRjaGVkSW5wdXRzW2ldLnBhcmVudE5vZGUuY2xhc3NOYW1lID0gbWF0Y2hlZElucHV0c1tpXS5wYXJlbnROb2RlLmNsYXNzTmFtZSArIFwiIHVpLXN0YXRlLWRpc2FibGVkXCI7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG1hdGNoZWRJbnB1dHMgPSBjaGVja2JveGVzLnF1ZXJ5U2VsZWN0b3JBbGwoXCJpbnB1dDpkaXNhYmxlZFwiKTtcbiAgICAgICAgICBmb3IoaSA9IDA7IGkgPCBtYXRjaGVkSW5wdXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZihtYXRjaGVkSW5wdXRzW2ldLmhhc0F0dHJpYnV0ZShrZXkpKSB7XG4gICAgICAgICAgICAgIG1hdGNoZWRJbnB1dHNbaV0ucmVtb3ZlQXR0cmlidXRlKGtleSk7XG4gICAgICAgICAgICAgIG1hdGNoZWRJbnB1dHNbaV0ucmVtb3ZlQXR0cmlidXRlKFwiZGlzYWJsZWRcIik7XG4gICAgICAgICAgICAgIG1hdGNoZWRJbnB1dHNbaV0ucmVtb3ZlQXR0cmlidXRlKFwiYXJpYS1kaXNhYmxlZFwiKTtcbiAgICAgICAgICAgICAgbWF0Y2hlZElucHV0c1tpXS5wYXJlbnROb2RlLmNsYXNzTmFtZSA9IG1hdGNoZWRJbnB1dHNbaV0ucGFyZW50Tm9kZS5jbGFzc05hbWUucmVwbGFjZShcIiB1aS1zdGF0ZS1kaXNhYmxlZFwiLCBcIlwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5lbGVtZW50LnByb3Aoe1xuICAgICAgICAnZGlzYWJsZWQnOmZsYWcsXG4gICAgICAgICdhcmlhLWRpc2FibGVkJzpmbGFnXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gb3BlbiB0aGUgbWVudVxuICAgIG9wZW46IGZ1bmN0aW9uKGUpIHtcbiAgICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAgIHZhciBidXR0b24gPSB0aGlzLmJ1dHRvbjtcbiAgICAgIHZhciBtZW51ID0gdGhpcy5tZW51O1xuICAgICAgdmFyIHNwZWVkID0gdGhpcy5zcGVlZDtcbiAgICAgIHZhciBvID0gdGhpcy5vcHRpb25zO1xuICAgICAgdmFyIGFyZ3MgPSBbXTtcblxuICAgICAgLy8gYmFpbCBpZiB0aGUgbXVsdGlzZWxlY3RvcGVuIGV2ZW50IHJldHVybnMgZmFsc2UsIHRoaXMgd2lkZ2V0IGlzIGRpc2FibGVkLCBvciBpcyBhbHJlYWR5IG9wZW5cbiAgICAgIGlmKHRoaXMuX3RyaWdnZXIoJ2JlZm9yZW9wZW4nKSA9PT0gZmFsc2UgfHwgYnV0dG9uLmhhc0NsYXNzKCd1aS1zdGF0ZS1kaXNhYmxlZCcpIHx8IHRoaXMuX2lzT3Blbikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciAkY29udGFpbmVyID0gbWVudS5maW5kKCcudWktbXVsdGlzZWxlY3QtY2hlY2tib3hlcycpO1xuICAgICAgdmFyIGVmZmVjdCA9IG8uc2hvdztcblxuICAgICAgLy8gZmlndXJlIG91dCBvcGVuaW5nIGVmZmVjdHMvc3BlZWRzXG4gICAgICBpZigkLmlzQXJyYXkoby5zaG93KSkge1xuICAgICAgICBlZmZlY3QgPSBvLnNob3dbMF07XG4gICAgICAgIHNwZWVkID0gby5zaG93WzFdIHx8IHNlbGYuc3BlZWQ7XG4gICAgICB9XG5cbiAgICAgIC8vIGlmIHRoZXJlJ3MgYW4gZWZmZWN0LCBhc3N1bWUgalF1ZXJ5IFVJIGlzIGluIHVzZVxuICAgICAgLy8gYnVpbGQgdGhlIGFyZ3VtZW50cyB0byBwYXNzIHRvIHNob3coKVxuICAgICAgaWYoZWZmZWN0KSB7XG4gICAgICAgIGFyZ3MgPSBbIGVmZmVjdCwgc3BlZWQgXTtcbiAgICAgIH1cblxuICAgICAgLy8gc2V0IHRoZSBzY3JvbGwgb2YgdGhlIGNoZWNrYm94IGNvbnRhaW5lclxuICAgICAgJGNvbnRhaW5lci5zY3JvbGxUb3AoMCk7XG5cbiAgICAgIC8vIHNob3cgdGhlIG1lbnUsIG1heWJlIHdpdGggYSBzcGVlZC9lZmZlY3QgY29tYm9cbiAgICAgICQuZm4uc2hvdy5hcHBseShtZW51LCBhcmdzKTtcblxuICAgICAgdGhpcy5fcmVzaXplTWVudSgpO1xuICAgICAgLy8gcG9zaXRvblxuICAgICAgdGhpcy5wb3NpdGlvbigpO1xuXG5cbiAgICAgIC8vIHNlbGVjdCB0aGUgZmlyc3Qgbm90IGRpc2FibGVkIG9wdGlvbiBvciB0aGUgZmlsdGVyIGlucHV0IGlmIGF2YWlsYWJsZVxuICAgICAgdmFyIGZpbHRlciA9IHRoaXMuaGVhZGVyLmZpbmQoXCIudWktbXVsdGlzZWxlY3QtZmlsdGVyXCIpO1xuICAgICAgaWYoZmlsdGVyLmxlbmd0aCkge1xuICAgICAgICBmaWx0ZXIuZmlyc3QoKS5maW5kKCdpbnB1dCcpLnRyaWdnZXIoJ2ZvY3VzJyk7XG4gICAgICB9IGVsc2UgaWYodGhpcy5sYWJlbHMubGVuZ3RoKXtcbiAgICAgICAgdGhpcy5sYWJlbHMuZmlsdGVyKCc6bm90KC51aS1zdGF0ZS1kaXNhYmxlZCknKS5lcSgwKS50cmlnZ2VyKCdtb3VzZW92ZXInKS50cmlnZ2VyKCdtb3VzZWVudGVyJykuZmluZCgnaW5wdXQnKS50cmlnZ2VyKCdmb2N1cycpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5oZWFkZXIuZmluZCgnYScpLmZpcnN0KCkudHJpZ2dlcignZm9jdXMnKTtcbiAgICAgIH1cblxuXG4gICAgICBidXR0b24uYWRkQ2xhc3MoJ3VpLXN0YXRlLWFjdGl2ZScpO1xuICAgICAgdGhpcy5faXNPcGVuID0gdHJ1ZTtcbiAgICAgIHRoaXMuX3RyaWdnZXIoJ29wZW4nKTtcbiAgICB9LFxuXG4gICAgLy8gY2xvc2UgdGhlIG1lbnVcbiAgICBjbG9zZTogZnVuY3Rpb24oKSB7XG4gICAgICBpZih0aGlzLl90cmlnZ2VyKCdiZWZvcmVjbG9zZScpID09PSBmYWxzZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBvID0gdGhpcy5vcHRpb25zO1xuICAgICAgdmFyIGVmZmVjdCA9IG8uaGlkZTtcbiAgICAgIHZhciBzcGVlZCA9IHRoaXMuc3BlZWQ7XG4gICAgICB2YXIgYXJncyA9IFtdO1xuXG4gICAgICAvLyBmaWd1cmUgb3V0IG9wZW5pbmcgZWZmZWN0cy9zcGVlZHNcbiAgICAgIGlmKCQuaXNBcnJheShvLmhpZGUpKSB7XG4gICAgICAgIGVmZmVjdCA9IG8uaGlkZVswXTtcbiAgICAgICAgc3BlZWQgPSBvLmhpZGVbMV0gfHwgdGhpcy5zcGVlZDtcbiAgICAgIH1cblxuICAgICAgaWYoZWZmZWN0KSB7XG4gICAgICAgIGFyZ3MgPSBbIGVmZmVjdCwgc3BlZWQgXTtcbiAgICAgIH1cblxuICAgICAgJC5mbi5oaWRlLmFwcGx5KHRoaXMubWVudSwgYXJncyk7XG4gICAgICB0aGlzLmJ1dHRvbi5yZW1vdmVDbGFzcygndWktc3RhdGUtYWN0aXZlJykudHJpZ2dlcignYmx1cicpLnRyaWdnZXIoJ21vdXNlbGVhdmUnKTtcbiAgICAgIHRoaXMuX2lzT3BlbiA9IGZhbHNlO1xuICAgICAgdGhpcy5fdHJpZ2dlcignY2xvc2UnKTtcbiAgICAgIHRoaXMuYnV0dG9uLnRyaWdnZXIoJ2ZvY3VzJyk7XG4gICAgfSxcblxuICAgIGVuYWJsZTogZnVuY3Rpb24oKSB7XG4gICAgICB0aGlzLl90b2dnbGVEaXNhYmxlZChmYWxzZSk7XG4gICAgfSxcblxuICAgIGRpc2FibGU6IGZ1bmN0aW9uKCkge1xuICAgICAgdGhpcy5fdG9nZ2xlRGlzYWJsZWQodHJ1ZSk7XG4gICAgfSxcblxuICAgIGNoZWNrQWxsOiBmdW5jdGlvbihlKSB7XG4gICAgICB0aGlzLl90b2dnbGVDaGVja2VkKHRydWUpO1xuICAgICAgdGhpcy5fdHJpZ2dlcignY2hlY2tBbGwnKTtcbiAgICB9LFxuXG4gICAgdW5jaGVja0FsbDogZnVuY3Rpb24oKSB7XG4gICAgICB0aGlzLl90b2dnbGVDaGVja2VkKGZhbHNlKTtcbiAgICAgIHRoaXMuX3RyaWdnZXIoJ3VuY2hlY2tBbGwnKTtcbiAgICB9LFxuXG4gICAgZ2V0Q2hlY2tlZDogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5tZW51LmZpbmQoJ2lucHV0JykuZmlsdGVyKCc6Y2hlY2tlZCcpO1xuICAgIH0sXG5cbiAgICBnZXRVbmNoZWNrZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMubWVudS5maW5kKCdpbnB1dCcpLm5vdCgnOmNoZWNrZWQnKTtcbiAgICB9LFxuXG4gICAgZGVzdHJveTogZnVuY3Rpb24oKSB7XG4gICAgICAvLyByZW1vdmUgY2xhc3NlcyArIGRhdGFcbiAgICAgICQuV2lkZ2V0LnByb3RvdHlwZS5kZXN0cm95LmNhbGwodGhpcyk7XG5cbiAgICAgIC8vIHVuYmluZCBldmVudHNcbiAgICAgICRkb2MudW5iaW5kKHRoaXMuX25hbWVzcGFjZUlEKTtcbiAgICAgICQodGhpcy5lbGVtZW50WzBdLmZvcm0pLnVuYmluZCh0aGlzLl9uYW1lc3BhY2VJRCk7XG5cbiAgICAgIHRoaXMuYnV0dG9uLnJlbW92ZSgpO1xuICAgICAgdGhpcy5tZW51LnJlbW92ZSgpO1xuICAgICAgdGhpcy5lbGVtZW50LnNob3coKTtcblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcblxuICAgIGlzT3BlbjogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5faXNPcGVuO1xuICAgIH0sXG5cbiAgICB3aWRnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMubWVudTtcbiAgICB9LFxuXG4gICAgZ2V0QnV0dG9uOiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLmJ1dHRvbjtcbiAgICB9LFxuXG4gICAgZ2V0TWVudTogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5tZW51O1xuICAgIH0sXG5cbiAgICBnZXRMYWJlbHM6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMubGFiZWxzO1xuICAgIH0sXG5cbiAgICBhZGRPcHRpb246IGZ1bmN0aW9uKGF0dHJpYnV0ZXMsIHRleHQsIGdyb3VwTGFiZWwpIHtcbiAgICAgIHZhciAkb3B0aW9uID0gJChcIjxvcHRpb24vPlwiKS5hdHRyKGF0dHJpYnV0ZXMpLnRleHQodGV4dCk7XG4gICAgICB2YXIgb3B0aW9uTm9kZSA9ICRvcHRpb24uZ2V0KDApO1xuICAgICAgaWYoZ3JvdXBMYWJlbCkge1xuICAgICAgICB0aGlzLmVsZW1lbnQuY2hpbGRyZW4oXCJPUFRHUk9VUFwiKS5maWx0ZXIoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgcmV0dXJuICQodGhpcykucHJvcChcImxhYmVsXCIpID09PSBncm91cExhYmVsO1xuICAgICAgICB9KS5hcHBlbmQoJG9wdGlvbik7XG4gICAgICAgIHRoaXMubWVudS5maW5kKFwiLnVpLW11bHRpc2VsZWN0LW9wdGdyb3VwXCIpLmZpbHRlcihmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gJCh0aGlzKS5maW5kKFwiYVwiKS50ZXh0KCkgPT09IGdyb3VwTGFiZWw7XG4gICAgICAgIH0pLmFwcGVuZCh0aGlzLl9tYWtlT3B0aW9uKG9wdGlvbk5vZGUpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmQoJG9wdGlvbik7XG4gICAgICAgIHRoaXMubWVudS5maW5kKFwiLnVpLW11bHRpc2VsZWN0LWNoZWNrYm94ZXNcIikuYXBwZW5kKHRoaXMuX21ha2VPcHRpb24ob3B0aW9uTm9kZSkpO1xuICAgICAgfVxuICAgICAgLy91cGRhdGUgY2FjaGVkIGVsZW1lbnRzXG4gICAgICB0aGlzLmxhYmVscyA9IHRoaXMubWVudS5maW5kKCdsYWJlbCcpO1xuICAgICAgdGhpcy5pbnB1dHMgPSB0aGlzLmxhYmVscy5jaGlsZHJlbignaW5wdXQnKTtcbiAgICB9LFxuXG4gICAgcmVtb3ZlT3B0aW9uOiBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgaWYoIXZhbHVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuZWxlbWVudC5maW5kKFwib3B0aW9uW3ZhbHVlPVwiICsgdmFsdWUgKyBcIl1cIikucmVtb3ZlKCk7XG4gICAgICB0aGlzLmxhYmVscy5maW5kKFwiaW5wdXRbdmFsdWU9XCIgKyB2YWx1ZSArIFwiXVwiKS5wYXJlbnRzKFwibGlcIikucmVtb3ZlKCk7XG5cbiAgICAgIC8vdXBkYXRlIGNhY2hlZCBlbGVtZW50c1xuICAgICAgdGhpcy5sYWJlbHMgPSB0aGlzLm1lbnUuZmluZCgnbGFiZWwnKTtcbiAgICAgIHRoaXMuaW5wdXRzID0gdGhpcy5sYWJlbHMuY2hpbGRyZW4oJ2lucHV0Jyk7XG4gICAgfSxcblxuICAgIHBvc2l0aW9uOiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBwb3MgPSB7XG4gICAgICAgIG15OiBcInRvcFwiLFxuICAgICAgICBhdDogXCJib3R0b21cIixcbiAgICAgICAgb2Y6IHRoaXMuYnV0dG9uXG4gICAgICB9O1xuICAgICAgaWYoISQuaXNFbXB0eU9iamVjdCh0aGlzLm9wdGlvbnMucG9zaXRpb24pKSB7XG4gICAgICAgIHBvcy5teSA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbi5teSB8fCBwb3MubXk7XG4gICAgICAgIHBvcy5hdCA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbi5hdCB8fCBwb3MuYXQ7XG4gICAgICAgIHBvcy5vZiA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbi5vZiB8fCBwb3Mub2Y7XG4gICAgICB9XG4gICAgICBpZigkLnVpICYmICQudWkucG9zaXRpb24pIHtcbiAgICAgICAgdGhpcy5tZW51LnBvc2l0aW9uKHBvcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwb3MgPSB0aGlzLmJ1dHRvbi5wb3NpdGlvbigpO1xuICAgICAgICBwb3MudG9wICs9IHRoaXMuYnV0dG9uLm91dGVySGVpZ2h0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5tZW51Lm9mZnNldChwb3MpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICAvLyByZWFjdCB0byBvcHRpb24gY2hhbmdlcyBhZnRlciBpbml0aWFsaXphdGlvblxuICAgIF9zZXRPcHRpb246IGZ1bmN0aW9uKGtleSwgdmFsdWUpIHtcbiAgICAgIHZhciBtZW51ID0gdGhpcy5tZW51O1xuXG4gICAgICBzd2l0Y2goa2V5KSB7XG4gICAgICAgIGNhc2UgJ2hlYWRlcic6XG4gICAgICAgICAgaWYodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIHRoaXMuaGVhZGVyW3ZhbHVlID8gJ3Nob3cnIDogJ2hpZGUnXSgpO1xuICAgICAgICAgIH0gZWxzZSBpZih0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB0aGlzLmhlYWRlckxpbmtDb250YWluZXIuY2hpbGRyZW4oXCJsaTpub3QoOmxhc3QtY2hpbGQpXCIpLnJlbW92ZSgpO1xuICAgICAgICAgICAgdGhpcy5oZWFkZXJMaW5rQ29udGFpbmVyLnByZXBlbmQoXCI8bGk+XCIgKyB2YWx1ZSArIFwiPC9saT5cIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdjaGVja0FsbFRleHQnOlxuICAgICAgICAgIG1lbnUuZmluZCgnYS51aS1tdWx0aXNlbGVjdC1hbGwgc3BhbicpLmVxKC0xKS50ZXh0KHZhbHVlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAndW5jaGVja0FsbFRleHQnOlxuICAgICAgICAgIG1lbnUuZmluZCgnYS51aS1tdWx0aXNlbGVjdC1ub25lIHNwYW4nKS5lcSgtMSkudGV4dCh2YWx1ZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2hlaWdodCc6XG4gICAgICAgICAgdGhpcy5vcHRpb25zW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICB0aGlzLl9zZXRNZW51SGVpZ2h0KCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ21pbldpZHRoJzpcbiAgICAgICAgY2FzZSAnbWVudVdpZHRoJzpcbiAgICAgICAgICB0aGlzLm9wdGlvbnNba2V5XSA9IHZhbHVlO1xuICAgICAgICAgIHRoaXMuX3NldEJ1dHRvbldpZHRoKCk7XG4gICAgICAgICAgdGhpcy5fc2V0TWVudVdpZHRoKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3NlbGVjdGVkVGV4dCc6XG4gICAgICAgIGNhc2UgJ3NlbGVjdGVkTGlzdCc6XG4gICAgICAgIGNhc2UgJ25vbmVTZWxlY3RlZFRleHQnOlxuICAgICAgICAgIHRoaXMub3B0aW9uc1trZXldID0gdmFsdWU7IC8vIHRoZXNlIGFsbCBuZWVkcyB0byB1cGRhdGUgaW1tZWRpYXRlbHkgZm9yIHRoZSB1cGRhdGUoKSBjYWxsXG4gICAgICAgICAgdGhpcy51cGRhdGUoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnY2xhc3Nlcyc6XG4gICAgICAgICAgbWVudS5hZGQodGhpcy5idXR0b24pLnJlbW92ZUNsYXNzKHRoaXMub3B0aW9ucy5jbGFzc2VzKS5hZGRDbGFzcyh2YWx1ZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ211bHRpcGxlJzpcbiAgICAgICAgICBtZW51LnRvZ2dsZUNsYXNzKCd1aS1tdWx0aXNlbGVjdC1zaW5nbGUnLCAhdmFsdWUpO1xuICAgICAgICAgIHRoaXMub3B0aW9ucy5tdWx0aXBsZSA9IHZhbHVlO1xuICAgICAgICAgIHRoaXMuZWxlbWVudFswXS5tdWx0aXBsZSA9IHZhbHVlO1xuICAgICAgICAgIHRoaXMudW5jaGVja0FsbCgpO1xuICAgICAgICAgIHRoaXMucmVmcmVzaCgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdwb3NpdGlvbic6XG4gICAgICAgICAgdGhpcy5wb3NpdGlvbigpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdzZWxlY3RlZExpc3RTZXBhcmF0b3InOlxuICAgICAgICAgIHRoaXMub3B0aW9uc1trZXldID0gdmFsdWU7XG4gICAgICAgICAgdGhpcy51cGRhdGUodHJ1ZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgICQuV2lkZ2V0LnByb3RvdHlwZS5fc2V0T3B0aW9uLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfVxuICB9KTtcblxufSkoalF1ZXJ5KTtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpbiIsIi8qIVxuICogalF1ZXJ5IFVwbG9hZCBGaWxlIFBsdWdpblxuICogdmVyc2lvbjogNC4wLjFcbiAqIEByZXF1aXJlcyBqUXVlcnkgdjEuNSBvciBsYXRlciAmIGZvcm0gcGx1Z2luXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMgUmF2aXNoYW5rZXIgS3VzdW1hXG4gKiBodHRwOi8vaGF5YWdlZWsuY29tL1xuICovXG4hZnVuY3Rpb24oZSl7dm9pZCAwPT1lLmZuLmFqYXhGb3JtJiZlLmdldFNjcmlwdCgoXCJodHRwczpcIj09ZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2w/XCJodHRwczovL1wiOlwiaHR0cDovL1wiKStcIm1hbHN1cC5naXRodWIuaW8vanF1ZXJ5LmZvcm0uanNcIik7dmFyIGE9e307YS5maWxlYXBpPXZvaWQgMCE9PWUoXCI8aW5wdXQgdHlwZT0nZmlsZScvPlwiKS5nZXQoMCkuZmlsZXMsYS5mb3JtZGF0YT12b2lkIDAhPT13aW5kb3cuRm9ybURhdGEsZS5mbi51cGxvYWRGaWxlPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIHIoKXtTfHwoUz0hMCxmdW5jdGlvbiBlKCl7aWYoMD09eC5sZW5ndGgmJjA9PUQubGVuZ3RoKXcuYWZ0ZXJVcGxvYWRBbGwoQyksUz0hMTtlbHNle2lmKEQubGVuZ3RoPHcuc2VxdWVudGlhbENvdW50KXt2YXIgYT14LnNoaWZ0KCk7dm9pZCAwIT1hJiYoRC5wdXNoKGEpLGEuc3VibWl0KCkpfXdpbmRvdy5zZXRUaW1lb3V0KGUsMTAwKX19KCkpfWZ1bmN0aW9uIG8oYSx0LHIpe3Iub24oXCJkcmFnZW50ZXJcIixmdW5jdGlvbihhKXthLnN0b3BQcm9wYWdhdGlvbigpLGEucHJldmVudERlZmF1bHQoKSxlKHRoaXMpLmFkZENsYXNzKHQuZHJhZ0Ryb3BIb3ZlckNsYXNzKX0pLHIub24oXCJkcmFnb3ZlclwiLGZ1bmN0aW9uKGEpe2Euc3RvcFByb3BhZ2F0aW9uKCksYS5wcmV2ZW50RGVmYXVsdCgpO3ZhciByPWUodGhpcyk7ci5oYXNDbGFzcyh0LmRyYWdEcm9wQ29udGFpbmVyQ2xhc3MpJiYhci5oYXNDbGFzcyh0LmRyYWdEcm9wSG92ZXJDbGFzcykmJnIuYWRkQ2xhc3ModC5kcmFnRHJvcEhvdmVyQ2xhc3MpfSksci5vbihcImRyb3BcIixmdW5jdGlvbihyKXtyLnByZXZlbnREZWZhdWx0KCksZSh0aGlzKS5yZW1vdmVDbGFzcyh0LmRyYWdEcm9wSG92ZXJDbGFzcyksYS5lcnJvckxvZy5odG1sKFwiXCIpO3ZhciBvPXIub3JpZ2luYWxFdmVudC5kYXRhVHJhbnNmZXIuZmlsZXM7cmV0dXJuIXQubXVsdGlwbGUmJm8ubGVuZ3RoPjE/dm9pZCh0LnNob3dFcnJvciYmZShcIjxkaXYgY2xhc3M9J1wiK3QuZXJyb3JDbGFzcytcIic+XCIrdC5tdWx0aURyYWdFcnJvclN0citcIjwvZGl2PlwiKS5hcHBlbmRUbyhhLmVycm9yTG9nKSk6dm9pZCgwIT10Lm9uU2VsZWN0KG8pJiZsKHQsYSxvKSl9KSxyLm9uKFwiZHJhZ2xlYXZlXCIsZnVuY3Rpb24oKXtlKHRoaXMpLnJlbW92ZUNsYXNzKHQuZHJhZ0Ryb3BIb3ZlckNsYXNzKX0pLGUoZG9jdW1lbnQpLm9uKFwiZHJhZ2VudGVyXCIsZnVuY3Rpb24oZSl7ZS5zdG9wUHJvcGFnYXRpb24oKSxlLnByZXZlbnREZWZhdWx0KCl9KSxlKGRvY3VtZW50KS5vbihcImRyYWdvdmVyXCIsZnVuY3Rpb24oYSl7YS5zdG9wUHJvcGFnYXRpb24oKSxhLnByZXZlbnREZWZhdWx0KCk7dmFyIHI9ZSh0aGlzKTtyLmhhc0NsYXNzKHQuZHJhZ0Ryb3BDb250YWluZXJDbGFzcyl8fHIucmVtb3ZlQ2xhc3ModC5kcmFnRHJvcEhvdmVyQ2xhc3MpfSksZShkb2N1bWVudCkub24oXCJkcm9wXCIsZnVuY3Rpb24oYSl7YS5zdG9wUHJvcGFnYXRpb24oKSxhLnByZXZlbnREZWZhdWx0KCksZSh0aGlzKS5yZW1vdmVDbGFzcyh0LmRyYWdEcm9wSG92ZXJDbGFzcyl9KX1mdW5jdGlvbiBzKGUpe3ZhciBhPVwiXCIsdD1lLzEwMjQ7aWYocGFyc2VJbnQodCk+MTAyNCl7dmFyIHI9dC8xMDI0O2E9ci50b0ZpeGVkKDIpK1wiIE1CXCJ9ZWxzZSBhPXQudG9GaXhlZCgyKStcIiBLQlwiO3JldHVybiBhfWZ1bmN0aW9uIGkoYSl7dmFyIHQ9W107dD1cInN0cmluZ1wiPT1qUXVlcnkudHlwZShhKT9hLnNwbGl0KFwiJlwiKTplLnBhcmFtKGEpLnNwbGl0KFwiJlwiKTt2YXIgcixvLHM9dC5sZW5ndGgsaT1bXTtmb3Iocj0wO3M+cjtyKyspdFtyXT10W3JdLnJlcGxhY2UoL1xcKy9nLFwiIFwiKSxvPXRbcl0uc3BsaXQoXCI9XCIpLGkucHVzaChbZGVjb2RlVVJJQ29tcG9uZW50KG9bMF0pLGRlY29kZVVSSUNvbXBvbmVudChvWzFdKV0pO3JldHVybiBpfWZ1bmN0aW9uIGwoYSx0LHIpe2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKWlmKG4odCxhLHJbb10ubmFtZSkpaWYoYS5hbGxvd0R1cGxpY2F0ZXN8fCFkKHQscltvXS5uYW1lKSlpZigtMSE9YS5tYXhGaWxlU2l6ZSYmcltvXS5zaXplPmEubWF4RmlsZVNpemUpYS5zaG93RXJyb3ImJmUoXCI8ZGl2IGNsYXNzPSdcIithLmVycm9yQ2xhc3MrXCInPjxiPlwiK3Jbb10ubmFtZStcIjwvYj4gXCIrYS5zaXplRXJyb3JTdHIrcyhhLm1heEZpbGVTaXplKStcIjwvZGl2PlwiKS5hcHBlbmRUbyh0LmVycm9yTG9nKTtlbHNlIGlmKC0xIT1hLm1heEZpbGVDb3VudCYmdC5zZWxlY3RlZEZpbGVzPj1hLm1heEZpbGVDb3VudClhLnNob3dFcnJvciYmZShcIjxkaXYgY2xhc3M9J1wiK2EuZXJyb3JDbGFzcytcIic+PGI+XCIrcltvXS5uYW1lK1wiPC9iPiBcIithLm1heEZpbGVDb3VudEVycm9yU3RyK2EubWF4RmlsZUNvdW50K1wiPC9kaXY+XCIpLmFwcGVuZFRvKHQuZXJyb3JMb2cpO2Vsc2V7dC5zZWxlY3RlZEZpbGVzKyssdC5leGlzdGluZ0ZpbGVOYW1lcy5wdXNoKHJbb10ubmFtZSk7dmFyIGw9YSxwPW5ldyBGb3JtRGF0YSx1PWEuZmlsZU5hbWUucmVwbGFjZShcIltdXCIsXCJcIik7cC5hcHBlbmQodSxyW29dKTt2YXIgYz1hLmZvcm1EYXRhO2lmKGMpZm9yKHZhciBoPWkoYyksZj0wO2Y8aC5sZW5ndGg7ZisrKWhbZl0mJnAuYXBwZW5kKGhbZl1bMF0saFtmXVsxXSk7bC5maWxlRGF0YT1wO3ZhciB3PW5ldyBtKHQsYSksZz1cIlwiO2c9YS5zaG93RmlsZUNvdW50ZXI/dC5maWxlQ291bnRlcithLmZpbGVDb3VudGVyU3R5bGUrcltvXS5uYW1lOnJbb10ubmFtZSxhLnNob3dGaWxlU2l6ZSYmKGcrPVwiIChcIitzKHJbb10uc2l6ZSkrXCIpXCIpLHcuZmlsZW5hbWUuaHRtbChnKTt2YXIgQz1lKFwiPGZvcm0gc3R5bGU9J2Rpc3BsYXk6YmxvY2s7IHBvc2l0aW9uOmFic29sdXRlO2xlZnQ6IDE1MHB4OycgY2xhc3M9J1wiK3QuZm9ybUdyb3VwK1wiJyBtZXRob2Q9J1wiK2EubWV0aG9kK1wiJyBhY3Rpb249J1wiK2EudXJsK1wiJyBlbmN0eXBlPSdcIithLmVuY3R5cGUrXCInPjwvZm9ybT5cIik7Qy5hcHBlbmRUbyhcImJvZHlcIik7dmFyIGI9W107Yi5wdXNoKHJbb10ubmFtZSksdihDLGwsdyxiLHQscltvXSksdC5maWxlQ291bnRlcisrfWVsc2UgYS5zaG93RXJyb3ImJmUoXCI8ZGl2IGNsYXNzPSdcIithLmVycm9yQ2xhc3MrXCInPjxiPlwiK3Jbb10ubmFtZStcIjwvYj4gXCIrYS5kdXBsaWNhdGVFcnJvclN0citcIjwvZGl2PlwiKS5hcHBlbmRUbyh0LmVycm9yTG9nKTtlbHNlIGEuc2hvd0Vycm9yJiZlKFwiPGRpdiBjbGFzcz0nXCIrYS5lcnJvckNsYXNzK1wiJz48Yj5cIityW29dLm5hbWUrXCI8L2I+IFwiK2EuZXh0RXJyb3JTdHIrYS5hbGxvd2VkVHlwZXMrXCI8L2Rpdj5cIikuYXBwZW5kVG8odC5lcnJvckxvZyl9ZnVuY3Rpb24gbihlLGEsdCl7dmFyIHI9YS5hbGxvd2VkVHlwZXMudG9Mb3dlckNhc2UoKS5zcGxpdChcIixcIiksbz10LnNwbGl0KFwiLlwiKS5wb3AoKS50b0xvd2VyQ2FzZSgpO3JldHVyblwiKlwiIT1hLmFsbG93ZWRUeXBlcyYmalF1ZXJ5LmluQXJyYXkobyxyKTwwPyExOiEwfWZ1bmN0aW9uIGQoZSxhKXt2YXIgdD0hMTtpZihlLmV4aXN0aW5nRmlsZU5hbWVzLmxlbmd0aClmb3IodmFyIHI9MDtyPGUuZXhpc3RpbmdGaWxlTmFtZXMubGVuZ3RoO3IrKykoZS5leGlzdGluZ0ZpbGVOYW1lc1tyXT09YXx8dy5kdXBsaWNhdGVTdHJpY3QmJmUuZXhpc3RpbmdGaWxlTmFtZXNbcl0udG9Mb3dlckNhc2UoKT09YS50b0xvd2VyQ2FzZSgpKSYmKHQ9ITApO3JldHVybiB0fWZ1bmN0aW9uIHAoZSxhKXtpZihlLmV4aXN0aW5nRmlsZU5hbWVzLmxlbmd0aClmb3IodmFyIHQ9MDt0PGEubGVuZ3RoO3QrKyl7dmFyIHI9ZS5leGlzdGluZ0ZpbGVOYW1lcy5pbmRleE9mKGFbdF0pOy0xIT1yJiZlLmV4aXN0aW5nRmlsZU5hbWVzLnNwbGljZShyLDEpfX1mdW5jdGlvbiB1KGUsYSl7aWYoZSl7YS5zaG93KCk7dmFyIHQ9bmV3IEZpbGVSZWFkZXI7dC5vbmxvYWQ9ZnVuY3Rpb24oZSl7YS5hdHRyKFwic3JjXCIsZS50YXJnZXQucmVzdWx0KX0sdC5yZWFkQXNEYXRhVVJMKGUpfX1mdW5jdGlvbiBjKGEsdCl7aWYoYS5zaG93RmlsZUNvdW50ZXIpe3ZhciByPWUodC5jb250YWluZXIpLmZpbmQoXCIuYWpheC1maWxlLXVwbG9hZC1maWxlbmFtZVwiKS5sZW5ndGg7dC5maWxlQ291bnRlcj1yKzEsZSh0LmNvbnRhaW5lcikuZmluZChcIi5hamF4LWZpbGUtdXBsb2FkLWZpbGVuYW1lXCIpLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpLmh0bWwoKS5zcGxpdChhLmZpbGVDb3VudGVyU3R5bGUpLG89KHBhcnNlSW50KHRbMF0pLTEscithLmZpbGVDb3VudGVyU3R5bGUrdFsxXSk7ZSh0aGlzKS5odG1sKG8pLHItLX0pfX1mdW5jdGlvbiBoKHQscixvLHMpe3ZhciBpPVwiYWpheC11cGxvYWQtaWQtXCIrKG5ldyBEYXRlKS5nZXRUaW1lKCksZD1lKFwiPGZvcm0gbWV0aG9kPSdcIitvLm1ldGhvZCtcIicgYWN0aW9uPSdcIitvLnVybCtcIicgZW5jdHlwZT0nXCIrby5lbmN0eXBlK1wiJz48L2Zvcm0+XCIpLHA9XCI8aW5wdXQgdHlwZT0nZmlsZScgaWQ9J1wiK2krXCInIG5hbWU9J1wiK28uZmlsZU5hbWUrXCInIGFjY2VwdD0nXCIrby5hY2NlcHRGaWxlcytcIicvPlwiO28ubXVsdGlwbGUmJihvLmZpbGVOYW1lLmluZGV4T2YoXCJbXVwiKSE9by5maWxlTmFtZS5sZW5ndGgtMiYmKG8uZmlsZU5hbWUrPVwiW11cIikscD1cIjxpbnB1dCB0eXBlPSdmaWxlJyBpZD0nXCIraStcIicgbmFtZT0nXCIrby5maWxlTmFtZStcIicgYWNjZXB0PSdcIitvLmFjY2VwdEZpbGVzK1wiJyBtdWx0aXBsZS8+XCIpO3ZhciB1PWUocCkuYXBwZW5kVG8oZCk7dS5jaGFuZ2UoZnVuY3Rpb24oKXt0LmVycm9yTG9nLmh0bWwoXCJcIik7dmFyIGk9KG8uYWxsb3dlZFR5cGVzLnRvTG93ZXJDYXNlKCkuc3BsaXQoXCIsXCIpLFtdKTtpZih0aGlzLmZpbGVzKXtmb3IoZz0wO2c8dGhpcy5maWxlcy5sZW5ndGg7ZysrKWkucHVzaCh0aGlzLmZpbGVzW2ddLm5hbWUpO2lmKDA9PW8ub25TZWxlY3QodGhpcy5maWxlcykpcmV0dXJufWVsc2V7dmFyIHA9ZSh0aGlzKS52YWwoKSx1PVtdO2lmKGkucHVzaChwKSwhbih0LG8scCkpcmV0dXJuIHZvaWQoby5zaG93RXJyb3ImJmUoXCI8ZGl2IGNsYXNzPSdcIitvLmVycm9yQ2xhc3MrXCInPjxiPlwiK3ArXCI8L2I+IFwiK28uZXh0RXJyb3JTdHIrby5hbGxvd2VkVHlwZXMrXCI8L2Rpdj5cIikuYXBwZW5kVG8odC5lcnJvckxvZykpO2lmKHUucHVzaCh7bmFtZTpwLHNpemU6XCJOQVwifSksMD09by5vblNlbGVjdCh1KSlyZXR1cm59aWYoYyhvLHQpLHMudW5iaW5kKFwiY2xpY2tcIiksZC5oaWRlKCksaCh0LHIsbyxzKSxkLmFkZENsYXNzKHIpLG8uc2VyaWFsaXplJiZhLmZpbGVhcGkmJmEuZm9ybWRhdGEpe2QucmVtb3ZlQ2xhc3Mocik7dmFyIGY9dGhpcy5maWxlcztkLnJlbW92ZSgpLGwobyx0LGYpfWVsc2V7Zm9yKHZhciB3PVwiXCIsZz0wO2c8aS5sZW5ndGg7ZysrKXcrPW8uc2hvd0ZpbGVDb3VudGVyP3QuZmlsZUNvdW50ZXIrby5maWxlQ291bnRlclN0eWxlK2lbZ10rXCI8YnI+XCI6aVtnXStcIjxicj5cIix0LmZpbGVDb3VudGVyKys7aWYoLTEhPW8ubWF4RmlsZUNvdW50JiZ0LnNlbGVjdGVkRmlsZXMraS5sZW5ndGg+by5tYXhGaWxlQ291bnQpcmV0dXJuIHZvaWQoby5zaG93RXJyb3ImJmUoXCI8ZGl2IGNsYXNzPSdcIitvLmVycm9yQ2xhc3MrXCInPjxiPlwiK3crXCI8L2I+IFwiK28ubWF4RmlsZUNvdW50RXJyb3JTdHIrby5tYXhGaWxlQ291bnQrXCI8L2Rpdj5cIikuYXBwZW5kVG8odC5lcnJvckxvZykpO3Quc2VsZWN0ZWRGaWxlcys9aS5sZW5ndGg7dmFyIEM9bmV3IG0odCxvKTtDLmZpbGVuYW1lLmh0bWwodyksQy5maWxlbmFtZS5odG1sKFwiXCIpLHYoZCxvLEMsaSx0LG51bGwpfX0pLG8ubmVzdGVkRm9ybXM/KGQuY3NzKHttYXJnaW46MCxwYWRkaW5nOjB9KSxzLmNzcyh7cG9zaXRpb246XCJyZWxhdGl2ZVwiLG92ZXJmbG93OlwiaGlkZGVuXCIsY3Vyc29yOlwiZGVmYXVsdFwifSksdS5jc3Moe3Bvc2l0aW9uOlwiYWJzb2x1dGVcIixjdXJzb3I6XCJwb2ludGVyXCIsdG9wOlwiMHB4XCIsd2lkdGg6XCIxMDAlXCIsaGVpZ2h0OlwiMTAwJVwiLGxlZnQ6XCIwcHhcIixcInotaW5kZXhcIjpcIjEwMFwiLG9wYWNpdHk6XCIwLjBcIixmaWx0ZXI6XCJhbHBoYShvcGFjaXR5PTApXCIsXCItbXMtZmlsdGVyXCI6XCJhbHBoYShvcGFjaXR5PTApXCIsXCIta2h0bWwtb3BhY2l0eVwiOlwiMC4wXCIsXCItbW96LW9wYWNpdHlcIjpcIjAuMFwifSksZC5hcHBlbmRUbyhzKSk6KGQuYXBwZW5kVG8oZShcImJvZHlcIikpLGQuY3NzKHttYXJnaW46MCxwYWRkaW5nOjAsZGlzcGxheTpcImJsb2NrXCIscG9zaXRpb246XCJhYnNvbHV0ZVwiLGxlZnQ6XCItMjUwcHhcIn0pLC0xIT1uYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmRleE9mKFwiTVNJRSBcIik/cy5hdHRyKFwiZm9yXCIsaSk6cy5jbGljayhmdW5jdGlvbigpe3UuY2xpY2soKX0pKX1mdW5jdGlvbiBmKGEsdCl7cmV0dXJuIHRoaXMuc3RhdHVzYmFyPWUoXCI8ZGl2IGNsYXNzPSdhamF4LWZpbGUtdXBsb2FkLXN0YXR1c2Jhcic+PC9kaXY+XCIpLndpZHRoKHQuc3RhdHVzQmFyV2lkdGgpLHRoaXMucHJldmlldz1lKFwiPGltZyBjbGFzcz0nYWpheC1maWxlLXVwbG9hZC1wcmV2aWV3JyAvPlwiKS53aWR0aCh0LnByZXZpZXdXaWR0aCkuaGVpZ2h0KHQucHJldmlld0hlaWdodCkuYXBwZW5kVG8odGhpcy5zdGF0dXNiYXIpLmhpZGUoKSx0aGlzLmZpbGVuYW1lPWUoXCI8ZGl2IGNsYXNzPSdhamF4LWZpbGUtdXBsb2FkLWZpbGVuYW1lJz48L2Rpdj5cIikuYXBwZW5kVG8odGhpcy5zdGF0dXNiYXIpLHRoaXMucHJvZ3Jlc3NEaXY9ZShcIjxkaXYgY2xhc3M9J2FqYXgtZmlsZS11cGxvYWQtcHJvZ3Jlc3MnPlwiKS5hcHBlbmRUbyh0aGlzLnN0YXR1c2JhcikuaGlkZSgpLHRoaXMucHJvZ3Jlc3NiYXI9ZShcIjxkaXYgY2xhc3M9J2FqYXgtZmlsZS11cGxvYWQtYmFyJz48L2Rpdj5cIikuYXBwZW5kVG8odGhpcy5wcm9ncmVzc0RpdiksdGhpcy5hYm9ydD1lKFwiPGRpdj5cIit0LmFib3J0U3RyK1wiPC9kaXY+XCIpLmFwcGVuZFRvKHRoaXMuc3RhdHVzYmFyKS5oaWRlKCksdGhpcy5jYW5jZWw9ZShcIjxkaXY+XCIrdC5jYW5jZWxTdHIrXCI8L2Rpdj5cIikuYXBwZW5kVG8odGhpcy5zdGF0dXNiYXIpLmhpZGUoKSx0aGlzLmRvbmU9ZShcIjxkaXY+XCIrdC5kb25lU3RyK1wiPC9kaXY+XCIpLmFwcGVuZFRvKHRoaXMuc3RhdHVzYmFyKS5oaWRlKCksdGhpcy5kb3dubG9hZD1lKFwiPGRpdj5cIit0LmRvd25sb2FkU3RyK1wiPC9kaXY+XCIpLmFwcGVuZFRvKHRoaXMuc3RhdHVzYmFyKS5oaWRlKCksdGhpcy5kZWw9ZShcIjxkaXY+XCIrdC5kZWxldGVsU3RyK1wiPC9kaXY+XCIpLmFwcGVuZFRvKHRoaXMuc3RhdHVzYmFyKS5oaWRlKCksdGhpcy5hYm9ydC5hZGRDbGFzcyhcImFqYXgtZmlsZS11cGxvYWQtcmVkXCIpLHRoaXMuZG9uZS5hZGRDbGFzcyhcImFqYXgtZmlsZS11cGxvYWQtZ3JlZW5cIiksdGhpcy5kb3dubG9hZC5hZGRDbGFzcyhcImFqYXgtZmlsZS11cGxvYWQtZ3JlZW5cIiksdGhpcy5jYW5jZWwuYWRkQ2xhc3MoXCJhamF4LWZpbGUtdXBsb2FkLXJlZFwiKSx0aGlzLmRlbC5hZGRDbGFzcyhcImFqYXgtZmlsZS11cGxvYWQtcmVkXCIpLHRoaXN9ZnVuY3Rpb24gbShhLHQpe3ZhciByPW51bGw7cmV0dXJuIHI9dC5jdXN0b21Qcm9ncmVzc0Jhcj9uZXcgdC5jdXN0b21Qcm9ncmVzc0JhcihhLHQpOm5ldyBmKGEsdCksci5hYm9ydC5hZGRDbGFzcyhhLmZvcm1Hcm91cCksci5hYm9ydC5hZGRDbGFzcyh0LmFib3J0QnV0dG9uQ2xhc3MpLHIuY2FuY2VsLmFkZENsYXNzKGEuZm9ybUdyb3VwKSxyLmNhbmNlbC5hZGRDbGFzcyh0LmNhbmNlbEJ1dHRvbkNsYXNzKSx0LmV4dHJhSFRNTCYmKHIuZXh0cmFIVE1MPWUoXCI8ZGl2IGNsYXNzPSdleHRyYWh0bWwnPlwiK3QuZXh0cmFIVE1MKCkrXCI8L2Rpdj5cIikuaW5zZXJ0QWZ0ZXIoci5maWxlbmFtZSkpLGUoYS5jb250YWluZXIpLmFwcGVuZChyLnN0YXR1c2Jhcikscn1mdW5jdGlvbiB2KHQsbyxzLGwsbixkKXt2YXIgaD17Y2FjaGU6ITEsY29udGVudFR5cGU6ITEscHJvY2Vzc0RhdGE6ITEsZm9yY2VTeW5jOiExLHR5cGU6by5tZXRob2QsZGF0YTpvLmZvcm1EYXRhLGZvcm1EYXRhOm8uZmlsZURhdGEsZGF0YVR5cGU6by5yZXR1cm5UeXBlLGJlZm9yZVN1Ym1pdDpmdW5jdGlvbihhLHIsZCl7aWYoMCE9by5vblN1Ym1pdC5jYWxsKHRoaXMsbCkpe2lmKG8uZHluYW1pY0Zvcm1EYXRhKXt2YXIgdT1pKG8uZHluYW1pY0Zvcm1EYXRhKCkpO2lmKHUpZm9yKHZhciBoPTA7aDx1Lmxlbmd0aDtoKyspdVtoXSYmKHZvaWQgMCE9by5maWxlRGF0YT9kLmZvcm1EYXRhLmFwcGVuZCh1W2hdWzBdLHVbaF1bMV0pOmQuZGF0YVt1W2hdWzBdXT11W2hdWzFdKX1yZXR1cm4gby5leHRyYUhUTUwmJmUocy5leHRyYUhUTUwpLmZpbmQoXCJpbnB1dCxzZWxlY3QsdGV4dGFyZWFcIikuZWFjaChmdW5jdGlvbigpe3ZvaWQgMCE9by5maWxlRGF0YT9kLmZvcm1EYXRhLmFwcGVuZChlKHRoaXMpLmF0dHIoXCJuYW1lXCIpLGUodGhpcykudmFsKCkpOmQuZGF0YVtlKHRoaXMpLmF0dHIoXCJuYW1lXCIpXT1lKHRoaXMpLnZhbCgpfSksITB9cmV0dXJuIHMuc3RhdHVzYmFyLmFwcGVuZChcIjxkaXYgY2xhc3M9J1wiK28uZXJyb3JDbGFzcytcIic+XCIrby51cGxvYWRFcnJvclN0citcIjwvZGl2PlwiKSxzLmNhbmNlbC5zaG93KCksdC5yZW1vdmUoKSxzLmNhbmNlbC5jbGljayhmdW5jdGlvbigpe3gucG9wKCkscChuLGwpLHMuc3RhdHVzYmFyLnJlbW92ZSgpLG8ub25DYW5jZWwuY2FsbChuLGwscyksbi5zZWxlY3RlZEZpbGVzLT1sLmxlbmd0aCxjKG8sbil9KSwhMX0sYmVmb3JlU2VuZDpmdW5jdGlvbihlKXtzLnByb2dyZXNzRGl2LnNob3coKSxzLmNhbmNlbC5oaWRlKCkscy5kb25lLmhpZGUoKSxvLnNob3dBYm9ydCYmKHMuYWJvcnQuc2hvdygpLHMuYWJvcnQuY2xpY2soZnVuY3Rpb24oKXtwKG4sbCksZS5hYm9ydCgpLG4uc2VsZWN0ZWRGaWxlcy09bC5sZW5ndGh9KSkscy5wcm9ncmVzc2Jhci53aWR0aChhLmZvcm1kYXRhP1wiMSVcIjpcIjUlXCIpfSx1cGxvYWRQcm9ncmVzczpmdW5jdGlvbihlLGEsdCxyKXtyPjk4JiYocj05OCk7dmFyIGk9citcIiVcIjtyPjEmJnMucHJvZ3Jlc3NiYXIud2lkdGgoaSksby5zaG93UHJvZ3Jlc3MmJihzLnByb2dyZXNzYmFyLmh0bWwoaSkscy5wcm9ncmVzc2Jhci5jc3MoXCJ0ZXh0LWFsaWduXCIsXCJjZW50ZXJcIikpfSxzdWNjZXNzOmZ1bmN0aW9uKGEscixpKXtpZihzLmNhbmNlbC5yZW1vdmUoKSxELnBvcCgpLFwianNvblwiPT1vLnJldHVyblR5cGUmJlwib2JqZWN0XCI9PWUudHlwZShhKSYmYS5oYXNPd25Qcm9wZXJ0eShvLmN1c3RvbUVycm9yS2V5U3RyKSl7cy5hYm9ydC5oaWRlKCk7dmFyIGQ9YVtvLmN1c3RvbUVycm9yS2V5U3RyXTtyZXR1cm4gby5vbkVycm9yLmNhbGwodGhpcyxsLDIwMCxkLHMpLG8uc2hvd1N0YXR1c0FmdGVyRXJyb3I/KHMucHJvZ3Jlc3NEaXYuaGlkZSgpLHMuc3RhdHVzYmFyLmFwcGVuZChcIjxzcGFuIGNsYXNzPSdcIitvLmVycm9yQ2xhc3MrXCInPkVSUk9SOiBcIitkK1wiPC9zcGFuPlwiKSk6KHMuc3RhdHVzYmFyLmhpZGUoKSxzLnN0YXR1c2Jhci5yZW1vdmUoKSksbi5zZWxlY3RlZEZpbGVzLT1sLmxlbmd0aCx2b2lkIHQucmVtb3ZlKCl9bi5yZXNwb25zZXMucHVzaChhKSxzLnByb2dyZXNzYmFyLndpZHRoKFwiMTAwJVwiKSxvLnNob3dQcm9ncmVzcyYmKHMucHJvZ3Jlc3NiYXIuaHRtbChcIjEwMCVcIikscy5wcm9ncmVzc2Jhci5jc3MoXCJ0ZXh0LWFsaWduXCIsXCJjZW50ZXJcIikpLHMuYWJvcnQuaGlkZSgpLG8ub25TdWNjZXNzLmNhbGwodGhpcyxsLGEsaSxzKSxvLnNob3dTdGF0dXNBZnRlclN1Y2Nlc3M/KG8uc2hvd0RvbmU/KHMuZG9uZS5zaG93KCkscy5kb25lLmNsaWNrKGZ1bmN0aW9uKCl7cy5zdGF0dXNiYXIuaGlkZShcInNsb3dcIikscy5zdGF0dXNiYXIucmVtb3ZlKCl9KSk6cy5kb25lLmhpZGUoKSxvLnNob3dEZWxldGU/KHMuZGVsLnNob3coKSxzLmRlbC5jbGljayhmdW5jdGlvbigpe3Muc3RhdHVzYmFyLmhpZGUoKS5yZW1vdmUoKSxvLmRlbGV0ZUNhbGxiYWNrJiZvLmRlbGV0ZUNhbGxiYWNrLmNhbGwodGhpcyxhLHMpLG4uc2VsZWN0ZWRGaWxlcy09bC5sZW5ndGgsYyhvLG4pfSkpOnMuZGVsLmhpZGUoKSk6KHMuc3RhdHVzYmFyLmhpZGUoXCJzbG93XCIpLHMuc3RhdHVzYmFyLnJlbW92ZSgpKSxvLnNob3dEb3dubG9hZCYmKHMuZG93bmxvYWQuc2hvdygpLHMuZG93bmxvYWQuY2xpY2soZnVuY3Rpb24oKXtvLmRvd25sb2FkQ2FsbGJhY2smJm8uZG93bmxvYWRDYWxsYmFjayhhKX0pKSx0LnJlbW92ZSgpfSxlcnJvcjpmdW5jdGlvbihlLGEscil7cy5jYW5jZWwucmVtb3ZlKCksRC5wb3AoKSxzLmFib3J0LmhpZGUoKSxcImFib3J0XCI9PWUuc3RhdHVzVGV4dD8ocy5zdGF0dXNiYXIuaGlkZShcInNsb3dcIikucmVtb3ZlKCksYyhvLG4pKTooby5vbkVycm9yLmNhbGwodGhpcyxsLGEscixzKSxvLnNob3dTdGF0dXNBZnRlckVycm9yPyhzLnByb2dyZXNzRGl2LmhpZGUoKSxzLnN0YXR1c2Jhci5hcHBlbmQoXCI8c3BhbiBjbGFzcz0nXCIrby5lcnJvckNsYXNzK1wiJz5FUlJPUjogXCIrcitcIjwvc3Bhbj5cIikpOihzLnN0YXR1c2Jhci5oaWRlKCkscy5zdGF0dXNiYXIucmVtb3ZlKCkpLG4uc2VsZWN0ZWRGaWxlcy09bC5sZW5ndGgpLHQucmVtb3ZlKCl9fTtvLnNob3dQcmV2aWV3JiZudWxsIT1kJiZcImltYWdlXCI9PWQudHlwZS50b0xvd2VyQ2FzZSgpLnNwbGl0KFwiL1wiKS5zaGlmdCgpJiZ1KGQscy5wcmV2aWV3KSxvLmF1dG9TdWJtaXQ/by5zZXF1ZW50aWFsPyh0LmFqYXhGb3JtKGgpLHgucHVzaCh0KSxyKCkpOnQuYWpheFN1Ym1pdChoKTooby5zaG93Q2FuY2VsJiYocy5jYW5jZWwuc2hvdygpLHMuY2FuY2VsLmNsaWNrKGZ1bmN0aW9uKCl7eC5wb3AoKSxwKG4sbCksdC5yZW1vdmUoKSxzLnN0YXR1c2Jhci5yZW1vdmUoKSxvLm9uQ2FuY2VsLmNhbGwobixsLHMpLG4uc2VsZWN0ZWRGaWxlcy09bC5sZW5ndGgsYyhvLG4pfSkpLHQuYWpheEZvcm0oaCkpfXZhciB3PWUuZXh0ZW5kKHt1cmw6XCJcIixtZXRob2Q6XCJQT1NUXCIsZW5jdHlwZTpcIm11bHRpcGFydC9mb3JtLWRhdGFcIixyZXR1cm5UeXBlOm51bGwsYWxsb3dEdXBsaWNhdGVzOiEwLGR1cGxpY2F0ZVN0cmljdDohMSxhbGxvd2VkVHlwZXM6XCIqXCIsYWNjZXB0RmlsZXM6XCIqXCIsZmlsZU5hbWU6XCJmaWxlXCIsZm9ybURhdGE6ITEsZHluYW1pY0Zvcm1EYXRhOiExLG1heEZpbGVTaXplOi0xLG1heEZpbGVDb3VudDotMSxtdWx0aXBsZTohMCxkcmFnRHJvcDohMCxhdXRvU3VibWl0OiEwLHNob3dDYW5jZWw6ITAsc2hvd0Fib3J0OiEwLHNob3dEb25lOiExLHNob3dEZWxldGU6ITEsc2hvd0Vycm9yOiEwLHNob3dTdGF0dXNBZnRlclN1Y2Nlc3M6ITAsc2hvd1N0YXR1c0FmdGVyRXJyb3I6ITAsc2hvd0ZpbGVDb3VudGVyOiEwLGZpbGVDb3VudGVyU3R5bGU6XCIpLiBcIixzaG93RmlsZVNpemU6ITAsc2hvd1Byb2dyZXNzOiExLG5lc3RlZEZvcm1zOiEwLHNob3dEb3dubG9hZDohMSxvbkxvYWQ6ZnVuY3Rpb24oKXt9LG9uU2VsZWN0OmZ1bmN0aW9uKCl7cmV0dXJuITB9LG9uU3VibWl0OmZ1bmN0aW9uKCl7fSxvblN1Y2Nlc3M6ZnVuY3Rpb24oKXt9LG9uRXJyb3I6ZnVuY3Rpb24oKXt9LG9uQ2FuY2VsOmZ1bmN0aW9uKCl7fSxkb3dubG9hZENhbGxiYWNrOiExLGRlbGV0ZUNhbGxiYWNrOiExLGFmdGVyVXBsb2FkQWxsOiExLHNlcmlhbGl6ZTohMCxzZXF1ZW50aWFsOiExLHNlcXVlbnRpYWxDb3VudDoyLGN1c3RvbVByb2dyZXNzQmFyOiExLGFib3J0QnV0dG9uQ2xhc3M6XCJhamF4LWZpbGUtdXBsb2FkLWFib3J0XCIsY2FuY2VsQnV0dG9uQ2xhc3M6XCJhamF4LWZpbGUtdXBsb2FkLWNhbmNlbFwiLGRyYWdEcm9wQ29udGFpbmVyQ2xhc3M6XCJhamF4LXVwbG9hZC1kcmFnZHJvcFwiLGRyYWdEcm9wSG92ZXJDbGFzczpcInN0YXRlLWhvdmVyXCIsZXJyb3JDbGFzczpcImFqYXgtZmlsZS11cGxvYWQtZXJyb3JcIix1cGxvYWRCdXR0b25DbGFzczpcImFqYXgtZmlsZS11cGxvYWRcIixkcmFnRHJvcFN0cjpcIjxzcGFuPjxiPkRyYWcgJiBEcm9wIEZpbGVzPC9iPjwvc3Bhbj5cIix1cGxvYWRTdHI6XCJVcGxvYWRcIixhYm9ydFN0cjpcIkFib3J0XCIsY2FuY2VsU3RyOlwiQ2FuY2VsXCIsZGVsZXRlbFN0cjpcIkRlbGV0ZVwiLGRvbmVTdHI6XCJEb25lXCIsbXVsdGlEcmFnRXJyb3JTdHI6XCJNdWx0aXBsZSBGaWxlIERyYWcgJiBEcm9wIGlzIG5vdCBhbGxvd2VkLlwiLGV4dEVycm9yU3RyOlwiaXMgbm90IGFsbG93ZWQuIEFsbG93ZWQgZXh0ZW5zaW9uczogXCIsZHVwbGljYXRlRXJyb3JTdHI6XCJpcyBub3QgYWxsb3dlZC4gRmlsZSBhbHJlYWR5IGV4aXN0cy5cIixzaXplRXJyb3JTdHI6XCJpcyBub3QgYWxsb3dlZC4gQWxsb3dlZCBNYXggc2l6ZTogXCIsdXBsb2FkRXJyb3JTdHI6XCJVcGxvYWQgaXMgbm90IGFsbG93ZWRcIixtYXhGaWxlQ291bnRFcnJvclN0cjpcIiBpcyBub3QgYWxsb3dlZC4gTWF4aW11bSBhbGxvd2VkIGZpbGVzIGFyZTpcIixkb3dubG9hZFN0cjpcIkRvd25sb2FkXCIsY3VzdG9tRXJyb3JLZXlTdHI6XCJqcXVlcnktdXBsb2FkLWZpbGUtZXJyb3JcIixzaG93UXVldWVEaXY6ITEsc3RhdHVzQmFyV2lkdGg6NDAwLGRyYWdkcm9wV2lkdGg6NDAwLHNob3dQcmV2aWV3OiExLHByZXZpZXdIZWlnaHQ6XCJhdXRvXCIscHJldmlld1dpZHRoOlwiMTAwJVwiLGV4dHJhSFRNTDohMX0sdCk7dGhpcy5maWxlQ291bnRlcj0xLHRoaXMuc2VsZWN0ZWRGaWxlcz0wO3ZhciBnPVwiYWpheC1maWxlLXVwbG9hZC1cIisobmV3IERhdGUpLmdldFRpbWUoKTt0aGlzLmZvcm1Hcm91cD1nLHRoaXMuZXJyb3JMb2c9ZShcIjxkaXY+PC9kaXY+XCIpLHRoaXMucmVzcG9uc2VzPVtdLHRoaXMuZXhpc3RpbmdGaWxlTmFtZXM9W10sYS5mb3JtZGF0YXx8KHcuZHJhZ0Ryb3A9ITEpLGEuZm9ybWRhdGF8fCh3Lm11bHRpcGxlPSExKSxlKHRoaXMpLmh0bWwoXCJcIik7dmFyIEM9dGhpcyxiPWUoXCI8ZGl2PlwiK3cudXBsb2FkU3RyK1wiPC9kaXY+XCIpO2UoYikuYWRkQ2xhc3Mody51cGxvYWRCdXR0b25DbGFzcyksZnVuY3Rpb24gRigpe2lmKGUuZm4uYWpheEZvcm0pe2lmKHcuZHJhZ0Ryb3Ape3ZhciBhPWUoJzxkaXYgY2xhc3M9XCInK3cuZHJhZ0Ryb3BDb250YWluZXJDbGFzcysnXCIgc3R5bGU9XCJ2ZXJ0aWNhbC1hbGlnbjp0b3A7XCI+PC9kaXY+Jykud2lkdGgody5kcmFnZHJvcFdpZHRoKTtlKEMpLmFwcGVuZChhKSxlKGEpLmFwcGVuZChiKSxlKGEpLmFwcGVuZChlKHcuZHJhZ0Ryb3BTdHIpKSxvKEMsdyxhKX1lbHNlIGUoQykuYXBwZW5kKGIpO2UoQykuYXBwZW5kKEMuZXJyb3JMb2cpLEMuY29udGFpbmVyPXcuc2hvd1F1ZXVlRGl2P2UoXCIjXCIrdy5zaG93UXVldWVEaXYpOmUoXCI8ZGl2IGNsYXNzPSdhamF4LWZpbGUtdXBsb2FkLWNvbnRhaW5lcic+PC9kaXY+XCIpLmluc2VydEFmdGVyKGUoQykpLHcub25Mb2FkLmNhbGwodGhpcyxDKSxoKEMsZyx3LGIpfWVsc2Ugd2luZG93LnNldFRpbWVvdXQoRiwxMCl9KCksdGhpcy5zdGFydFVwbG9hZD1mdW5jdGlvbigpe2UoXCIuXCIrdGhpcy5mb3JtR3JvdXApLmVhY2goZnVuY3Rpb24oKXtlKHRoaXMpLmlzKFwiZm9ybVwiKSYmeC5wdXNoKGUodGhpcykpfSkscigpfSx0aGlzLmdldEZpbGVDb3VudD1mdW5jdGlvbigpe3JldHVybiBDLnNlbGVjdGVkRmlsZXN9LHRoaXMuc3RvcFVwbG9hZD1mdW5jdGlvbigpe2UoXCIuXCIrdy5hYm9ydEJ1dHRvbkNsYXNzKS5lYWNoKGZ1bmN0aW9uKCl7ZSh0aGlzKS5oYXNDbGFzcyhDLmZvcm1Hcm91cCkmJmUodGhpcykuY2xpY2soKX0pLGUoXCIuXCIrdy5jYW5jZWxCdXR0b25DbGFzcykuZWFjaChmdW5jdGlvbigpe2UodGhpcykuaGFzQ2xhc3MoQy5mb3JtR3JvdXApJiZlKHRoaXMpLmNsaWNrKCl9KX0sdGhpcy5jYW5jZWxBbGw9ZnVuY3Rpb24oKXtlKFwiLlwiK3cuY2FuY2VsQnV0dG9uQ2xhc3MpLmVhY2goZnVuY3Rpb24oKXtlKHRoaXMpLmhhc0NsYXNzKEMuZm9ybUdyb3VwKSYmZSh0aGlzKS5jbGljaygpfSl9LHRoaXMudXBkYXRlPWZ1bmN0aW9uKGEpe3c9ZS5leHRlbmQodyxhKX0sdGhpcy5yZXNldD1mdW5jdGlvbihlKXtDLmZpbGVDb3VudGVyPTEsQy5zZWxlY3RlZEZpbGVzPTAsQy5lcnJvckxvZy5odG1sKFwiXCIpLDAhPWUmJkMuY29udGFpbmVyLmh0bWwoXCJcIil9LHRoaXMucmVtb3ZlPWZ1bmN0aW9uKCl7Qy5jb250YWluZXIuaHRtbChcIlwiKSxlKEMpLnJlbW92ZSgpfSx0aGlzLmNyZWF0ZVByb2dyZXNzPWZ1bmN0aW9uKGUpe3ZhciBhPW5ldyBtKHRoaXMsdyk7YS5wcm9ncmVzc0Rpdi5zaG93KCksYS5wcm9ncmVzc2Jhci53aWR0aChcIjEwMCVcIik7dmFyIHQ9XCJcIjt0PXcuc2hvd0ZpbGVDb3VudGVyP0MuZmlsZUNvdW50ZXIrdy5maWxlQ291bnRlclN0eWxlK2U6ZSxhLmZpbGVuYW1lLmh0bWwodCksQy5maWxlQ291bnRlcisrLEMuc2VsZWN0ZWRGaWxlcysrLHcuc2hvd1ByZXZpZXcmJihhLnByZXZpZXcuYXR0cihcInNyY1wiLHcuZmlsZW5hbWUpLGEucHJldmlldy5zaG93KCkpLHcuc2hvd0Rvd25sb2FkJiYoYS5kb3dubG9hZC5zaG93KCksYS5kb3dubG9hZC5jbGljayhmdW5jdGlvbigpe3cuZG93bmxvYWRDYWxsYmFjayYmdy5kb3dubG9hZENhbGxiYWNrLmNhbGwoQyxbZV0pfSkpLGEuZGVsLnNob3coKSxhLmRlbC5jbGljayhmdW5jdGlvbigpe2Euc3RhdHVzYmFyLmhpZGUoKS5yZW1vdmUoKTt2YXIgdD1bZV07dy5kZWxldGVDYWxsYmFjayYmdy5kZWxldGVDYWxsYmFjay5jYWxsKHRoaXMsdCxhKSxDLnNlbGVjdGVkRmlsZXMtPTEsYyh3LEMpfSl9LHRoaXMuZ2V0UmVzcG9uc2VzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVzcG9uc2VzfTt2YXIgeD1bXSxEPVtdLFM9ITE7cmV0dXJuIHRoaXN9fShqUXVlcnkpOyJdLCJzb3VyY2VSb290IjoiIn0=