Welcome to mirror list, hosted at ThFree Co, Russian Federation.

ajax_filter.js « plugins « droplab « javascripts « assets « app - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: ec0b9b7ab064794005d199b3937245f80a08904d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
/******/ (function(modules) { // webpackBootstrap
/******/ 	// The module cache
/******/ 	var installedModules = {};
/******/
/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {
/******/
/******/ 		// Check if module is in cache
/******/ 		if(installedModules[moduleId])
/******/ 			return installedModules[moduleId].exports;
/******/
/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = installedModules[moduleId] = {
/******/ 			i: moduleId,
/******/ 			l: false,
/******/ 			exports: {}
/******/ 		};
/******/
/******/ 		// Execute the module function
/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ 		// Flag the module as loaded
/******/ 		module.l = true;
/******/
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/
/******/
/******/ 	// expose the modules object (__webpack_modules__)
/******/ 	__webpack_require__.m = modules;
/******/
/******/ 	// expose the module cache
/******/ 	__webpack_require__.c = installedModules;
/******/
/******/ 	// identity function for calling harmony imports with the correct context
/******/ 	__webpack_require__.i = function(value) { return value; };
/******/
/******/ 	// define getter function for harmony exports
/******/ 	__webpack_require__.d = function(exports, name, getter) {
/******/ 		if(!__webpack_require__.o(exports, name)) {
/******/ 			Object.defineProperty(exports, name, {
/******/ 				configurable: false,
/******/ 				enumerable: true,
/******/ 				get: getter
/******/ 			});
/******/ 		}
/******/ 	};
/******/
/******/ 	// getDefaultExport function for compatibility with non-harmony modules
/******/ 	__webpack_require__.n = function(module) {
/******/ 		var getter = module && module.__esModule ?
/******/ 			function getDefault() { return module['default']; } :
/******/ 			function getModuleExports() { return module; };
/******/ 		__webpack_require__.d(getter, 'a', getter);
/******/ 		return getter;
/******/ 	};
/******/
/******/ 	// Object.prototype.hasOwnProperty.call
/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ 	// __webpack_public_path__
/******/ 	__webpack_require__.p = "";
/******/
/******/ 	// Load entry module and return exports
/******/ 	return __webpack_require__(__webpack_require__.s = 11);
/******/ })
/************************************************************************/
/******/ ({

/***/ 11:
/***/ (function(module, exports, __webpack_require__) {

"use strict";


Object.defineProperty(exports, "__esModule", {
  value: true
});
var droplabAjaxFilter = {
  init: function init(hook) {
    this.destroyed = false;
    this.hook = hook;
    this.notLoading();

    this.eventWrapper = {};
    this.eventWrapper.debounceTrigger = this.debounceTrigger.bind(this);
    this.hook.trigger.addEventListener('keydown.dl', this.eventWrapper.debounceTrigger);
    this.hook.trigger.addEventListener('focus', this.eventWrapper.debounceTrigger);

    this.trigger(true);
  },

  notLoading: function notLoading() {
    this.loading = false;
  },

  debounceTrigger: function debounceTrigger(e) {
    var NON_CHARACTER_KEYS = [16, 17, 18, 20, 37, 38, 39, 40, 91, 93];
    var invalidKeyPressed = NON_CHARACTER_KEYS.indexOf(e.detail.which || e.detail.keyCode) > -1;
    var focusEvent = e.type === 'focus';
    if (invalidKeyPressed || this.loading) {
      return;
    }
    if (this.timeout) {
      clearTimeout(this.timeout);
    }
    this.timeout = setTimeout(this.trigger.bind(this, focusEvent), 200);
  },

  trigger: function trigger(getEntireList) {
    var config = this.hook.config.droplabAjaxFilter;
    var searchValue = this.trigger.value;
    if (!config || !config.endpoint || !config.searchKey) {
      return;
    }
    if (config.searchValueFunction) {
      searchValue = config.searchValueFunction();
    }
    if (config.loadingTemplate && this.hook.list.data === undefined || this.hook.list.data.length === 0) {
      var dynamicList = this.hook.list.list.querySelector('[data-dynamic]');
      var loadingTemplate = document.createElement('div');
      loadingTemplate.innerHTML = config.loadingTemplate;
      loadingTemplate.setAttribute('data-loading-template', true);
      this.listTemplate = dynamicList.outerHTML;
      dynamicList.outerHTML = loadingTemplate.outerHTML;
    }
    if (getEntireList) {
      searchValue = '';
    }
    if (config.searchKey === searchValue) {
      return this.list.show();
    }
    this.loading = true;
    var params = config.params || {};
    params[config.searchKey] = searchValue;
    var self = this;
    self.cache = self.cache || {};
    var url = config.endpoint + this.buildParams(params);
    var urlCachedData = self.cache[url];
    if (urlCachedData) {
      self._loadData(urlCachedData, config, self);
    } else {
      this._loadUrlData(url).then(function (data) {
        self._loadData(data, config, self);
      });
    }
  },

  _loadUrlData: function _loadUrlData(url) {
    var self = this;
    return new Promise(function (resolve, reject) {
      var xhr = new XMLHttpRequest();
      xhr.open('GET', url, true);
      xhr.onreadystatechange = function () {
        if (xhr.readyState === XMLHttpRequest.DONE) {
          if (xhr.status === 200) {
            var data = JSON.parse(xhr.responseText);
            self.cache[url] = data;
            return resolve(data);
          } else {
            return reject([xhr.responseText, xhr.status]);
          }
        }
      };
      xhr.send();
    });
  },

  _loadData: function _loadData(data, config, self) {
    var list = self.hook.list;
    if (config.loadingTemplate && list.data === undefined || list.data.length === 0) {
      var dataLoadingTemplate = list.list.querySelector('[data-loading-template]');
      if (dataLoadingTemplate) {
        dataLoadingTemplate.outerHTML = self.listTemplate;
      }
    }
    if (!self.destroyed) {
      var hookListChildren = list.list.children;
      var onlyDynamicList = hookListChildren.length === 1 && hookListChildren[0].hasAttribute('data-dynamic');
      if (onlyDynamicList && data.length === 0) {
        list.hide();
      }
      list.setData.call(list, data);
    }
    self.notLoading();
    list.currentIndex = 0;
  },

  buildParams: function buildParams(params) {
    if (!params) return '';
    var paramsArray = Object.keys(params).map(function (param) {
      return param + '=' + (params[param] || '');
    });
    return '?' + paramsArray.join('&');
  },

  destroy: function destroy() {
    if (this.timeout) {
      clearTimeout(this.timeout);
    }

    this.destroyed = true;
    this.hook.trigger.removeEventListener('keydown.dl', this.eventWrapper.debounceTrigger);
    this.hook.trigger.removeEventListener('focus', this.eventWrapper.debounceTrigger);
  }
};

window.droplabAjaxFilter = droplabAjaxFilter;

exports.default = droplabAjaxFilter;

/***/ })

/******/ });
<<<<<<< f7701ad4ff5948b172bf7e0e68e30917731f9410
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAgYTVmZGU1NjJhOGRjY2M3ZTliMTk/MWJhMSoqIiwid2VicGFjazovLy8uL3NyYy9wbHVnaW5zL2FqYXhfZmlsdGVyLmpzIl0sIm5hbWVzIjpbImRyb3BsYWJBamF4RmlsdGVyIiwiaW5pdCIsImhvb2siLCJkZXN0cm95ZWQiLCJub3RMb2FkaW5nIiwiZXZlbnRXcmFwcGVyIiwiZGVib3VuY2VUcmlnZ2VyIiwiYmluZCIsInRyaWdnZXIiLCJhZGRFdmVudExpc3RlbmVyIiwibG9hZGluZyIsImUiLCJOT05fQ0hBUkFDVEVSX0tFWVMiLCJpbnZhbGlkS2V5UHJlc3NlZCIsImluZGV4T2YiLCJkZXRhaWwiLCJ3aGljaCIsImtleUNvZGUiLCJmb2N1c0V2ZW50IiwidHlwZSIsInRpbWVvdXQiLCJjbGVhclRpbWVvdXQiLCJzZXRUaW1lb3V0IiwiZ2V0RW50aXJlTGlzdCIsImNvbmZpZyIsInNlYXJjaFZhbHVlIiwidmFsdWUiLCJlbmRwb2ludCIsInNlYXJjaEtleSIsInNlYXJjaFZhbHVlRnVuY3Rpb24iLCJsb2FkaW5nVGVtcGxhdGUiLCJsaXN0IiwiZGF0YSIsInVuZGVmaW5lZCIsImxlbmd0aCIsImR5bmFtaWNMaXN0IiwicXVlcnlTZWxlY3RvciIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImlubmVySFRNTCIsInNldEF0dHJpYnV0ZSIsImxpc3RUZW1wbGF0ZSIsIm91dGVySFRNTCIsInNob3ciLCJwYXJhbXMiLCJzZWxmIiwiY2FjaGUiLCJ1cmwiLCJidWlsZFBhcmFtcyIsInVybENhY2hlZERhdGEiLCJfbG9hZERhdGEiLCJfbG9hZFVybERhdGEiLCJ0aGVuIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJ4aHIiLCJYTUxIdHRwUmVxdWVzdCIsIm9wZW4iLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCJyZWFkeVN0YXRlIiwiRE9ORSIsInN0YXR1cyIsIkpTT04iLCJwYXJzZSIsInJlc3BvbnNlVGV4dCIsInNlbmQiLCJkYXRhTG9hZGluZ1RlbXBsYXRlIiwiaG9va0xpc3RDaGlsZHJlbiIsImNoaWxkcmVuIiwib25seUR5bmFtaWNMaXN0IiwiaGFzQXR0cmlidXRlIiwiaGlkZSIsInNldERhdGEiLCJjYWxsIiwiY3VycmVudEluZGV4IiwicGFyYW1zQXJyYXkiLCJPYmplY3QiLCJrZXlzIiwibWFwIiwicGFyYW0iLCJqb2luIiwiZGVzdHJveSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJ3aW5kb3ciXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxtREFBMkMsY0FBYzs7QUFFekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBMkIsMEJBQTBCLEVBQUU7QUFDdkQseUNBQWlDLGVBQWU7QUFDaEQ7QUFDQTtBQUNBOztBQUVBO0FBQ0EsOERBQXNELCtEQUErRDs7QUFFckg7QUFDQTs7QUFFQTtBQUNBOzs7Ozs7Ozs7Ozs7OztBQ2hFQSxJQUFNQSxvQkFBb0I7QUFDeEJDLFFBQU0sY0FBU0MsSUFBVCxFQUFlO0FBQ25CLFNBQUtDLFNBQUwsR0FBaUIsS0FBakI7QUFDQSxTQUFLRCxJQUFMLEdBQVlBLElBQVo7QUFDQSxTQUFLRSxVQUFMOztBQUVBLFNBQUtDLFlBQUwsR0FBb0IsRUFBcEI7QUFDQSxTQUFLQSxZQUFMLENBQWtCQyxlQUFsQixHQUFvQyxLQUFLQSxlQUFMLENBQXFCQyxJQUFyQixDQUEwQixJQUExQixDQUFwQztBQUNBLFNBQUtMLElBQUwsQ0FBVU0sT0FBVixDQUFrQkMsZ0JBQWxCLENBQW1DLFlBQW5DLEVBQWlELEtBQUtKLFlBQUwsQ0FBa0JDLGVBQW5FO0FB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QU9BLFFBQVEsR0FBUixJQUFlcEMsT0FBT29DLEtBQVAsS0FBaUIsRUFBaEMsQ0FBUDtBQUNELEtBRmlCLENBQWxCO0FBR0EsV0FBTyxNQUFNSixZQUFZSyxJQUFaLENBQWlCLEdBQWpCLENBQWI7QUFDRCxHQXZIdUI7O0FBeUh4QkMsV0FBUyxTQUFTQSxPQUFULEdBQW1CO0FBQzFCLFFBQUksS0FBSzlELE9BQVQsRUFBa0I7QUFDaEJDLG1CQUFhLEtBQUtELE9BQWxCO0FBQ0Q7O0FBRUQsU0FBS2pCLFNBQUwsR0FBaUIsSUFBakI7QUFDQSxTQUFLRCxJQUFMLENBQVVNLE9BQVYsQ0FBa0IyRSxtQkFBbEIsQ0FBc0MsWUFBdEMsRUFBb0QsS0FBSzlFLFlBQUwsQ0FBa0JDLGVBQXRFO0FBQ0EsU0FBS0osSUFBTCxDQUFVTSxPQUFWLENBQWtCMkUsbUJBQWxCLENBQXNDLE9BQXRDLEVBQStDLEtBQUs5RSxZQUFMLENBQWtCQyxlQUFqRTtBQUNEO0FBakl1QixDQUExQjs7QUFvSUE4RSxPQUFPcEYsaUJBQVAsR0FBMkJBLGlCQUEzQjs7a0JBRWVBLGlCIiwiZmlsZSI6Ii4vZGlzdC9wbHVnaW5zL2FqYXhfZmlsdGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pXG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG5cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGlkZW50aXR5IGZ1bmN0aW9uIGZvciBjYWxsaW5nIGhhcm1vbnkgaW1wb3J0cyB3aXRoIHRoZSBjb3JyZWN0IGNvbnRleHRcbiBcdF9fd2VicGFja19yZXF1aXJlX18uaSA9IGZ1bmN0aW9uKHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfTtcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7XG4gXHRcdFx0XHRjb25maWd1cmFibGU6IGZhbHNlLFxuIFx0XHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcbiBcdFx0XHRcdGdldDogZ2V0dGVyXG4gXHRcdFx0fSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gMTEpO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHdlYnBhY2svYm9vdHN0cmFwIGE1ZmRlNTYyYThkY2NjN2U5YjE5IiwiY29uc3QgZHJvcGxhYkFqYXhGaWx0ZXIgPSB7XG4gIGluaXQ6IGZ1bmN0aW9uKGhvb2spIHtcbiAgICB0aGlzLmRlc3Ryb3llZCA9IGZhbHNlO1xuICAgIHRoaXMuaG9vayA9IGhvb2s7XG4gICAgdGhpcy5ub3RMb2FkaW5nKCk7XG5cbiAgICB0aGlzLmV2ZW50V3JhcHBlciA9IHt9O1xuICAgIHRoaXMuZXZlbnRXcmFwcGVyLmRlYm91bmNlVHJpZ2dlciA9IHRoaXMuZGVib3VuY2VUcmlnZ2VyLmJpbmQodGhpcyk7XG4gICAgdGhpcy5ob29rLnRyaWdnZXIuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bi5kbCcsIHRoaXMuZXZlbnRXcmFwcGVyLmRlYm91bmNlVHJpZ2dlcik7XG4gICAgdGhpcy5ob29rLnRyaWdnZXIuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCB0aGlzLmV2ZW50V3JhcHBlci5kZWJvdW5jZVRyaWdnZXIpO1xuXG4gICAgdGhpcy50cmlnZ2VyKHRydWUpO1xuICB9LFxuXG4gIG5vdExvYWRpbmc6IGZ1bmN0aW9uIG5vdExvYWRpbmcoKSB7XG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gIH0sXG5cbiAgZGVib3VuY2VUcmlnZ2VyOiBmdW5jdGlvbiBkZWJvdW5jZVRyaWdnZXIoZSkge1xuICAgIHZhciBOT05fQ0hBUkFDVEVSX0tFWVMgPSBbMTYsIDE3LCAxOCwgMjAsIDM3LCAzOCwgMzksIDQwLCA5MSwgOTNdO1xuICAgIHZhciBpbnZhbGlkS2V5UHJlc3NlZCA9IE5PTl9DSEFSQUNURVJfS0VZUy5pbmRleE9mKGUuZGV0YWlsLndoaWNoIHx8IGUuZGV0YWlsLmtleUNvZGUpID4gLTE7XG4gICAgdmFyIGZvY3VzRXZlbnQgPSBlLnR5cGUgPT09ICdmb2N1cyc7XG4gICAgaWYgKGludmFsaWRLZXlQcmVzc2VkIHx8IHRoaXMubG9hZGluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy50aW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KTtcbiAgICB9XG4gICAgdGhpcy50aW1lb3V0ID0gc2V0VGltZW91dCh0aGlzLnRyaWdnZXIuYmluZCh0aGlzLCBmb2N1c0V2ZW50KSwgMjAwKTtcbiAgfSxcblxuICB0cmlnZ2VyOiBmdW5jdGlvbiB0cmlnZ2VyKGdldEVudGlyZUxpc3QpIHtcbiAgICB2YXIgY29uZmlnID0gdGhpcy5ob29rLmNvbmZpZy5kcm9wbGFiQWpheEZpbHRlcjtcbiAgICB2YXIgc2VhcmNoVmFsdWUgPSB0aGlzLnRyaWdnZXIudmFsdWU7XG4gICAgaWYgKCFjb25maWcgfHwgIWNvbmZpZy5lbmRwb2ludCB8fCAhY29uZmlnLnNlYXJjaEtleSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLnNlYXJjaFZhbHVlRnVuY3Rpb24pIHtcbiAgICAgIHNlYXJjaFZhbHVlID0gY29uZmlnLnNlYXJjaFZhbHVlRnVuY3Rpb24oKTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy5sb2FkaW5nVGVtcGxhdGUgJiYgdGhpcy5ob29rLmxpc3QuZGF0YSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICB0aGlzLmhvb2subGlzdC5kYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdmFyIGR5bmFtaWNMaXN0ID0gdGhpcy5ob29rLmxpc3QubGlzdC5xdWVyeVNlbGVjdG9yKCdbZGF0YS1keW5hbWljXScpO1xuICAgICAgdmFyIGxvYWRpbmdUZW1wbGF0ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgbG9hZGluZ1RlbXBsYXRlLmlubmVySFRNTCA9IGNvbmZpZy5sb2FkaW5nVGVtcGxhdGU7XG4gICAgICBsb2FkaW5nVGVtcGxhdGUuc2V0QXR0cmlidXRlKCdkYXRhLWxvYWRpbmctdGVtcGxhdGUnLCB0cnVlKTtcbiAgICAgIHRoaXMubGlzdFRlbXBsYXRlID0gZHluYW1pY0xpc3Qub3V0ZXJIVE1MO1xuICAgICAgZHluYW1pY0xpc3Qub3V0ZXJIVE1MID0gbG9hZGluZ1RlbXBsYXRlLm91dGVySFRNTDtcbiAgICB9XG4gICAgaWYgKGdldEVudGlyZUxpc3QpIHtcbiAgICAgIHNlYXJjaFZhbHVlID0gJyc7XG4gICAgfVxuICAgIGlmIChjb25maWcuc2VhcmNoS2V5ID09PSBzZWFyY2hWYWx1ZSkge1xuICAgICAgcmV0dXJuIHRoaXMubGlzdC5zaG93KCk7XG4gICAgfVxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgdmFyIHBhcmFtcyA9IGNvbmZpZy5wYXJhbXMgfHwge307XG4gICAgcGFyYW1zW2NvbmZpZy5zZWFyY2hLZXldID0gc2VhcmNoVmFsdWU7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHNlbGYuY2FjaGUgPSBzZWxmLmNhY2hlIHx8IHt9O1xuICAgIHZhciB1cmwgPSBjb25maWcuZW5kcG9pbnQgKyB0aGlzLmJ1aWxkUGFyYW1zKHBhcmFtcyk7XG4gICAgdmFyIHVybENhY2hlZERhdGEgPSBzZWxmLmNhY2hlW3VybF07XG4gICAgaWYgKHVybENhY2hlZERhdGEpIHtcbiAgICAgIHNlbGYuX2xvYWREYXRhKHVybENhY2hlZERhdGEsIGNvbmZpZywgc2VsZik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2xvYWRVcmxEYXRhKHVybClcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xuICAgICAgICAgIHNlbGYuX2xvYWREYXRhKGRhdGEsIGNvbmZpZywgc2VsZik7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfSxcblxuICBfbG9hZFVybERhdGE6IGZ1bmN0aW9uIF9sb2FkVXJsRGF0YSh1cmwpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdDtcbiAgICAgIHhoci5vcGVuKCdHRVQnLCB1cmwsIHRydWUpO1xuICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYoeGhyLnJlYWR5U3RhdGUgPT09IFhNTEh0dHBSZXF1ZXN0LkRPTkUpIHtcbiAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2UoeGhyLnJlc3BvbnNlVGV4dCk7XG4gICAgICAgICAgICBzZWxmLmNhY2hlW3VybF0gPSBkYXRhO1xuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoZGF0YSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiByZWplY3QoW3hoci5yZXNwb25zZVRleHQsIHhoci5zdGF0dXNdKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICB4aHIuc2VuZCgpO1xuICAgIH0pO1xuICB9LFxuXG4gIF9sb2FkRGF0YTogZnVuY3Rpb24gX2xvYWREYXRhKGRhdGEsIGNvbmZpZywgc2VsZikge1xuICAgIGNvbnN0IGxpc3QgPSBzZWxmLmhvb2subGlzdDtcbiAgICBpZiAoY29uZmlnLmxvYWRpbmdUZW1wbGF0ZSAmJiBsaXN0LmRhdGEgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgbGlzdC5kYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc3QgZGF0YUxvYWRpbmdUZW1wbGF0ZSA9IGxpc3QubGlzdC5xdWVyeVNlbGVjdG9yKCdbZGF0YS1sb2FkaW5nLXRlbXBsYXRlXScpO1xuICAgICAgaWYgKGRhdGFMb2FkaW5nVGVtcGxhdGUpIHtcbiAgICAgICAgZGF0YUxvYWRpbmdUZW1wbGF0ZS5vdXRlckhUTUwgPSBzZWxmLmxpc3RUZW1wbGF0ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFzZWxmLmRlc3Ryb3llZCkge1xuICAgICAgdmFyIGhvb2tMaXN0Q2hpbGRyZW4gPSBsaXN0Lmxpc3QuY2hpbGRyZW47XG4gICAgICB2YXIgb25seUR5bmFtaWNMaXN0ID0gaG9va0xpc3RDaGlsZHJlbi5sZW5ndGggPT09IDEgJiYgaG9va0xpc3RDaGlsZHJlblswXS5oYXNBdHRyaWJ1dGUoJ2RhdGEtZHluYW1pYycpO1xuICAgICAgaWYgKG9ubHlEeW5hbWljTGlzdCAmJiBkYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBsaXN0LmhpZGUoKTtcbiAgICAgIH1cbiAgICAgIGxpc3Quc2V0RGF0YS5jYWxsKGxpc3QsIGRhdGEpO1xuICAgIH1cbiAgICBzZWxmLm5vdExvYWRpbmcoKTtcbiAgICBsaXN0LmN1cnJlbnRJbmRleCA9IDA7XG4gIH0sXG5cbiAgYnVpbGRQYXJhbXM6IGZ1bmN0aW9uKHBhcmFtcykge1xuICAgIGlmICghcGFyYW1zKSByZXR1cm4gJyc7XG4gICAgdmFyIHBhcmFtc0FycmF5ID0gT2JqZWN0LmtleXMocGFyYW1zKS5tYXAoZnVuY3Rpb24ocGFyYW0pIHtcbiAgICAgIHJldHVybiBwYXJhbSArICc9JyArIChwYXJhbXNbcGFyYW1dIHx8ICcnKTtcbiAgICB9KTtcbiAgICByZXR1cm4gJz8nICsgcGFyYW1zQXJyYXkuam9pbignJicpO1xuICB9LFxuXG4gIGRlc3Ryb3k6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMudGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCk7XG4gICAgfVxuXG4gICAgdGhpcy5kZXN0cm95ZWQgPSB0cnVlO1xuICAgIHRoaXMuaG9vay50cmlnZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24uZGwnLCB0aGlzLmV2ZW50V3JhcHBlci5kZWJvdW5jZVRyaWdnZXIpO1xuICAgIHRoaXMuaG9vay50cmlnZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgdGhpcy5ldmVudFdyYXBwZXIuZGVib3VuY2VUcmlnZ2VyKTtcbiAgfVxufTtcblxud2luZG93LmRyb3BsYWJBamF4RmlsdGVyID0gZHJvcGxhYkFqYXhGaWx0ZXI7XG5cbmV4cG9ydCBkZWZhdWx0IGRyb3BsYWJBamF4RmlsdGVyO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL3BsdWdpbnMvYWpheF9maWx0ZXIuanMiXSwic291cmNlUm9vdCI6IiJ9
=======
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAgM2IzM2FmODg0NjljYzg0MmMzMzg/NjA0OCoiLCJ3ZWJwYWNrOi8vLy4vc3JjL3BsdWdpbnMvYWpheF9maWx0ZXIuanMiXSwibmFtZXMiOlsiZHJvcGxhYkFqYXhGaWx0ZXIiLCJpbml0IiwiaG9vayIsImRlc3Ryb3llZCIsIm5vdExvYWRpbmciLCJldmVudFdyYXBwZXIiLCJkZWJvdW5jZVRyaWdnZXIiLCJiaW5kIiwidHJpZ2dlciIsImFkZEV2ZW50TGlzdGVuZXIiLCJsb2FkaW5nIiwiZSIsIk5PTl9DSEFSQUNURVJfS0VZUyIsImludmFsaWRLZXlQcmVzc2VkIiwiaW5kZXhPZiIsImRldGFpbCIsIndoaWNoIiwia2V5Q29kZSIsImZvY3VzRXZlbnQiLCJ0eXBlIiwidGltZW91dCIsImNsZWFyVGltZW91dCIsInNldFRpbWVvdXQiLCJnZXRFbnRpcmVMaXN0IiwiY29uZmlnIiwic2VhcmNoVmFsdWUiLCJ2YWx1ZSIsImVuZHBvaW50Iiwic2VhcmNoS2V5Iiwic2VhcmNoVmFsdWVGdW5jdGlvbiIsImxvYWRpbmdUZW1wbGF0ZSIsImxpc3QiLCJkYXRhIiwidW5kZWZpbmVkIiwibGVuZ3RoIiwiZHluYW1pY0xpc3QiLCJxdWVyeVNlbGVjdG9yIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiaW5uZXJIVE1MIiwic2V0QXR0cmlidXRlIiwibGlzdFRlbXBsYXRlIiwib3V0ZXJIVE1MIiwic2hvdyIsInBhcmFtcyIsInNlbGYiLCJjYWNoZSIsInVybCIsImJ1aWxkUGFyYW1zIiwidXJsQ2FjaGVkRGF0YSIsIl9sb2FkRGF0YSIsIl9sb2FkVXJsRGF0YSIsInRoZW4iLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInhociIsIlhNTEh0dHBSZXF1ZXN0Iiwib3BlbiIsIm9ucmVhZHlzdGF0ZWNoYW5nZSIsInJlYWR5U3RhdGUiLCJET05FIiwic3RhdHVzIiwiSlNPTiIsInBhcnNlIiwicmVzcG9uc2VUZXh0Iiwic2VuZCIsImRhdGFMb2FkaW5nVGVtcGxhdGUiLCJob29rTGlzdENoaWxkcmVuIiwiY2hpbGRyZW4iLCJvbmx5RHluYW1pY0xpc3QiLCJoYXNBdHRyaWJ1dGUiLCJoaWRlIiwic2V0RGF0YSIsImNhbGwiLCJjdXJyZW50SW5kZXgiLCJwYXJhbXNBcnJheSIsIk9iamVjdCIsImtleXMiLCJtYXAiLCJwYXJhbSIsImpvaW4iLCJkZXN0cm95IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIndpbmRvdyJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLG1EQUEyQyxjQUFjOztBQUV6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG1DQUEyQiwwQkFBMEIsRUFBRTtBQUN2RCx5Q0FBaUMsZUFBZTtBQUNoRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw4REFBc0QsK0RBQStEOztBQUVySDtBQUNBOztBQUVBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7O0FDaEVBLElBQU1BLG9CQUFvQjtBQUN4QkMsUUFBTSxjQUFTQyxJQUFULEVBQWU7QUFDbkIsU0FBS0MsU0FBTCxHQUFpQixLQUFqQjtBQUNBLFNBQUtELElBQUwsR0FBWUEsSUFBWjtBQUNBLFNBQUtFLFVBQUw7O0FBRUEsU0FBS0MsWUFBTCxHQUFvQixFQUFwQjtBQUNBLFNBQUtBLFlBQUwsQ0FBa0JDLGVBQWxCLEdBQW9DLEtBQUtBLGVBQUwsQ0FBcUJDLElBQXJCLENBQTBCLElBQTFCLENBQXBDO0FBQ0EsU0FBS0wsSUFBTCxDQUFVTSxPQUFWLENBQWtCQyxnQkFBbEIsQ0FBbUMsWUFBbkMsRUFBaUQsS0FBS0osWUFBTCxDQUFrQkMsZUFBbkU7QUFD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T0EsUUFBUSxHQUFSLElBQWVwQyxPQUFPb0MsS0FBUCxLQUFpQixFQUFoQyxDQUFQO0FBQ0QsS0FGaUIsQ0FBbEI7QUFHQSxXQUFPLE1BQU1KLFlBQVlLLElBQVosQ0FBaUIsR0FBakIsQ0FBYjtBQUNELEdBdkh1Qjs7QUF5SHhCQyxXQUFTLFNBQVNBLE9BQVQsR0FBbUI7QUFDMUIsUUFBSSxLQUFLOUQsT0FBVCxFQUFrQjtBQUNoQkMsbUJBQWEsS0FBS0QsT0FBbEI7QUFDRDs7QUFFRCxTQUFLakIsU0FBTCxHQUFpQixJQUFqQjtBQUNBLFNBQUtELElBQUwsQ0FBVU0sT0FBVixDQUFrQjJFLG1CQUFsQixDQUFzQyxZQUF0QyxFQUFvRCxLQUFLOUUsWUFBTCxDQUFrQkMsZUFBdEU7QUFDQSxTQUFLSixJQUFMLENBQVVNLE9BQVYsQ0FBa0IyRSxtQkFBbEIsQ0FBc0MsT0FBdEMsRUFBK0MsS0FBSzlFLFlBQUwsQ0FBa0JDLGVBQWpFO0FBQ0Q7QUFqSXVCLENBQTFCOztBQW9JQThFLE9BQU9wRixpQkFBUCxHQUEyQkEsaUJBQTNCOztrQkFFZUEsaUIiLCJmaWxlIjoiLi9kaXN0L3BsdWdpbnMvYWpheF9maWx0ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSlcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcblxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gaWRlbnRpdHkgZnVuY3Rpb24gZm9yIGNhbGxpbmcgaGFybW9ueSBpbXBvcnRzIHdpdGggdGhlIGNvcnJlY3QgY29udGV4dFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5pID0gZnVuY3Rpb24odmFsdWUpIHsgcmV0dXJuIHZhbHVlOyB9O1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHtcbiBcdFx0XHRcdGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gXHRcdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuIFx0XHRcdFx0Z2V0OiBnZXR0ZXJcbiBcdFx0XHR9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSAxMSk7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gd2VicGFjay9ib290c3RyYXAgM2IzM2FmODg0NjljYzg0MmMzMzgiLCJjb25zdCBkcm9wbGFiQWpheEZpbHRlciA9IHtcbiAgaW5pdDogZnVuY3Rpb24oaG9vaykge1xuICAgIHRoaXMuZGVzdHJveWVkID0gZmFsc2U7XG4gICAgdGhpcy5ob29rID0gaG9vaztcbiAgICB0aGlzLm5vdExvYWRpbmcoKTtcblxuICAgIHRoaXMuZXZlbnRXcmFwcGVyID0ge307XG4gICAgdGhpcy5ldmVudFdyYXBwZXIuZGVib3VuY2VUcmlnZ2VyID0gdGhpcy5kZWJvdW5jZVRyaWdnZXIuYmluZCh0aGlzKTtcbiAgICB0aGlzLmhvb2sudHJpZ2dlci5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duLmRsJywgdGhpcy5ldmVudFdyYXBwZXIuZGVib3VuY2VUcmlnZ2VyKTtcbiAgICB0aGlzLmhvb2sudHJpZ2dlci5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsIHRoaXMuZXZlbnRXcmFwcGVyLmRlYm91bmNlVHJpZ2dlcik7XG5cbiAgICB0aGlzLnRyaWdnZXIodHJ1ZSk7XG4gIH0sXG5cbiAgbm90TG9hZGluZzogZnVuY3Rpb24gbm90TG9hZGluZygpIHtcbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgfSxcblxuICBkZWJvdW5jZVRyaWdnZXI6IGZ1bmN0aW9uIGRlYm91bmNlVHJpZ2dlcihlKSB7XG4gICAgdmFyIE5PTl9DSEFSQUNURVJfS0VZUyA9IFsxNiwgMTcsIDE4LCAyMCwgMzcsIDM4LCAzOSwgNDAsIDkxLCA5M107XG4gICAgdmFyIGludmFsaWRLZXlQcmVzc2VkID0gTk9OX0NIQVJBQ1RFUl9LRVlTLmluZGV4T2YoZS5kZXRhaWwud2hpY2ggfHwgZS5kZXRhaWwua2V5Q29kZSkgPiAtMTtcbiAgICB2YXIgZm9jdXNFdmVudCA9IGUudHlwZSA9PT0gJ2ZvY3VzJztcbiAgICBpZiAoaW52YWxpZEtleVByZXNzZWQgfHwgdGhpcy5sb2FkaW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLnRpbWVvdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQpO1xuICAgIH1cbiAgICB0aGlzLnRpbWVvdXQgPSBzZXRUaW1lb3V0KHRoaXMudHJpZ2dlci5iaW5kKHRoaXMsIGZvY3VzRXZlbnQpLCAyMDApO1xuICB9LFxuXG4gIHRyaWdnZXI6IGZ1bmN0aW9uIHRyaWdnZXIoZ2V0RW50aXJlTGlzdCkge1xuICAgIHZhciBjb25maWcgPSB0aGlzLmhvb2suY29uZmlnLmRyb3BsYWJBamF4RmlsdGVyO1xuICAgIHZhciBzZWFyY2hWYWx1ZSA9IHRoaXMudHJpZ2dlci52YWx1ZTtcbiAgICBpZiAoIWNvbmZpZyB8fCAhY29uZmlnLmVuZHBvaW50IHx8ICFjb25maWcuc2VhcmNoS2V5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChjb25maWcuc2VhcmNoVmFsdWVGdW5jdGlvbikge1xuICAgICAgc2VhcmNoVmFsdWUgPSBjb25maWcuc2VhcmNoVmFsdWVGdW5jdGlvbigpO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLmxvYWRpbmdUZW1wbGF0ZSAmJiB0aGlzLmhvb2subGlzdC5kYXRhID09PSB1bmRlZmluZWQgfHxcbiAgICAgIHRoaXMuaG9vay5saXN0LmRhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICB2YXIgZHluYW1pY0xpc3QgPSB0aGlzLmhvb2subGlzdC5saXN0LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWR5bmFtaWNdJyk7XG4gICAgICB2YXIgbG9hZGluZ1RlbXBsYXRlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICBsb2FkaW5nVGVtcGxhdGUuaW5uZXJIVE1MID0gY29uZmlnLmxvYWRpbmdUZW1wbGF0ZTtcbiAgICAgIGxvYWRpbmdUZW1wbGF0ZS5zZXRBdHRyaWJ1dGUoJ2RhdGEtbG9hZGluZy10ZW1wbGF0ZScsIHRydWUpO1xuICAgICAgdGhpcy5saXN0VGVtcGxhdGUgPSBkeW5hbWljTGlzdC5vdXRlckhUTUw7XG4gICAgICBkeW5hbWljTGlzdC5vdXRlckhUTUwgPSBsb2FkaW5nVGVtcGxhdGUub3V0ZXJIVE1MO1xuICAgIH1cbiAgICBpZiAoZ2V0RW50aXJlTGlzdCkge1xuICAgICAgc2VhcmNoVmFsdWUgPSAnJztcbiAgICB9XG4gICAgaWYgKGNvbmZpZy5zZWFyY2hLZXkgPT09IHNlYXJjaFZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5saXN0LnNob3coKTtcbiAgICB9XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICB2YXIgcGFyYW1zID0gY29uZmlnLnBhcmFtcyB8fCB7fTtcbiAgICBwYXJhbXNbY29uZmlnLnNlYXJjaEtleV0gPSBzZWFyY2hWYWx1ZTtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgc2VsZi5jYWNoZSA9IHNlbGYuY2FjaGUgfHwge307XG4gICAgdmFyIHVybCA9IGNvbmZpZy5lbmRwb2ludCArIHRoaXMuYnVpbGRQYXJhbXMocGFyYW1zKTtcbiAgICB2YXIgdXJsQ2FjaGVkRGF0YSA9IHNlbGYuY2FjaGVbdXJsXTtcbiAgICBpZiAodXJsQ2FjaGVkRGF0YSkge1xuICAgICAgc2VsZi5fbG9hZERhdGEodXJsQ2FjaGVkRGF0YSwgY29uZmlnLCBzZWxmKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbG9hZFVybERhdGEodXJsKVxuICAgICAgICAudGhlbihmdW5jdGlvbihkYXRhKSB7XG4gICAgICAgICAgc2VsZi5fbG9hZERhdGEoZGF0YSwgY29uZmlnLCBzZWxmKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9LFxuXG4gIF9sb2FkVXJsRGF0YTogZnVuY3Rpb24gX2xvYWRVcmxEYXRhKHVybCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0O1xuICAgICAgeGhyLm9wZW4oJ0dFVCcsIHVybCwgdHJ1ZSk7XG4gICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZih4aHIucmVhZHlTdGF0ZSA9PT0gWE1MSHR0cFJlcXVlc3QuRE9ORSkge1xuICAgICAgICAgIGlmICh4aHIuc3RhdHVzID09PSAyMDApIHtcbiAgICAgICAgICAgIHZhciBkYXRhID0gSlNPTi5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgIHNlbGYuY2FjaGVbdXJsXSA9IGRhdGE7XG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShkYXRhKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHJlamVjdChbeGhyLnJlc3BvbnNlVGV4dCwgeGhyLnN0YXR1c10pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHhoci5zZW5kKCk7XG4gICAgfSk7XG4gIH0sXG5cbiAgX2xvYWREYXRhOiBmdW5jdGlvbiBfbG9hZERhdGEoZGF0YSwgY29uZmlnLCBzZWxmKSB7XG4gICAgY29uc3QgbGlzdCA9IHNlbGYuaG9vay5saXN0O1xuICAgIGlmIChjb25maWcubG9hZGluZ1RlbXBsYXRlICYmIGxpc3QuZGF0YSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICBsaXN0LmRhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb25zdCBkYXRhTG9hZGluZ1RlbXBsYXRlID0gbGlzdC5saXN0LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWxvYWRpbmctdGVtcGxhdGVdJyk7XG4gICAgICBpZiAoZGF0YUxvYWRpbmdUZW1wbGF0ZSkge1xuICAgICAgICBkYXRhTG9hZGluZ1RlbXBsYXRlLm91dGVySFRNTCA9IHNlbGYubGlzdFRlbXBsYXRlO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIXNlbGYuZGVzdHJveWVkKSB7XG4gICAgICB2YXIgaG9va0xpc3RDaGlsZHJlbiA9IGxpc3QubGlzdC5jaGlsZHJlbjtcbiAgICAgIHZhciBvbmx5RHluYW1pY0xpc3QgPSBob29rTGlzdENoaWxkcmVuLmxlbmd0aCA9PT0gMSAmJiBob29rTGlzdENoaWxkcmVuWzBdLmhhc0F0dHJpYnV0ZSgnZGF0YS1keW5hbWljJyk7XG4gICAgICBpZiAob25seUR5bmFtaWNMaXN0ICYmIGRhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGxpc3QuaGlkZSgpO1xuICAgICAgfVxuICAgICAgbGlzdC5zZXREYXRhLmNhbGwobGlzdCwgZGF0YSk7XG4gICAgfVxuICAgIHNlbGYubm90TG9hZGluZygpO1xuICAgIGxpc3QuY3VycmVudEluZGV4ID0gMDtcbiAgfSxcblxuICBidWlsZFBhcmFtczogZnVuY3Rpb24ocGFyYW1zKSB7XG4gICAgaWYgKCFwYXJhbXMpIHJldHVybiAnJztcbiAgICB2YXIgcGFyYW1zQXJyYXkgPSBPYmplY3Qua2V5cyhwYXJhbXMpLm1hcChmdW5jdGlvbihwYXJhbSkge1xuICAgICAgcmV0dXJuIHBhcmFtICsgJz0nICsgKHBhcmFtc1twYXJhbV0gfHwgJycpO1xuICAgIH0pO1xuICAgIHJldHVybiAnPycgKyBwYXJhbXNBcnJheS5qb2luKCcmJyk7XG4gIH0sXG5cbiAgZGVzdHJveTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy50aW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KTtcbiAgICB9XG5cbiAgICB0aGlzLmRlc3Ryb3llZCA9IHRydWU7XG4gICAgdGhpcy5ob29rLnRyaWdnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bi5kbCcsIHRoaXMuZXZlbnRXcmFwcGVyLmRlYm91bmNlVHJpZ2dlcik7XG4gICAgdGhpcy5ob29rLnRyaWdnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcignZm9jdXMnLCB0aGlzLmV2ZW50V3JhcHBlci5kZWJvdW5jZVRyaWdnZXIpO1xuICB9XG59O1xuXG53aW5kb3cuZHJvcGxhYkFqYXhGaWx0ZXIgPSBkcm9wbGFiQWpheEZpbHRlcjtcblxuZXhwb3J0IGRlZmF1bHQgZHJvcGxhYkFqYXhGaWx0ZXI7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvcGx1Z2lucy9hamF4X2ZpbHRlci5qcyJdLCJzb3VyY2VSb290IjoiIn0=
>>>>>>> Updated droplab version to webpack version