@1money/component-ui 0.1.17 → 0.1.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -17,7 +17,7 @@ import SelectSearchControl from './SelectSearchControl';
17
17
  import SelectValueContent from './SelectValueContent';
18
18
  import { useSelectShell } from './useSelectShell';
19
19
  import { KEYBOARD, SELECT_TYPOGRAPHY } from './constants';
20
- import { extractOptionText, filterOptionGroups, flattenOptionGroups, getMultipleValue, getFontSize, getOptionsByValues, getSelectedOptions, isOptionSelected, normalizeSize, normalizeOptionGroups, removeMultipleValue, toggleMultipleValue } from './utils';
20
+ import { extractOptionText, filterOptionGroups, flattenOptionGroups, getMultipleValue, getFontSize, getOptionsByValues, getSelectedOptions, isOptionSelected, isSelectMultipleValue, normalizeSize, normalizeOptionGroups, removeMultipleValue, toggleMultipleValue } from './utils';
21
21
  import './style';
22
22
  var DEFAULT_MAX_HEIGHT = 320;
23
23
  export var Select = function Select(props) {
@@ -137,6 +137,9 @@ export var Select = function Select(props) {
137
137
  var selectedOptions = useMemo(function () {
138
138
  return getSelectedOptions(allFlatOptions, innerValue, multiple);
139
139
  }, [allFlatOptions, innerValue, multiple]);
140
+ // Rebuild per render: controlled arrays may be mutated in place, and option
141
+ // membership previously read their current contents on every render.
142
+ var selectedValues = isSelectMultipleValue(innerValue, multiple) ? new Set(innerValue) : null;
140
143
  var selectedIndex = useMemo(function () {
141
144
  if (selectedOptions.length === 0) {
142
145
  return null;
@@ -535,7 +538,7 @@ export var Select = function Select(props) {
535
538
  }), group.options.map(function (option) {
536
539
  var optionFlatIndex = flatIndex;
537
540
  flatIndex += 1;
538
- var selected = isOptionSelected(innerValue, multiple, option.value);
541
+ var selected = selectedValues ? selectedValues.has(option.value) : isOptionSelected(innerValue, multiple, option.value);
539
542
  var active = activeIndex === optionFlatIndex;
540
543
  var optionMeta = {
541
544
  active: active,
@@ -592,4 +595,4 @@ export var Select = function Select(props) {
592
595
  };
593
596
  Select.displayName = 'Select';
594
597
  export default /*#__PURE__*/memo(Select);
595
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC50c3giXSwibmFtZXMiOlsianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZsb2F0aW5nRm9jdXNNYW5hZ2VyIiwiRmxvYXRpbmdQb3J0YWwiLCJ1c2VJbnRlcmFjdGlvbnMiLCJ1c2VMaXN0TmF2aWdhdGlvbiIsInVzZVR5cGVhaGVhZCIsIm1lbW8iLCJ1c2VFZmZlY3QiLCJ1c2VJZCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZUNvbnRyb2xsZWRTdGF0ZSIsInVzZUV2ZW50Q2FsbGJhY2siLCJ1c2VMb2NhbGUiLCJ1c2VGb3JtQ29udHJvbFNpemUiLCJJY29ucyIsIlNwaW5uZXIiLCJUeXBvZ3JhcGh5Qm9keSIsIlR5cG9ncmFwaHlMYWJlbCIsImpvaW5DbHMiLCJkZWZhdWx0Iiwicm9vdENsYXNzbmFtZXMiLCJTZWxlY3RGaWVsZFNoZWxsIiwiU2VsZWN0T3B0aW9uQ29udGVudCIsIlNlbGVjdFNlYXJjaENvbnRyb2wiLCJTZWxlY3RWYWx1ZUNvbnRlbnQiLCJ1c2VTZWxlY3RTaGVsbCIsIktFWUJPQVJEIiwiU0VMRUNUX1RZUE9HUkFQSFkiLCJleHRyYWN0T3B0aW9uVGV4dCIsImZpbHRlck9wdGlvbkdyb3VwcyIsImZsYXR0ZW5PcHRpb25Hcm91cHMiLCJnZXRNdWx0aXBsZVZhbHVlIiwiZ2V0Rm9udFNpemUiLCJnZXRPcHRpb25zQnlWYWx1ZXMiLCJnZXRTZWxlY3RlZE9wdGlvbnMiLCJpc09wdGlvblNlbGVjdGVkIiwibm9ybWFsaXplU2l6ZSIsIm5vcm1hbGl6ZU9wdGlvbkdyb3VwcyIsInJlbW92ZU11bHRpcGxlVmFsdWUiLCJ0b2dnbGVNdWx0aXBsZVZhbHVlIiwiREVGQVVMVF9NQVhfSEVJR0hUIiwiU2VsZWN0IiwicHJvcHMiLCJfYSIsImxvY2FsZSIsIl9wcm9wcyRjbGFzc05hbWUiLCJjbGFzc05hbWUiLCJfcHJvcHMkcHJlZml4Q2xzIiwicHJlZml4Q2xzIiwic3R5bGUiLCJpZCIsIm5hbWUiLCJhcmlhTGFiZWwiLCJhcmlhTGFiZWxsZWRCeSIsIl9wcm9wcyRwbGFjZWhvbGRlciIsInBsYWNlaG9sZGVyIiwiX3Byb3BzJG9wdGlvbnMiLCJvcHRpb25zIiwidmFsdWUiLCJkZWZhdWx0VmFsdWUiLCJzaXplUHJvcCIsInNpemUiLCJfcHJvcHMkc3RhdHVzIiwic3RhdHVzIiwiX3Byb3BzJHZhcmlhbnQiLCJ2YXJpYW50IiwiX3Byb3BzJGRpc2FibGVkIiwiZGlzYWJsZWQiLCJkaXNhYmxlZFByb3AiLCJfcHJvcHMkcmVhZE9ubHkiLCJyZWFkT25seSIsIl9wcm9wcyRsb2FkaW5nIiwibG9hZGluZyIsIl9wcm9wcyRtdWx0aXBsZSIsIm11bHRpcGxlIiwibWF4VmlzaWJsZVZhbHVlcyIsIl9wcm9wcyRzZWFyY2hhYmxlIiwic2VhcmNoYWJsZSIsIl9wcm9wcyRzZWFyY2hQbGFjZWhvbCIsInNlYXJjaFBsYWNlaG9sZGVyIiwic2VhcmNoVmFsdWUiLCJfcHJvcHMkZGVmYXVsdFNlYXJjaFYiLCJkZWZhdWx0U2VhcmNoVmFsdWUiLCJfcHJvcHMkZmlsdGVySW5wdXRBdXQiLCJmaWx0ZXJJbnB1dEF1dG9Gb2N1cyIsImxhYmVsIiwibGFiZWxDbGFzc05hbWUiLCJpbmZvIiwiZGVzY3JpcHRpb24iLCJmZWVkYmFjayIsIl9wcm9wcyRyZXF1aXJlZCIsInJlcXVpcmVkIiwicHJlZml4IiwiX3Byb3BzJGVtcHR5Q29udGVudCIsImVtcHR5Q29udGVudCIsInBhbmVsSGVhZGVyIiwicGFuZWxGb290ZXIiLCJvcGVuIiwiX3Byb3BzJGRlZmF1bHRPcGVuIiwiZGVmYXVsdE9wZW4iLCJfcHJvcHMkcG9ydGFsIiwicG9ydGFsIiwiX3Byb3BzJGFsbG93RGVzZWxlY3QiLCJhbGxvd0Rlc2VsZWN0IiwicGFuZWxDbGFzc05hbWUiLCJvcHRpb25DbGFzc05hbWUiLCJncm91cExhYmVsQ2xhc3NOYW1lIiwiX3Byb3BzJGxpc3RNYXhIZWlnaHQiLCJsaXN0TWF4SGVpZ2h0Iiwib2Zmc2V0IiwiYW5pbWF0aW9uIiwib25DaGFuZ2UiLCJvbk9wZW5DaGFuZ2UiLCJvblNlYXJjaENoYW5nZSIsIm9uQmx1ciIsImZpbHRlck9wdGlvbiIsInJlbmRlck9wdGlvbiIsInJlbmRlck9wdGlvbkNvbnRlbnQiLCJyZW5kZXJWYWx1ZSIsInJlZiIsImNvbnRleHRTaXplIiwiaW50ZXJhY3RpdmUiLCJjbGFzc2VzIiwiYXV0b0lkIiwidHJpZ2dlcklkIiwibGFiZWxJZCIsImRlc2NyaXB0aW9uSWQiLCJmZWVkYmFja0lkIiwib3B0aW9uSWRQcmVmaXgiLCJfdXNlQ29udHJvbGxlZFN0YXRlIiwidW5kZWZpbmVkIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImlubmVyVmFsdWUiLCJzZXRJbm5lclZhbHVlIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZTMiLCJfdXNlQ29udHJvbGxlZFN0YXRlNCIsImlubmVyU2VhcmNoVmFsdWUiLCJzZXRJbm5lclNlYXJjaFZhbHVlIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsImFjdGl2ZUluZGV4Iiwic2V0QWN0aXZlSW5kZXgiLCJub3JtYWxpemVkU2l6ZSIsImFsbE9wdGlvbkdyb3VwcyIsImFsbEZsYXRPcHRpb25zIiwidmlzaWJsZU9wdGlvbkdyb3VwcyIsInZpc2libGVGbGF0T3B0aW9ucyIsInNlbGVjdGVkT3B0aW9ucyIsInNlbGVjdGVkSW5kZXgiLCJsZW5ndGgiLCJtYXRjaGVkSW5kZXgiLCJmaW5kSW5kZXgiLCJvcHRpb24iLCJoYXNTZWxlY3Rpb24iLCJsaXN0UmVmIiwibGlzdENvbnRlbnRSZWYiLCJmbG9hdGluZ1JlZiIsInRyaWdnZXJSZWYiLCJzZWFyY2hJbnB1dFJlZiIsImhhbmRsZVRyaWdnZXJSZWYiLCJub2RlIiwiY3VycmVudCIsIl91c2VTZWxlY3RTaGVsbCIsImlubmVyT3BlbiIsImlzT3BlbiIsImhhbmRsZU9wZW5DaGFuZ2UiLCJzZXRPcGVuIiwicmVmcyIsImNvbnRleHQiLCJmbG9hdGluZ1N0eWxlcyIsInRyYW5zaXRpb25TdHlsZXMiLCJpc01vdW50ZWQiLCJiYXNlSW50ZXJhY3Rpb25zIiwic2V0UmVmZXJlbmNlIiwic2V0RmxvYXRpbmciLCJsaXN0TmF2aWdhdGlvbiIsIm9uTmF2aWdhdGUiLCJlbmFibGVkIiwibG9vcCIsInZpcnR1YWwiLCJ0eXBlYWhlYWQiLCJvbk1hdGNoIiwiX3VzZUludGVyYWN0aW9ucyIsImNvbmNhdCIsIl90b0NvbnN1bWFibGVBcnJheSIsImdldFJlZmVyZW5jZVByb3BzIiwiZ2V0RmxvYXRpbmdQcm9wcyIsImdldEl0ZW1Qcm9wcyIsImZpcnN0RW5hYmxlZEluZGV4IiwicHJldiIsImZvY3VzIiwicHJldmVudFNjcm9sbCIsInNsaWNlIiwic2V0U2VhcmNoSW5wdXRSZWYiLCJub3RpZnlCbHVySWZPdXRzaWRlIiwicmVsYXRlZFRhcmdldCIsImV2ZW50IiwiX2IiLCJuZXh0VGFyZ2V0Iiwid2l0aGluVHJpZ2dlciIsImNvbnRhaW5zIiwid2l0aGluRmxvYXRpbmciLCJoYW5kbGVUcmlnZ2VyQmx1ciIsImhhbmRsZU9wdGlvbkJsdXIiLCJjb21taXRDaGFuZ2UiLCJuZXh0VmFsdWUiLCJuZXh0T3B0aW9uIiwiaGFuZGxlU2VsZWN0T3B0aW9uIiwibmV4dE9wdGlvbnMiLCJoYW5kbGVSZW1vdmVTZWxlY3RlZFZhbHVlIiwib3B0aW9uVmFsdWUiLCJpbmNsdWRlcyIsImhhbmRsZVRyaWdnZXJLZXlEb3duIiwia2V5IiwiRU5URVIiLCJTUEFDRSIsInByZXZlbnREZWZhdWx0IiwiQVJST1dfRE9XTiIsIkFSUk9XX1VQIiwiaGFuZGxlSXRlbU1vdXNlRW50ZXIiLCJpbmRleCIsImhhbmRsZVRhZ1JlbW92ZU1vdXNlRG93biIsInN0b3BQcm9wYWdhdGlvbiIsImhhbmRsZVRhZ1JlbW92ZUNsaWNrIiwiaGFuZGxlU2VhcmNoQmx1ciIsImhhbmRsZVNlYXJjaENoYW5nZSIsImhhbmRsZVNlYXJjaENsZWFyIiwiZmluZEVuYWJsZWRJbmRleCIsImRpcmVjdGlvbiIsInN0YXJ0Iiwic3RlcCIsImNhbmRpZGF0ZSIsImhhbmRsZVNlYXJjaEtleURvd24iLCJuZXh0IiwiRVNDQVBFIiwicmVuZGVyVmFsdWVNZXRhIiwiZm9udFNpemUiLCJ2YWx1ZUxhYmVsQ2xhc3MiLCJpc011bHRpcGxlVmFsdWVGaWxsZWQiLCJ0cmlnZ2VyQ2xhc3NOYW1lIiwiaWNvblNpemUiLCJhY3RpdmVPcHRpb25JZCIsImZsb2F0aW5nQXJpYUxhYmVsbGVkQnkiLCJkZXNjcmliZWRCeUlkcyIsImZpbHRlciIsIkJvb2xlYW4iLCJqb2luIiwiY2hpbGRyZW4iLCJPYmplY3QiLCJhc3NpZ24iLCJ0eXBlIiwib25LZXlEb3duIiwib25SZW1vdmUiLCJvblJlbW92ZUNsaWNrIiwib25SZW1vdmVNb3VzZURvd24iLCJzdHJva2VXaWR0aCIsImNvbG9yIiwicGFuZWxOb2RlIiwibW9kYWwiLCJpbml0aWFsRm9jdXMiLCJyZXR1cm5Gb2N1cyIsImFjdGl2ZURlc2NlbmRhbnQiLCJvbkNsZWFyIiwiZW1wdHkiLCJmbGF0SW5kZXgiLCJtYXAiLCJncm91cCIsImdyb3VwTGFiZWwiLCJzdHJvbmciLCJvcHRpb25GbGF0SW5kZXgiLCJzZWxlY3RlZCIsImFjdGl2ZSIsIm9wdGlvbk1ldGEiLCJyb2xlIiwib25DbGljayIsIm9uTW91c2VFbnRlciIsImNvbnRlbnQiLCJkaXNwbGF5TmFtZSJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxTQUFTQSxHQUFHLElBQUlDLElBQUksRUFBRUMsSUFBSSxJQUFJQyxLQUFLLFFBQVEsbUJBQW1CO0FDQTlELFNBQ0VDLG9CQUFvQixFQUNwQkMsY0FBYyxFQUNkQyxlQUFlLEVBQ2ZDLGlCQUFpQixFQUNqQkMsWUFBWSxRQUNQLG9CQUFvQjtBQUMzQixTQUFTQyxJQUFJLEVBQUVDLFNBQVMsRUFBRUMsS0FBSyxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLE9BQU87QUFDekUsT0FBT0Msa0JBQWtCLE1BQU0s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QUFDLENBQ0g7VUFBQSxDQUFBLENBQ0csRUFDTHRILFdBQVcsSUFBSSxJQUFJLElBQ2xCcEcsSUFBQSxDQUFBLEtBQUEsRUFBQTtZQUFLa0QsU0FBUyxFQUFFNEUsT0FBTyxDQUFDLGNBQWMsQ0FBQztZQUFBOEgsUUFBQSxFQUFHeEo7VUFBVyxDQUFBLENBQ3REO1FBQUEsQ0FBQSxDQUFBO01BQ0csQ0FBQSxDQUVUO01BRUQsT0FBT0ssTUFBTSxHQUFHekcsSUFBQSxDQUFDSSxjQUFjLEVBQUE7UUFBQXdQLFFBQUEsRUFBRVU7TUFBUyxDQUFBLENBQWtCLEdBQUdBLFNBQVM7SUFDMUUsQ0FBQyxDQUFDLENBQUU7RUFBQSxDQUFBLENBQ2E7QUFFdkIsQ0FBQztBQUVEek4sTUFBTSxDQUFDNk8sV0FBVyxHQUFHLFFBQVE7QUFFN0IsNEJBQWVsUixJQUFJLENBQUNxQyxNQUFNLENBQUMiLCJmaWxlIjoiY29tcG9uZW50cy9TZWxlY3QvU2VsZWN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IEZsb2F0aW5nRm9jdXNNYW5hZ2VyLCBGbG9hdGluZ1BvcnRhbCwgdXNlSW50ZXJhY3Rpb25zLCB1c2VMaXN0TmF2aWdhdGlvbiwgdXNlVHlwZWFoZWFkLCB9IGZyb20gJ0BmbG9hdGluZy11aS9yZWFjdCc7XG5pbXBvcnQgeyBtZW1vLCB1c2VFZmZlY3QsIHVzZUlkLCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZUNvbnRyb2xsZWRTdGF0ZSBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZUNvbnRyb2xsZWRTdGF0ZSc7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2snO1xuaW1wb3J0IHsgdXNlTG9jYWxlIH0gZnJvbSAnLi4vQ29uZmlnUHJvdmlkZXInO1xuaW1wb3J0IHsgdXNlRm9ybUNvbnRyb2xTaXplIH0gZnJvbSAnLi4vRm9ybUxheW91dC9jb250ZXh0JztcbmltcG9ydCB7IEljb25zIH0gZnJvbSAnLi4vSWNvbnMnO1xuaW1wb3J0IHsgU3Bpbm5lciB9IGZyb20gJy4uL1NwaW5uZXInO1xuaW1wb3J0IHsgVHlwb2dyYXBoeUJvZHksIFR5cG9ncmFwaHlMYWJlbCB9IGZyb20gJy4uL1R5cG9ncmFwaHknO1xuaW1wb3J0IHsgam9pbkNscywgZGVmYXVsdCBhcyByb290Q2xhc3NuYW1lcyB9IGZyb20gJy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuaW1wb3J0IFNlbGVjdEZpZWxkU2hlbGwgZnJvbSAnLi9TZWxlY3RGaWVsZFNoZWxsJztcbmltcG9ydCBTZWxlY3RPcHRpb25Db250ZW50IGZyb20gJy4vU2VsZWN0T3B0aW9uQ29udGVudCc7XG5pbXBvcnQgU2VsZWN0U2VhcmNoQ29udHJvbCBmcm9tICcuL1NlbGVjdFNlYXJjaENvbnRyb2wnO1xuaW1wb3J0IFNlbGVjdFZhbHVlQ29udGVudCBmcm9tICcuL1NlbGVjdFZhbHVlQ29udGVudCc7XG5pbXBvcnQgeyB1c2VTZWxlY3RTaGVsbCB9IGZyb20gJy4vdXNlU2VsZWN0U2hlbGwnO1xuaW1wb3J0IHsgS0VZQk9BUkQsIFNFTEVDVF9UWVBPR1JBUEhZIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZXh0cmFjdE9wdGlvblRleHQsIGZpbHRlck9wdGlvbkdyb3VwcywgZmxhdHRlbk9wdGlvbkdyb3VwcywgZ2V0TXVsdGlwbGVWYWx1ZSwgZ2V0Rm9udFNpemUsIGdldE9wdGlvbnNCeVZhbHVlcywgZ2V0U2VsZWN0ZWRPcHRpb25zLCBpc09wdGlvblNlbGVjdGVkLCBub3JtYWxpemVTaXplLCBub3JtYWxpemVPcHRpb25Hcm91cHMsIHJlbW92ZU11bHRpcGxlVmFsdWUsIHRvZ2dsZU11bHRpcGxlVmFsdWUsIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgJy4vc3R5bGUnO1xuY29uc3QgREVGQVVMVF9NQVhfSEVJR0hUID0gMzIwO1xuZXhwb3J0IGNvbnN0IFNlbGVjdCA9IChwcm9wcykgPT4ge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCBsb2NhbGUgPSB1c2VMb2NhbGUoJ1NlbGVjdCcpO1xuICAgIGNvbnN0IHsgY2xhc3NOYW1lID0gJycsIHByZWZpeENscyA9ICdzZWxlY3QnLCBzdHlsZSwgaWQsIG5hbWUsICdhcmlhLWxhYmVsJzogYXJpYUxhYmVsLCAnYXJpYS1sYWJlbGxlZGJ5JzogYXJpYUxhYmVsbGVkQnksIHBsYWNlaG9sZGVyID0gbG9jYWxlLnBsYWNlaG9sZGVyLCBvcHRpb25zID0gW10sIHZhbHVlLCBkZWZhdWx0VmFsdWUsIHNpemU6IHNpemVQcm9wLCBzdGF0dXMgPSAnZGVmYXVsdCcsIHZhcmlhbnQgPSAnZmlsbCcsIGRpc2FibGVkOiBkaXNhYmxlZFByb3AgPSBmYWxzZSwgcmVhZE9ubHkgPSBmYWxzZSwgbG9hZGluZyA9IGZhbHNlLCBtdWx0aXBsZSA9IGZhbHNlLCBtYXhWaXNpYmxlVmFsdWVzLCBzZWFyY2hhYmxlID0gZmFsc2UsIHNlYXJjaFBsYWNlaG9sZGVyID0gbG9jYWxlLnNlYXJjaFBsYWNlaG9sZGVyLCBzZWFyY2hWYWx1ZSwgZGVmYXVsdFNlYXJjaFZhbHVlID0gJycsIGZpbHRlcklucHV0QXV0b0ZvY3VzID0gdHJ1ZSwgbGFiZWwsIGxhYmVsQ2xhc3NOYW1lLCBpbmZvLCBkZXNjcmlwdGlvbiwgZmVlZGJhY2ssIHJlcXVpcmVkID0gdHJ1ZSwgcHJlZml4LCBlbXB0eUNvbnRlbnQgPSBsb2NhbGUuZW1wdHlDb250ZW50LCBwYW5lbEhlYWRlciwgcGFuZWxGb290ZXIsIG9wZW4sIGRlZmF1bHRPcGVuID0gZmFsc2UsIHBvcnRhbCA9IHRydWUsIGFsbG93RGVzZWxlY3QgPSBmYWxzZSwgcGFuZWxDbGFzc05hbWUsIG9wdGlvbkNsYXNzTmFtZSwgZ3JvdXBMYWJlbENsYXNzTmFtZSwgbGlzdE1heEhlaWdodCA9IERFRkFVTFRfTUFYX0hFSUdIVCwgb2Zmc2V0LCBhbmltYXRpb24sIG9uQ2hhbmdlLCBvbk9wZW5DaGFuZ2UsIG9uU2VhcmNoQ2hhbmdlLCBvbkJsdXIsIGZpbHRlck9wdGlvbiwgcmVuZGVyT3B0aW9uLCByZW5kZXJPcHRpb25Db250ZW50LCByZW5kZXJWYWx1ZSwgcmVmLCB9ID0gcHJvcHM7XG4gICAgLy8gQmFyZS1jb250cm9sIHNpemUgZGVmYXVsdDogYW4gZXhwbGljaXQgYHNpemVgIHdpbnM7IGluc2lkZSBhIEZvcm1MYXlvdXRcbiAgICAvLyB0aGUgdmFyaWFudCdzIGNvbnRyb2xTaXplIGFwcGxpZXM7IGVsc2V3aGVyZSAnbGFyZ2UnLlxuICAgIGNvbnN0IGNvbnRleHRTaXplID0gdXNlRm9ybUNvbnRyb2xTaXplKCk7XG4gICAgY29uc3Qgc2l6ZSA9IChfYSA9IHNpemVQcm9wICE9PSBudWxsICYmIHNpemVQcm9wICE9PSB2b2lkIDAgPyBzaXplUHJvcCA6IGNvbnRleHRTaXplKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnbGFyZ2UnO1xuICAgIGNvbnN0IGRpc2FibGVkID0gZGlzYWJsZWRQcm9wIHx8IGxvYWRpbmc7XG4gICAgY29uc3QgaW50ZXJhY3RpdmUgPSAhZGlzYWJsZWQgJiYgIXJlYWRPbmx5O1xuICAgIGNvbnN0IGNsYXNzZXMgPSByb290Q2xhc3NuYW1lcyhwcmVmaXhDbHMpO1xuICAgIGNvbnN0IGF1dG9JZCA9IHVzZUlkKCk7XG4gICAgY29uc3QgdHJpZ2dlcklkID0gaWQgIT09IG51bGwgJiYgaWQgIT09IHZvaWQgMCA/IGlkIDogYXV0b0lkO1xuICAgIGNvbnN0IGxhYmVsSWQgPSB1c2VJZCgpO1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uSWQgPSB1c2VJZCgpO1xuICAgIGNvbnN0IGZlZWRiYWNrSWQgPSB1c2VJZCgpO1xuICAgIGNvbnN0IG9wdGlvbklkUHJlZml4ID0gdXNlSWQoKTtcbiAgICBjb25zdCBbaW5uZXJWYWx1ZSwgc2V0SW5uZXJWYWx1ZV0gPSB1c2VDb250cm9sbGVkU3RhdGUoZGVmYXVsdFZhbHVlICE9PSBudWxsICYmIGRlZmF1bHRWYWx1ZSAhPT0gdm9pZCAwID8gZGVmYXVsdFZhbHVlIDogKG11bHRpcGxlID8gW10gOiB1bmRlZmluZWQpLCB2YWx1ZSk7XG4gICAgY29uc3QgW2lubmVyU2VhcmNoVmFsdWUsIHNldElubmVyU2VhcmNoVmFsdWVdID0gdXNlQ29udHJvbGxlZFN0YXRlKGRlZmF1bHRTZWFyY2hWYWx1ZSwgc2VhcmNoVmFsdWUpO1xuICAgIGNvbnN0IFthY3RpdmVJbmRleCwgc2V0QWN0aXZlSW5kZXhdID0gdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3Qgbm9ybWFsaXplZFNpemUgPSBub3JtYWxpemVTaXplKHNpemUpO1xuICAgIGNvbnN0IGFsbE9wdGlvbkdyb3VwcyA9IHVzZU1lbW8oKCkgPT4gbm9ybWFsaXplT3B0aW9uR3JvdXBzKG9wdGlvbnMpLCBbb3B0aW9uc10pO1xuICAgIGNvbnN0IGFsbEZsYXRPcHRpb25zID0gdXNlTWVtbygoKSA9PiBmbGF0dGVuT3B0aW9uR3JvdXBzKGFsbE9wdGlvbkdyb3VwcyksIFthbGxPcHRpb25Hcm91cHNdKTtcbiAgICBjb25zdCB2aXNpYmxlT3B0aW9uR3JvdXBzID0gdXNlTWVtbygoKSA9PiAoc2VhcmNoYWJsZVxuICAgICAgICA/IGZpbHRlck9wdGlvbkdyb3VwcyhhbGxPcHRpb25Hcm91cHMsIGlubmVyU2VhcmNoVmFsdWUsIGZpbHRlck9wdGlvbilcbiAgICAgICAgOiBhbGxPcHRpb25Hcm91cHMpLCBbYWxsT3B0aW9uR3JvdXBzLCBmaWx0ZXJPcHRpb24sIGlubmVyU2VhcmNoVmFsdWUsIHNlYXJjaGFibGVdKTtcbiAgICBjb25zdCB2aXNpYmxlRmxhdE9wdGlvbnMgPSB1c2VNZW1vKCgpID0+IGZsYXR0ZW5PcHRpb25Hcm91cHModmlzaWJsZU9wdGlvbkdyb3VwcyksIFt2aXNpYmxlT3B0aW9uR3JvdXBzXSk7XG4gICAgY29uc3Qgc2VsZWN0ZWRPcHRpb25zID0gdXNlTWVtbygoKSA9PiBnZXRTZWxlY3RlZE9wdGlvbnMoYWxsRmxhdE9wdGlvbnMsIGlubmVyVmFsdWUsIG11bHRpcGxlKSwgW2FsbEZsYXRPcHRpb25zLCBpbm5lclZhbHVlLCBtdWx0aXBsZV0pO1xuICAgIGNvbnN0IHNlbGVjdGVkSW5kZXggPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgaWYgKHNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1hdGNoZWRJbmRleCA9IHZpc2libGVGbGF0T3B0aW9ucy5maW5kSW5kZXgoKG9wdGlvbikgPT4gb3B0aW9uLnZhbHVlID09PSBzZWxlY3RlZE9wdGlvbnNbMF0udmFsdWUpO1xuICAgICAgICByZXR1cm4gbWF0Y2hlZEluZGV4ID49IDAgPyBtYXRjaGVkSW5kZXggOiBudWxsO1xuICAgIH0sIFtzZWxlY3RlZE9wdGlvbnMsIHZpc2libGVGbGF0T3B0aW9uc10pO1xuICAgIGNvbnN0IGhhc1NlbGVjdGlvbiA9IHNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPiAwO1xuICAgIGNvbnN0IGxpc3RSZWYgPSB1c2VSZWYoW10pO1xuICAgIGNvbnN0IGxpc3RDb250ZW50UmVmID0gdXNlUmVmKFtdKTtcbiAgICBjb25zdCBmbG9hdGluZ1JlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCB0cmlnZ2VyUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHNlYXJjaElucHV0UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGhhbmRsZVRyaWdnZXJSZWYgPSB1c2VFdmVudENhbGxiYWNrKChub2RlKSA9PiB7XG4gICAgICAgIHRyaWdnZXJSZWYuY3VycmVudCA9IG5vZGU7XG4gICAgICAgIGlmIChyZWYpIHtcbiAgICAgICAgICAgIHJlZi5jdXJyZW50ID0gbm9kZTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IHsgaXNPcGVuOiBpbm5lck9wZW4sIHNldE9wZW46IGhhbmRsZU9wZW5DaGFuZ2UsIHJlZnMsIGNvbnRleHQsIGZsb2F0aW5nU3R5bGVzLCB0cmFuc2l0aW9uU3R5bGVzLCBpc01vdW50ZWQsIGJhc2VJbnRlcmFjdGlvbnMsIH0gPSB1c2VTZWxlY3RTaGVsbCh7XG4gICAgICAgIG9wZW4sXG4gICAgICAgIGRlZmF1bHRPcGVuLFxuICAgICAgICBvbk9wZW5DaGFuZ2UsXG4gICAgICAgIGRpc2FibGVkLFxuICAgICAgICByZWFkT25seSxcbiAgICAgICAgbGlzdE1heEhlaWdodCxcbiAgICAgICAgYW5pbWF0aW9uLFxuICAgICAgICBvZmZzZXQsXG4gICAgfSk7XG4gICAgY29uc3Qgc2V0UmVmZXJlbmNlID0gdXNlRXZlbnRDYWxsYmFjaygobm9kZSkgPT4ge1xuICAgICAgICByZWZzLnNldFJlZmVyZW5jZShub2RlKTtcbiAgICAgICAgaGFuZGxlVHJpZ2dlclJlZihub2RlKTtcbiAgICB9KTtcbiAgICBjb25zdCBzZXRGbG9hdGluZyA9IHVzZUV2ZW50Q2FsbGJhY2soKG5vZGUpID0+IHtcbiAgICAgICAgcmVmcy5zZXRGbG9hdGluZyhub2RlKTtcbiAgICAgICAgZmxvYXRpbmdSZWYuY3VycmVudCA9IG5vZGU7XG4gICAgfSk7XG4gICAgY29uc3QgbGlzdE5hdmlnYXRpb24gPSB1c2VMaXN0TmF2aWdhdGlvbihjb250ZXh0LCB7XG4gICAgICAgIGxpc3RSZWYsXG4gICAgICAgIGFjdGl2ZUluZGV4LFxuICAgICAgICBzZWxlY3RlZEluZGV4LFxuICAgICAgICBvbk5hdmlnYXRlOiBzZXRBY3RpdmVJbmRleCxcbiAgICAgICAgZW5hYmxlZDogaW5uZXJPcGVuLFxuICAgICAgICBsb29wOiB0cnVlLFxuICAgICAgICB2aXJ0dWFsOiBzZWFyY2hhYmxlLFxuICAgIH0pO1xuICAgIGNvbnN0IHR5cGVhaGVhZCA9IHVzZVR5cGVhaGVhZChjb250ZXh0LCB7XG4gICAgICAgIGxpc3RSZWY6IGxpc3RDb250ZW50UmVmLFxuICAgICAgICBhY3RpdmVJbmRleCxcbiAgICAgICAgc2VsZWN0ZWRJbmRleCxcbiAgICAgICAgZW5hYmxlZDogaW5uZXJPcGVuICYmICFzZWFyY2hhYmxlLFxuICAgICAgICBvbk1hdGNoOiBzZXRBY3RpdmVJbmRleCxcbiAgICB9KTtcbiAgICBjb25zdCB7IGdldFJlZmVyZW5jZVByb3BzLCBnZXRGbG9hdGluZ1Byb3BzLCBnZXRJdGVtUHJvcHMgfSA9IHVzZUludGVyYWN0aW9ucyhbXG4gICAgICAgIC4uLmJhc2VJbnRlcmFjdGlvbnMsXG4gICAgICAgIGxpc3ROYXZpZ2F0aW9uLFxuICAgICAgICB0eXBlYWhlYWQsXG4gICAgXSk7XG4gICAgY29uc3QgZmlyc3RFbmFibGVkSW5kZXggPSB1c2VNZW1vKCgpID0+IHZpc2libGVGbGF0T3B0aW9ucy5maW5kSW5kZXgoKG9wdGlvbikgPT4gIW9wdGlvbi5kaXNhYmxlZCksIFt2aXNpYmxlRmxhdE9wdGlvbnNdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoIWlubmVyT3Blbikge1xuICAgICAgICAgICAgc2V0QWN0aXZlSW5kZXgoc2VsZWN0ZWRJbmRleCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc2V0QWN0aXZlSW5kZXgoKHByZXYpID0+IHtcbiAgICAgICAgICAgIGlmIChwcmV2ICE9PSBudWxsICYmIHZpc2libGVGbGF0T3B0aW9uc1twcmV2XSAmJiAhdmlzaWJsZUZsYXRPcHRpb25zW3ByZXZdLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByZXY7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRJbmRleCAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgIHZpc2libGVGbGF0T3B0aW9uc1tzZWxlY3RlZEluZGV4XSAmJlxuICAgICAgICAgICAgICAgICF2aXNpYmxlRmxhdE9wdGlvbnNbc2VsZWN0ZWRJbmRleF0uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRJbmRleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmaXJzdEVuYWJsZWRJbmRleCA+PSAwID8gZmlyc3RFbmFibGVkSW5kZXggOiBudWxsO1xuICAgICAgICB9KTtcbiAgICB9LCBbZmlyc3RFbmFibGVkSW5kZXgsIGlubmVyT3Blbiwgc2VsZWN0ZWRJbmRleCwgdmlzaWJsZUZsYXRPcHRpb25zXSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoIWlubmVyT3BlbiB8fCBhY3RpdmVJbmRleCA9PT0gbnVsbCB8fCBzZWFyY2hhYmxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgKF9hID0gbGlzdFJlZi5jdXJyZW50W2FjdGl2ZUluZGV4XSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICB9LCBbYWN0aXZlSW5kZXgsIGlubmVyT3Blbiwgc2VhcmNoYWJsZV0pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGxpc3RSZWYuY3VycmVudCA9IGxpc3RSZWYuY3VycmVudC5zbGljZSgwLCB2aXNpYmxlRmxhdE9wdGlvbnMubGVuZ3RoKTtcbiAgICAgICAgbGlzdENvbnRlbnRSZWYuY3VycmVudCA9IGxpc3RDb250ZW50UmVmLmN1cnJlbnQuc2xpY2UoMCwgdmlzaWJsZUZsYXRPcHRpb25zLmxlbmd0aCk7XG4gICAgfSwgW3Zpc2libGVGbGF0T3B0aW9ucy5sZW5ndGhdKTtcbiAgICBjb25zdCBzZXRTZWFyY2hJbnB1dFJlZiA9IHVzZUV2ZW50Q2FsbGJhY2soKG5vZGUpID0+IHtcbiAgICAgICAgc2VhcmNoSW5wdXRSZWYuY3VycmVudCA9IG5vZGU7XG4gICAgICAgIGlmIChub2RlICYmIGlubmVyT3BlbiAmJiBmaWx0ZXJJbnB1dEF1dG9Gb2N1cykge1xuICAgICAgICAgICAgbm9kZS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBub3RpZnlCbHVySWZPdXRzaWRlID0gdXNlRXZlbnRDYWxsYmFjaygocmVsYXRlZFRhcmdldCwgZXZlbnQpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgY29uc3QgbmV4dFRhcmdldCA9IHJlbGF0ZWRUYXJnZXQ7XG4gICAgICAgIGNvbnN0IHdpdGhpblRyaWdnZXIgPSAhIShuZXh0VGFyZ2V0ICYmICgoX2EgPSB0cmlnZ2VyUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jb250YWlucyhuZXh0VGFyZ2V0KSkpO1xuICAgICAgICBjb25zdCB3aXRoaW5GbG9hdGluZyA9ICEhKG5leHRUYXJnZXQgJiYgKChfYiA9IGZsb2F0aW5nUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jb250YWlucyhuZXh0VGFyZ2V0KSkpO1xuICAgICAgICBpZiAoIXdpdGhpblRyaWdnZXIgJiYgIXdpdGhpbkZsb2F0aW5nKSB7XG4gICAgICAgICAgICBvbkJsdXIgPT09IG51bGwgfHwgb25CbHVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkJsdXIoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlVHJpZ2dlckJsdXIgPSB1c2VFdmVudENhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICBub3RpZnlCbHVySWZPdXRzaWRlKGV2ZW50LnJlbGF0ZWRUYXJnZXQsIGV2ZW50KTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVPcHRpb25CbHVyID0gdXNlRXZlbnRDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgbm90aWZ5Qmx1cklmT3V0c2lkZShldmVudC5yZWxhdGVkVGFyZ2V0LCBldmVudCk7XG4gICAgfSk7XG4gICAgY29uc3QgY29tbWl0Q2hhbmdlID0gdXNlRXZlbnRDYWxsYmFjaygobmV4dFZhbHVlLCBuZXh0T3B0aW9uKSA9PiB7XG4gICAgICAgIHNldElubmVyVmFsdWUobmV4dFZhbHVlKTtcbiAgICAgICAgb25DaGFuZ2UgPT09IG51bGwgfHwgb25DaGFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2hhbmdlKG5leHRWYWx1ZSwgbmV4dE9wdGlvbiwgbmFtZSk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlU2VsZWN0T3B0aW9uID0gdXNlRXZlbnRDYWxsYmFjaygob3B0aW9uKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIGlmIChvcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobXVsdGlwbGUpIHtcbiAgICAgICAgICAgIGNvbnN0IG5leHRWYWx1ZSA9IHRvZ2dsZU11bHRpcGxlVmFsdWUoaW5uZXJWYWx1ZSwgb3B0aW9uLnZhbHVlKTtcbiAgICAgICAgICAgIGNvbnN0IG5leHRPcHRpb25zID0gZ2V0T3B0aW9uc0J5VmFsdWVzKGFsbEZsYXRPcHRpb25zLCBuZXh0VmFsdWUpO1xuICAgICAgICAgICAgY29tbWl0Q2hhbmdlKG5leHRWYWx1ZSwgbmV4dE9wdGlvbnMpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhbGxvd0Rlc2VsZWN0ICYmIGlubmVyVmFsdWUgPT09IG9wdGlvbi52YWx1ZSkge1xuICAgICAgICAgICAgY29tbWl0Q2hhbmdlKHVuZGVmaW5lZCwgdW5kZWZpbmVkKTtcbiAgICAgICAgICAgIGhhbmRsZU9wZW5DaGFuZ2UoZmFsc2UpO1xuICAgICAgICAgICAgb25CbHVyID09PSBudWxsIHx8IG9uQmx1ciA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25CbHVyKCk7XG4gICAgICAgICAgICAoX2EgPSB0cmlnZ2VyUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29tbWl0Q2hhbmdlKG9wdGlvbi52YWx1ZSwgb3B0aW9uKTtcbiAgICAgICAgaGFuZGxlT3BlbkNoYW5nZShmYWxzZSk7XG4gICAgICAgIG9uQmx1ciA9PT0gbnVsbCB8fCBvbkJsdXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQmx1cigpO1xuICAgICAgICAoX2IgPSB0cmlnZ2VyUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlUmVtb3ZlU2VsZWN0ZWRWYWx1ZSA9IHVzZUV2ZW50Q2FsbGJhY2soKG9wdGlvblZhbHVlKSA9PiB7XG4gICAgICAgIGlmICghbXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWdldE11bHRpcGxlVmFsdWUoaW5uZXJWYWx1ZSkuaW5jbHVkZXMob3B0aW9uVmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV4dFZhbHVlID0gcmVtb3ZlTXVsdGlwbGVWYWx1ZShpbm5lclZhbHVlLCBvcHRpb25WYWx1ZSk7XG4gICAgICAgIGNvbnN0IG5leHRPcHRpb25zID0gZ2V0T3B0aW9uc0J5VmFsdWVzKGFsbEZsYXRPcHRpb25zLCBuZXh0VmFsdWUpO1xuICAgICAgICBjb21taXRDaGFuZ2UobmV4dFZhbHVlLCBuZXh0T3B0aW9ucyk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlVHJpZ2dlcktleURvd24gPSB1c2VFdmVudENhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICBpZiAoIWludGVyYWN0aXZlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gS0VZQk9BUkQuRU5URVIgfHwgZXZlbnQua2V5ID09PSBLRVlCT0FSRC5TUEFDRSkge1xuICAgICAgICAgICAgaWYgKGlubmVyT3BlbiAmJlxuICAgICAgICAgICAgICAgIGFjdGl2ZUluZGV4ICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgdmlzaWJsZUZsYXRPcHRpb25zW2FjdGl2ZUluZGV4XSAmJlxuICAgICAgICAgICAgICAgICF2aXNpYmxlRmxhdE9wdGlvbnNbYWN0aXZlSW5kZXhdLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RPcHRpb24odmlzaWJsZUZsYXRPcHRpb25zW2FjdGl2ZUluZGV4XSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGhhbmRsZU9wZW5DaGFuZ2UoIWlubmVyT3Blbik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gS0VZQk9BUkQuQVJST1dfRE9XTiB8fCBldmVudC5rZXkgPT09IEtFWUJPQVJELkFSUk9XX1VQKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgaWYgKCFpbm5lck9wZW4pIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVPcGVuQ2hhbmdlKHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlSXRlbU1vdXNlRW50ZXIgPSB1c2VFdmVudENhbGxiYWNrKChpbmRleCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmICghKChfYSA9IHZpc2libGVGbGF0T3B0aW9uc1tpbmRleF0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5kaXNhYmxlZCkpIHtcbiAgICAgICAgICAgIHNldEFjdGl2ZUluZGV4KGluZGV4KTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVRhZ1JlbW92ZU1vdXNlRG93biA9IHVzZUV2ZW50Q2FsbGJhY2soKGV2ZW50KSA9PiB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVRhZ1JlbW92ZUNsaWNrID0gdXNlRXZlbnRDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlU2VhcmNoQmx1ciA9IHVzZUV2ZW50Q2FsbGJhY2soKGV2ZW50KSA9PiB7XG4gICAgICAgIG5vdGlmeUJsdXJJZk91dHNpZGUoZXZlbnQucmVsYXRlZFRhcmdldCwgZXZlbnQpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVNlYXJjaENoYW5nZSA9IHVzZUV2ZW50Q2FsbGJhY2soKG5leHRWYWx1ZSkgPT4ge1xuICAgICAgICBzZXRJbm5lclNlYXJjaFZhbHVlKG5leHRWYWx1ZSk7XG4gICAgICAgIG9uU2VhcmNoQ2hhbmdlID09PSBudWxsIHx8IG9uU2VhcmNoQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblNlYXJjaENoYW5nZShuZXh0VmFsdWUpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVNlYXJjaENsZWFyID0gdXNlRXZlbnRDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaGFuZGxlU2VhcmNoQ2hhbmdlKCcnKTtcbiAgICAgICAgKF9hID0gc2VhcmNoSW5wdXRSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICB9KTtcbiAgICBjb25zdCBmaW5kRW5hYmxlZEluZGV4ID0gdXNlRXZlbnRDYWxsYmFjaygoY3VycmVudCwgZGlyZWN0aW9uKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gdmlzaWJsZUZsYXRPcHRpb25zLmxlbmd0aDtcbiAgICAgICAgaWYgKGxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3RhcnQgPSBjdXJyZW50ICE9PSBudWxsICYmIGN1cnJlbnQgIT09IHZvaWQgMCA/IGN1cnJlbnQgOiAoZGlyZWN0aW9uID09PSAxID8gLTEgOiBsZW5ndGgpO1xuICAgICAgICBmb3IgKGxldCBzdGVwID0gMTsgc3RlcCA8PSBsZW5ndGg7IHN0ZXAgKz0gMSkge1xuICAgICAgICAgICAgY29uc3QgY2FuZGlkYXRlID0gKChzdGFydCArIGRpcmVjdGlvbiAqIHN0ZXApICUgbGVuZ3RoICsgbGVuZ3RoKSAlIGxlbmd0aDtcbiAgICAgICAgICAgIGlmICghKChfYSA9IHZpc2libGVGbGF0T3B0aW9uc1tjYW5kaWRhdGVdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZGlzYWJsZWQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVTZWFyY2hLZXlEb3duID0gdXNlRXZlbnRDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSBLRVlCT0FSRC5BUlJPV19ET1dOKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgY29uc3QgbmV4dCA9IGZpbmRFbmFibGVkSW5kZXgoYWN0aXZlSW5kZXgsIDEpO1xuICAgICAgICAgICAgaWYgKG5leHQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBzZXRBY3RpdmVJbmRleChuZXh0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSBLRVlCT0FSRC5BUlJPV19VUCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGNvbnN0IHByZXYgPSBmaW5kRW5hYmxlZEluZGV4KGFjdGl2ZUluZGV4LCAtMSk7XG4gICAgICAgICAgICBpZiAocHJldiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHNldEFjdGl2ZUluZGV4KHByZXYpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09IEtFWUJPQVJELkVOVEVSKSB7XG4gICAgICAgICAgICBpZiAoYWN0aXZlSW5kZXggIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICB2aXNpYmxlRmxhdE9wdGlvbnNbYWN0aXZlSW5kZXhdICYmXG4gICAgICAgICAgICAgICAgIXZpc2libGVGbGF0T3B0aW9uc1thY3RpdmVJbmRleF0uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdE9wdGlvbih2aXNpYmxlRmxhdE9wdGlvbnNbYWN0aXZlSW5kZXhdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSBLRVlCT0FSRC5FU0NBUEUpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBoYW5kbGVPcGVuQ2hhbmdlKGZhbHNlKTtcbiAgICAgICAgICAgIChfYSA9IHRyaWdnZXJSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IHJlbmRlclZhbHVlTWV0YSA9IHtcbiAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgIHJlYWRPbmx5LFxuICAgICAgICBtdWx0aXBsZSxcbiAgICAgICAgbWF4VmlzaWJsZVZhbHVlcyxcbiAgICAgICAgb3BlbjogaW5uZXJPcGVuLFxuICAgICAgICBwbGFjZWhvbGRlcjogIWhhc1NlbGVjdGlvbixcbiAgICAgICAgc2VsZWN0ZWRPcHRpb25zLFxuICAgICAgICBzaXplOiBub3JtYWxpemVkU2l6ZSxcbiAgICAgICAgZm9udFNpemU6IGdldEZvbnRTaXplKG5vcm1hbGl6ZWRTaXplKSxcbiAgICB9O1xuICAgIGNvbnN0IHZhbHVlTGFiZWxDbGFzcyA9IGhhc1NlbGVjdGlvbiA/ICd2YWx1ZScgOiAncGxhY2Vob2xkZXInO1xuICAgIGNvbnN0IGlzTXVsdGlwbGVWYWx1ZUZpbGxlZCA9IChtdWx0aXBsZSAmJlxuICAgICAgICBoYXNTZWxlY3Rpb24gJiZcbiAgICAgICAgbWF4VmlzaWJsZVZhbHVlcyA9PT0gdW5kZWZpbmVkICYmXG4gICAgICAgIC8vIEEgY3VzdG9tIGByZW5kZXJWYWx1ZWAgcHJvZHVjZXMgaXRzIG93biBzaW5nbGUtbGluZSBzdW1tYXJ5LCBzbyB0aGVcbiAgICAgICAgLy8gbXVsdGktdmFsdWUgY2hpcCBsYXlvdXQgKGhlaWdodDphdXRvICsgdmVydGljYWwgcGFkZGluZyArIGZsZXgtd3JhcClcbiAgICAgICAgLy8gbXVzdCBub3Qga2ljayBpbiBhbmQgaW5mbGF0ZSB0aGUgdHJpZ2dlciBoZWlnaHQuXG4gICAgICAgICFyZW5kZXJWYWx1ZSk7XG4gICAgY29uc3QgdHJpZ2dlckNsYXNzTmFtZSA9IGNsYXNzZXMoJ3RyaWdnZXInLCBqb2luQ2xzKGNsYXNzZXMoYHRyaWdnZXItJHtub3JtYWxpemVkU2l6ZX1gKSwgY2xhc3NlcyhgdHJpZ2dlci0ke3ZhcmlhbnR9YCksIGlubmVyT3BlbiAmJiBjbGFzc2VzKCd0cmlnZ2VyLW9wZW4nKSwgaXNNdWx0aXBsZVZhbHVlRmlsbGVkICYmIGNsYXNzZXMoJ3RyaWdnZXItbXVsdGlwbGUtZmlsbGVkJyksIGhhc1NlbGVjdGlvbiA/IGNsYXNzZXMoJ3RyaWdnZXItZmlsbGVkJykgOiBjbGFzc2VzKCd0cmlnZ2VyLXBsYWNlaG9sZGVyJyksIHN0YXR1cyAhPT0gJ2RlZmF1bHQnICYmIGNsYXNzZXMoYHRyaWdnZXItJHtzdGF0dXN9YCksIGRpc2FibGVkICYmIGNsYXNzZXMoJ3RyaWdnZXItZGlzYWJsZWQnKSwgcmVhZE9ubHkgJiYgIWRpc2FibGVkICYmIGNsYXNzZXMoJ3RyaWdnZXItcmVhZG9ubHknKSkpO1xuICAgIGNvbnN0IGljb25TaXplID0gbm9ybWFsaXplZFNpemUgPT09ICdsYXJnZScgPyAyMCA6IDE2O1xuICAgIGNvbnN0IGFjdGl2ZU9wdGlvbklkID0gc2VhcmNoYWJsZSAmJiBpbm5lck9wZW4gJiYgYWN0aXZlSW5kZXggIT09IG51bGxcbiAgICAgICAgPyBgJHtvcHRpb25JZFByZWZpeH0tJHthY3RpdmVJbmRleH1gXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IGZsb2F0aW5nQXJpYUxhYmVsbGVkQnkgPSBhcmlhTGFiZWxsZWRCeSAhPT0gbnVsbCAmJiBhcmlhTGFiZWxsZWRCeSAhPT0gdm9pZCAwID8gYXJpYUxhYmVsbGVkQnkgOiAobGFiZWwgPyBsYWJlbElkIDogdW5kZWZpbmVkKTtcbiAgICBjb25zdCBkZXNjcmliZWRCeUlkcyA9IFtcbiAgICAgICAgZGVzY3JpcHRpb24gPyBkZXNjcmlwdGlvbklkIDogbnVsbCxcbiAgICAgICAgZmVlZGJhY2sgPyBmZWVkYmFja0lkIDogbnVsbCxcbiAgICBdLmZpbHRlcihCb29sZWFuKS5qb2luKCcgJykgfHwgdW5kZWZpbmVkO1xuICAgIHJldHVybiAoX2pzeHMoU2VsZWN0RmllbGRTaGVsbCwgeyBjbGFzc2VzOiBjbGFzc2VzLCBjbGFzc05hbWU6IGNsYXNzTmFtZSwgc2l6ZTogbm9ybWFsaXplZFNpemUsIHZhcmlhbnQ6IHZhcmlhbnQsIHN0YXR1czogc3RhdHVzLCBkaXNhYmxlZDogZGlzYWJsZWQsIHJlYWRPbmx5OiByZWFkT25seSwgbG9hZGluZzogbG9hZGluZywgbGFiZWw6IGxhYmVsLCBsYWJlbENsYXNzTmFtZTogbGFiZWxDbGFzc05hbWUsIGluZm86IGluZm8sIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiwgZmVlZGJhY2s6IGZlZWRiYWNrLCByZXF1aXJlZDogcmVxdWlyZWQsIGxhYmVsSWQ6IGxhYmVsSWQsIGRlc2NyaXB0aW9uSWQ6IGRlc2NyaXB0aW9uSWQsIGZlZWRiYWNrSWQ6IGZlZWRiYWNrSWQsIGNoaWxkcmVuOiBbX2pzeHMoXCJidXR0b25cIiwgT2JqZWN0LmFzc2lnbih7fSwgZ2V0UmVmZXJlbmNlUHJvcHMoe1xuICAgICAgICAgICAgICAgIHJlZjogc2V0UmVmZXJlbmNlLFxuICAgICAgICAgICAgICAgIGlkOiB0cmlnZ2VySWQsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAnYXJpYS1yZWFkb25seSc6IHJlYWRPbmx5IHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6IHRyaWdnZXJDbGFzc05hbWUsXG4gICAgICAgICAgICAgICAgb25LZXlEb3duOiBoYW5kbGVUcmlnZ2VyS2V5RG93bixcbiAgICAgICAgICAgICAgICBvbkJsdXI6IGhhbmRsZVRyaWdnZXJCbHVyLFxuICAgICAgICAgICAgICAgICdhcmlhLWxhYmVsJzogYXJpYUxhYmVsLFxuICAgICAgICAgICAgICAgICdhcmlhLWxhYmVsbGVkYnknOiBmbG9hdGluZ0FyaWFMYWJlbGxlZEJ5LFxuICAgICAgICAgICAgICAgICdhcmlhLWRlc2NyaWJlZGJ5JzogZGVzY3JpYmVkQnlJZHMsXG4gICAgICAgICAgICB9KSwgeyBjaGlsZHJlbjogW19qc3hzKFwic3BhblwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnY29udGVudCcpLCBjaGlsZHJlbjogW3ByZWZpeCAmJiBfanN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygncHJlZml4JyksIGNoaWxkcmVuOiBwcmVmaXggfSksIF9qc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKHZhbHVlTGFiZWxDbGFzcywgam9pbkNscyhjbGFzc2VzKGAke3ZhbHVlTGFiZWxDbGFzc30tJHtub3JtYWxpemVkU2l6ZX1gKSwgaXNNdWx0aXBsZVZhbHVlRmlsbGVkICYmIGNsYXNzZXMoYCR7dmFsdWVMYWJlbENsYXNzfS1tdWx0aXBsZWApLCBkaXNhYmxlZCAmJiBjbGFzc2VzKGAke3ZhbHVlTGFiZWxDbGFzc30tZGlzYWJsZWRgKSkpLCBjaGlsZHJlbjogX2pzeChTZWxlY3RWYWx1ZUNvbnRlbnQsIHsgY2xhc3NlczogY2xhc3NlcywgaGFzU2VsZWN0aW9uOiBoYXNTZWxlY3Rpb24sIG11bHRpcGxlOiBtdWx0aXBsZSwgcGxhY2Vob2xkZXI6IHBsYWNlaG9sZGVyLCByZW5kZXJWYWx1ZTogcmVuZGVyVmFsdWUsIHJlbmRlclZhbHVlTWV0YTogcmVuZGVyVmFsdWVNZXRhLCBzZWxlY3RlZE9wdGlvbnM6IHNlbGVjdGVkT3B0aW9ucywgbWF4VmlzaWJsZVZhbHVlczogbWF4VmlzaWJsZVZhbHVlcywgb25SZW1vdmU6IGhhbmRsZVJlbW92ZVNlbGVjdGVkVmFsdWUsIG9uUmVtb3ZlQ2xpY2s6IGhhbmRsZVRhZ1JlbW92ZUNsaWNrLCBvblJlbW92ZU1vdXNlRG93bjogaGFuZGxlVGFnUmVtb3ZlTW91c2VEb3duIH0pIH0pXSB9KSwgX2pzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2ljb24nKSwgY2hpbGRyZW46IGxvYWRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IF9qc3goU3Bpbm5lciwgeyBzaXplOiBpY29uU2l6ZSwgc3Ryb2tlV2lkdGg6IDIgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHJlYWRPbmx5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9qc3goSWNvbnMsIHsgbmFtZTogaW5uZXJPcGVuID8gJ2NoZXZyb25VcCcgOiAnY2hldnJvbkRvd24nLCBzaXplOiBpY29uU2l6ZSwgY29sb3I6IFwiY3VycmVudENvbG9yXCIgfSkgfSldIH0pKSwgaXNNb3VudGVkICYmIGludGVyYWN0aXZlICYmICgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFuZWxOb2RlID0gKF9qc3goRmxvYXRpbmdGb2N1c01hbmFnZXIsIHsgY29udGV4dDogY29udGV4dCwgbW9kYWw6IGZhbHNlLCBpbml0aWFsRm9jdXM6IC0xLCByZXR1cm5Gb2N1czogZmFsc2UsIGNoaWxkcmVuOiBfanN4cyhcImRpdlwiLCBPYmplY3QuYXNzaWduKHt9LCBnZXRGbG9hdGluZ1Byb3BzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZjogc2V0RmxvYXRpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IGpvaW5DbHMoY2xhc3NlcygncGFuZWwnKSwgcGFuZWxDbGFzc05hbWUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgZmxvYXRpbmdTdHlsZXMpLCB0cmFuc2l0aW9uU3R5bGVzKSxcbiAgICAgICAgICAgICAgICAgICAgfSksIHsgY2hpbGRyZW46IFtzZWFyY2hhYmxlICYmIChfanN4KFNlbGVjdFNlYXJjaENvbnRyb2wsIHsgcmVmOiBzZXRTZWFyY2hJbnB1dFJlZiwgY2xhc3NlczogY2xhc3NlcywgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNpemU9e25vcm1hbGl6ZWRTaXplfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplOiBcInNtYWxsXCIsIHBsYWNlaG9sZGVyOiBzZWFyY2hQbGFjZWhvbGRlciwgdmFsdWU6IGlubmVyU2VhcmNoVmFsdWUsIGFjdGl2ZURlc2NlbmRhbnQ6IGFjdGl2ZU9wdGlvbklkLCBvbkJsdXI6IGhhbmRsZVNlYXJjaEJsdXIsIG9uQ2hhbmdlOiBoYW5kbGVTZWFyY2hDaGFuZ2UsIG9uQ2xlYXI6IGhhbmRsZVNlYXJjaENsZWFyLCBvbktleURvd246IGhhbmRsZVNlYXJjaEtleURvd24gfSkpLCBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygncGFuZWwtYm9keScpLCBjaGlsZHJlbjogW3BhbmVsSGVhZGVyICE9IG51bGwgJiYgKF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3BhbmVsLWhlYWRlcicpLCBjaGlsZHJlbjogcGFuZWxIZWFkZXIgfSkpLCB2aXNpYmxlRmxhdE9wdGlvbnMubGVuZ3RoID09PSAwID8gKF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2VtcHR5JyksIGNoaWxkcmVuOiBfanN4KFR5cG9ncmFwaHlCb2R5LCB7IHNpemU6IFNFTEVDVF9UWVBPR1JBUEhZLmVtcHR5LnNpemUsIGNvbG9yOiBTRUxFQ1RfVFlQT0dSQVBIWS5lbXB0eS5jb2xvciwgY2hpbGRyZW46IGVtcHR5Q29udGVudCB9KSB9KSkgOiAoKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZmxhdEluZGV4ID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmlzaWJsZU9wdGlvbkdyb3Vwcy5tYXAoKGdyb3VwKSA9PiAoX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2dyb3VwJyksIGNoaWxkcmVuOiBbZ3JvdXAubGFiZWwgJiYgKF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2dyb3VwLWxhYmVsJywgZ3JvdXBMYWJlbENsYXNzTmFtZSksIGNoaWxkcmVuOiBfanN4KFR5cG9ncmFwaHlMYWJlbCwgeyBzaXplOiBTRUxFQ1RfVFlQT0dSQVBIWS5ncm91cExhYmVsLnNpemUsIHN0cm9uZzogdHJ1ZSwgY2hpbGRyZW46IGdyb3VwLmxhYmVsIH0pIH0pKSwgZ3JvdXAub3B0aW9ucy5tYXAoKG9wdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbkZsYXRJbmRleCA9IGZsYXRJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGF0SW5kZXggKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZCA9IGlzT3B0aW9uU2VsZWN0ZWQoaW5uZXJWYWx1ZSwgbXVsdGlwbGUsIG9wdGlvbi52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWN0aXZlID0gYWN0aXZlSW5kZXggPT09IG9wdGlvbkZsYXRJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25NZXRhID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiAhIW9wdGlvbi5kaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IG9wdGlvbkZsYXRJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW46IGlubmVyT3BlbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBnZXRGb250U2l6ZShub3JtYWxpemVkU2l6ZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0Q29udGVudFJlZi5jdXJyZW50W29wdGlvbkZsYXRJbmRleF0gPSBleHRyYWN0T3B0aW9uVGV4dChvcHRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoX2pzeChcImJ1dHRvblwiLCBPYmplY3QuYXNzaWduKHt9LCBnZXRJdGVtUHJvcHMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWYobm9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdFJlZi5jdXJyZW50W29wdGlvbkZsYXRJbmRleF0gPSBub2RlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogYCR7b3B0aW9uSWRQcmVmaXh9LSR7b3B0aW9uRmxhdEluZGV4fWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlOiAnb3B0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBjbGFzc2VzKCdvcHRpb24nLCBqb2luQ2xzKGFjdGl2ZSAmJiBjbGFzc2VzKCdvcHRpb24tYWN0aXZlJyksIHNlbGVjdGVkICYmIGNsYXNzZXMoJ29wdGlvbi1zZWxlY3RlZCcpLCBvcHRpb24uZGlzYWJsZWQgJiYgY2xhc3Nlcygnb3B0aW9uLWRpc2FibGVkJyksIG9wdGlvbkNsYXNzTmFtZSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogb3B0aW9uLmRpc2FibGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXJpYS1zZWxlY3RlZCc6IHNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrOiAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RPcHRpb24ob3B0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUVudGVyOiAoKSA9PiBoYW5kbGVJdGVtTW91c2VFbnRlcihvcHRpb25GbGF0SW5kZXgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6IGhhbmRsZU9wdGlvbkJsdXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHsgY2hpbGRyZW46IHJlbmRlck9wdGlvbiA/IChyZW5kZXJPcHRpb24ob3B0aW9uLCBvcHRpb25NZXRhKSkgOiAoX2pzeChTZWxlY3RPcHRpb25Db250ZW50LCB7IGNsYXNzZXM6IGNsYXNzZXMsIG9wdGlvbjogb3B0aW9uLCBzZWxlY3RlZDogc2VsZWN0ZWQsIHNpemU6IG5vcm1hbGl6ZWRTaXplLCBjb250ZW50OiByZW5kZXJPcHRpb25Db250ZW50ID09PSBudWxsIHx8IHJlbmRlck9wdGlvbkNvbnRlbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlbmRlck9wdGlvbkNvbnRlbnQob3B0aW9uLCBvcHRpb25NZXRhKSB9KSkgfSksIGAke2dyb3VwLmtleX0tJHtvcHRpb24udmFsdWV9YCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSldIH0sIGdyb3VwLmtleSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKCkpXSB9KSwgcGFuZWxGb290ZXIgIT0gbnVsbCAmJiAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygncGFuZWwtZm9vdGVyJyksIGNoaWxkcmVuOiBwYW5lbEZvb3RlciB9KSldIH0pKSB9KSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBvcnRhbCA/IF9qc3goRmxvYXRpbmdQb3J0YWwsIHsgY2hpbGRyZW46IHBhbmVsTm9kZSB9KSA6IHBhbmVsTm9kZTtcbiAgICAgICAgICAgIH0pKCldIH0pKTtcbn07XG5TZWxlY3QuZGlzcGxheU5hbWUgPSAnU2VsZWN0JztcbmV4cG9ydCBkZWZhdWx0IG1lbW8oU2VsZWN0KTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
598
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC50c3giXSwibmFtZXMiOlsianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZsb2F0aW5nRm9jdXNNYW5hZ2VyIiwiRmxvYXRpbmdQb3J0YWwiLCJ1c2VJbnRlcmFjdGlvbnMiLCJ1c2VMaXN0TmF2aWdhdGlvbiIsInVzZVR5cGVhaGVhZCIsIm1lbW8iLCJ1c2VFZmZlY3QiLCJ1c2VJZCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZUNvbnRyb2xsZWRTdGF0ZSIsInVzZUV2ZW50Q2FsbGJhY2siLCJ1c2VMb2NhbGUiLCJ1c2VGb3JtQ29udHJvbFNpemUiLCJJY29ucyIsIlNwaW5uZXIiLCJUeXBvZ3JhcGh5Qm9keSIsIlR5cG9ncmFwaHlMYWJlbCIsImpvaW5DbHMiLCJkZWZhdWx0Iiwicm9vdENsYXNzbmFtZXMiLCJTZWxlY3RGaWVsZFNoZWxsIiwiU2VsZWN0T3B0aW9uQ29udGVudCIsIlNlbGVjdFNlYXJjaENvbnRyb2wiLCJTZWxlY3RWYWx1ZUNvbnRlbnQiLCJ1c2VTZWxlY3RTaGVsbCIsIktFWUJPQVJEIiwiU0VMRUNUX1RZUE9HUkFQSFkiLCJleHRyYWN0T3B0aW9uVGV4dCIsImZpbHRlck9wdGlvbkdyb3VwcyIsImZsYXR0ZW5PcHRpb25Hcm91cHMiLCJnZXRNdWx0aXBsZVZhbHVlIiwiZ2V0Rm9udFNpemUiLCJnZXRPcHRpb25zQnlWYWx1ZXMiLCJnZXRTZWxlY3RlZE9wdGlvbnMiLCJpc09wdGlvblNlbGVjdGVkIiwiaXNTZWxlY3RNdWx0aXBsZVZhbHVlIiwibm9ybWFsaXplU2l6ZSIsIm5vcm1hbGl6ZU9wdGlvbkdyb3VwcyIsInJlbW92ZU11bHRpcGxlVmFsdWUiLCJ0b2dnbGVNdWx0aXBsZVZhbHVlIiwiREVGQVVMVF9NQVhfSEVJR0hUIiwiU2VsZWN0IiwicHJvcHMiLCJfYSIsImxvY2FsZSIsIl9wcm9wcyRjbGFzc05hbWUiLCJjbGFzc05hbWUiLCJfcHJvcHMkcHJlZml4Q2xzIiwicHJlZml4Q2xzIiwic3R5bGUiLCJpZCIsIm5hbWUiLCJhcmlhTGFiZWwiLCJhcmlhTGFiZWxsZWRCeSIsIl9wcm9wcyRwbGFjZWhvbGRlciIsInBsYWNlaG9sZGVyIiwiX3Byb3BzJG9wdGlvbnMiLCJvcHRpb25zIiwidmFsdWUiLCJkZWZhdWx0VmFsdWUiLCJzaXplUHJvcCIsInNpemUiLCJfcHJvcHMkc3RhdHVzIiwic3RhdHVzIiwiX3Byb3BzJHZhcmlhbnQiLCJ2YXJpYW50IiwiX3Byb3BzJGRpc2FibGVkIiwiZGlzYWJsZWQiLCJkaXNhYmxlZFByb3AiLCJfcHJvcHMkcmVhZE9ubHkiLCJyZWFkT25seSIsIl9wcm9wcyRsb2FkaW5nIiwibG9hZGluZyIsIl9wcm9wcyRtdWx0aXBsZSIsIm11bHRpcGxlIiwibWF4VmlzaWJsZVZhbHVlcyIsIl9wcm9wcyRzZWFyY2hhYmxlIiwic2VhcmNoYWJsZSIsIl9wcm9wcyRzZWFyY2hQbGFjZWhvbCIsInNlYXJjaFBsYWNlaG9sZGVyIiwic2VhcmNoVmFsdWUiLCJfcHJvcHMkZGVmYXVsdFNlYXJjaFYiLCJkZWZhdWx0U2VhcmNoVmFsdWUiLCJfcHJvcHMkZmlsdGVySW5wdXRBdXQiLCJmaWx0ZXJJbnB1dEF1dG9Gb2N1cyIsImxhYmVsIiwibGFiZWxDbGFzc05hbWUiLCJpbmZvIiwiZGVzY3JpcHRpb24iLCJmZWVkYmFjayIsIl9wcm9wcyRyZXF1aXJlZCIsInJlcXVpcmVkIiwicHJlZml4IiwiX3Byb3BzJGVtcHR5Q29udGVudCIsImVtcHR5Q29udGVudCIsInBhbmVsSGVhZGVyIiwicGFuZWxGb290ZXIiLCJvcGVuIiwiX3Byb3BzJGRlZmF1bHRPcGVuIiwiZGVmYXVsdE9wZW4iLCJfcHJvcHMkcG9ydGFsIiwicG9ydGFsIiwiX3Byb3BzJGFsbG93RGVzZWxlY3QiLCJhbGxvd0Rlc2VsZWN0IiwicGFuZWxDbGFzc05hbWUiLCJvcHRpb25DbGFzc05hbWUiLCJncm91cExhYmVsQ2xhc3NOYW1lIiwiX3Byb3BzJGxpc3RNYXhIZWlnaHQiLCJsaXN0TWF4SGVpZ2h0Iiwib2Zmc2V0IiwiYW5pbWF0aW9uIiwib25DaGFuZ2UiLCJvbk9wZW5DaGFuZ2UiLCJvblNlYXJjaENoYW5nZSIsIm9uQmx1ciIsImZpbHRlck9wdGlvbiIsInJlbmRlck9wdGlvbiIsInJlbmRlck9wdGlvbkNvbnRlbnQiLCJyZW5kZXJWYWx1ZSIsInJlZiIsImNvbnRleHRTaXplIiwiaW50ZXJhY3RpdmUiLCJjbGFzc2VzIiwiYXV0b0lkIiwidHJpZ2dlcklkIiwibGFiZWxJZCIsImRlc2NyaXB0aW9uSWQiLCJmZWVkYmFja0lkIiwib3B0aW9uSWRQcmVmaXgiLCJfdXNlQ29udHJvbGxlZFN0YXRlIiwidW5kZWZpbmVkIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImlubmVyVmFsdWUiLCJzZXRJbm5lclZhbHVlIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZTMiLCJfdXNlQ29udHJvbGxlZFN0YXRlNCIsImlubmVyU2VhcmNoVmFsdWUiLCJzZXRJbm5lclNlYXJjaFZhbHVlIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsImFjdGl2ZUluZGV4Iiwic2V0QWN0aXZlSW5kZXgiLCJub3JtYWxpemVkU2l6ZSIsImFsbE9wdGlvbkdyb3VwcyIsImFsbEZsYXRPcHRpb25zIiwidmlzaWJsZU9wdGlvbkdyb3VwcyIsInZpc2libGVGbGF0T3B0aW9ucyIsInNlbGVjdGVkT3B0aW9ucyIsInNlbGVjdGVkVmFsdWVzIiwiU2V0Iiwic2VsZWN0ZWRJbmRleCIsImxlbmd0aCIsIm1hdGNoZWRJbmRleCIsImZpbmRJbmRleCIsIm9wdGlvbiIsImhhc1NlbGVjdGlvbiIsImxpc3RSZWYiLCJsaXN0Q29udGVudFJlZiIsImZsb2F0aW5nUmVmIiwidHJpZ2dlclJlZiIsInNlYXJjaElucHV0UmVmIiwiaGFuZGxlVHJpZ2dlclJlZiIsIm5vZGUiLCJjdXJyZW50IiwiX3VzZVNlbGVjdFNoZWxsIiwiaW5uZXJPcGVuIiwiaXNPcGVuIiwiaGFuZGxlT3BlbkNoYW5nZSIsInNldE9wZW4iLCJyZWZzIiwiY29udGV4dCIsImZsb2F0aW5nU3R5bGVzIiwidHJhbnNpdGlvblN0eWxlcyIsImlzTW91bnRlZCIsImJhc2VJbnRlcmFjdGlvbnMiLCJzZXRSZWZlcmVuY2UiLCJzZXRGbG9hdGluZyIsImxpc3ROYXZpZ2F0aW9uIiwib25OYXZpZ2F0ZSIsImVuYWJsZWQiLCJsb29wIiwidmlydHVhbCIsInR5cGVhaGVhZCIsIm9uTWF0Y2giLCJfdXNlSW50ZXJhY3Rpb25zIiwiY29uY2F0IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiZ2V0UmVmZXJlbmNlUHJvcHMiLCJnZXRGbG9hdGluZ1Byb3BzIiwiZ2V0SXRlbVByb3BzIiwiZmlyc3RFbmFibGVkSW5kZXgiLCJwcmV2IiwiZm9jdXMiLCJwcmV2ZW50U2Nyb2xsIiwic2xpY2UiLCJzZXRTZWFyY2hJbnB1dFJlZiIsIm5vdGlmeUJsdXJJZk91dHNpZGUiLCJyZWxhdGVkVGFyZ2V0IiwiZXZlbnQiLCJfYiIsIm5leHRUYXJnZXQiLCJ3aXRoaW5UcmlnZ2VyIiwiY29udGFpbnMiLCJ3aXRoaW5GbG9hdGluZyIsImhhbmRsZVRyaWdnZXJCbHVyIiwiaGFuZGxlT3B0aW9uQmx1ciIsImNvbW1pdENoYW5nZSIsIm5leHRWYWx1ZSIsIm5leHRPcHRpb24iLCJoYW5kbGVTZWxlY3RPcHRpb24iLCJuZXh0T3B0aW9ucyIsImhhbmRsZVJlbW92ZVNlbGVjdGVkVmFsdWUiLCJvcHRpb25WYWx1ZSIsImluY2x1ZGVzIiwiaGFuZGxlVHJpZ2dlcktleURvd24iLCJrZXkiLCJFTlRFUiIsIlNQQUNFIiwicHJldmVudERlZmF1bHQiLCJBUlJPV19ET1dOIiwiQVJST1dfVVAiLCJoYW5kbGVJdGVtTW91c2VFbnRlciIsImluZGV4IiwiaGFuZGxlVGFnUmVtb3ZlTW91c2VEb3duIiwic3RvcFByb3BhZ2F0aW9uIiwiaGFuZGxlVGFnUmVtb3ZlQ2xpY2siLCJoYW5kbGVTZWFyY2hCbHVyIiwiaGFuZGxlU2VhcmNoQ2hhbmdlIiwiaGFuZGxlU2VhcmNoQ2xlYXIiLCJmaW5kRW5hYmxlZEluZGV4IiwiZGlyZWN0aW9uIiwic3RhcnQiLCJzdGVwIiwiY2FuZGlkYXRlIiwiaGFuZGxlU2VhcmNoS2V5RG93biIsIm5leHQiLCJFU0NBUEUiLCJyZW5kZXJWYWx1ZU1ldGEiLCJmb250U2l6ZSIsInZhbHVlTGFiZWxDbGFzcyIsImlzTXVsdGlwbGVWYWx1ZUZpbGxlZCIsInRyaWdnZXJDbGFzc05hbWUiLCJpY29uU2l6ZSIsImFjdGl2ZU9wdGlvbklkIiwiZmxvYXRpbmdBcmlhTGFiZWxsZWRCeSIsImRlc2NyaWJlZEJ5SWRzIiwiZmlsdGVyIiwiQm9vbGVhbiIsImpvaW4iLCJjaGlsZHJlbiIsIk9iamVjdCIsImFzc2lnbiIsInR5cGUiLCJvbktleURvd24iLCJvblJlbW92ZSIsIm9uUmVtb3ZlQ2xpY2siLCJvblJlbW92ZU1vdXNlRG93biIsInN0cm9rZVdpZHRoIiwiY29sb3IiLCJwYW5lbE5vZGUiLCJtb2RhbCIsImluaXRpYWxGb2N1cyIsInJldHVybkZvY3VzIiwiYWN0aXZlRGVzY2VuZGFudCIsIm9uQ2xlYXIiLCJlbXB0eSIsImZsYXRJbmRleCIsIm1hcCIsImdyb3VwIiwiZ3JvdXBMYWJlbCIsInN0cm9uZyIsIm9wdGlvbkZsYXRJbmRleCIsInNlbGVjdGVkIiwiaGFzIiwiYWN0aXZlIiwib3B0aW9uTWV0YSIsInJvbGUiLCJvbkNsaWNrIiwib25Nb3VzZUVudGVyIiwiY29udGVudCIsImRpc3BsYXlOYW1lIl0sIm1hcHBpbmdzIjoiOztBQUFBLFNBQVNBLEdBQUcsSUFBSUMsSUFBSSxFQUFFQyxJQUFJLElBQUlDLEtBQUssUUFBUSxtQkFBbUI7QUNBOUQsU0FDRUMsb0JBQW9CLEVBQ3BCQyxjQUFjLEVBQ2RDLGVBQWUsRUFDZkMsaUJBQWlCLEVBQ2pCQyxZQUFZLFFBQ1Asb0JBQW9CO0FBQzNCLFNBQVNDLElBQUksRUFBRUMsU0FBUyxFQUFFQyxLQUFLLEVBQUVDLE9BQU8sRUFB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R0FBQSxLQUFBLENBQUEsR0FBbkJBLG1CQUFtQixDQUFHc0MsTUFBTSxFQUFFeUgsVUFBVTtzQkFBQyxDQUFBO29CQUVyRCxDQUFBLENBQUEsS0FBQTFGLE1BQUEsQ0FyQ09tRixLQUFLLENBQUNyRCxHQUFHLE9BQUE5QixNQUFBLENBQUkvQixNQUFNLENBQUNqRyxLQUFLLENBQUUsQ0FzQzVCO2tCQUViLENBQUMsQ0FBQztnQkFBQSxDQUFBLEVBcEVNbU4sS0FBSyxDQUFDckQsR0FBRyxDQXFFYjtjQUFBLENBQ1AsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUNIO1VBQUEsQ0FBQSxDQUNHLEVBQ0x4SCxXQUFXLElBQUksSUFBSSxJQUNsQnJHLElBQUEsQ0FBQSxLQUFBLEVBQUE7WUFBS21ELFNBQVMsRUFBRTRFLE9BQU8sQ0FBQyxjQUFjLENBQUM7WUFBQWdJLFFBQUEsRUFBRzFKO1VBQVcsQ0FBQSxDQUN0RDtRQUFBLENBQUEsQ0FBQTtNQUNHLENBQUEsQ0FFVDtNQUVELE9BQU9LLE1BQU0sR0FBRzFHLElBQUEsQ0FBQ0ksY0FBYyxFQUFBO1FBQUEyUCxRQUFBLEVBQUVVO01BQVMsQ0FBQSxDQUFrQixHQUFHQSxTQUFTO0lBQzFFLENBQUMsQ0FBQyxDQUFFO0VBQUEsQ0FBQSxDQUNhO0FBRXZCLENBQUM7QUFFRDNOLE1BQU0sQ0FBQ2dQLFdBQVcsR0FBRyxRQUFRO0FBRTdCLDRCQUFldFIsSUFBSSxDQUFDc0MsTUFBTSxDQUFDIiwiZmlsZSI6ImNvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBGbG9hdGluZ0ZvY3VzTWFuYWdlciwgRmxvYXRpbmdQb3J0YWwsIHVzZUludGVyYWN0aW9ucywgdXNlTGlzdE5hdmlnYXRpb24sIHVzZVR5cGVhaGVhZCwgfSBmcm9tICdAZmxvYXRpbmctdWkvcmVhY3QnO1xuaW1wb3J0IHsgbWVtbywgdXNlRWZmZWN0LCB1c2VJZCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VDb250cm9sbGVkU3RhdGUgZnJvbSAnQDFtb25leS9ob29rcy91c2VDb250cm9sbGVkU3RhdGUnO1xuaW1wb3J0IHVzZUV2ZW50Q2FsbGJhY2sgZnJvbSAnQDFtb25leS9ob29rcy91c2VFdmVudENhbGxiYWNrJztcbmltcG9ydCB7IHVzZUxvY2FsZSB9IGZyb20gJy4uL0NvbmZpZ1Byb3ZpZGVyJztcbmltcG9ydCB7IHVzZUZvcm1Db250cm9sU2l6ZSB9IGZyb20gJy4uL0Zvcm1MYXlvdXQvY29udGV4dCc7XG5pbXBvcnQgeyBJY29ucyB9IGZyb20gJy4uL0ljb25zJztcbmltcG9ydCB7IFNwaW5uZXIgfSBmcm9tICcuLi9TcGlubmVyJztcbmltcG9ydCB7IFR5cG9ncmFwaHlCb2R5LCBUeXBvZ3JhcGh5TGFiZWwgfSBmcm9tICcuLi9UeXBvZ3JhcGh5JztcbmltcG9ydCB7IGpvaW5DbHMsIGRlZmF1bHQgYXMgcm9vdENsYXNzbmFtZXMgfSBmcm9tICcuLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCBTZWxlY3RGaWVsZFNoZWxsIGZyb20gJy4vU2VsZWN0RmllbGRTaGVsbCc7XG5pbXBvcnQgU2VsZWN0T3B0aW9uQ29udGVudCBmcm9tICcuL1NlbGVjdE9wdGlvbkNvbnRlbnQnO1xuaW1wb3J0IFNlbGVjdFNlYXJjaENvbnRyb2wgZnJvbSAnLi9TZWxlY3RTZWFyY2hDb250cm9sJztcbmltcG9ydCBTZWxlY3RWYWx1ZUNvbnRlbnQgZnJvbSAnLi9TZWxlY3RWYWx1ZUNvbnRlbnQnO1xuaW1wb3J0IHsgdXNlU2VsZWN0U2hlbGwgfSBmcm9tICcuL3VzZVNlbGVjdFNoZWxsJztcbmltcG9ydCB7IEtFWUJPQVJELCBTRUxFQ1RfVFlQT0dSQVBIWSB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IGV4dHJhY3RPcHRpb25UZXh0LCBmaWx0ZXJPcHRpb25Hcm91cHMsIGZsYXR0ZW5PcHRpb25Hcm91cHMsIGdldE11bHRpcGxlVmFsdWUsIGdldEZvbnRTaXplLCBnZXRPcHRpb25zQnlWYWx1ZXMsIGdldFNlbGVjdGVkT3B0aW9ucywgaXNPcHRpb25TZWxlY3RlZCwgaXNTZWxlY3RNdWx0aXBsZVZhbHVlLCBub3JtYWxpemVTaXplLCBub3JtYWxpemVPcHRpb25Hcm91cHMsIHJlbW92ZU11bHRpcGxlVmFsdWUsIHRvZ2dsZU11bHRpcGxlVmFsdWUsIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgJy4vc3R5bGUnO1xuY29uc3QgREVGQVVMVF9NQVhfSEVJR0hUID0gMzIwO1xuZXhwb3J0IGNvbnN0IFNlbGVjdCA9IChwcm9wcykgPT4ge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCBsb2NhbGUgPSB1c2VMb2NhbGUoJ1NlbGVjdCcpO1xuICAgIGNvbnN0IHsgY2xhc3NOYW1lID0gJycsIHByZWZpeENscyA9ICdzZWxlY3QnLCBzdHlsZSwgaWQsIG5hbWUsICdhcmlhLWxhYmVsJzogYXJpYUxhYmVsLCAnYXJpYS1sYWJlbGxlZGJ5JzogYXJpYUxhYmVsbGVkQnksIHBsYWNlaG9sZGVyID0gbG9jYWxlLnBsYWNlaG9sZGVyLCBvcHRpb25zID0gW10sIHZhbHVlLCBkZWZhdWx0VmFsdWUsIHNpemU6IHNpemVQcm9wLCBzdGF0dXMgPSAnZGVmYXVsdCcsIHZhcmlhbnQgPSAnZmlsbCcsIGRpc2FibGVkOiBkaXNhYmxlZFByb3AgPSBmYWxzZSwgcmVhZE9ubHkgPSBmYWxzZSwgbG9hZGluZyA9IGZhbHNlLCBtdWx0aXBsZSA9IGZhbHNlLCBtYXhWaXNpYmxlVmFsdWVzLCBzZWFyY2hhYmxlID0gZmFsc2UsIHNlYXJjaFBsYWNlaG9sZGVyID0gbG9jYWxlLnNlYXJjaFBsYWNlaG9sZGVyLCBzZWFyY2hWYWx1ZSwgZGVmYXVsdFNlYXJjaFZhbHVlID0gJycsIGZpbHRlcklucHV0QXV0b0ZvY3VzID0gdHJ1ZSwgbGFiZWwsIGxhYmVsQ2xhc3NOYW1lLCBpbmZvLCBkZXNjcmlwdGlvbiwgZmVlZGJhY2ssIHJlcXVpcmVkID0gdHJ1ZSwgcHJlZml4LCBlbXB0eUNvbnRlbnQgPSBsb2NhbGUuZW1wdHlDb250ZW50LCBwYW5lbEhlYWRlciwgcGFuZWxGb290ZXIsIG9wZW4sIGRlZmF1bHRPcGVuID0gZmFsc2UsIHBvcnRhbCA9IHRydWUsIGFsbG93RGVzZWxlY3QgPSBmYWxzZSwgcGFuZWxDbGFzc05hbWUsIG9wdGlvbkNsYXNzTmFtZSwgZ3JvdXBMYWJlbENsYXNzTmFtZSwgbGlzdE1heEhlaWdodCA9IERFRkFVTFRfTUFYX0hFSUdIVCwgb2Zmc2V0LCBhbmltYXRpb24sIG9uQ2hhbmdlLCBvbk9wZW5DaGFuZ2UsIG9uU2VhcmNoQ2hhbmdlLCBvbkJsdXIsIGZpbHRlck9wdGlvbiwgcmVuZGVyT3B0aW9uLCByZW5kZXJPcHRpb25Db250ZW50LCByZW5kZXJWYWx1ZSwgcmVmLCB9ID0gcHJvcHM7XG4gICAgLy8gQmFyZS1jb250cm9sIHNpemUgZGVmYXVsdDogYW4gZXhwbGljaXQgYHNpemVgIHdpbnM7IGluc2lkZSBhIEZvcm1MYXlvdXRcbiAgICAvLyB0aGUgdmFyaWFudCdzIGNvbnRyb2xTaXplIGFwcGxpZXM7IGVsc2V3aGVyZSAnbGFyZ2UnLlxuICAgIGNvbnN0IGNvbnRleHRTaXplID0gdXNlRm9ybUNvbnRyb2xTaXplKCk7XG4gICAgY29uc3Qgc2l6ZSA9IChfYSA9IHNpemVQcm9wICE9PSBudWxsICYmIHNpemVQcm9wICE9PSB2b2lkIDAgPyBzaXplUHJvcCA6IGNvbnRleHRTaXplKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnbGFyZ2UnO1xuICAgIGNvbnN0IGRpc2FibGVkID0gZGlzYWJsZWRQcm9wIHx8IGxvYWRpbmc7XG4gICAgY29uc3QgaW50ZXJhY3RpdmUgPSAhZGlzYWJsZWQgJiYgIXJlYWRPbmx5O1xuICAgIGNvbnN0IGNsYXNzZXMgPSByb290Q2xhc3NuYW1lcyhwcmVmaXhDbHMpO1xuICAgIGNvbnN0IGF1dG9JZCA9IHVzZUlkKCk7XG4gICAgY29uc3QgdHJpZ2dlcklkID0gaWQgIT09IG51bGwgJiYgaWQgIT09IHZvaWQgMCA/IGlkIDogYXV0b0lkO1xuICAgIGNvbnN0IGxhYmVsSWQgPSB1c2VJZCgpO1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uSWQgPSB1c2VJZCgpO1xuICAgIGNvbnN0IGZlZWRiYWNrSWQgPSB1c2VJZCgpO1xuICAgIGNvbnN0IG9wdGlvbklkUHJlZml4ID0gdXNlSWQoKTtcbiAgICBjb25zdCBbaW5uZXJWYWx1ZSwgc2V0SW5uZXJWYWx1ZV0gPSB1c2VDb250cm9sbGVkU3RhdGUoZGVmYXVsdFZhbHVlICE9PSBudWxsICYmIGRlZmF1bHRWYWx1ZSAhPT0gdm9pZCAwID8gZGVmYXVsdFZhbHVlIDogKG11bHRpcGxlID8gW10gOiB1bmRlZmluZWQpLCB2YWx1ZSk7XG4gICAgY29uc3QgW2lubmVyU2VhcmNoVmFsdWUsIHNldElubmVyU2VhcmNoVmFsdWVdID0gdXNlQ29udHJvbGxlZFN0YXRlKGRlZmF1bHRTZWFyY2hWYWx1ZSwgc2VhcmNoVmFsdWUpO1xuICAgIGNvbnN0IFthY3RpdmVJbmRleCwgc2V0QWN0aXZlSW5kZXhdID0gdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3Qgbm9ybWFsaXplZFNpemUgPSBub3JtYWxpemVTaXplKHNpemUpO1xuICAgIGNvbnN0IGFsbE9wdGlvbkdyb3VwcyA9IHVzZU1lbW8oKCkgPT4gbm9ybWFsaXplT3B0aW9uR3JvdXBzKG9wdGlvbnMpLCBbb3B0aW9uc10pO1xuICAgIGNvbnN0IGFsbEZsYXRPcHRpb25zID0gdXNlTWVtbygoKSA9PiBmbGF0dGVuT3B0aW9uR3JvdXBzKGFsbE9wdGlvbkdyb3VwcyksIFthbGxPcHRpb25Hcm91cHNdKTtcbiAgICBjb25zdCB2aXNpYmxlT3B0aW9uR3JvdXBzID0gdXNlTWVtbygoKSA9PiAoc2VhcmNoYWJsZVxuICAgICAgICA/IGZpbHRlck9wdGlvbkdyb3VwcyhhbGxPcHRpb25Hcm91cHMsIGlubmVyU2VhcmNoVmFsdWUsIGZpbHRlck9wdGlvbilcbiAgICAgICAgOiBhbGxPcHRpb25Hcm91cHMpLCBbYWxsT3B0aW9uR3JvdXBzLCBmaWx0ZXJPcHRpb24sIGlubmVyU2VhcmNoVmFsdWUsIHNlYXJjaGFibGVdKTtcbiAgICBjb25zdCB2aXNpYmxlRmxhdE9wdGlvbnMgPSB1c2VNZW1vKCgpID0+IGZsYXR0ZW5PcHRpb25Hcm91cHModmlzaWJsZU9wdGlvbkdyb3VwcyksIFt2aXNpYmxlT3B0aW9uR3JvdXBzXSk7XG4gICAgY29uc3Qgc2VsZWN0ZWRPcHRpb25zID0gdXNlTWVtbygoKSA9PiBnZXRTZWxlY3RlZE9wdGlvbnMoYWxsRmxhdE9wdGlvbnMsIGlubmVyVmFsdWUsIG11bHRpcGxlKSwgW2FsbEZsYXRPcHRpb25zLCBpbm5lclZhbHVlLCBtdWx0aXBsZV0pO1xuICAgIC8vIFJlYnVpbGQgcGVyIHJlbmRlcjogY29udHJvbGxlZCBhcnJheXMgbWF5IGJlIG11dGF0ZWQgaW4gcGxhY2UsIGFuZCBvcHRpb25cbiAgICAvLyBtZW1iZXJzaGlwIHByZXZpb3VzbHkgcmVhZCB0aGVpciBjdXJyZW50IGNvbnRlbnRzIG9uIGV2ZXJ5IHJlbmRlci5cbiAgICBjb25zdCBzZWxlY3RlZFZhbHVlcyA9IGlzU2VsZWN0TXVsdGlwbGVWYWx1ZShpbm5lclZhbHVlLCBtdWx0aXBsZSkgPyBuZXcgU2V0KGlubmVyVmFsdWUpIDogbnVsbDtcbiAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGlmIChzZWxlY3RlZE9wdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtYXRjaGVkSW5kZXggPSB2aXNpYmxlRmxhdE9wdGlvbnMuZmluZEluZGV4KChvcHRpb24pID0+IG9wdGlvbi52YWx1ZSA9PT0gc2VsZWN0ZWRPcHRpb25zWzBdLnZhbHVlKTtcbiAgICAgICAgcmV0dXJuIG1hdGNoZWRJbmRleCA+PSAwID8gbWF0Y2hlZEluZGV4IDogbnVsbDtcbiAgICB9LCBbc2VsZWN0ZWRPcHRpb25zLCB2aXNpYmxlRmxhdE9wdGlvbnNdKTtcbiAgICBjb25zdCBoYXNTZWxlY3Rpb24gPSBzZWxlY3RlZE9wdGlvbnMubGVuZ3RoID4gMDtcbiAgICBjb25zdCBsaXN0UmVmID0gdXNlUmVmKFtdKTtcbiAgICBjb25zdCBsaXN0Q29udGVudFJlZiA9IHVzZVJlZihbXSk7XG4gICAgY29uc3QgZmxvYXRpbmdSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgdHJpZ2dlclJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBzZWFyY2hJbnB1dFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBoYW5kbGVUcmlnZ2VyUmVmID0gdXNlRXZlbnRDYWxsYmFjaygobm9kZSkgPT4ge1xuICAgICAgICB0cmlnZ2VyUmVmLmN1cnJlbnQgPSBub2RlO1xuICAgICAgICBpZiAocmVmKSB7XG4gICAgICAgICAgICByZWYuY3VycmVudCA9IG5vZGU7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCB7IGlzT3BlbjogaW5uZXJPcGVuLCBzZXRPcGVuOiBoYW5kbGVPcGVuQ2hhbmdlLCByZWZzLCBjb250ZXh0LCBmbG9hdGluZ1N0eWxlcywgdHJhbnNpdGlvblN0eWxlcywgaXNNb3VudGVkLCBiYXNlSW50ZXJhY3Rpb25zLCB9ID0gdXNlU2VsZWN0U2hlbGwoe1xuICAgICAgICBvcGVuLFxuICAgICAgICBkZWZhdWx0T3BlbixcbiAgICAgICAgb25PcGVuQ2hhbmdlLFxuICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgcmVhZE9ubHksXG4gICAgICAgIGxpc3RNYXhIZWlnaHQsXG4gICAgICAgIGFuaW1hdGlvbixcbiAgICAgICAgb2Zmc2V0LFxuICAgIH0pO1xuICAgIGNvbnN0IHNldFJlZmVyZW5jZSA9IHVzZUV2ZW50Q2FsbGJhY2soKG5vZGUpID0+IHtcbiAgICAgICAgcmVmcy5zZXRSZWZlcmVuY2Uobm9kZSk7XG4gICAgICAgIGhhbmRsZVRyaWdnZXJSZWYobm9kZSk7XG4gICAgfSk7XG4gICAgY29uc3Qgc2V0RmxvYXRpbmcgPSB1c2VFdmVudENhbGxiYWNrKChub2RlKSA9PiB7XG4gICAgICAgIHJlZnMuc2V0RmxvYXRpbmcobm9kZSk7XG4gICAgICAgIGZsb2F0aW5nUmVmLmN1cnJlbnQgPSBub2RlO1xuICAgIH0pO1xuICAgIGNvbnN0IGxpc3ROYXZpZ2F0aW9uID0gdXNlTGlzdE5hdmlnYXRpb24oY29udGV4dCwge1xuICAgICAgICBsaXN0UmVmLFxuICAgICAgICBhY3RpdmVJbmRleCxcbiAgICAgICAgc2VsZWN0ZWRJbmRleCxcbiAgICAgICAgb25OYXZpZ2F0ZTogc2V0QWN0aXZlSW5kZXgsXG4gICAgICAgIGVuYWJsZWQ6IGlubmVyT3BlbixcbiAgICAgICAgbG9vcDogdHJ1ZSxcbiAgICAgICAgdmlydHVhbDogc2VhcmNoYWJsZSxcbiAgICB9KTtcbiAgICBjb25zdCB0eXBlYWhlYWQgPSB1c2VUeXBlYWhlYWQoY29udGV4dCwge1xuICAgICAgICBsaXN0UmVmOiBsaXN0Q29udGVudFJlZixcbiAgICAgICAgYWN0aXZlSW5kZXgsXG4gICAgICAgIHNlbGVjdGVkSW5kZXgsXG4gICAgICAgIGVuYWJsZWQ6IGlubmVyT3BlbiAmJiAhc2VhcmNoYWJsZSxcbiAgICAgICAgb25NYXRjaDogc2V0QWN0aXZlSW5kZXgsXG4gICAgfSk7XG4gICAgY29uc3QgeyBnZXRSZWZlcmVuY2VQcm9wcywgZ2V0RmxvYXRpbmdQcm9wcywgZ2V0SXRlbVByb3BzIH0gPSB1c2VJbnRlcmFjdGlvbnMoW1xuICAgICAgICAuLi5iYXNlSW50ZXJhY3Rpb25zLFxuICAgICAgICBsaXN0TmF2aWdhdGlvbixcbiAgICAgICAgdHlwZWFoZWFkLFxuICAgIF0pO1xuICAgIGNvbnN0IGZpcnN0RW5hYmxlZEluZGV4ID0gdXNlTWVtbygoKSA9PiB2aXNpYmxlRmxhdE9wdGlvbnMuZmluZEluZGV4KChvcHRpb24pID0+ICFvcHRpb24uZGlzYWJsZWQpLCBbdmlzaWJsZUZsYXRPcHRpb25zXSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKCFpbm5lck9wZW4pIHtcbiAgICAgICAgICAgIHNldEFjdGl2ZUluZGV4KHNlbGVjdGVkSW5kZXgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHNldEFjdGl2ZUluZGV4KChwcmV2KSA9PiB7XG4gICAgICAgICAgICBpZiAocHJldiAhPT0gbnVsbCAmJiB2aXNpYmxlRmxhdE9wdGlvbnNbcHJldl0gJiYgIXZpc2libGVGbGF0T3B0aW9uc1twcmV2XS5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcmV2O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkSW5kZXggIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICB2aXNpYmxlRmxhdE9wdGlvbnNbc2VsZWN0ZWRJbmRleF0gJiZcbiAgICAgICAgICAgICAgICAhdmlzaWJsZUZsYXRPcHRpb25zW3NlbGVjdGVkSW5kZXhdLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGVkSW5kZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmlyc3RFbmFibGVkSW5kZXggPj0gMCA/IGZpcnN0RW5hYmxlZEluZGV4IDogbnVsbDtcbiAgICAgICAgfSk7XG4gICAgfSwgW2ZpcnN0RW5hYmxlZEluZGV4LCBpbm5lck9wZW4sIHNlbGVjdGVkSW5kZXgsIHZpc2libGVGbGF0T3B0aW9uc10pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKCFpbm5lck9wZW4gfHwgYWN0aXZlSW5kZXggPT09IG51bGwgfHwgc2VhcmNoYWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIChfYSA9IGxpc3RSZWYuY3VycmVudFthY3RpdmVJbmRleF0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgfSwgW2FjdGl2ZUluZGV4LCBpbm5lck9wZW4sIHNlYXJjaGFibGVdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBsaXN0UmVmLmN1cnJlbnQgPSBsaXN0UmVmLmN1cnJlbnQuc2xpY2UoMCwgdmlzaWJsZUZsYXRPcHRpb25zLmxlbmd0aCk7XG4gICAgICAgIGxpc3RDb250ZW50UmVmLmN1cnJlbnQgPSBsaXN0Q29udGVudFJlZi5jdXJyZW50LnNsaWNlKDAsIHZpc2libGVGbGF0T3B0aW9ucy5sZW5ndGgpO1xuICAgIH0sIFt2aXNpYmxlRmxhdE9wdGlvbnMubGVuZ3RoXSk7XG4gICAgY29uc3Qgc2V0U2VhcmNoSW5wdXRSZWYgPSB1c2VFdmVudENhbGxiYWNrKChub2RlKSA9PiB7XG4gICAgICAgIHNlYXJjaElucHV0UmVmLmN1cnJlbnQgPSBub2RlO1xuICAgICAgICBpZiAobm9kZSAmJiBpbm5lck9wZW4gJiYgZmlsdGVySW5wdXRBdXRvRm9jdXMpIHtcbiAgICAgICAgICAgIG5vZGUuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3Qgbm90aWZ5Qmx1cklmT3V0c2lkZSA9IHVzZUV2ZW50Q2FsbGJhY2soKHJlbGF0ZWRUYXJnZXQsIGV2ZW50KSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIGNvbnN0IG5leHRUYXJnZXQgPSByZWxhdGVkVGFyZ2V0O1xuICAgICAgICBjb25zdCB3aXRoaW5UcmlnZ2VyID0gISEobmV4dFRhcmdldCAmJiAoKF9hID0gdHJpZ2dlclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY29udGFpbnMobmV4dFRhcmdldCkpKTtcbiAgICAgICAgY29uc3Qgd2l0aGluRmxvYXRpbmcgPSAhIShuZXh0VGFyZ2V0ICYmICgoX2IgPSBmbG9hdGluZ1JlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY29udGFpbnMobmV4dFRhcmdldCkpKTtcbiAgICAgICAgaWYgKCF3aXRoaW5UcmlnZ2VyICYmICF3aXRoaW5GbG9hdGluZykge1xuICAgICAgICAgICAgb25CbHVyID09PSBudWxsIHx8IG9uQmx1ciA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25CbHVyKGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVRyaWdnZXJCbHVyID0gdXNlRXZlbnRDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgbm90aWZ5Qmx1cklmT3V0c2lkZShldmVudC5yZWxhdGVkVGFyZ2V0LCBldmVudCk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlT3B0aW9uQmx1ciA9IHVzZUV2ZW50Q2FsbGJhY2soKGV2ZW50KSA9PiB7XG4gICAgICAgIG5vdGlmeUJsdXJJZk91dHNpZGUoZXZlbnQucmVsYXRlZFRhcmdldCwgZXZlbnQpO1xuICAgIH0pO1xuICAgIGNvbnN0IGNvbW1pdENoYW5nZSA9IHVzZUV2ZW50Q2FsbGJhY2soKG5leHRWYWx1ZSwgbmV4dE9wdGlvbikgPT4ge1xuICAgICAgICBzZXRJbm5lclZhbHVlKG5leHRWYWx1ZSk7XG4gICAgICAgIG9uQ2hhbmdlID09PSBudWxsIHx8IG9uQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNoYW5nZShuZXh0VmFsdWUsIG5leHRPcHRpb24sIG5hbWUpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVNlbGVjdE9wdGlvbiA9IHVzZUV2ZW50Q2FsbGJhY2soKG9wdGlvbikgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICBpZiAob3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG11bHRpcGxlKSB7XG4gICAgICAgICAgICBjb25zdCBuZXh0VmFsdWUgPSB0b2dnbGVNdWx0aXBsZVZhbHVlKGlubmVyVmFsdWUsIG9wdGlvbi52YWx1ZSk7XG4gICAgICAgICAgICBjb25zdCBuZXh0T3B0aW9ucyA9IGdldE9wdGlvbnNCeVZhbHVlcyhhbGxGbGF0T3B0aW9ucywgbmV4dFZhbHVlKTtcbiAgICAgICAgICAgIGNvbW1pdENoYW5nZShuZXh0VmFsdWUsIG5leHRPcHRpb25zKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYWxsb3dEZXNlbGVjdCAmJiBpbm5lclZhbHVlID09PSBvcHRpb24udmFsdWUpIHtcbiAgICAgICAgICAgIGNvbW1pdENoYW5nZSh1bmRlZmluZWQsIHVuZGVmaW5lZCk7XG4gICAgICAgICAgICBoYW5kbGVPcGVuQ2hhbmdlKGZhbHNlKTtcbiAgICAgICAgICAgIG9uQmx1ciA9PT0gbnVsbCB8fCBvbkJsdXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQmx1cigpO1xuICAgICAgICAgICAgKF9hID0gdHJpZ2dlclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbW1pdENoYW5nZShvcHRpb24udmFsdWUsIG9wdGlvbik7XG4gICAgICAgIGhhbmRsZU9wZW5DaGFuZ2UoZmFsc2UpO1xuICAgICAgICBvbkJsdXIgPT09IG51bGwgfHwgb25CbHVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkJsdXIoKTtcbiAgICAgICAgKF9iID0gdHJpZ2dlclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVJlbW92ZVNlbGVjdGVkVmFsdWUgPSB1c2VFdmVudENhbGxiYWNrKChvcHRpb25WYWx1ZSkgPT4ge1xuICAgICAgICBpZiAoIW11bHRpcGxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFnZXRNdWx0aXBsZVZhbHVlKGlubmVyVmFsdWUpLmluY2x1ZGVzKG9wdGlvblZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5leHRWYWx1ZSA9IHJlbW92ZU11bHRpcGxlVmFsdWUoaW5uZXJWYWx1ZSwgb3B0aW9uVmFsdWUpO1xuICAgICAgICBjb25zdCBuZXh0T3B0aW9ucyA9IGdldE9wdGlvbnNCeVZhbHVlcyhhbGxGbGF0T3B0aW9ucywgbmV4dFZhbHVlKTtcbiAgICAgICAgY29tbWl0Q2hhbmdlKG5leHRWYWx1ZSwgbmV4dE9wdGlvbnMpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVRyaWdnZXJLZXlEb3duID0gdXNlRXZlbnRDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKCFpbnRlcmFjdGl2ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09IEtFWUJPQVJELkVOVEVSIHx8IGV2ZW50LmtleSA9PT0gS0VZQk9BUkQuU1BBQ0UpIHtcbiAgICAgICAgICAgIGlmIChpbm5lck9wZW4gJiZcbiAgICAgICAgICAgICAgICBhY3RpdmVJbmRleCAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgIHZpc2libGVGbGF0T3B0aW9uc1thY3RpdmVJbmRleF0gJiZcbiAgICAgICAgICAgICAgICAhdmlzaWJsZUZsYXRPcHRpb25zW2FjdGl2ZUluZGV4XS5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0T3B0aW9uKHZpc2libGVGbGF0T3B0aW9uc1thY3RpdmVJbmRleF0pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBoYW5kbGVPcGVuQ2hhbmdlKCFpbm5lck9wZW4pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09IEtFWUJPQVJELkFSUk9XX0RPV04gfHwgZXZlbnQua2V5ID09PSBLRVlCT0FSRC5BUlJPV19VUCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGlmICghaW5uZXJPcGVuKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlT3BlbkNoYW5nZSh0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZUl0ZW1Nb3VzZUVudGVyID0gdXNlRXZlbnRDYWxsYmFjaygoaW5kZXgpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoISgoX2EgPSB2aXNpYmxlRmxhdE9wdGlvbnNbaW5kZXhdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZGlzYWJsZWQpKSB7XG4gICAgICAgICAgICBzZXRBY3RpdmVJbmRleChpbmRleCk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVUYWdSZW1vdmVNb3VzZURvd24gPSB1c2VFdmVudENhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVUYWdSZW1vdmVDbGljayA9IHVzZUV2ZW50Q2FsbGJhY2soKGV2ZW50KSA9PiB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVNlYXJjaEJsdXIgPSB1c2VFdmVudENhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICBub3RpZnlCbHVySWZPdXRzaWRlKGV2ZW50LnJlbGF0ZWRUYXJnZXQsIGV2ZW50KTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVTZWFyY2hDaGFuZ2UgPSB1c2VFdmVudENhbGxiYWNrKChuZXh0VmFsdWUpID0+IHtcbiAgICAgICAgc2V0SW5uZXJTZWFyY2hWYWx1ZShuZXh0VmFsdWUpO1xuICAgICAgICBvblNlYXJjaENoYW5nZSA9PT0gbnVsbCB8fCBvblNlYXJjaENoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25TZWFyY2hDaGFuZ2UobmV4dFZhbHVlKTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVTZWFyY2hDbGVhciA9IHVzZUV2ZW50Q2FsbGJhY2soKCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGhhbmRsZVNlYXJjaENoYW5nZSgnJyk7XG4gICAgICAgIChfYSA9IHNlYXJjaElucHV0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgfSk7XG4gICAgY29uc3QgZmluZEVuYWJsZWRJbmRleCA9IHVzZUV2ZW50Q2FsbGJhY2soKGN1cnJlbnQsIGRpcmVjdGlvbikgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IHZpc2libGVGbGF0T3B0aW9ucy5sZW5ndGg7XG4gICAgICAgIGlmIChsZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gY3VycmVudCAhPT0gbnVsbCAmJiBjdXJyZW50ICE9PSB2b2lkIDAgPyBjdXJyZW50IDogKGRpcmVjdGlvbiA9PT0gMSA/IC0xIDogbGVuZ3RoKTtcbiAgICAgICAgZm9yIChsZXQgc3RlcCA9IDE7IHN0ZXAgPD0gbGVuZ3RoOyBzdGVwICs9IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IGNhbmRpZGF0ZSA9ICgoc3RhcnQgKyBkaXJlY3Rpb24gKiBzdGVwKSAlIGxlbmd0aCArIGxlbmd0aCkgJSBsZW5ndGg7XG4gICAgICAgICAgICBpZiAoISgoX2EgPSB2aXNpYmxlRmxhdE9wdGlvbnNbY2FuZGlkYXRlXSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmRpc2FibGVkKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlU2VhcmNoS2V5RG93biA9IHVzZUV2ZW50Q2FsbGJhY2soKGV2ZW50KSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gS0VZQk9BUkQuQVJST1dfRE9XTikge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGNvbnN0IG5leHQgPSBmaW5kRW5hYmxlZEluZGV4KGFjdGl2ZUluZGV4LCAxKTtcbiAgICAgICAgICAgIGlmIChuZXh0ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgc2V0QWN0aXZlSW5kZXgobmV4dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gS0VZQk9BUkQuQVJST1dfVVApIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBjb25zdCBwcmV2ID0gZmluZEVuYWJsZWRJbmRleChhY3RpdmVJbmRleCwgLTEpO1xuICAgICAgICAgICAgaWYgKHByZXYgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBzZXRBY3RpdmVJbmRleChwcmV2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSBLRVlCT0FSRC5FTlRFUikge1xuICAgICAgICAgICAgaWYgKGFjdGl2ZUluZGV4ICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgdmlzaWJsZUZsYXRPcHRpb25zW2FjdGl2ZUluZGV4XSAmJlxuICAgICAgICAgICAgICAgICF2aXNpYmxlRmxhdE9wdGlvbnNbYWN0aXZlSW5kZXhdLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RPcHRpb24odmlzaWJsZUZsYXRPcHRpb25zW2FjdGl2ZUluZGV4XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gS0VZQk9BUkQuRVNDQVBFKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgaGFuZGxlT3BlbkNoYW5nZShmYWxzZSk7XG4gICAgICAgICAgICAoX2EgPSB0cmlnZ2VyUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCByZW5kZXJWYWx1ZU1ldGEgPSB7XG4gICAgICAgIGRpc2FibGVkLFxuICAgICAgICByZWFkT25seSxcbiAgICAgICAgbXVsdGlwbGUsXG4gICAgICAgIG1heFZpc2libGVWYWx1ZXMsXG4gICAgICAgIG9wZW46IGlubmVyT3BlbixcbiAgICAgICAgcGxhY2Vob2xkZXI6ICFoYXNTZWxlY3Rpb24sXG4gICAgICAgIHNlbGVjdGVkT3B0aW9ucyxcbiAgICAgICAgc2l6ZTogbm9ybWFsaXplZFNpemUsXG4gICAgICAgIGZvbnRTaXplOiBnZXRGb250U2l6ZShub3JtYWxpemVkU2l6ZSksXG4gICAgfTtcbiAgICBjb25zdCB2YWx1ZUxhYmVsQ2xhc3MgPSBoYXNTZWxlY3Rpb24gPyAndmFsdWUnIDogJ3BsYWNlaG9sZGVyJztcbiAgICBjb25zdCBpc011bHRpcGxlVmFsdWVGaWxsZWQgPSAobXVsdGlwbGUgJiZcbiAgICAgICAgaGFzU2VsZWN0aW9uICYmXG4gICAgICAgIG1heFZpc2libGVWYWx1ZXMgPT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAvLyBBIGN1c3RvbSBgcmVuZGVyVmFsdWVgIHByb2R1Y2VzIGl0cyBvd24gc2luZ2xlLWxpbmUgc3VtbWFyeSwgc28gdGhlXG4gICAgICAgIC8vIG11bHRpLXZhbHVlIGNoaXAgbGF5b3V0IChoZWlnaHQ6YXV0byArIHZlcnRpY2FsIHBhZGRpbmcgKyBmbGV4LXdyYXApXG4gICAgICAgIC8vIG11c3Qgbm90IGtpY2sgaW4gYW5kIGluZmxhdGUgdGhlIHRyaWdnZXIgaGVpZ2h0LlxuICAgICAgICAhcmVuZGVyVmFsdWUpO1xuICAgIGNvbnN0IHRyaWdnZXJDbGFzc05hbWUgPSBjbGFzc2VzKCd0cmlnZ2VyJywgam9pbkNscyhjbGFzc2VzKGB0cmlnZ2VyLSR7bm9ybWFsaXplZFNpemV9YCksIGNsYXNzZXMoYHRyaWdnZXItJHt2YXJpYW50fWApLCBpbm5lck9wZW4gJiYgY2xhc3NlcygndHJpZ2dlci1vcGVuJyksIGlzTXVsdGlwbGVWYWx1ZUZpbGxlZCAmJiBjbGFzc2VzKCd0cmlnZ2VyLW11bHRpcGxlLWZpbGxlZCcpLCBoYXNTZWxlY3Rpb24gPyBjbGFzc2VzKCd0cmlnZ2VyLWZpbGxlZCcpIDogY2xhc3NlcygndHJpZ2dlci1wbGFjZWhvbGRlcicpLCBzdGF0dXMgIT09ICdkZWZhdWx0JyAmJiBjbGFzc2VzKGB0cmlnZ2VyLSR7c3RhdHVzfWApLCBkaXNhYmxlZCAmJiBjbGFzc2VzKCd0cmlnZ2VyLWRpc2FibGVkJyksIHJlYWRPbmx5ICYmICFkaXNhYmxlZCAmJiBjbGFzc2VzKCd0cmlnZ2VyLXJlYWRvbmx5JykpKTtcbiAgICBjb25zdCBpY29uU2l6ZSA9IG5vcm1hbGl6ZWRTaXplID09PSAnbGFyZ2UnID8gMjAgOiAxNjtcbiAgICBjb25zdCBhY3RpdmVPcHRpb25JZCA9IHNlYXJjaGFibGUgJiYgaW5uZXJPcGVuICYmIGFjdGl2ZUluZGV4ICE9PSBudWxsXG4gICAgICAgID8gYCR7b3B0aW9uSWRQcmVmaXh9LSR7YWN0aXZlSW5kZXh9YFxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBmbG9hdGluZ0FyaWFMYWJlbGxlZEJ5ID0gYXJpYUxhYmVsbGVkQnkgIT09IG51bGwgJiYgYXJpYUxhYmVsbGVkQnkgIT09IHZvaWQgMCA/IGFyaWFMYWJlbGxlZEJ5IDogKGxhYmVsID8gbGFiZWxJZCA6IHVuZGVmaW5lZCk7XG4gICAgY29uc3QgZGVzY3JpYmVkQnlJZHMgPSBbXG4gICAgICAgIGRlc2NyaXB0aW9uID8gZGVzY3JpcHRpb25JZCA6IG51bGwsXG4gICAgICAgIGZlZWRiYWNrID8gZmVlZGJhY2tJZCA6IG51bGwsXG4gICAgXS5maWx0ZXIoQm9vbGVhbikuam9pbignICcpIHx8IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gKF9qc3hzKFNlbGVjdEZpZWxkU2hlbGwsIHsgY2xhc3NlczogY2xhc3NlcywgY2xhc3NOYW1lOiBjbGFzc05hbWUsIHNpemU6IG5vcm1hbGl6ZWRTaXplLCB2YXJpYW50OiB2YXJpYW50LCBzdGF0dXM6IHN0YXR1cywgZGlzYWJsZWQ6IGRpc2FibGVkLCByZWFkT25seTogcmVhZE9ubHksIGxvYWRpbmc6IGxvYWRpbmcsIGxhYmVsOiBsYWJlbCwgbGFiZWxDbGFzc05hbWU6IGxhYmVsQ2xhc3NOYW1lLCBpbmZvOiBpbmZvLCBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sIGZlZWRiYWNrOiBmZWVkYmFjaywgcmVxdWlyZWQ6IHJlcXVpcmVkLCBsYWJlbElkOiBsYWJlbElkLCBkZXNjcmlwdGlvbklkOiBkZXNjcmlwdGlvbklkLCBmZWVkYmFja0lkOiBmZWVkYmFja0lkLCBjaGlsZHJlbjogW19qc3hzKFwiYnV0dG9uXCIsIE9iamVjdC5hc3NpZ24oe30sIGdldFJlZmVyZW5jZVByb3BzKHtcbiAgICAgICAgICAgICAgICByZWY6IHNldFJlZmVyZW5jZSxcbiAgICAgICAgICAgICAgICBpZDogdHJpZ2dlcklkLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgJ2FyaWEtcmVhZG9ubHknOiByZWFkT25seSB8fCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiB0cmlnZ2VyQ2xhc3NOYW1lLFxuICAgICAgICAgICAgICAgIG9uS2V5RG93bjogaGFuZGxlVHJpZ2dlcktleURvd24sXG4gICAgICAgICAgICAgICAgb25CbHVyOiBoYW5kbGVUcmlnZ2VyQmx1cixcbiAgICAgICAgICAgICAgICAnYXJpYS1sYWJlbCc6IGFyaWFMYWJlbCxcbiAgICAgICAgICAgICAgICAnYXJpYS1sYWJlbGxlZGJ5JzogZmxvYXRpbmdBcmlhTGFiZWxsZWRCeSxcbiAgICAgICAgICAgICAgICAnYXJpYS1kZXNjcmliZWRieSc6IGRlc2NyaWJlZEJ5SWRzLFxuICAgICAgICAgICAgfSksIHsgY2hpbGRyZW46IFtfanN4cyhcInNwYW5cIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2NvbnRlbnQnKSwgY2hpbGRyZW46IFtwcmVmaXggJiYgX2pzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3ByZWZpeCcpLCBjaGlsZHJlbjogcHJlZml4IH0pLCBfanN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogY2xhc3Nlcyh2YWx1ZUxhYmVsQ2xhc3MsIGpvaW5DbHMoY2xhc3NlcyhgJHt2YWx1ZUxhYmVsQ2xhc3N9LSR7bm9ybWFsaXplZFNpemV9YCksIGlzTXVsdGlwbGVWYWx1ZUZpbGxlZCAmJiBjbGFzc2VzKGAke3ZhbHVlTGFiZWxDbGFzc30tbXVsdGlwbGVgKSwgZGlzYWJsZWQgJiYgY2xhc3NlcyhgJHt2YWx1ZUxhYmVsQ2xhc3N9LWRpc2FibGVkYCkpKSwgY2hpbGRyZW46IF9qc3goU2VsZWN0VmFsdWVDb250ZW50LCB7IGNsYXNzZXM6IGNsYXNzZXMsIGhhc1NlbGVjdGlvbjogaGFzU2VsZWN0aW9uLCBtdWx0aXBsZTogbXVsdGlwbGUsIHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlciwgcmVuZGVyVmFsdWU6IHJlbmRlclZhbHVlLCByZW5kZXJWYWx1ZU1ldGE6IHJlbmRlclZhbHVlTWV0YSwgc2VsZWN0ZWRPcHRpb25zOiBzZWxlY3RlZE9wdGlvbnMsIG1heFZpc2libGVWYWx1ZXM6IG1heFZpc2libGVWYWx1ZXMsIG9uUmVtb3ZlOiBoYW5kbGVSZW1vdmVTZWxlY3RlZFZhbHVlLCBvblJlbW92ZUNsaWNrOiBoYW5kbGVUYWdSZW1vdmVDbGljaywgb25SZW1vdmVNb3VzZURvd246IGhhbmRsZVRhZ1JlbW92ZU1vdXNlRG93biB9KSB9KV0gfSksIF9qc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdpY29uJyksIGNoaWxkcmVuOiBsb2FkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBfanN4KFNwaW5uZXIsIHsgc2l6ZTogaWNvblNpemUsIHN0cm9rZVdpZHRoOiAyIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiByZWFkT25seVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfanN4KEljb25zLCB7IG5hbWU6IGlubmVyT3BlbiA/ICdjaGV2cm9uVXAnIDogJ2NoZXZyb25Eb3duJywgc2l6ZTogaWNvblNpemUsIGNvbG9yOiBcImN1cnJlbnRDb2xvclwiIH0pIH0pXSB9KSksIGlzTW91bnRlZCAmJiBpbnRlcmFjdGl2ZSAmJiAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhbmVsTm9kZSA9IChfanN4KEZsb2F0aW5nRm9jdXNNYW5hZ2VyLCB7IGNvbnRleHQ6IGNvbnRleHQsIG1vZGFsOiBmYWxzZSwgaW5pdGlhbEZvY3VzOiAtMSwgcmV0dXJuRm9jdXM6IGZhbHNlLCBjaGlsZHJlbjogX2pzeHMoXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7fSwgZ2V0RmxvYXRpbmdQcm9wcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWY6IHNldEZsb2F0aW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBqb2luQ2xzKGNsYXNzZXMoJ3BhbmVsJyksIHBhbmVsQ2xhc3NOYW1lKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGZsb2F0aW5nU3R5bGVzKSwgdHJhbnNpdGlvblN0eWxlcyksXG4gICAgICAgICAgICAgICAgICAgIH0pLCB7IGNoaWxkcmVuOiBbc2VhcmNoYWJsZSAmJiAoX2pzeChTZWxlY3RTZWFyY2hDb250cm9sLCB7IHJlZjogc2V0U2VhcmNoSW5wdXRSZWYsIGNsYXNzZXM6IGNsYXNzZXMsIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaXplPXtub3JtYWxpemVkU2l6ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogXCJzbWFsbFwiLCBwbGFjZWhvbGRlcjogc2VhcmNoUGxhY2Vob2xkZXIsIHZhbHVlOiBpbm5lclNlYXJjaFZhbHVlLCBhY3RpdmVEZXNjZW5kYW50OiBhY3RpdmVPcHRpb25JZCwgb25CbHVyOiBoYW5kbGVTZWFyY2hCbHVyLCBvbkNoYW5nZTogaGFuZGxlU2VhcmNoQ2hhbmdlLCBvbkNsZWFyOiBoYW5kbGVTZWFyY2hDbGVhciwgb25LZXlEb3duOiBoYW5kbGVTZWFyY2hLZXlEb3duIH0pKSwgX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3BhbmVsLWJvZHknKSwgY2hpbGRyZW46IFtwYW5lbEhlYWRlciAhPSBudWxsICYmIChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdwYW5lbC1oZWFkZXInKSwgY2hpbGRyZW46IHBhbmVsSGVhZGVyIH0pKSwgdmlzaWJsZUZsYXRPcHRpb25zLmxlbmd0aCA9PT0gMCA/IChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdlbXB0eScpLCBjaGlsZHJlbjogX2pzeChUeXBvZ3JhcGh5Qm9keSwgeyBzaXplOiBTRUxFQ1RfVFlQT0dSQVBIWS5lbXB0eS5zaXplLCBjb2xvcjogU0VMRUNUX1RZUE9HUkFQSFkuZW1wdHkuY29sb3IsIGNoaWxkcmVuOiBlbXB0eUNvbnRlbnQgfSkgfSkpIDogKCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZsYXRJbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2libGVPcHRpb25Hcm91cHMubWFwKChncm91cCkgPT4gKF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdncm91cCcpLCBjaGlsZHJlbjogW2dyb3VwLmxhYmVsICYmIChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdncm91cC1sYWJlbCcsIGdyb3VwTGFiZWxDbGFzc05hbWUpLCBjaGlsZHJlbjogX2pzeChUeXBvZ3JhcGh5TGFiZWwsIHsgc2l6ZTogU0VMRUNUX1RZUE9HUkFQSFkuZ3JvdXBMYWJlbC5zaXplLCBzdHJvbmc6IHRydWUsIGNoaWxkcmVuOiBncm91cC5sYWJlbCB9KSB9KSksIGdyb3VwLm9wdGlvbnMubWFwKChvcHRpb24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25GbGF0SW5kZXggPSBmbGF0SW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhdEluZGV4ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBzZWxlY3RlZFZhbHVlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHNlbGVjdGVkVmFsdWVzLmhhcyhvcHRpb24udmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaXNPcHRpb25TZWxlY3RlZChpbm5lclZhbHVlLCBtdWx0aXBsZSwgb3B0aW9uLnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhY3RpdmUgPSBhY3RpdmVJbmRleCA9PT0gb3B0aW9uRmxhdEluZGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbk1ldGEgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6ICEhb3B0aW9uLmRpc2FibGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogb3B0aW9uRmxhdEluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlbjogaW5uZXJPcGVuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IGdldEZvbnRTaXplKG5vcm1hbGl6ZWRTaXplKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RDb250ZW50UmVmLmN1cnJlbnRbb3B0aW9uRmxhdEluZGV4XSA9IGV4dHJhY3RPcHRpb25UZXh0KG9wdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChfanN4KFwiYnV0dG9uXCIsIE9iamVjdC5hc3NpZ24oe30sIGdldEl0ZW1Qcm9wcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZihub2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0UmVmLmN1cnJlbnRbb3B0aW9uRmxhdEluZGV4XSA9IG5vZGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBgJHtvcHRpb25JZFByZWZpeH0tJHtvcHRpb25GbGF0SW5kZXh9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU6ICdvcHRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IGNsYXNzZXMoJ29wdGlvbicsIGpvaW5DbHMoYWN0aXZlICYmIGNsYXNzZXMoJ29wdGlvbi1hY3RpdmUnKSwgc2VsZWN0ZWQgJiYgY2xhc3Nlcygnb3B0aW9uLXNlbGVjdGVkJyksIG9wdGlvbi5kaXNhYmxlZCAmJiBjbGFzc2VzKCdvcHRpb24tZGlzYWJsZWQnKSwgb3B0aW9uQ2xhc3NOYW1lKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBvcHRpb24uZGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcmlhLXNlbGVjdGVkJzogc2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6IChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdE9wdGlvbihvcHRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk1vdXNlRW50ZXI6ICgpID0+IGhhbmRsZUl0ZW1Nb3VzZUVudGVyKG9wdGlvbkZsYXRJbmRleCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogaGFuZGxlT3B0aW9uQmx1cixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgeyBjaGlsZHJlbjogcmVuZGVyT3B0aW9uID8gKHJlbmRlck9wdGlvbihvcHRpb24sIG9wdGlvbk1ldGEpKSA6IChfanN4KFNlbGVjdE9wdGlvbkNvbnRlbnQsIHsgY2xhc3NlczogY2xhc3Nlcywgb3B0aW9uOiBvcHRpb24sIHNlbGVjdGVkOiBzZWxlY3RlZCwgc2l6ZTogbm9ybWFsaXplZFNpemUsIGNvbnRlbnQ6IHJlbmRlck9wdGlvbkNvbnRlbnQgPT09IG51bGwgfHwgcmVuZGVyT3B0aW9uQ29udGVudCA9PT0gdm9pZCAwID8gdm9pZCAwIDogcmVuZGVyT3B0aW9uQ29udGVudChvcHRpb24sIG9wdGlvbk1ldGEpIH0pKSB9KSwgYCR7Z3JvdXAua2V5fS0ke29wdGlvbi52YWx1ZX1gKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KV0gfSwgZ3JvdXAua2V5KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkoKSldIH0pLCBwYW5lbEZvb3RlciAhPSBudWxsICYmIChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdwYW5lbC1mb290ZXInKSwgY2hpbGRyZW46IHBhbmVsRm9vdGVyIH0pKV0gfSkpIH0pKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcG9ydGFsID8gX2pzeChGbG9hdGluZ1BvcnRhbCwgeyBjaGlsZHJlbjogcGFuZWxOb2RlIH0pIDogcGFuZWxOb2RlO1xuICAgICAgICAgICAgfSkoKV0gfSkpO1xufTtcblNlbGVjdC5kaXNwbGF5TmFtZSA9ICdTZWxlY3QnO1xuZXhwb3J0IGRlZmF1bHQgbWVtbyhTZWxlY3QpOyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
@@ -1,4 +1,7 @@
1
1
  import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
3
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
4
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
2
5
  export function normalizeSize(size) {
3
6
  if (size === 'small' || size === 'extra-small') return size;
4
7
  return 'large';
@@ -42,8 +45,28 @@ function findOptionByValue(options, value) {
42
45
  }
43
46
  export function getSelectedOptions(options, value, multiple) {
44
47
  if (isSelectMultipleValue(value, multiple)) {
48
+ if (value.length === 0) return [];
49
+ var optionsByValue = new Map();
50
+ var _iterator = _createForOfIteratorHelper(options),
51
+ _step;
52
+ try {
53
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
54
+ var option = _step.value;
55
+ var optionValue = option.value;
56
+ // `find` used strict equality: NaN never matched, and duplicate values
57
+ // resolved to the first option. Map alone would change both rules.
58
+ if (!Number.isNaN(optionValue) && !optionsByValue.has(optionValue)) {
59
+ optionsByValue.set(optionValue, option);
60
+ }
61
+ }
62
+ } catch (err) {
63
+ _iterator.e(err);
64
+ } finally {
65
+ _iterator.f();
66
+ }
45
67
  return value.map(function (item) {
46
- return findOptionByValue(options, item);
68
+ var _a;
69
+ return (_a = optionsByValue.get(item)) !== null && _a !== void 0 ? _a : null;
47
70
  }).filter(function (option) {
48
71
  return option !== null;
49
72
  });
@@ -130,8 +153,9 @@ export function getMultipleValue(value) {
130
153
  return Array.isArray(value) ? value : [];
131
154
  }
132
155
  export function getOptionsByValues(options, values) {
156
+ var selectedValues = new Set(values);
133
157
  return options.filter(function (option) {
134
- return values.includes(option.value);
158
+ return selectedValues.has(option.value);
135
159
  });
136
160
  }
137
161
  export function toggleMultipleValue(currentValue, optionValue) {
@@ -151,4 +175,4 @@ export function removeMultipleValue(currentValue, optionValue) {
151
175
  export function isOptionSelected(value, multiple, optionValue) {
152
176
  return isSelectMultipleValue(value, multiple) ? value.includes(optionValue) : value === optionValue;
153
177
  }
154
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvU2VsZWN0L3V0aWxzLnRzIiwiY29tcG9uZW50cy9TZWxlY3QvdXRpbHMuanMiXSwibmFtZXMiOlsibm9ybWFsaXplU2l6ZSIsInNpemUiLCJGT05UX1NJWkVfQllfU0VMRUNUX1NJWkUiLCJsYXJnZSIsInNtYWxsIiwiZ2V0Rm9udFNpemUiLCJleHRyYWN0T3B0aW9uVGV4dCIsIm9wdGlvbiIsImxhYmVsIiwiU3RyaW5nIiwidmFsdWUiLCJleHRyYWN0Tm9kZVRleHQiLCJpc1NlbGVjdE11bHRpcGxlVmFsdWUiLCJtdWx0aXBsZSIsIkFycmF5IiwiaXNBcnJheSIsImlzU2VsZWN0T3B0aW9uR3JvdXAiLCJvcHRpb25zIiwiZmluZE9wdGlvbkJ5VmFsdWUiLCJfYSIsImZpbmQiLCJnZXRTZWxlY3RlZE9wdGlvbnMiLCJtYXAiLCJpdGVtIiwiZmlsdGVyIiwidW5kZWZpbmVkIiwibWF0Y2hlZCIsImdldE9wdGlvblRhZ0xhYmVsIiwibm9ybWFsaXplT3B0aW9uR3JvdXBzIiwiZ3JvdXBzIiwidW5ncm91cGVkT3B0aW9ucyIsInVuZ3JvdXBlZEdyb3VwSW5kZXgiLCJwdXNoVW5ncm91cGVkT3B0aW9ucyIsImxlbmd0aCIsInB1c2giLCJrZXkiLCJjb25jYXQiLCJmb3JFYWNoIiwiaW5kZXgiLCJmbGF0dGVuT3B0aW9uR3JvdXBzIiwiZmxhdE1hcCIsImdyb3VwIiwiZ2V0T3B0aW9uU2VhcmNoVGV4dCIsImRlc2NyaXB0aW9uIiwic2VhcmNoVGV4dCIsIkJvb2xlYW4iLCJqb2luIiwidHJpbSIsIm1hdGNoZXNPcHRpb25TZWFyY2giLCJzZWFyY2hWYWx1ZSIsImZpbHRlck9wdGlvbiIsInRvTG93ZXJDYXNlIiwiaW5jbHVkZXMiLCJmaWx0ZXJPcHRpb25Hcm91cHMiLCJub3JtYWxpemVkU2VhcmNoVmFsdWUiLCJyZWR1Y2UiLCJyZXN1bHQiLCJncm91cExhYmVsVGV4dCIsIm1hdGNoZWRPcHRpb25zIiwiT2JqZWN0IiwiYXNzaWduIiwiZ2V0TXVsdGlwbGVWYWx1ZSIsImdldE9wdGlvbnNCeVZhbHVlcyIsInZhbHVlcyIsInRvZ2dsZU11bHRpcGxlVmFsdWUiLCJjdXJyZW50VmFsdWUiLCJvcHRpb25WYWx1ZSIsIl90b0NvbnN1bWFibGVBcnJheSIsInJlbW92ZU11bHRpcGxlVmFsdWUiLCJpc09wdGlvblNlbGVjdGVkIl0sIm1hcHBpbmdzIjoiO0FBbUJBLE9BQU0sU0FBVUEsYUFBYUEsQ0FBQ0MsSUFBMEIsRUFBQTtFQUN0RCxJQUFJQSxJQUFJLEtBQUssT0FBTyxJQUFJQSxJQUFJLEtBQUssYUFBYSxFQUFFLE9BQU9BLElBQUk7RUFDM0QsT0FBTyxPQUFPO0FBQ2hCO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQU1DLHdCQUF3QixHQUEyQztFQUN2RUMsS0FBSyxFQUFFLElBQUk7RUFDWEMsS0FBSyxFQUFFLElBQUk7RUFDWCxhQUFhLEVBQUU7QUNsQmpCLENEbUJDO0FBRUQsT0FBTSxTQUFVQyxXQUFXQSxDQUFDSixJQUFnQixFQUFBO0VBQzFDLE9BQU9DLHdCQUF3QixDQUFDRCxJQUFJLENBQUM7QUFDdkM7QUFFQSxPQUFNLFNBQVVLLGlCQUFpQkEsQ0FBQ0MsTUFBb0IsRUFBQTtFQUNwRCxJQUFJLE9BQU9BLE1BQU0sQ0FBQ0MsS0FBSyxLQUFLLFFBQVEsSUFBSSxPQUFPRCxNQUFNLENBQUNDLEtBQUssS0FBSyxRQUFRLEVBQUU7SUFDeEUsT0FBT0MsTUFBTSxDQUFDRixNQUFNLENBQUNDLEtBQUssQ0FBQztFQUM3QjtFQUVBLE9BQU9DLE1BQU0sQ0FBQ0YsTUFBTSxDQUFDRyxLQUFLLENBQUM7QUFDN0I7QUFFQSxTQUFTQyxlQUFlQSxDQUFDRCxLQUEyRCxFQUFBO0VBQ2xGLElBQUksT0FBT0EsS0FBSyxLQUFLLFFBQVEsSUFBSSxPQUFPQSxLQUFLLEtBQUssUUFBUSxFQUFFO0lBQzFELE9BQU9ELE1BQU0sQ0FBQ0MsS0FBSyxDQUFDO0VBQ3RCO0VBRUEsT0FBTyxFQUFFO0FBQ1g7QUFFQSxP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dXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsImV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVTaXplKHNpemUpIHtcbiAgICBpZiAoc2l6ZSA9PT0gJ3NtYWxsJyB8fCBzaXplID09PSAnZXh0cmEtc21hbGwnKVxuICAgICAgICByZXR1cm4gc2l6ZTtcbiAgICByZXR1cm4gJ2xhcmdlJztcbn1cbi8vIGBleHRyYS1zbWFsbGAgaXMgYSAzMnB4IHRyaWdnZXIgdGhhdCByZW5kZXJzIGl0cyB2YWx1ZSBhdCBgYm9keSBzbWAgKDEycHgpIHNvXG4vLyB0aGUgY29sbGFwc2VkIHRyaWdnZXIgbWF0Y2hlcyB0aGUgMTJweCBvcHRpb24gcm93cyB0aGUgRmlsdGVyIGRyb3Bkb3duc1xuLy8gKE9wdGlvbkZpbHRlci9EYXRlUmFuZ2UvQXNzZXQvQWNjb3VudCkgcmVuZGVyIGluIHRoZSBvcGVuIHBhbmVsLiBUaGlzIHNpemVcbi8vIGFsc28gZmxvd3MgaW50byBgcmVuZGVyVmFsdWVNZXRhLmZvbnRTaXplYCwga2VlcGluZyBjdXN0b20gdHJpZ2dlci9vcHRpb25cbi8vIGNvbnRlbnQgYWxpZ25lZCB3aXRoIHRoZSB0cmlnZ2VyIHR5cG9ncmFwaHkuXG5jb25zdCBGT05UX1NJWkVfQllfU0VMRUNUX1NJWkUgPSB7XG4gICAgbGFyZ2U6ICdsZycsXG4gICAgc21hbGw6ICdtZCcsXG4gICAgJ2V4dHJhLXNtYWxsJzogJ3NtJyxcbn07XG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9udFNpemUoc2l6ZSkge1xuICAgIHJldHVybiBGT05UX1NJWkVfQllfU0VMRUNUX1NJWkVbc2l6ZV07XG59XG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdE9wdGlvblRleHQob3B0aW9uKSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb24ubGFiZWwgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBvcHRpb24ubGFiZWwgPT09ICdudW1iZXInKSB7XG4gICAgICAgIHJldHVybiBTdHJpbmcob3B0aW9uLmxhYmVsKTtcbiAgICB9XG4gICAgcmV0dXJuIFN0cmluZyhvcHRpb24udmFsdWUpO1xufVxuZnVuY3Rpb24gZXh0cmFjdE5vZGVUZXh0KHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuICcnO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzU2VsZWN0TXVsdGlwbGVWYWx1ZSh2YWx1ZSwgbXVsdGlwbGUpIHtcbiAgICByZXR1cm4gbXVsdGlwbGUgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNTZWxlY3RPcHRpb25Hcm91cChvcHRpb24pIHtcbiAgICByZXR1cm4gJ29wdGlvbnMnIGluIG9wdGlvbiAmJiBBcnJheS5pc0FycmF5KG9wdGlvbi5vcHRpb25zKTtcbn1cbmZ1bmN0aW9uIGZpbmRPcHRpb25CeVZhbHVlKG9wdGlvbnMsIHZhbHVlKSB7XG4gICAgdmFyIF9hO1xuICAgIHJldHVybiAoX2EgPSBvcHRpb25zLmZpbmQoKG9wdGlvbikgPT4gb3B0aW9uLnZhbHVlID09PSB2YWx1ZSkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IG51bGw7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0U2VsZWN0ZWRPcHRpb25zKG9wdGlvbnMsIHZhbHVlLCBtdWx0aXBsZSkge1xuICAgIGlmIChpc1NlbGVjdE11bHRpcGxlVmFsdWUodmFsdWUsIG11bHRpcGxlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWVcbiAgICAgICAgICAgIC5tYXAoKGl0ZW0pID0+IGZpbmRPcHRpb25CeVZhbHVlKG9wdGlvbnMsIGl0ZW0pKVxuICAgICAgICAgICAgLmZpbHRlcigob3B0aW9uKSA9PiBvcHRpb24gIT09IG51bGwpO1xuICAgIH1cbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgY29uc3QgbWF0Y2hlZCA9IGZpbmRPcHRpb25CeVZhbHVlKG9wdGlvbnMsIHZhbHVlKTtcbiAgICByZXR1cm4gbWF0Y2hlZCA/IFttYXRjaGVkXSA6IFtdO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldE9wdGlvblRhZ0xhYmVsKG9wdGlvbikge1xuICAgIHJldHVybiBleHRyYWN0T3B0aW9uVGV4dChvcHRpb24pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZU9wdGlvbkdyb3VwcyhvcHRpb25zKSB7XG4gICAgY29uc3QgZ3JvdXBzID0gW107XG4gICAgbGV0IHVuZ3JvdXBlZE9wdGlvbnMgPSBbXTtcbiAgICBsZXQgdW5ncm91cGVkR3JvdXBJbmRleCA9IDA7XG4gICAgY29uc3QgcHVzaFVuZ3JvdXBlZE9wdGlvbnMgPSAoKSA9PiB7XG4gICAgICAgIGlmICh1bmdyb3VwZWRPcHRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGdyb3Vwcy5wdXNoKHtcbiAgICAgICAgICAgIGtleTogYHVuZ3JvdXBlZC0ke3VuZ3JvdXBlZEdyb3VwSW5kZXh9YCxcbiAgICAgICAgICAgIG9wdGlvbnM6IHVuZ3JvdXBlZE9wdGlvbnMsXG4gICAgICAgIH0pO1xuICAgICAgICB1bmdyb3VwZWRPcHRpb25zID0gW107XG4gICAgICAgIHVuZ3JvdXBlZEdyb3VwSW5kZXggKz0gMTtcbiAgICB9O1xuICAgIG9wdGlvbnMuZm9yRWFjaCgob3B0aW9uLCBpbmRleCkgPT4ge1xuICAgICAgICBpZiAoaXNTZWxlY3RPcHRpb25Hcm91cChvcHRpb24pKSB7XG4gICAgICAgICAgICBwdXNoVW5ncm91cGVkT3B0aW9ucygpO1xuICAgICAgICAgICAgZ3JvdXBzLnB1c2goe1xuICAgICAgICAgICAgICAgIGtleTogb3B0aW9uLmtleSA/IFN0cmluZyhvcHRpb24ua2V5KSA6IGBncm91cC0ke2luZGV4fWAsXG4gICAgICAgICAgICAgICAgbGFiZWw6IG9wdGlvbi5sYWJlbCxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBvcHRpb24ub3B0aW9ucyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHVuZ3JvdXBlZE9wdGlvbnMucHVzaChvcHRpb24pO1xuICAgIH0pO1xuICAgIHB1c2hVbmdyb3VwZWRPcHRpb25zKCk7XG4gICAgcmV0dXJuIGdyb3Vwcztcbn1cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuT3B0aW9uR3JvdXBzKGdyb3Vwcykge1xuICAgIHJldHVybiBncm91cHMuZmxhdE1hcCgoZ3JvdXApID0+IGdyb3VwLm9wdGlvbnMpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldE9wdGlvblNlYXJjaFRleHQob3B0aW9uKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgZXh0cmFjdE9wdGlvblRleHQob3B0aW9uKSxcbiAgICAgICAgZXh0cmFjdE5vZGVUZXh0KG9wdGlvbi5kZXNjcmlwdGlvbiksXG4gICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0LFxuICAgICAgICBTdHJpbmcob3B0aW9uLnZhbHVlKSxcbiAgICBdXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgLmpvaW4oJyAnKVxuICAgICAgICAudHJpbSgpO1xufVxuZnVuY3Rpb24gbWF0Y2hlc09wdGlvblNlYXJjaChzZWFyY2hWYWx1ZSwgb3B0aW9uLCBmaWx0ZXJPcHRpb24pIHtcbiAgICBpZiAoIXNlYXJjaFZhbHVlLnRyaW0oKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGZpbHRlck9wdGlvbikge1xuICAgICAgICByZXR1cm4gZmlsdGVyT3B0aW9uKHNlYXJjaFZhbHVlLCBvcHRpb24pO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0T3B0aW9uU2VhcmNoVGV4dChvcHRpb24pLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlck9wdGlvbkdyb3Vwcyhncm91cHMsIHNlYXJjaFZhbHVlLCBmaWx0ZXJPcHRpb24pIHtcbiAgICBpZiAoIXNlYXJjaFZhbHVlLnRyaW0oKSkge1xuICAgICAgICByZXR1cm4gZ3JvdXBzO1xuICAgIH1cbiAgICBjb25zdCBub3JtYWxpemVkU2VhcmNoVmFsdWUgPSBzZWFyY2hWYWx1ZS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gZ3JvdXBzLnJlZHVjZSgocmVzdWx0LCBncm91cCkgPT4ge1xuICAgICAgICBjb25zdCBncm91cExhYmVsVGV4dCA9IGV4dHJhY3ROb2RlVGV4dChncm91cC5sYWJlbCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgY29uc3QgbWF0Y2hlZE9wdGlvbnMgPSBncm91cExhYmVsVGV4dC5pbmNsdWRlcyhub3JtYWxpemVkU2VhcmNoVmFsdWUpXG4gICAgICAgICAgICA/IGdyb3VwLm9wdGlvbnNcbiAgICAgICAgICAgIDogZ3JvdXAub3B0aW9ucy5maWx0ZXIoKG9wdGlvbikgPT4gbWF0Y2hlc09wdGlvblNlYXJjaChzZWFyY2hWYWx1ZSwgb3B0aW9uLCBmaWx0ZXJPcHRpb24pKTtcbiAgICAgICAgaWYgKG1hdGNoZWRPcHRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQucHVzaChPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGdyb3VwKSwgeyBvcHRpb25zOiBtYXRjaGVkT3B0aW9ucyB9KSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSwgW10pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldE11bHRpcGxlVmFsdWUodmFsdWUpIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFtdO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldE9wdGlvbnNCeVZhbHVlcyhvcHRpb25zLCB2YWx1ZXMpIHtcbiAgICByZXR1cm4gb3B0aW9ucy5maWx0ZXIoKG9wdGlvbikgPT4gdmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHRvZ2dsZU11bHRpcGxlVmFsdWUoY3VycmVudFZhbHVlLCBvcHRpb25WYWx1ZSkge1xuICAgIGNvbnN0IHZhbHVlcyA9IGdldE11bHRpcGxlVmFsdWUoY3VycmVudFZhbHVlKTtcbiAgICBpZiAodmFsdWVzLmluY2x1ZGVzKG9wdGlvblZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWVzLmZpbHRlcigoaXRlbSkgPT4gaXRlbSAhPT0gb3B0aW9uVmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gWy4uLnZhbHVlcywgb3B0aW9uVmFsdWVdO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZU11bHRpcGxlVmFsdWUoY3VycmVudFZhbHVlLCBvcHRpb25WYWx1ZSkge1xuICAgIHJldHVybiBnZXRNdWx0aXBsZVZhbHVlKGN1cnJlbnRWYWx1ZSkuZmlsdGVyKChpdGVtKSA9PiBpdGVtICE9PSBvcHRpb25WYWx1ZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNPcHRpb25TZWxlY3RlZCh2YWx1ZSwgbXVsdGlwbGUsIG9wdGlvblZhbHVlKSB7XG4gICAgcmV0dXJuIGlzU2VsZWN0TXVsdGlwbGVWYWx1ZSh2YWx1ZSwgbXVsdGlwbGUpXG4gICAgICAgID8gdmFsdWUuaW5jbHVkZXMob3B0aW9uVmFsdWUpXG4gICAgICAgIDogdmFsdWUgPT09IG9wdGlvblZhbHVlO1xufSJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
178
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvU2VsZWN0L3V0aWxzLnRzIiwiY29tcG9uZW50cy9TZWxlY3QvdXRpbHMuanMiXSwibmFtZXMiOlsibm9ybWFsaXplU2l6ZSIsInNpemUiLCJGT05UX1NJWkVfQllfU0VMRUNUX1NJWkUiLCJsYXJnZSIsInNtYWxsIiwiZ2V0Rm9udFNpemUiLCJleHRyYWN0T3B0aW9uVGV4dCIsIm9wdGlvbiIsImxhYmVsIiwiU3RyaW5nIiwidmFsdWUiLCJleHRyYWN0Tm9kZVRleHQiLCJpc1NlbGVjdE11bHRpcGxlVmFsdWUiLCJtdWx0aXBsZSIsIkFycmF5IiwiaXNBcnJheSIsImlzU2VsZWN0T3B0aW9uR3JvdXAiLCJvcHRpb25zIiwiZmluZE9wdGlvbkJ5VmFsdWUiLCJfYSIsImZpbmQiLCJnZXRTZWxlY3RlZE9wdGlvbnMiLCJsZW5ndGgiLCJvcHRpb25zQnlWYWx1ZSIsIk1hcCIsIl9pdGVyYXRvciIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiX3N0ZXAiLCJzIiwibiIsImRvbmUiLCJvcHRpb25WYWx1ZSIsIk51bWJlciIsImlzTmFOIiwiaGFzIiwic2V0IiwiZXJyIiwiZSIsImYiLCJtYXAiLCJpdGVtIiwiZ2V0IiwiZmlsdGVyIiwidW5kZWZpbmVkIiwibWF0Y2hlZCIsImdldE9wdGlvblRhZ0xhYmVsIiwibm9ybWFsaXplT3B0aW9uR3JvdXBzIiwiZ3JvdXBzIiwidW5ncm91cGVkT3B0aW9ucyIsInVuZ3JvdXBlZEdyb3VwSW5kZXgiLCJwdXNoVW5ncm91cGVkT3B0aW9ucyIsInB1c2giLCJrZXkiLCJjb25jYXQiLCJmb3JFYWNoIiwiaW5kZXgiLCJmbGF0dGVuT3B0aW9uR3JvdXBzIiwiZmxhdE1hcCIsImdyb3VwIiwiZ2V0T3B0aW9uU2VhcmNoVGV4dCIsImRlc2NyaXB0aW9uIiwic2VhcmNoVGV4dCIsIkJvb2xlYW4iLCJqb2luIiwidHJpbSIsIm1hdGNoZXNPcHRpb25TZWFyY2giLCJzZWFyY2hWYWx1ZSIsImZpbHRlck9wdGlvbiIsInRvTG93ZXJDYXNlIiwiaW5jbHVkZXMiLCJmaWx0ZXJPcHRpb25Hcm91cHMiLCJub3JtYWxpemVkU2VhcmNoVmFsdWUiLCJyZWR1Y2UiLCJyZXN1bHQiLCJncm91cExhYmVsVGV4dCIsIm1hdGNoZWRPcHRpb25zIiwiT2JqZWN0IiwiYXNzaWduIiwiZ2V0TXVsdGlwbGVWYWx1ZSIsImdldE9wdGlvbnNCeVZhbHVlcyIsInZhbHVlcyIsInNlbGVjdGVkVmFsdWVzIiwiU2V0IiwidG9nZ2xlTXVsdGlwbGVWYWx1ZSIsImN1cnJlbnRWYWx1ZSIsIl90b0NvbnN1bWFibGVBcnJheSIsInJlbW92ZU11bHRpcGxlVmFsdWUiLCJpc09wdGlvblNlbGVjdGVkIl0sIm1hcHBpbmdzIjoiOzs7O0FBbUJBLE9BQU0sU0FBVUEsYUFBYUEsQ0FBQ0MsSUFBMEIsRUFBQTtFQUN0RCxJQUFJQSxJQUFJLEtBQUssT0FBTyxJQUFJQSxJQUFJLEtBQUssYUFBYSxFQUFFLE9BQU9BLElBQUk7RUFDM0QsT0FBTyxPQUFPO0FBQ2hCO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQU1DLHdCQUF3QixHQUEyQztFQUN2RUMsS0FBSyxFQUFFLElBQUk7RUFDWEMsS0FBSyxFQUFFLElBQUk7RUFDWCxhQUFhLEVBQUU7QUNsQmpCLENEbUJDO0FBRUQsT0FBTSxTQUFVQyxXQUFXQSxDQUFDSixJQUFnQixFQUFBO0VBQzFDLE9BQU9DLHdCQUF3QixDQUFDRCxJQUFJLENBQUM7QUFDdkM7QUFFQSxPQUFNLFNBQVVLLGlCQUFpQkEsQ0FBQ0MsTUFBb0IsRUFBQTtFQUNwRCxJQUFJLE9BQU9BLE1BQU0sQ0FBQ0MsS0FBSyxLQUFLLFFBQVEsSUFBSSxPQUFPRCxNQUFNLENBQUNDLEtBQUssS0FBSyxRQUFRLEVBQUU7SUFDeEUsT0FBT0MsTUFBTSxDQUFDRixNQUFNLENBQUNDLEtBQUssQ0FBQztFQUM3QjtFQUVBLE9BQU9DLE1BQU0sQ0FBQ0YsTUFBTSxDQUFDRyxLQUFLLENBQUM7QUFDN0I7QUFFQSxTQUFTQyxlQUFlQSxDQUFDRCxLQUEyRCxFQUFBO0VBQ2xGLElBQUksT0FBT0EsS0FBSyxLQUFLLFFBQVEsSUFBSSxPQUFPQSxLQUFLLEtBQUssUUFBUSxFQUFFO0lBQzFELE9BQU9ELE1BQU0sQ0FBQ0MsS0FBSyxDQUFDO0VBQ3RCO0VBRUEsT0FBTyxFQUFFO0FBQ1g7QUFFQSxPQUFNLFNBQVVFLHFCQUFxQkEsQ0FDbkNGLEtBQWtCLEVBQ2xCRyxRQUFpQixFQUFBO0VBRWpCLE9BQU9BLFFBQVEsSUFBSUMsS0FBSyxDQUFDQyxPQUFPLENBQUNMLEtBQUssQ0FBQztBQUN6QztBQUVBLE9BQU0sU0FBVU0sbUJBQW1CQSxDQUNqQ1QsTUFBd0IsRUFBQTtFQUV4QixPQUFPLFNBQVMsSUFBSUEsTUFBTSxJQUFJTyxLQUFLLENBQUNDLE9BQU8sQ0FBQ1IsTUFBTSxDQUFDVSxPQUFPLENBQUM7QUFDN0Q7QUFFQSxTQUFTQyxpQkFBaUJBLENBQUNELE9BQXVCLEVBQUVQLEtBQXdCLEVBQUE7RUMvQnhFLElBQUlTLEVBQUU7RURnQ1IsT0FBTyxDQUFBQSxFQUFBLEdBQUFGLE9BQU8sQ0FBQ0csSUFBSSxDQUFDLFVBQUNiLE1BQU07SUFBQSxPQUFLQSxNQUFNLENBQUNHLEtBQUssS0FBS0EsS0FBSztFQUFBLEVBQUMsTUFBQSxJQUFBLElBQUFTLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxHQUFJLElBQUk7QUFDakU7QUFFQSxPQUFNLFNBQVVFLGtCQUFrQkEsQ0FDaENKLE9BQXVCLEVBQ3ZCUCxLQUFrQixFQUNsQkcsUUFBaUIsRUFBQTtFQUVqQixJQUFJRCxxQkFBcUIsQ0FBQ0YsS0FBSyxFQUFFRyxRQUFRLENBQUMsRUFBRTtJQUMxQyxJQUFJSCxLQUFLLENBQUNZLE1BQU0sS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFO0lBRWpDLElBQU1DLGNBQWMsR0FBRyxJQUFJQyxHQUFHLENBQUEsQ0FBbUM7SUFBQyxJQUFBQyxTQUFBLEdBQUFDLDBCQUFBLENBQzdDVCxPQUFPO01BQUFVLEtBQUE7SUFBQTtNQUE1QixLQUFBRixTQUFBLENBQUFHLENBQUEsTUFBQUQsS0FBQSxHQUFBRixTQUFBLENBQUFJLENBQUEsSUFBQUMsSUFBQSxHQUE4QjtRQUFBLElBQW5CdkIsTUFBTSxHQUFBb0IsS0FBQSxDQUFBakIsS0FBQTtRQUNmLElBQU1xQixXQUFXLEdBQUd4QixNQUFNLENBQUNHLEtBQUs7UUFDaEM7UUFDQTtRQUNBLElBQUksQ0FBQ3NCLE1BQU0sQ0FBQ0MsS0FBSyxDQUFDRixXQUFXLENBQUMsSUFBSSxDQUFDUixjQUFjLENBQUNXLEdBQUcsQ0FBQ0gsV0FBVyxDQUFDLEVBQUU7VUFDbEVSLGNBQWMsQ0FBQ1ksR0FBRyxDQUFDSixXQUFXLEVBQUV4QixNQUFNLENBQUM7UUFDekM7TUFDRjtJQUFDLFNBQUE2QixHQUFBO01BQUFYLFNBQUEsQ0FBQVksQ0FBQSxDQUFBRCxHQUFBO0lBQUE7TUFBQVgsU0FBQSxDQUFBYSxDQUFBO0lBQUE7SUFFRCxPQUFPNUIsS0FBSyxDQUNUNkIsR0FBRyxDQUFDLFVBQUNDLElBQUksRUFBSTtNQUFBLElBQUFyQixFQUFBO01BQUMsT0FBQSxDQUFBQSxFQUFBLEdBQUFJLGNBQWMsQ0FBQ2tCLEdBQUcsQ0FBQ0QsSUFBSSxDQUFDLE1BQUEsSUFBQSxJQUFBckIsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBQSxFQUFBLEdBQUksSUFBSTtJQUFBLENBQUEsQ0FBQyxDQUMvQ3VCLE1BQU0sQ0FBQyxVQUFDbkMsTUFBTTtNQUFBLE9BQTZCQSxNQUFNLEtBQUssSUFBSTtJQUFBLEVBQUM7RUFDaEU7RUFFQSxJQUFJRyxLQUFLLEtBQUssSUFBSSxJQUFJQSxLQUFLLEtBQUtpQyxTQUFTLElBQUlqQyxLQUFLLEtBQUssRUFBRSxFQUFFO0lBQ3pELE9BQU8sRUFBRTtFQUNYO0VBRUEsSUFBSSxPQUFPQSxLQUFLLEtBQUssUUFBUSxJQUFJLE9BQU9BLEtBQUssS0FBSyxRQUFRLEVBQUU7SUFDMUQsT0FBTyxFQUFFO0VBQ1g7RUFFQSxJQUFNa0MsT0FBTyxHQUFHMUIsaUJBQWlCLENBQUNELE9BQU8sRUFBRVAsS0FBSyxDQUFDO0VBQ2pELE9BQU9rQyxPQUFPLEdBQUcsQ0FBQ0EsT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUNqQztBQUVBLE9BQU0sU0FBVUMsaUJBQWlCQSxDQUFDdEMsTUFBb0IsRUFBQTtFQUNwRCxPQUFPRCxpQkFBaUIsQ0FBQ0MsTUFBTSxDQUFDO0FBQ2xDO0FBRUEsT0FBTSxTQUFVdUMscUJBQXFCQSxDQUNuQzdCLE9BQTJCLEVBQUE7RUFFM0IsSUFBTThCLE1BQU0sR0FBK0IsRUFBRTtFQUM3QyxJQUFJQyxnQkFBZ0IsR0FBbUIsRUFBRTtFQUN6QyxJQUFJQyxtQkFBbUIsR0FBRyxDQUFDO0VBRTNCLElBQU1DLG9CQUFvQixHQUFHLFNBQXZCQSxvQkFBb0JBLENBQUEsRUFBUTtJQUNoQyxJQUFJRixnQkFBZ0IsQ0FBQzFCLE1BQU0sS0FBSyxDQUFDLEVBQUU7TUFDakM7SUFDRjtJQUVBeUIsTUFBTSxDQUFDSSxJQUFJLENBQUM7TUFDVkMsR0FBRyxlQUFBQyxNQUFBLENBQWVKLG1CQUFtQixDQUFFO01BQ3ZDaEMsT0FBTyxFQUFFK0I7SUM3Q1AsQ0Q4Q0gsQ0FBQztJQUNGQSxnQkFBZ0IsR0FBRyxFQUFFO0lBQ3JCQyxtQkFBbUIsSUFBSSxDQUFDO0VBQzFCLENBQUM7RUFFRGhDLE9BQU8sQ0FBQ3FDLE9BQU8sQ0FBQyxVQUFDL0MsTUFBTSxFQUFFZ0QsS0FBSyxFQUFJO0lBQ2hDLElBQUl2QyxtQkFBbUIsQ0FBQ1QsTUFBTSxDQUFDLEVBQUU7TUFDL0IyQyxvQkFBb0IsQ0FBQSxDQUFFO01BQ3RCSCxNQUFNLENBQUNJLElBQUksQ0FBQztRQUNWQyxHQUFHLEVBQUU3QyxNQUFNLENBQUM2QyxHQUFHLEdBQUczQyxNQUFNLENBQUNGLE1BQU0sQ0FBQzZDLEdBQUcsQ0FBQyxZQUFBQyxNQUFBLENBQVlFLEtBQUssQ0FBRTtRQUN2RC9DLEtBQUssRUFBRUQsTUFBTSxDQUFDQyxLQUFLO1FBQ25CUyxPQUFPLEVBQUVWLE1BQU0sQ0FBQ1U7TUM5Q1osQ0QrQ0wsQ0FBQztNQUNGO0lBQ0Y7SUFFQStCLGdCQUFnQixDQUFDRyxJQUFJLENBQUM1QyxNQUFNLENBQUM7RUFDL0IsQ0FBQyxDQUFDO0VBRUYyQyxvQkFBb0IsQ0FBQSxDQUFFO0VBRXRCLE9BQU9ILE1BQU07QUFDZjtBQUVBLE9BQU0sU0FBVVMsbUJBQW1CQSxDQUNqQ1QsTUFBa0MsRUFBQTtFQUVsQyxPQUFPQSxNQUFNLENBQUNVLE9BQU8sQ0FBQyxVQUFDQyxLQUFLO0lBQUEsT0FBS0EsS0FBSyxDQUFDekMsT0FBTztFQUFBLEVBQUM7QUFDakQ7QUFFQSxPQUFNLFNBQVUwQyxtQkFBbUJBLENBQUNwRCxNQUFvQixFQUFBO0VBQ3RELE9BQU8sQ0FDTEQsaUJBQWlCLENBQUNDLE1BQU0sQ0FBQyxFQUN6QkksZUFBZSxDQUFDSixNQUFNLENBQUNxRCxXQUFXLENBQUMsRUFDbkNyRCxNQUFNLENBQUNzRCxVQUFVLEVBQ2pCcEQsTUFBTSxDQUFDRixNQUFNLENBQUNHLEtBQUssQ0FBQyxDQUNyQixDQUNFZ0MsTUFBTSxDQUFDb0IsT0FBTyxDQUFDLENBQ2ZDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FDVEMsSUFBSSxDQUFBLENBQUU7QUFDWDtBQUVBLFNBQVNDLG1CQUFtQkEsQ0FDMUJDLFdBQW1CLEVBQ25CM0QsTUFBb0IsRUFDcEI0RCxZQUFpQyxFQUFBO0VBRWpDLElBQUksQ0FBQ0QsV0FBVyxDQUFDRixJQUFJLENBQUEsQ0FBRSxFQUFFO0lBQ3ZCLE9BQU8sSUFBSTtFQUNiO0VBRUEsSUFBSUcsWUFBWSxFQUFFO0lBQ2hCLE9BQU9BLFlBQVksQ0FBQ0QsV0FBVyxFQUFFM0QsTUFBTSxDQUFDO0VBQzFDO0VBRUEsT0FBT29ELG1CQUFtQixDQUFDcEQsTUFBTSxDQUFDLENBQUM2RCxXQUFXLENBQUEsQ0FBRSxDQUFDQyxRQUFRLENBQUNILFdBQVcsQ0FBQ0YsSUFBSSxDQUFBLENBQUUsQ0FBQ0ksV0FBVyxDQUFBLENBQUUsQ0FBQztBQUM3RjtBQUVBLE9BQU0sU0FBVUUsa0JBQWtCQSxDQUNoQ3ZCLE1BQWtDLEVBQ2xDbUIsV0FBbUIsRUFDbkJDLFlBQWlDLEVBQUE7RUFFakMsSUFBSSxDQUFDRCxXQUFXLENBQUNGLElBQUksQ0FBQSxDQUFFLEVBQUU7SUFDdkIsT0FBT2pCLE1BQU07RUFDZjtFQUVBLElBQU13QixxQkFBcUIsR0FBR0wsV0FBVyxDQUFDRixJQUFJLENBQUEsQ0FBRSxDQUFDSSxXQUFXLENBQUEsQ0FBRTtFQUU5RCxPQUFPckIsTUFBTSxDQUFDeUIsTUFBTSxDQUE2QixVQUFDQyxNQUFNLEVBQUVmLEtBQUssRUFBSTtJQUNqRSxJQUFNZ0IsY0FBYyxHQUFHL0QsZUFBZSxDQUFDK0MsS0FBSyxDQUFDbEQsS0FBSyxDQUFDLENBQUM0RCxXQUFXLENBQUEsQ0FBRTtJQUNqRSxJQUFNTyxjQUFjLEdBQUdELGNBQWMsQ0FBQ0wsUUFBUSxDQUFDRSxxQkFBcUIsQ0FBQyxHQUNqRWIsS0FBSyxDQUFDekMsT0FBTyxHQUNieUMsS0FBSyxDQUFDekMsT0FBTyxDQUFDeUIsTUFBTSxDQUFDLFVBQUNuQyxNQUFNO01BQUEsT0FBSzBELG1CQUFtQixDQUFDQyxXQUFXLEVBQUUzRCxNQUFNLEVBQUU0RCxZQUFZLENBQUM7SUFBQSxFQUFDO0lBRTVGLElBQUlRLGNBQWMsQ0FBQ3JELE1BQU0sS0FBSyxDQUFDLEVBQUU7TUFDL0IsT0FBT21ELE1BQU07SUFDZjtJQUVBQSxNQUFNLENBQUN0QixJQUFJLENBQUF5QixNQUFBLENBQUFDLE1BQUEsQ0FBQUQsTUFBQSxDQUFBQyxNQUFBLENBQUEsQ0FBQSxDQUFBLEVBQ05uQixLQUFLLENBQUEsRUFBQTtNQUNSekMsT0FBTyxFQUFFMEQ7SUFBYyxDQUFBLENBQUEsQ0FDdkI7SUFFRixPQUFPRixNQUFNO0VBQ2YsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNSO0FBRUEsT0FBTSxTQUFVSyxnQkFBZ0JBLENBQUNwRSxLQUFrQixFQUFBO0VBQ2pELE9BQU9JLEtBQUssQ0FBQ0MsT0FBTyxDQUFDTCxLQUFLLENBQUMsR0FBR0EsS0FBSyxHQUFHLEVBQUU7QUFDMUM7QUFFQSxPQUFNLFNBQVVxRSxrQkFBa0JBLENBQ2hDOUQsT0FBdUIsRUFDdkIrRCxNQUEyQixFQUFBO0VBRTNCLElBQU1DLGNBQWMsR0FBRyxJQUFJQyxHQUFHLENBQUNGLE1BQU0sQ0FBQztFQUN0QyxPQUFPL0QsT0FBTyxDQUFDeUIsTUFBTSxDQUFDLFVBQUNuQyxNQUFNO0lBQUEsT0FBSzBFLGNBQWMsQ0FBQy9DLEdBQUcsQ0FBQzNCLE1BQU0sQ0FBQ0csS0FBSyxDQUFDO0VBQUEsRUFBQztBQUNyRTtBQUVBLE9BQU0sU0FBVXlFLG1CQUFtQkEsQ0FDakNDLFlBQXlCLEVBQ3pCckQsV0FBOEIsRUFBQTtFQUU5QixJQUFNaUQsTUFBTSxHQUFHRixnQkFBZ0IsQ0FBQ00sWUFBWSxDQUFDO0VBRTdDLElBQUlKLE1BQU0sQ0FBQ1gsUUFBUSxDQUFDdEMsV0FBVyxDQUFDLEVBQUU7SUFDaEMsT0FBT2lELE1BQU0sQ0FBQ3RDLE1BQU0sQ0FBQyxVQUFDRixJQUFJO01BQUEsT0FBS0EsSUFBSSxLQUFLVCxXQUFXO0lBQUEsRUFBQztFQUN0RDtFQUVBLFVBQUFzQixNQUFBLENBQUFnQyxrQkFBQSxDQUFXTCxNQUFNLElBQUVqRCxXQUFXO0FBQ2hDO0FBRUEsT0FBTSxTQUFVdUQsbUJBQW1CQSxDQUNqQ0YsWUFBeUIsRUFDekJyRCxXQUE4QixFQUFBO0VBRTlCLE9BQU8rQyxnQkFBZ0IsQ0FBQ00sWUFBWSxDQUFDLENBQUMxQyxNQUFNLENBQUMsVUFBQ0YsSUFBSTtJQUFBLE9BQUtBLElBQUksS0FBS1QsV0FBVztFQUFBLEVBQUM7QUFDOUU7QUFFQSxPQUFNLFNBQVV3RCxnQkFBZ0JBLENBQzlCN0UsS0FBa0IsRUFDbEJHLFFBQWlCLEVBQ2pCa0IsV0FBOEIsRUFBQTtFQUU5QixPQUFPbkIscUJBQXFCLENBQUNGLEtBQUssRUFBRUcsUUFBUSxDQUFDLEdBQ3pDSCxLQUFLLENBQUMyRCxRQUFRLENBQUN0QyxXQUFXLENBQUMsR0FDM0JyQixLQUFLLEtBQUtxQixXQUFXO0FBQzNCIiwiZmlsZSI6ImNvbXBvbmVudHMvU2VsZWN0L3V0aWxzLmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCJleHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplU2l6ZShzaXplKSB7XG4gICAgaWYgKHNpemUgPT09ICdzbWFsbCcgfHwgc2l6ZSA9PT0gJ2V4dHJhLXNtYWxsJylcbiAgICAgICAgcmV0dXJuIHNpemU7XG4gICAgcmV0dXJuICdsYXJnZSc7XG59XG4vLyBgZXh0cmEtc21hbGxgIGlzIGEgMzJweCB0cmlnZ2VyIHRoYXQgcmVuZGVycyBpdHMgdmFsdWUgYXQgYGJvZHkgc21gICgxMnB4KSBzb1xuLy8gdGhlIGNvbGxhcHNlZCB0cmlnZ2VyIG1hdGNoZXMgdGhlIDEycHggb3B0aW9uIHJvd3MgdGhlIEZpbHRlciBkcm9wZG93bnNcbi8vIChPcHRpb25GaWx0ZXIvRGF0ZVJhbmdlL0Fzc2V0L0FjY291bnQpIHJlbmRlciBpbiB0aGUgb3BlbiBwYW5lbC4gVGhpcyBzaXplXG4vLyBhbHNvIGZsb3dzIGludG8gYHJlbmRlclZhbHVlTWV0YS5mb250U2l6ZWAsIGtlZXBpbmcgY3VzdG9tIHRyaWdnZXIvb3B0aW9uXG4vLyBjb250ZW50IGFsaWduZWQgd2l0aCB0aGUgdHJpZ2dlciB0eXBvZ3JhcGh5LlxuY29uc3QgRk9OVF9TSVpFX0JZX1NFTEVDVF9TSVpFID0ge1xuICAgIGxhcmdlOiAnbGcnLFxuICAgIHNtYWxsOiAnbWQnLFxuICAgICdleHRyYS1zbWFsbCc6ICdzbScsXG59O1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZvbnRTaXplKHNpemUpIHtcbiAgICByZXR1cm4gRk9OVF9TSVpFX0JZX1NFTEVDVF9TSVpFW3NpemVdO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RPcHRpb25UZXh0KG9wdGlvbikge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9uLmxhYmVsID09PSAnc3RyaW5nJyB8fCB0eXBlb2Ygb3B0aW9uLmxhYmVsID09PSAnbnVtYmVyJykge1xuICAgICAgICByZXR1cm4gU3RyaW5nKG9wdGlvbi5sYWJlbCk7XG4gICAgfVxuICAgIHJldHVybiBTdHJpbmcob3B0aW9uLnZhbHVlKTtcbn1cbmZ1bmN0aW9uIGV4dHJhY3ROb2RlVGV4dCh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiAnJztcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1NlbGVjdE11bHRpcGxlVmFsdWUodmFsdWUsIG11bHRpcGxlKSB7XG4gICAgcmV0dXJuIG11bHRpcGxlICYmIEFycmF5LmlzQXJyYXkodmFsdWUpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzU2VsZWN0T3B0aW9uR3JvdXAob3B0aW9uKSB7XG4gICAgcmV0dXJuICdvcHRpb25zJyBpbiBvcHRpb24gJiYgQXJyYXkuaXNBcnJheShvcHRpb24ub3B0aW9ucyk7XG59XG5mdW5jdGlvbiBmaW5kT3B0aW9uQnlWYWx1ZShvcHRpb25zLCB2YWx1ZSkge1xuICAgIHZhciBfYTtcbiAgICByZXR1cm4gKF9hID0gb3B0aW9ucy5maW5kKChvcHRpb24pID0+IG9wdGlvbi52YWx1ZSA9PT0gdmFsdWUpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBudWxsO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFNlbGVjdGVkT3B0aW9ucyhvcHRpb25zLCB2YWx1ZSwgbXVsdGlwbGUpIHtcbiAgICBpZiAoaXNTZWxlY3RNdWx0aXBsZVZhbHVlKHZhbHVlLCBtdWx0aXBsZSkpIHtcbiAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgY29uc3Qgb3B0aW9uc0J5VmFsdWUgPSBuZXcgTWFwKCk7XG4gICAgICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGNvbnN0IG9wdGlvblZhbHVlID0gb3B0aW9uLnZhbHVlO1xuICAgICAgICAgICAgLy8gYGZpbmRgIHVzZWQgc3RyaWN0IGVxdWFsaXR5OiBOYU4gbmV2ZXIgbWF0Y2hlZCwgYW5kIGR1cGxpY2F0ZSB2YWx1ZXNcbiAgICAgICAgICAgIC8vIHJlc29sdmVkIHRvIHRoZSBmaXJzdCBvcHRpb24uIE1hcCBhbG9uZSB3b3VsZCBjaGFuZ2UgYm90aCBydWxlcy5cbiAgICAgICAgICAgIGlmICghTnVtYmVyLmlzTmFOKG9wdGlvblZhbHVlKSAmJiAhb3B0aW9uc0J5VmFsdWUuaGFzKG9wdGlvblZhbHVlKSkge1xuICAgICAgICAgICAgICAgIG9wdGlvbnNCeVZhbHVlLnNldChvcHRpb25WYWx1ZSwgb3B0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWVcbiAgICAgICAgICAgIC5tYXAoKGl0ZW0pID0+IHsgdmFyIF9hOyByZXR1cm4gKF9hID0gb3B0aW9uc0J5VmFsdWUuZ2V0KGl0ZW0pKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBudWxsOyB9KVxuICAgICAgICAgICAgLmZpbHRlcigob3B0aW9uKSA9PiBvcHRpb24gIT09IG51bGwpO1xuICAgIH1cbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgY29uc3QgbWF0Y2hlZCA9IGZpbmRPcHRpb25CeVZhbHVlKG9wdGlvbnMsIHZhbHVlKTtcbiAgICByZXR1cm4gbWF0Y2hlZCA/IFttYXRjaGVkXSA6IFtdO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldE9wdGlvblRhZ0xhYmVsKG9wdGlvbikge1xuICAgIHJldHVybiBleHRyYWN0T3B0aW9uVGV4dChvcHRpb24pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZU9wdGlvbkdyb3VwcyhvcHRpb25zKSB7XG4gICAgY29uc3QgZ3JvdXBzID0gW107XG4gICAgbGV0IHVuZ3JvdXBlZE9wdGlvbnMgPSBbXTtcbiAgICBsZXQgdW5ncm91cGVkR3JvdXBJbmRleCA9IDA7XG4gICAgY29uc3QgcHVzaFVuZ3JvdXBlZE9wdGlvbnMgPSAoKSA9PiB7XG4gICAgICAgIGlmICh1bmdyb3VwZWRPcHRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGdyb3Vwcy5wdXNoKHtcbiAgICAgICAgICAgIGtleTogYHVuZ3JvdXBlZC0ke3VuZ3JvdXBlZEdyb3VwSW5kZXh9YCxcbiAgICAgICAgICAgIG9wdGlvbnM6IHVuZ3JvdXBlZE9wdGlvbnMsXG4gICAgICAgIH0pO1xuICAgICAgICB1bmdyb3VwZWRPcHRpb25zID0gW107XG4gICAgICAgIHVuZ3JvdXBlZEdyb3VwSW5kZXggKz0gMTtcbiAgICB9O1xuICAgIG9wdGlvbnMuZm9yRWFjaCgob3B0aW9uLCBpbmRleCkgPT4ge1xuICAgICAgICBpZiAoaXNTZWxlY3RPcHRpb25Hcm91cChvcHRpb24pKSB7XG4gICAgICAgICAgICBwdXNoVW5ncm91cGVkT3B0aW9ucygpO1xuICAgICAgICAgICAgZ3JvdXBzLnB1c2goe1xuICAgICAgICAgICAgICAgIGtleTogb3B0aW9uLmtleSA/IFN0cmluZyhvcHRpb24ua2V5KSA6IGBncm91cC0ke2luZGV4fWAsXG4gICAgICAgICAgICAgICAgbGFiZWw6IG9wdGlvbi5sYWJlbCxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBvcHRpb24ub3B0aW9ucyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHVuZ3JvdXBlZE9wdGlvbnMucHVzaChvcHRpb24pO1xuICAgIH0pO1xuICAgIHB1c2hVbmdyb3VwZWRPcHRpb25zKCk7XG4gICAgcmV0dXJuIGdyb3Vwcztcbn1cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuT3B0aW9uR3JvdXBzKGdyb3Vwcykge1xuICAgIHJldHVybiBncm91cHMuZmxhdE1hcCgoZ3JvdXApID0+IGdyb3VwLm9wdGlvbnMpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldE9wdGlvblNlYXJjaFRleHQob3B0aW9uKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgZXh0cmFjdE9wdGlvblRleHQob3B0aW9uKSxcbiAgICAgICAgZXh0cmFjdE5vZGVUZXh0KG9wdGlvbi5kZXNjcmlwdGlvbiksXG4gICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0LFxuICAgICAgICBTdHJpbmcob3B0aW9uLnZhbHVlKSxcbiAgICBdXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgLmpvaW4oJyAnKVxuICAgICAgICAudHJpbSgpO1xufVxuZnVuY3Rpb24gbWF0Y2hlc09wdGlvblNlYXJjaChzZWFyY2hWYWx1ZSwgb3B0aW9uLCBmaWx0ZXJPcHRpb24pIHtcbiAgICBpZiAoIXNlYXJjaFZhbHVlLnRyaW0oKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGZpbHRlck9wdGlvbikge1xuICAgICAgICByZXR1cm4gZmlsdGVyT3B0aW9uKHNlYXJjaFZhbHVlLCBvcHRpb24pO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0T3B0aW9uU2VhcmNoVGV4dChvcHRpb24pLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlck9wdGlvbkdyb3Vwcyhncm91cHMsIHNlYXJjaFZhbHVlLCBmaWx0ZXJPcHRpb24pIHtcbiAgICBpZiAoIXNlYXJjaFZhbHVlLnRyaW0oKSkge1xuICAgICAgICByZXR1cm4gZ3JvdXBzO1xuICAgIH1cbiAgICBjb25zdCBub3JtYWxpemVkU2VhcmNoVmFsdWUgPSBzZWFyY2hWYWx1ZS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gZ3JvdXBzLnJlZHVjZSgocmVzdWx0LCBncm91cCkgPT4ge1xuICAgICAgICBjb25zdCBncm91cExhYmVsVGV4dCA9IGV4dHJhY3ROb2RlVGV4dChncm91cC5sYWJlbCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgY29uc3QgbWF0Y2hlZE9wdGlvbnMgPSBncm91cExhYmVsVGV4dC5pbmNsdWRlcyhub3JtYWxpemVkU2VhcmNoVmFsdWUpXG4gICAgICAgICAgICA/IGdyb3VwLm9wdGlvbnNcbiAgICAgICAgICAgIDogZ3JvdXAub3B0aW9ucy5maWx0ZXIoKG9wdGlvbikgPT4gbWF0Y2hlc09wdGlvblNlYXJjaChzZWFyY2hWYWx1ZSwgb3B0aW9uLCBmaWx0ZXJPcHRpb24pKTtcbiAgICAgICAgaWYgKG1hdGNoZWRPcHRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQucHVzaChPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGdyb3VwKSwgeyBvcHRpb25zOiBtYXRjaGVkT3B0aW9ucyB9KSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSwgW10pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldE11bHRpcGxlVmFsdWUodmFsdWUpIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFtdO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldE9wdGlvbnNCeVZhbHVlcyhvcHRpb25zLCB2YWx1ZXMpIHtcbiAgICBjb25zdCBzZWxlY3RlZFZhbHVlcyA9IG5ldyBTZXQodmFsdWVzKTtcbiAgICByZXR1cm4gb3B0aW9ucy5maWx0ZXIoKG9wdGlvbikgPT4gc2VsZWN0ZWRWYWx1ZXMuaGFzKG9wdGlvbi52YWx1ZSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHRvZ2dsZU11bHRpcGxlVmFsdWUoY3VycmVudFZhbHVlLCBvcHRpb25WYWx1ZSkge1xuICAgIGNvbnN0IHZhbHVlcyA9IGdldE11bHRpcGxlVmFsdWUoY3VycmVudFZhbHVlKTtcbiAgICBpZiAodmFsdWVzLmluY2x1ZGVzKG9wdGlvblZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWVzLmZpbHRlcigoaXRlbSkgPT4gaXRlbSAhPT0gb3B0aW9uVmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gWy4uLnZhbHVlcywgb3B0aW9uVmFsdWVdO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZU11bHRpcGxlVmFsdWUoY3VycmVudFZhbHVlLCBvcHRpb25WYWx1ZSkge1xuICAgIHJldHVybiBnZXRNdWx0aXBsZVZhbHVlKGN1cnJlbnRWYWx1ZSkuZmlsdGVyKChpdGVtKSA9PiBpdGVtICE9PSBvcHRpb25WYWx1ZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNPcHRpb25TZWxlY3RlZCh2YWx1ZSwgbXVsdGlwbGUsIG9wdGlvblZhbHVlKSB7XG4gICAgcmV0dXJuIGlzU2VsZWN0TXVsdGlwbGVWYWx1ZSh2YWx1ZSwgbXVsdGlwbGUpXG4gICAgICAgID8gdmFsdWUuaW5jbHVkZXMob3B0aW9uVmFsdWUpXG4gICAgICAgIDogdmFsdWUgPT09IG9wdGlvblZhbHVlO1xufSJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
@@ -0,0 +1,2 @@
1
+ import type { RefObject } from 'react';
2
+ export declare const useDialogFocus: (active: boolean, dialogRef: RefObject<HTMLDivElement | null>) => void;
@@ -0,0 +1,22 @@
1
+ import { useEffect, useRef } from 'react';
2
+ export var useDialogFocus = function useDialogFocus(active, dialogRef) {
3
+ var previousActiveElementRef = useRef(null);
4
+ useEffect(function () {
5
+ if (!active || typeof document === 'undefined') return undefined;
6
+ previousActiveElementRef.current = document.activeElement instanceof HTMLElement ? document.activeElement : null;
7
+ var frame = window.requestAnimationFrame(function () {
8
+ var _a;
9
+ (_a = dialogRef.current) === null || _a === void 0 ? void 0 : _a.focus();
10
+ });
11
+ return function () {
12
+ window.cancelAnimationFrame(frame);
13
+ };
14
+ }, [active, dialogRef]);
15
+ useEffect(function () {
16
+ var _a, _b;
17
+ if (active) return;
18
+ (_b = (_a = previousActiveElementRef.current) === null || _a === void 0 ? void 0 : _a.focus) === null || _b === void 0 ? void 0 : _b.call(_a);
19
+ previousActiveElementRef.current = null;
20
+ }, [active]);
21
+ };
22
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9ob29rcy91c2VEaWFsb2dGb2N1cy50cyIsImhvb2tzL3VzZURpYWxvZ0ZvY3VzLmpzIl0sIm5hbWVzIjpbInVzZUVmZmVjdCIsInVzZVJlZiIsInVzZURpYWxvZ0ZvY3VzIiwiYWN0aXZlIiwiZGlhbG9nUmVmIiwicHJldmlvdXNBY3RpdmVFbGVtZW50UmVmIiwiZG9jdW1lbnQiLCJ1bmRlZmluZWQiLCJjdXJyZW50IiwiYWN0aXZlRWxlbWVudCIsIkhUTUxFbGVtZW50IiwiZnJhbWUiLCJ3aW5kb3ciLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJfYSIsImZvY3VzIiwiY2FuY2VsQW5pbWF0aW9uRnJhbWUiLCJfYiIsImNhbGwiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFNBQVMsRUFBRUMsTUFBTSxRQUFRLE9BQU87QUFHekMsT0FBTyxJQUFNQyxjQUFjLEdBQUcsU0FBakJBLGNBQWNBLENBQ3pCQyxNQUFlLEVBQ2ZDLFNBQTJDLEVBQ3pDO0VBQ0YsSUFBTUMsd0JBQXdCLEdBQUdKLE1BQU0sQ0FBcUIsSUFBSSxDQUFDO0VBRWpFRCxTQUFTLENBQUMsWUFBSztJQUNiLElBQUksQ0FBQ0csTUFBTSxJQUFJLE9BQU9HLFFBQVEsS0FBSyxXQUFXLEVBQUUsT0FBT0MsU0FBUztJQUVoRUYsd0JBQXdCLENBQUNHLE9BQU8sR0FDOUJGLFFBQVEsQ0FBQ0csYUFBYSxZQUFZQyxXQUFXLEdBQUdKLFFBQVEsQ0FBQ0csYUFBYSxHQUFHLElBQUk7SUFFL0UsSUFBTUUsS0FBSyxHQUFHQyxNQUFNLENBQUNDLHFCQUFxQixDQUFDLFlBQUs7TUNOeEMsSUFBSUMsRUFBRTtNRE9aLENBQUFBLEVBQUEsR0FBQVYsU0FBUyxDQUFDSSxPQUFPLE1BQUEsSUFBQSxJQUFBTSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUFBLEVBQUEsQ0FBRUMsS0FBSyxDQUFBLENBQUU7SUFDNUIsQ0FBQyxDQUFDO0lBRUYsT0FBTyxZQUFLO01BQ1ZILE1BQU0sQ0FBQ0ksb0JBQW9CLENBQUNMLEtBQUssQ0FBQztJQUNwQyxDQUFDO0VBQ0gsQ0FBQyxFQUFFLENBQUNSLE1BQU0sRUFBRUMsU0FBUyxDQUFDLENBQUM7RUFFdkJKLFNBQVMsQ0FBQyxZQUFLO0lDUFQsSUFBSWMsRUFBRSxFQUFFRyxFQUFFO0lEUWQsSUFBSWQsTUFBTSxFQUFFO0lBRVosQ0FBQWMsRUFBQSxHQUFBLENBQUFILEVBQUEsR0FBQVQsd0JBQXdCLENBQUNHLE9BQU8sTUFBQSxJQUFBLElBQUFNLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxDQUFFQyxLQUFLLE1BQUEsSUFBQSxJQUFBRSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUFBLEVBQUEsQ0FBQUMsSUFBQSxDQUFBSixFQUFBLENBQUk7SUFDM0NULHdCQUF3QixDQUFDRyxPQUFPLEdBQUcsSUFBSTtFQUN6QyxDQUFDLEVBQUUsQ0FBQ0wsTUFBTSxDQUFDLENBQUM7QUFDZCxDQUFDIiwiZmlsZSI6Imhvb2tzL3VzZURpYWxvZ0ZvY3VzLmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmV4cG9ydCBjb25zdCB1c2VEaWFsb2dGb2N1cyA9IChhY3RpdmUsIGRpYWxvZ1JlZikgPT4ge1xuICAgIGNvbnN0IHByZXZpb3VzQWN0aXZlRWxlbWVudFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoIWFjdGl2ZSB8fCB0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKVxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgcHJldmlvdXNBY3RpdmVFbGVtZW50UmVmLmN1cnJlbnQgPVxuICAgICAgICAgICAgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ID8gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA6IG51bGw7XG4gICAgICAgIGNvbnN0IGZyYW1lID0gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAoX2EgPSBkaWFsb2dSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZvY3VzKCk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKGZyYW1lKTtcbiAgICAgICAgfTtcbiAgICB9LCBbYWN0aXZlLCBkaWFsb2dSZWZdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICBpZiAoYWN0aXZlKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAoX2IgPSAoX2EgPSBwcmV2aW91c0FjdGl2ZUVsZW1lbnRSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZvY3VzKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbChfYSk7XG4gICAgICAgIHByZXZpb3VzQWN0aXZlRWxlbWVudFJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICB9LCBbYWN0aXZlXSk7XG59OyJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=