You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

206 lines
28KB

  1. (self["webpackChunk"] = self["webpackChunk"] || []).push([["adminlte-index"],{
  2. /***/ "../LaClicBundle/SovBundle/Resources/assets/app/adminlte/index/app.index.js":
  3. /*!**********************************************************************************!*\
  4. !*** ../LaClicBundle/SovBundle/Resources/assets/app/adminlte/index/app.index.js ***!
  5. \**********************************************************************************/
  6. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  7. "use strict";
  8. __webpack_require__.r(__webpack_exports__);
  9. /* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.js */ "../LaClicBundle/SovBundle/Resources/assets/app/adminlte/index/index.js");
  10. /* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_index_js__WEBPACK_IMPORTED_MODULE_0__);
  11. /* harmony import */ var _index_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index.scss */ "../LaClicBundle/SovBundle/Resources/assets/app/adminlte/index/index.scss");
  12. /***/ }),
  13. /***/ "../LaClicBundle/SovBundle/Resources/assets/app/adminlte/index/index.js":
  14. /*!******************************************************************************!*\
  15. !*** ../LaClicBundle/SovBundle/Resources/assets/app/adminlte/index/index.js ***!
  16. \******************************************************************************/
  17. /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
  18. __webpack_require__(/*! core-js/modules/es.date.to-string.js */ "./node_modules/core-js/modules/es.date.to-string.js");
  19. __webpack_require__(/*! core-js/modules/es.object.to-string.js */ "./node_modules/core-js/modules/es.object.to-string.js");
  20. __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ "./node_modules/core-js/modules/es.regexp.to-string.js");
  21. __webpack_require__(/*! core-js/modules/es.array.find.js */ "./node_modules/core-js/modules/es.array.find.js");
  22. __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ "./node_modules/core-js/modules/es.regexp.exec.js");
  23. __webpack_require__(/*! core-js/modules/es.string.split.js */ "./node_modules/core-js/modules/es.string.split.js");
  24. __webpack_require__(/*! core-js/modules/es.array.index-of.js */ "./node_modules/core-js/modules/es.array.index-of.js");
  25. __webpack_require__(/*! core-js/modules/es.array.filter.js */ "./node_modules/core-js/modules/es.array.filter.js");
  26. __webpack_require__(/*! core-js/modules/es.array.join.js */ "./node_modules/core-js/modules/es.array.join.js");
  27. __webpack_require__(/*! core-js/modules/es.string.replace.js */ "./node_modules/core-js/modules/es.string.replace.js");
  28. $(document).ready(function () {
  29. lcCrudIndexToggle();
  30. lcCrudIndexBatchActions();
  31. lcCrudIndexInitFilter();
  32. });
  33. function lcCrudIndexToggle() {
  34. var toggles = document.querySelectorAll('.custom-switch input[type="checkbox"]');
  35. for (i = 0; i < toggles.length; i++) {
  36. toggles[i].addEventListener('change', function () {
  37. var toggle = this;
  38. var newValue = this.checked;
  39. var oldValue = !newValue;
  40. var toggleUrl = this.closest('.custom-switch').dataset.url + "&newValue=" + newValue.toString();
  41. var toggleRequest = $.ajax({
  42. type: "POST",
  43. url: toggleUrl,
  44. data: {},
  45. dataType: 'json'
  46. });
  47. toggleRequest.done(function (response) {
  48. SovNotification.add('success', 'La propriété a bien été mise à jour.');
  49. });
  50. toggleRequest.fail(function () {
  51. toggle.checked = oldValue;
  52. toggle.disabled = true;
  53. toggle.closest('.checkbox-switch').classList.add('disabled');
  54. SovNotification.add('error', 'Une erreur est survenue.');
  55. });
  56. });
  57. }
  58. }
  59. function lcCrudIndexBatchActions() {
  60. var titleContent = $('.content-header-title > .title').html();
  61. $(document).on('click', '.deselect-batch-button', function () {
  62. $(this).closest('.content').find(':checkbox.form-batch-checkbox-all').prop('checked', false).trigger('change');
  63. });
  64. $(document).on('change', '.form-batch-checkbox-all', function () {
  65. $(this).closest('.content').find(':checkbox.form-batch-checkbox').prop('checked', $(this).prop('checked')).trigger('change');
  66. });
  67. $(document).on('change', '.form-batch-checkbox', function () {
  68. var $content = $(this).closest('.content-wrapper');
  69. var $input = $content.find(':hidden#batch_form_entityIds');
  70. var ids = $input.val() ? $input.val().split(',') : [];
  71. var id = $(this).val();
  72. if ($(this).prop('checked')) {
  73. $(this).closest('tr').addClass('selected-row');
  74. if (-1 === ids.indexOf(id)) {
  75. ids.push(id);
  76. }
  77. } else {
  78. $(this).closest('tr').removeClass('selected-row');
  79. ids = ids.filter(function (value) {
  80. return value !== id;
  81. });
  82. $content.find(':checkbox.form-batch-checkbox-all').prop('checked', false);
  83. }
  84. if (0 === ids.length) {
  85. $content.find('.global-actions').show();
  86. $content.find('.batch-actions').hide();
  87. $content.find('table').removeClass('table-batch');
  88. } else {
  89. $content.find('.batch-actions').show();
  90. $content.find('.global-actions').hide();
  91. $content.find('table').addClass('table-batch');
  92. }
  93. $input.val(ids.join(','));
  94. $content.find('.content-header-title > .title').html(0 === ids.length ? titleContent : '');
  95. });
  96. var modalTitle = $('#batch-action-confirmation-title');
  97. var titleContentWithPlaceholders = modalTitle.text();
  98. $('[data-action-batch]').on('click', function (event) {
  99. event.preventDefault();
  100. event.stopPropagation();
  101. var $actionElement = $(this);
  102. var actionName = $actionElement.attr('data-action-name');
  103. var selectedItems = $('input[type="checkbox"].form-batch-checkbox:checked');
  104. modalTitle.text(titleContentWithPlaceholders.replace('%action_name%', actionName).replace('%num_items%', selectedItems.length));
  105. $('#modal-batch-action').modal({
  106. backdrop: true,
  107. keyboard: true
  108. }).off('click', '#modal-batch-action-button').on('click', '#modal-batch-action-button', function () {
  109. $actionElement.unbind('click');
  110. $form = document.createElement('form');
  111. $form.setAttribute('action', $actionElement.attr('data-action-url'));
  112. $form.setAttribute('method', 'POST');
  113. $actionNameInput = document.createElement('input');
  114. $actionNameInput.setAttribute('type', 'hidden');
  115. $actionNameInput.setAttribute('name', 'batchActionName');
  116. $actionNameInput.setAttribute('value', $actionElement.attr('data-action-name'));
  117. $form.appendChild($actionNameInput);
  118. $entityFqcnInput = document.createElement('input');
  119. $entityFqcnInput.setAttribute('type', 'hidden');
  120. $entityFqcnInput.setAttribute('name', 'entityFqcn');
  121. $entityFqcnInput.setAttribute('value', $actionElement.attr('data-entity-fqcn'));
  122. $form.appendChild($entityFqcnInput);
  123. $actionUrlInput = document.createElement('input');
  124. $actionUrlInput.setAttribute('type', 'hidden');
  125. $actionUrlInput.setAttribute('name', 'batchActionUrl');
  126. $actionUrlInput.setAttribute('value', $actionElement.attr('data-action-url'));
  127. $form.appendChild($actionUrlInput);
  128. $csrfTokenInput = document.createElement('input');
  129. $csrfTokenInput.setAttribute('type', 'hidden');
  130. $csrfTokenInput.setAttribute('name', 'batchActionCsrfToken');
  131. $csrfTokenInput.setAttribute('value', $actionElement.attr('data-action-csrf-token'));
  132. $form.appendChild($csrfTokenInput);
  133. selectedItems.each(function (i, item) {
  134. $entityIdInput = document.createElement('input');
  135. $entityIdInput.setAttribute('type', 'hidden');
  136. $entityIdInput.setAttribute('name', "batchActionEntityIds[".concat(i, "]"));
  137. $entityIdInput.setAttribute('value', item.value);
  138. $form.appendChild($entityIdInput);
  139. });
  140. document.body.appendChild($form); //modalTitle.text(titleContentWithPlaceholders);
  141. $form.submit();
  142. });
  143. });
  144. }
  145. function lcCrudIndexInitFilter() {
  146. $('#filters_form_reset').val('');
  147. $('.lc-reset-filters').on('click', function (e) {
  148. //e.preventDefault();
  149. $(this).parents('.table-filters-line').find('select,input').val('').trigger('change');
  150. $('#filters_form_reset').val('clearAll');
  151. Tools.log($(this).prop('form'));
  152. $(this).prop('form').submit(); //$(this).parents('form').submit();
  153. });
  154. }
  155. /***/ }),
  156. /***/ "../LaClicBundle/SovBundle/Resources/assets/app/adminlte/index/index.scss":
  157. /*!********************************************************************************!*\
  158. !*** ../LaClicBundle/SovBundle/Resources/assets/app/adminlte/index/index.scss ***!
  159. \********************************************************************************/
  160. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  161. "use strict";
  162. __webpack_require__.r(__webpack_exports__);
  163. // extracted by mini-css-extract-plugin
  164. /***/ })
  165. },
  166. /******/ __webpack_require__ => { // webpackRuntimeModules
  167. /******/ "use strict";
  168. /******/
  169. /******/ var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
  170. /******/ __webpack_require__.O(0, ["vendors-node_modules_core-js_internals_export_js","vendors-node_modules_core-js_modules_es_string_replace_js","vendors-node_modules_core-js_modules_es_array_find_js-node_modules_core-js_modules_es_date_to-6fef76","vendors-node_modules_core-js_modules_es_array_filter_js-node_modules_core-js_modules_es_array-f7c72f"], () => (__webpack_exec__("../LaClicBundle/SovBundle/Resources/assets/app/adminlte/index/app.index.js")));
  171. /******/ var __webpack_exports__ = __webpack_require__.O();
  172. /******/ }
  173. ]);
  174. //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vTGFDbGljQnVuZGxlL1NvdkJ1bmRsZS9SZXNvdXJjZXMvYXNzZXRzL2FwcC9hZG1pbmx0ZS9pbmRleC9hcHAuaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL0xhQ2xpY0J1bmRsZS9Tb3ZCdW5kbGUvUmVzb3VyY2VzL2Fzc2V0cy9hcHAvYWRtaW5sdGUvaW5kZXgvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL0xhQ2xpY0J1bmRsZS9Tb3ZCdW5kbGUvUmVzb3VyY2VzL2Fzc2V0cy9hcHAvYWRtaW5sdGUvaW5kZXgvaW5kZXguc2NzcyJdLCJuYW1lcyI6WyIkIiwiZG9jdW1lbnQiLCJyZWFkeSIsImxjQ3J1ZEluZGV4VG9nZ2xlIiwibGNDcnVkSW5kZXhCYXRjaEFjdGlvbnMiLCJsY0NydWRJbmRleEluaXRGaWx0ZXIiLCJ0b2dnbGVzIiwicXVlcnlTZWxlY3RvckFsbCIsImkiLCJsZW5ndGgiLCJhZGRFdmVudExpc3RlbmVyIiwidG9nZ2xlIiwibmV3VmFsdWUiLCJjaGVja2VkIiwib2xkVmFsdWUiLCJ0b2dnbGVVcmwiLCJjbG9zZXN0IiwiZGF0YXNldCIsInVybCIsInRvU3RyaW5nIiwidG9nZ2xlUmVxdWVzdCIsImFqYXgiLCJ0eXBlIiwiZGF0YSIsImRhdGFUeXBlIiwiZG9uZSIsInJlc3BvbnNlIiwiU292Tm90aWZpY2F0aW9uIiwiYWRkIiwiZmFpbCIsImRpc2FibGVkIiwiY2xhc3NMaXN0IiwidGl0bGVDb250ZW50IiwiaHRtbCIsIm9uIiwiZmluZCIsInByb3AiLCJ0cmlnZ2VyIiwiJGNvbnRlbnQiLCIkaW5wdXQiLCJpZHMiLCJ2YWwiLCJzcGxpdCIsImlkIiwiYWRkQ2xhc3MiLCJpbmRleE9mIiwicHVzaCIsInJlbW92ZUNsYXNzIiwiZmlsdGVyIiwidmFsdWUiLCJzaG93IiwiaGlkZSIsImpvaW4iLCJtb2RhbFRpdGxlIiwidGl0bGVDb250ZW50V2l0aFBsYWNlaG9sZGVycyIsInRleHQiLCJldmVudCIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwiJGFjdGlvbkVsZW1lbnQiLCJhY3Rpb25OYW1lIiwiYXR0ciIsInNlbGVjdGVkSXRlbXMiLCJyZXBsYWNlIiwibW9kYWwiLCJiYWNrZHJvcCIsImtleWJvYXJkIiwib2ZmIiwidW5iaW5kIiwiJGZvcm0iLCJjcmVhdGVFbGVtZW50Iiwic2V0QXR0cmlidXRlIiwiJGFjdGlvbk5hbWVJbnB1dCIsImFwcGVuZENoaWxkIiwiJGVudGl0eUZxY25JbnB1dCIsIiRhY3Rpb25VcmxJbnB1dCIsIiRjc3JmVG9rZW5JbnB1dCIsImVhY2giLCJpdGVtIiwiJGVudGl0eUlkSW5wdXQiLCJib2R5Iiwic3VibWl0IiwiZSIsInBhcmVudHMiLCJUb29scyIsImxvZyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQ0FBLENBQUMsQ0FBQ0MsUUFBRCxDQUFELENBQVlDLEtBQVosQ0FBa0IsWUFBVztBQUN6QkMsbUJBQWlCO0FBQ2pCQyx5QkFBdUI7QUFDdkJDLHVCQUFxQjtBQUN4QixDQUpEOztBQU1BLFNBQVNGLGlCQUFULEdBQTZCO0FBQ3pCLE1BQU1HLE9BQU8sR0FBR0wsUUFBUSxDQUFDTSxnQkFBVCxDQUEwQix1Q0FBMUIsQ0FBaEI7O0FBQ0EsT0FBS0MsQ0FBQyxHQUFHLENBQVQsRUFBWUEsQ0FBQyxHQUFHRixPQUFPLENBQUNHLE1BQXhCLEVBQWdDRCxDQUFDLEVBQWpDLEVBQXFDO0FBQ2pDRixXQUFPLENBQUNFLENBQUQsQ0FBUCxDQUFXRSxnQkFBWCxDQUE0QixRQUE1QixFQUFzQyxZQUFZO0FBQzlDLFVBQU1DLE1BQU0sR0FBRyxJQUFmO0FBQ0EsVUFBTUMsUUFBUSxHQUFHLEtBQUtDLE9BQXRCO0FBQ0EsVUFBTUMsUUFBUSxHQUFHLENBQUNGLFFBQWxCO0FBQ0EsVUFBTUcsU0FBUyxHQUFHLEtBQUtDLE9BQUwsQ0FBYSxnQkFBYixFQUErQkMsT0FBL0IsQ0FBdUNDLEdBQXZDLEdBQTZDLFlB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LENBTTVDO0FBQ0gsR0FQRDtBQVNILEM7Ozs7Ozs7Ozs7OztBQ3JKRCIsImZpbGUiOiJhZG1pbmx0ZS1pbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0ICcuL2luZGV4LmpzJ1xuaW1wb3J0ICcuL2luZGV4LnNjc3MnIiwiXG5cbiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkge1xuICAgIGxjQ3J1ZEluZGV4VG9nZ2xlKCkgO1xuICAgIGxjQ3J1ZEluZGV4QmF0Y2hBY3Rpb25zKCkgO1xuICAgIGxjQ3J1ZEluZGV4SW5pdEZpbHRlcigpO1xufSkgO1xuXG5mdW5jdGlvbiBsY0NydWRJbmRleFRvZ2dsZSgpIHtcbiAgICBjb25zdCB0b2dnbGVzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmN1c3RvbS1zd2l0Y2ggaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdJyk7XG4gICAgZm9yIChpID0gMDsgaSA8IHRvZ2dsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdG9nZ2xlc1tpXS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBjb25zdCB0b2dnbGUgPSB0aGlzO1xuICAgICAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmNoZWNrZWQ7XG4gICAgICAgICAgICBjb25zdCBvbGRWYWx1ZSA9ICFuZXdWYWx1ZTtcbiAgICAgICAgICAgIGNvbnN0IHRvZ2dsZVVybCA9IHRoaXMuY2xvc2VzdCgnLmN1c3RvbS1zd2l0Y2gnKS5kYXRhc2V0LnVybCArIFwiJm5ld1ZhbHVlPVwiICsgbmV3VmFsdWUudG9TdHJpbmcoKTtcblxuICAgICAgICAgICAgbGV0IHRvZ2dsZVJlcXVlc3QgPSAkLmFqYXgoe3R5cGU6IFwiUE9TVFwiLCB1cmw6IHRvZ2dsZVVybCwgZGF0YToge30sIGRhdGFUeXBlOiAnanNvbid9KTtcblxuICAgICAgICAgICAgdG9nZ2xlUmVxdWVzdC5kb25lKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIFNvdk5vdGlmaWNhdGlvbi5hZGQoJ3N1Y2Nlc3MnLCAnTGEgcHJvcHJpw6l0w6kgYSBiaWVuIMOpdMOpIG1pc2Ugw6Agam91ci4nKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0b2dnbGVSZXF1ZXN0LmZhaWwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRvZ2dsZS5jaGVja2VkID0gb2xkVmFsdWU7XG4gICAgICAgICAgICAgICAgdG9nZ2xlLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2dnbGUuY2xvc2VzdCgnLmNoZWNrYm94LXN3aXRjaCcpLmNsYXNzTGlzdC5hZGQoJ2Rpc2FibGVkJyk7XG4gICAgICAgICAgICAgICAgU292Tm90aWZpY2F0aW9uLmFkZCgnZXJyb3InLCAnVW5lIGVycmV1ciBlc3Qgc3VydmVudWUuJyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBsY0NydWRJbmRleEJhdGNoQWN0aW9ucygpIHtcbiAgICBjb25zdCB0aXRsZUNvbnRlbnQgPSAkKCcuY29udGVudC1oZWFkZXItdGl0bGUgPiAudGl0bGUnKS5odG1sKCk7XG4gICAgJChkb2N1bWVudCkub24oJ2NsaWNrJywgJy5kZXNlbGVjdC1iYXRjaC1idXR0b24nLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICQodGhpcykuY2xvc2VzdCgnLmNvbnRlbnQnKS5maW5kKCc6Y2hlY2tib3guZm9ybS1iYXRjaC1jaGVja2JveC1hbGwnKS5wcm9wKCdjaGVja2VkJywgZmFsc2UpLnRyaWdnZXIoJ2NoYW5nZScpO1xuICAgIH0pO1xuICAgICQoZG9jdW1lbnQpLm9uKCdjaGFuZ2UnLCAnLmZvcm0tYmF0Y2gtY2hlY2tib3gtYWxsJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAkKHRoaXMpLmNsb3Nlc3QoJy5jb250ZW50JykuZmluZCgnOmNoZWNrYm94LmZvcm0tYmF0Y2gtY2hlY2tib3gnKS5wcm9wKCdjaGVja2VkJywgJCh0aGlzKS5wcm9wKCdjaGVja2VkJykpLnRyaWdnZXIoJ2NoYW5nZScpO1xuICAgIH0pO1xuICAgICQoZG9jdW1lbnQpLm9uKCdjaGFuZ2UnLCAnLmZvcm0tYmF0Y2gtY2hlY2tib3gnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0ICRjb250ZW50ID0gJCh0aGlzKS5jbG9zZXN0KCcuY29udGVudC13cmFwcGVyJyk7XG4gICAgICAgIGxldCAkaW5wdXQgPSAkY29udGVudC5maW5kKCc6aGlkZGVuI2JhdGNoX2Zvcm1fZW50aXR5SWRzJyk7XG4gICAgICAgIGxldCBpZHMgPSAkaW5wdXQudmFsKCkgPyAkaW5wdXQudmFsKCkuc3BsaXQoJywnKSA6IFtdO1xuICAgICAgICBjb25zdCBpZCA9ICQodGhpcykudmFsKCk7XG5cbiAgICAgICAgaWYgKCQodGhpcykucHJvcCgnY2hlY2tlZCcpKSB7XG4gICAgICAgICAgICAkKHRoaXMpLmNsb3Nlc3QoJ3RyJykuYWRkQ2xhc3MoJ3NlbGVjdGVkLXJvdycpO1xuICAgICAgICAgICAgaWYgKC0xID09PSBpZHMuaW5kZXhPZihpZCkpIHtcbiAgICAgICAgICAgICAgICBpZHMucHVzaChpZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAkKHRoaXMpLmNsb3Nlc3QoJ3RyJykucmVtb3ZlQ2xhc3MoJ3NlbGVjdGVkLXJvdycpO1xuICAgICAgICAgICAgaWRzID0gaWRzLmZpbHRlcihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgIT09IGlkXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICRjb250ZW50LmZpbmQoJzpjaGVja2JveC5mb3JtLWJhdGNoLWNoZWNrYm94LWFsbCcpLnByb3AoJ2NoZWNrZWQnLCBmYWxzZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoMCA9PT0gaWRzLmxlbmd0aCkge1xuICAgICAgICAgICAgJGNvbnRlbnQuZmluZCgnLmdsb2JhbC1hY3Rpb25zJykuc2hvdygpO1xuICAgICAgICAgICAgJGNvbnRlbnQuZmluZCgnLmJhdGNoLWFjdGlvbnMnKS5oaWRlKCk7XG4gICAgICAgICAgICAkY29udGVudC5maW5kKCd0YWJsZScpLnJlbW92ZUNsYXNzKCd0YWJsZS1iYXRjaCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgJGNvbnRlbnQuZmluZCgnLmJhdGNoLWFjdGlvbnMnKS5zaG93KCk7XG4gICAgICAgICAgICAkY29udGVudC5maW5kKCcuZ2xvYmFsLWFjdGlvbnMnKS5oaWRlKCk7XG4gICAgICAgICAgICAkY29udGVudC5maW5kKCd0YWJsZScpLmFkZENsYXNzKCd0YWJsZS1iYXRjaCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgJGlucHV0LnZhbChpZHMuam9pbignLCcpKTtcbiAgICAgICAgJGNvbnRlbnQuZmluZCgnLmNvbnRlbnQtaGVhZGVyLXRpdGxlID4gLnRpdGxlJykuaHRtbCgwID09PSBpZHMubGVuZ3RoID8gdGl0bGVDb250ZW50IDogJycpO1xuICAgIH0pO1xuXG4gICAgbGV0IG1vZGFsVGl0bGUgPSAkKCcjYmF0Y2gtYWN0aW9uLWNvbmZpcm1hdGlvbi10aXRsZScpO1xuICAgIGNvbnN0IHRpdGxlQ29udGVudFdpdGhQbGFjZWhvbGRlcnMgPSBtb2RhbFRpdGxlLnRleHQoKTtcblxuICAgICQoJ1tkYXRhLWFjdGlvbi1iYXRjaF0nKS5vbignY2xpY2snLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGxldCAkYWN0aW9uRWxlbWVudCA9ICQodGhpcyk7XG5cbiAgICAgICAgY29uc3QgYWN0aW9uTmFtZSA9ICRhY3Rpb25FbGVtZW50LmF0dHIoJ2RhdGEtYWN0aW9uLW5hbWUnKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtcyA9ICQoJ2lucHV0W3R5cGU9XCJjaGVja2JveFwiXS5mb3JtLWJhdGNoLWNoZWNrYm94OmNoZWNrZWQnKTtcbiAgICAgICAgbW9kYWxUaXRsZS50ZXh0KHRpdGxlQ29udGVudFdpdGhQbGFjZWhvbGRlcnNcbiAgICAgICAgICAgIC5yZXBsYWNlKCclYWN0aW9uX25hbWUlJywgYWN0aW9uTmFtZSlcbiAgICAgICAgICAgIC5yZXBsYWNlKCclbnVtX2l0ZW1zJScsIHNlbGVjdGVkSXRlbXMubGVuZ3RoKSk7XG5cbiAgICAgICAgJCgnI21vZGFsLWJhdGNoLWFjdGlvbicpLm1vZGFsKHtiYWNrZHJvcDogdHJ1ZSwga2V5Ym9hcmQ6IHRydWV9KVxuICAgICAgICAgICAgLm9mZignY2xpY2snLCAnI21vZGFsLWJhdGNoLWFjdGlvbi1idXR0b24nKVxuICAgICAgICAgICAgLm9uKCdjbGljaycsICcjbW9kYWwtYmF0Y2gtYWN0aW9uLWJ1dHRvbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAkYWN0aW9uRWxlbWVudC51bmJpbmQoJ2NsaWNrJyk7XG5cbiAgICAgICAgICAgICAgICAkZm9ybSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Zvcm0nKTtcbiAgICAgICAgICAgICAgICAkZm9ybS5zZXRBdHRyaWJ1dGUoJ2FjdGlvbicsICRhY3Rpb25FbGVtZW50LmF0dHIoJ2RhdGEtYWN0aW9uLXVybCcpKTtcbiAgICAgICAgICAgICAgICAkZm9ybS5zZXRBdHRyaWJ1dGUoJ21ldGhvZCcsICdQT1NUJyk7XG5cbiAgICAgICAgICAgICAgICAkYWN0aW9uTmFtZUlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcbiAgICAgICAgICAgICAgICAkYWN0aW9uTmFtZUlucHV0LnNldEF0dHJpYnV0ZSgndHlwZScsICdoaWRkZW4nKTtcbiAgICAgICAgICAgICAgICAkYWN0aW9uTmFtZUlucHV0LnNldEF0dHJpYnV0ZSgnbmFtZScsICdiYXRjaEFjdGlvbk5hbWUnKTtcbiAgICAgICAgICAgICAgICAkYWN0aW9uTmFtZUlucHV0LnNldEF0dHJpYnV0ZSgndmFsdWUnLCAkYWN0aW9uRWxlbWVudC5hdHRyKCdkYXRhLWFjdGlvbi1uYW1lJykpO1xuICAgICAgICAgICAgICAgICRmb3JtLmFwcGVuZENoaWxkKCRhY3Rpb25OYW1lSW5wdXQpO1xuXG4gICAgICAgICAgICAgICAgJGVudGl0eUZxY25JbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gICAgICAgICAgICAgICAgJGVudGl0eUZxY25JbnB1dC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnaGlkZGVuJyk7XG4gICAgICAgICAgICAgICAgJGVudGl0eUZxY25JbnB1dC5zZXRBdHRyaWJ1dGUoJ25hbWUnLCAnZW50aXR5RnFjbicpO1xuICAgICAgICAgICAgICAgICRlbnRpdHlGcWNuSW5wdXQuc2V0QXR0cmlidXRlKCd2YWx1ZScsICRhY3Rpb25FbGVtZW50LmF0dHIoJ2RhdGEtZW50aXR5LWZxY24nKSk7XG4gICAgICAgICAgICAgICAgJGZvcm0uYXBwZW5kQ2hpbGQoJGVudGl0eUZxY25JbnB1dCk7XG5cbiAgICAgICAgICAgICAgICAkYWN0aW9uVXJsSW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuICAgICAgICAgICAgICAgICRhY3Rpb25VcmxJbnB1dC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnaGlkZGVuJyk7XG4gICAgICAgICAgICAgICAgJGFjdGlvblVybElucHV0LnNldEF0dHJpYnV0ZSgnbmFtZScsICdiYXRjaEFjdGlvblVybCcpO1xuICAgICAgICAgICAgICAgICRhY3Rpb25VcmxJbnB1dC5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgJGFjdGlvbkVsZW1lbnQuYXR0cignZGF0YS1hY3Rpb24tdXJsJykpO1xuICAgICAgICAgICAgICAgICRmb3JtLmFwcGVuZENoaWxkKCRhY3Rpb25VcmxJbnB1dCk7XG5cbiAgICAgICAgICAgICAgICAkY3NyZlRva2VuSW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuICAgICAgICAgICAgICAgICRjc3JmVG9rZW5JbnB1dC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnaGlkZGVuJyk7XG4gICAgICAgICAgICAgICAgJGNzcmZUb2tlbklucHV0LnNldEF0dHJpYnV0ZSgnbmFtZScsICdiYXRjaEFjdGlvbkNzcmZUb2tlbicpO1xuICAgICAgICAgICAgICAgICRjc3JmVG9rZW5JbnB1dC5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgJGFjdGlvbkVsZW1lbnQuYXR0cignZGF0YS1hY3Rpb24tY3NyZi10b2tlbicpKTtcbiAgICAgICAgICAgICAgICAkZm9ybS5hcHBlbmRDaGlsZCgkY3NyZlRva2VuSW5wdXQpO1xuXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcy5lYWNoKChpLCBpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICRlbnRpdHlJZElucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcbiAgICAgICAgICAgICAgICAgICAgJGVudGl0eUlkSW5wdXQuc2V0QXR0cmlidXRlKCd0eXBlJywgJ2hpZGRlbicpO1xuICAgICAgICAgICAgICAgICAgICAkZW50aXR5SWRJbnB1dC5zZXRBdHRyaWJ1dGUoJ25hbWUnLCBgYmF0Y2hBY3Rpb25FbnRpdHlJZHNbJHtpfV1gKTtcbiAgICAgICAgICAgICAgICAgICAgJGVudGl0eUlkSW5wdXQuc2V0QXR0cmlidXRlKCd2YWx1ZScsIGl0ZW0udmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAkZm9ybS5hcHBlbmRDaGlsZCgkZW50aXR5SWRJbnB1dCk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKCRmb3JtKTtcblxuICAgICAgICAgICAgICAgIC8vbW9kYWxUaXRsZS50ZXh0KHRpdGxlQ29udGVudFdpdGhQbGFjZWhvbGRlcnMpO1xuICAgICAgICAgICAgICAgICRmb3JtLnN1Ym1pdCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIGxjQ3J1ZEluZGV4SW5pdEZpbHRlcigpIHtcbiAgICAkKCcjZmlsdGVyc19mb3JtX3Jlc2V0JykudmFsKCcnKTtcblxuICAgICQoJy5sYy1yZXNldC1maWx0ZXJzJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgLy9lLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICQodGhpcykucGFyZW50cygnLnRhYmxlLWZpbHRlcnMtbGluZScpLmZpbmQoJ3NlbGVjdCxpbnB1dCcpLnZhbCgnJykudHJpZ2dlcignY2hhbmdlJyk7XG4gICAgICAgICQoJyNmaWx0ZXJzX2Zvcm1fcmVzZXQnKS52YWwoJ2NsZWFyQWxsJyk7XG4gICAgICAgIFRvb2xzLmxvZygkKHRoaXMpLnByb3AoJ2Zvcm0nKSk7XG4gICAgICAgICQodGhpcykucHJvcCgnZm9ybScpLnN1Ym1pdCgpO1xuICAgICAgICAvLyQodGhpcykucGFyZW50cygnZm9ybScpLnN1Ym1pdCgpO1xuICAgIH0pXG5cbn0iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbmV4cG9ydCB7fTsiXSwic291cmNlUm9vdCI6IiJ9