<?php

use Twig\Environment;
use Twig\Error\LoaderError;
use Twig\Error\RuntimeError;
use Twig\Extension\CoreExtension;
use Twig\Extension\SandboxExtension;
use Twig\Markup;
use Twig\Sandbox\SecurityError;
use Twig\Sandbox\SecurityNotAllowedTagError;
use Twig\Sandbox\SecurityNotAllowedFilterError;
use Twig\Sandbox\SecurityNotAllowedFunctionError;
use Twig\Source;
use Twig\Template;

/* @public_path/build/assets_js_map_js.js */
class __TwigTemplate_d8ac17a11ed067293700e6ec62ba24200a5c0a43c3597b9201b06ac859a68409 extends Template
{
    private $source;
    private $macros = [];

    public function __construct(Environment $env)
    {
        parent::__construct($env);

        $this->source = $this->getSourceContext();

        $this->parent = false;

        $this->blocks = [
        ];
    }

    protected function doDisplay(array $context, array $blocks = [])
    {
        $macros = $this->macros;
        $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
        $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->enter($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "@public_path/build/assets_js_map_js.js"));

        $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02 = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
        $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->enter($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "@public_path/build/assets_js_map_js.js"));

        yield "(self[\"webpackChunk\"] = self[\"webpackChunk\"] || []).push([[\"assets_js_map_js\"],{

/***/ \"./assets/images/punaise-blue.png\":
/*!****************************************!*\\
  !*** ./assets/images/punaise-blue.png ***!
  \\****************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

\"use strict\";
module.exports = __webpack_require__.p + \"images/punaise-blue.9375d5ad.png\";

/***/ }),

/***/ \"./assets/images/punaise-gps.png\":
/*!***************************************!*\\
  !*** ./assets/images/punaise-gps.png ***!
  \\***************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

\"use strict\";
module.exports = __webpack_require__.p + \"images/punaise-gps.6ee5445c.png\";

/***/ }),

/***/ \"./assets/images/punaise-green.png\":
/*!*****************************************!*\\
  !*** ./assets/images/punaise-green.png ***!
  \\*****************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

\"use strict\";
module.exports = __webpack_require__.p + \"images/punaise-green.d6008b7b.png\";

/***/ }),

/***/ \"./assets/images/punaise-red.png\":
/*!***************************************!*\\
  !*** ./assets/images/punaise-red.png ***!
  \\***************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

\"use strict\";
module.exports = __webpack_require__.p + \"images/punaise-red.e834d1a9.png\";

/***/ }),

/***/ \"./assets/images/punaise.png\":
/*!***********************************!*\\
  !*** ./assets/images/punaise.png ***!
  \\***********************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

\"use strict\";
module.exports = __webpack_require__.p + \"images/punaise.ffe226c8.png\";

/***/ }),

/***/ \"./assets/js/map.js\":
/*!**************************!*\\
  !*** ./assets/js/map.js ***!
  \\**************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

\"use strict\";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   \"punaisePicto\": () => (/* binding */ punaisePicto),
/* harmony export */   \"createCustomIcon\": () => (/* binding */ createCustomIcon),
/* harmony export */   \"addMarker\": () => (/* binding */ addMarker),
/* harmony export */   \"addPolygon\": () => (/* binding */ addPolygon),
/* harmony export */   \"addSearchCircle\": () => (/* binding */ addSearchCircle),
/* harmony export */   \"removeFeatures\": () => (/* binding */ removeFeatures),
/* harmony export */   \"removeFeaturesByDataValue\": () => (/* binding */ removeFeaturesByDataValue),
/* harmony export */   \"fitMapToFeatures\": () => (/* binding */ fitMapToFeatures),
/* harmony export */   \"fitMapToFeaturesByType\": () => (/* binding */ fitMapToFeaturesByType),
/* harmony export */   \"hideAllOverlay\": () => (/* binding */ hideAllOverlay),
/* harmony export */   \"onSingleClickFeature\": () => (/* binding */ onSingleClickFeature),
/* harmony export */   \"punaises\": () => (/* binding */ punaises),
/* harmony export */   \"formatDate\": () => (/* binding */ formatDate),
/* harmony export */   \"map\": () => (/* binding */ map),
/* harmony export */   \"vectorSource\": () => (/* binding */ vectorSource),
/* harmony export */   \"overlayRdv\": () => (/* binding */ overlayRdv),
/* harmony export */   \"overlayGps\": () => (/* binding */ overlayGps),
/* harmony export */   \"overlayCas\": () => (/* binding */ overlayCas)
/* harmony export */ });
/* harmony import */ var core_js_modules_es_object_freeze_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.freeze.js */ \"./node_modules/core-js/modules/es.object.freeze.js\");
/* harmony import */ var core_js_modules_es_object_freeze_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_freeze_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 core_js_modules_es_array_for_each_js__WEBPACK_IMPORTED_MODULE_2__ = __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_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_for_each_js__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_3__ = __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_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ \"./node_modules/core-js/modules/es.object.keys.js\");
/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var core_js_modules_es_parse_int_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.parse-int.js */ \"./node_modules/core-js/modules/es.parse-int.js\");
/* harmony import */ var core_js_modules_es_parse_int_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_parse_int_js__WEBPACK_IMPORTED_MODULE_5__);
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ \"./node_modules/core-js/modules/es.regexp.exec.js\");
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_6__);
/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ \"./node_modules/core-js/modules/es.string.replace.js\");
/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_7__);
/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ \"./node_modules/core-js/modules/es.array.concat.js\");
/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_8__);
/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ \"./node_modules/core-js/modules/es.array.filter.js\");
/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_9__);
/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_10__ = __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_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_10__);
/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.string.split.js */ \"./node_modules/core-js/modules/es.string.split.js\");
/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_11__);
/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.array.join.js */ \"./node_modules/core-js/modules/es.array.join.js\");
/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_12__);
/* harmony import */ var core_js_modules_es_date_to_string_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.date.to-string.js */ \"./node_modules/core-js/modules/es.date.to-string.js\");
/* harmony import */ var core_js_modules_es_date_to_string_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_date_to_string_js__WEBPACK_IMPORTED_MODULE_13__);
/* harmony import */ var core_js_modules_es_array_is_array_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.array.is-array.js */ \"./node_modules/core-js/modules/es.array.is-array.js\");
/* harmony import */ var core_js_modules_es_array_is_array_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_is_array_js__WEBPACK_IMPORTED_MODULE_14__);
/* harmony import */ var core_js_modules_es_string_pad_start_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.string.pad-start.js */ \"./node_modules/core-js/modules/es.string.pad-start.js\");
/* harmony import */ var core_js_modules_es_string_pad_start_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_pad_start_js__WEBPACK_IMPORTED_MODULE_15__);
/* harmony import */ var core_js_modules_es_object_set_prototype_of_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! core-js/modules/es.object.set-prototype-of.js */ \"./node_modules/core-js/modules/es.object.set-prototype-of.js\");
/* harmony import */ var core_js_modules_es_object_set_prototype_of_js__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_set_prototype_of_js__WEBPACK_IMPORTED_MODULE_16__);
/* harmony import */ var core_js_modules_es_object_get_prototype_of_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! core-js/modules/es.object.get-prototype-of.js */ \"./node_modules/core-js/modules/es.object.get-prototype-of.js\");
/* harmony import */ var core_js_modules_es_object_get_prototype_of_js__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_prototype_of_js__WEBPACK_IMPORTED_MODULE_17__);
/* harmony import */ var core_js_modules_es_reflect_construct_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! core-js/modules/es.reflect.construct.js */ \"./node_modules/core-js/modules/es.reflect.construct.js\");
/* harmony import */ var core_js_modules_es_reflect_construct_js__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_reflect_construct_js__WEBPACK_IMPORTED_MODULE_18__);
/* harmony import */ var core_js_modules_es_object_create_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! core-js/modules/es.object.create.js */ \"./node_modules/core-js/modules/es.object.create.js\");
/* harmony import */ var core_js_modules_es_object_create_js__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_create_js__WEBPACK_IMPORTED_MODULE_19__);
/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ \"./node_modules/core-js/modules/es.symbol.js\");
/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_20__);
/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ \"./node_modules/core-js/modules/es.symbol.description.js\");
/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_21__);
/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ \"./node_modules/core-js/modules/es.object.to-string.js\");
/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_22___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_22__);
/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ \"./node_modules/core-js/modules/es.symbol.iterator.js\");
/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_23__);
/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ \"./node_modules/core-js/modules/es.array.iterator.js\");
/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_24__);
/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ \"./node_modules/core-js/modules/es.string.iterator.js\");
/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_25___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_25__);
/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ \"./node_modules/core-js/modules/web.dom-collections.iterator.js\");
/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_26___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_26__);
/* harmony import */ var ol_Map__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ol/Map */ \"./node_modules/ol/Map.js\");
/* harmony import */ var ol_View__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ol/View */ \"./node_modules/ol/View.js\");
/* harmony import */ var ol_layer__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ol/layer */ \"./node_modules/ol/layer/Tile.js\");
/* harmony import */ var ol_source__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ol/source */ \"./node_modules/ol/source/OSM.js\");
/* harmony import */ var ol_source__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ol/source */ \"./node_modules/ol/source/XYZ.js\");
/* harmony import */ var ol_proj__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ol/proj */ \"./node_modules/ol/proj.js\");
/* harmony import */ var ol_control_Control__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ol/control/Control */ \"./node_modules/ol/control/Control.js\");
/* harmony import */ var ol_control__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ol/control */ \"./node_modules/ol/control/defaults.js\");
/* harmony import */ var ol_control__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ol/control */ \"./node_modules/ol/control/ScaleLine.js\");
/* harmony import */ var ol_geom__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ol/geom */ \"./node_modules/ol/geom/Point.js\");
/* harmony import */ var ol_geom__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ol/geom */ \"./node_modules/ol/geom/Polygon.js\");
/* harmony import */ var ol_geom__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! ol/geom */ \"./node_modules/ol/geom/Circle.js\");
/* harmony import */ var ol_geom__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! ol/geom */ \"./node_modules/ol/geom/LineString.js\");
/* harmony import */ var ol_source_Vector__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ol/source/Vector */ \"./node_modules/ol/source/Vector.js\");
/* harmony import */ var ol_layer_Vector__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ol/layer/Vector */ \"./node_modules/ol/layer/Vector.js\");
/* harmony import */ var ol__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ol */ \"./node_modules/ol/Feature.js\");
/* harmony import */ var ol_style__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ol/style */ \"./node_modules/ol/style/Style.js\");
/* harmony import */ var ol_style__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ol/style */ \"./node_modules/ol/style/Icon.js\");
/* harmony import */ var ol_style__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ol/style */ \"./node_modules/ol/style/Stroke.js\");
/* harmony import */ var ol_style__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! ol/style */ \"./node_modules/ol/style/Fill.js\");
/* harmony import */ var ol_extent__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(/*! ol/extent */ \"./node_modules/ol/extent.js\");
/* harmony import */ var _images_punaise_png__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../images/punaise.png */ \"./assets/images/punaise.png\");
/* harmony import */ var _images_punaise_red_png__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ../images/punaise-red.png */ \"./assets/images/punaise-red.png\");
/* harmony import */ var _images_punaise_green_png__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ../images/punaise-green.png */ \"./assets/images/punaise-green.png\");
/* harmony import */ var _images_punaise_blue_png__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ../images/punaise-blue.png */ \"./assets/images/punaise-blue.png\");
/* harmony import */ var _images_punaise_gps_png__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ../images/punaise-gps.png */ \"./assets/images/punaise-gps.png\");
/* harmony import */ var ol_Overlay__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ol/Overlay */ \"./node_modules/ol/Overlay.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); }

function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }

function _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }

function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }

function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }

function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }

function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }

function _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }

function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }








































 //images







var punaiseImg = Object.freeze({
  1: _images_punaise_red_png__WEBPACK_IMPORTED_MODULE_29__,
  2: _images_punaise_red_png__WEBPACK_IMPORTED_MODULE_29__,
  3: _images_punaise_red_png__WEBPACK_IMPORTED_MODULE_29__,
  4: _images_punaise_blue_png__WEBPACK_IMPORTED_MODULE_31__,
  5: _images_punaise_blue_png__WEBPACK_IMPORTED_MODULE_31__,
  6: _images_punaise_blue_png__WEBPACK_IMPORTED_MODULE_31__,
  7: _images_punaise_green_png__WEBPACK_IMPORTED_MODULE_30__,
  \"default\": _images_punaise_png__WEBPACK_IMPORTED_MODULE_28__,
  \"gps\": _images_punaise_gps_png__WEBPACK_IMPORTED_MODULE_32__
});
var punaisePicto = Object.freeze({
  0: {
    unicode: \"\\uF017\",
    font: 'bold 10px \"Font Awesome 5 Free\"'
  },
  // fa-clock (Regular)
  1: {
    unicode: \"\\uF063\",
    font: 'bold 10px \"Font Awesome 5 Free\"'
  },
  // fa-arrow-up (Solid)
  2: {
    unicode: \"\\uF04B\",
    font: 'bold 10px \"Font Awesome 5 Free\"'
  },
  // fa-play (Solid)
  3: {
    unicode: \"\\uF00C\",
    font: 'bold 10px \"Font Awesome 5 Free\"'
  },
  // fa-check (Solid)
  4: {
    unicode: \"\\uF00C\",
    font: 'bold 10px \"Font Awesome 5 Free\"'
  },
  // fa-check (Solid)
  'home': {
    unicode: \"\\uE065\",
    font: 'bold 10px \"Font Awesome 5 Free\"'
  },
  // fa-house-user (Solid)
  'tech': {
    unicode: \"\\uF007\",
    font: 'bold 10px \"Font Awesome 5 Free\"'
  } // fa-user (Solid)

}); // Définition des fonds de carte

var baseLayers = {
  \"OpenStreetMap\": new ol_layer__WEBPACK_IMPORTED_MODULE_33__.default({
    source: new ol_source__WEBPACK_IMPORTED_MODULE_34__.default(),
    visible: true
  }),
  \"Satellite\": new ol_layer__WEBPACK_IMPORTED_MODULE_33__.default({
    source: new ol_source__WEBPACK_IMPORTED_MODULE_35__.default({
      url: 'https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}'
    }),
    visible: false
  })
};
var map = new ol_Map__WEBPACK_IMPORTED_MODULE_36__.default({
  target: 'map',
  // layers: [osmLayer, satelliteLayer],
  layers: Object.values(baseLayers),
  view: new ol_View__WEBPACK_IMPORTED_MODULE_37__.default({
    center: (0,ol_proj__WEBPACK_IMPORTED_MODULE_27__.fromLonLat)([2.3644638, 48.8764576]),
    // Paris
    zoom: 10
  }),
  controls: (0,ol_control__WEBPACK_IMPORTED_MODULE_38__.defaults)({
    attribution: false,
    rotate: false
  }).extend([new ol_control__WEBPACK_IMPORTED_MODULE_39__.default() // Ajoute une échelle
  ])
});

var LayerSwitcherControl = /*#__PURE__*/function (_Control) {
  _inherits(LayerSwitcherControl, _Control);

  var _super = _createSuper(LayerSwitcherControl);

  function LayerSwitcherControl() {
    var _this;

    _classCallCheck(this, LayerSwitcherControl);

    var button = document.createElement('button');
    button.innerHTML = '<i class=\"fas fa-layer-group\" style=\"margin-right: 0px;\"></i>'; // Icône du bouton

    button.className = 'layer-switch-button';
    var list = document.createElement('div');
    list.className = 'layer-switch-list hidden'; // Ajouter les options

    Object.keys(baseLayers).forEach(function (layerName) {
      var option = document.createElement('div');
      option.className = 'layer-option';
      option.innerHTML = layerName;
      option.addEventListener('click', function () {
        Object.values(baseLayers).forEach(function (layer) {
          return layer.setVisible(false);
        });
        baseLayers[layerName].setVisible(true);
        list.classList.add('hidden');
      });
      list.appendChild(option);
    });
    var container = document.createElement('div');
    container.className = 'layer-switcher ol-control';
    container.appendChild(button);
    container.appendChild(list);
    _this = _super.call(this, {
      element: container
    });
    button.addEventListener('click', function () {
      list.classList.toggle('hidden');
    }); // Cacher la liste quand on clique ailleurs

    document.addEventListener('click', function (event) {
      if (!container.contains(event.target)) {
        list.classList.add('hidden');
      }
    });
    return _this;
  }

  return LayerSwitcherControl;
}(ol_control_Control__WEBPACK_IMPORTED_MODULE_40__.default); // Ajout des contrôles à la carte


map.addControl(new LayerSwitcherControl()); // Source vectorielle pour stocker les punaises

var vectorSource = new ol_source_Vector__WEBPACK_IMPORTED_MODULE_41__.default();
var vectorLayer = new ol_layer_Vector__WEBPACK_IMPORTED_MODULE_42__.default({
  source: vectorSource
});
map.addLayer(vectorLayer);
var overlayRdv = new ol_Overlay__WEBPACK_IMPORTED_MODULE_43__.default({
  element: document.getElementById('popup-rdv'),
  autoPan: true,
  positioning: 'bottom-center',
  offset: [0, -43] // décalage en pixels (horizontal, vertical)

});
var overlayCas = new ol_Overlay__WEBPACK_IMPORTED_MODULE_43__.default({
  element: document.getElementById('popup-cas'),
  autoPan: true,
  positioning: 'bottom-center',
  offset: [0, -43] // décalage en pixels (horizontal, vertical)

});
var overlayGps = new ol_Overlay__WEBPACK_IMPORTED_MODULE_43__.default({
  element: document.getElementById('popup-gps'),
  autoPan: true,
  positioning: 'bottom-center',
  offset: [0, -31] // décalage en pixels (horizontal, vertical)

}); //Fonction pour générer une icône personnalisée avec une image, du texte et un pictogramme

function createCustomIcon(text, unicode, font, imgSrc, color, isSmall, callback) {
  var canvas = document.createElement('canvas');
  var width = 24;
  var height = 32;

  if (isSmall) {
    width = 15;
    height = 20;
  }

  canvas.width = width;
  canvas.height = height;
  var ctx = canvas.getContext('2d');
  var img = new Image();
  img.src = imgSrc;

  img.onload = function () {
    // Dessiner la punaise de base
    ctx.drawImage(img, 0, 0, canvas.width, canvas.height); // Ajouter du texte

    ctx.fillStyle = color;
    ctx.textAlign = 'center';

    if (unicode !== '') {
      ctx.font = 'bold 9px \"Lato\"';
      ctx.fillText(text, 12, 13);
      ctx.font = font;
      ctx.fillText(unicode, 12, 24);
    } else {
      // Si pas d'unicode, placer le texte normalement
      if (isSmall) {
        ctx.font = 'bold 7px \"Lato\"';
        ctx.fillText(text, width / 2, 11);
      } else {
        ctx.font = 'bold 9px \"Lato\"';
        ctx.fillText(text, width / 2, 16);
      }
    } // Convertir en Data URL et appeler le callback


    callback(canvas.toDataURL());
  };
} // Fonction pour ajouter une punaise

function addMarker(coords, text, picto, punaise, color, datas, onComplete) {
  var pictoData;
  var isSmall = false; // Déterminer si c'est une petite puce (données GPS sans picto)

  if (datas && datas.type === 'gps') {
    isSmall = true;
  }

  if (picto === '') {
    pictoData = {
      unicode: '',
      font: ''
    };
  } else {
    pictoData = punaisePicto[picto];
  }

  var _pictoData = pictoData,
      unicode = _pictoData.unicode,
      font = _pictoData.font; // Récupère unicode et font

  var imgSrc = punaiseImg[punaise];
  createCustomIcon(text, unicode, font, imgSrc, color, isSmall, function (iconUrl) {
    var feature = new ol__WEBPACK_IMPORTED_MODULE_44__.default({
      geometry: new ol_geom__WEBPACK_IMPORTED_MODULE_45__.default((0,ol_proj__WEBPACK_IMPORTED_MODULE_27__.fromLonLat)(coords))
    });
    feature.setStyle(new ol_style__WEBPACK_IMPORTED_MODULE_46__.default({
      image: new ol_style__WEBPACK_IMPORTED_MODULE_47__.default({
        src: iconUrl,
        scale: 1,
        // Ajuste selon la taille désirée
        anchor: [0.5, 1] // Pour bien aligner la punaise

      }),
      zIndex: 100
    }));
    feature.set('datas', datas);
    vectorSource.addFeature(feature); // Exécuter le callback quand l'ajout est terminé

    if (onComplete) onComplete();
  });
}
function addPolygon(coords) {
  var couleur = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '#000';
  var convertedCoords = [];

  for (var i = 0; i < coords.length; i++) {
    convertedCoords.push((0,ol_proj__WEBPACK_IMPORTED_MODULE_27__.fromLonLat)(coords[i]));
  }

  var feature = new ol__WEBPACK_IMPORTED_MODULE_44__.default({
    geometry: new ol_geom__WEBPACK_IMPORTED_MODULE_48__.default([convertedCoords])
  });
  feature.setStyle(new ol_style__WEBPACK_IMPORTED_MODULE_46__.default({
    stroke: new ol_style__WEBPACK_IMPORTED_MODULE_49__.default({
      color: couleur,
      width: 0.5
    }),
    fill: new ol_style__WEBPACK_IMPORTED_MODULE_50__.default({
      color: hexToRgba(couleur, 0.3)
    }),
    zIndex: 10
  }));
  var datas = {
    type: 'secteur'
  };
  feature.set('datas', datas);
  vectorSource.addFeature(feature);
}
/**
 * Ajoute un cercle de recherche sur la carte
 * @param {Array} center [lon, lat]
 * @param {number} radiusInKm
 */

function addSearchCircle(center, radiusInKm) {
  if (!center || !center[0] || !center[1] || !radiusInKm) return;
  var centerWebMercator = (0,ol_proj__WEBPACK_IMPORTED_MODULE_27__.fromLonLat)(center); // Pour transformer des km en unités de carte (Web Mercator), 
  // on ajuste le rayon en fonction de la résolution à la latitude donnée
  // pour que le cercle visuel corresponde à la distance réelle au sol.

  var radiusInMeters = radiusInKm * 1000;
  var resolutionAtLocation = (0,ol_proj__WEBPACK_IMPORTED_MODULE_27__.getPointResolution)('EPSG:3857', 1, centerWebMercator);
  var adjustedRadius = radiusInMeters / resolutionAtLocation;
  var feature = new ol__WEBPACK_IMPORTED_MODULE_44__.default({
    geometry: new ol_geom__WEBPACK_IMPORTED_MODULE_51__.default(centerWebMercator, adjustedRadius)
  });
  feature.setStyle(new ol_style__WEBPACK_IMPORTED_MODULE_46__.default({
    stroke: new ol_style__WEBPACK_IMPORTED_MODULE_49__.default({
      color: \"#34495e\",
      width: 2,
      lineDash: [5, 5] // Pointillé

    }),
    fill: new ol_style__WEBPACK_IMPORTED_MODULE_50__.default({
      color: hexToRgba(\"#34495e\", 0.15)
    }),
    zIndex: 1
  }));
  feature.set('datas', {
    type: 'rayon_recherche'
  });
  vectorSource.addFeature(feature);
}

function hexToRgba(hex) {
  var alpha = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
  var bigint = parseInt(hex.replace('#', ''), 16);
  var r = bigint >> 16 & 255;
  var g = bigint >> 8 & 255;
  var b = bigint & 255;
  return \"rgba(\".concat(r, \", \").concat(g, \", \").concat(b, \", \").concat(alpha, \")\");
}

function removeFeatures() {
  map.getOverlays().forEach(function (overlay) {
    //cacher les popup overlay
    overlay.setPosition(undefined);
  });
  vectorSource.clear();
}
function removeFeaturesByDataValue(dataName, value) {
  vectorSource.forEachFeature(function (feature) {
    var datas = feature.get('datas');

    if (datas && datas[dataName] === value) {
      vectorSource.removeFeature(feature);
    }
  });
}
function fitMapToFeatures() {
  if (vectorSource.getFeatures().length > 0) {
    var extent = vectorSource.getExtent(); // Récupère l'étendue de toutes les features

    map.getView().fit(extent, {
      padding: [50, 50, 50, 50],
      duration: 1000,
      maxZoom: 14 //évite dans le cas d'une feature d'être trop zoomé sur la carte

    }); // Ajuste la vue
  } else {
    // vue par défaut si aucune feature
    map.getView().setCenter((0,ol_proj__WEBPACK_IMPORTED_MODULE_27__.fromLonLat)([2.3644638, 48.8764576]));
    map.getView().setZoom(10);
  }
}
function fitMapToFeaturesByType(featureType) {
  var features = vectorSource.getFeatures();
  var filteredFeatures = features.filter(function (feature) {
    var geometry = feature.getGeometry();

    if (featureType === 'markers' || featureType === 'points') {
      return geometry instanceof ol_geom__WEBPACK_IMPORTED_MODULE_45__.default;
    } else if (featureType === 'polygons') {
      return geometry instanceof ol_geom__WEBPACK_IMPORTED_MODULE_48__.default;
    } else if (featureType === 'lines') {
      return geometry instanceof ol_geom__WEBPACK_IMPORTED_MODULE_52__.default;
    }

    return false;
  });

  if (filteredFeatures.length > 0) {
    var extent = (0,ol_extent__WEBPACK_IMPORTED_MODULE_53__.boundingExtent)(filteredFeatures.map(function (feature) {
      return feature.getGeometry().getExtent();
    }));
    map.getView().fit(extent, {
      padding: [50, 50, 50, 50],
      duration: 1000,
      maxZoom: 14
    });
  } else {
    // vue par défaut si aucune feature du type demandé
    map.getView().setCenter((0,ol_proj__WEBPACK_IMPORTED_MODULE_27__.fromLonLat)([2.3644638, 48.8764576]));
    map.getView().setZoom(10);
  }
}

function showOverlay(overlay, coord) {
  overlay.getElement().style.display = 'block';
  overlay.setPosition(coord);
}

function hideOverlay(overlay) {
  overlay.getElement().style.display = 'none';
  overlay.setPosition(undefined);
}

function hideAllOverlay() {
  map.getOverlays().forEach(function (overlay) {
    hideOverlay(overlay);
  });
}

function initPopupOverlayRdv(datas, coordinates) {
  var badgeType = overlayRdv.getElement().getElementsByClassName('badge-type')[0];
  var couleur = datas.planning.type_planification_init.couleur;
  badgeType.innerHTML = \"\".concat(datas.planning.type_planification_init.code_court);
  badgeType.style.backgroundColor = couleur;
  overlayRdv.getElement().style.borderColor = couleur;
  overlayRdv.getElement().style.setProperty('--popup-arrow-color', couleur); //numéro client
  //génération lien pour ouverture fiche client

  var completeUrl = '';

  if (datas.equipement !== null && datas.equipement.client_souscripteur !== undefined) {
    var base_url = window.location.origin;
    var url = path_client.split('/');

    if (datas.equipement.client_souscripteur.id) {
      var id = datas.equipement.client_souscripteur.id;

      if (datas.equipement.id) {
        id += '?id_equipement=' + datas.equipement.id;
      }

      url[url.length - 1] = id;
    }

    completeUrl = base_url + url.join('/');
  }

  overlayRdv.getElement().getElementsByClassName('client-id')[0].href = completeUrl;
  overlayRdv.getElement().getElementsByClassName('client-id')[0].innerHTML = \"\".concat(datas.equipement.client_souscripteur.formatted_numero_client); //badge moment

  overlayRdv.getElement().getElementsByClassName('badge-moment')[0].innerHTML = \"\".concat(datas.planning.moment_passage.libelle_planning); //badge equipement type

  overlayRdv.getElement().getElementsByClassName('badge-equip')[0].innerHTML = \"\".concat(datas.equipement.equipement_type_puissance.equipement_type.type); //infos client

  var contentClient = '';

  if (datas.equipement.client_souscripteur.etat_civil !== null) {
    // particulier
    contentClient = \"<b>\".concat(datas.equipement.client_souscripteur.etat_civil.libelle_court, \" \").concat(datas.equipement.client_souscripteur.nom);

    if (datas.equipement.client_souscripteur.prenom !== '' && datas.equipement.client_souscripteur.prenom !== null) {
      contentClient += \" \".concat(datas.equipement.client_souscripteur.prenom);
    }
  } else if (datas.equipement.client_souscripteur.categorie_pro !== null) {
    //pro
    contentClient = \"<b>\".concat(datas.equipement.client_souscripteur.categorie_pro.libelle, \" \").concat(datas.equipement.client_souscripteur.nom_entreprise);
  }

  contentClient += \"</b><br>\".concat(datas.equipement.adresse.adresse);

  if (datas.equipement.adresse.adresse_complement !== '' && datas.equipement.adresse.adresse_complement !== null) {
    contentClient += \"<br>\".concat(datas.equipement.adresse.adresse_complement);
  }

  contentClient += \"<br>\".concat(datas.equipement.adresse.code_postal, \" \").concat(datas.equipement.adresse.ville);
  overlayRdv.getElement().getElementsByClassName('client-coordonnees')[0].innerHTML = contentClient; //badge contrat

  var contrat = '';

  if (datas.equipement.contrat_en_cours !== '' && datas.equipement.contrat_en_cours !== null) {
    contrat = \"\".concat(datas.equipement.contrat_en_cours.contrat_type.libelle_court);
  }

  overlayRdv.getElement().getElementsByClassName('badge-contrat')[0].innerHTML = contrat;
  var contentRdv = \"<b>\".concat(datas.planning.libelleStatut, \"</b>\");

  if (datas.planning.heure_debut !== '' && datas.planning.heure_debut !== null) {
    contentRdv += \"<br>Heure d\\xE9but : \".concat(new Date(datas.planning.heure_debut).toLocaleTimeString('fr-FR', {
      hour: '2-digit',
      minute: '2-digit'
    }));
  }

  if (datas.planning.heure_fin !== '' && datas.planning.heure_fin !== null) {
    contentRdv += \" - Heure fin : \".concat(new Date(datas.planning.heure_fin).toLocaleTimeString('fr-FR', {
      hour: '2-digit',
      minute: '2-digit'
    }));
  }

  overlayRdv.getElement().getElementsByClassName('popup-rdv-info')[0].innerHTML = contentRdv;
  showOverlay(overlayRdv, coordinates);
}

function initPopupOverlayCas(datas, coordinates) {
  var couleur = '#34495e';
  overlayCas.getElement().style.borderColor = couleur;
  overlayCas.getElement().style.setProperty('--popup-arrow-color', couleur); //numéro client
  //génération lien pour ouverture fiche client

  var completeUrl = '';

  if (datas.id !== null && datas.client_souscripteur !== undefined) {
    var base_url = window.location.origin;
    var url = path_client.split('/');

    if (datas.client_souscripteur.id) {
      var id = datas.client_souscripteur.id;

      if (datas.id) {
        id += '?id_equipement=' + datas.id;
      }

      url[url.length - 1] = id;
    }

    completeUrl = base_url + url.join('/');
  }

  overlayCas.getElement().getElementsByClassName('client-id')[0].href = completeUrl;
  overlayCas.getElement().getElementsByClassName('client-id')[0].innerHTML = \"\".concat(datas.client_souscripteur.formatted_numero_client); //badge equipement type

  overlayCas.getElement().getElementsByClassName('badge-equip')[0].innerHTML = \"\".concat(datas.equipement_type_puissance.equipement_type.type); //infos client

  var contentClient = '';

  if (datas.client_souscripteur.etat_civil !== null) {
    // particulier
    contentClient = \"<b>\".concat(datas.client_souscripteur.etat_civil.libelle_court, \" \").concat(datas.client_souscripteur.nom);

    if (datas.client_souscripteur.prenom !== '' && datas.client_souscripteur.prenom !== null) {
      contentClient += \" \".concat(datas.client_souscripteur.prenom);
    }
  } else if (datas.client_souscripteur.categorie_pro !== null) {
    //pro
    contentClient = \"<b>\".concat(datas.client_souscripteur.categorie_pro.libelle, \" \").concat(datas.client_souscripteur.nom_entreprise);
  }

  contentClient += \"</b><br>\".concat(datas.adresse.adresse);

  if (datas.adresse.adresse_complement !== '' && datas.adresse.adresse_complement !== null) {
    contentClient += \"<br>\".concat(datas.adresse.adresse_complement);
  }

  contentClient += \"<br>\".concat(datas.adresse.code_postal, \" \").concat(datas.adresse.ville);
  overlayCas.getElement().getElementsByClassName('client-coordonnees')[0].innerHTML = contentClient; //badge contrat

  var contrat = '';

  if (datas.contrat_en_cours !== '' && datas.contrat_en_cours !== null) {
    contrat = \"\".concat(datas.contrat_en_cours.contrat_type.libelle_court);
  }

  overlayCas.getElement().getElementsByClassName('badge-contrat')[0].innerHTML = contrat;
  showOverlay(overlayCas, coordinates);
}

function initPopupOverlayGps(datas, coordinates) {
  var contentGps = '';

  if (datas.type == 'tech') {
    contentGps = \"Derni\\xE8re position - \";
  }

  contentGps += \"\".concat(datas.agent, \"<br>\").concat(datas.date_heure);
  overlayGps.getElement().getElementsByClassName('popup-gps-info')[0].innerHTML = contentGps;
  showOverlay(overlayGps, coordinates);
}

function onSingleClickFeature(event) {
  hideAllOverlay();
  var feature = map.forEachFeatureAtPixel(event.pixel, function (feature) {
    return feature;
  });

  if (feature && feature.get('datas') !== '') {
    var datas = feature.get('datas');

    if (datas.type && datas.type !== '') {
      var coordinates = feature.getGeometry().getCoordinates();

      if (datas.type === 'gps' || datas.type === 'tech') {
        initPopupOverlayGps(datas, coordinates);
      } else if (datas.type === 'intervention') {
        initPopupOverlayRdv(datas, coordinates);
      } else if (datas.type === 'cas') {
        initPopupOverlayCas(datas, coordinates); // Mise en évidence du bloc dans la sidebar

        var blockId = \"cas-block-\".concat(datas.id);
        var block = document.getElementById(blockId);

        if (block) {
          // Retirer la mise en évidence des autres blocs
          document.querySelectorAll('.cas-sidebar-block').forEach(function (el) {
            el.classList.remove('highlight-cas');
          }); // Ajouter la mise en évidence au bloc actuel

          block.classList.add('highlight-cas'); // Faire défiler jusqu'au bloc dans le conteneur de la sidebar

          block.scrollIntoView({
            behavior: 'smooth',
            block: 'nearest'
          });
        }
      }
    }
  }
}
function punaises(data) {
  var init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
  removeFeatures(); //supprimer les markers de la carte

  var remainingMarkers = 0; // Compteur des marqueurs à ajouter

  var onMarkerAdded = function onMarkerAdded() {
    remainingMarkers--;

    if (remainingMarkers === 0) {
      // Une fois que tous les marqueurs sont ajoutés, ajuster la vue
      fitMapToFeaturesByType('markers');
    }
  };

  if (data.agents || data.agent) {
    var agents = Array.isArray(data.agents) ? data.agents : data.agent ? [data.agent] : [];
    agents.forEach(function (agent) {
      if (!init) {
        // home
        remainingMarkers++;
        addMarker(agent.coordonnees, agent.code_agent, 'home', 'default', 'white', {
          type: 'home',
          agentId: agent.id
        }, onMarkerAdded);
      } // dernière position


      if (agent.derniere_pos !== '' && agent.derniere_pos !== null) {
        remainingMarkers++;
        var datas = {
          agent: \"Agent \".concat(agent.code_agent),
          date_heure: formatDate(agent.derniere_pos.date_heure),
          type: 'tech',
          agentId: agent.id
        };
        addMarker(agent.derniere_pos.coordonnees, agent.code_agent, 'tech', 'default', 'white', datas, onMarkerAdded);
      }
    });
  }

  if (!init) {
    if (data.interventions) {
      data.interventions.forEach(function (intervention) {
        var coords = [0, 0];

        if (intervention.equipement) {
          var adresse = intervention.equipement.adresse;
          coords = [adresse.longitude, adresse.latitude];
        }

        var planning = intervention.planning;
        var code = planning.utilisateur_agent.code_agent;
        var moment = planning.moment_passage.id;
        var statut = planning.statut;
        intervention.type = 'intervention';
        intervention.agentId = planning.utilisateur_agent.id;
        remainingMarkers++;
        addMarker(coords, code, statut, moment, 'white', intervention, onMarkerAdded);
      });
    }

    if (data.cas) {
      data.cas.forEach(function (cas) {
        var coords = [0, 0];

        if (cas.adresse) {
          coords = [cas.adresse.longitude, cas.adresse.latitude];
        }

        cas.type = 'cas';
        remainingMarkers++;
        addMarker(coords, cas.map_label, '', 'default', 'white', cas, onMarkerAdded);
      });
    }
  }
}
function formatDate(dateString) {
  // Crée un objet Date à partir de la chaîne
  var date = new Date(dateString); // Récupère les composants de la date

  var day = String(date.getDate()).padStart(2, '0'); // Jour au format \"02\"

  var month = String(date.getMonth() + 1).padStart(2, '0'); // Mois au format \"02\" (les mois commencent à 0)

  var year = date.getFullYear(); // Année au format \"2025\"
  // Récupère l'heure et les minutes

  var hours = String(date.getHours()).padStart(2, '0'); // Heure au format \"07\"

  var minutes = String(date.getMinutes()).padStart(2, '0'); // Minutes au format \"05\"
  // Retourne le format désiré

  return \"Le \".concat(day, \"/\").concat(month, \"/\").concat(year, \" \\xE0 \").concat(hours, \":\").concat(minutes);
}


/***/ })

}]);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvanMvbWFwLmpzIl0sIm5hbWVzIjpbInB1bmFpc2VJbWciLCJPYmplY3QiLCJmcmVlemUiLCJwdW5haXNlUmVkSW1nIiwicHVuYWlzZUJsdWVJbWciLCJwdW5haXNlR3JlZW5JbWciLCJwdW5haXNlRGVmYXVsdEltZyIsInB1bmFpc2VHcHNJbWciLCJwdW5haXNlUGljdG8iLCJ1bmljb2RlIiwiZm9udCIsImJhc2VMYXllcnMiLCJUaWxlTGF5ZXIiLCJzb3VyY2UiLCJPU00iLCJ2aXNpYmxlIiwiWFlaIiwidXJsIiwibWFwIiwiTWFwIiwidGFyZ2V0IiwibGF5ZXJzIiwidmFsdWVzIiwidmlldyIsIlZpZXciLCJjZW50ZXIiLCJmcm9tTG9uTGF0Iiwiem9vbSIsImNvbnRyb2xzIiwiZGVmYXVsdENvbnRyb2xzIiwiYXR0cmlidXRpb24iLCJyb3RhdGUiLCJleHRlbmQiLCJTY2FsZUxpbmUiLCJMYXllclN3aXRjaGVyQ29udHJvbCIsImJ1dHRvbiIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImlubmVySFRNTCIsImNsYXNzTmFtZSIsImxpc3QiLCJrZXlzIiwiZm9yRWFjaCIsImxheWVyTmFtZSIsIm9wdGlvbiIsImFkZEV2ZW50TGlzdGVuZXIiLCJsYXllciIsInNldFZpc2libGUiLCJjbGFzc0xpc3QiLCJhZGQiLCJhcHBlbmRDaGlsZCIsImNvbnRhaW5lciIsImVsZW1lbnQiLCJ0b2dnbGUiLCJldmVudCIsImNvbnRhaW5zIiwiQ29udHJvbCIsImFkZENvbnRyb2wiLCJ2ZWN0b3JTb3VyY2UiLCJWZWN0b3JTb3VyY2UiLCJ2ZWN0b3JMYXllciIsIlZlY3RvckxheWVyIiwiYWRkTGF5ZXIiLCJvdmVybGF5UmR2IiwiT3ZlcmxheSIsImdldEVsZW1lbnRCeUlkIiwiYXV0b1BhbiIsInBvc2l0aW9uaW5nIiwib2Zmc2V0Iiwib3ZlcmxheUNhcyIsIm92ZXJsYXlHcHMiLCJjcmVhdGVDdXN0b21JY29uIiwidGV4dCIsImltZ1NyYyIsImNvbG9yIiwiaXNTbWFsbCIsImNhbGxiYWNrIiwiY2FudmFzIiwid2lkdGgiLCJoZWlnaHQiLCJjdHgiLCJnZXRDb250ZXh0IiwiaW1nIiwiSW1hZ2UiLCJzcmMiLCJvbmxvYWQiLCJkcmF3SW1hZ2UiLCJmaWxsU3R5bGUiLCJ0ZXh0QWxpZ24iLCJmaWxsVGV4dCIsInRvRGF0YVVSTCIsImFkZE1hcmtlciIsImNvb3JkcyIsInBpY3RvIiwicHVuYWlzZSIsImRhdGFzIiwib25Db21wbGV0ZSIsInBpY3RvRGF0YSIsInR5cGUiLCJpY29uVXJsIiwiZmVhdHVyZSIsIkZlYXR1cmUiLCJnZW9tZXRyeSIsIlBvaW50Iiwic2V0U3R5bGUiLCJTdHlsZSIsImltYWdlIiwiSWNvbiIsInNjYWxlIiwiYW5jaG9yIiwiekluZGV4Iiwic2V0IiwiYWRkRmVhdHVyZSIsImFkZFBvbHlnb24iLCJjb3VsZXVyIiwiY29udmVydGVkQ29vcmRzIiwiaSIsImxlbmd0aCIsInB1c2giLCJQb2x5Z29uIiwic3Ryb2tlIiwiU3Ryb2tlIiwiZmlsbCIsIkZpbGwiLCJoZXhUb1JnYmEiLCJhZGRTZWFyY2hDaXJjbGUiLCJyYWRpdXNJbkttIiwiY2VudGVyV2ViTWVyY2F0b3IiLCJyYWRpdXNJbk1ldGVycyIsInJlc29sdXRpb25BdExvY2F0aW9uIiwiZ2V0UG9pbnRSZXNvbHV0aW9uIiwiYWRqdXN0ZWRSYWRpdXMiLCJDaXJjbGUiLCJsaW5lRGFzaCIsImhleCIsImFscGhhIiwiYmlnaW50IiwicGFyc2VJbnQiLCJyZXBsYWNlIiwiciIsImciLCJiIiwicmVtb3ZlRmVhdHVyZXMiLCJnZXRPdmVybGF5cyIsIm92ZXJsYXkiLCJzZXRQb3NpdGlvbiIsInVuZGVmaW5lZCIsImNsZWFyIiwicmVtb3ZlRmVhdHVyZXNCeURhdGFWYWx1ZSIsImRhdGFOYW1lIiwidmFsdWUiLCJmb3JFYWNoRmVhdHVyZSIsImdldCIsInJlbW92ZUZlYXR1cmUiLCJmaXRNYXBUb0ZlYXR1cmVzIiwiZ2V0RmVhdHVyZXMiLCJleHRlbnQiLCJnZXRFeHRlbnQiLCJnZXRWaWV3IiwiZml0IiwicGFkZGluZyIsImR1cmF0aW9uIiwibWF4Wm9vbSIsInNldENlbnRlciIsInNldFpvb20iLCJmaXRNYXBUb0ZlYXR1cmVzQnlUeXBlIiwiZmVhdHVyZVR5cGUiLCJmZWF0dXJlcyIsImZpbHRlcmVkRmVhdHVyZXMiLCJmaWx0ZXIiLCJnZXRHZW9tZXRyeSIsIkxpbmVTdHJpbmciLCJib3VuZGluZ0V4dGVudCIsInNob3dPdmVybGF5IiwiY29vcmQiLCJnZXRFbGVtZW50Iiwic3R5bGUiLCJkaXNwbGF5IiwiaGlkZU92ZXJsYXkiLCJoaWRlQWxsT3ZlcmxheSIsImluaXRQb3B1cE92ZXJsYXlSZHYiLCJjb29yZGluYXRlcyIsImJhZGdlVHlwZSIsImdldEVsZW1lbnRzQnlDbGFzc05hbWUiLCJwbGFubmluZyIsInR5cGVfcGxhbmlmaWNhdGlvbl9pbml0IiwiY29kZV9jb3VydCIsImJhY2tncm91bmRDb2xvciIsImJvcmRlckNvbG9yIiwic2V0UHJvcGVydHkiLCJjb21wbGV0ZVVybCIsImVxdWlwZW1lbnQiLCJjbGllbnRfc291c2NyaXB0ZXVyIiwiYmFzZV91cmwiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsIm9yaWdpbiIsInBhdGhfY2xpZW50Iiwic3BsaXQiLCJpZCIsImpvaW4iLCJocmVmIiwiZm9ybWF0dGVkX251bWVyb19jbGllbnQiLCJtb21lbnRfcGFzc2FnZSIsImxpYmVsbGVfcGxhbm5pbmciLCJlcXVpcGVtZW50X3R5cGVfcHVpc3NhbmNlIiwiZXF1aXBlbWVudF90eXBlIiwiY29udGVudENsaWVudCIsImV0YXRfY2l2aWwiLCJsaWJlbGxlX2NvdXJ0Iiwibm9tIiwicHJlbm9tIiwiY2F0ZWdvcmllX3BybyIsImxpYmVsbGUiLCJub21fZW50cmVwcmlzZSIsImFkcmVzc2UiLCJhZHJlc3NlX2NvbXBsZW1lbnQiLCJjb2RlX3Bvc3RhbCIsInZpbGxlIiwiY29udHJhdCIsImNvbnRyYXRfZW5fY291cnMiLCJjb250cmF0X3R5cGUiLCJjb250ZW50UmR2IiwibGliZWxsZVN0YXR1dCIsImhldXJlX2RlYnV0IiwiRGF0ZSIsInRvTG9jYWxlVGltZVN0cmluZyIsImhvdXIiLCJtaW51dGUiLCJoZXVyZV9maW4iLCJpbml0UG9wdXBPdmVybGF5Q2FzIiwiaW5pdFBvcHVwT3ZlcmxheUdwcyIsImNvbnRlbnRHcHMiLCJhZ2VudCIsImRhdGVfaGV1cmUiLCJvblNpbmdsZUNsaWNrRmVhdHVyZSIsImZvckVhY2hGZWF0dXJlQXRQaXhlbCIsInBpeGVsIiwiZ2V0Q29vcmRpbmF0ZXMiLCJibG9ja0lkIiwiYmxvY2siLCJxdWVyeVNlbGVjdG9yQWxsIiwiZWwiLCJyZW1vdmUiLCJzY3JvbGxJbnRvVmlldyIsImJlaGF2aW9yIiwicHVuYWlzZXMiLCJkYXRhIiwiaW5pdCIsInJlbWFpbmluZ01hcmtlcnMiLCJvbk1hcmtlckFkZGVkIiwiYWdlbnRzIiwiQXJyYXkiLCJpc0FycmF5IiwiY29vcmRvbm5lZXMiLCJjb2RlX2FnZW50IiwiYWdlbnRJZCIsImRlcm5pZXJlX3BvcyIsImZvcm1hdERhdGUiLCJpbnRlcnZlbnRpb25zIiwiaW50ZXJ2ZW50aW9uIiwibG9uZ2l0dWRlIiwibGF0aXR1ZGUiLCJjb2RlIiwidXRpbGlzYXRldXJfYWdlbnQiLCJtb21lbnQiLCJzdGF0dXQiLCJjYXMiLCJtYXBfbGFiZWwiLCJkYXRlU3RyaW5nIiwiZGF0ZSIsImRheSIsIlN0cmluZyIsImdldERhdGUiLCJwYWRTdGFydCIsIm1vbnRoIiwiZ2V0TW9udGgiLCJ5ZWFyIiwiZ2V0RnVsbFllYXIiLCJob3VycyIsImdldEhvdXJzIiwibWludXRlcyIsImdldE1pbnV0ZXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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TCxFQUFELENBQU4sQ0FBMEJSLFFBQTFCLENBQW1DLENBQW5DLEVBQXNDLEdBQXRDLENBQWhCLENBWG1DLENBV3lCO0FBRTVEOztBQUNBLHNCQUFhSCxHQUFiLGNBQW9CSSxLQUFwQixjQUE2QkUsSUFBN0IsbUJBQXVDRSxLQUF2QyxjQUFnREUsT0FBaEQ7QUFDSCIsImZpbGUiOiJhc3NldHNfanNfbWFwX2pzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE1hcCBmcm9tICdvbC9NYXAnO1xyXG5pbXBvcnQgVmlldyBmcm9tICdvbC9WaWV3JztcclxuaW1wb3J0IHtUaWxlIGFzIFRpbGVMYXllciwgVmVjdG9yfSBmcm9tICdvbC9sYXllcic7XHJcbmltcG9ydCB7IE9TTSwgWFlaIH0gZnJvbSAnb2wvc291cmNlJztcclxuaW1wb3J0IHsgZnJvbUxvbkxhdCwgZ2V0UG9pbnRSZXNvbHV0aW9uIH0gZnJvbSAnb2wvcHJvaic7XHJcbmltcG9ydCBDb250cm9sIGZyb20gJ29sL2NvbnRyb2wvQ29udHJvbCc7XHJcbmltcG9ydCB7IGRlZmF1bHRzIGFzIGRlZmF1bHRDb250cm9scywgU2NhbGVMaW5lIH0gZnJvbSAnb2wvY29udHJvbCc7XHJcbmltcG9ydCB7Q2lyY2xlLCBMaW5lU3RyaW5nLCBQb2ludCwgUG9seWdvbn0gZnJvbSBcIm9sL2dlb21cIjtcclxuaW1wb3J0IFZlY3RvclNvdXJjZSBmcm9tIFwib2wvc291cmNlL1ZlY3RvclwiO1xyXG5pbXBvcnQgVmVjdG9yTGF5ZXIgZnJvbSBcIm9sL2xheWVyL1ZlY3RvclwiO1xyXG5pbXBvcnQge0ZlYXR1cmV9IGZyb20gXCJvbFwiO1xyXG5pbXBvcnQge0ZpbGwsIEljb24sIFN0cm9rZSwgU3R5bGV9IGZyb20gXCJvbC9zdHlsZVwiO1xyXG5pbXBvcnQgeyBib3VuZGluZ0V4dGVudCB9IGZyb20gJ29sL2V4dGVudCc7XHJcblxyXG5cclxuLy9pbWFnZXNcclxuaW1wb3J0IHB1bmFpc2VEZWZhdWx0SW1nIGZyb20gJy4uL2ltYWdlcy9wdW5haXNlLnBuZyc7XHJcbmltcG9ydCBwdW5haXNlUmVkSW1nIGZyb20gJy4uL2ltYWdlcy9wdW5haXNlLXJlZC5wbmcnO1xyXG5pbXBvcnQgcHVuYWlzZUdyZWVuSW1nIGZyb20gJy4uL2ltYWdlcy9wdW5haXNlLWdyZWVuLnBuZyc7XHJcbmltcG9ydCBwdW5haXNlQmx1ZUltZyBmcm9tICcuLi9pbWFnZXMvcHVuYWlzZS1ibHVlLnBuZyc7XHJcbmltcG9ydCBwdW5haXNlR3BzSW1nIGZyb20gICAnLi4vaW1hZ2VzL3B1bmFpc2UtZ3BzLnBuZyc7XHJcbmltcG9ydCBPdmVybGF5IGZyb20gXCJvbC9PdmVybGF5XCI7XHJcblxyXG5jb25zdCBwdW5haXNlSW1nID0gT2JqZWN0LmZyZWV6ZSh7XHJcbiAgICAxOiBwdW5haXNlUmVkSW1nLFxyXG4gICAgMjogcHVuYWlzZVJlZEltZyxcclxuICAgIDM6IHB1bmFpc2VSZWRJbWcsXHJcbiAgICA0OiBwdW5haXNlQmx1ZUltZyxcclxuICAgIDU6IHB1bmFpc2VCbHVlSW1nLFxyXG4gICAgNjogcHVuYWlzZUJsdWVJbWcsXHJcbiAgICA3OiBwdW5haXNlR3JlZW5JbWcsXHJcbiAgICBcImRlZmF1bHRcIjogcHVuYWlzZURlZmF1bHRJbWcsXHJcbiAgICBcImdwc1wiOiBwdW5haXNlR3BzSW1nXHJcbn0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IHB1bmFpc2VQaWN0byA9IE9iamVjdC5mcmVlemUoe1xyXG4gICAgMDogeyB1bmljb2RlOiAnXFx1ZjAxNycsIGZvbnQ6ICdib2xkIDEwcHggXCJGb250IEF3ZXNvbWUgNSBGcmVlXCInIH0sIC8vIGZhLWNsb2NrIChSZWd1bGFyKVxyXG4gICAgMTogeyB1bmljb2RlOiAnXFx1ZjA2MycsIGZvbnQ6ICdib2xkIDEwcHggXCJGb250IEF3ZXNvbWUgNSBGcmVlXCInIH0sIC8vIGZhLWFycm93LXVwIChTb2xpZClcclxuICAgIDI6IHsgdW5pY29kZTogJ1xcdWYwNGInLCBmb250OiAnYm9sZCAxMHB4IFwiRm9udCBBd2Vzb21lIDUgRnJlZVwiJyB9LCAvLyBmYS1wbGF5IChTb2xpZClcclxuICAgIDM6IHsgdW5pY29kZTogJ1xcdWYwMGMnLCBmb250OiAnYm9sZCAxMHB4IFwiRm9udCBBd2Vzb21lIDUgRnJlZVwiJyB9LCAvLyBmYS1jaGVjayAoU29saWQpXHJcbiAgICA0OiB7IHVuaWNvZGU6ICdcXHVmMDBjJywgZm9udDogJ2JvbGQgMTBweCBcIkZvbnQgQXdlc29tZSA1IEZyZWVcIicgfSwgIC8vIGZhLWNoZWNrIChTb2xpZClcclxuICAgICdob21lJzogeyB1bmljb2RlOiAnXFx1ZTA2NScsIGZvbnQ6ICdib2xkIDEwcHggXCJGb250IEF3ZXNvbWUgNSBGcmVlXCInIH0sICAvLyBmYS1ob3VzZS11c2VyIChTb2xpZClcclxuICAgICd0ZWNoJzogeyB1bmljb2RlOiAnXFx1ZjAwNycsIGZvbnQ6ICdib2xkIDEwcHggXCJGb250IEF3ZXNvbWUgNSBGcmVlXCInIH0gIC8vIGZhLXVzZXIgKFNvbGlkKVxyXG59KTtcclxuXHJcblxyXG5cclxuLy8gRMOpZmluaXRpb24gZGVzIGZvbmRzIGRlIGNhcnRlXHJcbmNvbnN0IGJhc2VMYXllcnMgPSB7XHJcbiAgICBcIk9wZW5TdHJlZXRNYXBcIjogbmV3IFRpbGVMYXllcih7XHJcbiAgICAgICAgc291cmNlOiBuZXcgT1NNKCksXHJcbiAgICAgICAgdmlzaWJsZTogdHJ1ZSxcclxuICAgIH0pLFxyXG4gICAgXCJTYXRlbGxpdGVcIjogbmV3IFRpbGVMYXllcih7XHJcbiAgICAgICAgc291cmNlOiBuZXcgWFlaKHtcclxuICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9JbWFnZXJ5L01hcFNlcnZlci90aWxlL3t6fS97eX0ve3h9JyxcclxuICAgICAgICB9KSxcclxuICAgICAgICB2aXNpYmxlOiBmYWxzZSxcclxuICAgIH0pLFxyXG59O1xyXG5cclxuY29uc3QgbWFwID0gbmV3IE1hcCh7XHJcbiAgICB0YXJnZXQ6ICdtYXAnLFxyXG4gICAgLy8gbGF5ZXJzOiBbb3NtTGF5ZXIsIHNhdGVsbGl0ZUxheWVyXSxcclxuICAgIGxheWVyczogT2JqZWN0LnZhbHVlcyhiYXNlTGF5ZXJzKSxcclxuICAgIHZpZXc6IG5ldyBWaWV3KHtcclxuICAgICAgICBjZW50ZXI6IGZyb21Mb25MYXQoWzIuMzY0NDYzOCwgNDguODc2NDU3Nl0pLCAvLyBQYXJpc1xyXG4gICAgICAgIHpvb206IDEwLFxyXG4gICAgfSksXHJcbiAgICBjb250cm9sczogZGVmYXVsdENvbnRyb2xzKHtcclxuICAgICAgICBhdHRyaWJ1dGlvbjogZmFsc2UgLFxyXG4gICAgICAgIHJvdGF0ZTogZmFsc2UsXHJcbiAgICB9KS5leHRlbmQoW1xyXG4gICAgICAgIG5ldyBTY2FsZUxpbmUoKSwgLy8gQWpvdXRlIHVuZSDDqWNoZWxsZVxyXG4gICAgXSlcclxufSk7XHJcblxyXG5jbGFzcyBMYXllclN3aXRjaGVyQ29udHJvbCBleHRlbmRzIENvbnRyb2wge1xyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgY29uc3QgYnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7XHJcbiAgICAgICAgYnV0dG9uLmlubmVySFRNTCA9ICc8aSBjbGFzcz1cImZhcyBmYS1sYXllci1ncm91cFwiIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAwcHg7XCI+PC9pPic7IC8vIEljw7RuZSBkdSBib3V0b25cclxuICAgICAgICBidXR0b24uY2xhc3NOYW1lID0gJ2xheWVyLXN3aXRjaC1idXR0b24nO1xyXG5cclxuICAgICAgICBjb25zdCBsaXN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgICAgbGlzdC5jbGFzc05hbWUgPSAnbGF5ZXItc3dpdGNoLWxpc3QgaGlkZGVuJztcclxuXHJcbiAgICAgICAgLy8gQWpvdXRlciBsZXMgb3B0aW9uc1xyXG4gICAgICAgIE9iamVjdC5rZXlzKGJhc2VMYXllcnMpLmZvckVhY2gobGF5ZXJOYW1lID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgb3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgICAgICAgIG9wdGlvbi5jbGFzc05hbWUgPSAnbGF5ZXItb3B0aW9uJztcclxuICAgICAgICAgICAgb3B0aW9uLmlubmVySFRNTCA9IGxheWVyTmFtZTtcclxuICAgICAgICAgICAgb3B0aW9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgT2JqZWN0LnZhbHVlcyhiYXNlTGF5ZXJzKS5mb3JFYWNoKGxheWVyID0+IGxheWVyLnNldFZpc2libGUoZmFsc2UpKTtcclxuICAgICAgICAgICAgICAgIGJhc2VMYXllcnNbbGF5ZXJOYW1lXS5zZXRWaXNpYmxlKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgbGlzdC5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGxpc3QuYXBwZW5kQ2hpbGQob3B0aW9uKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgICAgY29udGFpbmVyLmNsYXNzTmFtZSA9ICdsYXllci1zd2l0Y2hlciBvbC1jb250cm9sJztcclxuICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoYnV0dG9uKTtcclxuICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQobGlzdCk7XHJcblxyXG4gICAgICAgIHN1cGVyKHsgZWxlbWVudDogY29udGFpbmVyIH0pO1xyXG5cclxuICAgICAgICBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGxpc3QuY2xhc3NMaXN0LnRvZ2dsZSgnaGlkZGVuJyk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vIENhY2hlciBsYSBsaXN0ZSBxdWFuZCBvbiBjbGlxdWUgYWlsbGV1cnNcclxuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChldmVudCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWNvbnRhaW5lci5jb250YWlucyhldmVudC50YXJnZXQpKSB7XHJcbiAgICAgICAgICAgICAgICBsaXN0LmNsYXNzTGlzdC5hZGQoJ2hpZGRlbicpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuXHJcblxyXG5cclxuLy8gQWpvdXQgZGVzIGNvbnRyw7RsZXMgw6AgbGEgY2FydGVcclxubWFwLmFkZENvbnRyb2wobmV3IExheWVyU3dpdGNoZXJDb250cm9sKCkpO1xyXG5cclxuLy8gU291cmNlIHZlY3RvcmllbGxlIHBvdXIgc3RvY2tlciBsZXMgcHVuYWlzZXNcclxuY29uc3QgdmVjdG9yU291cmNlID0gbmV3IFZlY3RvclNvdXJjZSgpO1xyXG5jb25zdCB2ZWN0b3JMYXllciA9IG5ldyBWZWN0b3JMYXllcih7IHNvdXJjZTogdmVjdG9yU291cmNlIH0pO1xyXG5tYXAuYWRkTGF5ZXIodmVjdG9yTGF5ZXIpO1xyXG5cclxubGV0IG92ZXJsYXlSZHYgPSBuZXcgT3ZlcmxheSh7XHJcbiAgICBlbGVtZW50OiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncG9wdXAtcmR2JyksXHJcbiAgICBhdXRvUGFuOiB0cnVlLFxyXG4gICAgcG9zaXRpb25pbmc6ICdib3R0b20tY2VudGVyJyxcclxuICAgIG9mZnNldDogWzAsIC00M10gLy8gZMOpY2FsYWdlIGVuIHBpeGVscyAoaG9yaXpvbnRhbCwgdmVydGljYWwpXHJcbn0pO1xyXG5cclxubGV0IG92ZXJsYXlDYXMgPSBuZXcgT3ZlcmxheSh7XHJcbiAgICBlbGVtZW50OiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncG9wdXAtY2FzJyksXHJcbiAgICBhdXRvUGFuOiB0cnVlLFxyXG4gICAgcG9zaXRpb25pbmc6ICdib3R0b20tY2VudGVyJyxcclxuICAgIG9mZnNldDogWzAsIC00M10gLy8gZMOpY2FsYWdlIGVuIHBpeGVscyAoaG9yaXpvbnRhbCwgdmVydGljYWwpXHJcbn0pO1xyXG5cclxubGV0IG92ZXJsYXlHcHMgPSBuZXcgT3ZlcmxheSh7XHJcbiAgICBlbGVtZW50OiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncG9wdXAtZ3BzJyksXHJcbiAgICBhdXRvUGFuOiB0cnVlLFxyXG4gICAgcG9zaXRpb25pbmc6ICdib3R0b20tY2VudGVyJyxcclxuICAgIG9mZnNldDogWzAsIC0zMV0gLy8gZMOpY2FsYWdlIGVuIHBpeGVscyAoaG9yaXpvbnRhbCwgdmVydGljYWwpXHJcbn0pO1xyXG5cclxuXHJcblxyXG4vL0ZvbmN0aW9uIHBvdXIgZ8OpbsOpcmVyIHVuZSBpY8O0bmUgcGVyc29ubmFsaXPDqWUgYXZlYyB1bmUgaW1hZ2UsIGR1IHRleHRlIGV0IHVuIHBpY3RvZ3JhbW1lXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDdXN0b21JY29uKHRleHQsIHVuaWNvZGUsIGZvbnQsIGltZ1NyYywgY29sb3IsIGlzU21hbGwsIGNhbGxiYWNrKSB7XHJcbiAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcclxuICAgIGxldCB3aWR0aCA9IDI0O1xyXG4gICAgbGV0IGhlaWdodCA9IDMyO1xyXG4gICAgaWYgKGlzU21hbGwpIHtcclxuICAgICAgICB3aWR0aCA9IDE1O1xyXG4gICAgICAgIGhlaWdodCA9IDIwO1xyXG4gICAgfVxyXG4gICAgY2FudmFzLndpZHRoID0gd2lkdGg7XHJcbiAgICBjYW52YXMuaGVpZ2h0ID0gaGVpZ2h0O1xyXG4gICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XHJcblxyXG4gICAgY29uc3QgaW1nID0gbmV3IEltYWdlKCk7XHJcbiAgICBpbWcuc3JjID0gaW1nU3JjO1xyXG5cclxuICAgIGltZy5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgLy8gRGVzc2luZXIgbGEgcHVuYWlzZSBkZSBiYXNlXHJcbiAgICAgICAgY3R4LmRyYXdJbWFnZShpbWcsIDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7XHJcblxyXG4gICAgICAgIC8vIEFqb3V0ZXIgZHUgdGV4dGVcclxuICAgICAgICBjdHguZmlsbFN0eWxlID0gY29sb3I7XHJcbiAgICAgICAgY3R4LnRleHRBbGlnbiA9ICdjZW50ZXInO1xyXG5cclxuICAgICAgICBpZiAodW5pY29kZSAhPT0gJycpIHtcclxuICAgICAgICAgICAgY3R4LmZvbnQgPSAnYm9sZCA5cHggXCJMYXRvXCInO1xyXG4gICAgICAgICAgICBjdHguZmlsbFRleHQodGV4dCwgMTIsIDEzKTtcclxuICAgICAgICAgICAgY3R4LmZvbnQgPSBmb250O1xyXG4gICAgICAgICAgICBjdHguZmlsbFRleHQodW5pY29kZSwgMTIsIDI0KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBTaSBwYXMgZCd1bmljb2RlLCBwbGFjZXIgbGUgdGV4dGUgbm9ybWFsZW1lbnRcclxuICAgICAgICAgICAgaWYgKGlzU21hbGwpIHtcclxuICAgICAgICAgICAgICAgIGN0eC5mb250ID0gJ2JvbGQgN3B4IFwiTGF0b1wiJztcclxuICAgICAgICAgICAgICAgIGN0eC5maWxsVGV4dCh0ZXh0LCB3aWR0aCAvIDIsIDExKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGN0eC5mb250ID0gJ2JvbGQgOXB4IFwiTGF0b1wiJztcclxuICAgICAgICAgICAgICAgIGN0eC5maWxsVGV4dCh0ZXh0LCB3aWR0aCAvIDIsIDE2KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gQ29udmVydGlyIGVuIERhdGEgVVJMIGV0IGFwcGVsZXIgbGUgY2FsbGJhY2tcclxuICAgICAgICBjYWxsYmFjayhjYW52YXMudG9EYXRhVVJMKCkpO1xyXG4gICAgfTtcclxufVxyXG5cclxuXHJcbi8vIEZvbmN0aW9uIHBvdXIgYWpvdXRlciB1bmUgcHVuYWlzZVxyXG5leHBvcnQgZnVuY3Rpb24gYWRkTWFya2VyKGNvb3JkcywgdGV4dCwgcGljdG8sIHB1bmFpc2UsIGNvbG9yLCBkYXRhcywgb25Db21wbGV0ZSkge1xyXG4gICAgbGV0IHBpY3RvRGF0YTtcclxuICAgIGxldCBpc1NtYWxsID0gZmFsc2U7XHJcbiAgICBcclxuICAgIC8vIETDqXRlcm1pbmVyIHNpIGMnZXN0IHVuZSBwZXRpdGUgcHVjZSAoZG9ubsOpZXMgR1BTIHNhbnMgcGljdG8pXHJcbiAgICBpZiAoZGF0YXMgJiYgZGF0YXMudHlwZSA9PT0gJ2dwcycpIHtcclxuICAgICAgICBpc1NtYWxsID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocGljdG8gPT09ICcnKSB7XHJcbiAgICAgICAgcGljdG9EYXRhID0geyB1bmljb2RlOiAnJywgZm9udDogJycgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcGljdG9EYXRhID0gcHVuYWlzZVBpY3RvW3BpY3RvXTtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgdW5pY29kZSwgZm9udCB9ID0gcGljdG9EYXRhOyAvLyBSw6ljdXDDqHJlIHVuaWNvZGUgZXQgZm9udFxyXG4gICAgY29uc3QgaW1nU3JjID0gcHVuYWlzZUltZ1twdW5haXNlXTtcclxuICAgIGNyZWF0ZUN1c3RvbUljb24odGV4dCwgdW5pY29kZSwgZm9udCwgaW1nU3JjLCBjb2xvciwgaXNTbWFsbCwgKGljb25VcmwpID0+IHtcclxuICAgICAgICBjb25zdCBmZWF0dXJlID0gbmV3IEZlYXR1cmUoe1xyXG4gICAgICAgICAgICBnZW9tZXRyeTogbmV3IFBvaW50KGZyb21Mb25MYXQoY29vcmRzKSksXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGZlYXR1cmUuc2V0U3R5bGUoXHJcbiAgICAgICAgICAgIG5ldyBTdHlsZSh7XHJcbiAgICAgICAgICAgICAgICBpbWFnZTogbmV3IEljb24oe1xyXG4gICAgICAgICAgICAgICAgICAgIHNyYzogaWNvblVybCxcclxuICAgICAgICAgICAgICAgICAgICBzY2FsZTogMSwgLy8gQWp1c3RlIHNlbG9uIGxhIHRhaWxsZSBkw6lzaXLDqWVcclxuICAgICAgICAgICAgICAgICAgICBhbmNob3I6IFswLjUsIDFdLCAvLyBQb3VyIGJpZW4gYWxpZ25lciBsYSBwdW5haXNlXHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIHpJbmRleDogMTAwXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgICAgICBmZWF0dXJlLnNldCgnZGF0YXMnLCBkYXRhcyk7XHJcbiAgICAgICAgdmVjdG9yU291cmNlLmFkZEZlYXR1cmUoZmVhdHVyZSk7XHJcbiAgICAgICAgLy8gRXjDqWN1dGVyIGxlIGNhbGxiYWNrIHF1YW5kIGwnYWpvdXQgZXN0IHRlcm1pbsOpXHJcbiAgICAgICAgaWYgKG9uQ29tcGxldGUpIG9uQ29tcGxldGUoKTtcclxuICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYWRkUG9seWdvbihjb29yZHMsIGNvdWxldXIgPSAnIzAwMCcpe1xyXG4gICAgY29uc3QgY29udmVydGVkQ29vcmRzID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvb3Jkcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnZlcnRlZENvb3Jkcy5wdXNoKGZyb21Mb25MYXQoY29vcmRzW2ldKSk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGNvbnN0IGZlYXR1cmUgPSBuZXcgRmVhdHVyZSh7XHJcbiAgICAgICAgZ2VvbWV0cnk6IG5ldyBQb2x5Z29uKFtjb252ZXJ0ZWRDb29yZHNdKSxcclxuICAgIH0pO1xyXG4gICAgZmVhdHVyZS5zZXRTdHlsZShcclxuICAgICAgICBuZXcgU3R5bGUoe1xyXG4gICAgICAgICAgICBzdHJva2U6IG5ldyBTdHJva2Uoe1xyXG4gICAgICAgICAgICAgICAgY29sb3I6IGNvdWxldXIsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogMC41XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBmaWxsOiBuZXcgRmlsbCh7XHJcbiAgICAgICAgICAgICAgICBjb2xvcjogaGV4VG9SZ2JhKGNvdWxldXIsIDAuMylcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIHpJbmRleDogMTBcclxuICAgICAgICB9KVxyXG4gICAgKTtcclxuICAgIGNvbnN0IGRhdGFzID0ge1xyXG4gICAgICAgIHR5cGU6ICdzZWN0ZXVyJ1xyXG4gICAgfTtcclxuICAgIGZlYXR1cmUuc2V0KCdkYXRhcycsIGRhdGFzKTtcclxuICAgIHZlY3RvclNvdXJjZS5hZGRGZWF0dXJlKGZlYXR1cmUpO1xyXG59XHJcblxyXG4vKipcclxuICogQWpvdXRlIHVuIGNlcmNsZSBkZSByZWNoZXJjaGUgc3VyIGxhIGNhcnRlXHJcbiAqIEBwYXJhbSB7QXJyYXl9IGNlbnRlciBbbG9uLCBsYXRdXHJcbiAqIEBwYXJhbSB7bnVtYmVyfSByYWRpdXNJbkttXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gYWRkU2VhcmNoQ2lyY2xlKGNlbnRlciwgcmFkaXVzSW5LbSkge1xyXG4gICAgaWYgKCFjZW50ZXIgfHwgIWNlbnRlclswXSB8fCAhY2VudGVyWzFdIHx8ICFyYWRpdXNJbkttKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgY2VudGVyV2ViTWVyY2F0b3IgPSBmcm9tTG9uTGF0KGNlbnRlcik7XHJcbiAgICBcclxuICAgIC8vIFBvdXIgdHJhbnNmb3JtZXIgZGVzIGttIGVuIHVuaXTDqXMgZGUgY2FydGUgKFdlYiBNZXJjYXRvciksIFxyXG4gICAgLy8gb24gYWp1c3RlIGxlIHJheW9uIGVuIGZvbmN0aW9uIGRlIGxhIHLDqXNvbHV0aW9uIMOgIGxhIGxhdGl0dWRlIGRvbm7DqWVcclxuICAgIC8vIHBvdXIgcXVlIGxlIGNlcmNsZSB2aXN1ZWwgY29ycmVzcG9uZGUgw6AgbGEgZGlzdGFuY2UgcsOpZWxsZSBhdSBzb2wuXHJcbiAgICBjb25zdCByYWRpdXNJbk1ldGVycyA9IHJhZGl1c0luS20gKiAxMDAwO1xyXG4gICAgY29uc3QgcmVzb2x1dGlvbkF0TG9jYXRpb24gPSBnZXRQb2ludFJlc29sdXRpb24oJ0VQU0c6Mzg1NycsIDEsIGNlbnRlcldlYk1lcmNhdG9yKTtcclxuICAgIGNvbnN0IGFkanVzdGVkUmFkaXVzID0gcmFkaXVzSW5NZXRlcnMgLyByZXNvbHV0aW9uQXRMb2NhdGlvbjtcclxuICAgIFxyXG4gICAgY29uc3QgZmVhdHVyZSA9IG5ldyBGZWF0dXJlKHtcclxuICAgICAgICBnZW9tZXRyeTogbmV3IENpcmNsZShjZW50ZXJXZWJNZXJjYXRvciwgYWRqdXN0ZWRSYWRpdXMpXHJcbiAgICB9KTtcclxuXHJcbiAgICBmZWF0dXJlLnNldFN0eWxlKFxyXG4gICAgICAgIG5ldyBTdHlsZSh7XHJcbiAgICAgICAgICAgIHN0cm9rZTogbmV3IFN0cm9rZSh7XHJcbiAgICAgICAgICAgICAgICBjb2xvcjogXCIjMzQ0OTVlXCIsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogMixcclxuICAgICAgICAgICAgICAgIGxpbmVEYXNoOiBbNSwgNV0gLy8gUG9pbnRpbGzDqVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgZmlsbDogbmV3IEZpbGwoe1xyXG4gICAgICAgICAgICAgICAgY29sb3IgOiBoZXhUb1JnYmEoXCIjMzQ0OTVlXCIsIDAuMTUpXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICB6SW5kZXg6IDFcclxuICAgICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgICBmZWF0dXJlLnNldCgnZGF0YXMnLCB7IHR5cGU6ICdyYXlvbl9yZWNoZXJjaGUnIH0pO1xyXG4gICAgdmVjdG9yU291cmNlLmFkZEZlYXR1cmUoZmVhdHVyZSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGhleFRvUmdiYShoZXgsIGFscGhhID0gMSkge1xyXG4gICAgY29uc3QgYmlnaW50ID0gcGFyc2VJbnQoaGV4LnJlcGxhY2UoJyMnLCAnJyksIDE2KTtcclxuICAgIGNvbnN0IHIgPSAoYmlnaW50ID4+IDE2KSAmIDI1NTtcclxuICAgIGNvbnN0IGcgPSAoYmlnaW50ID4+IDgpICYgMjU1O1xyXG4gICAgY29uc3QgYiA9IGJpZ2ludCAmIDI1NTtcclxuICAgIHJldHVybiBgcmdiYSgke3J9LCAke2d9LCAke2J9LCAke2FscGhhfSlgO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlRmVhdHVyZXMoKXtcclxuICAgIG1hcC5nZXRPdmVybGF5cygpLmZvckVhY2goZnVuY3Rpb24gKG92ZXJsYXkpIHsgLy9jYWNoZXIgbGVzIHBvcHVwIG92ZXJsYXlcclxuICAgICAgICBvdmVybGF5LnNldFBvc2l0aW9uKHVuZGVmaW5lZCk7XHJcbiAgICB9KTtcclxuICAgIHZlY3RvclNvdXJjZS5jbGVhcigpO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVGZWF0dXJlc0J5RGF0YVZhbHVlKGRhdGFOYW1lLCB2YWx1ZSl7XHJcbiAgICB2ZWN0b3JTb3VyY2UuZm9yRWFjaEZlYXR1cmUoKGZlYXR1cmUpID0+IHtcclxuICAgICAgICBjb25zdCBkYXRhcyA9IGZlYXR1cmUuZ2V0KCdkYXRhcycpO1xyXG4gICAgICAgIGlmIChkYXRhcyAmJiBkYXRhc1tkYXRhTmFtZV0gPT09IHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHZlY3RvclNvdXJjZS5yZW1vdmVGZWF0dXJlKGZlYXR1cmUpO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZml0TWFwVG9GZWF0dXJlcygpIHtcclxuICAgIGlmICh2ZWN0b3JTb3VyY2UuZ2V0RmVhdHVyZXMoKS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgY29uc3QgZXh0ZW50ID0gdmVjdG9yU291cmNlLmdldEV4dGVudCgpOyAvLyBSw6ljdXDDqHJlIGwnw6l0ZW5kdWUgZGUgdG91dGVzIGxlcyBmZWF0dXJlc1xyXG4gICAgICAgIG1hcC5nZXRWaWV3KCkuZml0KGV4dGVudCwge1xyXG4gICAgICAgICAgICBwYWRkaW5nOiBbNTAsIDUwLCA1MCwgNTBdLFxyXG4gICAgICAgICAgICBkdXJhdGlvbjogMTAwMCxcclxuICAgICAgICAgICAgbWF4Wm9vbTogMTQgLy/DqXZpdGUgZGFucyBsZSBjYXMgZCd1bmUgZmVhdHVyZSBkJ8OqdHJlIHRyb3Agem9vbcOpIHN1ciBsYSBjYXJ0ZVxyXG4gICAgICAgIH0pOyAvLyBBanVzdGUgbGEgdnVlXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIHZ1ZSBwYXIgZMOpZmF1dCBzaSBhdWN1bmUgZmVhdHVyZVxyXG4gICAgICAgIG1hcC5nZXRWaWV3KCkuc2V0Q2VudGVyKGZyb21Mb25MYXQoWzIuMzY0NDYzOCwgNDguODc2NDU3Nl0pKTtcclxuICAgICAgICBtYXAuZ2V0VmlldygpLnNldFpvb20oMTApO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZml0TWFwVG9GZWF0dXJlc0J5VHlwZShmZWF0dXJlVHlwZSkge1xyXG4gICAgY29uc3QgZmVhdHVyZXMgPSB2ZWN0b3JTb3VyY2UuZ2V0RmVhdHVyZXMoKTtcclxuICAgIGNvbnN0IGZpbHRlcmVkRmVhdHVyZXMgPSBmZWF0dXJlcy5maWx0ZXIoZmVhdHVyZSA9PiB7XHJcbiAgICAgICAgY29uc3QgZ2VvbWV0cnkgPSBmZWF0dXJlLmdldEdlb21ldHJ5KCk7XHJcbiAgICAgICAgaWYgKGZlYXR1cmVUeXBlID09PSAnbWFya2VycycgfHwgZmVhdHVyZVR5cGUgPT09ICdwb2ludHMnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBnZW9tZXRyeSBpbnN0YW5jZW9mIFBvaW50O1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZmVhdHVyZVR5cGUgPT09ICdwb2x5Z29ucycpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGdlb21ldHJ5IGluc3RhbmNlb2YgUG9seWdvbjtcclxuICAgICAgICB9IGVsc2UgaWYgKGZlYXR1cmVUeXBlID09PSAnbGluZXMnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBnZW9tZXRyeSBpbnN0YW5jZW9mIExpbmVTdHJpbmc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0pO1xyXG4gICAgXHJcbiAgICBpZiAoZmlsdGVyZWRGZWF0dXJlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgY29uc3QgZXh0ZW50ID0gYm91bmRpbmdFeHRlbnQoXHJcbiAgICAgICAgICAgIGZpbHRlcmVkRmVhdHVyZXMubWFwKGZlYXR1cmUgPT4gZmVhdHVyZS5nZXRHZW9tZXRyeSgpLmdldEV4dGVudCgpKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgbWFwLmdldFZpZXcoKS5maXQoZXh0ZW50LCB7XHJcbiAgICAgICAgICAgIHBhZGRpbmc6IFs1MCwgNTAsIDUwLCA1MF0sXHJcbiAgICAgICAgICAgIGR1cmF0aW9uOiAxMDAwLFxyXG4gICAgICAgICAgICBtYXhab29tOiAxNFxyXG4gICAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICAvLyB2dWUgcGFyIGTDqWZhdXQgc2kgYXVjdW5lIGZlYXR1cmUgZHUgdHlwZSBkZW1hbmTDqVxyXG4gICAgICAgIG1hcC5nZXRWaWV3KCkuc2V0Q2VudGVyKGZyb21Mb25MYXQoWzIuMzY0NDYzOCwgNDguODc2NDU3Nl0pKTtcclxuICAgICAgICBtYXAuZ2V0VmlldygpLnNldFpvb20oMTApO1xyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBzaG93T3ZlcmxheShvdmVybGF5LCBjb29yZCkge1xyXG4gICAgb3ZlcmxheS5nZXRFbGVtZW50KCkuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XHJcbiAgICBvdmVybGF5LnNldFBvc2l0aW9uKGNvb3JkKTtcclxufVxyXG5cclxuZnVuY3Rpb24gaGlkZU92ZXJsYXkob3ZlcmxheSkge1xyXG4gICAgb3ZlcmxheS5nZXRFbGVtZW50KCkuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgIG92ZXJsYXkuc2V0UG9zaXRpb24odW5kZWZpbmVkKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGhpZGVBbGxPdmVybGF5KCl7XHJcbiAgICBtYXAuZ2V0T3ZlcmxheXMoKS5mb3JFYWNoKGZ1bmN0aW9uIChvdmVybGF5KSB7XHJcbiAgICAgICAgaGlkZU92ZXJsYXkob3ZlcmxheSk7XHJcbiAgICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gaW5pdFBvcHVwT3ZlcmxheVJkdihkYXRhcywgY29vcmRpbmF0ZXMpe1xyXG4gICAgY29uc3QgYmFkZ2VUeXBlID0gb3ZlcmxheVJkdi5nZXRFbGVtZW50KCkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYmFkZ2UtdHlwZScpWzBdO1xyXG4gICAgY29uc3QgY291bGV1ciA9IGRhdGFzLnBsYW5uaW5nLnR5cGVfcGxhbmlmaWNhdGlvbl9pbml0LmNvdWxldXI7XHJcbiAgICBiYWRnZVR5cGUuaW5uZXJIVE1MID0gYCR7ZGF0YXMucGxhbm5pbmcudHlwZV9wbGFuaWZpY2F0aW9uX2luaXQuY29kZV9jb3VydH1gO1xyXG4gICAgYmFkZ2VUeXBlLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IGNvdWxldXI7XHJcbiAgICBvdmVybGF5UmR2LmdldEVsZW1lbnQoKS5zdHlsZS5ib3JkZXJDb2xvciA9IGNvdWxldXI7XHJcbiAgICBvdmVybGF5UmR2LmdldEVsZW1lbnQoKS5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1wb3B1cC1hcnJvdy1jb2xvcicsIGNvdWxldXIpO1xyXG4gICAgLy9udW3DqXJvIGNsaWVudFxyXG4gICAgLy9nw6luw6lyYXRpb24gbGllbiBwb3VyIG91dmVydHVyZSBmaWNoZSBjbGllbnRcclxuICAgIGxldCBjb21wbGV0ZVVybCA9ICcnO1xyXG4gICAgaWYoZGF0YXMuZXF1aXBlbWVudCAhPT0gbnVsbCAmJiBkYXRhcy5lcXVpcGVtZW50LmNsaWVudF9zb3VzY3JpcHRldXIgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGxldCBiYXNlX3VybCA9IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW47XHJcbiAgICAgICAgbGV0IHVybCA9IHBhdGhfY2xpZW50LnNwbGl0KCcvJyk7XHJcbiAgICAgICAgaWYgKGRhdGFzLmVxdWlwZW1lbnQuY2xpZW50X3NvdXNjcmlwdGV1ci5pZCkge1xyXG4gICAgICAgICAgICBsZXQgaWQgPSBkYXRhcy5lcXVpcGVtZW50LmNsaWVudF9zb3VzY3JpcHRldXIuaWQ7XHJcbiAgICAgICAgICAgIGlmIChkYXRhcy5lcXVpcGVtZW50LmlkKSB7XHJcbiAgICAgICAgICAgICAgICBpZCArPSAnP2lkX2VxdWlwZW1lbnQ9JyArIGRhdGFzLmVxdWlwZW1lbnQuaWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdXJsW3VybC5sZW5ndGggLSAxXSA9IGlkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb21wbGV0ZVVybCA9IGJhc2VfdXJsICsgdXJsLmpvaW4oJy8nKTtcclxuICAgIH1cclxuICAgIG92ZXJsYXlSZHYuZ2V0RWxlbWVudCgpLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2NsaWVudC1pZCcpWzBdLmhyZWYgPSBjb21wbGV0ZVVybDtcclxuICAgIG92ZXJsYXlSZHYuZ2V0RWxlbWVudCgpLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2NsaWVudC1pZCcpWzBdLmlubmVySFRNTCA9IGAke2RhdGFzLmVxdWlwZW1lbnQuY2xpZW50X3NvdXNjcmlwdGV1ci5mb3JtYXR0ZWRfbnVtZXJvX2NsaWVudH1gO1xyXG4gICAgLy9iYWRnZSBtb21lbnRcclxuICAgIG92ZXJsYXlSZHYuZ2V0RWxlbWVudCgpLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2JhZGdlLW1vbWVudCcpWzBdLmlubmVySFRNTCA9IGAke2RhdGFzLnBsYW5uaW5nLm1vbWVudF9wYXNzYWdlLmxpYmVsbGVfcGxhbm5pbmd9YDtcclxuICAgIC8vYmFkZ2UgZXF1aXBlbWVudCB0eXBlXHJcbiAgICBvdmVybGF5UmR2LmdldEVsZW1lbnQoKS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdiYWRnZS1lcXVpcCcpWzBdLmlubmVySFRNTCA9IGAke2RhdGFzLmVxdWlwZW1lbnQuZXF1aXBlbWVudF90eXBlX3B1aXNzYW5jZS5lcXVpcGVtZW50X3R5cGUudHlwZX1gO1xyXG4gICAgLy9pbmZvcyBjbGllbnRcclxuICAgIGxldCBjb250ZW50Q2xpZW50ID0gJyc7XHJcbiAgICBpZihkYXRhcy5lcXVpcGVtZW50LmNsaWVudF9zb3VzY3JpcHRldXIuZXRhdF9jaXZpbCAhPT0gbnVsbCkgeyAvLyBwYXJ0aWN1bGllclxyXG4gICAgICAgIGNvbnRlbnRDbGllbnQgPSBgPGI+JHtkYXRhcy5lcXVpcGVtZW50LmNsaWVudF9zb3VzY3JpcHRldXIuZXRhdF9jaXZpbC5saWJlbGxlX2NvdXJ0fSAke2RhdGFzLmVxdWlwZW1lbnQuY2xpZW50X3NvdXNjcmlwdGV1ci5ub219YDtcclxuICAgICAgICBpZiAoZGF0YXMuZXF1aXBlbWVudC5jbGllbnRfc291c2NyaXB0ZXVyLnByZW5vbSAhPT0gJycgJiYgZGF0YXMuZXF1aXBlbWVudC5jbGllbnRfc291c2NyaXB0ZXVyLnByZW5vbSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBjb250ZW50Q2xpZW50ICs9IGAgJHtkYXRhcy5lcXVpcGVtZW50LmNsaWVudF9zb3VzY3JpcHRldXIucHJlbm9tfWA7XHJcbiAgICAgICAgfVxyXG4gICAgfWVsc2UgaWYoZGF0YXMuZXF1aXBlbWVudC5jbGllbnRfc291c2NyaXB0ZXVyLmNhdGVnb3JpZV9wcm8gIT09IG51bGwpeyAvL3Byb1xyXG4gICAgICAgIGNvbnRlbnRDbGllbnQgPSBgPGI+JHtkYXRhcy5lcXVpcGVtZW50LmNsaWVudF9zb3VzY3JpcHRldXIuY2F0ZWdvcmllX3Byby5saWJlbGxlfSAke2RhdGFzLmVxdWlwZW1lbnQuY2xpZW50X3NvdXNjcmlwdGV1ci5ub21fZW50cmVwcmlzZX1gO1xyXG4gICAgfVxyXG4gICAgY29udGVudENsaWVudCArPSBgPC9iPjxicj4ke2RhdGFzLmVxdWlwZW1lbnQuYWRyZXNzZS5hZHJlc3NlfWA7XHJcbiAgICBpZihkYXRhcy5lcXVpcGVtZW50LmFkcmVzc2UuYWRyZXNzZV9jb21wbGVtZW50ICE9PSAnJyAmJiBkYXRhcy5lcXVpcGVtZW50LmFkcmVzc2UuYWRyZXNzZV9jb21wbGVtZW50ICE9PSBudWxsKXtcclxuICAgICAgICBjb250ZW50Q2xpZW50ICs9IGA8YnI+JHtkYXRhcy5lcXVpcGVtZW50LmFkcmVzc2UuYWRyZXNzZV9jb21wbGVtZW50fWA7XHJcbiAgICB9XHJcbiAgICBjb250ZW50Q2xpZW50ICs9IGA8YnI+JHtkYXRhcy5lcXVpcGVtZW50LmFkcmVzc2UuY29kZV9wb3N0YWx9ICR7ZGF0YXMuZXF1aXBlbWVudC5hZHJlc3NlLnZpbGxlfWA7XHJcbiAgICBvdmVybGF5UmR2LmdldEVsZW1lbnQoKS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjbGllbnQtY29vcmRvbm5lZXMnKVswXS5pbm5lckhUTUwgPSBjb250ZW50Q2xpZW50O1xyXG5cclxuICAgIC8vYmFkZ2UgY29udHJhdFxyXG4gICAgbGV0IGNvbnRyYXQgPSAnJztcclxuICAgIGlmKGRhdGFzLmVxdWlwZW1lbnQuY29udHJhdF9lbl9jb3VycyAhPT0gJycgJiYgZGF0YXMuZXF1aXBlbWVudC5jb250cmF0X2VuX2NvdXJzICE9PSBudWxsKSB7XHJcbiAgICAgICAgY29udHJhdCA9IGAke2RhdGFzLmVxdWlwZW1lbnQuY29udHJhdF9lbl9jb3Vycy5jb250cmF0X3R5cGUubGliZWxsZV9jb3VydH1gO1xyXG4gICAgfVxyXG4gICAgb3ZlcmxheVJkdi5nZXRFbGVtZW50KCkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYmFkZ2UtY29udHJhdCcpWzBdLmlubmVySFRNTCA9IGNvbnRyYXQ7XHJcbiAgICBsZXQgY29udGVudFJkdiA9IGA8Yj4ke2RhdGFzLnBsYW5uaW5nLmxpYmVsbGVTdGF0dXR9PC9iPmA7XHJcbiAgICBpZihkYXRhcy5wbGFubmluZy5oZXVyZV9kZWJ1dCAhPT0gJycgJiYgZGF0YXMucGxhbm5pbmcuaGV1cmVfZGVidXQgIT09IG51bGwpe1xyXG4gICAgICAgIGNvbnRlbnRSZHYgKz0gYDxicj5IZXVyZSBkw6lidXQgOiAke25ldyBEYXRlKGRhdGFzLnBsYW5uaW5nLmhldXJlX2RlYnV0KS50b0xvY2FsZVRpbWVTdHJpbmcoJ2ZyLUZSJywge2hvdXI6ICcyLWRpZ2l0JywgbWludXRlOicyLWRpZ2l0J30pfWA7XHJcbiAgICB9XHJcbiAgICBpZihkYXRhcy5wbGFubmluZy5oZXVyZV9maW4gIT09ICcnICYmIGRhdGFzLnBsYW5uaW5nLmhldXJlX2ZpbiAhPT0gbnVsbCl7XHJcbiAgICAgICAgY29udGVudFJkdiArPSBgIC0gSGV1cmUgZmluIDogJHtuZXcgRGF0ZShkYXRhcy5wbGFubmluZy5oZXVyZV9maW4pLnRvTG9jYWxlVGltZVN0cmluZygnZnItRlInLCB7aG91cjogJzItZGlnaXQnLCBtaW51dGU6JzItZGlnaXQnfSl9YDtcclxuICAgIH1cclxuICAgIG92ZXJsYXlSZHYuZ2V0RWxlbWVudCgpLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3BvcHVwLXJkdi1pbmZvJylbMF0uaW5uZXJIVE1MID0gY29udGVudFJkdjtcclxuICAgIHNob3dPdmVybGF5KG92ZXJsYXlSZHYsIGNvb3JkaW5hdGVzKTtcclxufVxyXG5cclxuZnVuY3Rpb24gaW5pdFBvcHVwT3ZlcmxheUNhcyhkYXRhcywgY29vcmRpbmF0ZXMpe1xyXG4gICAgY29uc3QgY291bGV1ciA9ICcjMzQ0OTVlJztcclxuICAgIG92ZXJsYXlDYXMuZ2V0RWxlbWVudCgpLnN0eWxlLmJvcmRlckNvbG9yID0gY291bGV1cjtcclxuICAgIG92ZXJsYXlDYXMuZ2V0RWxlbWVudCgpLnN0eWxlLnNldFByb3BlcnR5KCctLXBvcHVwLWFycm93LWNvbG9yJywgY291bGV1cik7XHJcbiAgICAvL251bcOpcm8gY2xpZW50XHJcbiAgICAvL2fDqW7DqXJhdGlvbiBsaWVuIHBvdXIgb3V2ZXJ0dXJlIGZpY2hlIGNsaWVudFxyXG4gICAgbGV0IGNvbXBsZXRlVXJsID0gJyc7XHJcbiAgICBpZihkYXRhcy5pZCAhPT0gbnVsbCAmJiBkYXRhcy5jbGllbnRfc291c2NyaXB0ZXVyICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBsZXQgYmFzZV91cmwgPSB3aW5kb3cubG9jYXRpb24ub3JpZ2luO1xyXG4gICAgICAgIGxldCB1cmwgPSBwYXRoX2NsaWVudC5zcGxpdCgnLycpO1xyXG4gICAgICAgIGlmIChkYXRhcy5jbGllbnRfc291c2NyaXB0ZXVyLmlkKSB7XHJcbiAgICAgICAgICAgIGxldCBpZCA9IGRhdGFzLmNsaWVudF9zb3VzY3JpcHRldXIuaWQ7XHJcbiAgICAgICAgICAgIGlmIChkYXRhcy5pZCkge1xyXG4gICAgICAgICAgICAgICAgaWQgKz0gJz9pZF9lcXVpcGVtZW50PScgKyBkYXRhcy5pZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB1cmxbdXJsLmxlbmd0aCAtIDFdID0gaWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbXBsZXRlVXJsID0gYmFzZV91cmwgKyB1cmwuam9pbignLycpO1xyXG4gICAgfVxyXG4gICAgb3ZlcmxheUNhcy5nZXRFbGVtZW50KCkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnY2xpZW50LWlkJylbMF0uaHJlZiA9IGNvbXBsZXRlVXJsO1xyXG4gICAgb3ZlcmxheUNhcy5nZXRFbGVtZW50KCkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnY2xpZW50LWlkJylbMF0uaW5uZXJIVE1MID0gYCR7ZGF0YXMuY2xpZW50X3NvdXNjcmlwdGV1ci5mb3JtYXR0ZWRfbnVtZXJvX2NsaWVudH1gO1xyXG4gICAgIC8vYmFkZ2UgZXF1aXBlbWVudCB0eXBlXHJcbiAgICBvdmVybGF5Q2FzLmdldEVsZW1lbnQoKS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdiYWRnZS1lcXVpcCcpWzBdLmlubmVySFRNTCA9IGAke2RhdGFzLmVxdWlwZW1lbnRfdHlwZV9wdWlzc2FuY2UuZXF1aXBlbWVudF90eXBlLnR5cGV9YDtcclxuICAgIC8vaW5mb3MgY2xpZW50XHJcbiAgICBsZXQgY29udGVudENsaWVudCA9ICcnO1xyXG4gICAgaWYoZGF0YXMuY2xpZW50X3NvdXNjcmlwdGV1ci5ldGF0X2NpdmlsICE9PSBudWxsKSB7IC8vIHBhcnRpY3VsaWVyXHJcbiAgICAgICAgY29udGVudENsaWVudCA9IGA8Yj4ke2RhdGFzLmNsaWVudF9zb3VzY3JpcHRldXIuZXRhdF9jaXZpbC5saWJlbGxlX2NvdXJ0fSAke2RhdGFzLmNsaWVudF9zb3VzY3JpcHRldXIubm9tfWA7XHJcbiAgICAgICAgaWYgKGRhdGFzLmNsaWVudF9zb3VzY3JpcHRldXIucHJlbm9tICE9PSAnJyAmJiBkYXRhcy5jbGllbnRfc291c2NyaXB0ZXVyLnByZW5vbSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBjb250ZW50Q2xpZW50ICs9IGAgJHtkYXRhcy5jbGllbnRfc291c2NyaXB0ZXVyLnByZW5vbX1gO1xyXG4gICAgICAgIH1cclxuICAgIH1lbHNlIGlmKGRhdGFzLmNsaWVudF9zb3VzY3JpcHRldXIuY2F0ZWdvcmllX3BybyAhPT0gbnVsbCl7IC8vcHJvXHJcbiAgICAgICAgY29udGVudENsaWVudCA9IGA8Yj4ke2RhdGFzLmNsaWVudF9zb3VzY3JpcHRldXIuY2F0ZWdvcmllX3Byby5saWJlbGxlfSAke2RhdGFzLmNsaWVudF9zb3VzY3JpcHRldXIubm9tX2VudHJlcHJpc2V9YDtcclxuICAgIH1cclxuICAgIGNvbnRlbnRDbGllbnQgKz0gYDwvYj48YnI+JHtkYXRhcy5hZHJlc3NlLmFkcmVzc2V9YDtcclxuICAgIGlmKGRhdGFzLmFkcmVzc2UuYWRyZXNzZV9jb21wbGVtZW50ICE9PSAnJyAmJiBkYXRhcy5hZHJlc3NlLmFkcmVzc2VfY29tcGxlbWVudCAhPT0gbnVsbCl7XHJcbiAgICAgICAgY29udGVudENsaWVudCArPSBgPGJyPiR7ZGF0YXMuYWRyZXNzZS5hZHJlc3NlX2NvbXBsZW1lbnR9YDtcclxuICAgIH1cclxuICAgIGNvbnRlbnRDbGllbnQgKz0gYDxicj4ke2RhdGFzLmFkcmVzc2UuY29kZV9wb3N0YWx9ICR7ZGF0YXMuYWRyZXNzZS52aWxsZX1gO1xyXG4gICAgb3ZlcmxheUNhcy5nZXRFbGVtZW50KCkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnY2xpZW50LWNvb3Jkb25uZWVzJylbMF0uaW5uZXJIVE1MID0gY29udGVudENsaWVudDtcclxuXHJcbiAgICAvL2JhZGdlIGNvbnRyYXRcclxuICAgIGxldCBjb250cmF0ID0gJyc7XHJcbiAgICBpZihkYXRhcy5jb250cmF0X2VuX2NvdXJzICE9PSAnJyAmJiBkYXRhcy5jb250cmF0X2VuX2NvdXJzICE9PSBudWxsKSB7XHJcbiAgICAgICAgY29udHJhdCA9IGAke2RhdGFzLmNvbnRyYXRfZW5fY291cnMuY29udHJhdF90eXBlLmxpYmVsbGVfY291cnR9YDtcclxuICAgIH1cclxuICAgIG92ZXJsYXlDYXMuZ2V0RWxlbWVudCgpLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2JhZGdlLWNvbnRyYXQnKVswXS5pbm5lckhUTUwgPSBjb250cmF0O1xyXG4gICAgc2hvd092ZXJsYXkob3ZlcmxheUNhcywgY29vcmRpbmF0ZXMpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBpbml0UG9wdXBPdmVybGF5R3BzKGRhdGFzLCBjb29yZGluYXRlcyl7XHJcbiAgICBsZXQgY29udGVudEdwcyA9ICcnO1xyXG4gICAgaWYoZGF0YXMudHlwZSA9PSAndGVjaCcpe1xyXG4gICAgICAgIGNvbnRlbnRHcHMgPSBgRGVybmnDqHJlIHBvc2l0aW9uIC0gYDtcclxuICAgIH1cclxuICAgIGNvbnRlbnRHcHMgKz0gYCR7ZGF0YXMuYWdlbnR9PGJyPiR7ZGF0YXMuZGF0ZV9oZXVyZX1gO1xyXG4gICAgb3ZlcmxheUdwcy5nZXRFbGVtZW50KCkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgncG9wdXAtZ3BzLWluZm8nKVswXS5pbm5lckhUTUwgPSBjb250ZW50R3BzO1xyXG4gICAgc2hvd092ZXJsYXkob3ZlcmxheUdwcywgY29vcmRpbmF0ZXMpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gb25TaW5nbGVDbGlja0ZlYXR1cmUoZXZlbnQpIHtcclxuICAgIGhpZGVBbGxPdmVybGF5KCk7XHJcbiAgICBjb25zdCBmZWF0dXJlID0gbWFwLmZvckVhY2hGZWF0dXJlQXRQaXhlbChldmVudC5waXhlbCwgKGZlYXR1cmUpID0+IGZlYXR1cmUpO1xyXG4gICAgaWYgKGZlYXR1cmUgJiYgZmVhdHVyZS5nZXQoJ2RhdGFzJykgIT09ICcnKSB7XHJcbiAgICAgICAgbGV0IGRhdGFzID0gZmVhdHVyZS5nZXQoJ2RhdGFzJyk7XHJcbiAgICAgICAgaWYgKGRhdGFzLnR5cGUgJiYgZGF0YXMudHlwZSAhPT0gJycpIHtcclxuICAgICAgICAgICAgY29uc3QgY29vcmRpbmF0ZXMgPSBmZWF0dXJlLmdldEdlb21ldHJ5KCkuZ2V0Q29vcmRpbmF0ZXMoKTtcclxuICAgICAgICAgICAgaWYgKGRhdGFzLnR5cGUgPT09ICdncHMnIHx8IGRhdGFzLnR5cGUgPT09ICd0ZWNoJykge1xyXG4gICAgICAgICAgICAgICAgaW5pdFBvcHVwT3ZlcmxheUdwcyhkYXRhcywgY29vcmRpbmF0ZXMpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGRhdGFzLnR5cGUgPT09ICdpbnRlcnZlbnRpb24nKSB7XHJcbiAgICAgICAgICAgICAgICBpbml0UG9wdXBPdmVybGF5UmR2KGRhdGFzLCBjb29yZGluYXRlcyk7XHJcbiAgICAgICAgICAgIH1lbHNlIGlmIChkYXRhcy50eXBlID09PSAnY2FzJykge1xyXG4gICAgICAgICAgICAgICAgaW5pdFBvcHVwT3ZlcmxheUNhcyhkYXRhcywgY29vcmRpbmF0ZXMpO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAvLyBNaXNlIGVuIMOpdmlkZW5jZSBkdSBibG9jIGRhbnMgbGEgc2lkZWJhclxyXG4gICAgICAgICAgICAgICAgY29uc3QgYmxvY2tJZCA9IGBjYXMtYmxvY2stJHtkYXRhcy5pZH1gO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYmxvY2sgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChibG9ja0lkKTtcclxuICAgICAgICAgICAgICAgIGlmIChibG9jaykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIFJldGlyZXIgbGEgbWlzZSBlbiDDqXZpZGVuY2UgZGVzIGF1dHJlcyBibG9jc1xyXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5jYXMtc2lkZWJhci1ibG9jaycpLmZvckVhY2goZWwgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbC5jbGFzc0xpc3QucmVtb3ZlKCdoaWdobGlnaHQtY2FzJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gQWpvdXRlciBsYSBtaXNlIGVuIMOpdmlkZW5jZSBhdSBibG9jIGFjdHVlbFxyXG4gICAgICAgICAgICAgICAgICAgIGJsb2NrLmNsYXNzTGlzdC5hZGQoJ2hpZ2hsaWdodC1jYXMnKTtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAvLyBGYWlyZSBkw6lmaWxlciBqdXNxdSdhdSBibG9jIGRhbnMgbGUgY29udGVuZXVyIGRlIGxhIHNpZGViYXJcclxuICAgICAgICAgICAgICAgICAgICBibG9jay5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgYmxvY2s6ICduZWFyZXN0JyB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHB1bmFpc2VzKGRhdGEsIGluaXQ9ZmFsc2Upe1xyXG4gICAgcmVtb3ZlRmVhdHVyZXMoKTsgLy9zdXBwcmltZXIgbGVzIG1hcmtlcnMgZGUgbGEgY2FydGVcclxuICAgIGxldCByZW1haW5pbmdNYXJrZXJzID0gMDsgLy8gQ29tcHRldXIgZGVzIG1hcnF1ZXVycyDDoCBham91dGVyXHJcbiAgICBjb25zdCBvbk1hcmtlckFkZGVkID0gKCkgPT4ge1xyXG4gICAgICAgIHJlbWFpbmluZ01hcmtlcnMtLTtcclxuICAgICAgICBpZiAocmVtYWluaW5nTWFya2VycyA9PT0gMCkge1xyXG4gICAgICAgICAgICAvLyBVbmUgZm9pcyBxdWUgdG91cyBsZXMgbWFycXVldXJzIHNvbnQgYWpvdXTDqXMsIGFqdXN0ZXIgbGEgdnVlXHJcbiAgICAgICAgICAgIGZpdE1hcFRvRmVhdHVyZXNCeVR5cGUoJ21hcmtlcnMnKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgaWYgKGRhdGEuYWdlbnRzIHx8IGRhdGEuYWdlbnQpIHtcclxuICAgICAgICBjb25zdCBhZ2VudHMgPSBBcnJheS5pc0FycmF5KGRhdGEuYWdlbnRzKSA/IGRhdGEuYWdlbnRzIDogZGF0YS5hZ2VudCA/IFtkYXRhLmFnZW50XSA6IFtdO1xyXG5cclxuICAgICAgICBhZ2VudHMuZm9yRWFjaCgoYWdlbnQpID0+IHtcclxuICAgICAgICAgICAgaWYgKCFpbml0KSB7XHJcbiAgICAgICAgICAgICAgICAvLyBob21lXHJcbiAgICAgICAgICAgICAgICByZW1haW5pbmdNYXJrZXJzKys7XHJcbiAgICAgICAgICAgICAgICBhZGRNYXJrZXIoYWdlbnQuY29vcmRvbm5lZXMsIGFnZW50LmNvZGVfYWdlbnQsICdob21lJywgJ2RlZmF1bHQnLCAnd2hpdGUnLCB7dHlwZTogJ2hvbWUnLCBhZ2VudElkOiBhZ2VudC5pZH0sIG9uTWFya2VyQWRkZWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGRlcm5pw6hyZSBwb3NpdGlvblxyXG4gICAgICAgICAgICBpZiAoYWdlbnQuZGVybmllcmVfcG9zICE9PSAnJyAmJiBhZ2VudC5kZXJuaWVyZV9wb3MgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHJlbWFpbmluZ01hcmtlcnMrKztcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGFzID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIGFnZW50OiBgQWdlbnQgJHthZ2VudC5jb2RlX2FnZW50fWAsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0ZV9oZXVyZTogZm9ybWF0RGF0ZShhZ2VudC5kZXJuaWVyZV9wb3MuZGF0ZV9oZXVyZSksXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RlY2gnLFxyXG4gICAgICAgICAgICAgICAgICAgIGFnZW50SWQ6IGFnZW50LmlkLFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIGFkZE1hcmtlcihhZ2VudC5kZXJuaWVyZV9wb3MuY29vcmRvbm5lZXMsIGFnZW50LmNvZGVfYWdlbnQsICd0ZWNoJywgJ2RlZmF1bHQnLCAnd2hpdGUnLCBkYXRhcywgb25NYXJrZXJBZGRlZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmKCFpbml0KSB7XHJcbiAgICAgICAgaWYgKGRhdGEuaW50ZXJ2ZW50aW9ucykge1xyXG4gICAgICAgICAgICBkYXRhLmludGVydmVudGlvbnMuZm9yRWFjaCgoaW50ZXJ2ZW50aW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgY29vcmRzID0gWzAsIDBdO1xyXG4gICAgICAgICAgICAgICAgaWYgKGludGVydmVudGlvbi5lcXVpcGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGFkcmVzc2UgPSBpbnRlcnZlbnRpb24uZXF1aXBlbWVudC5hZHJlc3NlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvb3JkcyA9IFthZHJlc3NlLmxvbmdpdHVkZSwgYWRyZXNzZS5sYXRpdHVkZV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBsZXQgcGxhbm5pbmcgPSBpbnRlcnZlbnRpb24ucGxhbm5pbmc7XHJcbiAgICAgICAgICAgICAgICBsZXQgY29kZSA9IHBsYW5uaW5nLnV0aWxpc2F0ZXVyX2FnZW50LmNvZGVfYWdlbnQ7XHJcbiAgICAgICAgICAgICAgICBsZXQgbW9tZW50ID0gcGxhbm5pbmcubW9tZW50X3Bhc3NhZ2UuaWQ7XHJcbiAgICAgICAgICAgICAgICBsZXQgc3RhdHV0ID0gcGxhbm5pbmcuc3RhdHV0O1xyXG4gICAgICAgICAgICAgICAgaW50ZXJ2ZW50aW9uLnR5cGUgPSAnaW50ZXJ2ZW50aW9uJztcclxuICAgICAgICAgICAgICAgIGludGVydmVudGlvbi5hZ2VudElkID0gcGxhbm5pbmcudXRpbGlzYXRldXJfYWdlbnQuaWQ7XHJcbiAgICAgICAgICAgICAgICByZW1haW5pbmdNYXJrZXJzKys7XHJcbiAgICAgICAgICAgICAgICBhZGRNYXJrZXIoY29vcmRzLCBjb2RlLCBzdGF0dXQsIG1vbWVudCwgJ3doaXRlJywgaW50ZXJ2ZW50aW9uLCBvbk1hcmtlckFkZGVkKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChkYXRhLmNhcykge1xyXG4gICAgICAgICAgICBkYXRhLmNhcy5mb3JFYWNoKChjYXMpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBjb29yZHMgPSBbMCwgMF07XHJcbiAgICAgICAgICAgICAgICBpZiAoY2FzLmFkcmVzc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb29yZHMgPSBbY2FzLmFkcmVzc2UubG9uZ2l0dWRlLCBjYXMuYWRyZXNzZS5sYXRpdHVkZV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjYXMudHlwZSA9ICdjYXMnO1xyXG4gICAgICAgICAgICAgICAgcmVtYWluaW5nTWFya2VycysrO1xyXG4gICAgICAgICAgICAgICAgYWRkTWFya2VyKGNvb3JkcywgY2FzLm1hcF9sYWJlbCwgJycsICdkZWZhdWx0JywgJ3doaXRlJywgY2FzLCBvbk1hcmtlckFkZGVkKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RGF0ZShkYXRlU3RyaW5nKSB7XHJcbiAgICAvLyBDcsOpZSB1biBvYmpldCBEYXRlIMOgIHBhcnRpciBkZSBsYSBjaGHDrm5lXHJcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoZGF0ZVN0cmluZyk7XHJcblxyXG4gICAgLy8gUsOpY3Vww6hyZSBsZXMgY29tcG9zYW50cyBkZSBsYSBkYXRlXHJcbiAgICBjb25zdCBkYXkgPSBTdHJpbmcoZGF0ZS5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICcwJyk7IC8vIEpvdXIgYXUgZm9ybWF0IFwiMDJcIlxyXG4gICAgY29uc3QgbW9udGggPSBTdHJpbmcoZGF0ZS5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKTsgLy8gTW9pcyBhdSBmb3JtYXQgXCIwMlwiIChsZXMgbW9pcyBjb21tZW5jZW50IMOgIDApXHJcbiAgICBjb25zdCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpOyAvLyBBbm7DqWUgYXUgZm9ybWF0IFwiMjAyNVwiXHJcblxyXG4gICAgLy8gUsOpY3Vww6hyZSBsJ2hldXJlIGV0IGxlcyBtaW51dGVzXHJcbiAgICBjb25zdCBob3VycyA9IFN0cmluZyhkYXRlLmdldEhvdXJzKCkpLnBhZFN0YXJ0KDIsICcwJyk7IC8vIEhldXJlIGF1IGZvcm1hdCBcIjA3XCJcclxuICAgIGNvbnN0IG1pbnV0ZXMgPSBTdHJpbmcoZGF0ZS5nZXRNaW51dGVzKCkpLnBhZFN0YXJ0KDIsICcwJyk7IC8vIE1pbnV0ZXMgYXUgZm9ybWF0IFwiMDVcIlxyXG5cclxuICAgIC8vIFJldG91cm5lIGxlIGZvcm1hdCBkw6lzaXLDqVxyXG4gICAgcmV0dXJuIGBMZSAke2RheX0vJHttb250aH0vJHt5ZWFyfSDDoCAke2hvdXJzfToke21pbnV0ZXN9YDtcclxufVxyXG5cclxuZXhwb3J0IHsgbWFwLCB2ZWN0b3JTb3VyY2UsIG92ZXJsYXlSZHYsIG92ZXJsYXlHcHMsIG92ZXJsYXlDYXMgfTsiXSwic291cmNlUm9vdCI6IiJ9";
        
        $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->leave($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof);

        
        $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->leave($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof);

        return; yield '';
    }

    /**
     * @codeCoverageIgnore
     */
    public function getTemplateName()
    {
        return "@public_path/build/assets_js_map_js.js";
    }

    /**
     * @codeCoverageIgnore
     */
    public function getDebugInfo()
    {
        return array ();
    }

    public function getSourceContext()
    {
        return new Source("(self[\"webpackChunk\"] = self[\"webpackChunk\"] || []).push([[\"assets_js_map_js\"],{

/***/ \"./assets/images/punaise-blue.png\":
/*!****************************************!*\\
  !*** ./assets/images/punaise-blue.png ***!
  \\****************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

\"use strict\";
module.exports = __webpack_require__.p + \"images/punaise-blue.9375d5ad.png\";

/***/ }),

/***/ \"./assets/images/punaise-gps.png\":
/*!***************************************!*\\
  !*** ./assets/images/punaise-gps.png ***!
  \\***************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

\"use strict\";
module.exports = __webpack_require__.p + \"images/punaise-gps.6ee5445c.png\";

/***/ }),

/***/ \"./assets/images/punaise-green.png\":
/*!*****************************************!*\\
  !*** ./assets/images/punaise-green.png ***!
  \\*****************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

\"use strict\";
module.exports = __webpack_require__.p + \"images/punaise-green.d6008b7b.png\";

/***/ }),

/***/ \"./assets/images/punaise-red.png\":
/*!***************************************!*\\
  !*** ./assets/images/punaise-red.png ***!
  \\***************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

\"use strict\";
module.exports = __webpack_require__.p + \"images/punaise-red.e834d1a9.png\";

/***/ }),

/***/ \"./assets/images/punaise.png\":
/*!***********************************!*\\
  !*** ./assets/images/punaise.png ***!
  \\***********************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

\"use strict\";
module.exports = __webpack_require__.p + \"images/punaise.ffe226c8.png\";

/***/ }),

/***/ \"./assets/js/map.js\":
/*!**************************!*\\
  !*** ./assets/js/map.js ***!
  \\**************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

\"use strict\";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   \"punaisePicto\": () => (/* binding */ punaisePicto),
/* harmony export */   \"createCustomIcon\": () => (/* binding */ createCustomIcon),
/* harmony export */   \"addMarker\": () => (/* binding */ addMarker),
/* harmony export */   \"addPolygon\": () => (/* binding */ addPolygon),
/* harmony export */   \"addSearchCircle\": () => (/* binding */ addSearchCircle),
/* harmony export */   \"removeFeatures\": () => (/* binding */ removeFeatures),
/* harmony export */   \"removeFeaturesByDataValue\": () => (/* binding */ removeFeaturesByDataValue),
/* harmony export */   \"fitMapToFeatures\": () => (/* binding */ fitMapToFeatures),
/* harmony export */   \"fitMapToFeaturesByType\": () => (/* binding */ fitMapToFeaturesByType),
/* harmony export */   \"hideAllOverlay\": () => (/* binding */ hideAllOverlay),
/* harmony export */   \"onSingleClickFeature\": () => (/* binding */ onSingleClickFeature),
/* harmony export */   \"punaises\": () => (/* binding */ punaises),
/* harmony export */   \"formatDate\": () => (/* binding */ formatDate),
/* harmony export */   \"map\": () => (/* binding */ map),
/* harmony export */   \"vectorSource\": () => (/* binding */ vectorSource),
/* harmony export */   \"overlayRdv\": () => (/* binding */ overlayRdv),
/* harmony export */   \"overlayGps\": () => (/* binding */ overlayGps),
/* harmony export */   \"overlayCas\": () => (/* binding */ overlayCas)
/* harmony export */ });
/* harmony import */ var core_js_modules_es_object_freeze_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.freeze.js */ \"./node_modules/core-js/modules/es.object.freeze.js\");
/* harmony import */ var core_js_modules_es_object_freeze_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_freeze_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 core_js_modules_es_array_for_each_js__WEBPACK_IMPORTED_MODULE_2__ = __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_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_for_each_js__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_3__ = __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_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ \"./node_modules/core-js/modules/es.object.keys.js\");
/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var core_js_modules_es_parse_int_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.parse-int.js */ \"./node_modules/core-js/modules/es.parse-int.js\");
/* harmony import */ var core_js_modules_es_parse_int_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_parse_int_js__WEBPACK_IMPORTED_MODULE_5__);
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ \"./node_modules/core-js/modules/es.regexp.exec.js\");
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_6__);
/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ \"./node_modules/core-js/modules/es.string.replace.js\");
/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_7__);
/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ \"./node_modules/core-js/modules/es.array.concat.js\");
/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_8__);
/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ \"./node_modules/core-js/modules/es.array.filter.js\");
/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_9__);
/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_10__ = __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_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_10__);
/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.string.split.js */ \"./node_modules/core-js/modules/es.string.split.js\");
/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_11__);
/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.array.join.js */ \"./node_modules/core-js/modules/es.array.join.js\");
/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_12__);
/* harmony import */ var core_js_modules_es_date_to_string_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.date.to-string.js */ \"./node_modules/core-js/modules/es.date.to-string.js\");
/* harmony import */ var core_js_modules_es_date_to_string_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_date_to_string_js__WEBPACK_IMPORTED_MODULE_13__);
/* harmony import */ var core_js_modules_es_array_is_array_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.array.is-array.js */ \"./node_modules/core-js/modules/es.array.is-array.js\");
/* harmony import */ var core_js_modules_es_array_is_array_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_is_array_js__WEBPACK_IMPORTED_MODULE_14__);
/* harmony import */ var core_js_modules_es_string_pad_start_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.string.pad-start.js */ \"./node_modules/core-js/modules/es.string.pad-start.js\");
/* harmony import */ var core_js_modules_es_string_pad_start_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_pad_start_js__WEBPACK_IMPORTED_MODULE_15__);
/* harmony import */ var core_js_modules_es_object_set_prototype_of_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! core-js/modules/es.object.set-prototype-of.js */ \"./node_modules/core-js/modules/es.object.set-prototype-of.js\");
/* harmony import */ var core_js_modules_es_object_set_prototype_of_js__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_set_prototype_of_js__WEBPACK_IMPORTED_MODULE_16__);
/* harmony import */ var core_js_modules_es_object_get_prototype_of_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! core-js/modules/es.object.get-prototype-of.js */ \"./node_modules/core-js/modules/es.object.get-prototype-of.js\");
/* harmony import */ var core_js_modules_es_object_get_prototype_of_js__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_prototype_of_js__WEBPACK_IMPORTED_MODULE_17__);
/* harmony import */ var core_js_modules_es_reflect_construct_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! core-js/modules/es.reflect.construct.js */ \"./node_modules/core-js/modules/es.reflect.construct.js\");
/* harmony import */ var core_js_modules_es_reflect_construct_js__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_reflect_construct_js__WEBPACK_IMPORTED_MODULE_18__);
/* harmony import */ var core_js_modules_es_object_create_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! core-js/modules/es.object.create.js */ \"./node_modules/core-js/modules/es.object.create.js\");
/* harmony import */ var core_js_modules_es_object_create_js__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_create_js__WEBPACK_IMPORTED_MODULE_19__);
/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ \"./node_modules/core-js/modules/es.symbol.js\");
/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_20__);
/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ \"./node_modules/core-js/modules/es.symbol.description.js\");
/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_21__);
/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ \"./node_modules/core-js/modules/es.object.to-string.js\");
/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_22___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_22__);
/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ \"./node_modules/core-js/modules/es.symbol.iterator.js\");
/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_23__);
/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ \"./node_modules/core-js/modules/es.array.iterator.js\");
/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_24__);
/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ \"./node_modules/core-js/modules/es.string.iterator.js\");
/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_25___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_25__);
/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ \"./node_modules/core-js/modules/web.dom-collections.iterator.js\");
/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_26___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_26__);
/* harmony import */ var ol_Map__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ol/Map */ \"./node_modules/ol/Map.js\");
/* harmony import */ var ol_View__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ol/View */ \"./node_modules/ol/View.js\");
/* harmony import */ var ol_layer__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ol/layer */ \"./node_modules/ol/layer/Tile.js\");
/* harmony import */ var ol_source__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ol/source */ \"./node_modules/ol/source/OSM.js\");
/* harmony import */ var ol_source__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ol/source */ \"./node_modules/ol/source/XYZ.js\");
/* harmony import */ var ol_proj__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ol/proj */ \"./node_modules/ol/proj.js\");
/* harmony import */ var ol_control_Control__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ol/control/Control */ \"./node_modules/ol/control/Control.js\");
/* harmony import */ var ol_control__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ol/control */ \"./node_modules/ol/control/defaults.js\");
/* harmony import */ var ol_control__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ol/control */ \"./node_modules/ol/control/ScaleLine.js\");
/* harmony import */ var ol_geom__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ol/geom */ \"./node_modules/ol/geom/Point.js\");
/* harmony import */ var ol_geom__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ol/geom */ \"./node_modules/ol/geom/Polygon.js\");
/* harmony import */ var ol_geom__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! ol/geom */ \"./node_modules/ol/geom/Circle.js\");
/* harmony import */ var ol_geom__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! ol/geom */ \"./node_modules/ol/geom/LineString.js\");
/* harmony import */ var ol_source_Vector__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ol/source/Vector */ \"./node_modules/ol/source/Vector.js\");
/* harmony import */ var ol_layer_Vector__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ol/layer/Vector */ \"./node_modules/ol/layer/Vector.js\");
/* harmony import */ var ol__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ol */ \"./node_modules/ol/Feature.js\");
/* harmony import */ var ol_style__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ol/style */ \"./node_modules/ol/style/Style.js\");
/* harmony import */ var ol_style__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ol/style */ \"./node_modules/ol/style/Icon.js\");
/* harmony import */ var ol_style__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ol/style */ \"./node_modules/ol/style/Stroke.js\");
/* harmony import */ var ol_style__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! ol/style */ \"./node_modules/ol/style/Fill.js\");
/* harmony import */ var ol_extent__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(/*! ol/extent */ \"./node_modules/ol/extent.js\");
/* harmony import */ var _images_punaise_png__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../images/punaise.png */ \"./assets/images/punaise.png\");
/* harmony import */ var _images_punaise_red_png__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ../images/punaise-red.png */ \"./assets/images/punaise-red.png\");
/* harmony import */ var _images_punaise_green_png__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ../images/punaise-green.png */ \"./assets/images/punaise-green.png\");
/* harmony import */ var _images_punaise_blue_png__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ../images/punaise-blue.png */ \"./assets/images/punaise-blue.png\");
/* harmony import */ var _images_punaise_gps_png__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ../images/punaise-gps.png */ \"./assets/images/punaise-gps.png\");
/* harmony import */ var ol_Overlay__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ol/Overlay */ \"./node_modules/ol/Overlay.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); }

function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }

function _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }

function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }

function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }

function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }

function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }

function _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }

function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }








































 //images







var punaiseImg = Object.freeze({
  1: _images_punaise_red_png__WEBPACK_IMPORTED_MODULE_29__,
  2: _images_punaise_red_png__WEBPACK_IMPORTED_MODULE_29__,
  3: _images_punaise_red_png__WEBPACK_IMPORTED_MODULE_29__,
  4: _images_punaise_blue_png__WEBPACK_IMPORTED_MODULE_31__,
  5: _images_punaise_blue_png__WEBPACK_IMPORTED_MODULE_31__,
  6: _images_punaise_blue_png__WEBPACK_IMPORTED_MODULE_31__,
  7: _images_punaise_green_png__WEBPACK_IMPORTED_MODULE_30__,
  \"default\": _images_punaise_png__WEBPACK_IMPORTED_MODULE_28__,
  \"gps\": _images_punaise_gps_png__WEBPACK_IMPORTED_MODULE_32__
});
var punaisePicto = Object.freeze({
  0: {
    unicode: \"\\uF017\",
    font: 'bold 10px \"Font Awesome 5 Free\"'
  },
  // fa-clock (Regular)
  1: {
    unicode: \"\\uF063\",
    font: 'bold 10px \"Font Awesome 5 Free\"'
  },
  // fa-arrow-up (Solid)
  2: {
    unicode: \"\\uF04B\",
    font: 'bold 10px \"Font Awesome 5 Free\"'
  },
  // fa-play (Solid)
  3: {
    unicode: \"\\uF00C\",
    font: 'bold 10px \"Font Awesome 5 Free\"'
  },
  // fa-check (Solid)
  4: {
    unicode: \"\\uF00C\",
    font: 'bold 10px \"Font Awesome 5 Free\"'
  },
  // fa-check (Solid)
  'home': {
    unicode: \"\\uE065\",
    font: 'bold 10px \"Font Awesome 5 Free\"'
  },
  // fa-house-user (Solid)
  'tech': {
    unicode: \"\\uF007\",
    font: 'bold 10px \"Font Awesome 5 Free\"'
  } // fa-user (Solid)

}); // Définition des fonds de carte

var baseLayers = {
  \"OpenStreetMap\": new ol_layer__WEBPACK_IMPORTED_MODULE_33__.default({
    source: new ol_source__WEBPACK_IMPORTED_MODULE_34__.default(),
    visible: true
  }),
  \"Satellite\": new ol_layer__WEBPACK_IMPORTED_MODULE_33__.default({
    source: new ol_source__WEBPACK_IMPORTED_MODULE_35__.default({
      url: 'https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}'
    }),
    visible: false
  })
};
var map = new ol_Map__WEBPACK_IMPORTED_MODULE_36__.default({
  target: 'map',
  // layers: [osmLayer, satelliteLayer],
  layers: Object.values(baseLayers),
  view: new ol_View__WEBPACK_IMPORTED_MODULE_37__.default({
    center: (0,ol_proj__WEBPACK_IMPORTED_MODULE_27__.fromLonLat)([2.3644638, 48.8764576]),
    // Paris
    zoom: 10
  }),
  controls: (0,ol_control__WEBPACK_IMPORTED_MODULE_38__.defaults)({
    attribution: false,
    rotate: false
  }).extend([new ol_control__WEBPACK_IMPORTED_MODULE_39__.default() // Ajoute une échelle
  ])
});

var LayerSwitcherControl = /*#__PURE__*/function (_Control) {
  _inherits(LayerSwitcherControl, _Control);

  var _super = _createSuper(LayerSwitcherControl);

  function LayerSwitcherControl() {
    var _this;

    _classCallCheck(this, LayerSwitcherControl);

    var button = document.createElement('button');
    button.innerHTML = '<i class=\"fas fa-layer-group\" style=\"margin-right: 0px;\"></i>'; // Icône du bouton

    button.className = 'layer-switch-button';
    var list = document.createElement('div');
    list.className = 'layer-switch-list hidden'; // Ajouter les options

    Object.keys(baseLayers).forEach(function (layerName) {
      var option = document.createElement('div');
      option.className = 'layer-option';
      option.innerHTML = layerName;
      option.addEventListener('click', function () {
        Object.values(baseLayers).forEach(function (layer) {
          return layer.setVisible(false);
        });
        baseLayers[layerName].setVisible(true);
        list.classList.add('hidden');
      });
      list.appendChild(option);
    });
    var container = document.createElement('div');
    container.className = 'layer-switcher ol-control';
    container.appendChild(button);
    container.appendChild(list);
    _this = _super.call(this, {
      element: container
    });
    button.addEventListener('click', function () {
      list.classList.toggle('hidden');
    }); // Cacher la liste quand on clique ailleurs

    document.addEventListener('click', function (event) {
      if (!container.contains(event.target)) {
        list.classList.add('hidden');
      }
    });
    return _this;
  }

  return LayerSwitcherControl;
}(ol_control_Control__WEBPACK_IMPORTED_MODULE_40__.default); // Ajout des contrôles à la carte


map.addControl(new LayerSwitcherControl()); // Source vectorielle pour stocker les punaises

var vectorSource = new ol_source_Vector__WEBPACK_IMPORTED_MODULE_41__.default();
var vectorLayer = new ol_layer_Vector__WEBPACK_IMPORTED_MODULE_42__.default({
  source: vectorSource
});
map.addLayer(vectorLayer);
var overlayRdv = new ol_Overlay__WEBPACK_IMPORTED_MODULE_43__.default({
  element: document.getElementById('popup-rdv'),
  autoPan: true,
  positioning: 'bottom-center',
  offset: [0, -43] // décalage en pixels (horizontal, vertical)

});
var overlayCas = new ol_Overlay__WEBPACK_IMPORTED_MODULE_43__.default({
  element: document.getElementById('popup-cas'),
  autoPan: true,
  positioning: 'bottom-center',
  offset: [0, -43] // décalage en pixels (horizontal, vertical)

});
var overlayGps = new ol_Overlay__WEBPACK_IMPORTED_MODULE_43__.default({
  element: document.getElementById('popup-gps'),
  autoPan: true,
  positioning: 'bottom-center',
  offset: [0, -31] // décalage en pixels (horizontal, vertical)

}); //Fonction pour générer une icône personnalisée avec une image, du texte et un pictogramme

function createCustomIcon(text, unicode, font, imgSrc, color, isSmall, callback) {
  var canvas = document.createElement('canvas');
  var width = 24;
  var height = 32;

  if (isSmall) {
    width = 15;
    height = 20;
  }

  canvas.width = width;
  canvas.height = height;
  var ctx = canvas.getContext('2d');
  var img = new Image();
  img.src = imgSrc;

  img.onload = function () {
    // Dessiner la punaise de base
    ctx.drawImage(img, 0, 0, canvas.width, canvas.height); // Ajouter du texte

    ctx.fillStyle = color;
    ctx.textAlign = 'center';

    if (unicode !== '') {
      ctx.font = 'bold 9px \"Lato\"';
      ctx.fillText(text, 12, 13);
      ctx.font = font;
      ctx.fillText(unicode, 12, 24);
    } else {
      // Si pas d'unicode, placer le texte normalement
      if (isSmall) {
        ctx.font = 'bold 7px \"Lato\"';
        ctx.fillText(text, width / 2, 11);
      } else {
        ctx.font = 'bold 9px \"Lato\"';
        ctx.fillText(text, width / 2, 16);
      }
    } // Convertir en Data URL et appeler le callback


    callback(canvas.toDataURL());
  };
} // Fonction pour ajouter une punaise

function addMarker(coords, text, picto, punaise, color, datas, onComplete) {
  var pictoData;
  var isSmall = false; // Déterminer si c'est une petite puce (données GPS sans picto)

  if (datas && datas.type === 'gps') {
    isSmall = true;
  }

  if (picto === '') {
    pictoData = {
      unicode: '',
      font: ''
    };
  } else {
    pictoData = punaisePicto[picto];
  }

  var _pictoData = pictoData,
      unicode = _pictoData.unicode,
      font = _pictoData.font; // Récupère unicode et font

  var imgSrc = punaiseImg[punaise];
  createCustomIcon(text, unicode, font, imgSrc, color, isSmall, function (iconUrl) {
    var feature = new ol__WEBPACK_IMPORTED_MODULE_44__.default({
      geometry: new ol_geom__WEBPACK_IMPORTED_MODULE_45__.default((0,ol_proj__WEBPACK_IMPORTED_MODULE_27__.fromLonLat)(coords))
    });
    feature.setStyle(new ol_style__WEBPACK_IMPORTED_MODULE_46__.default({
      image: new ol_style__WEBPACK_IMPORTED_MODULE_47__.default({
        src: iconUrl,
        scale: 1,
        // Ajuste selon la taille désirée
        anchor: [0.5, 1] // Pour bien aligner la punaise

      }),
      zIndex: 100
    }));
    feature.set('datas', datas);
    vectorSource.addFeature(feature); // Exécuter le callback quand l'ajout est terminé

    if (onComplete) onComplete();
  });
}
function addPolygon(coords) {
  var couleur = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '#000';
  var convertedCoords = [];

  for (var i = 0; i < coords.length; i++) {
    convertedCoords.push((0,ol_proj__WEBPACK_IMPORTED_MODULE_27__.fromLonLat)(coords[i]));
  }

  var feature = new ol__WEBPACK_IMPORTED_MODULE_44__.default({
    geometry: new ol_geom__WEBPACK_IMPORTED_MODULE_48__.default([convertedCoords])
  });
  feature.setStyle(new ol_style__WEBPACK_IMPORTED_MODULE_46__.default({
    stroke: new ol_style__WEBPACK_IMPORTED_MODULE_49__.default({
      color: couleur,
      width: 0.5
    }),
    fill: new ol_style__WEBPACK_IMPORTED_MODULE_50__.default({
      color: hexToRgba(couleur, 0.3)
    }),
    zIndex: 10
  }));
  var datas = {
    type: 'secteur'
  };
  feature.set('datas', datas);
  vectorSource.addFeature(feature);
}
/**
 * Ajoute un cercle de recherche sur la carte
 * @param {Array} center [lon, lat]
 * @param {number} radiusInKm
 */

function addSearchCircle(center, radiusInKm) {
  if (!center || !center[0] || !center[1] || !radiusInKm) return;
  var centerWebMercator = (0,ol_proj__WEBPACK_IMPORTED_MODULE_27__.fromLonLat)(center); // Pour transformer des km en unités de carte (Web Mercator), 
  // on ajuste le rayon en fonction de la résolution à la latitude donnée
  // pour que le cercle visuel corresponde à la distance réelle au sol.

  var radiusInMeters = radiusInKm * 1000;
  var resolutionAtLocation = (0,ol_proj__WEBPACK_IMPORTED_MODULE_27__.getPointResolution)('EPSG:3857', 1, centerWebMercator);
  var adjustedRadius = radiusInMeters / resolutionAtLocation;
  var feature = new ol__WEBPACK_IMPORTED_MODULE_44__.default({
    geometry: new ol_geom__WEBPACK_IMPORTED_MODULE_51__.default(centerWebMercator, adjustedRadius)
  });
  feature.setStyle(new ol_style__WEBPACK_IMPORTED_MODULE_46__.default({
    stroke: new ol_style__WEBPACK_IMPORTED_MODULE_49__.default({
      color: \"#34495e\",
      width: 2,
      lineDash: [5, 5] // Pointillé

    }),
    fill: new ol_style__WEBPACK_IMPORTED_MODULE_50__.default({
      color: hexToRgba(\"#34495e\", 0.15)
    }),
    zIndex: 1
  }));
  feature.set('datas', {
    type: 'rayon_recherche'
  });
  vectorSource.addFeature(feature);
}

function hexToRgba(hex) {
  var alpha = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
  var bigint = parseInt(hex.replace('#', ''), 16);
  var r = bigint >> 16 & 255;
  var g = bigint >> 8 & 255;
  var b = bigint & 255;
  return \"rgba(\".concat(r, \", \").concat(g, \", \").concat(b, \", \").concat(alpha, \")\");
}

function removeFeatures() {
  map.getOverlays().forEach(function (overlay) {
    //cacher les popup overlay
    overlay.setPosition(undefined);
  });
  vectorSource.clear();
}
function removeFeaturesByDataValue(dataName, value) {
  vectorSource.forEachFeature(function (feature) {
    var datas = feature.get('datas');

    if (datas && datas[dataName] === value) {
      vectorSource.removeFeature(feature);
    }
  });
}
function fitMapToFeatures() {
  if (vectorSource.getFeatures().length > 0) {
    var extent = vectorSource.getExtent(); // Récupère l'étendue de toutes les features

    map.getView().fit(extent, {
      padding: [50, 50, 50, 50],
      duration: 1000,
      maxZoom: 14 //évite dans le cas d'une feature d'être trop zoomé sur la carte

    }); // Ajuste la vue
  } else {
    // vue par défaut si aucune feature
    map.getView().setCenter((0,ol_proj__WEBPACK_IMPORTED_MODULE_27__.fromLonLat)([2.3644638, 48.8764576]));
    map.getView().setZoom(10);
  }
}
function fitMapToFeaturesByType(featureType) {
  var features = vectorSource.getFeatures();
  var filteredFeatures = features.filter(function (feature) {
    var geometry = feature.getGeometry();

    if (featureType === 'markers' || featureType === 'points') {
      return geometry instanceof ol_geom__WEBPACK_IMPORTED_MODULE_45__.default;
    } else if (featureType === 'polygons') {
      return geometry instanceof ol_geom__WEBPACK_IMPORTED_MODULE_48__.default;
    } else if (featureType === 'lines') {
      return geometry instanceof ol_geom__WEBPACK_IMPORTED_MODULE_52__.default;
    }

    return false;
  });

  if (filteredFeatures.length > 0) {
    var extent = (0,ol_extent__WEBPACK_IMPORTED_MODULE_53__.boundingExtent)(filteredFeatures.map(function (feature) {
      return feature.getGeometry().getExtent();
    }));
    map.getView().fit(extent, {
      padding: [50, 50, 50, 50],
      duration: 1000,
      maxZoom: 14
    });
  } else {
    // vue par défaut si aucune feature du type demandé
    map.getView().setCenter((0,ol_proj__WEBPACK_IMPORTED_MODULE_27__.fromLonLat)([2.3644638, 48.8764576]));
    map.getView().setZoom(10);
  }
}

function showOverlay(overlay, coord) {
  overlay.getElement().style.display = 'block';
  overlay.setPosition(coord);
}

function hideOverlay(overlay) {
  overlay.getElement().style.display = 'none';
  overlay.setPosition(undefined);
}

function hideAllOverlay() {
  map.getOverlays().forEach(function (overlay) {
    hideOverlay(overlay);
  });
}

function initPopupOverlayRdv(datas, coordinates) {
  var badgeType = overlayRdv.getElement().getElementsByClassName('badge-type')[0];
  var couleur = datas.planning.type_planification_init.couleur;
  badgeType.innerHTML = \"\".concat(datas.planning.type_planification_init.code_court);
  badgeType.style.backgroundColor = couleur;
  overlayRdv.getElement().style.borderColor = couleur;
  overlayRdv.getElement().style.setProperty('--popup-arrow-color', couleur); //numéro client
  //génération lien pour ouverture fiche client

  var completeUrl = '';

  if (datas.equipement !== null && datas.equipement.client_souscripteur !== undefined) {
    var base_url = window.location.origin;
    var url = path_client.split('/');

    if (datas.equipement.client_souscripteur.id) {
      var id = datas.equipement.client_souscripteur.id;

      if (datas.equipement.id) {
        id += '?id_equipement=' + datas.equipement.id;
      }

      url[url.length - 1] = id;
    }

    completeUrl = base_url + url.join('/');
  }

  overlayRdv.getElement().getElementsByClassName('client-id')[0].href = completeUrl;
  overlayRdv.getElement().getElementsByClassName('client-id')[0].innerHTML = \"\".concat(datas.equipement.client_souscripteur.formatted_numero_client); //badge moment

  overlayRdv.getElement().getElementsByClassName('badge-moment')[0].innerHTML = \"\".concat(datas.planning.moment_passage.libelle_planning); //badge equipement type

  overlayRdv.getElement().getElementsByClassName('badge-equip')[0].innerHTML = \"\".concat(datas.equipement.equipement_type_puissance.equipement_type.type); //infos client

  var contentClient = '';

  if (datas.equipement.client_souscripteur.etat_civil !== null) {
    // particulier
    contentClient = \"<b>\".concat(datas.equipement.client_souscripteur.etat_civil.libelle_court, \" \").concat(datas.equipement.client_souscripteur.nom);

    if (datas.equipement.client_souscripteur.prenom !== '' && datas.equipement.client_souscripteur.prenom !== null) {
      contentClient += \" \".concat(datas.equipement.client_souscripteur.prenom);
    }
  } else if (datas.equipement.client_souscripteur.categorie_pro !== null) {
    //pro
    contentClient = \"<b>\".concat(datas.equipement.client_souscripteur.categorie_pro.libelle, \" \").concat(datas.equipement.client_souscripteur.nom_entreprise);
  }

  contentClient += \"</b><br>\".concat(datas.equipement.adresse.adresse);

  if (datas.equipement.adresse.adresse_complement !== '' && datas.equipement.adresse.adresse_complement !== null) {
    contentClient += \"<br>\".concat(datas.equipement.adresse.adresse_complement);
  }

  contentClient += \"<br>\".concat(datas.equipement.adresse.code_postal, \" \").concat(datas.equipement.adresse.ville);
  overlayRdv.getElement().getElementsByClassName('client-coordonnees')[0].innerHTML = contentClient; //badge contrat

  var contrat = '';

  if (datas.equipement.contrat_en_cours !== '' && datas.equipement.contrat_en_cours !== null) {
    contrat = \"\".concat(datas.equipement.contrat_en_cours.contrat_type.libelle_court);
  }

  overlayRdv.getElement().getElementsByClassName('badge-contrat')[0].innerHTML = contrat;
  var contentRdv = \"<b>\".concat(datas.planning.libelleStatut, \"</b>\");

  if (datas.planning.heure_debut !== '' && datas.planning.heure_debut !== null) {
    contentRdv += \"<br>Heure d\\xE9but : \".concat(new Date(datas.planning.heure_debut).toLocaleTimeString('fr-FR', {
      hour: '2-digit',
      minute: '2-digit'
    }));
  }

  if (datas.planning.heure_fin !== '' && datas.planning.heure_fin !== null) {
    contentRdv += \" - Heure fin : \".concat(new Date(datas.planning.heure_fin).toLocaleTimeString('fr-FR', {
      hour: '2-digit',
      minute: '2-digit'
    }));
  }

  overlayRdv.getElement().getElementsByClassName('popup-rdv-info')[0].innerHTML = contentRdv;
  showOverlay(overlayRdv, coordinates);
}

function initPopupOverlayCas(datas, coordinates) {
  var couleur = '#34495e';
  overlayCas.getElement().style.borderColor = couleur;
  overlayCas.getElement().style.setProperty('--popup-arrow-color', couleur); //numéro client
  //génération lien pour ouverture fiche client

  var completeUrl = '';

  if (datas.id !== null && datas.client_souscripteur !== undefined) {
    var base_url = window.location.origin;
    var url = path_client.split('/');

    if (datas.client_souscripteur.id) {
      var id = datas.client_souscripteur.id;

      if (datas.id) {
        id += '?id_equipement=' + datas.id;
      }

      url[url.length - 1] = id;
    }

    completeUrl = base_url + url.join('/');
  }

  overlayCas.getElement().getElementsByClassName('client-id')[0].href = completeUrl;
  overlayCas.getElement().getElementsByClassName('client-id')[0].innerHTML = \"\".concat(datas.client_souscripteur.formatted_numero_client); //badge equipement type

  overlayCas.getElement().getElementsByClassName('badge-equip')[0].innerHTML = \"\".concat(datas.equipement_type_puissance.equipement_type.type); //infos client

  var contentClient = '';

  if (datas.client_souscripteur.etat_civil !== null) {
    // particulier
    contentClient = \"<b>\".concat(datas.client_souscripteur.etat_civil.libelle_court, \" \").concat(datas.client_souscripteur.nom);

    if (datas.client_souscripteur.prenom !== '' && datas.client_souscripteur.prenom !== null) {
      contentClient += \" \".concat(datas.client_souscripteur.prenom);
    }
  } else if (datas.client_souscripteur.categorie_pro !== null) {
    //pro
    contentClient = \"<b>\".concat(datas.client_souscripteur.categorie_pro.libelle, \" \").concat(datas.client_souscripteur.nom_entreprise);
  }

  contentClient += \"</b><br>\".concat(datas.adresse.adresse);

  if (datas.adresse.adresse_complement !== '' && datas.adresse.adresse_complement !== null) {
    contentClient += \"<br>\".concat(datas.adresse.adresse_complement);
  }

  contentClient += \"<br>\".concat(datas.adresse.code_postal, \" \").concat(datas.adresse.ville);
  overlayCas.getElement().getElementsByClassName('client-coordonnees')[0].innerHTML = contentClient; //badge contrat

  var contrat = '';

  if (datas.contrat_en_cours !== '' && datas.contrat_en_cours !== null) {
    contrat = \"\".concat(datas.contrat_en_cours.contrat_type.libelle_court);
  }

  overlayCas.getElement().getElementsByClassName('badge-contrat')[0].innerHTML = contrat;
  showOverlay(overlayCas, coordinates);
}

function initPopupOverlayGps(datas, coordinates) {
  var contentGps = '';

  if (datas.type == 'tech') {
    contentGps = \"Derni\\xE8re position - \";
  }

  contentGps += \"\".concat(datas.agent, \"<br>\").concat(datas.date_heure);
  overlayGps.getElement().getElementsByClassName('popup-gps-info')[0].innerHTML = contentGps;
  showOverlay(overlayGps, coordinates);
}

function onSingleClickFeature(event) {
  hideAllOverlay();
  var feature = map.forEachFeatureAtPixel(event.pixel, function (feature) {
    return feature;
  });

  if (feature && feature.get('datas') !== '') {
    var datas = feature.get('datas');

    if (datas.type && datas.type !== '') {
      var coordinates = feature.getGeometry().getCoordinates();

      if (datas.type === 'gps' || datas.type === 'tech') {
        initPopupOverlayGps(datas, coordinates);
      } else if (datas.type === 'intervention') {
        initPopupOverlayRdv(datas, coordinates);
      } else if (datas.type === 'cas') {
        initPopupOverlayCas(datas, coordinates); // Mise en évidence du bloc dans la sidebar

        var blockId = \"cas-block-\".concat(datas.id);
        var block = document.getElementById(blockId);

        if (block) {
          // Retirer la mise en évidence des autres blocs
          document.querySelectorAll('.cas-sidebar-block').forEach(function (el) {
            el.classList.remove('highlight-cas');
          }); // Ajouter la mise en évidence au bloc actuel

          block.classList.add('highlight-cas'); // Faire défiler jusqu'au bloc dans le conteneur de la sidebar

          block.scrollIntoView({
            behavior: 'smooth',
            block: 'nearest'
          });
        }
      }
    }
  }
}
function punaises(data) {
  var init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
  removeFeatures(); //supprimer les markers de la carte

  var remainingMarkers = 0; // Compteur des marqueurs à ajouter

  var onMarkerAdded = function onMarkerAdded() {
    remainingMarkers--;

    if (remainingMarkers === 0) {
      // Une fois que tous les marqueurs sont ajoutés, ajuster la vue
      fitMapToFeaturesByType('markers');
    }
  };

  if (data.agents || data.agent) {
    var agents = Array.isArray(data.agents) ? data.agents : data.agent ? [data.agent] : [];
    agents.forEach(function (agent) {
      if (!init) {
        // home
        remainingMarkers++;
        addMarker(agent.coordonnees, agent.code_agent, 'home', 'default', 'white', {
          type: 'home',
          agentId: agent.id
        }, onMarkerAdded);
      } // dernière position


      if (agent.derniere_pos !== '' && agent.derniere_pos !== null) {
        remainingMarkers++;
        var datas = {
          agent: \"Agent \".concat(agent.code_agent),
          date_heure: formatDate(agent.derniere_pos.date_heure),
          type: 'tech',
          agentId: agent.id
        };
        addMarker(agent.derniere_pos.coordonnees, agent.code_agent, 'tech', 'default', 'white', datas, onMarkerAdded);
      }
    });
  }

  if (!init) {
    if (data.interventions) {
      data.interventions.forEach(function (intervention) {
        var coords = [0, 0];

        if (intervention.equipement) {
          var adresse = intervention.equipement.adresse;
          coords = [adresse.longitude, adresse.latitude];
        }

        var planning = intervention.planning;
        var code = planning.utilisateur_agent.code_agent;
        var moment = planning.moment_passage.id;
        var statut = planning.statut;
        intervention.type = 'intervention';
        intervention.agentId = planning.utilisateur_agent.id;
        remainingMarkers++;
        addMarker(coords, code, statut, moment, 'white', intervention, onMarkerAdded);
      });
    }

    if (data.cas) {
      data.cas.forEach(function (cas) {
        var coords = [0, 0];

        if (cas.adresse) {
          coords = [cas.adresse.longitude, cas.adresse.latitude];
        }

        cas.type = 'cas';
        remainingMarkers++;
        addMarker(coords, cas.map_label, '', 'default', 'white', cas, onMarkerAdded);
      });
    }
  }
}
function formatDate(dateString) {
  // Crée un objet Date à partir de la chaîne
  var date = new Date(dateString); // Récupère les composants de la date

  var day = String(date.getDate()).padStart(2, '0'); // Jour au format \"02\"

  var month = String(date.getMonth() + 1).padStart(2, '0'); // Mois au format \"02\" (les mois commencent à 0)

  var year = date.getFullYear(); // Année au format \"2025\"
  // Récupère l'heure et les minutes

  var hours = String(date.getHours()).padStart(2, '0'); // Heure au format \"07\"

  var minutes = String(date.getMinutes()).padStart(2, '0'); // Minutes au format \"05\"
  // Retourne le format désiré

  return \"Le \".concat(day, \"/\").concat(month, \"/\").concat(year, \" \\xE0 \").concat(hours, \":\").concat(minutes);
}


/***/ })

}]);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvanMvbWFwLmpzIl0sIm5hbWVzIjpbInB1bmFpc2VJbWciLCJPYmplY3QiLCJmcmVlemUiLCJwdW5haXNlUmVkSW1nIiwicHVuYWlzZUJsdWVJbWciLCJwdW5haXNlR3JlZW5JbWciLCJwdW5haXNlRGVmYXVsdEltZyIsInB1bmFpc2VHcHNJbWciLCJwdW5haXNlUGljdG8iLCJ1bmljb2RlIiwiZm9udCIsImJhc2VMYXllcnMiLCJUaWxlTGF5ZXIiLCJzb3VyY2UiLCJPU00iLCJ2aXNpYmxlIiwiWFlaIiwidXJsIiwibWFwIiwiTWFwIiwidGFyZ2V0IiwibGF5ZXJzIiwidmFsdWVzIiwidmlldyIsIlZpZXciLCJjZW50ZXIiLCJmcm9tTG9uTGF0Iiwiem9vbSIsImNvbnRyb2xzIiwiZGVmYXVsdENvbnRyb2xzIiwiYXR0cmlidXRpb24iLCJyb3RhdGUiLCJleHRlbmQiLCJTY2FsZUxpbmUiLCJMYXllclN3aXRjaGVyQ29udHJvbCIsImJ1dHRvbiIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImlubmVySFRNTCIsImNsYXNzTmFtZSIsImxpc3QiLCJrZXlzIiwiZm9yRWFjaCIsImxheWVyTmFtZSIsIm9wdGlvbiIsImFkZEV2ZW50TGlzdGVuZXIiLCJsYXllciIsInNldFZpc2libGUiLCJjbGFzc0xpc3QiLCJhZGQiLCJhcHBlbmRDaGlsZCIsImNvbnRhaW5lciIsImVsZW1lbnQiLCJ0b2dnbGUiLCJldmVudCIsImNvbnRhaW5zIiwiQ29udHJvbCIsImFkZENvbnRyb2wiLCJ2ZWN0b3JTb3VyY2UiLCJWZWN0b3JTb3VyY2UiLCJ2ZWN0b3JMYXllciIsIlZlY3RvckxheWVyIiwiYWRkTGF5ZXIiLCJvdmVybGF5UmR2IiwiT3ZlcmxheSIsImdldEVsZW1lbnRCeUlkIiwiYXV0b1BhbiIsInBvc2l0aW9uaW5nIiwib2Zmc2V0Iiwib3ZlcmxheUNhcyIsIm92ZXJsYXlHcHMiLCJjcmVhdGVDdXN0b21JY29uIiwidGV4dCIsImltZ1NyYyIsImNvbG9yIiwiaXNTbWFsbCIsImNhbGxiYWNrIiwiY2FudmFzIiwid2lkdGgiLCJoZWlnaHQiLCJjdHgiLCJnZXRDb250ZXh0IiwiaW1nIiwiSW1hZ2UiLCJzcmMiLCJvbmxvYWQiLCJkcmF3SW1hZ2UiLCJmaWxsU3R5bGUiLCJ0ZXh0QWxpZ24iLCJmaWxsVGV4dCIsInRvRGF0YVVSTCIsImFkZE1hcmtlciIsImNvb3JkcyIsInBpY3RvIiwicHVuYWlzZSIsImRhdGFzIiwib25Db21wbGV0ZSIsInBpY3RvRGF0YSIsInR5cGUiLCJpY29uVXJsIiwiZmVhdHVyZSIsIkZlYXR1cmUiLCJnZW9tZXRyeSIsIlBvaW50Iiwic2V0U3R5bGUiLCJTdHlsZSIsImltYWdlIiwiSWNvbiIsInNjYWxlIiwiYW5jaG9yIiwiekluZGV4Iiwic2V0IiwiYWRkRmVhdHVyZSIsImFkZFBvbHlnb24iLCJjb3VsZXVyIiwiY29udmVydGVkQ29vcmRzIiwiaSIsImxlbmd0aCIsInB1c2giLCJQb2x5Z29uIiwic3Ryb2tlIiwiU3Ryb2tlIiwiZmlsbCIsIkZpbGwiLCJoZXhUb1JnYmEiLCJhZGRTZWFyY2hDaXJjbGUiLCJyYWRpdXNJbkttIiwiY2VudGVyV2ViTWVyY2F0b3IiLCJyYWRpdXNJbk1ldGVycyIsInJlc29sdXRpb25BdExvY2F0aW9uIiwiZ2V0UG9pbnRSZXNvbHV0aW9uIiwiYWRqdXN0ZWRSYWRpdXMiLCJDaXJjbGUiLCJsaW5lRGFzaCIsImhleCIsImFscGhhIiwiYmlnaW50IiwicGFyc2VJbnQiLCJyZXBsYWNlIiwiciIsImciLCJiIiwicmVtb3ZlRmVhdHVyZXMiLCJnZXRPdmVybGF5cyIsIm92ZXJsYXkiLCJzZXRQb3NpdGlvbiIsInVuZGVmaW5lZCIsImNsZWFyIiwicmVtb3ZlRmVhdHVyZXNCeURhdGFWYWx1ZSIsImRhdGFOYW1lIiwidmFsdWUiLCJmb3JFYWNoRmVhdHVyZSIsImdldCIsInJlbW92ZUZlYXR1cmUiLCJmaXRNYXBUb0ZlYXR1cmVzIiwiZ2V0RmVhdHVyZXMiLCJleHRlbnQiLCJnZXRFeHRlbnQiLCJnZXRWaWV3IiwiZml0IiwicGFkZGluZyIsImR1cmF0aW9uIiwibWF4Wm9vbSIsInNldENlbnRlciIsInNldFpvb20iLCJmaXRNYXBUb0ZlYXR1cmVzQnlUeXBlIiwiZmVhdHVyZVR5cGUiLCJmZWF0dXJlcyIsImZpbHRlcmVkRmVhdHVyZXMiLCJmaWx0ZXIiLCJnZXRHZW9tZXRyeSIsIkxpbmVTdHJpbmciLCJib3VuZGluZ0V4dGVudCIsInNob3dPdmVybGF5IiwiY29vcmQiLCJnZXRFbGVtZW50Iiwic3R5bGUiLCJkaXNwbGF5IiwiaGlkZU92ZXJsYXkiLCJoaWRlQWxsT3ZlcmxheSIsImluaXRQb3B1cE92ZXJsYXlSZHYiLCJjb29yZGluYXRlcyIsImJhZGdlVHlwZSIsImdldEVsZW1lbnRzQnlDbGFzc05hbWUiLCJwbGFubmluZyIsInR5cGVfcGxhbmlmaWNhdGlvbl9pbml0IiwiY29kZV9jb3VydCIsImJhY2tncm91bmRDb2xvciIsImJvcmRlckNvbG9yIiwic2V0UHJvcGVydHkiLCJjb21wbGV0ZVVybCIsImVxdWlwZW1lbnQiLCJjbGllbnRfc291c2NyaXB0ZXVyIiwiYmFzZV91cmwiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsIm9yaWdpbiIsInBhdGhfY2xpZW50Iiwic3BsaXQiLCJpZCIsImpvaW4iLCJocmVmIiwiZm9ybWF0dGVkX251bWVyb19jbGllbnQiLCJtb21lbnRfcGFzc2FnZSIsImxpYmVsbGVfcGxhbm5pbmciLCJlcXVpcGVtZW50X3R5cGVfcHVpc3NhbmNlIiwiZXF1aXBlbWVudF90eXBlIiwiY29udGVudENsaWVudCIsImV0YXRfY2l2aWwiLCJsaWJlbGxlX2NvdXJ0Iiwibm9tIiwicHJlbm9tIiwiY2F0ZWdvcmllX3BybyIsImxpYmVsbGUiLCJub21fZW50cmVwcmlzZSIsImFkcmVzc2UiLCJhZHJlc3NlX2NvbXBsZW1lbnQiLCJjb2RlX3Bvc3RhbCIsInZpbGxlIiwiY29udHJhdCIsImNvbnRyYXRfZW5fY291cnMiLCJjb250cmF0X3R5cGUiLCJjb250ZW50UmR2IiwibGliZWxsZVN0YXR1dCIsImhldXJlX2RlYnV0IiwiRGF0ZSIsInRvTG9jYWxlVGltZVN0cmluZyIsImhvdXIiLCJtaW51dGUiLCJoZXVyZV9maW4iLCJpbml0UG9wdXBPdmVybGF5Q2FzIiwiaW5pdFBvcHVwT3ZlcmxheUdwcyIsImNvbnRlbnRHcHMiLCJhZ2VudCIsImRhdGVfaGV1cmUiLCJvblNpbmdsZUNsaWNrRmVhdHVyZSIsImZvckVhY2hGZWF0dXJlQXRQaXhlbCIsInBpeGVsIiwiZ2V0Q29vcmRpbmF0ZXMiLCJibG9ja0lkIiwiYmxvY2siLCJxdWVyeVNlbGVjdG9yQWxsIiwiZWwiLCJyZW1vdmUiLCJzY3JvbGxJbnRvVmlldyIsImJlaGF2aW9yIiwicHVuYWlzZXMiLCJkYXRhIiwiaW5pdCIsInJlbWFpbmluZ01hcmtlcnMiLCJvbk1hcmtlckFkZGVkIiwiYWdlbnRzIiwiQXJyYXkiLCJpc0FycmF5IiwiY29vcmRvbm5lZXMiLCJjb2RlX2FnZW50IiwiYWdlbnRJZCIsImRlcm5pZXJlX3BvcyIsImZvcm1hdERhdGUiLCJpbnRlcnZlbnRpb25zIiwiaW50ZXJ2ZW50aW9uIiwibG9uZ2l0dWRlIiwibGF0aXR1ZGUiLCJjb2RlIiwidXRpbGlzYXRldXJfYWdlbnQiLCJtb21lbnQiLCJzdGF0dXQiLCJjYXMiLCJtYXBfbGFiZWwiLCJkYXRlU3RyaW5nIiwiZGF0ZSIsImRheSIsIlN0cmluZyIsImdldERhdGUiLCJwYWRTdGFydCIsIm1vbnRoIiwiZ2V0TW9udGgiLCJ5ZWFyIiwiZ2V0RnVsbFllYXIiLCJob3VycyIsImdldEhvdXJzIiwibWludXRlcyIsImdldE1pbnV0ZXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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TCxFQUFELENBQU4sQ0FBMEJSLFFBQTFCLENBQW1DLENBQW5DLEVBQXNDLEdBQXRDLENBQWhCLENBWG1DLENBV3lCO0FBRTVEOztBQUNBLHNCQUFhSCxHQUFiLGNBQW9CSSxLQUFwQixjQUE2QkUsSUFBN0IsbUJBQXVDRSxLQUF2QyxjQUFnREUsT0FBaEQ7QUFDSCIsImZpbGUiOiJhc3NldHNfanNfbWFwX2pzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE1hcCBmcm9tICdvbC9NYXAnO1xyXG5pbXBvcnQgVmlldyBmcm9tICdvbC9WaWV3JztcclxuaW1wb3J0IHtUaWxlIGFzIFRpbGVMYXllciwgVmVjdG9yfSBmcm9tICdvbC9sYXllcic7XHJcbmltcG9ydCB7IE9TTSwgWFlaIH0gZnJvbSAnb2wvc291cmNlJztcclxuaW1wb3J0IHsgZnJvbUxvbkxhdCwgZ2V0UG9pbnRSZXNvbHV0aW9uIH0gZnJvbSAnb2wvcHJvaic7XHJcbmltcG9ydCBDb250cm9sIGZyb20gJ29sL2NvbnRyb2wvQ29udHJvbCc7XHJcbmltcG9ydCB7IGRlZmF1bHRzIGFzIGRlZmF1bHRDb250cm9scywgU2NhbGVMaW5lIH0gZnJvbSAnb2wvY29udHJvbCc7XHJcbmltcG9ydCB7Q2lyY2xlLCBMaW5lU3RyaW5nLCBQb2ludCwgUG9seWdvbn0gZnJvbSBcIm9sL2dlb21cIjtcclxuaW1wb3J0IFZlY3RvclNvdXJjZSBmcm9tIFwib2wvc291cmNlL1ZlY3RvclwiO1xyXG5pbXBvcnQgVmVjdG9yTGF5ZXIgZnJvbSBcIm9sL2xheWVyL1ZlY3RvclwiO1xyXG5pbXBvcnQge0ZlYXR1cmV9IGZyb20gXCJvbFwiO1xyXG5pbXBvcnQge0ZpbGwsIEljb24sIFN0cm9rZSwgU3R5bGV9IGZyb20gXCJvbC9zdHlsZVwiO1xyXG5pbXBvcnQgeyBib3VuZGluZ0V4dGVudCB9IGZyb20gJ29sL2V4dGVudCc7XHJcblxyXG5cclxuLy9pbWFnZXNcclxuaW1wb3J0IHB1bmFpc2VEZWZhdWx0SW1nIGZyb20gJy4uL2ltYWdlcy9wdW5haXNlLnBuZyc7XHJcbmltcG9ydCBwdW5haXNlUmVkSW1nIGZyb20gJy4uL2ltYWdlcy9wdW5haXNlLXJlZC5wbmcnO1xyXG5pbXBvcnQgcHVuYWlzZUdyZWVuSW1nIGZyb20gJy4uL2ltYWdlcy9wdW5haXNlLWdyZWVuLnBuZyc7XHJcbmltcG9ydCBwdW5haXNlQmx1ZUltZyBmcm9tICcuLi9pbWFnZXMvcHVuYWlzZS1ibHVlLnBuZyc7XHJcbmltcG9ydCBwdW5haXNlR3BzSW1nIGZyb20gICAnLi4vaW1hZ2VzL3B1bmFpc2UtZ3BzLnBuZyc7XHJcbmltcG9ydCBPdmVybGF5IGZyb20gXCJvbC9PdmVybGF5XCI7XHJcblxyXG5jb25zdCBwdW5haXNlSW1nID0gT2JqZWN0LmZyZWV6ZSh7XHJcbiAgICAxOiBwdW5haXNlUmVkSW1nLFxyXG4gICAgMjogcHVuYWlzZVJlZEltZyxcclxuICAgIDM6IHB1bmFpc2VSZWRJbWcsXHJcbiAgICA0OiBwdW5haXNlQmx1ZUltZyxcclxuICAgIDU6IHB1bmFpc2VCbHVlSW1nLFxyXG4gICAgNjogcHVuYWlzZUJsdWVJbWcsXHJcbiAgICA3OiBwdW5haXNlR3JlZW5JbWcsXHJcbiAgICBcImRlZmF1bHRcIjogcHVuYWlzZURlZmF1bHRJbWcsXHJcbiAgICBcImdwc1wiOiBwdW5haXNlR3BzSW1nXHJcbn0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IHB1bmFpc2VQaWN0byA9IE9iamVjdC5mcmVlemUoe1xyXG4gICAgMDogeyB1bmljb2RlOiAnXFx1ZjAxNycsIGZvbnQ6ICdib2xkIDEwcHggXCJGb250IEF3ZXNvbWUgNSBGcmVlXCInIH0sIC8vIGZhLWNsb2NrIChSZWd1bGFyKVxyXG4gICAgMTogeyB1bmljb2RlOiAnXFx1ZjA2MycsIGZvbnQ6ICdib2xkIDEwcHggXCJGb250IEF3ZXNvbWUgNSBGcmVlXCInIH0sIC8vIGZhLWFycm93LXVwIChTb2xpZClcclxuICAgIDI6IHsgdW5pY29kZTogJ1xcdWYwNGInLCBmb250OiAnYm9sZCAxMHB4IFwiRm9udCBBd2Vzb21lIDUgRnJlZVwiJyB9LCAvLyBmYS1wbGF5IChTb2xpZClcclxuICAgIDM6IHsgdW5pY29kZTogJ1xcdWYwMGMnLCBmb250OiAnYm9sZCAxMHB4IFwiRm9udCBBd2Vzb21lIDUgRnJlZVwiJyB9LCAvLyBmYS1jaGVjayAoU29saWQpXHJcbiAgICA0OiB7IHVuaWNvZGU6ICdcXHVmMDBjJywgZm9udDogJ2JvbGQgMTBweCBcIkZvbnQgQXdlc29tZSA1IEZyZWVcIicgfSwgIC8vIGZhLWNoZWNrIChTb2xpZClcclxuICAgICdob21lJzogeyB1bmljb2RlOiAnXFx1ZTA2NScsIGZvbnQ6ICdib2xkIDEwcHggXCJGb250IEF3ZXNvbWUgNSBGcmVlXCInIH0sICAvLyBmYS1ob3VzZS11c2VyIChTb2xpZClcclxuICAgICd0ZWNoJzogeyB1bmljb2RlOiAnXFx1ZjAwNycsIGZvbnQ6ICdib2xkIDEwcHggXCJGb250IEF3ZXNvbWUgNSBGcmVlXCInIH0gIC8vIGZhLXVzZXIgKFNvbGlkKVxyXG59KTtcclxuXHJcblxyXG5cclxuLy8gRMOpZmluaXRpb24gZGVzIGZvbmRzIGRlIGNhcnRlXHJcbmNvbnN0IGJhc2VMYXllcnMgPSB7XHJcbiAgICBcIk9wZW5TdHJlZXRNYXBcIjogbmV3IFRpbGVMYXllcih7XHJcbiAgICAgICAgc291cmNlOiBuZXcgT1NNKCksXHJcbiAgICAgICAgdmlzaWJsZTogdHJ1ZSxcclxuICAgIH0pLFxyXG4gICAgXCJTYXRlbGxpdGVcIjogbmV3IFRpbGVMYXllcih7XHJcbiAgICAgICAgc291cmNlOiBuZXcgWFlaKHtcclxuICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9JbWFnZXJ5L01hcFNlcnZlci90aWxlL3t6fS97eX0ve3h9JyxcclxuICAgICAgICB9KSxcclxuICAgICAgICB2aXNpYmxlOiBmYWxzZSxcclxuICAgIH0pLFxyXG59O1xyXG5cclxuY29uc3QgbWFwID0gbmV3IE1hcCh7XHJcbiAgICB0YXJnZXQ6ICdtYXAnLFxyXG4gICAgLy8gbGF5ZXJzOiBbb3NtTGF5ZXIsIHNhdGVsbGl0ZUxheWVyXSxcclxuICAgIGxheWVyczogT2JqZWN0LnZhbHVlcyhiYXNlTGF5ZXJzKSxcclxuICAgIHZpZXc6IG5ldyBWaWV3KHtcclxuICAgICAgICBjZW50ZXI6IGZyb21Mb25MYXQoWzIuMzY0NDYzOCwgNDguODc2NDU3Nl0pLCAvLyBQYXJpc1xyXG4gICAgICAgIHpvb206IDEwLFxyXG4gICAgfSksXHJcbiAgICBjb250cm9sczogZGVmYXVsdENvbnRyb2xzKHtcclxuICAgICAgICBhdHRyaWJ1dGlvbjogZmFsc2UgLFxyXG4gICAgICAgIHJvdGF0ZTogZmFsc2UsXHJcbiAgICB9KS5leHRlbmQoW1xyXG4gICAgICAgIG5ldyBTY2FsZUxpbmUoKSwgLy8gQWpvdXRlIHVuZSDDqWNoZWxsZVxyXG4gICAgXSlcclxufSk7XHJcblxyXG5jbGFzcyBMYXllclN3aXRjaGVyQ29udHJvbCBleHRlbmRzIENvbnRyb2wge1xyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgY29uc3QgYnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7XHJcbiAgICAgICAgYnV0dG9uLmlubmVySFRNTCA9ICc8aSBjbGFzcz1cImZhcyBmYS1sYXllci1ncm91cFwiIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAwcHg7XCI+PC9pPic7IC8vIEljw7RuZSBkdSBib3V0b25cclxuICAgICAgICBidXR0b24uY2xhc3NOYW1lID0gJ2xheWVyLXN3aXRjaC1idXR0b24nO1xyXG5cclxuICAgICAgICBjb25zdCBsaXN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgICAgbGlzdC5jbGFzc05hbWUgPSAnbGF5ZXItc3dpdGNoLWxpc3QgaGlkZGVuJztcclxuXHJcbiAgICAgICAgLy8gQWpvdXRlciBsZXMgb3B0aW9uc1xyXG4gICAgICAgIE9iamVjdC5rZXlzKGJhc2VMYXllcnMpLmZvckVhY2gobGF5ZXJOYW1lID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgb3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgICAgICAgIG9wdGlvbi5jbGFzc05hbWUgPSAnbGF5ZXItb3B0aW9uJztcclxuICAgICAgICAgICAgb3B0aW9uLmlubmVySFRNTCA9IGxheWVyTmFtZTtcclxuICAgICAgICAgICAgb3B0aW9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgT2JqZWN0LnZhbHVlcyhiYXNlTGF5ZXJzKS5mb3JFYWNoKGxheWVyID0+IGxheWVyLnNldFZpc2libGUoZmFsc2UpKTtcclxuICAgICAgICAgICAgICAgIGJhc2VMYXllcnNbbGF5ZXJOYW1lXS5zZXRWaXNpYmxlKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgbGlzdC5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGxpc3QuYXBwZW5kQ2hpbGQob3B0aW9uKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgICAgY29udGFpbmVyLmNsYXNzTmFtZSA9ICdsYXllci1zd2l0Y2hlciBvbC1jb250cm9sJztcclxuICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoYnV0dG9uKTtcclxuICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQobGlzdCk7XHJcblxyXG4gICAgICAgIHN1cGVyKHsgZWxlbWVudDogY29udGFpbmVyIH0pO1xyXG5cclxuICAgICAgICBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGxpc3QuY2xhc3NMaXN0LnRvZ2dsZSgnaGlkZGVuJyk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vIENhY2hlciBsYSBsaXN0ZSBxdWFuZCBvbiBjbGlxdWUgYWlsbGV1cnNcclxuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChldmVudCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWNvbnRhaW5lci5jb250YWlucyhldmVudC50YXJnZXQpKSB7XHJcbiAgICAgICAgICAgICAgICBsaXN0LmNsYXNzTGlzdC5hZGQoJ2hpZGRlbicpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuXHJcblxyXG5cclxuLy8gQWpvdXQgZGVzIGNvbnRyw7RsZXMgw6AgbGEgY2FydGVcclxubWFwLmFkZENvbnRyb2wobmV3IExheWVyU3dpdGNoZXJDb250cm9sKCkpO1xyXG5cclxuLy8gU291cmNlIHZlY3RvcmllbGxlIHBvdXIgc3RvY2tlciBsZXMgcHVuYWlzZXNcclxuY29uc3QgdmVjdG9yU291cmNlID0gbmV3IFZlY3RvclNvdXJjZSgpO1xyXG5jb25zdCB2ZWN0b3JMYXllciA9IG5ldyBWZWN0b3JMYXllcih7IHNvdXJjZTogdmVjdG9yU291cmNlIH0pO1xyXG5tYXAuYWRkTGF5ZXIodmVjdG9yTGF5ZXIpO1xyXG5cclxubGV0IG92ZXJsYXlSZHYgPSBuZXcgT3ZlcmxheSh7XHJcbiAgICBlbGVtZW50OiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncG9wdXAtcmR2JyksXHJcbiAgICBhdXRvUGFuOiB0cnVlLFxyXG4gICAgcG9zaXRpb25pbmc6ICdib3R0b20tY2VudGVyJyxcclxuICAgIG9mZnNldDogWzAsIC00M10gLy8gZMOpY2FsYWdlIGVuIHBpeGVscyAoaG9yaXpvbnRhbCwgdmVydGljYWwpXHJcbn0pO1xyXG5cclxubGV0IG92ZXJsYXlDYXMgPSBuZXcgT3ZlcmxheSh7XHJcbiAgICBlbGVtZW50OiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncG9wdXAtY2FzJyksXHJcbiAgICBhdXRvUGFuOiB0cnVlLFxyXG4gICAgcG9zaXRpb25pbmc6ICdib3R0b20tY2VudGVyJyxcclxuICAgIG9mZnNldDogWzAsIC00M10gLy8gZMOpY2FsYWdlIGVuIHBpeGVscyAoaG9yaXpvbnRhbCwgdmVydGljYWwpXHJcbn0pO1xyXG5cclxubGV0IG92ZXJsYXlHcHMgPSBuZXcgT3ZlcmxheSh7XHJcbiAgICBlbGVtZW50OiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncG9wdXAtZ3BzJyksXHJcbiAgICBhdXRvUGFuOiB0cnVlLFxyXG4gICAgcG9zaXRpb25pbmc6ICdib3R0b20tY2VudGVyJyxcclxuICAgIG9mZnNldDogWzAsIC0zMV0gLy8gZMOpY2FsYWdlIGVuIHBpeGVscyAoaG9yaXpvbnRhbCwgdmVydGljYWwpXHJcbn0pO1xyXG5cclxuXHJcblxyXG4vL0ZvbmN0aW9uIHBvdXIgZ8OpbsOpcmVyIHVuZSBpY8O0bmUgcGVyc29ubmFsaXPDqWUgYXZlYyB1bmUgaW1hZ2UsIGR1IHRleHRlIGV0IHVuIHBpY3RvZ3JhbW1lXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDdXN0b21JY29uKHRleHQsIHVuaWNvZGUsIGZvbnQsIGltZ1NyYywgY29sb3IsIGlzU21hbGwsIGNhbGxiYWNrKSB7XHJcbiAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcclxuICAgIGxldCB3aWR0aCA9IDI0O1xyXG4gICAgbGV0IGhlaWdodCA9IDMyO1xyXG4gICAgaWYgKGlzU21hbGwpIHtcclxuICAgICAgICB3aWR0aCA9IDE1O1xyXG4gICAgICAgIGhlaWdodCA9IDIwO1xyXG4gICAgfVxyXG4gICAgY2FudmFzLndpZHRoID0gd2lkdGg7XHJcbiAgICBjYW52YXMuaGVpZ2h0ID0gaGVpZ2h0O1xyXG4gICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XHJcblxyXG4gICAgY29uc3QgaW1nID0gbmV3IEltYWdlKCk7XHJcbiAgICBpbWcuc3JjID0gaW1nU3JjO1xyXG5cclxuICAgIGltZy5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgLy8gRGVzc2luZXIgbGEgcHVuYWlzZSBkZSBiYXNlXHJcbiAgICAgICAgY3R4LmRyYXdJbWFnZShpbWcsIDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7XHJcblxyXG4gICAgICAgIC8vIEFqb3V0ZXIgZHUgdGV4dGVcclxuICAgICAgICBjdHguZmlsbFN0eWxlID0gY29sb3I7XHJcbiAgICAgICAgY3R4LnRleHRBbGlnbiA9ICdjZW50ZXInO1xyXG5cclxuICAgICAgICBpZiAodW5pY29kZSAhPT0gJycpIHtcclxuICAgICAgICAgICAgY3R4LmZvbnQgPSAnYm9sZCA5cHggXCJMYXRvXCInO1xyXG4gICAgICAgICAgICBjdHguZmlsbFRleHQodGV4dCwgMTIsIDEzKTtcclxuICAgICAgICAgICAgY3R4LmZvbnQgPSBmb250O1xyXG4gICAgICAgICAgICBjdHguZmlsbFRleHQodW5pY29kZSwgMTIsIDI0KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBTaSBwYXMgZCd1bmljb2RlLCBwbGFjZXIgbGUgdGV4dGUgbm9ybWFsZW1lbnRcclxuICAgICAgICAgICAgaWYgKGlzU21hbGwpIHtcclxuICAgICAgICAgICAgICAgIGN0eC5mb250ID0gJ2JvbGQgN3B4IFwiTGF0b1wiJztcclxuICAgICAgICAgICAgICAgIGN0eC5maWxsVGV4dCh0ZXh0LCB3aWR0aCAvIDIsIDExKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGN0eC5mb250ID0gJ2JvbGQgOXB4IFwiTGF0b1wiJztcclxuICAgICAgICAgICAgICAgIGN0eC5maWxsVGV4dCh0ZXh0LCB3aWR0aCAvIDIsIDE2KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gQ29udmVydGlyIGVuIERhdGEgVVJMIGV0IGFwcGVsZXIgbGUgY2FsbGJhY2tcclxuICAgICAgICBjYWxsYmFjayhjYW52YXMudG9EYXRhVVJMKCkpO1xyXG4gICAgfTtcclxufVxyXG5cclxuXHJcbi8vIEZvbmN0aW9uIHBvdXIgYWpvdXRlciB1bmUgcHVuYWlzZVxyXG5leHBvcnQgZnVuY3Rpb24gYWRkTWFya2VyKGNvb3JkcywgdGV4dCwgcGljdG8sIHB1bmFpc2UsIGNvbG9yLCBkYXRhcywgb25Db21wbGV0ZSkge1xyXG4gICAgbGV0IHBpY3RvRGF0YTtcclxuICAgIGxldCBpc1NtYWxsID0gZmFsc2U7XHJcbiAgICBcclxuICAgIC8vIETDqXRlcm1pbmVyIHNpIGMnZXN0IHVuZSBwZXRpdGUgcHVjZSAoZG9ubsOpZXMgR1BTIHNhbnMgcGljdG8pXHJcbiAgICBpZiAoZGF0YXMgJiYgZGF0YXMudHlwZSA9PT0gJ2dwcycpIHtcclxuICAgICAgICBpc1NtYWxsID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocGljdG8gPT09ICcnKSB7XHJcbiAgICAgICAgcGljdG9EYXRhID0geyB1bmljb2RlOiAnJywgZm9udDogJycgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcGljdG9EYXRhID0gcHVuYWlzZVBpY3RvW3BpY3RvXTtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgdW5pY29kZSwgZm9udCB9ID0gcGljdG9EYXRhOyAvLyBSw6ljdXDDqHJlIHVuaWNvZGUgZXQgZm9udFxyXG4gICAgY29uc3QgaW1nU3JjID0gcHVuYWlzZUltZ1twdW5haXNlXTtcclxuICAgIGNyZWF0ZUN1c3RvbUljb24odGV4dCwgdW5pY29kZSwgZm9udCwgaW1nU3JjLCBjb2xvciwgaXNTbWFsbCwgKGljb25VcmwpID0+IHtcclxuICAgICAgICBjb25zdCBmZWF0dXJlID0gbmV3IEZlYXR1cmUoe1xyXG4gICAgICAgICAgICBnZW9tZXRyeTogbmV3IFBvaW50KGZyb21Mb25MYXQoY29vcmRzKSksXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGZlYXR1cmUuc2V0U3R5bGUoXHJcbiAgICAgICAgICAgIG5ldyBTdHlsZSh7XHJcbiAgICAgICAgICAgICAgICBpbWFnZTogbmV3IEljb24oe1xyXG4gICAgICAgICAgICAgICAgICAgIHNyYzogaWNvblVybCxcclxuICAgICAgICAgICAgICAgICAgICBzY2FsZTogMSwgLy8gQWp1c3RlIHNlbG9uIGxhIHRhaWxsZSBkw6lzaXLDqWVcclxuICAgICAgICAgICAgICAgICAgICBhbmNob3I6IFswLjUsIDFdLCAvLyBQb3VyIGJpZW4gYWxpZ25lciBsYSBwdW5haXNlXHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIHpJbmRleDogMTAwXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgICAgICBmZWF0dXJlLnNldCgnZGF0YXMnLCBkYXRhcyk7XHJcbiAgICAgICAgdmVjdG9yU291cmNlLmFkZEZlYXR1cmUoZmVhdHVyZSk7XHJcbiAgICAgICAgLy8gRXjDqWN1dGVyIGxlIGNhbGxiYWNrIHF1YW5kIGwnYWpvdXQgZXN0IHRlcm1pbsOpXHJcbiAgICAgICAgaWYgKG9uQ29tcGxldGUpIG9uQ29tcGxldGUoKTtcclxuICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYWRkUG9seWdvbihjb29yZHMsIGNvdWxldXIgPSAnIzAwMCcpe1xyXG4gICAgY29uc3QgY29udmVydGVkQ29vcmRzID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvb3Jkcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnZlcnRlZENvb3Jkcy5wdXNoKGZyb21Mb25MYXQoY29vcmRzW2ldKSk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGNvbnN0IGZlYXR1cmUgPSBuZXcgRmVhdHVyZSh7XHJcbiAgICAgICAgZ2VvbWV0cnk6IG5ldyBQb2x5Z29uKFtjb252ZXJ0ZWRDb29yZHNdKSxcclxuICAgIH0pO1xyXG4gICAgZmVhdHVyZS5zZXRTdHlsZShcclxuICAgICAgICBuZXcgU3R5bGUoe1xyXG4gICAgICAgICAgICBzdHJva2U6IG5ldyBTdHJva2Uoe1xyXG4gICAgICAgICAgICAgICAgY29sb3I6IGNvdWxldXIsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogMC41XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBmaWxsOiBuZXcgRmlsbCh7XHJcbiAgICAgICAgICAgICAgICBjb2xvcjogaGV4VG9SZ2JhKGNvdWxldXIsIDAuMylcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIHpJbmRleDogMTBcclxuICAgICAgICB9KVxyXG4gICAgKTtcclxuICAgIGNvbnN0IGRhdGFzID0ge1xyXG4gICAgICAgIHR5cGU6ICdzZWN0ZXVyJ1xyXG4gICAgfTtcclxuICAgIGZlYXR1cmUuc2V0KCdkYXRhcycsIGRhdGFzKTtcclxuICAgIHZlY3RvclNvdXJjZS5hZGRGZWF0dXJlKGZlYXR1cmUpO1xyXG59XHJcblxyXG4vKipcclxuICogQWpvdXRlIHVuIGNlcmNsZSBkZSByZWNoZXJjaGUgc3VyIGxhIGNhcnRlXHJcbiAqIEBwYXJhbSB7QXJyYXl9IGNlbnRlciBbbG9uLCBsYXRdXHJcbiAqIEBwYXJhbSB7bnVtYmVyfSByYWRpdXNJbkttXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gYWRkU2VhcmNoQ2lyY2xlKGNlbnRlciwgcmFkaXVzSW5LbSkge1xyXG4gICAgaWYgKCFjZW50ZXIgfHwgIWNlbnRlclswXSB8fCAhY2VudGVyWzFdIHx8ICFyYWRpdXNJbkttKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgY2VudGVyV2ViTWVyY2F0b3IgPSBmcm9tTG9uTGF0KGNlbnRlcik7XHJcbiAgICBcclxuICAgIC8vIFBvdXIgdHJhbnNmb3JtZXIgZGVzIGttIGVuIHVuaXTDqXMgZGUgY2FydGUgKFdlYiBNZXJjYXRvciksIFxyXG4gICAgLy8gb24gYWp1c3RlIGxlIHJheW9uIGVuIGZvbmN0aW9uIGRlIGxhIHLDqXNvbHV0aW9uIMOgIGxhIGxhdGl0dWRlIGRvbm7DqWVcclxuICAgIC8vIHBvdXIgcXVlIGxlIGNlcmNsZSB2aXN1ZWwgY29ycmVzcG9uZGUgw6AgbGEgZGlzdGFuY2UgcsOpZWxsZSBhdSBzb2wuXHJcbiAgICBjb25zdCByYWRpdXNJbk1ldGVycyA9IHJhZGl1c0luS20gKiAxMDAwO1xyXG4gICAgY29uc3QgcmVzb2x1dGlvbkF0TG9jYXRpb24gPSBnZXRQb2ludFJlc29sdXRpb24oJ0VQU0c6Mzg1NycsIDEsIGNlbnRlcldlYk1lcmNhdG9yKTtcclxuICAgIGNvbnN0IGFkanVzdGVkUmFkaXVzID0gcmFkaXVzSW5NZXRlcnMgLyByZXNvbHV0aW9uQXRMb2NhdGlvbjtcclxuICAgIFxyXG4gICAgY29uc3QgZmVhdHVyZSA9IG5ldyBGZWF0dXJlKHtcclxuICAgICAgICBnZW9tZXRyeTogbmV3IENpcmNsZShjZW50ZXJXZWJNZXJjYXRvciwgYWRqdXN0ZWRSYWRpdXMpXHJcbiAgICB9KTtcclxuXHJcbiAgICBmZWF0dXJlLnNldFN0eWxlKFxyXG4gICAgICAgIG5ldyBTdHlsZSh7XHJcbiAgICAgICAgICAgIHN0cm9rZTogbmV3IFN0cm9rZSh7XHJcbiAgICAgICAgICAgICAgICBjb2xvcjogXCIjMzQ0OTVlXCIsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogMixcclxuICAgICAgICAgICAgICAgIGxpbmVEYXNoOiBbNSwgNV0gLy8gUG9pbnRpbGzDqVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgZmlsbDogbmV3IEZpbGwoe1xyXG4gICAgICAgICAgICAgICAgY29sb3IgOiBoZXhUb1JnYmEoXCIjMzQ0OTVlXCIsIDAuMTUpXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICB6SW5kZXg6IDFcclxuICAgICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgICBmZWF0dXJlLnNldCgnZGF0YXMnLCB7IHR5cGU6ICdyYXlvbl9yZWNoZXJjaGUnIH0pO1xyXG4gICAgdmVjdG9yU291cmNlLmFkZEZlYXR1cmUoZmVhdHVyZSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGhleFRvUmdiYShoZXgsIGFscGhhID0gMSkge1xyXG4gICAgY29uc3QgYmlnaW50ID0gcGFyc2VJbnQoaGV4LnJlcGxhY2UoJyMnLCAnJyksIDE2KTtcclxuICAgIGNvbnN0IHIgPSAoYmlnaW50ID4+IDE2KSAmIDI1NTtcclxuICAgIGNvbnN0IGcgPSAoYmlnaW50ID4+IDgpICYgMjU1O1xyXG4gICAgY29uc3QgYiA9IGJpZ2ludCAmIDI1NTtcclxuICAgIHJldHVybiBgcmdiYSgke3J9LCAke2d9LCAke2J9LCAke2FscGhhfSlgO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlRmVhdHVyZXMoKXtcclxuICAgIG1hcC5nZXRPdmVybGF5cygpLmZvckVhY2goZnVuY3Rpb24gKG92ZXJsYXkpIHsgLy9jYWNoZXIgbGVzIHBvcHVwIG92ZXJsYXlcclxuICAgICAgICBvdmVybGF5LnNldFBvc2l0aW9uKHVuZGVmaW5lZCk7XHJcbiAgICB9KTtcclxuICAgIHZlY3RvclNvdXJjZS5jbGVhcigpO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVGZWF0dXJlc0J5RGF0YVZhbHVlKGRhdGFOYW1lLCB2YWx1ZSl7XHJcbiAgICB2ZWN0b3JTb3VyY2UuZm9yRWFjaEZlYXR1cmUoKGZlYXR1cmUpID0+IHtcclxuICAgICAgICBjb25zdCBkYXRhcyA9IGZlYXR1cmUuZ2V0KCdkYXRhcycpO1xyXG4gICAgICAgIGlmIChkYXRhcyAmJiBkYXRhc1tkYXRhTmFtZV0gPT09IHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHZlY3RvclNvdXJjZS5yZW1vdmVGZWF0dXJlKGZlYXR1cmUpO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZml0TWFwVG9GZWF0dXJlcygpIHtcclxuICAgIGlmICh2ZWN0b3JTb3VyY2UuZ2V0RmVhdHVyZXMoKS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgY29uc3QgZXh0ZW50ID0gdmVjdG9yU291cmNlLmdldEV4dGVudCgpOyAvLyBSw6ljdXDDqHJlIGwnw6l0ZW5kdWUgZGUgdG91dGVzIGxlcyBmZWF0dXJlc1xyXG4gICAgICAgIG1hcC5nZXRWaWV3KCkuZml0KGV4dGVudCwge1xyXG4gICAgICAgICAgICBwYWRkaW5nOiBbNTAsIDUwLCA1MCwgNTBdLFxyXG4gICAgICAgICAgICBkdXJhdGlvbjogMTAwMCxcclxuICAgICAgICAgICAgbWF4Wm9vbTogMTQgLy/DqXZpdGUgZGFucyBsZSBjYXMgZCd1bmUgZmVhdHVyZSBkJ8OqdHJlIHRyb3Agem9vbcOpIHN1ciBsYSBjYXJ0ZVxyXG4gICAgICAgIH0pOyAvLyBBanVzdGUgbGEgdnVlXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIHZ1ZSBwYXIgZMOpZmF1dCBzaSBhdWN1bmUgZmVhdHVyZVxyXG4gICAgICAgIG1hcC5nZXRWaWV3KCkuc2V0Q2VudGVyKGZyb21Mb25MYXQoWzIuMzY0NDYzOCwgNDguODc2NDU3Nl0pKTtcclxuICAgICAgICBtYXAuZ2V0VmlldygpLnNldFpvb20oMTApO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZml0TWFwVG9GZWF0dXJlc0J5VHlwZShmZWF0dXJlVHlwZSkge1xyXG4gICAgY29uc3QgZmVhdHVyZXMgPSB2ZWN0b3JTb3VyY2UuZ2V0RmVhdHVyZXMoKTtcclxuICAgIGNvbnN0IGZpbHRlcmVkRmVhdHVyZXMgPSBmZWF0dXJlcy5maWx0ZXIoZmVhdHVyZSA9PiB7XHJcbiAgICAgICAgY29uc3QgZ2VvbWV0cnkgPSBmZWF0dXJlLmdldEdlb21ldHJ5KCk7XHJcbiAgICAgICAgaWYgKGZlYXR1cmVUeXBlID09PSAnbWFya2VycycgfHwgZmVhdHVyZVR5cGUgPT09ICdwb2ludHMnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBnZW9tZXRyeSBpbnN0YW5jZW9mIFBvaW50O1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZmVhdHVyZVR5cGUgPT09ICdwb2x5Z29ucycpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGdlb21ldHJ5IGluc3RhbmNlb2YgUG9seWdvbjtcclxuICAgICAgICB9IGVsc2UgaWYgKGZlYXR1cmVUeXBlID09PSAnbGluZXMnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBnZW9tZXRyeSBpbnN0YW5jZW9mIExpbmVTdHJpbmc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0pO1xyXG4gICAgXHJcbiAgICBpZiAoZmlsdGVyZWRGZWF0dXJlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgY29uc3QgZXh0ZW50ID0gYm91bmRpbmdFeHRlbnQoXHJcbiAgICAgICAgICAgIGZpbHRlcmVkRmVhdHVyZXMubWFwKGZlYXR1cmUgPT4gZmVhdHVyZS5nZXRHZW9tZXRyeSgpLmdldEV4dGVudCgpKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgbWFwLmdldFZpZXcoKS5maXQoZXh0ZW50LCB7XHJcbiAgICAgICAgICAgIHBhZGRpbmc6IFs1MCwgNTAsIDUwLCA1MF0sXHJcbiAgICAgICAgICAgIGR1cmF0aW9uOiAxMDAwLFxyXG4gICAgICAgICAgICBtYXhab29tOiAxNFxyXG4gICAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICAvLyB2dWUgcGFyIGTDqWZhdXQgc2kgYXVjdW5lIGZlYXR1cmUgZHUgdHlwZSBkZW1hbmTDqVxyXG4gICAgICAgIG1hcC5nZXRWaWV3KCkuc2V0Q2VudGVyKGZyb21Mb25MYXQoWzIuMzY0NDYzOCwgNDguODc2NDU3Nl0pKTtcclxuICAgICAgICBtYXAuZ2V0VmlldygpLnNldFpvb20oMTApO1xyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBzaG93T3ZlcmxheShvdmVybGF5LCBjb29yZCkge1xyXG4gICAgb3ZlcmxheS5nZXRFbGVtZW50KCkuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XHJcbiAgICBvdmVybGF5LnNldFBvc2l0aW9uKGNvb3JkKTtcclxufVxyXG5cclxuZnVuY3Rpb24gaGlkZU92ZXJsYXkob3ZlcmxheSkge1xyXG4gICAgb3ZlcmxheS5nZXRFbGVtZW50KCkuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgIG92ZXJsYXkuc2V0UG9zaXRpb24odW5kZWZpbmVkKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGhpZGVBbGxPdmVybGF5KCl7XHJcbiAgICBtYXAuZ2V0T3ZlcmxheXMoKS5mb3JFYWNoKGZ1bmN0aW9uIChvdmVybGF5KSB7XHJcbiAgICAgICAgaGlkZU92ZXJsYXkob3ZlcmxheSk7XHJcbiAgICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gaW5pdFBvcHVwT3ZlcmxheVJkdihkYXRhcywgY29vcmRpbmF0ZXMpe1xyXG4gICAgY29uc3QgYmFkZ2VUeXBlID0gb3ZlcmxheVJkdi5nZXRFbGVtZW50KCkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYmFkZ2UtdHlwZScpWzBdO1xyXG4gICAgY29uc3QgY291bGV1ciA9IGRhdGFzLnBsYW5uaW5nLnR5cGVfcGxhbmlmaWNhdGlvbl9pbml0LmNvdWxldXI7XHJcbiAgICBiYWRnZVR5cGUuaW5uZXJIVE1MID0gYCR7ZGF0YXMucGxhbm5pbmcudHlwZV9wbGFuaWZpY2F0aW9uX2luaXQuY29kZV9jb3VydH1gO1xyXG4gICAgYmFkZ2VUeXBlLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IGNvdWxldXI7XHJcbiAgICBvdmVybGF5UmR2LmdldEVsZW1lbnQoKS5zdHlsZS5ib3JkZXJDb2xvciA9IGNvdWxldXI7XHJcbiAgICBvdmVybGF5UmR2LmdldEVsZW1lbnQoKS5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1wb3B1cC1hcnJvdy1jb2xvcicsIGNvdWxldXIpO1xyXG4gICAgLy9udW3DqXJvIGNsaWVudFxyXG4gICAgLy9nw6luw6lyYXRpb24gbGllbiBwb3VyIG91dmVydHVyZSBmaWNoZSBjbGllbnRcclxuICAgIGxldCBjb21wbGV0ZVVybCA9ICcnO1xyXG4gICAgaWYoZGF0YXMuZXF1aXBlbWVudCAhPT0gbnVsbCAmJiBkYXRhcy5lcXVpcGVtZW50LmNsaWVudF9zb3VzY3JpcHRldXIgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGxldCBiYXNlX3VybCA9IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW47XHJcbiAgICAgICAgbGV0IHVybCA9IHBhdGhfY2xpZW50LnNwbGl0KCcvJyk7XHJcbiAgICAgICAgaWYgKGRhdGFzLmVxdWlwZW1lbnQuY2xpZW50X3NvdXNjcmlwdGV1ci5pZCkge1xyXG4gICAgICAgICAgICBsZXQgaWQgPSBkYXRhcy5lcXVpcGVtZW50LmNsaWVudF9zb3VzY3JpcHRldXIuaWQ7XHJcbiAgICAgICAgICAgIGlmIChkYXRhcy5lcXVpcGVtZW50LmlkKSB7XHJcbiAgICAgICAgICAgICAgICBpZCArPSAnP2lkX2VxdWlwZW1lbnQ9JyArIGRhdGFzLmVxdWlwZW1lbnQuaWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdXJsW3VybC5sZW5ndGggLSAxXSA9IGlkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb21wbGV0ZVVybCA9IGJhc2VfdXJsICsgdXJsLmpvaW4oJy8nKTtcclxuICAgIH1cclxuICAgIG92ZXJsYXlSZHYuZ2V0RWxlbWVudCgpLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2NsaWVudC1pZCcpWzBdLmhyZWYgPSBjb21wbGV0ZVVybDtcclxuICAgIG92ZXJsYXlSZHYuZ2V0RWxlbWVudCgpLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2NsaWVudC1pZCcpWzBdLmlubmVySFRNTCA9IGAke2RhdGFzLmVxdWlwZW1lbnQuY2xpZW50X3NvdXNjcmlwdGV1ci5mb3JtYXR0ZWRfbnVtZXJvX2NsaWVudH1gO1xyXG4gICAgLy9iYWRnZSBtb21lbnRcclxuICAgIG92ZXJsYXlSZHYuZ2V0RWxlbWVudCgpLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2JhZGdlLW1vbWVudCcpWzBdLmlubmVySFRNTCA9IGAke2RhdGFzLnBsYW5uaW5nLm1vbWVudF9wYXNzYWdlLmxpYmVsbGVfcGxhbm5pbmd9YDtcclxuICAgIC8vYmFkZ2UgZXF1aXBlbWVudCB0eXBlXHJcbiAgICBvdmVybGF5UmR2LmdldEVsZW1lbnQoKS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdiYWRnZS1lcXVpcCcpWzBdLmlubmVySFRNTCA9IGAke2RhdGFzLmVxdWlwZW1lbnQuZXF1aXBlbWVudF90eXBlX3B1aXNzYW5jZS5lcXVpcGVtZW50X3R5cGUudHlwZX1gO1xyXG4gICAgLy9pbmZvcyBjbGllbnRcclxuICAgIGxldCBjb250ZW50Q2xpZW50ID0gJyc7XHJcbiAgICBpZihkYXRhcy5lcXVpcGVtZW50LmNsaWVudF9zb3VzY3JpcHRldXIuZXRhdF9jaXZpbCAhPT0gbnVsbCkgeyAvLyBwYXJ0aWN1bGllclxyXG4gICAgICAgIGNvbnRlbnRDbGllbnQgPSBgPGI+JHtkYXRhcy5lcXVpcGVtZW50LmNsaWVudF9zb3VzY3JpcHRldXIuZXRhdF9jaXZpbC5saWJlbGxlX2NvdXJ0fSAke2RhdGFzLmVxdWlwZW1lbnQuY2xpZW50X3NvdXNjcmlwdGV1ci5ub219YDtcclxuICAgICAgICBpZiAoZGF0YXMuZXF1aXBlbWVudC5jbGllbnRfc291c2NyaXB0ZXVyLnByZW5vbSAhPT0gJycgJiYgZGF0YXMuZXF1aXBlbWVudC5jbGllbnRfc291c2NyaXB0ZXVyLnByZW5vbSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBjb250ZW50Q2xpZW50ICs9IGAgJHtkYXRhcy5lcXVpcGVtZW50LmNsaWVudF9zb3VzY3JpcHRldXIucHJlbm9tfWA7XHJcbiAgICAgICAgfVxyXG4gICAgfWVsc2UgaWYoZGF0YXMuZXF1aXBlbWVudC5jbGllbnRfc291c2NyaXB0ZXVyLmNhdGVnb3JpZV9wcm8gIT09IG51bGwpeyAvL3Byb1xyXG4gICAgICAgIGNvbnRlbnRDbGllbnQgPSBgPGI+JHtkYXRhcy5lcXVpcGVtZW50LmNsaWVudF9zb3VzY3JpcHRldXIuY2F0ZWdvcmllX3Byby5saWJlbGxlfSAke2RhdGFzLmVxdWlwZW1lbnQuY2xpZW50X3NvdXNjcmlwdGV1ci5ub21fZW50cmVwcmlzZX1gO1xyXG4gICAgfVxyXG4gICAgY29udGVudENsaWVudCArPSBgPC9iPjxicj4ke2RhdGFzLmVxdWlwZW1lbnQuYWRyZXNzZS5hZHJlc3NlfWA7XHJcbiAgICBpZihkYXRhcy5lcXVpcGVtZW50LmFkcmVzc2UuYWRyZXNzZV9jb21wbGVtZW50ICE9PSAnJyAmJiBkYXRhcy5lcXVpcGVtZW50LmFkcmVzc2UuYWRyZXNzZV9jb21wbGVtZW50ICE9PSBudWxsKXtcclxuICAgICAgICBjb250ZW50Q2xpZW50ICs9IGA8YnI+JHtkYXRhcy5lcXVpcGVtZW50LmFkcmVzc2UuYWRyZXNzZV9jb21wbGVtZW50fWA7XHJcbiAgICB9XHJcbiAgICBjb250ZW50Q2xpZW50ICs9IGA8YnI+JHtkYXRhcy5lcXVpcGVtZW50LmFkcmVzc2UuY29kZV9wb3N0YWx9ICR7ZGF0YXMuZXF1aXBlbWVudC5hZHJlc3NlLnZpbGxlfWA7XHJcbiAgICBvdmVybGF5UmR2LmdldEVsZW1lbnQoKS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjbGllbnQtY29vcmRvbm5lZXMnKVswXS5pbm5lckhUTUwgPSBjb250ZW50Q2xpZW50O1xyXG5cclxuICAgIC8vYmFkZ2UgY29udHJhdFxyXG4gICAgbGV0IGNvbnRyYXQgPSAnJztcclxuICAgIGlmKGRhdGFzLmVxdWlwZW1lbnQuY29udHJhdF9lbl9jb3VycyAhPT0gJycgJiYgZGF0YXMuZXF1aXBlbWVudC5jb250cmF0X2VuX2NvdXJzICE9PSBudWxsKSB7XHJcbiAgICAgICAgY29udHJhdCA9IGAke2RhdGFzLmVxdWlwZW1lbnQuY29udHJhdF9lbl9jb3Vycy5jb250cmF0X3R5cGUubGliZWxsZV9jb3VydH1gO1xyXG4gICAgfVxyXG4gICAgb3ZlcmxheVJkdi5nZXRFbGVtZW50KCkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYmFkZ2UtY29udHJhdCcpWzBdLmlubmVySFRNTCA9IGNvbnRyYXQ7XHJcbiAgICBsZXQgY29udGVudFJkdiA9IGA8Yj4ke2RhdGFzLnBsYW5uaW5nLmxpYmVsbGVTdGF0dXR9PC9iPmA7XHJcbiAgICBpZihkYXRhcy5wbGFubmluZy5oZXVyZV9kZWJ1dCAhPT0gJycgJiYgZGF0YXMucGxhbm5pbmcuaGV1cmVfZGVidXQgIT09IG51bGwpe1xyXG4gICAgICAgIGNvbnRlbnRSZHYgKz0gYDxicj5IZXVyZSBkw6lidXQgOiAke25ldyBEYXRlKGRhdGFzLnBsYW5uaW5nLmhldXJlX2RlYnV0KS50b0xvY2FsZVRpbWVTdHJpbmcoJ2ZyLUZSJywge2hvdXI6ICcyLWRpZ2l0JywgbWludXRlOicyLWRpZ2l0J30pfWA7XHJcbiAgICB9XHJcbiAgICBpZihkYXRhcy5wbGFubmluZy5oZXVyZV9maW4gIT09ICcnICYmIGRhdGFzLnBsYW5uaW5nLmhldXJlX2ZpbiAhPT0gbnVsbCl7XHJcbiAgICAgICAgY29udGVudFJkdiArPSBgIC0gSGV1cmUgZmluIDogJHtuZXcgRGF0ZShkYXRhcy5wbGFubmluZy5oZXVyZV9maW4pLnRvTG9jYWxlVGltZVN0cmluZygnZnItRlInLCB7aG91cjogJzItZGlnaXQnLCBtaW51dGU6JzItZGlnaXQnfSl9YDtcclxuICAgIH1cclxuICAgIG92ZXJsYXlSZHYuZ2V0RWxlbWVudCgpLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3BvcHVwLXJkdi1pbmZvJylbMF0uaW5uZXJIVE1MID0gY29udGVudFJkdjtcclxuICAgIHNob3dPdmVybGF5KG92ZXJsYXlSZHYsIGNvb3JkaW5hdGVzKTtcclxufVxyXG5cclxuZnVuY3Rpb24gaW5pdFBvcHVwT3ZlcmxheUNhcyhkYXRhcywgY29vcmRpbmF0ZXMpe1xyXG4gICAgY29uc3QgY291bGV1ciA9ICcjMzQ0OTVlJztcclxuICAgIG92ZXJsYXlDYXMuZ2V0RWxlbWVudCgpLnN0eWxlLmJvcmRlckNvbG9yID0gY291bGV1cjtcclxuICAgIG92ZXJsYXlDYXMuZ2V0RWxlbWVudCgpLnN0eWxlLnNldFByb3BlcnR5KCctLXBvcHVwLWFycm93LWNvbG9yJywgY291bGV1cik7XHJcbiAgICAvL251bcOpcm8gY2xpZW50XHJcbiAgICAvL2fDqW7DqXJhdGlvbiBsaWVuIHBvdXIgb3V2ZXJ0dXJlIGZpY2hlIGNsaWVudFxyXG4gICAgbGV0IGNvbXBsZXRlVXJsID0gJyc7XHJcbiAgICBpZihkYXRhcy5pZCAhPT0gbnVsbCAmJiBkYXRhcy5jbGllbnRfc291c2NyaXB0ZXVyICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBsZXQgYmFzZV91cmwgPSB3aW5kb3cubG9jYXRpb24ub3JpZ2luO1xyXG4gICAgICAgIGxldCB1cmwgPSBwYXRoX2NsaWVudC5zcGxpdCgnLycpO1xyXG4gICAgICAgIGlmIChkYXRhcy5jbGllbnRfc291c2NyaXB0ZXVyLmlkKSB7XHJcbiAgICAgICAgICAgIGxldCBpZCA9IGRhdGFzLmNsaWVudF9zb3VzY3JpcHRldXIuaWQ7XHJcbiAgICAgICAgICAgIGlmIChkYXRhcy5pZCkge1xyXG4gICAgICAgICAgICAgICAgaWQgKz0gJz9pZF9lcXVpcGVtZW50PScgKyBkYXRhcy5pZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB1cmxbdXJsLmxlbmd0aCAtIDFdID0gaWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbXBsZXRlVXJsID0gYmFzZV91cmwgKyB1cmwuam9pbignLycpO1xyXG4gICAgfVxyXG4gICAgb3ZlcmxheUNhcy5nZXRFbGVtZW50KCkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnY2xpZW50LWlkJylbMF0uaHJlZiA9IGNvbXBsZXRlVXJsO1xyXG4gICAgb3ZlcmxheUNhcy5nZXRFbGVtZW50KCkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnY2xpZW50LWlkJylbMF0uaW5uZXJIVE1MID0gYCR7ZGF0YXMuY2xpZW50X3NvdXNjcmlwdGV1ci5mb3JtYXR0ZWRfbnVtZXJvX2NsaWVudH1gO1xyXG4gICAgIC8vYmFkZ2UgZXF1aXBlbWVudCB0eXBlXHJcbiAgICBvdmVybGF5Q2FzLmdldEVsZW1lbnQoKS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdiYWRnZS1lcXVpcCcpWzBdLmlubmVySFRNTCA9IGAke2RhdGFzLmVxdWlwZW1lbnRfdHlwZV9wdWlzc2FuY2UuZXF1aXBlbWVudF90eXBlLnR5cGV9YDtcclxuICAgIC8vaW5mb3MgY2xpZW50XHJcbiAgICBsZXQgY29udGVudENsaWVudCA9ICcnO1xyXG4gICAgaWYoZGF0YXMuY2xpZW50X3NvdXNjcmlwdGV1ci5ldGF0X2NpdmlsICE9PSBudWxsKSB7IC8vIHBhcnRpY3VsaWVyXHJcbiAgICAgICAgY29udGVudENsaWVudCA9IGA8Yj4ke2RhdGFzLmNsaWVudF9zb3VzY3JpcHRldXIuZXRhdF9jaXZpbC5saWJlbGxlX2NvdXJ0fSAke2RhdGFzLmNsaWVudF9zb3VzY3JpcHRldXIubm9tfWA7XHJcbiAgICAgICAgaWYgKGRhdGFzLmNsaWVudF9zb3VzY3JpcHRldXIucHJlbm9tICE9PSAnJyAmJiBkYXRhcy5jbGllbnRfc291c2NyaXB0ZXVyLnByZW5vbSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBjb250ZW50Q2xpZW50ICs9IGAgJHtkYXRhcy5jbGllbnRfc291c2NyaXB0ZXVyLnByZW5vbX1gO1xyXG4gICAgICAgIH1cclxuICAgIH1lbHNlIGlmKGRhdGFzLmNsaWVudF9zb3VzY3JpcHRldXIuY2F0ZWdvcmllX3BybyAhPT0gbnVsbCl7IC8vcHJvXHJcbiAgICAgICAgY29udGVudENsaWVudCA9IGA8Yj4ke2RhdGFzLmNsaWVudF9zb3VzY3JpcHRldXIuY2F0ZWdvcmllX3Byby5saWJlbGxlfSAke2RhdGFzLmNsaWVudF9zb3VzY3JpcHRldXIubm9tX2VudHJlcHJpc2V9YDtcclxuICAgIH1cclxuICAgIGNvbnRlbnRDbGllbnQgKz0gYDwvYj48YnI+JHtkYXRhcy5hZHJlc3NlLmFkcmVzc2V9YDtcclxuICAgIGlmKGRhdGFzLmFkcmVzc2UuYWRyZXNzZV9jb21wbGVtZW50ICE9PSAnJyAmJiBkYXRhcy5hZHJlc3NlLmFkcmVzc2VfY29tcGxlbWVudCAhPT0gbnVsbCl7XHJcbiAgICAgICAgY29udGVudENsaWVudCArPSBgPGJyPiR7ZGF0YXMuYWRyZXNzZS5hZHJlc3NlX2NvbXBsZW1lbnR9YDtcclxuICAgIH1cclxuICAgIGNvbnRlbnRDbGllbnQgKz0gYDxicj4ke2RhdGFzLmFkcmVzc2UuY29kZV9wb3N0YWx9ICR7ZGF0YXMuYWRyZXNzZS52aWxsZX1gO1xyXG4gICAgb3ZlcmxheUNhcy5nZXRFbGVtZW50KCkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnY2xpZW50LWNvb3Jkb25uZWVzJylbMF0uaW5uZXJIVE1MID0gY29udGVudENsaWVudDtcclxuXHJcbiAgICAvL2JhZGdlIGNvbnRyYXRcclxuICAgIGxldCBjb250cmF0ID0gJyc7XHJcbiAgICBpZihkYXRhcy5jb250cmF0X2VuX2NvdXJzICE9PSAnJyAmJiBkYXRhcy5jb250cmF0X2VuX2NvdXJzICE9PSBudWxsKSB7XHJcbiAgICAgICAgY29udHJhdCA9IGAke2RhdGFzLmNvbnRyYXRfZW5fY291cnMuY29udHJhdF90eXBlLmxpYmVsbGVfY291cnR9YDtcclxuICAgIH1cclxuICAgIG92ZXJsYXlDYXMuZ2V0RWxlbWVudCgpLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2JhZGdlLWNvbnRyYXQnKVswXS5pbm5lckhUTUwgPSBjb250cmF0O1xyXG4gICAgc2hvd092ZXJsYXkob3ZlcmxheUNhcywgY29vcmRpbmF0ZXMpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBpbml0UG9wdXBPdmVybGF5R3BzKGRhdGFzLCBjb29yZGluYXRlcyl7XHJcbiAgICBsZXQgY29udGVudEdwcyA9ICcnO1xyXG4gICAgaWYoZGF0YXMudHlwZSA9PSAndGVjaCcpe1xyXG4gICAgICAgIGNvbnRlbnRHcHMgPSBgRGVybmnDqHJlIHBvc2l0aW9uIC0gYDtcclxuICAgIH1cclxuICAgIGNvbnRlbnRHcHMgKz0gYCR7ZGF0YXMuYWdlbnR9PGJyPiR7ZGF0YXMuZGF0ZV9oZXVyZX1gO1xyXG4gICAgb3ZlcmxheUdwcy5nZXRFbGVtZW50KCkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgncG9wdXAtZ3BzLWluZm8nKVswXS5pbm5lckhUTUwgPSBjb250ZW50R3BzO1xyXG4gICAgc2hvd092ZXJsYXkob3ZlcmxheUdwcywgY29vcmRpbmF0ZXMpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gb25TaW5nbGVDbGlja0ZlYXR1cmUoZXZlbnQpIHtcclxuICAgIGhpZGVBbGxPdmVybGF5KCk7XHJcbiAgICBjb25zdCBmZWF0dXJlID0gbWFwLmZvckVhY2hGZWF0dXJlQXRQaXhlbChldmVudC5waXhlbCwgKGZlYXR1cmUpID0+IGZlYXR1cmUpO1xyXG4gICAgaWYgKGZlYXR1cmUgJiYgZmVhdHVyZS5nZXQoJ2RhdGFzJykgIT09ICcnKSB7XHJcbiAgICAgICAgbGV0IGRhdGFzID0gZmVhdHVyZS5nZXQoJ2RhdGFzJyk7XHJcbiAgICAgICAgaWYgKGRhdGFzLnR5cGUgJiYgZGF0YXMudHlwZSAhPT0gJycpIHtcclxuICAgICAgICAgICAgY29uc3QgY29vcmRpbmF0ZXMgPSBmZWF0dXJlLmdldEdlb21ldHJ5KCkuZ2V0Q29vcmRpbmF0ZXMoKTtcclxuICAgICAgICAgICAgaWYgKGRhdGFzLnR5cGUgPT09ICdncHMnIHx8IGRhdGFzLnR5cGUgPT09ICd0ZWNoJykge1xyXG4gICAgICAgICAgICAgICAgaW5pdFBvcHVwT3ZlcmxheUdwcyhkYXRhcywgY29vcmRpbmF0ZXMpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGRhdGFzLnR5cGUgPT09ICdpbnRlcnZlbnRpb24nKSB7XHJcbiAgICAgICAgICAgICAgICBpbml0UG9wdXBPdmVybGF5UmR2KGRhdGFzLCBjb29yZGluYXRlcyk7XHJcbiAgICAgICAgICAgIH1lbHNlIGlmIChkYXRhcy50eXBlID09PSAnY2FzJykge1xyXG4gICAgICAgICAgICAgICAgaW5pdFBvcHVwT3ZlcmxheUNhcyhkYXRhcywgY29vcmRpbmF0ZXMpO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAvLyBNaXNlIGVuIMOpdmlkZW5jZSBkdSBibG9jIGRhbnMgbGEgc2lkZWJhclxyXG4gICAgICAgICAgICAgICAgY29uc3QgYmxvY2tJZCA9IGBjYXMtYmxvY2stJHtkYXRhcy5pZH1gO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYmxvY2sgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChibG9ja0lkKTtcclxuICAgICAgICAgICAgICAgIGlmIChibG9jaykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIFJldGlyZXIgbGEgbWlzZSBlbiDDqXZpZGVuY2UgZGVzIGF1dHJlcyBibG9jc1xyXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5jYXMtc2lkZWJhci1ibG9jaycpLmZvckVhY2goZWwgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbC5jbGFzc0xpc3QucmVtb3ZlKCdoaWdobGlnaHQtY2FzJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gQWpvdXRlciBsYSBtaXNlIGVuIMOpdmlkZW5jZSBhdSBibG9jIGFjdHVlbFxyXG4gICAgICAgICAgICAgICAgICAgIGJsb2NrLmNsYXNzTGlzdC5hZGQoJ2hpZ2hsaWdodC1jYXMnKTtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAvLyBGYWlyZSBkw6lmaWxlciBqdXNxdSdhdSBibG9jIGRhbnMgbGUgY29udGVuZXVyIGRlIGxhIHNpZGViYXJcclxuICAgICAgICAgICAgICAgICAgICBibG9jay5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgYmxvY2s6ICduZWFyZXN0JyB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHB1bmFpc2VzKGRhdGEsIGluaXQ9ZmFsc2Upe1xyXG4gICAgcmVtb3ZlRmVhdHVyZXMoKTsgLy9zdXBwcmltZXIgbGVzIG1hcmtlcnMgZGUgbGEgY2FydGVcclxuICAgIGxldCByZW1haW5pbmdNYXJrZXJzID0gMDsgLy8gQ29tcHRldXIgZGVzIG1hcnF1ZXVycyDDoCBham91dGVyXHJcbiAgICBjb25zdCBvbk1hcmtlckFkZGVkID0gKCkgPT4ge1xyXG4gICAgICAgIHJlbWFpbmluZ01hcmtlcnMtLTtcclxuICAgICAgICBpZiAocmVtYWluaW5nTWFya2VycyA9PT0gMCkge1xyXG4gICAgICAgICAgICAvLyBVbmUgZm9pcyBxdWUgdG91cyBsZXMgbWFycXVldXJzIHNvbnQgYWpvdXTDqXMsIGFqdXN0ZXIgbGEgdnVlXHJcbiAgICAgICAgICAgIGZpdE1hcFRvRmVhdHVyZXNCeVR5cGUoJ21hcmtlcnMnKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgaWYgKGRhdGEuYWdlbnRzIHx8IGRhdGEuYWdlbnQpIHtcclxuICAgICAgICBjb25zdCBhZ2VudHMgPSBBcnJheS5pc0FycmF5KGRhdGEuYWdlbnRzKSA/IGRhdGEuYWdlbnRzIDogZGF0YS5hZ2VudCA/IFtkYXRhLmFnZW50XSA6IFtdO1xyXG5cclxuICAgICAgICBhZ2VudHMuZm9yRWFjaCgoYWdlbnQpID0+IHtcclxuICAgICAgICAgICAgaWYgKCFpbml0KSB7XHJcbiAgICAgICAgICAgICAgICAvLyBob21lXHJcbiAgICAgICAgICAgICAgICByZW1haW5pbmdNYXJrZXJzKys7XHJcbiAgICAgICAgICAgICAgICBhZGRNYXJrZXIoYWdlbnQuY29vcmRvbm5lZXMsIGFnZW50LmNvZGVfYWdlbnQsICdob21lJywgJ2RlZmF1bHQnLCAnd2hpdGUnLCB7dHlwZTogJ2hvbWUnLCBhZ2VudElkOiBhZ2VudC5pZH0sIG9uTWFya2VyQWRkZWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGRlcm5pw6hyZSBwb3NpdGlvblxyXG4gICAgICAgICAgICBpZiAoYWdlbnQuZGVybmllcmVfcG9zICE9PSAnJyAmJiBhZ2VudC5kZXJuaWVyZV9wb3MgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHJlbWFpbmluZ01hcmtlcnMrKztcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGFzID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIGFnZW50OiBgQWdlbnQgJHthZ2VudC5jb2RlX2FnZW50fWAsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0ZV9oZXVyZTogZm9ybWF0RGF0ZShhZ2VudC5kZXJuaWVyZV9wb3MuZGF0ZV9oZXVyZSksXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RlY2gnLFxyXG4gICAgICAgICAgICAgICAgICAgIGFnZW50SWQ6IGFnZW50LmlkLFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIGFkZE1hcmtlcihhZ2VudC5kZXJuaWVyZV9wb3MuY29vcmRvbm5lZXMsIGFnZW50LmNvZGVfYWdlbnQsICd0ZWNoJywgJ2RlZmF1bHQnLCAnd2hpdGUnLCBkYXRhcywgb25NYXJrZXJBZGRlZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmKCFpbml0KSB7XHJcbiAgICAgICAgaWYgKGRhdGEuaW50ZXJ2ZW50aW9ucykge1xyXG4gICAgICAgICAgICBkYXRhLmludGVydmVudGlvbnMuZm9yRWFjaCgoaW50ZXJ2ZW50aW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgY29vcmRzID0gWzAsIDBdO1xyXG4gICAgICAgICAgICAgICAgaWYgKGludGVydmVudGlvbi5lcXVpcGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGFkcmVzc2UgPSBpbnRlcnZlbnRpb24uZXF1aXBlbWVudC5hZHJlc3NlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvb3JkcyA9IFthZHJlc3NlLmxvbmdpdHVkZSwgYWRyZXNzZS5sYXRpdHVkZV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBsZXQgcGxhbm5pbmcgPSBpbnRlcnZlbnRpb24ucGxhbm5pbmc7XHJcbiAgICAgICAgICAgICAgICBsZXQgY29kZSA9IHBsYW5uaW5nLnV0aWxpc2F0ZXVyX2FnZW50LmNvZGVfYWdlbnQ7XHJcbiAgICAgICAgICAgICAgICBsZXQgbW9tZW50ID0gcGxhbm5pbmcubW9tZW50X3Bhc3NhZ2UuaWQ7XHJcbiAgICAgICAgICAgICAgICBsZXQgc3RhdHV0ID0gcGxhbm5pbmcuc3RhdHV0O1xyXG4gICAgICAgICAgICAgICAgaW50ZXJ2ZW50aW9uLnR5cGUgPSAnaW50ZXJ2ZW50aW9uJztcclxuICAgICAgICAgICAgICAgIGludGVydmVudGlvbi5hZ2VudElkID0gcGxhbm5pbmcudXRpbGlzYXRldXJfYWdlbnQuaWQ7XHJcbiAgICAgICAgICAgICAgICByZW1haW5pbmdNYXJrZXJzKys7XHJcbiAgICAgICAgICAgICAgICBhZGRNYXJrZXIoY29vcmRzLCBjb2RlLCBzdGF0dXQsIG1vbWVudCwgJ3doaXRlJywgaW50ZXJ2ZW50aW9uLCBvbk1hcmtlckFkZGVkKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChkYXRhLmNhcykge1xyXG4gICAgICAgICAgICBkYXRhLmNhcy5mb3JFYWNoKChjYXMpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBjb29yZHMgPSBbMCwgMF07XHJcbiAgICAgICAgICAgICAgICBpZiAoY2FzLmFkcmVzc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb29yZHMgPSBbY2FzLmFkcmVzc2UubG9uZ2l0dWRlLCBjYXMuYWRyZXNzZS5sYXRpdHVkZV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjYXMudHlwZSA9ICdjYXMnO1xyXG4gICAgICAgICAgICAgICAgcmVtYWluaW5nTWFya2VycysrO1xyXG4gICAgICAgICAgICAgICAgYWRkTWFya2VyKGNvb3JkcywgY2FzLm1hcF9sYWJlbCwgJycsICdkZWZhdWx0JywgJ3doaXRlJywgY2FzLCBvbk1hcmtlckFkZGVkKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RGF0ZShkYXRlU3RyaW5nKSB7XHJcbiAgICAvLyBDcsOpZSB1biBvYmpldCBEYXRlIMOgIHBhcnRpciBkZSBsYSBjaGHDrm5lXHJcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoZGF0ZVN0cmluZyk7XHJcblxyXG4gICAgLy8gUsOpY3Vww6hyZSBsZXMgY29tcG9zYW50cyBkZSBsYSBkYXRlXHJcbiAgICBjb25zdCBkYXkgPSBTdHJpbmcoZGF0ZS5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICcwJyk7IC8vIEpvdXIgYXUgZm9ybWF0IFwiMDJcIlxyXG4gICAgY29uc3QgbW9udGggPSBTdHJpbmcoZGF0ZS5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKTsgLy8gTW9pcyBhdSBmb3JtYXQgXCIwMlwiIChsZXMgbW9pcyBjb21tZW5jZW50IMOgIDApXHJcbiAgICBjb25zdCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpOyAvLyBBbm7DqWUgYXUgZm9ybWF0IFwiMjAyNVwiXHJcblxyXG4gICAgLy8gUsOpY3Vww6hyZSBsJ2hldXJlIGV0IGxlcyBtaW51dGVzXHJcbiAgICBjb25zdCBob3VycyA9IFN0cmluZyhkYXRlLmdldEhvdXJzKCkpLnBhZFN0YXJ0KDIsICcwJyk7IC8vIEhldXJlIGF1IGZvcm1hdCBcIjA3XCJcclxuICAgIGNvbnN0IG1pbnV0ZXMgPSBTdHJpbmcoZGF0ZS5nZXRNaW51dGVzKCkpLnBhZFN0YXJ0KDIsICcwJyk7IC8vIE1pbnV0ZXMgYXUgZm9ybWF0IFwiMDVcIlxyXG5cclxuICAgIC8vIFJldG91cm5lIGxlIGZvcm1hdCBkw6lzaXLDqVxyXG4gICAgcmV0dXJuIGBMZSAke2RheX0vJHttb250aH0vJHt5ZWFyfSDDoCAke2hvdXJzfToke21pbnV0ZXN9YDtcclxufVxyXG5cclxuZXhwb3J0IHsgbWFwLCB2ZWN0b3JTb3VyY2UsIG92ZXJsYXlSZHYsIG92ZXJsYXlHcHMsIG92ZXJsYXlDYXMgfTsiXSwic291cmNlUm9vdCI6IiJ9", "@public_path/build/assets_js_map_js.js", "/builds/dev/refonte_sav/public/build/assets_js_map_js.js");
    }
}
