@1money/component-ui 0.1.0 → 0.1.2

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.
@@ -10,10 +10,11 @@ var __rest = this && this.__rest || function (s, e) {
10
10
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
11
  import { memo } from 'react';
12
12
  import { Copy } from '../../../components/Copy';
13
+ import { Skeleton } from '../../../components/Skeleton';
13
14
  import { Tag } from '../../../components/Tag';
14
15
  import { Typography } from '../../../components/Typography';
15
16
  import { default as classnames, joinCls } from '../../../utils/classnames';
16
- import { DESCRIPTIONS_DEFAULTS, DESCRIPTIONS_PREFIX, DESCRIPTIONS_SLOT, DESCRIPTIONS_TONE_COLOR, DESCRIPTIONS_TONE_TAG } from './constants';
17
+ import { DESCRIPTIONS_DEFAULTS, DESCRIPTIONS_PREFIX, DESCRIPTIONS_SKELETON, DESCRIPTIONS_SLOT, DESCRIPTIONS_TONE_COLOR, DESCRIPTIONS_TONE_TAG } from './constants';
17
18
  import './style';
18
19
  var copyTextOf = function copyTextOf(row) {
19
20
  if (!row.copyable) return null;
@@ -72,6 +73,32 @@ var Row = function Row(_ref2) {
72
73
  })]
73
74
  });
74
75
  };
76
+ /**
77
+ * A row-shaped placeholder: one bar per CELL, so the row's own layout places
78
+ * them, against the same hairline and padding as a real row. The two cells
79
+ * split the row evenly (see `-row-skeleton`) and each bar fills its cell —
80
+ * there is no label text to size the left one to.
81
+ */
82
+ var SkeletonRow = function SkeletonRow(_ref3) {
83
+ var classes = _ref3.classes;
84
+ return _jsxs("div", {
85
+ className: joinCls(classes(DESCRIPTIONS_SLOT.row), classes("".concat(DESCRIPTIONS_SLOT.row, "-skeleton"))),
86
+ children: [_jsx("div", {
87
+ className: classes(DESCRIPTIONS_SLOT.label),
88
+ children: _jsx(Skeleton, {
89
+ height: DESCRIPTIONS_SKELETON.height,
90
+ borderRadius: DESCRIPTIONS_SKELETON.borderRadius
91
+ })
92
+ }), _jsx("div", {
93
+ className: classes(DESCRIPTIONS_SLOT.value),
94
+ children: _jsx(Skeleton, {
95
+ height: DESCRIPTIONS_SKELETON.height,
96
+ borderRadius: DESCRIPTIONS_SKELETON.borderRadius
97
+ })
98
+ })]
99
+ });
100
+ };
101
+ SkeletonRow.displayName = 'DescriptionsSkeletonRow';
75
102
  /**
76
103
  * Hairline-separated label/value rows. Rows are pure data — typography,
77
104
  * spacing, hairlines, copy buttons, tags, tones, and the highlight state are
@@ -81,13 +108,32 @@ var Row = function Row(_ref2) {
81
108
  var DescriptionsBase = function DescriptionsBase(_a) {
82
109
  var rows = _a.rows,
83
110
  copyContained = _a.copyContained,
111
+ loading = _a.loading,
112
+ _a$loadingRows = _a.loadingRows,
113
+ loadingRows = _a$loadingRows === void 0 ? DESCRIPTIONS_DEFAULTS.loadingRows : _a$loadingRows,
84
114
  onCopySuccess = _a.onCopySuccess,
85
115
  onCopyError = _a.onCopyError,
86
116
  _a$prefixCls = _a.prefixCls,
87
117
  prefixCls = _a$prefixCls === void 0 ? DESCRIPTIONS_PREFIX : _a$prefixCls,
88
118
  className = _a.className,
89
- rest = __rest(_a, ["rows", "copyContained", "onCopySuccess", "onCopyError", "prefixCls", "className"]);
119
+ rest = __rest(_a, ["rows", "copyContained", "loading", "loadingRows", "onCopySuccess", "onCopyError", "prefixCls", "className"]);
90
120
  var classes = classnames(prefixCls);
121
+ // Ahead of the empty-rows guard below: a list that is still loading has no
122
+ // rows yet by definition, so the caller passes the real (empty) array and
123
+ // the placeholder is what there is to show.
124
+ if (loading) {
125
+ return _jsx("div", Object.assign({}, rest, {
126
+ "aria-busy": 'true',
127
+ className: joinCls(classes(), className),
128
+ children: Array.from({
129
+ length: loadingRows
130
+ }, function (_, index) {
131
+ return _jsx(SkeletonRow, {
132
+ classes: classes
133
+ }, index);
134
+ })
135
+ }));
136
+ }
91
137
  // No rows → render NOTHING, not an empty container. A zero-height div is
92
138
  // still a flex/grid item in whatever lays the host out, so it silently eats
93
139
  // an extra `gap` between the siblings on either side of it: a details dialog
@@ -110,4 +156,4 @@ var DescriptionsBase = function DescriptionsBase(_a) {
110
156
  }));
111
157
  };
112
158
  export var Descriptions = /*#__PURE__*/memo(DescriptionsBase);
113
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1c2luZXNzL0RpYWxvZy9EZXNjcmlwdGlvbnMvRGVzY3JpcHRpb25zLmpzIiwiYnVzaW5lc3MvRGlhbG9nL3NyYy9idXNpbmVzcy9EaWFsb2cvRGVzY3JpcHRpb25zL0Rlc2NyaXB0aW9ucy50c3giXSwibmFtZXMiOlsiX19yZXN0IiwicyIsImUiLCJ0IiwicCIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJpIiwibGVuZ3RoIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwibWVtbyIsIkNvcHkiLCJUYWciLCJUeXBvZ3JhcGh5IiwiZGVmYXVsdCIsImNsYXNzbmFtZXMiLCJqb2luQ2xzIiwiREVTQ1JJUFRJT05TX0RFRkFVTFRTIiwiREVTQ1JJUFRJT05TX1BSRUZJWCIsIkRFU0NSSVBUSU9OU19TTE9UIiwiREVTQ1JJUFRJT05TX1RPTkVfQ09MT1IiLCJERVNDUklQVElPTlNfVE9ORV9UQUciLCJjb3B5VGV4dE9mIiwicm93IiwiY29weWFibGUiLCJfdHlwZW9mIiwidGV4dCIsInZhbHVlIiwiU3RyaW5nIiwiUm93VmFsdWUiLCJfcmVmIiwiX2EiLCJ0b25lIiwidGFnIiwiY29sb3IiLCJzaXplIiwibGFiZWwiLCJCb2R5IiwiZW1waGFzaXMiLCJzdHJvbmciLCJjaGlsZHJlbiIsIlJvdyIsIl9yZWYyIiwiY2xhc3NlcyIsIl9yZWYyJGNvcHlDb250YWluZWQiLCJjb3B5Q29udGFpbmVkIiwib25Db3B5U3VjY2VzcyIsIm9uQ29weUVycm9yIiwiY29weVRleHQiLCJjbGFzc05hbWUiLCJoaWdobGlnaHQiLCJjb25jYXQiLCJsYWJlbENscyIsInZhbHVlQ2xzIiwiY29udGFpbmVkIiwiaWNvblNpemUiLCJjb3B5SWNvblNpemUiLCJvblN1Y2Nlc3MiLCJvbkVycm9yIiwiRGVzY3JpcHRpb25zQmFzZSIsInJvd3MiLCJfYSRwcmVmaXhDbHMiLCJwcmVmaXhDbHMiLCJyZXN0IiwiYXNzaWduIiwibWFwIiwiaW5kZXgiLCJrZXkiLCJEZXNjcmlwdGlvbnMiXSwibWFwcGluZ3MiOiI7QUFBQSxJQUFJQSxNQUFNLEdBQUksSUFBSSxJQUFJLElBQUksQ0FBQ0EsTUFBTSxJQUFLLFVBQVVDLENBQUMsRUFBRUMsQ0FBQyxFQUFFO0VBQ2xELElBQUlDLENBQUMsR0FBRyxDQUFDLENBQUM7RUFDVixLQUFLLElBQUlDLENBQUMsSUFBSUgsQ0FBQyxFQUFFLElBQUlJLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDQyxjQUFjLENBQUNDLElBQUksQ0FBQ1AsQ0FBQyxFQUFFRyxDQUFDLENBQUMsSUFBSUYsQ0FBQyxDQUFDTyxPQUFPLENBQUNMLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFDL0VELENBQUMsQ0FBQ0MsQ0FBQyxDQUFDLEdBQUdILENBQUMsQ0FBQ0csQ0FBQyxDQUFDO0VBQ2YsSUFBSUgsQ0FBQyxJQUFJLElBQUksSUFBSSxPQUFPSSxNQUFNLENBQUNLLHFCQUFxQixLQUFLLFVBQVUsRUFDL0QsS0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxFQUFFUCxDQUFDLEdBQUdDLE1BQU0sQ0FBQ0sscUJBQXFCLENBQUNULENBQUMsQ0FBQyxFQUFFVSxDQUFDLEdBQUdQLENBQUMsQ0FBQ1EsTUFBTSxFQUFFRCxDQUFDLEVBQUUsRUFBRTtJQUNwRSxJQUFJVCxDQUFDLENBQUNPLE9BQU8sQ0FBQ0wsQ0FBQyxDQUFDTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSU4sTUFBTSxDQUFDQyxTQUFTLENBQUNPLG9CQUFvQixDQUFDTCxJQUFJLENBQUNQLENBQUMsRUFBRUcsQ0FBQyxDQUFDTyxDQUFDLENBQUMsQ0FBQyxFQUMxRVIsQ0FBQyxDQUFDQyxDQUFDLENBQUNPLENBQUMsQ0FBQyxDQUFDLEdBQUdWLENBQUMsQ0FBQ0csQ0FBQyxDQUFDTyxDQUFDLENBQUMsQ0FBQztFQUN6QjtFQUNKLE9BQU9SLENBQUM7QUFDWixDQUFDO0FB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RztRQUNSb0IsT0FBTyxFQUFFQSxPQUFPO1FBQ2hCRSxhQUFhLEVBQUVBLGFBQWE7UUFDNUJDLGFBQWEsRUFBRUEsYUFBYTtRQUM1QkMsV0FBVyxFQUFFQTtNQUFXLENBQUEsRUFMbkIsQ0FBQWhCLEVBQUEsR0FBQVIsR0FBRyxDQUFDNEMsR0FBRyxNQUFBLElBQUEsSUFBQXBDLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxHQUFJbUMsS0FBSyxDQU1yQjtJRHpERixDQzBERDtFQUFDLENBQUEsQ0FBQSxDQUNFO0FBRVYsQ0FBQztBQUVELE9BQU8sSUFBTUUsWUFBWSxnQkFBRzFELElBQUksQ0FBQ2lELGdCQUFnQixDQUFDIiwiZmlsZSI6ImJ1c2luZXNzL0RpYWxvZy9EZXNjcmlwdGlvbnMvRGVzY3JpcHRpb25zLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IG1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBDb3B5IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9Db3B5JztcbmltcG9ydCB7IFRhZyB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvVGFnJztcbmltcG9ydCB7IFR5cG9ncmFwaHkgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL1R5cG9ncmFwaHknO1xuaW1wb3J0IHsgZGVmYXVsdCBhcyBjbGFzc25hbWVzLCBqb2luQ2xzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvY2xhc3NuYW1lcyc7XG5pbXBvcnQgeyBERVNDUklQVElPTlNfREVGQVVMVFMsIERFU0NSSVBUSU9OU19QUkVGSVgsIERFU0NSSVBUSU9OU19TTE9ULCBERVNDUklQVElPTlNfVE9ORV9DT0xPUiwgREVTQ1JJUFRJT05TX1RPTkVfVEFHLCB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCAnLi9zdHlsZSc7XG5jb25zdCBjb3B5VGV4dE9mID0gKHJvdykgPT4ge1xuICAgIGlmICghcm93LmNvcHlhYmxlKVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICBpZiAodHlwZW9mIHJvdy5jb3B5YWJsZSA9PT0gJ29iamVjdCcpXG4gICAgICAgIHJldHVybiByb3cuY29weWFibGUudGV4dDtcbiAgICByZXR1cm4gdHlwZW9mIHJvdy52YWx1ZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHJvdy52YWx1ZSA9PT0gJ251bWJlcidcbiAgICAgICAgPyBTdHJpbmcocm93LnZhbHVlKVxuICAgICAgICA6IG51bGw7XG59O1xuY29uc3QgUm93VmFsdWUgPSAoeyByb3cgfSkgPT4ge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCB0b25lID0gKF9hID0gcm93LnRvbmUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICdkZWZhdWx0JztcbiAgICAvLyBUYWcgcmVuZGVyaW5nIG5lZWRzIGEgcGxhaW4tdGV4dCB2YWx1ZSAodGhlIFRhZyBgbGFiZWxgIGNvbnRyYWN0KTtcbiAgICAvLyBub24tdGV4dCB2YWx1ZXMgZmFsbCBiYWNrIHRvIHRoZSByZWd1bGFyIHR5cG9ncmFwaHkgcmVuZGVyaW5nLlxuICAgIGlmIChyb3cudGFnICYmICh0eXBlb2Ygcm93LnZhbHVlID09PSAnc3RyaW5nJyB8fCB0eXBlb2Ygcm93LnZhbHVlID09PSAnbnVtYmVyJykpIHtcbiAgICAgICAgcmV0dXJuIChfanN4KFRhZywgeyBjb2xvcjogdHlwZW9mIHJvdy50YWcgPT09ICdzdHJpbmcnID8gcm93LnRhZyA6IERFU0NSSVBUSU9OU19UT05FX1RBR1t0b25lXSwgc2l6ZTogJ21lZGl1bScsIGxhYmVsOiBTdHJpbmcocm93LnZhbHVlKSB9KSk7XG4gICAgfVxuICAgIC8vIERldGFpbHMgcm93cyBhcmUgQm9keSBTbWFsbCAoMTIvMTYpOyBgZW1waGFzaXNgIGJ1bXBzIHRvIEJvZHkgTWVkaXVtLlxuICAgIHJldHVybiAoX2pzeChUeXBvZ3JhcGh5LkJvZHksIHsgc2l6ZTogcm93LmVtcGhhc2lzID8gJ21kJyA6ICdzbScsIHN0cm9uZzogdHJ1ZSwgY29sb3I6IERFU0NSSVBUSU9OU19UT05FX0NPTE9SW3RvbmVdLCBjaGlsZHJlbjogcm93LnZhbHVlIH0pKTtcbn07XG5jb25zdCBSb3cgPSAoeyByb3csIGNsYXNzZXMsIGNvcHlDb250YWluZWQgPSBmYWxzZSwgb25Db3B5U3VjY2Vzcywgb25Db3B5RXJyb3IgfSkgPT4ge1xuICAgIGNvbnN0IGNvcHlUZXh0ID0gY29weVRleHRPZihyb3cpO1xuICAgIHJldHVybiAoX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGpvaW5DbHMoY2xhc3NlcyhERVNDUklQVElPTlNfU0xPVC5yb3cpLCByb3cuaGlnaGxpZ2h0ICYmIGNsYXNzZXMoYCR7REVTQ1JJUFRJT05TX1NMT1Qucm93fS1oaWdobGlnaHRgKSksIGNoaWxkcmVuOiBbX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogam9pbkNscyhjbGFzc2VzKERFU0NSSVBUSU9OU19TTE9ULmxhYmVsKSwgcm93LmxhYmVsQ2xzKSwgY2hpbGRyZW46IF9qc3goVHlwb2dyYXBoeS5Cb2R5LCB7IHNpemU6ICdzbScsIGNvbG9yOiAnZGVmYXVsdC10ZXJ0aWFyeScsIGNoaWxkcmVuOiByb3cubGFiZWwgfSkgfSksIF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBqb2luQ2xzKGNsYXNzZXMoREVTQ1JJUFRJT05TX1NMT1QudmFsdWUpLCByb3cudmFsdWVDbHMpLCBjaGlsZHJlbjogW19qc3goUm93VmFsdWUsIHsgcm93OiByb3cgfSksIGNvcHlUZXh0ICE9IG51bGwgJiYgKF9qc3goQ29weSwgeyB2YWx1ZTogY29weVRleHQsIGNvbnRhaW5lZDogY29weUNvbnRhaW5lZCwgaWNvblNpemU6IERFU0NSSVBUSU9OU19ERUZBVUxUUy5jb3B5SWNvblNpemUsIG9uU3VjY2Vzczogb25Db3B5U3VjY2Vzcywgb25FcnJvcjogb25Db3B5RXJyb3IgfSkpXSB9KV0gfSkpO1xufTtcbi8qKlxuICogSGFpcmxpbmUtc2VwYXJhdGVkIGxhYmVsL3ZhbHVlIHJvd3MuIFJvd3MgYXJlIHB1cmUgZGF0YSDigJQgdHlwb2dyYXBoeSxcbiAqIHNwYWNpbmcsIGhhaXJsaW5lcywgY29weSBidXR0b25zLCB0YWdzLCB0b25lcywgYW5kIHRoZSBoaWdobGlnaHQgc3RhdGUgYXJlXG4gKiBhbGwgbG9ja2VkIGhlcmUsIHNvIGV2ZXJ5IGRldGFpbHMgc3VyZmFjZSBpbiB0aGUgcHJvZHVjdCByZW5kZXJzXG4gKiBpZGVudGljYWxseSAoZGlhbG9ncyB2aWEgQmFzZURpYWxvZyBjb21wb3NpdGlvbiwgcmVjZWlwdHMsIHBhZ2Ugc2VjdGlvbnMpLlxuICovXG5jb25zdCBEZXNjcmlwdGlvbnNCYXNlID0gKF9hKSA9PiB7XG4gICAgdmFyIHsgcm93cywgY29weUNvbnRhaW5lZCwgb25Db3B5U3VjY2Vzcywgb25Db3B5RXJyb3IsIHByZWZpeENscyA9IERFU0NSSVBUSU9OU19QUkVGSVgsIGNsYXNzTmFtZSB9ID0gX2EsIHJlc3QgPSBfX3Jlc3QoX2EsIFtcInJvd3NcIiwgXCJjb3B5Q29udGFpbmVkXCIsIFwib25Db3B5U3VjY2Vzc1wiLCBcIm9uQ29weUVycm9yXCIsIFwicHJlZml4Q2xzXCIsIFwiY2xhc3NOYW1lXCJdKTtcbiAgICBjb25zdCBjbGFzc2VzID0gY2xhc3NuYW1lcyhwcmVmaXhDbHMpO1xuICAgIC8vIE5vIHJvd3Mg4oaSIHJlbmRlciBOT1RISU5HLCBub3QgYW4gZW1wdHkgY29udGFpbmVyLiBBIHplcm8taGVpZ2h0IGRpdiBpc1xuICAgIC8vIHN0aWxsIGEgZmxleC9ncmlkIGl0ZW0gaW4gd2hhdGV2ZXIgbGF5cyB0aGUgaG9zdCBvdXQsIHNvIGl0IHNpbGVudGx5IGVhdHNcbiAgICAvLyBhbiBleHRyYSBgZ2FwYCBiZXR3ZWVuIHRoZSBzaWJsaW5ncyBvbiBlaXRoZXIgc2lkZSBvZiBpdDogYSBkZXRhaWxzIGRpYWxvZ1xuICAgIC8vIHRoYXQgY2FycmllcyBpdHMgb3duIHJvd3MgaW4gYGNoaWxkcmVuYCBwYXNzZXMgYHJvd3M9e1tdfWAgYW5kIHRoZSBzZWFtXG4gICAgLy8gdW5kZXIgdGhlIGJlZm9yZS1yb3dzIHNsb3QgY29tZXMgb3V0IGRvdWJsZWQgKDEyIOKGkiAyNCBpbiB0aGUgbW9kYWxcbiAgICAvLyBkZW5zaXR5KS4gQSBsaXN0IHdpdGggbm90aGluZyB0byBsaXN0IGhhcyBubyBib3guXG4gICAgaWYgKCEocm93cyA9PT0gbnVsbCB8fCByb3dzID09PSB2b2lkIDAgPyB2b2lkIDAgOiByb3dzLmxlbmd0aCkpXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIHJldHVybiAoX2pzeChcImRpdlwiLCBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7IGNsYXNzTmFtZTogam9pbkNscyhjbGFzc2VzKCksIGNsYXNzTmFtZSksIGNoaWxkcmVuOiByb3dzLm1hcCgocm93LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgcmV0dXJuIChfanN4KFJvdywgeyByb3c6IHJvdywgY2xhc3NlczogY2xhc3NlcywgY29weUNvbnRhaW5lZDogY29weUNvbnRhaW5lZCwgb25Db3B5U3VjY2Vzczogb25Db3B5U3VjY2Vzcywgb25Db3B5RXJyb3I6IG9uQ29weUVycm9yIH0sIChfYSA9IHJvdy5rZXkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGluZGV4KSk7XG4gICAgICAgIH0pIH0pKSk7XG59O1xuZXhwb3J0IGNvbnN0IERlc2NyaXB0aW9ucyA9IG1lbW8oRGVzY3JpcHRpb25zQmFzZSk7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
159
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1c2luZXNzL0RpYWxvZy9EZXNjcmlwdGlvbnMvRGVzY3JpcHRpb25zLmpzIiwiYnVzaW5lc3MvRGlhbG9nL3NyYy9idXNpbmVzcy9EaWFsb2cvRGVzY3JpcHRpb25zL0Rlc2NyaXB0aW9ucy50c3giXSwibmFtZXMiOlsiX19yZXN0IiwicyIsImUiLCJ0IiwicCIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJpIiwibGVuZ3RoIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwibWVtbyIsIkNvcHkiLCJTa2VsZXRvbiIsIlRhZyIsIlR5cG9ncmFwaHkiLCJkZWZhdWx0IiwiY2xhc3NuYW1lcyIsImpvaW5DbHMiLCJERVNDUklQVElPTlNfREVGQVVMVFMiLCJERVNDUklQVElPTlNfUFJFRklYIiwiREVTQ1JJUFRJT05TX1NLRUxFVE9OIiwiREVTQ1JJUFRJT05TX1NMT1QiLCJERVNDUklQVElPTlNfVE9ORV9DT0xPUiIsIkRFU0NSSVBUSU9OU19UT05FX1RBRyIsImNvcHlUZXh0T2YiLCJyb3ciLCJjb3B5YWJsZSIsIl90eXBlb2YiLCJ0ZXh0IiwidmFsdWUiLCJTdHJpbmciLCJSb3dWYWx1ZSIsIl9yZWYiLCJfYSIsInRvbmUiLCJ0YWciLCJjb2xvciIsInNpemUiLCJsYWJlbCIsIkJvZHkiLCJlbXBoYXNpcyIsInN0cm9uZyIsImNoaWxkcmVuIiwiUm93IiwiX3JlZjIiLCJjbGFzc2VzIiwiX3JlZjIkY29weUNvbnRhaW5lZCIsImNvcHlDb250YWluZWQiLCJvbkNvcHlTdWNjZXNzIiwib25Db3B5RXJyb3IiLCJjb3B5VGV4dCIsImNsYXNzTmFtZSIsImhpZ2hsaWdodCIsImNvbmNhdCIsImxhYmVsQ2xzIiwidmFsdWVDbHMiLCJjb250YWluZWQiLCJpY29uU2l6ZSIsImNvcHlJY29uU2l6ZSIsIm9uU3VjY2VzcyIsIm9uRXJyb3IiLCJTa2VsZXRvblJvdyIsIl9yZWYzIiwiaGVpZ2h0IiwiYm9yZGVyUmFkaXVzIiwiZGlzcGxheU5hbWUiLCJEZXNjcmlwdGlvbnNCYXNlIiwicm93cyIsImxvYWRpbmciLCJfYSRsb2FkaW5nUm93cyIsImxvYWRpbmdSb3dzIiwiX2EkcHJlZml4Q2xzIiwicHJlZml4Q2xzIiwicmVzdCIsImFzc2lnbiIsIkFycmF5IiwiZnJvbSIsIl8iLCJpbmRleCIsIm1hcCIsImtleSIsIkRlc2NyaXB0aW9ucyJdLCJtYXBwaW5ncyI6IjtBQUFBLElBQUlBLE1BQU0sR0FBSSxJQUFJLElBQUksSUFBSSxDQUFDQSxNQUFNLElBQUssVUFBVUMsQ0FBQyxFQUFFQyxDQUFDLEVBQUU7RUFDbEQsSUFBSUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUNWLEtBQUssSUFBSUMsQ0FBQyxJQUFJSCxDQUFDLEVBQUUsSUFBSUksTUFBTSxDQUFDQyxTQUFTLENBQUNDLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDUCxDQUFDLEVBQUVHLENBQUMsQ0FBQyxJQUFJRixDQUFDLENBQUNPLE9BQU8sQ0FBQ0wsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUMvRUQsQ0FBQyxDQUFDQyxDQUFDLENBQUMsR0FBR0gsQ0FBQyxDQUFDRyxDQUFDLENBQUM7RUFDZixJQUFJSCxDQUFDLElBQUksSUFBSSxJQUFJLE9BQU9JLE1BQU0sQ0FBQ0sscUJBQXFCLEtBQUssVUFBVSxFQUMvRCxLQUFLLElBQUlDLENBQUMsR0FBRyxDQUFDLEVBQUVQLENBQUMsR0FBR0MsTUFBTSxDQUFDSyxxQkFBcUIsQ0FBQ1QsQ0FBQyxDQUFDLEVBQUVVLENBQUMsR0FBR1AsQ0FBQyxDQUFDUSxNQUFNLEVBQUVELENBQUMsRUFBRSxFQUFFO0lBQ3BFLElBQUlULENBQUMsQ0FBQ08sT0FBTyxDQUFDTCxDQUFDLENBQUNPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJTixNQUFNLENBQUNDLFNBQVMsQ0FBQ08sb0JBQW9CLENBQUNMLElBQUksQ0FBQ1AsQ0FB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RTtBQUVWLENBQUM7QUFFRCxPQUFPLElBQU1HLFlBQVksZ0JBQUd2RSxJQUFJLENBQUN3RCxnQkFBZ0IsQ0FBQyIsImZpbGUiOiJidXNpbmVzcy9EaWFsb2cvRGVzY3JpcHRpb25zL0Rlc2NyaXB0aW9ucy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbmltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBtZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgQ29weSB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvQ29weSc7XG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvU2tlbGV0b24nO1xuaW1wb3J0IHsgVGFnIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9UYWcnO1xuaW1wb3J0IHsgVHlwb2dyYXBoeSB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvVHlwb2dyYXBoeSc7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIGNsYXNzbmFtZXMsIGpvaW5DbHMgfSBmcm9tICcuLi8uLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCB7IERFU0NSSVBUSU9OU19ERUZBVUxUUywgREVTQ1JJUFRJT05TX1BSRUZJWCwgREVTQ1JJUFRJT05TX1NLRUxFVE9OLCBERVNDUklQVElPTlNfU0xPVCwgREVTQ1JJUFRJT05TX1RPTkVfQ09MT1IsIERFU0NSSVBUSU9OU19UT05FX1RBRywgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgJy4vc3R5bGUnO1xuY29uc3QgY29weVRleHRPZiA9IChyb3cpID0+IHtcbiAgICBpZiAoIXJvdy5jb3B5YWJsZSlcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgaWYgKHR5cGVvZiByb3cuY29weWFibGUgPT09ICdvYmplY3QnKVxuICAgICAgICByZXR1cm4gcm93LmNvcHlhYmxlLnRleHQ7XG4gICAgcmV0dXJuIHR5cGVvZiByb3cudmFsdWUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiByb3cudmFsdWUgPT09ICdudW1iZXInXG4gICAgICAgID8gU3RyaW5nKHJvdy52YWx1ZSlcbiAgICAgICAgOiBudWxsO1xufTtcbmNvbnN0IFJvd1ZhbHVlID0gKHsgcm93IH0pID0+IHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgdG9uZSA9IChfYSA9IHJvdy50b25lKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnZGVmYXVsdCc7XG4gICAgLy8gVGFnIHJlbmRlcmluZyBuZWVkcyBhIHBsYWluLXRleHQgdmFsdWUgKHRoZSBUYWcgYGxhYmVsYCBjb250cmFjdCk7XG4gICAgLy8gbm9uLXRleHQgdmFsdWVzIGZhbGwgYmFjayB0byB0aGUgcmVndWxhciB0eXBvZ3JhcGh5IHJlbmRlcmluZy5cbiAgICBpZiAocm93LnRhZyAmJiAodHlwZW9mIHJvdy52YWx1ZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHJvdy52YWx1ZSA9PT0gJ251bWJlcicpKSB7XG4gICAgICAgIHJldHVybiAoX2pzeChUYWcsIHsgY29sb3I6IHR5cGVvZiByb3cudGFnID09PSAnc3RyaW5nJyA/IHJvdy50YWcgOiBERVNDUklQVElPTlNfVE9ORV9UQUdbdG9uZV0sIHNpemU6ICdtZWRpdW0nLCBsYWJlbDogU3RyaW5nKHJvdy52YWx1ZSkgfSkpO1xuICAgIH1cbiAgICAvLyBEZXRhaWxzIHJvd3MgYXJlIEJvZHkgU21hbGwgKDEyLzE2KTsgYGVtcGhhc2lzYCBidW1wcyB0byBCb2R5IE1lZGl1bS5cbiAgICByZXR1cm4gKF9qc3goVHlwb2dyYXBoeS5Cb2R5LCB7IHNpemU6IHJvdy5lbXBoYXNpcyA/ICdtZCcgOiAnc20nLCBzdHJvbmc6IHRydWUsIGNvbG9yOiBERVNDUklQVElPTlNfVE9ORV9DT0xPUlt0b25lXSwgY2hpbGRyZW46IHJvdy52YWx1ZSB9KSk7XG59O1xuY29uc3QgUm93ID0gKHsgcm93LCBjbGFzc2VzLCBjb3B5Q29udGFpbmVkID0gZmFsc2UsIG9uQ29weVN1Y2Nlc3MsIG9uQ29weUVycm9yIH0pID0+IHtcbiAgICBjb25zdCBjb3B5VGV4dCA9IGNvcHlUZXh0T2Yocm93KTtcbiAgICByZXR1cm4gKF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBqb2luQ2xzKGNsYXNzZXMoREVTQ1JJUFRJT05TX1NMT1Qucm93KSwgcm93LmhpZ2hsaWdodCAmJiBjbGFzc2VzKGAke0RFU0NSSVBUSU9OU19TTE9ULnJvd30taGlnaGxpZ2h0YCkpLCBjaGlsZHJlbjogW19qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGpvaW5DbHMoY2xhc3NlcyhERVNDUklQVElPTlNfU0xPVC5sYWJlbCksIHJvdy5sYWJlbENscyksIGNoaWxkcmVuOiBfanN4KFR5cG9ncmFwaHkuQm9keSwgeyBzaXplOiAnc20nLCBjb2xvcjogJ2RlZmF1bHQtdGVydGlhcnknLCBjaGlsZHJlbjogcm93LmxhYmVsIH0pIH0pLCBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogam9pbkNscyhjbGFzc2VzKERFU0NSSVBUSU9OU19TTE9ULnZhbHVlKSwgcm93LnZhbHVlQ2xzKSwgY2hpbGRyZW46IFtfanN4KFJvd1ZhbHVlLCB7IHJvdzogcm93IH0pLCBjb3B5VGV4dCAhPSBudWxsICYmIChfanN4KENvcHksIHsgdmFsdWU6IGNvcHlUZXh0LCBjb250YWluZWQ6IGNvcHlDb250YWluZWQsIGljb25TaXplOiBERVNDUklQVElPTlNfREVGQVVMVFMuY29weUljb25TaXplLCBvblN1Y2Nlc3M6IG9uQ29weVN1Y2Nlc3MsIG9uRXJyb3I6IG9uQ29weUVycm9yIH0pKV0gfSldIH0pKTtcbn07XG4vKipcbiAqIEEgcm93LXNoYXBlZCBwbGFjZWhvbGRlcjogb25lIGJhciBwZXIgQ0VMTCwgc28gdGhlIHJvdydzIG93biBsYXlvdXQgcGxhY2VzXG4gKiB0aGVtLCBhZ2FpbnN0IHRoZSBzYW1lIGhhaXJsaW5lIGFuZCBwYWRkaW5nIGFzIGEgcmVhbCByb3cuIFRoZSB0d28gY2VsbHNcbiAqIHNwbGl0IHRoZSByb3cgZXZlbmx5IChzZWUgYC1yb3ctc2tlbGV0b25gKSBhbmQgZWFjaCBiYXIgZmlsbHMgaXRzIGNlbGwg4oCUXG4gKiB0aGVyZSBpcyBubyBsYWJlbCB0ZXh0IHRvIHNpemUgdGhlIGxlZnQgb25lIHRvLlxuICovXG5jb25zdCBTa2VsZXRvblJvdyA9ICh7IGNsYXNzZXMgfSkgPT4gKF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBqb2luQ2xzKGNsYXNzZXMoREVTQ1JJUFRJT05TX1NMT1Qucm93KSwgY2xhc3NlcyhgJHtERVNDUklQVElPTlNfU0xPVC5yb3d9LXNrZWxldG9uYCkpLCBjaGlsZHJlbjogW19qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoREVTQ1JJUFRJT05TX1NMT1QubGFiZWwpLCBjaGlsZHJlbjogX2pzeChTa2VsZXRvbiwgeyBoZWlnaHQ6IERFU0NSSVBUSU9OU19TS0VMRVRPTi5oZWlnaHQsIGJvcmRlclJhZGl1czogREVTQ1JJUFRJT05TX1NLRUxFVE9OLmJvcmRlclJhZGl1cyB9KSB9KSwgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcyhERVNDUklQVElPTlNfU0xPVC52YWx1ZSksIGNoaWxkcmVuOiBfanN4KFNrZWxldG9uLCB7IGhlaWdodDogREVTQ1JJUFRJT05TX1NLRUxFVE9OLmhlaWdodCwgYm9yZGVyUmFkaXVzOiBERVNDUklQVElPTlNfU0tFTEVUT04uYm9yZGVyUmFkaXVzIH0pIH0pXSB9KSk7XG5Ta2VsZXRvblJvdy5kaXNwbGF5TmFtZSA9ICdEZXNjcmlwdGlvbnNTa2VsZXRvblJvdyc7XG4vKipcbiAqIEhhaXJsaW5lLXNlcGFyYXRlZCBsYWJlbC92YWx1ZSByb3dzLiBSb3dzIGFyZSBwdXJlIGRhdGEg4oCUIHR5cG9ncmFwaHksXG4gKiBzcGFjaW5nLCBoYWlybGluZXMsIGNvcHkgYnV0dG9ucywgdGFncywgdG9uZXMsIGFuZCB0aGUgaGlnaGxpZ2h0IHN0YXRlIGFyZVxuICogYWxsIGxvY2tlZCBoZXJlLCBzbyBldmVyeSBkZXRhaWxzIHN1cmZhY2UgaW4gdGhlIHByb2R1Y3QgcmVuZGVyc1xuICogaWRlbnRpY2FsbHkgKGRpYWxvZ3MgdmlhIEJhc2VEaWFsb2cgY29tcG9zaXRpb24sIHJlY2VpcHRzLCBwYWdlIHNlY3Rpb25zKS5cbiAqL1xuY29uc3QgRGVzY3JpcHRpb25zQmFzZSA9IChfYSkgPT4ge1xuICAgIHZhciB7IHJvd3MsIGNvcHlDb250YWluZWQsIGxvYWRpbmcsIGxvYWRpbmdSb3dzID0gREVTQ1JJUFRJT05TX0RFRkFVTFRTLmxvYWRpbmdSb3dzLCBvbkNvcHlTdWNjZXNzLCBvbkNvcHlFcnJvciwgcHJlZml4Q2xzID0gREVTQ1JJUFRJT05TX1BSRUZJWCwgY2xhc3NOYW1lIH0gPSBfYSwgcmVzdCA9IF9fcmVzdChfYSwgW1wicm93c1wiLCBcImNvcHlDb250YWluZWRcIiwgXCJsb2FkaW5nXCIsIFwibG9hZGluZ1Jvd3NcIiwgXCJvbkNvcHlTdWNjZXNzXCIsIFwib25Db3B5RXJyb3JcIiwgXCJwcmVmaXhDbHNcIiwgXCJjbGFzc05hbWVcIl0pO1xuICAgIGNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKHByZWZpeENscyk7XG4gICAgLy8gQWhlYWQgb2YgdGhlIGVtcHR5LXJvd3MgZ3VhcmQgYmVsb3c6IGEgbGlzdCB0aGF0IGlzIHN0aWxsIGxvYWRpbmcgaGFzIG5vXG4gICAgLy8gcm93cyB5ZXQgYnkgZGVmaW5pdGlvbiwgc28gdGhlIGNhbGxlciBwYXNzZXMgdGhlIHJlYWwgKGVtcHR5KSBhcnJheSBhbmRcbiAgICAvLyB0aGUgcGxhY2Vob2xkZXIgaXMgd2hhdCB0aGVyZSBpcyB0byBzaG93LlxuICAgIGlmIChsb2FkaW5nKSB7XG4gICAgICAgIHJldHVybiAoX2pzeChcImRpdlwiLCBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7IFwiYXJpYS1idXN5XCI6ICd0cnVlJywgY2xhc3NOYW1lOiBqb2luQ2xzKGNsYXNzZXMoKSwgY2xhc3NOYW1lKSwgY2hpbGRyZW46IEFycmF5LmZyb20oeyBsZW5ndGg6IGxvYWRpbmdSb3dzIH0sIChfLCBpbmRleCkgPT4gKF9qc3goU2tlbGV0b25Sb3csIHsgY2xhc3NlczogY2xhc3NlcyB9LCBpbmRleCkpKSB9KSkpO1xuICAgIH1cbiAgICAvLyBObyByb3dzIOKGkiByZW5kZXIgTk9USElORywgbm90IGFuIGVtcHR5IGNvbnRhaW5lci4gQSB6ZXJvLWhlaWdodCBkaXYgaXNcbiAgICAvLyBzdGlsbCBhIGZsZXgvZ3JpZCBpdGVtIGluIHdoYXRldmVyIGxheXMgdGhlIGhvc3Qgb3V0LCBzbyBpdCBzaWxlbnRseSBlYXRzXG4gICAgLy8gYW4gZXh0cmEgYGdhcGAgYmV0d2VlbiB0aGUgc2libGluZ3Mgb24gZWl0aGVyIHNpZGUgb2YgaXQ6IGEgZGV0YWlscyBkaWFsb2dcbiAgICAvLyB0aGF0IGNhcnJpZXMgaXRzIG93biByb3dzIGluIGBjaGlsZHJlbmAgcGFzc2VzIGByb3dzPXtbXX1gIGFuZCB0aGUgc2VhbVxuICAgIC8vIHVuZGVyIHRoZSBiZWZvcmUtcm93cyBzbG90IGNvbWVzIG91dCBkb3VibGVkICgxMiDihpIgMjQgaW4gdGhlIG1vZGFsXG4gICAgLy8gZGVuc2l0eSkuIEEgbGlzdCB3aXRoIG5vdGhpbmcgdG8gbGlzdCBoYXMgbm8gYm94LlxuICAgIGlmICghKHJvd3MgPT09IG51bGwgfHwgcm93cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcm93cy5sZW5ndGgpKVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gKF9qc3goXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7fSwgcmVzdCwgeyBjbGFzc05hbWU6IGpvaW5DbHMoY2xhc3NlcygpLCBjbGFzc05hbWUpLCBjaGlsZHJlbjogcm93cy5tYXAoKHJvdywgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHJldHVybiAoX2pzeChSb3csIHsgcm93OiByb3csIGNsYXNzZXM6IGNsYXNzZXMsIGNvcHlDb250YWluZWQ6IGNvcHlDb250YWluZWQsIG9uQ29weVN1Y2Nlc3M6IG9uQ29weVN1Y2Nlc3MsIG9uQ29weUVycm9yOiBvbkNvcHlFcnJvciB9LCAoX2EgPSByb3cua2V5KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBpbmRleCkpO1xuICAgICAgICB9KSB9KSkpO1xufTtcbmV4cG9ydCBjb25zdCBEZXNjcmlwdGlvbnMgPSBtZW1vKERlc2NyaXB0aW9uc0Jhc2UpOyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
@@ -7,10 +7,30 @@ export declare const DESCRIPTIONS_SLOT: {
7
7
  readonly label: "label";
8
8
  readonly value: "value";
9
9
  };
10
+ /**
11
+ * Placeholder geometry for the loading state.
12
+ *
13
+ * These live here, not at the call site, because a placeholder row has to be
14
+ * laid out by the ROW — label cell left, value cell right. A consumer building
15
+ * its own skeleton has to guess that structure, and guessing it as a single
16
+ * full-width flex row (which is what a details list looks like from outside)
17
+ * puts both bars in the value cell and leaves the label side blank.
18
+ */
19
+ export declare const DESCRIPTIONS_SKELETON: {
20
+ /** Matches Body Small's 16px line box, so rows keep their real height. */
21
+ readonly height: 16;
22
+ readonly borderRadius: 4;
23
+ };
10
24
  /** Row value tone → Typography color. Locked here; rows are pure data. */
11
25
  export declare const DESCRIPTIONS_TONE_COLOR: Record<DescriptionsRowTone, TypographyColor>;
12
26
  /** Row tone → Tag color when a row renders as a status tag. */
13
27
  export declare const DESCRIPTIONS_TONE_TAG: Record<DescriptionsRowTone, TagColor>;
14
28
  export declare const DESCRIPTIONS_DEFAULTS: {
15
29
  readonly copyIconSize: 16;
30
+ /**
31
+ * Placeholder row count while `loading`. Six rows is the shortest list that
32
+ * still reads as "a details list is coming" and holds a plausible panel
33
+ * height, so the dialog does not jump when the data lands.
34
+ */
35
+ readonly loadingRows: 6;
16
36
  };
@@ -4,6 +4,20 @@ export var DESCRIPTIONS_SLOT = {
4
4
  label: 'label',
5
5
  value: 'value'
6
6
  };
7
+ /**
8
+ * Placeholder geometry for the loading state.
9
+ *
10
+ * These live here, not at the call site, because a placeholder row has to be
11
+ * laid out by the ROW — label cell left, value cell right. A consumer building
12
+ * its own skeleton has to guess that structure, and guessing it as a single
13
+ * full-width flex row (which is what a details list looks like from outside)
14
+ * puts both bars in the value cell and leaves the label side blank.
15
+ */
16
+ export var DESCRIPTIONS_SKELETON = {
17
+ /** Matches Body Small's 16px line box, so rows keep their real height. */
18
+ height: 16,
19
+ borderRadius: 4
20
+ };
7
21
  /** Row value tone → Typography color. Locked here; rows are pure data. */
8
22
  export var DESCRIPTIONS_TONE_COLOR = {
9
23
  "default": 'default',
@@ -19,6 +33,12 @@ export var DESCRIPTIONS_TONE_TAG = {
19
33
  danger: 'negative'
20
34
  };
21
35
  export var DESCRIPTIONS_DEFAULTS = {
22
- copyIconSize: 16
36
+ copyIconSize: 16,
37
+ /**
38
+ * Placeholder row count while `loading`. Six rows is the shortest list that
39
+ * still reads as "a details list is coming" and holds a plausible panel
40
+ * height, so the dialog does not jump when the data lands.
41
+ */
42
+ loadingRows: 6
23
43
  };
24
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1c2luZXNzL0RpYWxvZy9zcmMvYnVzaW5lc3MvRGlhbG9nL0Rlc2NyaXB0aW9ucy9jb25zdGFudHMudHMiLCJidXNpbmVzcy9EaWFsb2cvRGVzY3JpcHRpb25zL2NvbnN0YW50cy5qcyJdLCJuYW1lcyI6WyJERVNDUklQVElPTlNfUFJFRklYIiwiREVTQ1JJUFRJT05TX1NMT1QiLCJyb3ciLCJsYWJlbCIsInZhbHVlIiwiREVTQ1JJUFRJT05TX1RPTkVfQ09MT1IiLCJzdWNjZXNzIiwid2FybmluZyIsImRhbmdlciIsIkRFU0NSSVBUSU9OU19UT05FX1RBRyIsIkRFU0NSSVBUSU9OU19ERUZBVUxUUyIsImNvcHlJY29uU2l6ZSJdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxJQUFNQSxtQkFBbUIsR0FBRyxjQUFjO0FBRWpELE9BQU8sSUFBTUMsaUJBQWlCLEdBQUc7RUFDL0JDLEdBQUcsRUFBRSxLQUFLO0VBQ1ZDLEtBQUssRUFBRSxPQUFPO0VBQ2RDLEtBQUssRUFBRTtBQ0pULENES1U7QUFFVjtBQUNBLE9BQU8sSUFBTUMsdUJBQXVCLEdBQWlEO0VBQ25GLFdBQVMsU0FBUztFQUNsQkMsT0FBTyxFQUFFLFVBQVU7RUFDbkJDLE9BQU8sRUFBRSxTQUFTO0VBQ2xCQyxNQUFNLEVBQUU7QUNMVixDRE1DO0FBRUQ7QUFDQSxPQUFPLElBQU1DLHFCQUFxQixHQUEwQztFQUMxRSxXQUFTLFNBQVM7RUFDbEJILE9BQU8sRUFBRSxTQUFTO0VBQ2xCQyxPQUFPLEVBQUUsU0FBUztFQUNsQkMsTUFBTSxFQUFFO0FDTlYsQ0RPQztBQUVELE9BQU8sSUFBTUUscUJBQXFCLEdBQUc7RUFDbkNDLFlBQVksRUFBRTtBQ1BoQixDRFFVIiwiZmlsZSI6ImJ1c2luZXNzL0RpYWxvZy9EZXNjcmlwdGlvbnMvY29uc3RhbnRzLmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCJleHBvcnQgY29uc3QgREVTQ1JJUFRJT05TX1BSRUZJWCA9ICdkZXNjcmlwdGlvbnMnO1xuZXhwb3J0IGNvbnN0IERFU0NSSVBUSU9OU19TTE9UID0ge1xuICAgIHJvdzogJ3JvdycsXG4gICAgbGFiZWw6ICdsYWJlbCcsXG4gICAgdmFsdWU6ICd2YWx1ZScsXG59O1xuLyoqIFJvdyB2YWx1ZSB0b25lIOKGkiBUeXBvZ3JhcGh5IGNvbG9yLiBMb2NrZWQgaGVyZTsgcm93cyBhcmUgcHVyZSBkYXRhLiAqL1xuZXhwb3J0IGNvbnN0IERFU0NSSVBUSU9OU19UT05FX0NPTE9SID0ge1xuICAgIGRlZmF1bHQ6ICdkZWZhdWx0JyxcbiAgICBzdWNjZXNzOiAncG9zaXRpdmUnLFxuICAgIHdhcm5pbmc6ICd3YXJuaW5nJyxcbiAgICBkYW5nZXI6ICdkYW5nZXInLFxufTtcbi8qKiBSb3cgdG9uZSDihpIgVGFnIGNvbG9yIHdoZW4gYSByb3cgcmVuZGVycyBhcyBhIHN0YXR1cyB0YWcuICovXG5leHBvcnQgY29uc3QgREVTQ1JJUFRJT05TX1RPTkVfVEFHID0ge1xuICAgIGRlZmF1bHQ6ICduZXV0cmFsJyxcbiAgICBzdWNjZXNzOiAnc3VjY2VzcycsXG4gICAgd2FybmluZzogJ3dhcm5pbmcnLFxuICAgIGRhbmdlcjogJ25lZ2F0aXZlJyxcbn07XG5leHBvcnQgY29uc3QgREVTQ1JJUFRJT05TX0RFRkFVTFRTID0ge1xuICAgIGNvcHlJY29uU2l6ZTogMTYsXG59OyJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
44
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1c2luZXNzL0RpYWxvZy9zcmMvYnVzaW5lc3MvRGlhbG9nL0Rlc2NyaXB0aW9ucy9jb25zdGFudHMudHMiLCJidXNpbmVzcy9EaWFsb2cvRGVzY3JpcHRpb25zL2NvbnN0YW50cy5qcyJdLCJuYW1lcyI6WyJERVNDUklQVElPTlNfUFJFRklYIiwiREVTQ1JJUFRJT05TX1NMT1QiLCJyb3ciLCJsYWJlbCIsInZhbHVlIiwiREVTQ1JJUFRJT05TX1NLRUxFVE9OIiwiaGVpZ2h0IiwiYm9yZGVyUmFkaXVzIiwiREVTQ1JJUFRJT05TX1RPTkVfQ09MT1IiLCJzdWNjZXNzIiwid2FybmluZyIsImRhbmdlciIsIkRFU0NSSVBUSU9OU19UT05FX1RBRyIsIkRFU0NSSVBUSU9OU19ERUZBVUxUUyIsImNvcHlJY29uU2l6ZSIsImxvYWRpbmdSb3dzIl0sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLElBQU1BLG1CQUFtQixHQUFHLGNBQWM7QUFFakQsT0FBTyxJQUFNQyxpQkFBaUIsR0FBRztFQUMvQkMsR0FBRyxFQUFFLEtBQUs7RUFDVkMsS0FBSyxFQUFFLE9BQU87RUFDZEMsS0FBSyxFQUFFO0FDSlQsQ0RLVTtBQUVWO0FDTEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBRE9BLE9BQU8sSUFBTUMscUJBQXFCLEdBQUc7RUFDbkM7RUFDQUMsTUFBTSxFQUFFLEVBQUU7RUFDVkMsWUFBWSxFQUFFO0FDTGhCLENETVU7QUFFVjtBQUNBLE9BQU8sSUFBTUMsdUJBQXVCLEdBQWlEO0VBQ25GLFdBQVMsU0FBUztFQUNsQkMsT0FBTyxFQUFFLFVBQVU7RUFDbkJDLE9BQU8sRUFBRSxTQUFTO0VBQ2xCQyxNQUFNLEVBQUU7QUNOVixDRE9DO0FBRUQ7QUFDQSxPQUFPLElBQU1DLHFCQUFxQixHQUEwQztFQUMxRSxXQUFTLFNBQVM7RUFDbEJILE9BQU8sRUFBRSxTQUFTO0VBQ2xCQyxPQUFPLEVBQUUsU0FBUztFQUNsQkMsTUFBTSxFQUFFO0FDUFYsQ0RRQztBQUVELE9BQU8sSUFBTUUscUJBQXFCLEdBQUc7RUFDbkNDLFlBQVksRUFBRSxFQUFFO0VBQ2hCO0FDUkY7QUFDQTtBQUNBO0FBQ0E7RURVRUMsV0FBVyxFQUFFO0FDUmYsQ0RTVSIsImZpbGUiOiJidXNpbmVzcy9EaWFsb2cvRGVzY3JpcHRpb25zL2NvbnN0YW50cy5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwiZXhwb3J0IGNvbnN0IERFU0NSSVBUSU9OU19QUkVGSVggPSAnZGVzY3JpcHRpb25zJztcbmV4cG9ydCBjb25zdCBERVNDUklQVElPTlNfU0xPVCA9IHtcbiAgICByb3c6ICdyb3cnLFxuICAgIGxhYmVsOiAnbGFiZWwnLFxuICAgIHZhbHVlOiAndmFsdWUnLFxufTtcbi8qKlxuICogUGxhY2Vob2xkZXIgZ2VvbWV0cnkgZm9yIHRoZSBsb2FkaW5nIHN0YXRlLlxuICpcbiAqIFRoZXNlIGxpdmUgaGVyZSwgbm90IGF0IHRoZSBjYWxsIHNpdGUsIGJlY2F1c2UgYSBwbGFjZWhvbGRlciByb3cgaGFzIHRvIGJlXG4gKiBsYWlkIG91dCBieSB0aGUgUk9XIOKAlCBsYWJlbCBjZWxsIGxlZnQsIHZhbHVlIGNlbGwgcmlnaHQuIEEgY29uc3VtZXIgYnVpbGRpbmdcbiAqIGl0cyBvd24gc2tlbGV0b24gaGFzIHRvIGd1ZXNzIHRoYXQgc3RydWN0dXJlLCBhbmQgZ3Vlc3NpbmcgaXQgYXMgYSBzaW5nbGVcbiAqIGZ1bGwtd2lkdGggZmxleCByb3cgKHdoaWNoIGlzIHdoYXQgYSBkZXRhaWxzIGxpc3QgbG9va3MgbGlrZSBmcm9tIG91dHNpZGUpXG4gKiBwdXRzIGJvdGggYmFycyBpbiB0aGUgdmFsdWUgY2VsbCBhbmQgbGVhdmVzIHRoZSBsYWJlbCBzaWRlIGJsYW5rLlxuICovXG5leHBvcnQgY29uc3QgREVTQ1JJUFRJT05TX1NLRUxFVE9OID0ge1xuICAgIC8qKiBNYXRjaGVzIEJvZHkgU21hbGwncyAxNnB4IGxpbmUgYm94LCBzbyByb3dzIGtlZXAgdGhlaXIgcmVhbCBoZWlnaHQuICovXG4gICAgaGVpZ2h0OiAxNixcbiAgICBib3JkZXJSYWRpdXM6IDQsXG59O1xuLyoqIFJvdyB2YWx1ZSB0b25lIOKGkiBUeXBvZ3JhcGh5IGNvbG9yLiBMb2NrZWQgaGVyZTsgcm93cyBhcmUgcHVyZSBkYXRhLiAqL1xuZXhwb3J0IGNvbnN0IERFU0NSSVBUSU9OU19UT05FX0NPTE9SID0ge1xuICAgIGRlZmF1bHQ6ICdkZWZhdWx0JyxcbiAgICBzdWNjZXNzOiAncG9zaXRpdmUnLFxuICAgIHdhcm5pbmc6ICd3YXJuaW5nJyxcbiAgICBkYW5nZXI6ICdkYW5nZXInLFxufTtcbi8qKiBSb3cgdG9uZSDihpIgVGFnIGNvbG9yIHdoZW4gYSByb3cgcmVuZGVycyBhcyBhIHN0YXR1cyB0YWcuICovXG5leHBvcnQgY29uc3QgREVTQ1JJUFRJT05TX1RPTkVfVEFHID0ge1xuICAgIGRlZmF1bHQ6ICduZXV0cmFsJyxcbiAgICBzdWNjZXNzOiAnc3VjY2VzcycsXG4gICAgd2FybmluZzogJ3dhcm5pbmcnLFxuICAgIGRhbmdlcjogJ25lZ2F0aXZlJyxcbn07XG5leHBvcnQgY29uc3QgREVTQ1JJUFRJT05TX0RFRkFVTFRTID0ge1xuICAgIGNvcHlJY29uU2l6ZTogMTYsXG4gICAgLyoqXG4gICAgICogUGxhY2Vob2xkZXIgcm93IGNvdW50IHdoaWxlIGBsb2FkaW5nYC4gU2l4IHJvd3MgaXMgdGhlIHNob3J0ZXN0IGxpc3QgdGhhdFxuICAgICAqIHN0aWxsIHJlYWRzIGFzIFwiYSBkZXRhaWxzIGxpc3QgaXMgY29taW5nXCIgYW5kIGhvbGRzIGEgcGxhdXNpYmxlIHBhbmVsXG4gICAgICogaGVpZ2h0LCBzbyB0aGUgZGlhbG9nIGRvZXMgbm90IGp1bXAgd2hlbiB0aGUgZGF0YSBsYW5kcy5cbiAgICAgKi9cbiAgICBsb2FkaW5nUm93czogNixcbn07Il0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
@@ -51,6 +51,21 @@ export interface DescriptionsProps extends HTMLAttributes<HTMLDivElement> {
51
51
  * `copyable` row in the list.
52
52
  */
53
53
  copyContained?: boolean;
54
+ /**
55
+ * Render placeholder rows instead of `rows`.
56
+ *
57
+ * The placeholder is the component's own job: a row is a label cell plus a
58
+ * value cell, and only this component knows that. Left to the caller, the
59
+ * skeleton gets built against whatever the list looks like from outside —
60
+ * typically one full-width flex row — which lands both bars in the value
61
+ * cell with the label side empty.
62
+ *
63
+ * Takes precedence over `rows`, so a caller can pass the (still empty) real
64
+ * rows straight through while the request is in flight.
65
+ */
66
+ loading?: boolean;
67
+ /** Placeholder row count while `loading`. Defaults to 6. */
68
+ loadingRows?: number;
54
69
  /**
55
70
  * Fires after a row's copy button copies successfully, with the copied
56
71
  * text. The component shows NO toast of its own — surface feedback here at
@@ -35,6 +35,14 @@
35
35
  .om-component-ui-descriptions-row:not(:last-child) {
36
36
  border-bottom: 1px solid var(--om-border-neutral, #e3e4e4);
37
37
  }
38
+ .om-component-ui-descriptions-row-skeleton {
39
+ gap: var(--om-spacing-300, 12px);
40
+ }
41
+ .om-component-ui-descriptions-row-skeleton .om-component-ui-descriptions-label,
42
+ .om-component-ui-descriptions-row-skeleton .om-component-ui-descriptions-value {
43
+ flex: 1;
44
+ min-width: 0;
45
+ }
38
46
  .om-component-ui-descriptions-row-highlight {
39
47
  padding-inline: var(--om-spacing-300, 12px);
40
48
  margin-inline: calc(var(--om-spacing-300, 12px) * -1);
@@ -70,6 +70,8 @@ var DetailsDialogBase = function DetailsDialogBase(_a) {
70
70
  var rows = _a.rows,
71
71
  listCls = _a.listCls,
72
72
  copyContained = _a.copyContained,
73
+ loading = _a.loading,
74
+ loadingRows = _a.loadingRows,
73
75
  beforeRows = _a.beforeRows,
74
76
  primary = _a.primary,
75
77
  secondary = _a.secondary,
@@ -81,7 +83,7 @@ var DetailsDialogBase = function DetailsDialogBase(_a) {
81
83
  onCopyError = _a.onCopyError,
82
84
  _a$fixed = _a.fixed,
83
85
  fixed = _a$fixed === void 0 ? true : _a$fixed,
84
- rest = __rest(_a, ["rows", "listCls", "copyContained", "beforeRows", "primary", "secondary", "className", "children", "showCloseIcon", "onCopySuccess", "onCopyError", "fixed"]);
86
+ rest = __rest(_a, ["rows", "listCls", "copyContained", "loading", "loadingRows", "beforeRows", "primary", "secondary", "className", "children", "showCloseIcon", "onCopySuccess", "onCopyError", "fixed"]);
85
87
  var locale = useLocale('DetailsDialog');
86
88
  var classes = classnames(PREFIX);
87
89
  var resolvedPrimary = useAsyncAction(withDownloadDefaults(primary, locale.download));
@@ -96,10 +98,12 @@ var DetailsDialogBase = function DetailsDialogBase(_a) {
96
98
  className: listCls,
97
99
  rows: rows,
98
100
  copyContained: copyContained,
101
+ loading: loading,
102
+ loadingRows: loadingRows,
99
103
  onCopySuccess: onCopySuccess,
100
104
  onCopyError: onCopyError
101
105
  }), children]
102
106
  }));
103
107
  };
104
108
  export var DetailsDialog = /*#__PURE__*/memo(DetailsDialogBase);
105
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1c2luZXNzL0RpYWxvZy9EZXRhaWxzRGlhbG9nL0RldGFpbHNEaWFsb2cuanMiLCJidXNpbmVzcy9EaWFsb2cvc3JjL2J1c2luZXNzL0RpYWxvZy9EZXRhaWxzRGlhbG9nL0RldGFpbHNEaWFsb2cudHN4Il0sIm5hbWVzIjpbIl9fcmVzdCIsInMiLCJlIiwidCIsInAiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpbmRleE9mIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiaSIsImxlbmd0aCIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIm1lbW8iLCJ1c2VTdGF0ZSIsInVzZUxvY2FsZSIsIkljb25zIiwiZGVmYXVsdCIsImNsYXNzbmFtZXMiLCJqb2luQ2xzIiwiQmFzZURpYWxvZyIsIkRlc2NyaXB0aW9ucyIsIlBSRUZJWCIsIkRPV05MT0FEX0lDT05fU0laRSIsIndpdGhEb3dubG9hZERlZmF1bHRzIiwiYWN0aW9uIiwiZG93bmxvYWRMYWJlbCIsImFzc2lnbiIsImljb24iLCJuYW1lIiwic2l6ZSIsImNvbG9yIiwibGFiZWwiLCJ1c2VBc3luY0FjdGlvbiIsIl9hIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiYnVzeSIsInNldEJ1c3kiLCJ1bmRlZmluZWQiLCJsb2FkaW5nIiwib25DbGljayIsInJlc3VsdCIsIlByb21pc2UiLCJEZXRhaWxzRGlhbG9nQmFzZSIsInJvd3MiLCJsaXN0Q2xzIiwiY29weUNvbnRhaW5lZCIsImJlZm9yZVJvd3MiLCJwcmltYXJ5Iiwic2Vjb25kYXJ5IiwiY2xhc3NOYW1lIiwiY2hpbGRyZW4iLCJfYSRzaG93Q2xvc2VJY29uIiwic2hvd0Nsb3NlSWNvbiIsIm9uQ29weVN1Y2Nlc3MiLCJvbkNvcHlFcnJvciIsIl9hJGZpeGVkIiwiZml4ZWQiLCJyZXN0IiwibG9jYWxlIiwiY2xhc3NlcyIsInJl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VUFBVSxFQUNYdkMsSUFBQSxDQUFDVyxZQUFZLEVBQUE7TUFDWCtCLFNBQVMsRUFBRUwsT0FBTztNQUNsQkQsSUFBSSxFQUFFQSxJQUFJO01BQ1ZFLGFBQWEsRUFBRUEsYUFBYTtNQUM1QlEsYUFBYSxFQUFFQSxhQUFhO01BQzVCQyxXQUFXLEVBQUVBO0lBQVcsQ0FBQSxDQUN4QixFQUNESixRQUFRO0VBQUEsQ0FBQSxDQUFBLENBQ0U7QUFFakIsQ0FBQztBQUVELE9BQU8sSUFBTWEsYUFBYSxnQkFBR3JELElBQUksQ0FBQ2dDLGlCQUFpQixDQUFDIiwiZmlsZSI6ImJ1c2luZXNzL0RpYWxvZy9EZXRhaWxzRGlhbG9nL0RldGFpbHNEaWFsb2cuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgbWVtbywgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VMb2NhbGUgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL0NvbmZpZ1Byb3ZpZGVyJztcbmltcG9ydCB7IEljb25zIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9JY29ucyc7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIGNsYXNzbmFtZXMsIGpvaW5DbHMgfSBmcm9tICcuLi8uLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCB7IEJhc2VEaWFsb2cgfSBmcm9tICcuLi9CYXNlRGlhbG9nJztcbmltcG9ydCB7IERlc2NyaXB0aW9ucyB9IGZyb20gJy4uL0Rlc2NyaXB0aW9ucyc7XG5pbXBvcnQgJy4vc3R5bGUnO1xuY29uc3QgUFJFRklYID0gJ2RldGFpbHMtZGlhbG9nJztcbmNvbnN0IERPV05MT0FEX0lDT05fU0laRSA9IDIwO1xuLyoqXG4gKiBGaWxsIHRoZSBkZXRhaWxzLWZhbWlseSBkZWZhdWx0IGRvd25sb2FkIENUQSDigJQgaWNvbiwgbGFiZWwsIGFuZCBzZWNvbmRhcnlcbiAqIHRvbmUg4oCUIGxlYXZpbmcgYW55IGV4cGxpY2l0bHktc2V0IGZpZWxkIHVudG91Y2hlZC4gVGhlIGNvbnN1bWVyIHVzdWFsbHlcbiAqIG9ubHkgd2lyZXMgYG9uQ2xpY2tgLlxuICovXG5jb25zdCB3aXRoRG93bmxvYWREZWZhdWx0cyA9IChhY3Rpb24sIGRvd25sb2FkTGFiZWwpID0+IGFjdGlvbiAmJiBPYmplY3QuYXNzaWduKHsgaWNvbjogX2pzeChJY29ucywgeyBuYW1lOiAnbWVudURlcG9zaXQnLCBzaXplOiBET1dOTE9BRF9JQ09OX1NJWkUgfSksIGNvbG9yOiAnc2Vjb25kYXJ5JywgbGFiZWw6IGRvd25sb2FkTGFiZWwgfSwgYWN0aW9uKTtcbi8qKlxuICogV3JhcHMgYW4gYWN0aW9uIHNvIGEgUHJvbWlzZS1yZXR1cm5pbmcgYG9uQ2xpY2tgIGRyaXZlcyB0aGUgYnV0dG9uJ3NcbiAqIGxvYWRpbmcgc3RhdGUgdW50aWwgaXQgc2V0dGxlcyAoZXJyb3JzIGFyZSByZXRocm93biB0byB0aGUgY29uc29sZSDigJQgdGhlXG4gKiBjYWxsZXIgb3ducyBzdXJmYWNpbmcgdGhlbSkuXG4gKi9cbmNvbnN0IHVzZUFzeW5jQWN0aW9uID0gKGFjdGlvbikgPT4ge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCBbYnVzeSwgc2V0QnVzeV0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgaWYgKCFhY3Rpb24pXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgYWN0aW9uKSwgeyBsb2FkaW5nOiAoX2EgPSBhY3Rpb24ubG9hZGluZykgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogYnVzeSwgb25DbGljazogKCkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gKF9hID0gYWN0aW9uLm9uQ2xpY2spID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKGFjdGlvbik7XG4gICAgICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgIHNldEJ1c3kodHJ1ZSk7XG4gICAgICAgICAgICAgICAgdm9pZCByZXN1bHQuZmluYWxseSgoKSA9PiBzZXRCdXN5KGZhbHNlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gfSk7XG59O1xuLyoqXG4gKiBSZWFkLW9ubHkgZGV0YWlscyBzY2VuYXJpbyBzaGVsbCDigJQgYEJhc2VEaWFsb2dgICsgYERlc2NyaXB0aW9uc2AsIHdpdGggdGhlXG4gKiBkZXRhaWxzLWZhbWlseSBzcGVjIChGaWdtYSAzOTk1Ni05ODk3KSBzY29wZWQgb24gdG9wOiB0aXRsZeKGlHJvd3MgZ2FwIDAgYW5kXG4gKiBjb21wYWN0IHJvd3MuIE1pcnJvcnMgdGhlIGxlZ2FjeSBgTW9kYWwvRGV0YWlsc2AgY29udHJhY3QgdXNlZCBieSB0aGVcbiAqIFRyYW5zYWN0aW9ucyByZWNlaXB0czogYXJiaXRyYXJ5IFJlYWN0Tm9kZSByb3cgdmFsdWVzLCBhIGJlZm9yZS1yb3dzIHNsb3QsXG4gKiBhbmQgYXN5bmMtbG9hZGluZyBDVEFzLiBDb3B5YWJsZSByb3dzIHN1cmZhY2UgYG9uQ29weVN1Y2Nlc3NgL2BvbkNvcHlFcnJvcmBcbiAqIOKAlCB0aGUgc2hlbGwgc2hvd3Mgbm8gdG9hc3QgaXRzZWxmLlxuICovXG5jb25zdCBEZXRhaWxzRGlhbG9nQmFzZSA9IChfYSkgPT4ge1xuICAgIHZhciB7IHJvd3MsIGxpc3RDbHMsIGNvcHlDb250YWluZWQsIGJlZm9yZVJvd3MsIHByaW1hcnksIHNlY29uZGFyeSwgY2xhc3NOYW1lLCBjaGlsZHJlbiwgc2hvd0Nsb3NlSWNvbiA9IHRydWUsIG9uQ29weVN1Y2Nlc3MsIG9uQ29weUVycm9yLCBcbiAgICAvLyBEZXRhaWxzIGxpc3RzIGNhbiBiZSBsb25nIOKAlCBwaW4gdGhlIHRpdGxlICsgRG93bmxvYWQsIHNjcm9sbCB0aGUgcm93cy5cbiAgICBmaXhlZCA9IHRydWUgfSA9IF9hLCByZXN0ID0gX19yZXN0KF9hLCBbXCJyb3dzXCIsIFwibGlzdENsc1wiLCBcImNvcHlDb250YWluZWRcIiwgXCJiZWZvcmVSb3dzXCIsIFwicHJpbWFyeVwiLCBcInNlY29uZGFyeVwiLCBcImNsYXNzTmFtZVwiLCBcImNoaWxkcmVuXCIsIFwic2hvd0Nsb3NlSWNvblwiLCBcIm9uQ29weVN1Y2Nlc3NcIiwgXCJvbkNvcHlFcnJvclwiLCBcImZpeGVkXCJdKTtcbiAgICBjb25zdCBsb2NhbGUgPSB1c2VMb2NhbGUoJ0RldGFpbHNEaWFsb2cnKTtcbiAgICBjb25zdCBjbGFzc2VzID0gY2xhc3NuYW1lcyhQUkVGSVgpO1xuICAgIGNvbnN0IHJlc29sdmVkUHJpbWFyeSA9IHVzZUFzeW5jQWN0aW9uKHdpdGhEb3dubG9hZERlZmF1bHRzKHByaW1hcnksIGxvY2FsZS5kb3dubG9hZCkpO1xuICAgIGNvbnN0IHJlc29sdmVkU2Vjb25kYXJ5ID0gdXNlQXN5bmNBY3Rpb24oc2Vjb25kYXJ5KTtcbiAgICByZXR1cm4gKF9qc3hzKEJhc2VEaWFsb2csIE9iamVjdC5hc3NpZ24oe30sIHJlc3QsIHsgc2hvd0Nsb3NlSWNvbjogc2hvd0Nsb3NlSWNvbiwgZml4ZWQ6IGZpeGVkLCBjbGFzc05hbWU6IGpvaW5DbHMoY2xhc3NlcygpLCBjbGFzc05hbWUpLCBwcmltYXJ5OiByZXNvbHZlZFByaW1hcnksIHNlY29uZGFyeTogcmVzb2x2ZWRTZWNvbmRhcnksIGNoaWxkcmVuOiBbYmVmb3JlUm93cywgX2pzeChEZXNjcmlwdGlvbnMsIHsgY2xhc3NOYW1lOiBsaXN0Q2xzLCByb3dzOiByb3dzLCBjb3B5Q29udGFpbmVkOiBjb3B5Q29udGFpbmVkLCBvbkNvcHlTdWNjZXNzOiBvbkNvcHlTdWNjZXNzLCBvbkNvcHlFcnJvcjogb25Db3B5RXJyb3IgfSksIGNoaWxkcmVuXSB9KSkpO1xufTtcbmV4cG9ydCBjb25zdCBEZXRhaWxzRGlhbG9nID0gbWVtbyhEZXRhaWxzRGlhbG9nQmFzZSk7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
109
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1c2luZXNzL0RpYWxvZy9EZXRhaWxzRGlhbG9nL0RldGFpbHNEaWFsb2cuanMiLCJidXNpbmVzcy9EaWFsb2cvc3JjL2J1c2luZXNzL0RpYWxvZy9EZXRhaWxzRGlhbG9nL0RldGFpbHNEaWFsb2cudHN4Il0sIm5hbWVzIjpbIl9fcmVzdCIsInMiLCJlIiwidCIsInAiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpbmRleE9mIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiaSIsImxlbmd0aCIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIm1lbW8iLCJ1c2VTdGF0ZSIsInVzZUxvY2FsZSIsIkljb25zIiwiZGVmYXVsdCIsImNsYXNzbmFtZXMiLCJqb2luQ2xzIiwiQmFzZURpYWxvZyIsIkRlc2NyaXB0aW9ucyIsIlBSRUZJWCIsIkRPV05MT0FEX0lDT05fU0laRSIsIndpdGhEb3dubG9hZERlZmF1bHRzIiwiYWN0aW9uIiwiZG93bmxvYWRMYWJlbCIsImFzc2lnbiIsImljb24iLCJuYW1lIiwic2l6ZSIsImNvbG9yIiwibGFiZWwiLCJ1c2VBc3luY0FjdGlvbiIsIl9hIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiYnVzeSIsInNldEJ1c3kiLCJ1bmRlZmluZWQiLCJsb2FkaW5nIiwib25DbGljayIsInJlc3VsdCIsIlByb21pc2UiLCJEZXRhaWxzRGlhbG9nQmFzZSIsInJvd3MiLCJsaXN0Q2xzIiwiY29weUNvbnRhaW5lZCIsImxvYWRpbmdSb3dzIiwiYmVmb3JlUm93cyIsInByaW1hcnkiLCJzZWNvbmRhcnkiLCJjbGFzc05hbWUiLCJjaGlsZHJlbiIsIl9hJHNob3dDbG9zZUljb24iLCJzaG93Q2xvc2VJY29uIiwib25Db3B5U3VjY2VzcyIsIm9uQ29weUVycm9yIiwiX2EkZml4ZWQiLCJmaXhlZCIsInJlc3QiLCJsb2NhbGUiLCJjbGFzc2VzIiwicmVzb2x2ZWRQcmltYXJ5IiwiZG93bmxvYWQiLCJyZXNvbHZlZFNlY29uZGFyeSIsIkRldGFpbHNEaWFsb2ciXSwibWFwcGluZ3MiOiI7QUFBQSxJQUFJQSxNQUFNLEdBQUksSUFBSSxJQUFJLElBQUksQ0FBQ0EsTUFBTSxJQUFLLFVBQVVDLENBQUMsRUFBRUMsQ0FBQyxFQUFFO0VBQ2xELElBQUlDLENBQUMsR0FBRyxDQUFDLENBQUM7RUFDVixLQUFLLElBQUlDLENBQUMsSUFBSUgsQ0FBQyxFQUFFLElBQUlJLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDQyxjQUFjLENBQUNDLElBQUksQ0FBQ1AsQ0FBQyxFQUFFRyxDQUFDLENBQUMsSUFBSUYsQ0FBQyxDQUFDTyxPQUFPLENBQUNMLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFDL0VELENBQUMsQ0FBQ0MsQ0FBQyxDQUFDLEdBQUdILENBQUMsQ0FBQ0csQ0FBQyxDQUFDO0VBQ2YsSUFBSUgsQ0FBQyxJQUFJLElBQUksSUFBSSxPQUFPSSxNQUFNLENBQUNLLHFCQUFxQixLQUFLLFVBQVUsRUFDL0QsS0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxFQUFFUCxDQUFDLEdBQUdDLE1BQU0sQ0FBQ0sscUJBQXFCLENBQUNULENBQUMsQ0FBQyxFQUFFVSxDQUFDLEdBQUdQLENBQUMsQ0FBQ1EsTUFBTSxFQUFFRCxDQUFDLEVBQUUsRUFBRTtJQUNwRSxJQUFJVCxDQUFDLENBQUNPLE9BQU8sQ0FBQ0wsQ0FBQyxDQUFDTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSU4sTUFBTSxDQUFDQyxTQUFTLENBQUNPLG9CQUFvQixDQUFDTCxJQUFJLENBQUNQLENBQUMsRUFBRUcsQ0FBQyxDQUFDTyxDQUFDLENBQUMsQ0FBQyxFQUMxRVIsQ0FBQyxDQUFDQyxDQUFDLENBQUNPLENBQUMsQ0FBQyxDQUFDLEdBQUdWLENBQUMsQ0FBQ0csQ0FBQyxDQUFDTyxDQUFDLENBQUMsQ0FBQztFQUN6QjtFQUNKLE9BQU9SLENBQUM7QUFDWixDQUFDO0FBQ0QsU0FB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QzRDLE9BQU8sQ0FBQSxDQUFFLEVBQUVWLFNBQVMsQ0FBQztJQUN4Q0YsT0FBTyxFQUFFYSxlQUFlO0lBQ3hCWixTQUFTLEVBQUVjLGlCQUFpQjtJQUFBWixRQUFBLEVBQUEsQ0FFM0JKLFVBQVUsRUFDWHhDLElBQUEsQ0FBQ1csWUFBWSxFQUFBO01BQ1hnQyxTQUFTLEVBQUVOLE9BQU87TUFDbEJELElBQUksRUFBRUEsSUFBSTtNQUNWRSxhQUFhLEVBQUVBLGFBQWE7TUFDNUJQLE9BQU8sRUFBRUEsT0FBTztNQUNoQlEsV0FBVyxFQUFFQSxXQUFXO01BQ3hCUSxhQUFhLEVBQUVBLGFBQWE7TUFDNUJDLFdBQVcsRUFBRUE7SUFBVyxDQUFBLENBQ3hCLEVBQ0RKLFFBQVE7RUFBQSxDQUFBLENBQUEsQ0FDRTtBQUVqQixDQUFDO0FBRUQsT0FBTyxJQUFNYSxhQUFhLGdCQUFHdEQsSUFBSSxDQUFDZ0MsaUJBQWlCLENBQUMiLCJmaWxlIjoiYnVzaW5lc3MvRGlhbG9nL0RldGFpbHNEaWFsb2cvRGV0YWlsc0RpYWxvZy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbmltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBtZW1vLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUxvY2FsZSB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvQ29uZmlnUHJvdmlkZXInO1xuaW1wb3J0IHsgSWNvbnMgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL0ljb25zJztcbmltcG9ydCB7IGRlZmF1bHQgYXMgY2xhc3NuYW1lcywgam9pbkNscyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuaW1wb3J0IHsgQmFzZURpYWxvZyB9IGZyb20gJy4uL0Jhc2VEaWFsb2cnO1xuaW1wb3J0IHsgRGVzY3JpcHRpb25zIH0gZnJvbSAnLi4vRGVzY3JpcHRpb25zJztcbmltcG9ydCAnLi9zdHlsZSc7XG5jb25zdCBQUkVGSVggPSAnZGV0YWlscy1kaWFsb2cnO1xuY29uc3QgRE9XTkxPQURfSUNPTl9TSVpFID0gMjA7XG4vKipcbiAqIEZpbGwgdGhlIGRldGFpbHMtZmFtaWx5IGRlZmF1bHQgZG93bmxvYWQgQ1RBIOKAlCBpY29uLCBsYWJlbCwgYW5kIHNlY29uZGFyeVxuICogdG9uZSDigJQgbGVhdmluZyBhbnkgZXhwbGljaXRseS1zZXQgZmllbGQgdW50b3VjaGVkLiBUaGUgY29uc3VtZXIgdXN1YWxseVxuICogb25seSB3aXJlcyBgb25DbGlja2AuXG4gKi9cbmNvbnN0IHdpdGhEb3dubG9hZERlZmF1bHRzID0gKGFjdGlvbiwgZG93bmxvYWRMYWJlbCkgPT4gYWN0aW9uICYmIE9iamVjdC5hc3NpZ24oeyBpY29uOiBfanN4KEljb25zLCB7IG5hbWU6ICdtZW51RGVwb3NpdCcsIHNpemU6IERPV05MT0FEX0lDT05fU0laRSB9KSwgY29sb3I6ICdzZWNvbmRhcnknLCBsYWJlbDogZG93bmxvYWRMYWJlbCB9LCBhY3Rpb24pO1xuLyoqXG4gKiBXcmFwcyBhbiBhY3Rpb24gc28gYSBQcm9taXNlLXJldHVybmluZyBgb25DbGlja2AgZHJpdmVzIHRoZSBidXR0b24nc1xuICogbG9hZGluZyBzdGF0ZSB1bnRpbCBpdCBzZXR0bGVzIChlcnJvcnMgYXJlIHJldGhyb3duIHRvIHRoZSBjb25zb2xlIOKAlCB0aGVcbiAqIGNhbGxlciBvd25zIHN1cmZhY2luZyB0aGVtKS5cbiAqL1xuY29uc3QgdXNlQXN5bmNBY3Rpb24gPSAoYWN0aW9uKSA9PiB7XG4gICAgdmFyIF9hO1xuICAgIGNvbnN0IFtidXN5LCBzZXRCdXN5XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBpZiAoIWFjdGlvbilcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBhY3Rpb24pLCB7IGxvYWRpbmc6IChfYSA9IGFjdGlvbi5sb2FkaW5nKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBidXN5LCBvbkNsaWNrOiAoKSA9PiB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSAoX2EgPSBhY3Rpb24ub25DbGljaykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwoYWN0aW9uKTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgc2V0QnVzeSh0cnVlKTtcbiAgICAgICAgICAgICAgICB2b2lkIHJlc3VsdC5maW5hbGx5KCgpID0+IHNldEJ1c3koZmFsc2UpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSB9KTtcbn07XG4vKipcbiAqIFJlYWQtb25seSBkZXRhaWxzIHNjZW5hcmlvIHNoZWxsIOKAlCBgQmFzZURpYWxvZ2AgKyBgRGVzY3JpcHRpb25zYCwgd2l0aCB0aGVcbiAqIGRldGFpbHMtZmFtaWx5IHNwZWMgKEZpZ21hIDM5OTU2LTk4OTcpIHNjb3BlZCBvbiB0b3A6IHRpdGxl4oaUcm93cyBnYXAgMCBhbmRcbiAqIGNvbXBhY3Qgcm93cy4gTWlycm9ycyB0aGUgbGVnYWN5IGBNb2RhbC9EZXRhaWxzYCBjb250cmFjdCB1c2VkIGJ5IHRoZVxuICogVHJhbnNhY3Rpb25zIHJlY2VpcHRzOiBhcmJpdHJhcnkgUmVhY3ROb2RlIHJvdyB2YWx1ZXMsIGEgYmVmb3JlLXJvd3Mgc2xvdCxcbiAqIGFuZCBhc3luYy1sb2FkaW5nIENUQXMuIENvcHlhYmxlIHJvd3Mgc3VyZmFjZSBgb25Db3B5U3VjY2Vzc2AvYG9uQ29weUVycm9yYFxuICog4oCUIHRoZSBzaGVsbCBzaG93cyBubyB0b2FzdCBpdHNlbGYuXG4gKi9cbmNvbnN0IERldGFpbHNEaWFsb2dCYXNlID0gKF9hKSA9PiB7XG4gICAgdmFyIHsgcm93cywgbGlzdENscywgY29weUNvbnRhaW5lZCwgbG9hZGluZywgbG9hZGluZ1Jvd3MsIGJlZm9yZVJvd3MsIHByaW1hcnksIHNlY29uZGFyeSwgY2xhc3NOYW1lLCBjaGlsZHJlbiwgc2hvd0Nsb3NlSWNvbiA9IHRydWUsIG9uQ29weVN1Y2Nlc3MsIG9uQ29weUVycm9yLCBcbiAgICAvLyBEZXRhaWxzIGxpc3RzIGNhbiBiZSBsb25nIOKAlCBwaW4gdGhlIHRpdGxlICsgRG93bmxvYWQsIHNjcm9sbCB0aGUgcm93cy5cbiAgICBmaXhlZCA9IHRydWUgfSA9IF9hLCByZXN0ID0gX19yZXN0KF9hLCBbXCJyb3dzXCIsIFwibGlzdENsc1wiLCBcImNvcHlDb250YWluZWRcIiwgXCJsb2FkaW5nXCIsIFwibG9hZGluZ1Jvd3NcIiwgXCJiZWZvcmVSb3dzXCIsIFwicHJpbWFyeVwiLCBcInNlY29uZGFyeVwiLCBcImNsYXNzTmFtZVwiLCBcImNoaWxkcmVuXCIsIFwic2hvd0Nsb3NlSWNvblwiLCBcIm9uQ29weVN1Y2Nlc3NcIiwgXCJvbkNvcHlFcnJvclwiLCBcImZpeGVkXCJdKTtcbiAgICBjb25zdCBsb2NhbGUgPSB1c2VMb2NhbGUoJ0RldGFpbHNEaWFsb2cnKTtcbiAgICBjb25zdCBjbGFzc2VzID0gY2xhc3NuYW1lcyhQUkVGSVgpO1xuICAgIGNvbnN0IHJlc29sdmVkUHJpbWFyeSA9IHVzZUFzeW5jQWN0aW9uKHdpdGhEb3dubG9hZERlZmF1bHRzKHByaW1hcnksIGxvY2FsZS5kb3dubG9hZCkpO1xuICAgIGNvbnN0IHJlc29sdmVkU2Vjb25kYXJ5ID0gdXNlQXN5bmNBY3Rpb24oc2Vjb25kYXJ5KTtcbiAgICByZXR1cm4gKF9qc3hzKEJhc2VEaWFsb2csIE9iamVjdC5hc3NpZ24oe30sIHJlc3QsIHsgc2hvd0Nsb3NlSWNvbjogc2hvd0Nsb3NlSWNvbiwgZml4ZWQ6IGZpeGVkLCBjbGFzc05hbWU6IGpvaW5DbHMoY2xhc3NlcygpLCBjbGFzc05hbWUpLCBwcmltYXJ5OiByZXNvbHZlZFByaW1hcnksIHNlY29uZGFyeTogcmVzb2x2ZWRTZWNvbmRhcnksIGNoaWxkcmVuOiBbYmVmb3JlUm93cywgX2pzeChEZXNjcmlwdGlvbnMsIHsgY2xhc3NOYW1lOiBsaXN0Q2xzLCByb3dzOiByb3dzLCBjb3B5Q29udGFpbmVkOiBjb3B5Q29udGFpbmVkLCBsb2FkaW5nOiBsb2FkaW5nLCBsb2FkaW5nUm93czogbG9hZGluZ1Jvd3MsIG9uQ29weVN1Y2Nlc3M6IG9uQ29weVN1Y2Nlc3MsIG9uQ29weUVycm9yOiBvbkNvcHlFcnJvciB9KSwgY2hpbGRyZW5dIH0pKSk7XG59O1xuZXhwb3J0IGNvbnN0IERldGFpbHNEaWFsb2cgPSBtZW1vKERldGFpbHNEaWFsb2dCYXNlKTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
@@ -20,6 +20,14 @@ export interface DetailsDialogProps extends Omit<BaseDialogProps, 'preset' | 'pr
20
20
  * bare glyph. Defaults to `false`.
21
21
  */
22
22
  copyContained?: boolean;
23
+ /**
24
+ * Render placeholder rows instead of `rows` — for the window between opening
25
+ * the dialog and the details arriving. Forwarded to `Descriptions`, which
26
+ * owns the placeholder's shape; pass the still-empty `rows` straight through.
27
+ */
28
+ loading?: boolean;
29
+ /** Placeholder row count while `loading`. Defaults to 6. */
30
+ loadingRows?: number;
23
31
  /** Content rendered between the description and the rows (alerts, QR cards…). */
24
32
  beforeRows?: ReactNode;
25
33
  /** Primary action; an async `onClick` shows the built-in loading spinner. */
@@ -22,6 +22,17 @@ export interface LogoWithBetaCustomProps {
22
22
  wordCls?: string;
23
23
  betaColor?: string;
24
24
  betaCls?: string;
25
+ /**
26
+ * Include the "NETWORK" wordmark, giving the full four-part lockup
27
+ * `1MONEY NETWORK BETA` — the Figma `Logo(Beta)` component. Mirrors the prop
28
+ * of the same name on {@link LogoWithWords}.
29
+ *
30
+ * Sizes assume the lockup's own 389:32 aspect ratio, the same assumption the
31
+ * three-part widths below already make.
32
+ */
33
+ networkLogo?: boolean;
34
+ networkCls?: string;
35
+ networkColor?: string;
25
36
  }
26
37
  export declare const LogoWithBeta: FC<IconWrapperProps & LogoWithBetaCustomProps>;
27
38
  declare const _default: {
@@ -156,6 +156,22 @@ export var LogoWithWords = function LogoWithWords(props) {
156
156
  }, rest))]
157
157
  });
158
158
  };
159
+ /**
160
+ * Part widths of the four-part lockup, as fractions of the total width.
161
+ *
162
+ * Measured off the source artwork (389 x 32): the pinwheel occupies 0-32,
163
+ * `1MONEY` 40.57-175.49, `NETWORK` 184.07-343.33 and `BETA` 347.33-388.70. The
164
+ * inter-part gaps (2.2% / 2.2% / 1.03%) live in Icons.scss as padding, so these
165
+ * five numbers add up to 1 and the lockup fills its box exactly.
166
+ *
167
+ * Each part keeps its own aspect ratio via `preserveAspectRatio`, so only the
168
+ * width has to be right — the height argument just bounds the box.
169
+ */
170
+ var BETA_LOCKUP = {
171
+ word: 0.3468,
172
+ network: 0.4094,
173
+ beta: 0.1063
174
+ };
159
175
  export var LogoWithBeta = function LogoWithBeta(props) {
160
176
  var logoColor = props.logoColor,
161
177
  wordColor = props.wordColor,
@@ -163,18 +179,21 @@ export var LogoWithBeta = function LogoWithBeta(props) {
163
179
  wordCls = props.wordCls,
164
180
  betaColor = props.betaColor,
165
181
  betaCls = props.betaCls,
182
+ networkLogo = props.networkLogo,
183
+ networkCls = props.networkCls,
184
+ networkColor = props.networkColor,
166
185
  color = props.color,
167
186
  className = props.className,
168
187
  width = props.width,
169
188
  height = props.height,
170
189
  size = props.size,
171
- rest = __rest(props, ["logoColor", "wordColor", "logoCls", "wordCls", "betaColor", "betaCls", "color", "className", "width", "height", "size"]);
190
+ rest = __rest(props, ["logoColor", "wordColor", "logoCls", "wordCls", "betaColor", "betaCls", "networkLogo", "networkCls", "networkColor", "color", "className", "width", "height", "size"]);
172
191
  var classes = classnames('icons');
173
192
  var h = useMemo(function () {
174
193
  return height || size;
175
194
  }, [height, size]);
176
195
  return _jsxs("i", {
177
- className: joinCls(classes('logo-with-beta'), className),
196
+ className: joinCls(classes('logo-with-beta'), networkLogo && classes('logo-with-beta-with-network'), className),
178
197
  children: [_jsx(Logo, Object.assign({
179
198
  color: logoColor || color,
180
199
  width: h,
@@ -182,13 +201,18 @@ export var LogoWithBeta = function LogoWithBeta(props) {
182
201
  className: logoCls
183
202
  }, rest)), _jsx(LogoWord, Object.assign({
184
203
  color: wordColor || color,
185
- width: width && height ? +width - +height - +width * 0.04 - +width * 0.197 : size,
204
+ width: width && height ? networkLogo ? +width * BETA_LOCKUP.word : +width - +height - +width * 0.04 - +width * 0.197 : size,
186
205
  height: h,
187
206
  className: wordCls
207
+ }, rest)), networkLogo && _jsx(LogoNetwork, Object.assign({
208
+ color: networkColor || color,
209
+ width: width && height ? +width * BETA_LOCKUP.network : size,
210
+ height: h,
211
+ className: networkCls
188
212
  }, rest)), _jsx(LogoBeta, Object.assign({
189
213
  color: betaColor || color,
190
214
  className: betaCls,
191
- width: width && height ? +width - +height - +width * 0.04 - +width * 0.618 - 1 : size,
215
+ width: width && height ? networkLogo ? +width * BETA_LOCKUP.beta : +width - +height - +width * 0.04 - +width * 0.618 - 1 : size,
192
216
  height: h ? +h / 2.5 : void 0
193
217
  }, rest, {
194
218
  style: Object.assign(Object.assign({}, rest.style), {
@@ -206,4 +230,4 @@ export default {
206
230
  LogoBeta: LogoBeta,
207
231
  LogoWithBeta: LogoWithBeta
208
232
  };
209
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvSWNvbnMvTG9nby5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvSWNvbnMvTG9nby50c3giXSwibmFtZXMiOlsiX19yZXN0IiwicyIsImUiLCJ0IiwicCIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJpIiwibGVuZ3RoIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwidXNlTWVtbyIsImRlZmF1bHQiLCJjbGFzc25hbWVzIiwiam9pbkNscyIsIkljb25XcmFwcGVyIiwiTG9nbyIsInByb3BzIiwiYXNzaWduIiwidmlld0JveCIsImNoaWxkcmVuIiwiZCIsIkxvZ29Xb3JkIiwiZmlsbFJ1bGUiLCJjbGlwUnVsZSIsIkxvZ29OZXR3b3JrIiwiTG9nb0JnIiwiZmlsbCIsImlkIiwiY3giLCJjeSIsInIiLCJncmFkaWVudFVuaXRzIiwiZ3JhZGllbnRUcmFuc2Zvcm0iLCJzdG9wQ29sb3IiLCJvZmZzZXQiLCJMb2dvQmV0YSIsIkxvZ29XaXRoV29yZHMiLCJsb2dvQ29sb3IiLCJ3b3JkQ29sb3IiLCJsb2dvQ2xzIiwid29yZENscyIsImNvbG9yIiwiY2xhc3NOYW1lIiwid2lkdGgiLCJoZWlnaHQiLCJzaXplIiwibmV0d29ya0xvZ28iLCJuZXR3b3JrQ2xzIiwibmV0d29ya0NvbG9yIiwicmVzdCIsImNsYXNzZXMiLCJMb2dvV2l0aEJldGEiLCJiZXRhQ29sb3IiLCJiZXRhQ2xzIiwiaCIsInN0eWxlIiwiY29uY2F0Il0sIm1hcHBpbmdzIjoiQUFBQSxJQUFJQSxNQUFNLEdBQUksSUFBSSxJQUFJLElBQUksQ0FBQ0EsTUFBTSxJQUFLLFVBQVVDLENBQUMsRUFBRUMsQ0FBQyxFQUFFO0VBQ2xELElBQUlDLENBQUMsR0FBRyxDQUFDLENBQUM7RUFDVixLQUFLLElBQUlDLENBQUMsSUFBSUgs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WCxLQUFLO01BQ3pCQyxTQUFTLEVBQUVXLE9BQU87TUFDbEJWLEtBQUssRUFDSEEsS0FBSyxJQUFJQyxNQUFNLEdBQ1QsQ0FBQ0QsS0FBSyxHQUFLLENBQUNDLE1BQU8sR0FBSyxDQUFDRCxLQUFLLEdBQUksSUFBSyxHQUFLLENBQUNBLEtBQUssR0FBSSxLQUFNLEdBQUcsQ0FBQyxHQUNsRUUsSUFBSTtNQUVWRCxNQUFNLEVBQUVVLENBQUMsR0FBRyxDQUFDQSxDQUFDLEdBQUcsR0FBRyxHQUFHLEtBQUs7SUFBQyxDQUFBLEVBQ3pCTCxJQUFJLEVBQUE7TUFDUk0sS0FBSyxFQUFFMUQsTUFBQSxDQUFBb0IsTUFBQSxDQUFBcEIsTUFBQSxDQUFBb0IsTUFBQSxDQUFBLENBQUEsQ0FBQSxFQUNGZ0MsSUFBSSxDQUFDTSxLQUFLLENBQUEsRUFBQTtRQUNiLGVBQWUsS0FBQUMsTUFBQSxDQUFLRixDQUFDLEtBQUEsSUFBQSxJQUFEQSxDQUFDLEtBQUEsS0FBQSxDQUFBLEdBQURBLENBQUMsR0FBSSxFQUFFO01BQUksQ0FBQTtJQUNmLENBQUEsQ0FBQSxDQUNsQjtFQUFBLENBQUEsQ0FDQTtBQUNOLENBQUM7QUFFRCxlQUFlO0VBQ2J2QyxJQUFJLEVBQUpBLElBQUk7RUFDSk0sUUFBUSxFQUFSQSxRQUFRO0VBQ1JHLFdBQVcsRUFBWEEsV0FBVztFQUNYWSxhQUFhLEVBQWJBLGFBQWE7RUFDYlgsTUFBTSxFQUFOQSxNQUFNO0VBQ05VLFFBQVEsRUFBUkEsUUFBUTtFQUNSZ0IsWUFBWSxFQUFaQTtBRHZIRixDQ3dIQyIsImZpbGUiOiJjb21wb25lbnRzL0ljb25zL0xvZ28uanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGRlZmF1bHQgYXMgY2xhc3NuYW1lcywgam9pbkNscyB9IGZyb20gJy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuaW1wb3J0IEljb25XcmFwcGVyIGZyb20gJy4vV3JhcHBlcic7XG5leHBvcnQgY29uc3QgTG9nbyA9IChwcm9wcykgPT4gX2pzeHMoSWNvbldyYXBwZXIsIE9iamVjdC5hc3NpZ24oeyB2aWV3Qm94OiBcIjAgMCAyNDggMjQ4XCIgfSwgcHJvcHMsIHsgY2hpbGRyZW46IFtfanN4KFwicGF0aFwiLCB7IGQ6IFwiTTE1Ny4yNzYgMTE0LjMyNUMxNzQuNTQ4IDEwMy4zMiAxODYuMDA0IDgzLjk5NzkgMTg2LjAwNCA2MkMxODYuMDA0IDI3Ljc1ODMgMTU4LjI0NiAwIDEyNC4wMDQgMEM5NS42NDQ4IDAgNzEuNzMyNyAxOS4wNDAxIDY0LjM1MzggNDUuMDM0M0M4OC41MzMzIDQ1Ljc0MDYgMTA5Ljk4OCA1Ny4zMTE5IDEyNC4wMDQgNzUuMDM1NkMxMjUuODc1IDc3LjQwMTMgMTI3LjYxMyA3OS44NzY3IDEyOS4yMDggODIuNDUwNEMxMzQuMDg3IDkwLjMyNDggMTM3LjYyIDk5LjEyMDMgMTM5LjQ4NyAxMDguNTE2QzE0NS43MTEgMTA5Ljc1MiAxNTEuNjcyIDExMS43MiAxNTcuMjc2IDExNC4zMjVaXCIgfSksIF9qc3goXCJwYXRoXCIsIHsgZDogXCJNMTA4LjUyIDEwOC41MTdDMTA5Ljc1NyAxMDIuMjk1IDExMS43MjQgOTYuMzM2IDExNC4zMjkgOTAuNzMzM0MxMDMuMzI0IDczLjQ1ODYgODQuMDAwMSA2MiA2MiA2MkMyNy43NTgzIDYyIDAgODkuNzU4MyAwIDEyNEMwIDE1Mi4zNjIgMTkuMDQzOSAxNzYuMjc2IDQ1LjA0MiAxODMuNjUyQzQ1Ljc0NzcgMTU5LjQ3MiA1Ny4zMTkyIDEzOC4wMTcgNzUuMDQzNSAxMjRDNzUuNDk0NiAxMjMuNjQzIDc1Ljk0OTYgMTIzLjI5MSA3Ni40MDg2IDEyMi45NDRDODUuNzIwNSAxMTUuOTA0IDk2LjY0MDYgMTEwLjg3OSAxMDguNTIgMTA4LjUxN1pcIiB9KSwgX2pzeChcInBhdGhcIiwgeyBkOiBcIk05MC43MzU0IDEzMy42NzJDNzMuNDYxNyAxNDQuNjc3IDYyLjAwMzkgMTY0LjAwMSA2Mi4wMDM5IDE4NkM2Mi4wMDM5IDIyMC4yNDIgODkuNzYyMyAyNDggMTI0LjAwNCAyNDhDMTUyLjM2MyAyNDggMTc2LjI3NSAyMjguOTYgMTgzLjY1NCAyMDIuOTY2QzE1OS40NzQgMjAyLjI1OSAxMzguMDIgMTkwLjY4OCAxMjQuMDA0IDE3Mi45NjRDMTE2LjgzNyAxNjMuOTAyIDExMS42MTUgMTUzLjIzMSAxMDguOTY4IDE0MS41ODJDMTA4LjgwOSAxNDAuODg2IDEwOC42NiAxNDAuMTg2IDEwOC41MiAxMzkuNDgzQzEwMi4yOTggMTM4LjI0NiA5Ni4zMzgzIDEzNi4yNzggOTAuNzM1NCAxMzMuNjcyWlwiIH0pLCBfanN4KFwicGF0aFwiLCB7IGQ6IFwiTTEzMy42NzYgMTU3LjI3NEMxNDQuNjgxIDE3NC41NDQgMTY0LjAwMyAxODYgMTg2IDE4NkMyMjAuMjQyIDE4NiAyNDggMTU4LjI0MiAyNDggMTI0QzI0OCA5NS42NDM3IDIyOC45NjQgNzEuNzMzNiAyMDIuOTczIDY0LjM1MjFDMjAyLjI2NiA4OC41MzA3IDE5MC42OTUgMTA5Ljk4NCAxNzIuOTcyIDEyNEMxNjMuOTA4IDEzMS4xNjggMTUzLjIzNSAxMzYuMzkxIDE0MS41ODQgMTM5LjAzOEMxNDAuODg4IDEzOS4xOTYgMTQwLjE4OSAxMzkuMzQ1IDEzOS40ODcgMTM5LjQ4NEMxMzguMjUgMTQ1LjcwOCAxMzYuMjgyIDE1MS42NjkgMTMzLjY3NiAxNTcuMjc0WlwiIH0pXSB9KSk7XG5leHBvcnQgY29uc3QgTG9nb1dvcmQgPSAocHJvcHMpID0+IF9qc3hzKEljb25XcmFwcGVyLCBPYmplY3QuYXNzaWduKHsgdmlld0JveDogXCIwIDAgNDY5IDg2XCIgfSwgcHJvcHMsIHsgY2hpbGRyZW46IFtfanN4KFwicGF0aFwiLCB7IGZpbGxSdWxlOiBcImV2ZW5vZGRcIiwgY2xpcFJ1bGU6IFwiZXZlbm9kZFwiLCBkOiBcIk0yMzQuNTEgNDNDMjM0LjUxIDY2LjU4NDMgMjE1LjM5MiA4NS43MDMzIDE5MS44MDcgODUuNzAzM0MxNjguMjIzIDg1LjcwMzMgMTQ5LjEwNCA2Ni41ODQzIDE0OS4xMDQgNDNDMTQ5LjEwNCAxOS40MTU2IDE2OC4yMjMgMC4yOTY2MzEgMTkxLjgwNyAwLjI5NjYzMUMyMTUuMzkyIDAuMjk2NjMxIDIzNC41MSAxOS40MTU2IDIzNC41MSA0M1pNMjE1LjgyOCA0M0MyMTUuODI4IDU2LjI2NjIgMjA1LjA3MyA2Ny4wMjA2IDE5MS44MDcgNjcuMDIwNkMxNzguNTQxIDY3LjAyMDYgMTY3Ljc4NyA1Ni4yNjYyIDE2Ny43ODcgNDNDMTY3Ljc4NyAyOS43MzM3IDE3OC41NDEgMTguOTc5MyAxOTEuODA3IDE4Ljk3OTNDMjA1LjA3MyAxOC45NzkzIDIxNS44MjggMjkuNzMzNyAyMTUuODI4IDQzWlwiIH0pLCBfanN4KFwicGF0aFwiLCB7IGQ6IFwiTTAgMzIuNTk2OVYxOS41NTcyQzEwLjgyNDEgMTcuOTk0MyAxOS43OTQyIDEwLjcgMjMuNzM0NSAwLjg1MDExNEgzOC4yMDM1Vjg0LjgxMzRIMTcuMzMyN1YzMi41OTY5SDBaXCIgfSksIF9qc3goXCJwYXRoXCIsIHsgZDogXCJNMzQyLjI3OCAxOC4zNjI1TDM4My41NjIgMTguMzYyVjAuODQ5NjY2TDMyMS40MDcgMC44NTAxMTRWODQuODEzNEgzODMuNTYyVjY3LjMwMTFIMzQyLjI3OFY1MC4zODg1TDM3NC4wNDQgNTAuMzg4NFYzNC4wNzU2TDM0Mi4yNzggMzQuMDc1NlYxOC4zNjI1WlwiIH0pLCBfanN4KFwicGF0aFwiLCB7IGQ6IFwiTTQ2LjY4MSA4NC44MTM0SDY3LjU1MTlWMzYuNzE0NEw4NS45MDM4IDg0LjgxMzRIMTAyLjkzNkwxMjEuMjg4IDM2LjcxNDRWODQuODEzNEgxNDIuMTU5VjAuODUwMTE0SDExNy40NUw5NC40MjAxIDU3LjgyNTJMNzEuMzkwMiAwLjg1MDExNEg0Ni42ODFWODQuODEzNFpcIiB9KSwgX2pzeChcInBhdGhcIiwgeyBkOiBcIk0zMTQuMzQ5IDAuODUwMTE0Vjg0LjgxMzRIMjkzLjM1OEwyNjIuMDUyIDMzLjk1NTZWODQuODEzNEgyNDEuMTgxVjAuODUwMTE0SDI2Mi4xNzJMMjkzLjQ3OCA1Mi4wNjc3VjAuODUwMTE0SDMxNC4zNDlaXCIgfSksIF9qc3goXCJwYXRoXCIsIHsgZDogXCJNNDQ4LjM2MSAwLjg1MDExNEg0NzIuMjMxTDQ0MC40NDUgNTcuMjI1NVY4NC44MTM0SDQxOS41NzRWNTcuMjI1NUwzODcuNjY4IDAuODUwMTE0SDQxMS41MzdMNDMwLjAwOSAzNS41MTVMNDQ4LjM2MSAwLjg1MDExNFpcIiB9KV0gfSkpO1xuZXhwb3J0IGNvbnN0IExvZ29OZXR3b3JrID0gKHByb3BzKSA9PiBfanN4cyhJY29uV3JhcHBlciwgT2JqZWN0LmFzc2lnbih7IHZpZXdCb3g6IFwiMCAwIDU1NyA4NVwiIH0sIHByb3BzLCB7IGNoaWxkcmVuOiBbX2pzeChcInBhdGhcIiwgeyBkOiBcIk02NC42MzA5IDEuMzUwMlY4NC42NDk3SDU0Ljg4MDZMOS44NjA2IDE2LjU4MjFWODQuNjQ5N0gwLjIzMDU5MVYxLjM1MDJIOS45ODA5TDU1LjAwMSA2OS4yOTg4VjEuMzUwMkg2NC42MzA5WlwiIH0pLCBfanN4KFwicGF0aFwiLCB7IGQ6IFwiTTEzNi43NDUgOS42ODAxNUg5MS4xMjI3VjM4LjEyMUgxMjUuNDI5VjQ2LjQ1MDlIOTEuMTIyN1Y3Ni4zMTk4SDEzNi43NDVWODQuNjQ5N0g4MS40OTI4VjEuMzUwMkgxMzYuNzQ1VjkuNjgwMTVaXCIgfSksIF9qc3goXCJwYXRoXCIsIHsgZDogXCJNMTQ2LjE3OSAxLjM1MDJIMjA5LjM3NlY5LjY4MDE1SDE4Mi42NTNWODQuNjQ5N0gxNzMuMDIzVjkuNjgwMTVIMTQ2LjE3OVYxLjM1MDJaXCIgfSksIF9qc3goXCJwYXRoXCIsIHsgZDogXCJNMjQ4LjU0IDg0LjY0OTdIMjM3Ljk0N0wyMTQuMjMzIDEuMzUwMkgyMjQuNDY1TDI0My4yNDMgNzMuMTA2OEwyNjMuOTQ4IDEuMzUwMkgyNzQuNjYxTDI5NS4yNDUgNzIuOTg3OEwzMTQuMTQ0IDEuMzUwMkgzMjQuMjU1TDMwMC41NDIgODQuNjQ5N0gyODkuOTQ5TDI2OS4yNDQgMTUuNjMwMUwyNDguNTQgODQuNjQ5N1pcIiB9KSwgX2pzeChcInBhdGhcIiwgeyBkOiBcIk0zNzEuMjg2IDg1LjQ4MjdDMzY1LjM0NyA4NS40ODI3IDM1OS44MSA4NC40NTE0IDM1NC42NzQgODIuMzg4N0MzNDkuNjE5IDgwLjMyNjEgMzQ1LjE2NSA3Ny40MzA0IDM0MS4zMTMgNzMuNzAxOEMzMzcuNTQxIDY5Ljg5MzggMzM0LjU3MiA2NS40MTE1IDMzMi40MDUgNjAuMjU0OUMzMzAuMzE5IDU1LjAxODkgMzI5LjI3NSA0OS4yNjczIDMyOS4yNzUgNDNDMzI5LjI3NSAzNi43MzI3IDMzMC4zMTkgMzEuMDIwNyAzMzIuNDA1IDI1Ljg2NDFDMzM0LjU3MiAyMC42MjgxIDMzNy41NDEgMTYuMTQ1OCAzNDEuMzEzIDEyLjQxNzFDMzQ1LjE2NSA4LjYwOTE2IDM0OS42MTkgNS42NzM4NSAzNTQuNjc0IDMuNjExMTlDMzU5LjgxIDEuNTQ4NTQgMzY1LjM0NyAwLjUxNzIxMiAzNzEuMjg2IDAuNTE3MjEyQzM3Ny4xNDQgMC41MTcyMTIgMzgyLjYwMSAxLjU0ODU0IDM4Ny42NTcgMy42MTExOUMzOTIuNzkzIDUuNjczODUgMzk3LjI0NyA4LjYwOTE2IDQwMS4wMTggMTIuNDE3MUM0MDQuNzkgMTYuMTQ1OCA0MDcuNzE5IDIwLjYyODEgNDA5LjgwNiAyNS44NjQxQzQxMS45NzMgMzEuMDIwNyA0MTMuMDU2IDM2LjczMjcgNDEzLjA1NiA0M0M0MTMuMDU2IDQ5LjI2NzMgNDExLjk3MyA1NS4wMTg5IDQwOS44MDYgNjAuMjU0OUM0MDcuNzE5IDY1LjQxMTUgNDA0Ljc5IDY5Ljg5MzggNDAxLjAxOCA3My43MDE4QzM5Ny4yNDcgNzcuNDMwNCAzOTIuNzkzIDgwLjMyNjEgMzg3LjY1NyA4Mi4zODg3QzM4Mi42MDEgODQuNDUxNCAzNzcuMTQ0IDg1LjQ4MjcgMzcxLjI4NiA4NS40ODI3Wk0zNzEuMjg2IDc3LjE1MjhDMzc3LjMwNSA3Ny4xNTI4IDM4Mi43MjIgNzUuNzY0NCAzODcuNTM3IDcyLjk4NzhDMzkyLjM1MiA3MC4yMTExIDM5Ni4xNjMgNjYuMjg0MiAzOTguOTcyIDYxLjIwNjlDNDAxLjc4MSA1Ni4wNTAyIDQwMy4xODUgNDkuOTgxMyA0MDMuMTg1IDQzQzQwMy4xODUgMzUuOTM5MyA0MDEuNzgxIDI5Ljg3MDQgMzk4Ljk3MiAyNC43OTMxQzM5Ni4xNjMgMTkuNjM2NCAzOTIuMzUyIDE1LjcwOTUgMzg3LjUzNyAxMy4wMTIxQzM4Mi43MjIgMTAuMjM1NSAzNzcuMzA1IDguODQ3MTYgMzcxLjI4NiA4Ljg0NzE2QzM2NS4xODcgOC44NDcxNiAzNTkuNjkgMTAuMjM1NSAzNTQuNzk1IDEzLjAxMjFDMzQ5Ljk4IDE1LjcwOTUgMzQ2LjE2OCAxOS42MzY0IDM0My4zNTkgMjQuNzkzMUMzNDAuNTUgMjkuODcwNCAzMzkuMTQ2IDM1LjkzOTMgMzM5LjE0NiA0M0MzMzkuMTQ2IDQ5Ljk4MTMgMzQwLjU1IDU2LjA1MDIgMzQzLjM1OSA2MS4yMDY5QzM0Ni4xNjggNjYuMjg0MiAzNDkuOTggNzAuMjExMSAzNTQuNzk1IDcyLjk4NzhDMzU5LjY5IDc1Ljc2NDQgMzY1LjE4NyA3Ny4xNTI4IDM3MS4yODYgNzcuMTUyOFpcIiB9KSwgX2pzeChcInBhdGhcIiwgeyBkOiBcIk00NzMuMzk0IDI1Ljk4MzFDNDczLjM5NCAyMC45ODUxIDQ3MS45MDkgMTcuMDE4NCA0NjguOTQgMTQuMDgzMUM0NjUuOTcxIDExLjE0NzggNDYxLjExNSA5LjY4MDE1IDQ1NC4zNzUgOS42ODAxNUg0MzQuMzkyVjQyLjI4Nkg0NTQuNDk1QzQ1OC45MDkgNDIuMjg2IDQ2Mi40OCA0MS42MTE2IDQ2NS4yMDggNDAuMjYzQzQ2OC4wMTcgMzguOTE0MyA0NzAuMDYzIDM3LjAxMDMgNDcxLjM0NyAzNC41NTFDNDcyLjcxMiAzMi4wOTE3IDQ3My4zOTQgMjkuMjM1NyA0NzMuMzk0IDI1Ljk4MzFaTTQ1NC4zNzUgMS4zNTAyQzQ2MC45NTUgMS4zNTAyIDQ2Ni4zMzIgMi40NjA4NiA0NzAuNTA1IDQuNjgyMThDNDc0Ljc1OCA2LjkwMzUgNDc3LjkyOCA5Ljg3ODQ5IDQ4MC4wMTQgMTMuNjA3MUM0ODIuMTAxIDE3LjI1NjUgNDgzLjE0NCAyMS4zODE4IDQ4My4xNDQgMjUuOTgzMUM0ODMuMTQ0IDI5LjIzNTcgNDgyLjU4MiAzMi4zMjk3IDQ4MS40NTkgMzUuMjY1QzQ4MC40MTUgMzguMjAwMyA0NzguNzMgNDAuODE4MyA0NzYuNDAzIDQzLjExOUM0NzQuMDc2IDQ1LjQxOTYgNDcxLjEwNiA0Ny4yNDQzIDQ2Ny40OTUgNDguNTkyOUM0NjMuODg0IDQ5Ljk0MTYgNDU5LjU1MSA1MC42MTU5IDQ1NC40OTUgNTAuNjE1OUg0MzQuMzkyVjg0LjY0OTdINDI0Ljc2MlYxLjM1MDJINDU0LjM3NVpNNDYxLjM1NiA0Ny4wNDU5TDQ4NC43MDkgODQuNjQ5N0g0NzMuNzU1TDQ1MS4wMDQgNDcuMDQ1OUg0NjEuMzU2WlwiIH0pLCBfanN4KFwicGF0aFwiLCB7IGQ6IFwiTTQ5Ni4zODUgMS4zNTAySDUwNi4wMTVWMzguMTIxSDUxMC4xMDhMNTQ0Ljg5NiAxLjM1MDJINTU3LjI5NUw1MTguNTM0IDQyLjI4Nkw1NTcuNjU2IDg0LjY0OTdINTQ0Ljg5Nkw1MDkuOTg3IDQ2LjQ1MDlINTA2LjAxNVY4NC42NDk3SDQ5Ni4zODVWMS4zNTAyWlwiIH0pXSB9KSk7XG5leHBvcnQgY29uc3QgTG9nb0JnID0gKHByb3BzKSA9PiBfanN4cyhJY29uV3JhcHBlciwgT2JqZWN0LmFzc2lnbih7IHZpZXdCb3g6IFwiMCAwIDU2IDU3XCIgfSwgcHJvcHMsIHsgY2hpbGRyZW46IFtfanN4KFwicGF0aFwiLCB7IGQ6IFwiTS03LjYyOTM5ZS0wNiAyOC43NUMtNy42MjkzOWUtMDYgMTMuMjg2IDEyLjUzNiAwLjc1IDI4IDAuNzVDNDMuNDY0IDAuNzUgNTYgMTMuMjg2IDU2IDI4Ljc1QzU2IDQ0LjIxNCA0My40NjQgNTYuNzUgMjggNTYuNzVDMTIuNTM2IDU2Ljc1IC03LjYyOTM5ZS0wNiA0NC4yMTQgLTcuNjI5MzllLTA2IDI4Ljc1WlwiLCBmaWxsOiBcInVybCgjcGFpbnQwX3JhZGlhbF8xNjQ4XzIyMDA1KVwiIH0pLCBfanN4KFwicGF0aFwiLCB7IGQ6IFwiTTMxLjc1NjkgMjcuNDA3N0MzMy43MDcgMjYuMTY1MiAzNS4wMDA0IDIzLjk4MzYgMzUuMDAwNCAyMS41QzM1LjAwMDQgMTcuNjM0IDMxLjg2NjQgMTQuNSAyOC4wMDA0IDE0LjVDMjQuNzk4NiAxNC41IDIyLjA5ODggMTYuNjQ5NyAyMS4yNjU3IDE5LjU4NDVDMjMuOTk1NyAxOS42NjQzIDI2LjQxNzkgMjAuOTcwNyAyOC4wMDA0IDIyLjk3MThDMjguMjExNyAyMy4yMzg5IDI4LjQwNzkgMjMuNTE4MyAyOC41ODggMjMuODA4OUMyOS4xMzg4IDI0LjY5OCAyOS41Mzc3IDI1LjY5MSAyOS43NDg1IDI2Ljc1MThDMzAuNDUxMiAyNi44OTE0IDMxLjEyNDIgMjcuMTEzNSAzMS43NTY5IDI3LjQwNzdaXCIgfSksIF9qc3goXCJwYXRoXCIsIHsgZDogXCJNMjYuMjUyMyAyNi43NTJDMjYuMzkxOSAyNi4wNDk0IDI2LjYxNCAyNS4zNzY2IDI2LjkwODEgMjQuNzQ0MUMyNS42NjU2IDIyLjc5MzcgMjMuNDgzOSAyMS41IDIxIDIxLjVDMTcuMTM0IDIxLjUgMTQgMjQuNjM0IDE0IDI4LjVDMTQgMzEuNzAyMSAxNi4xNTAxIDM0LjQwMjEgMTkuMDg1NCAzNS4yMzQ5QzE5LjE2NTEgMzIuNTA0OSAyMC40NzE1IDMwLjA4MjUgMjIuNDcyNiAyOC41QzIyLjUyMzYgMjguNDU5NyAyMi41NzQ5IDI4LjQyIDIyLjYyNjggMjguMzgwOEMyMy42NzgxIDI3LjU4NTkgMjQuOTExIDI3LjAxODYgMjYuMjUyMyAyNi43NTJaXCIgfSksIF9qc3goXCJwYXRoXCIsIHsgZDogXCJNMjQuMjQ0MyAyOS41OTJDMjIuMjk0MSAzMC44MzQ1IDIxLjAwMDQgMzMuMDE2MiAyMS4wMDA0IDM1LjVDMjEuMDAwNCAzOS4zNjYgMjQuMTM0NCA0Mi41IDI4LjAwMDQgNDIuNUMzMS4yMDIzIDQyLjUgMzMuOTAyIDQwLjM1MDMgMzQuNzM1MSAzNy40MTU1QzMyLjAwNTIgMzcuMzM1NyAyOS41ODI5IDM2LjAyOTMgMjguMDAwNCAzNC4wMjgyQzI3LjE5MTMgMzMuMDA1MSAyNi42MDE3IDMxLjgwMDMgMjYuMzAyOCAzMC40ODUxQzI2LjI4NDkgMzAuNDA2NSAyNi4yNjgxIDMwLjMyNzQgMjYuMjUyMyAzMC4yNDhDMjUuNTQ5NyAzMC4xMDg0IDI0Ljg3NjkgMjkuODg2MiAyNC4yNDQzIDI5LjU5MlpcIiB9KSwgX2pzeChcInBhdGhcIiwgeyBkOiBcIk0yOS4wOTI0IDMyLjI1NjdDMzAuMzM1IDM0LjIwNjYgMzIuNTE2NCAzNS41IDM1IDM1LjVDMzguODY2IDM1LjUgNDIgMzIuMzY2IDQyIDI4LjVDNDIgMjUuMjk4NSAzOS44NTA3IDIyLjU5ODkgMzYuOTE2MyAyMS43NjU2QzM2LjgzNjUgMjQuNDk1NCAzNS41MzAxIDI2LjkxNzYgMzMuNTI5MSAyOC41QzMyLjUwNTggMjkuMzA5MyAzMS4zMDA3IDI5Ljg5ODkgMjkuOTg1MiAzMC4xOTc4QzI5LjkwNjcgMzAuMjE1NiAyOS44Mjc4IDMwLjIzMjQgMjkuNzQ4NSAzMC4yNDgyQzI5LjYwODkgMzAuOTUwOSAyOS4zODY3IDMxLjYyNCAyOS4wOTI0IDMyLjI1NjdaXCIgfSksIF9qc3goXCJkZWZzXCIsIHsgY2hpbGRyZW46IF9qc3hzKFwicmFkaWFsR3JhZGllbnRcIiwgeyBpZDogXCJwYWludDBfcmFkaWFsXzE2NDhfMjIwMDVcIiwgY3g6IFwiMFwiLCBjeTogXCIwXCIsIHI6IFwiMVwiLCBncmFkaWVudFVuaXRzOiBcInVzZXJTcGFjZU9uVXNlXCIsIGdyYWRpZW50VHJhbnNmb3JtOiBcInRyYW5zbGF0ZSgtMzQuOTA4NSA5Mi42Njc4KSByb3RhdGUoLTQ1LjY1OTQpIHNjYWxlKDEwOC44NTMgMTAzLjY5OClcIiwgY2hpbGRyZW46IFtfanN4KFwic3RvcFwiLCB7IHN0b3BDb2xvcjogXCIjMDczMzg3XCIgfSksIF9qc3goXCJzdG9wXCIsIHsgb2Zmc2V0OiBcIjAuMjE2ODUyXCIsIHN0b3BDb2xvcjogXCIjOTBBOENGXCIgfSksIF9qc3goXCJzdG9wXCIsIHsgb2Zmc2V0OiBcIjAuNTY3MTAzXCIsIHN0b3BDb2xvcjogXCIjQ0JENkU4XCIgfSksIF9qc3goXCJzdG9wXCIsIHsgb2Zmc2V0OiBcIjFcIiwgc3RvcENvbG9yOiBcIiNGOUY5RjlcIiB9KV0gfSkgfSldIH0pKTtcbmV4cG9ydCBjb25zdCBMb2dvQmV0YSA9IChwcm9wcykgPT4gX2pzeHMoSWNvbldyYXBwZXIsIE9iamVjdC5hc3NpZ24oeyB2aWV3Qm94OiBcIjAgMCAzMCA5XCIgfSwgcHJvcHMsIHsgY2hpbGRyZW46IFtfanN4KFwicGF0aFwiLCB7IGQ6IFwiTTIzLjAwNTMgOC44NjY5SDIxLjM1OTRMMjQuMzU2MSAwLjM1NDYxNEgyNi4yNTk4TDI5LjI2MDcgOC44NjY5SDI3LjYxNDdMMjUuMzQxMiAyLjEwMDNIMjUuMjc0N0wyMy4wMDUzIDguODY2OVpNMjMuMDU5MyA1LjUyOTMySDI3LjU0ODJWNi43Njc5MkgyMy4wNTkzVjUuNTI5MzJaXCIgfSksIF9qc3goXCJwYXRoXCIsIHsgZDogXCJNMTQuODQzOCAxLjY0NzI1VjAuMzU0NjE0SDIxLjYzNTNWMS42NDcyNUgxOS4wMDQzVjguODY2OUgxNy40NzQ3VjEuNjQ3MjVIMTQuODQzOFpcIiB9KSwgX2pzeChcInBhdGhcIiwgeyBkOiBcIk04LjExMzI4IDguODY2OVYwLjM1NDYxNEgxMy42NDk2VjEuNjQ3MjVIOS42NTUzVjMuOTU4MkgxMy4zNjI4VjUuMjUwODRIOS42NTUzVjcuNTc0MjZIMTMuNjgyOFY4Ljg2NjlIOC4xMTMyOFpcIiB9KSwgX2pzeChcInBhdGhcIiwgeyBkOiBcIk0wLjQxNzk2OSA4Ljg2NjlWMC4zNTQ2MTRIMy42NzY1OEM0LjI5MTcyIDAuMzU0NjE0IDQuODAyOTYgMC40NTE1OTcgNS4yMTAyOSAwLjY0NTU2MUM1LjYyMDM4IDAuODM2NzU1IDUuOTI2NTcgMS4wOTg2MSA2LjEyODg1IDEuNDMxMTJDNi4zMzM5IDEuNzYzNjMgNi40MzY0MiAyLjE0MDQ4IDYuNDM2NDIgMi41NjE2NkM2LjQzNjQyIDIuOTA4MDIgNi4zNjk5MiAzLjIwNDUxIDYuMjM2OTEgMy40NTExMkM2LjEwMzkxIDMuNjk0OTcgNS45MjUxOCAzLjg5MzA5IDUuNzAwNzQgNC4wNDU0OUM1LjQ3NjI5IDQuMTk3ODkgNS4yMjU1MyA0LjMwNzM0IDQuOTQ4NDMgNC4zNzM4NFY0LjQ1Njk3QzUuMjUwNDYgNC40NzM2IDUuNTQwMDMgNC41NjY0MiA1LjgxNzEyIDQuNzM1NDVDNi4wOTY5OCA0LjkwMTcgNi4zMjU1OCA1LjEzNzIzIDYuNTAyOTIgNS40NDIwM0M2LjY4MDI2IDUuNzQ2ODQgNi43Njg5MyA2LjExNTM3IDYuNzY4OTMgNi41NDc2M0M2Ljc2ODkzIDYuOTg4MjEgNi42NjIyNSA3LjM4NDQ1IDYuNDQ4ODkgNy43MzYzNkM2LjIzNTUzIDguMDg1NSA1LjkxNDEgOC4zNjEyMSA1LjQ4NDYxIDguNTYzNDhDNS4wNTUxMSA4Ljc2NTc2IDQuNTE0NzggOC44NjY5IDMuODYzNjIgOC44NjY5SDAuNDE3OTY5Wk0xLjk1OTk5IDcuNTc4NDJIMy42MTgzOUM0LjE3ODEyIDcuNTc4NDIgNC41ODEyOSA3LjQ3MTc0IDQuODI3OSA3LjI1ODM4QzUuMDc3MjggNy4wNDIyNCA1LjIwMTk3IDYuNzY1MTUgNS4yMDE5NyA2LjQyNzFDNS4yMDE5NyA2LjE3NDk0IDUuMTM5NjMgNS45NDc3MyA1LjAxNDk0IDUuNzQ1NDVDNC44OTAyNCA1LjU0MDQgNC43MTI5IDUuMzc5NjkgNC40ODI5MiA1LjI2MzMxQzQuMjUyOTMgNS4xNDQxNiAzLjk3ODYxIDUuMDg0NTkgMy42NTk5NSA1LjA4NDU5SDEuOTU5OTlWNy41Nzg0MlpNMS45NTk5OSAzLjk3NDgzSDMuNDg1MzhDMy43NTEzOSAzLjk3NDgzIDMuOTkxMDggMy45MjYzNCA0LjIwNDQ0IDMuODI5MzZDNC40MTc4IDMuNzI5NiA0LjU4NTQ0IDMuNTg5NjcgNC43MDczNiAzLjQwOTU2QzQuODMyMDUgMy4yMjY2OCA0Ljg5NDQgMy4wMTA1NSA0Ljg5NDQgMi43NjExNkM0Ljg5NDQgMi40MzE0MiA0Ljc3ODAyIDIuMTU5ODcgNC41NDUyNiAxLjk0NjUxQzQuMzE1MjggMS43MzMxNSAzLjk3MzA3IDEuNjI2NDcgMy41MTg2NCAxLjYyNjQ3SDEuOTU5OTlWMy45NzQ4M1pcIiB9KV0gfSkpO1xuZXhwb3J0IGNvbnN0IExvZ29XaXRoV29yZHMgPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCB7IGxvZ29Db2xvciwgd29yZENvbG9yLCBsb2dvQ2xzLCB3b3JkQ2xzLCBjb2xvciwgY2xhc3NOYW1lLCB3aWR0aCwgaGVpZ2h0LCBzaXplLCBuZXR3b3JrTG9nbywgbmV0d29ya0NscywgbmV0d29ya0NvbG9yIH0gPSBwcm9wcywgcmVzdCA9IF9fcmVzdChwcm9wcywgW1wibG9nb0NvbG9yXCIsIFwid29yZENvbG9yXCIsIFwibG9nb0Nsc1wiLCBcIndvcmRDbHNcIiwgXCJjb2xvclwiLCBcImNsYXNzTmFtZVwiLCBcIndpZHRoXCIsIFwiaGVpZ2h0XCIsIFwic2l6ZVwiLCBcIm5ldHdvcmtMb2dvXCIsIFwibmV0d29ya0Nsc1wiLCBcIm5ldHdvcmtDb2xvclwiXSk7XG4gICAgY29uc3QgY2xhc3NlcyA9IGNsYXNzbmFtZXMoJ2ljb25zJyk7XG4gICAgcmV0dXJuIF9qc3hzKFwiaVwiLCB7IGNsYXNzTmFtZTogam9pbkNscyhjbGFzc2VzKCdsb2dvLXdpdGgtd29yZHMnKSwgbmV0d29ya0xvZ28gJiYgY2xhc3NlcygnbG9nby13aXRoLXdvcmRzLXdpdGgtbmV0d29yaycpLCBjbGFzc05hbWUpLCBjaGlsZHJlbjogW19qc3goTG9nbywgT2JqZWN0LmFzc2lnbih7IGNvbG9yOiBsb2dvQ29sb3IgfHwgY29sb3IsIHdpZHRoOiBoZWlnaHQgfHwgc2l6ZSwgaGVpZ2h0OiBoZWlnaHQgfHwgc2l6ZSwgY2xhc3NOYW1lOiBsb2dvQ2xzIH0sIHJlc3QpKSwgX2pzeChMb2dvV29yZCwgT2JqZWN0LmFzc2lnbih7IGNvbG9yOiB3b3JkQ29sb3IgfHwgY29sb3IsIHdpZHRoOiB3aWR0aCAmJiBoZWlnaHRcbiAgICAgICAgICAgICAgICAgICAgPyBuZXR3b3JrTG9nb1xuICAgICAgICAgICAgICAgICAgICAgICAgPyAoKCt3aWR0aCkgLSAoK2hlaWdodCkgLSAoKCt3aWR0aCkgKiAwLjAyNSkgLSAoKCt3aWR0aCkgKiAwLjQ2Mzc0KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogKCgrd2lkdGgpIC0gKCtoZWlnaHQpKVxuICAgICAgICAgICAgICAgICAgICA6IHNpemUsIGhlaWdodDogaGVpZ2h0IHx8IHNpemUsIGNsYXNzTmFtZTogd29yZENscyB9LCByZXN0KSksIG5ldHdvcmtMb2dvICYmIF9qc3goTG9nb05ldHdvcmssIE9iamVjdC5hc3NpZ24oeyBjb2xvcjogbmV0d29ya0NvbG9yIHx8IGNvbG9yLCB3aWR0aDogd2lkdGggJiYgaGVpZ2h0XG4gICAgICAgICAgICAgICAgICAgID8gbmV0d29ya0xvZ29cbiAgICAgICAgICAgICAgICAgICAgICAgID8gKCgrd2lkdGgpIC0gKCtoZWlnaHQpIC0gKCgrd2lkdGgpICogMC4wMjUpIC0gKCgrd2lkdGgpICogMC4zOTI4NykpXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICgoK3dpZHRoKSAtICgraGVpZ2h0KSlcbiAgICAgICAgICAgICAgICAgICAgOiBzaXplLCBoZWlnaHQ6IGhlaWdodCB8fCBzaXplLCBjbGFzc05hbWU6IG5ldHdvcmtDbHMgfSwgcmVzdCkpXSB9KTtcbn07XG5leHBvcnQgY29uc3QgTG9nb1dpdGhCZXRhID0gKHByb3BzKSA9PiB7XG4gICAgY29uc3QgeyBsb2dvQ29sb3IsIHdvcmRDb2xvciwgbG9nb0Nscywgd29yZENscywgYmV0YUNvbG9yLCBiZXRhQ2xzLCBjb2xvciwgY2xhc3NOYW1lLCB3aWR0aCwgaGVpZ2h0LCBzaXplIH0gPSBwcm9wcywgcmVzdCA9IF9fcmVzdChwcm9wcywgW1wibG9nb0NvbG9yXCIsIFwid29yZENvbG9yXCIsIFwibG9nb0Nsc1wiLCBcIndvcmRDbHNcIiwgXCJiZXRhQ29sb3JcIiwgXCJiZXRhQ2xzXCIsIFwiY29sb3JcIiwgXCJjbGFzc05hbWVcIiwgXCJ3aWR0aFwiLCBcImhlaWdodFwiLCBcInNpemVcIl0pO1xuICAgIGNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKCdpY29ucycpO1xuICAgIGNvbnN0IGggPSB1c2VNZW1vKCgpID0+IGhlaWdodCB8fCBzaXplLCBbaGVpZ2h0LCBzaXplXSk7XG4gICAgcmV0dXJuIF9qc3hzKFwiaVwiLCB7IGNsYXNzTmFtZTogam9pbkNscyhjbGFzc2VzKCdsb2dvLXdpdGgtYmV0YScpLCBjbGFzc05hbWUpLCBjaGlsZHJlbjogW19qc3goTG9nbywgT2JqZWN0LmFzc2lnbih7IGNvbG9yOiBsb2dvQ29sb3IgfHwgY29sb3IsIHdpZHRoOiBoLCBoZWlnaHQ6IGgsIGNsYXNzTmFtZTogbG9nb0NscyB9LCByZXN0KSksIF9qc3goTG9nb1dvcmQsIE9iamVjdC5hc3NpZ24oeyBjb2xvcjogd29yZENvbG9yIHx8IGNvbG9yLCB3aWR0aDogd2lkdGggJiYgaGVpZ2h0XG4gICAgICAgICAgICAgICAgICAgID8gKCgrd2lkdGgpIC0gKCtoZWlnaHQpIC0gKCgrd2lkdGgpICogMC4wNCkgLSAoKCt3aWR0aCkgKiAwLjE5NykpXG4gICAgICAgICAgICAgICAgICAgIDogc2l6ZSwgaGVpZ2h0OiBoLCBjbGFzc05hbWU6IHdvcmRDbHMgfSwgcmVzdCkpLCBfanN4KExvZ29CZXRhLCBPYmplY3QuYXNzaWduKHsgY29sb3I6IGJldGFDb2xvciB8fCBjb2xvciwgY2xhc3NOYW1lOiBiZXRhQ2xzLCB3aWR0aDogd2lkdGggJiYgaGVpZ2h0XG4gICAgICAgICAgICAgICAgICAgID8gKCgrd2lkdGgpIC0gKCtoZWlnaHQpIC0gKCgrd2lkdGgpICogMC4wNCkgLSAoKCt3aWR0aCkgKiAwLjYxOCkgLSAxKVxuICAgICAgICAgICAgICAgICAgICA6IHNpemUsIGhlaWdodDogaCA/ICtoIC8gMi41IDogdm9pZCAwIH0sIHJlc3QsIHsgc3R5bGU6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgcmVzdC5zdHlsZSksIHsgJy0tbG9nby1oZWlnaHQnOiBgJHtoICE9PSBudWxsICYmIGggIT09IHZvaWQgMCA/IGggOiAyM31weGAgfSkgfSkpXSB9KTtcbn07XG5leHBvcnQgZGVmYXVsdCB7XG4gICAgTG9nbyxcbiAgICBMb2dvV29yZCxcbiAgICBMb2dvTmV0d29yayxcbiAgICBMb2dvV2l0aFdvcmRzLFxuICAgIExvZ29CZyxcbiAgICBMb2dvQmV0YSxcbiAgICBMb2dvV2l0aEJldGEsXG59OyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
233
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvSWNvbnMvTG9nby5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvSWNvbnMvTG9nby50c3giXSwibmFtZXMiOlsiX19yZXN0IiwicyIsImUiLCJ0IiwicCIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJpIiwibGVuZ3RoIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwidXNlTWVtbyIsImRlZmF1bHQiLCJjbGFzc25hbWVzIiwiam9pbkNscyIsIkljb25XcmFwcGVyIiwiTG9nbyIsInByb3BzIiwiYXNzaWduIiwidmlld0JveCIsImNoaWxkcmVuIiwiZCIsIkxvZ29Xb3JkIiwiZmlsbFJ1bGUiLCJjbGlwUnVsZSIsIkxvZ29OZXR3b3JrIiwiTG9nb0JnIiwiZmlsbCIsImlkIiwiY3giLCJjeSIsInIiLCJncmFkaWVudFVuaXRzIiwiZ3JhZGllbnRUcmFuc2Zvcm0iLCJzdG9wQ29sb3IiLCJvZmZzZXQiLCJMb2dvQmV0YSIsIkxvZ29XaXRoV29yZHMiLCJsb2dvQ29sb3IiLCJ3b3JkQ29sb3IiLCJsb2dvQ2xzIiwid29yZENscyIsImNvbG9yIiwiY2xhc3NOYW1lIiwid2lkdGgiLCJoZWlnaHQiLCJzaXplIiwibmV0d29ya0xvZ28iLCJuZXR3b3JrQ2xzIiwibmV0d29ya0NvbG9yIiwicmVzdCIsImNsYXNzZXMiLCJCRVRBX0xPQ0tVUCIsIndvcmQiLCJuZXR3b3JrIiwiYmV0YSIsIkxvZ29XaXRoQmV0YSIsImJldGFDb2xvciIsImJldGFDbHMiLCJoIiwic3R5bGUiLCJjb25jYXQiXSwibWFwcGluZ3MiOiJBQUFBLElBQUlBLE1BQU0sR0FBSSxJQUFJLElBQUksSUFBSSxDQUFDQSxNQUFNLElBQUssVUFBVUMsQ0FBQyxFQUFFQyxDQUFDLEVBQUU7RUFDbEQsSUFBSUMsQ0FBQyxHQUFH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QUVjLENBQUMsR0FBRyxDQUFDQSxDQUFDLEdBQUcsR0FBRyxHQUFHLEtBQUs7SUFBQyxDQUFBLEVBQ3pCVCxJQUFJLEVBQUE7TUFDUlUsS0FBSyxFQUFFOUQsTUFBQSxDQUFBb0IsTUFBQSxDQUFBcEIsTUFBQSxDQUFBb0IsTUFBQSxDQUFBLENBQUEsQ0FBQSxFQUNGZ0MsSUFBSSxDQUFDVSxLQUFLLENBQUEsRUFBQTtRQUNiLGVBQWUsS0FBQUMsTUFBQSxDQUFLRixDQUFDLEtBQUEsSUFBQSxJQUFEQSxDQUFDLEtBQUEsS0FBQSxDQUFBLEdBQURBLENBQUMsR0FBSSxFQUFFO01BQUksQ0FBQTtJQUNmLENBQUEsQ0FBQSxDQUNsQjtFQUFBLENBQUEsQ0FDQTtBQUNOLENBQUM7QUFFRCxlQUFlO0VBQ2IzQyxJQUFJLEVBQUpBLElBQUk7RUFDSk0sUUFBUSxFQUFSQSxRQUFRO0VBQ1JHLFdBQVcsRUFBWEEsV0FBVztFQUNYWSxhQUFhLEVBQWJBLGFBQWE7RUFDYlgsTUFBTSxFQUFOQSxNQUFNO0VBQ05VLFFBQVEsRUFBUkEsUUFBUTtFQUNSb0IsWUFBWSxFQUFaQTtBRHRKRixDQ3VKQyIsImZpbGUiOiJjb21wb25lbnRzL0ljb25zL0xvZ28uanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGRlZmF1bHQgYXMgY2xhc3NuYW1lcywgam9pbkNscyB9IGZyb20gJy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuaW1wb3J0IEljb25XcmFwcGVyIGZyb20gJy4vV3JhcHBlcic7XG5leHBvcnQgY29uc3QgTG9nbyA9IChwcm9wcykgPT4gX2pzeHMoSWNvbldyYXBwZXIsIE9iamVjdC5hc3NpZ24oeyB2aWV3Qm94OiBcIjAgMCAyNDggMjQ4XCIgfSwgcHJvcHMsIHsgY2hpbGRyZW46IFtfanN4KFwicGF0aFwiLCB7IGQ6IFwiTTE1Ny4yNzYgMTE0LjMyNUMxNzQuNTQ4IDEwMy4zMiAxODYuMDA0IDgzLjk5NzkgMTg2LjAwNCA2MkMxODYuMDA0IDI3Ljc1ODMgMTU4LjI0NiAwIDEyNC4wMDQgMEM5NS42NDQ4IDAgNzEuNzMyNyAxOS4wNDAxIDY0LjM1MzggNDUuMDM0M0M4OC41MzMzIDQ1Ljc0MDYgMTA5Ljk4OCA1Ny4zMTE5IDEyNC4wMDQgNzUuMDM1NkMxMjUuODc1IDc3LjQwMTMgMTI3LjYxMyA3OS44NzY3IDEyOS4yMDggODIuNDUwNEMxMzQuMDg3IDkwLjMyNDggMTM3LjYyIDk5LjEyMDMgMTM5LjQ4NyAxMDguNTE2QzE0NS43MTEgMTA5Ljc1MiAxNTEuNjcyIDExMS43MiAxNTcuMjc2IDExNC4zMjVaXCIgfSksIF9qc3goXCJwYXRoXCIsIHsgZDogXCJNMTA4LjUyIDEwOC41MTdDMTA5Ljc1NyAxMDIuMjk1IDExMS43MjQgOTYuMzM2IDExNC4zMjkgOTAuNzMzM0MxMDMuMzI0IDczLjQ1ODYgODQuMDAwMSA2MiA2MiA2MkMyNy43NTgzIDYyIDAgODkuNzU4MyAwIDEyNEMwIDE1Mi4zNjIgMTkuMDQzOSAxNzYuMjc2IDQ1LjA0MiAxODMuNjUyQzQ1Ljc0NzcgMTU5LjQ3MiA1Ny4zMTkyIDEzOC4wMTcgNzUuMDQzNSAxMjRDNzUuNDk0NiAxMjMuNjQzIDc1Ljk0OTYgMTIzLjI5MSA3Ni40MDg2IDEyMi45NDRDODUuNzIwNSAxMTUuOTA0IDk2LjY0MDYgMTEwLjg3OSAxMDguNTIgMTA4LjUxN1pcIiB9KSwgX2pzeChcInBhdGhcIiwgeyBkOiBcIk05MC43MzU0IDEzMy42NzJDNzMuNDYxNyAxNDQuNjc3IDYyLjAwMzkgMTY0LjAwMSA2Mi4wMDM5IDE4NkM2Mi4wMDM5IDIyMC4yNDIgODkuNzYyMyAyNDggMTI0LjAwNCAyNDhDMTUyLjM2MyAyNDggMTc2LjI3NSAyMjguOTYgMTgzLjY1NCAyMDIuOTY2QzE1OS40NzQgMjAyLjI1OSAxMzguMDIgMTkwLjY4OCAxMjQuMDA0IDE3Mi45NjRDMTE2LjgzNyAxNjMuOTAyIDExMS42MTUgMTUzLjIzMSAxMDguOTY4IDE0MS41ODJDMTA4LjgwOSAxNDAuODg2IDEwOC42NiAxNDAuMTg2IDEwOC41MiAxMzkuNDgzQzEwMi4yOTggMTM4LjI0NiA5Ni4zMzgzIDEzNi4yNzggOTAuNzM1NCAxMzMuNjcyWlwiIH0pLCBfanN4KFwicGF0aFwiLCB7IGQ6IFwiTTEzMy42NzYgMTU3LjI3NEMxNDQuNjgxIDE3NC41NDQgMTY0LjAwMyAxODYgMTg2IDE4NkMyMjAuMjQyIDE4NiAyNDggMTU4LjI0MiAyNDggMTI0QzI0OCA5NS42NDM3IDIyOC45NjQgNzEuNzMzNiAyMDIuOTczIDY0LjM1MjFDMjAyLjI2NiA4OC41MzA3IDE5MC42OTUgMTA5Ljk4NCAxNzIuOTcyIDEyNEMxNjMuOTA4IDEzMS4xNjggMTUzLjIzNSAxMzYuMzkxIDE0MS41ODQgMTM5LjAzOEMxNDAuODg4IDEzOS4xOTYgMTQwLjE4OSAxMzkuMzQ1IDEzOS40ODcgMTM5LjQ4NEMxMzguMjUgMTQ1LjcwOCAxMzYuMjgyIDE1MS42NjkgMTMzLjY3NiAxNTcuMjc0WlwiIH0pXSB9KSk7XG5leHBvcnQgY29uc3QgTG9nb1dvcmQgPSAocHJvcHMpID0+IF9qc3hzKEljb25XcmFwcGVyLCBPYmplY3QuYXNzaWduKHsgdmlld0JveDogXCIwIDAgNDY5IDg2XCIgfSwgcHJvcHMsIHsgY2hpbGRyZW46IFtfanN4KFwicGF0aFwiLCB7IGZpbGxSdWxlOiBcImV2ZW5vZGRcIiwgY2xpcFJ1bGU6IFwiZXZlbm9kZFwiLCBkOiBcIk0yMzQuNTEgNDNDMjM0LjUxIDY2LjU4NDMgMjE1LjM5MiA4NS43MDMzIDE5MS44MDcgODUuNzAzM0MxNjguMjIzIDg1LjcwMzMgMTQ5LjEwNCA2Ni41ODQzIDE0OS4xMDQgNDNDMTQ5LjEwNCAxOS40MTU2IDE2OC4yMjMgMC4yOTY2MzEgMTkxLjgwNyAwLjI5NjYzMUMyMTUuMzkyIDAuMjk2NjMxIDIzNC41MSAxOS40MTU2IDIzNC41MSA0M1pNMjE1LjgyOCA0M0MyMTUuODI4IDU2LjI2NjIgMjA1LjA3MyA2Ny4wMjA2IDE5MS44MDcgNjcuMDIwNkMxNzguNTQxIDY3LjAyMDYgMTY3Ljc4NyA1Ni4yNjYyIDE2Ny43ODcgNDNDMTY3Ljc4NyAyOS43MzM3IDE3OC41NDEgMTguOTc5MyAxOTEuODA3IDE4Ljk3OTNDMjA1LjA3MyAxOC45NzkzIDIxNS44MjggMjkuNzMzNyAyMTUuODI4IDQzWlwiIH0pLCBfanN4KFwicGF0aFwiLCB7IGQ6IFwiTTAgMzIuNTk2OVYxOS41NTcyQzEwLjgyNDEgMTcuOTk0MyAxOS43OTQyIDEwLjcgMjMuNzM0NSAwLjg1MDExNEgzOC4yMDM1Vjg0LjgxMzRIMTcuMzMyN1YzMi41OTY5SDBaXCIgfSksIF9qc3goXCJwYXRoXCIsIHsgZDogXCJNMzQyLjI3OCAxOC4zNjI1TDM4My41NjIgMTguMzYyVjAuODQ5NjY2TDMyMS40MDcgMC44NTAxMTRWODQuODEzNEgzODMuNTYyVjY3LjMwMTFIMzQyLjI3OFY1MC4zODg1TDM3NC4wNDQgNTAuMzg4NFYzNC4wNzU2TDM0Mi4yNzggMzQuMDc1NlYxOC4zNjI1WlwiIH0pLCBfanN4KFwicGF0aFwiLCB7IGQ6IFwiTTQ2LjY4MSA4NC44MTM0SDY3LjU1MTlWMzYuNzE0NEw4NS45MDM4IDg0LjgxMzRIMTAyLjkzNkwxMjEuMjg4IDM2LjcxNDRWODQuODEzNEgxNDIuMTU5VjAuODUwMTE0SDExNy40NUw5NC40MjAxIDU3LjgyNTJMNzEuMzkwMiAwLjg1MDExNEg0Ni42ODFWODQuODEzNFpcIiB9KSwgX2pzeChcInBhdGhcIiwgeyBkOiBcIk0zMTQuMzQ5IDAuODUwMTE0Vjg0LjgxMzRIMjkzLjM1OEwyNjIuMDUyIDMzLjk1NTZWODQuODEzNEgyNDEuMTgxVjAuODUwMTE0SDI2Mi4xNzJMMjkzLjQ3OCA1Mi4wNjc3VjAuODUwMTE0SDMxNC4zNDlaXCIgfSksIF9qc3goXCJwYXRoXCIsIHsgZDogXCJNNDQ4LjM2MSAwLjg1MDExNEg0NzIuMjMxTDQ0MC40NDUgNTcuMjI1NVY4NC44MTM0SDQxOS41NzRWNTcuMjI1NUwzODcuNjY4IDAuODUwMTE0SDQxMS41MzdMNDMwLjAwOSAzNS41MTVMNDQ4LjM2MSAwLjg1MDExNFpcIiB9KV0gfSkpO1xuZXhwb3J0IGNvbnN0IExvZ29OZXR3b3JrID0gKHByb3BzKSA9PiBfanN4cyhJY29uV3JhcHBlciwgT2JqZWN0LmFzc2lnbih7IHZpZXdCb3g6IFwiMCAwIDU1NyA4NVwiIH0sIHByb3BzLCB7IGNoaWxkcmVuOiBbX2pzeChcInBhdGhcIiwgeyBkOiBcIk02NC42MzA5IDEuMzUwMlY4NC42NDk3SDU0Ljg4MDZMOS44NjA2IDE2LjU4MjFWODQuNjQ5N0gwLjIzMDU5MVYxLjM1MDJIOS45ODA5TDU1LjAwMSA2OS4yOTg4VjEuMzUwMkg2NC42MzA5WlwiIH0pLCBfanN4KFwicGF0aFwiLCB7IGQ6IFwiTTEzNi43NDUgOS42ODAxNUg5MS4xMjI3VjM4LjEyMUgxMjUuNDI5VjQ2LjQ1MDlIOTEuMTIyN1Y3Ni4zMTk4SDEzNi43NDVWODQuNjQ5N0g4MS40OTI4VjEuMzUwMkgxMzYuNzQ1VjkuNjgwMTVaXCIgfSksIF9qc3goXCJwYXRoXCIsIHsgZDogXCJNMTQ2LjE3OSAxLjM1MDJIMjA5LjM3NlY5LjY4MDE1SDE4Mi42NTNWODQuNjQ5N0gxNzMuMDIzVjkuNjgwMTVIMTQ2LjE3OVYxLjM1MDJaXCIgfSksIF9qc3goXCJwYXRoXCIsIHsgZDogXCJNMjQ4LjU0IDg0LjY0OTdIMjM3Ljk0N0wyMTQuMjMzIDEuMzUwMkgyMjQuNDY1TDI0My4yNDMgNzMuMTA2OEwyNjMuOTQ4IDEuMzUwMkgyNzQuNjYxTDI5NS4yNDUgNzIuOTg3OEwzMTQuMTQ0IDEuMzUwMkgzMjQuMjU1TDMwMC41NDIgODQuNjQ5N0gyODkuOTQ5TDI2OS4yNDQgMTUuNjMwMUwyNDguNTQgODQuNjQ5N1pcIiB9KSwgX2pzeChcInBhdGhcIiwgeyBkOiBcIk0zNzEuMjg2IDg1LjQ4MjdDMzY1LjM0NyA4NS40ODI3IDM1OS44MSA4NC40NTE0IDM1NC42NzQgODIuMzg4N0MzNDkuNjE5IDgwLjMyNjEgMzQ1LjE2NSA3Ny40MzA0IDM0MS4zMTMgNzMuNzAxOEMzMzcuNTQxIDY5Ljg5MzggMzM0LjU3MiA2NS40MTE1IDMzMi40MDUgNjAuMjU0OUMzMzAuMzE5IDU1LjAxODkgMzI5LjI3NSA0OS4yNjczIDMyOS4yNzUgNDNDMzI5LjI3NSAzNi43MzI3IDMzMC4zMTkgMzEuMDIwNyAzMzIuNDA1IDI1Ljg2NDFDMzM0LjU3MiAyMC42MjgxIDMzNy41NDEgMTYuMTQ1OCAzNDEuMzEzIDEyLjQxNzFDMzQ1LjE2NSA4LjYwOTE2IDM0OS42MTkgNS42NzM4NSAzNTQuNjc0IDMuNjExMTlDMzU5LjgxIDEuNTQ4NTQgMzY1LjM0NyAwLjUxNzIxMiAzNzEuMjg2IDAuNTE3MjEyQzM3Ny4xNDQgMC41MTcyMTIgMzgyLjYwMSAxLjU0ODU0IDM4Ny42NTcgMy42MTExOUMzOTIuNzkzIDUuNjczODUgMzk3LjI0NyA4LjYwOTE2IDQwMS4wMTggMTIuNDE3MUM0MDQuNzkgMTYuMTQ1OCA0MDcuNzE5IDIwLjYyODEgNDA5LjgwNiAyNS44NjQxQzQxMS45NzMgMzEuMDIwNyA0MTMuMDU2IDM2LjczMjcgNDEzLjA1NiA0M0M0MTMuMDU2IDQ5LjI2NzMgNDExLjk3MyA1NS4wMTg5IDQwOS44MDYgNjAuMjU0OUM0MDcuNzE5IDY1LjQxMTUgNDA0Ljc5IDY5Ljg5MzggNDAxLjAxOCA3My43MDE4QzM5Ny4yNDcgNzcuNDMwNCAzOTIuNzkzIDgwLjMyNjEgMzg3LjY1NyA4Mi4zODg3QzM4Mi42MDEgODQuNDUxNCAzNzcuMTQ0IDg1LjQ4MjcgMzcxLjI4NiA4NS40ODI3Wk0zNzEuMjg2IDc3LjE1MjhDMzc3LjMwNSA3Ny4xNTI4IDM4Mi43MjIgNzUuNzY0NCAzODcuNTM3IDcyLjk4NzhDMzkyLjM1MiA3MC4yMTExIDM5Ni4xNjMgNjYuMjg0MiAzOTguOTcyIDYxLjIwNjlDNDAxLjc4MSA1Ni4wNTAyIDQwMy4xODUgNDkuOTgxMyA0MDMuMTg1IDQzQzQwMy4xODUgMzUuOTM5MyA0MDEuNzgxIDI5Ljg3MDQgMzk4Ljk3MiAyNC43OTMxQzM5Ni4xNjMgMTkuNjM2NCAzOTIuMzUyIDE1LjcwOTUgMzg3LjUzNyAxMy4wMTIxQzM4Mi43MjIgMTAuMjM1NSAzNzcuMzA1IDguODQ3MTYgMzcxLjI4NiA4Ljg0NzE2QzM2NS4xODcgOC44NDcxNiAzNTkuNjkgMTAuMjM1NSAzNTQuNzk1IDEzLjAxMjFDMzQ5Ljk4IDE1LjcwOTUgMzQ2LjE2OCAxOS42MzY0IDM0My4zNTkgMjQuNzkzMUMzNDAuNTUgMjkuODcwNCAzMzkuMTQ2IDM1LjkzOTMgMzM5LjE0NiA0M0MzMzkuMTQ2IDQ5Ljk4MTMgMzQwLjU1IDU2LjA1MDIgMzQzLjM1OSA2MS4yMDY5QzM0Ni4xNjggNjYuMjg0MiAzNDkuOTggNzAuMjExMSAzNTQuNzk1IDcyLjk4NzhDMzU5LjY5IDc1Ljc2NDQgMzY1LjE4NyA3Ny4xNTI4IDM3MS4yODYgNzcuMTUyOFpcIiB9KSwgX2pzeChcInBhdGhcIiwgeyBkOiBcIk00NzMuMzk0IDI1Ljk4MzFDNDczLjM5NCAyMC45ODUxIDQ3MS45MDkgMTcuMDE4NCA0NjguOTQgMTQuMDgzMUM0NjUuOTcxIDExLjE0NzggNDYxLjExNSA5LjY4MDE1IDQ1NC4zNzUgOS42ODAxNUg0MzQuMzkyVjQyLjI4Nkg0NTQuNDk1QzQ1OC45MDkgNDIuMjg2IDQ2Mi40OCA0MS42MTE2IDQ2NS4yMDggNDAuMjYzQzQ2OC4wMTcgMzguOTE0MyA0NzAuMDYzIDM3LjAxMDMgNDcxLjM0NyAzNC41NTFDNDcyLjcxMiAzMi4wOTE3IDQ3My4zOTQgMjkuMjM1NyA0NzMuMzk0IDI1Ljk4MzFaTTQ1NC4zNzUgMS4zNTAyQzQ2MC45NTUgMS4zNTAyIDQ2Ni4zMzIgMi40NjA4NiA0NzAuNTA1IDQuNjgyMThDNDc0Ljc1OCA2LjkwMzUgNDc3LjkyOCA5Ljg3ODQ5IDQ4MC4wMTQgMTMuNjA3MUM0ODIuMTAxIDE3LjI1NjUgNDgzLjE0NCAyMS4zODE4IDQ4My4xNDQgMjUuOTgzMUM0ODMuMTQ0IDI5LjIzNTcgNDgyLjU4MiAzMi4zMjk3IDQ4MS40NTkgMzUuMjY1QzQ4MC40MTUgMzguMjAwMyA0NzguNzMgNDAuODE4MyA0NzYuNDAzIDQzLjExOUM0NzQuMDc2IDQ1LjQxOTYgNDcxLjEwNiA0Ny4yNDQzIDQ2Ny40OTUgNDguNTkyOUM0NjMuODg0IDQ5Ljk0MTYgNDU5LjU1MSA1MC42MTU5IDQ1NC40OTUgNTAuNjE1OUg0MzQuMzkyVjg0LjY0OTdINDI0Ljc2MlYxLjM1MDJINDU0LjM3NVpNNDYxLjM1NiA0Ny4wNDU5TDQ4NC43MDkgODQuNjQ5N0g0NzMuNzU1TDQ1MS4wMDQgNDcuMDQ1OUg0NjEuMzU2WlwiIH0pLCBfanN4KFwicGF0aFwiLCB7IGQ6IFwiTTQ5Ni4zODUgMS4zNTAySDUwNi4wMTVWMzguMTIxSDUxMC4xMDhMNTQ0Ljg5NiAxLjM1MDJINTU3LjI5NUw1MTguNTM0IDQyLjI4Nkw1NTcuNjU2IDg0LjY0OTdINTQ0Ljg5Nkw1MDkuOTg3IDQ2LjQ1MDlINTA2LjAxNVY4NC42NDk3SDQ5Ni4zODVWMS4zNTAyWlwiIH0pXSB9KSk7XG5leHBvcnQgY29uc3QgTG9nb0JnID0gKHByb3BzKSA9PiBfanN4cyhJY29uV3JhcHBlciwgT2JqZWN0LmFzc2lnbih7IHZpZXdCb3g6IFwiMCAwIDU2IDU3XCIgfSwgcHJvcHMsIHsgY2hpbGRyZW46IFtfanN4KFwicGF0aFwiLCB7IGQ6IFwiTS03LjYyOTM5ZS0wNiAyOC43NUMtNy42MjkzOWUtMDYgMTMuMjg2IDEyLjUzNiAwLjc1IDI4IDAuNzVDNDMuNDY0IDAuNzUgNTYgMTMuMjg2IDU2IDI4Ljc1QzU2IDQ0LjIxNCA0My40NjQgNTYuNzUgMjggNTYuNzVDMTIuNTM2IDU2Ljc1IC03LjYyOTM5ZS0wNiA0NC4yMTQgLTcuNjI5MzllLTA2IDI4Ljc1WlwiLCBmaWxsOiBcInVybCgjcGFpbnQwX3JhZGlhbF8xNjQ4XzIyMDA1KVwiIH0pLCBfanN4KFwicGF0aFwiLCB7IGQ6IFwiTTMxLjc1NjkgMjcuNDA3N0MzMy43MDcgMjYuMTY1MiAzNS4wMDA0IDIzLjk4MzYgMzUuMDAwNCAyMS41QzM1LjAwMDQgMTcuNjM0IDMxLjg2NjQgMTQuNSAyOC4wMDA0IDE0LjVDMjQuNzk4NiAxNC41IDIyLjA5ODggMTYuNjQ5NyAyMS4yNjU3IDE5LjU4NDVDMjMuOTk1NyAxOS42NjQzIDI2LjQxNzkgMjAuOTcwNyAyOC4wMDA0IDIyLjk3MThDMjguMjExNyAyMy4yMzg5IDI4LjQwNzkgMjMuNTE4MyAyOC41ODggMjMuODA4OUMyOS4xMzg4IDI0LjY5OCAyOS41Mzc3IDI1LjY5MSAyOS43NDg1IDI2Ljc1MThDMzAuNDUxMiAyNi44OTE0IDMxLjEyNDIgMjcuMTEzNSAzMS43NTY5IDI3LjQwNzdaXCIgfSksIF9qc3goXCJwYXRoXCIsIHsgZDogXCJNMjYuMjUyMyAyNi43NTJDMjYuMzkxOSAyNi4wNDk0IDI2LjYxNCAyNS4zNzY2IDI2LjkwODEgMjQuNzQ0MUMyNS42NjU2IDIyLjc5MzcgMjMuNDgzOSAyMS41IDIxIDIxLjVDMTcuMTM0IDIxLjUgMTQgMjQuNjM0IDE0IDI4LjVDMTQgMzEuNzAyMSAxNi4xNTAxIDM0LjQwMjEgMTkuMDg1NCAzNS4yMzQ5QzE5LjE2NTEgMzIuNTA0OSAyMC40NzE1IDMwLjA4MjUgMjIuNDcyNiAyOC41QzIyLjUyMzYgMjguNDU5NyAyMi41NzQ5IDI4LjQyIDIyLjYyNjggMjguMzgwOEMyMy42NzgxIDI3LjU4NTkgMjQuOTExIDI3LjAxODYgMjYuMjUyMyAyNi43NTJaXCIgfSksIF9qc3goXCJwYXRoXCIsIHsgZDogXCJNMjQuMjQ0MyAyOS41OTJDMjIuMjk0MSAzMC44MzQ1IDIxLjAwMDQgMzMuMDE2MiAyMS4wMDA0IDM1LjVDMjEuMDAwNCAzOS4zNjYgMjQuMTM0NCA0Mi41IDI4LjAwMDQgNDIuNUMzMS4yMDIzIDQyLjUgMzMuOTAyIDQwLjM1MDMgMzQuNzM1MSAzNy40MTU1QzMyLjAwNTIgMzcuMzM1NyAyOS41ODI5IDM2LjAyOTMgMjguMDAwNCAzNC4wMjgyQzI3LjE5MTMgMzMuMDA1MSAyNi42MDE3IDMxLjgwMDMgMjYuMzAyOCAzMC40ODUxQzI2LjI4NDkgMzAuNDA2NSAyNi4yNjgxIDMwLjMyNzQgMjYuMjUyMyAzMC4yNDhDMjUuNTQ5NyAzMC4xMDg0IDI0Ljg3NjkgMjkuODg2MiAyNC4yNDQzIDI5LjU5MlpcIiB9KSwgX2pzeChcInBhdGhcIiwgeyBkOiBcIk0yOS4wOTI0IDMyLjI1NjdDMzAuMzM1IDM0LjIwNjYgMzIuNTE2NCAzNS41IDM1IDM1LjVDMzguODY2IDM1LjUgNDIgMzIuMzY2IDQyIDI4LjVDNDIgMjUuMjk4NSAzOS44NTA3IDIyLjU5ODkgMzYuOTE2MyAyMS43NjU2QzM2LjgzNjUgMjQuNDk1NCAzNS41MzAxIDI2LjkxNzYgMzMuNTI5MSAyOC41QzMyLjUwNTggMjkuMzA5MyAzMS4zMDA3IDI5Ljg5ODkgMjkuOTg1MiAzMC4xOTc4QzI5LjkwNjcgMzAuMjE1NiAyOS44Mjc4IDMwLjIzMjQgMjkuNzQ4NSAzMC4yNDgyQzI5LjYwODkgMzAuOTUwOSAyOS4zODY3IDMxLjYyNCAyOS4wOTI0IDMyLjI1NjdaXCIgfSksIF9qc3goXCJkZWZzXCIsIHsgY2hpbGRyZW46IF9qc3hzKFwicmFkaWFsR3JhZGllbnRcIiwgeyBpZDogXCJwYWludDBfcmFkaWFsXzE2NDhfMjIwMDVcIiwgY3g6IFwiMFwiLCBjeTogXCIwXCIsIHI6IFwiMVwiLCBncmFkaWVudFVuaXRzOiBcInVzZXJTcGFjZU9uVXNlXCIsIGdyYWRpZW50VHJhbnNmb3JtOiBcInRyYW5zbGF0ZSgtMzQuOTA4NSA5Mi42Njc4KSByb3RhdGUoLTQ1LjY1OTQpIHNjYWxlKDEwOC44NTMgMTAzLjY5OClcIiwgY2hpbGRyZW46IFtfanN4KFwic3RvcFwiLCB7IHN0b3BDb2xvcjogXCIjMDczMzg3XCIgfSksIF9qc3goXCJzdG9wXCIsIHsgb2Zmc2V0OiBcIjAuMjE2ODUyXCIsIHN0b3BDb2xvcjogXCIjOTBBOENGXCIgfSksIF9qc3goXCJzdG9wXCIsIHsgb2Zmc2V0OiBcIjAuNTY3MTAzXCIsIHN0b3BDb2xvcjogXCIjQ0JENkU4XCIgfSksIF9qc3goXCJzdG9wXCIsIHsgb2Zmc2V0OiBcIjFcIiwgc3RvcENvbG9yOiBcIiNGOUY5RjlcIiB9KV0gfSkgfSldIH0pKTtcbmV4cG9ydCBjb25zdCBMb2dvQmV0YSA9IChwcm9wcykgPT4gX2pzeHMoSWNvbldyYXBwZXIsIE9iamVjdC5hc3NpZ24oeyB2aWV3Qm94OiBcIjAgMCAzMCA5XCIgfSwgcHJvcHMsIHsgY2hpbGRyZW46IFtfanN4KFwicGF0aFwiLCB7IGQ6IFwiTTIzLjAwNTMgOC44NjY5SDIxLjM1OTRMMjQuMzU2MSAwLjM1NDYxNEgyNi4yNTk4TDI5LjI2MDcgOC44NjY5SDI3LjYxNDdMMjUuMzQxMiAyLjEwMDNIMjUuMjc0N0wyMy4wMDUzIDguODY2OVpNMjMuMDU5MyA1LjUyOTMySDI3LjU0ODJWNi43Njc5MkgyMy4wNTkzVjUuNTI5MzJaXCIgfSksIF9qc3goXCJwYXRoXCIsIHsgZDogXCJNMTQuODQzOCAxLjY0NzI1VjAuMzU0NjE0SDIxLjYzNTNWMS42NDcyNUgxOS4wMDQzVjguODY2OUgxNy40NzQ3VjEuNjQ3MjVIMTQuODQzOFpcIiB9KSwgX2pzeChcInBhdGhcIiwgeyBkOiBcIk04LjExMzI4IDguODY2OVYwLjM1NDYxNEgxMy42NDk2VjEuNjQ3MjVIOS42NTUzVjMuOTU4MkgxMy4zNjI4VjUuMjUwODRIOS42NTUzVjcuNTc0MjZIMTMuNjgyOFY4Ljg2NjlIOC4xMTMyOFpcIiB9KSwgX2pzeChcInBhdGhcIiwgeyBkOiBcIk0wLjQxNzk2OSA4Ljg2NjlWMC4zNTQ2MTRIMy42NzY1OEM0LjI5MTcyIDAuMzU0NjE0IDQuODAyOTYgMC40NTE1OTcgNS4yMTAyOSAwLjY0NTU2MUM1LjYyMDM4IDAuODM2NzU1IDUuOTI2NTcgMS4wOTg2MSA2LjEyODg1IDEuNDMxMTJDNi4zMzM5IDEuNzYzNjMgNi40MzY0MiAyLjE0MDQ4IDYuNDM2NDIgMi41NjE2NkM2LjQzNjQyIDIuOTA4MDIgNi4zNjk5MiAzLjIwNDUxIDYuMjM2OTEgMy40NTExMkM2LjEwMzkxIDMuNjk0OTcgNS45MjUxOCAzLjg5MzA5IDUuNzAwNzQgNC4wNDU0OUM1LjQ3NjI5IDQuMTk3ODkgNS4yMjU1MyA0LjMwNzM0IDQuOTQ4NDMgNC4zNzM4NFY0LjQ1Njk3QzUuMjUwNDYgNC40NzM2IDUuNTQwMDMgNC41NjY0MiA1LjgxNzEyIDQuNzM1NDVDNi4wOTY5OCA0LjkwMTcgNi4zMjU1OCA1LjEzNzIzIDYuNTAyOTIgNS40NDIwM0M2LjY4MDI2IDUuNzQ2ODQgNi43Njg5MyA2LjExNTM3IDYuNzY4OTMgNi41NDc2M0M2Ljc2ODkzIDYuOTg4MjEgNi42NjIyNSA3LjM4NDQ1IDYuNDQ4ODkgNy43MzYzNkM2LjIzNTUzIDguMDg1NSA1LjkxNDEgOC4zNjEyMSA1LjQ4NDYxIDguNTYzNDhDNS4wNTUxMSA4Ljc2NTc2IDQuNTE0NzggOC44NjY5IDMuODYzNjIgOC44NjY5SDAuNDE3OTY5Wk0xLjk1OTk5IDcuNTc4NDJIMy42MTgzOUM0LjE3ODEyIDcuNTc4NDIgNC41ODEyOSA3LjQ3MTc0IDQuODI3OSA3LjI1ODM4QzUuMDc3MjggNy4wNDIyNCA1LjIwMTk3IDYuNzY1MTUgNS4yMDE5NyA2LjQyNzFDNS4yMDE5NyA2LjE3NDk0IDUuMTM5NjMgNS45NDc3MyA1LjAxNDk0IDUuNzQ1NDVDNC44OTAyNCA1LjU0MDQgNC43MTI5IDUuMzc5NjkgNC40ODI5MiA1LjI2MzMxQzQuMjUyOTMgNS4xNDQxNiAzLjk3ODYxIDUuMDg0NTkgMy42NTk5NSA1LjA4NDU5SDEuOTU5OTlWNy41Nzg0MlpNMS45NTk5OSAzLjk3NDgzSDMuNDg1MzhDMy43NTEzOSAzLjk3NDgzIDMuOTkxMDggMy45MjYzNCA0LjIwNDQ0IDMuODI5MzZDNC40MTc4IDMuNzI5NiA0LjU4NTQ0IDMuNTg5NjcgNC43MDczNiAzLjQwOTU2QzQuODMyMDUgMy4yMjY2OCA0Ljg5NDQgMy4wMTA1NSA0Ljg5NDQgMi43NjExNkM0Ljg5NDQgMi40MzE0MiA0Ljc3ODAyIDIuMTU5ODcgNC41NDUyNiAxLjk0NjUxQzQuMzE1MjggMS43MzMxNSAzLjk3MzA3IDEuNjI2NDcgMy41MTg2NCAxLjYyNjQ3SDEuOTU5OTlWMy45NzQ4M1pcIiB9KV0gfSkpO1xuZXhwb3J0IGNvbnN0IExvZ29XaXRoV29yZHMgPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCB7IGxvZ29Db2xvciwgd29yZENvbG9yLCBsb2dvQ2xzLCB3b3JkQ2xzLCBjb2xvciwgY2xhc3NOYW1lLCB3aWR0aCwgaGVpZ2h0LCBzaXplLCBuZXR3b3JrTG9nbywgbmV0d29ya0NscywgbmV0d29ya0NvbG9yIH0gPSBwcm9wcywgcmVzdCA9IF9fcmVzdChwcm9wcywgW1wibG9nb0NvbG9yXCIsIFwid29yZENvbG9yXCIsIFwibG9nb0Nsc1wiLCBcIndvcmRDbHNcIiwgXCJjb2xvclwiLCBcImNsYXNzTmFtZVwiLCBcIndpZHRoXCIsIFwiaGVpZ2h0XCIsIFwic2l6ZVwiLCBcIm5ldHdvcmtMb2dvXCIsIFwibmV0d29ya0Nsc1wiLCBcIm5ldHdvcmtDb2xvclwiXSk7XG4gICAgY29uc3QgY2xhc3NlcyA9IGNsYXNzbmFtZXMoJ2ljb25zJyk7XG4gICAgcmV0dXJuIF9qc3hzKFwiaVwiLCB7IGNsYXNzTmFtZTogam9pbkNscyhjbGFzc2VzKCdsb2dvLXdpdGgtd29yZHMnKSwgbmV0d29ya0xvZ28gJiYgY2xhc3NlcygnbG9nby13aXRoLXdvcmRzLXdpdGgtbmV0d29yaycpLCBjbGFzc05hbWUpLCBjaGlsZHJlbjogW19qc3goTG9nbywgT2JqZWN0LmFzc2lnbih7IGNvbG9yOiBsb2dvQ29sb3IgfHwgY29sb3IsIHdpZHRoOiBoZWlnaHQgfHwgc2l6ZSwgaGVpZ2h0OiBoZWlnaHQgfHwgc2l6ZSwgY2xhc3NOYW1lOiBsb2dvQ2xzIH0sIHJlc3QpKSwgX2pzeChMb2dvV29yZCwgT2JqZWN0LmFzc2lnbih7IGNvbG9yOiB3b3JkQ29sb3IgfHwgY29sb3IsIHdpZHRoOiB3aWR0aCAmJiBoZWlnaHRcbiAgICAgICAgICAgICAgICAgICAgPyBuZXR3b3JrTG9nb1xuICAgICAgICAgICAgICAgICAgICAgICAgPyAoKCt3aWR0aCkgLSAoK2hlaWdodCkgLSAoKCt3aWR0aCkgKiAwLjAyNSkgLSAoKCt3aWR0aCkgKiAwLjQ2Mzc0KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogKCgrd2lkdGgpIC0gKCtoZWlnaHQpKVxuICAgICAgICAgICAgICAgICAgICA6IHNpemUsIGhlaWdodDogaGVpZ2h0IHx8IHNpemUsIGNsYXNzTmFtZTogd29yZENscyB9LCByZXN0KSksIG5ldHdvcmtMb2dvICYmIF9qc3goTG9nb05ldHdvcmssIE9iamVjdC5hc3NpZ24oeyBjb2xvcjogbmV0d29ya0NvbG9yIHx8IGNvbG9yLCB3aWR0aDogd2lkdGggJiYgaGVpZ2h0XG4gICAgICAgICAgICAgICAgICAgID8gbmV0d29ya0xvZ29cbiAgICAgICAgICAgICAgICAgICAgICAgID8gKCgrd2lkdGgpIC0gKCtoZWlnaHQpIC0gKCgrd2lkdGgpICogMC4wMjUpIC0gKCgrd2lkdGgpICogMC4zOTI4NykpXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICgoK3dpZHRoKSAtICgraGVpZ2h0KSlcbiAgICAgICAgICAgICAgICAgICAgOiBzaXplLCBoZWlnaHQ6IGhlaWdodCB8fCBzaXplLCBjbGFzc05hbWU6IG5ldHdvcmtDbHMgfSwgcmVzdCkpXSB9KTtcbn07XG4vKipcbiAqIFBhcnQgd2lkdGhzIG9mIHRoZSBmb3VyLXBhcnQgbG9ja3VwLCBhcyBmcmFjdGlvbnMgb2YgdGhlIHRvdGFsIHdpZHRoLlxuICpcbiAqIE1lYXN1cmVkIG9mZiB0aGUgc291cmNlIGFydHdvcmsgKDM4OSB4IDMyKTogdGhlIHBpbndoZWVsIG9jY3VwaWVzIDAtMzIsXG4gKiBgMU1PTkVZYCA0MC41Ny0xNzUuNDksIGBORVRXT1JLYCAxODQuMDctMzQzLjMzIGFuZCBgQkVUQWAgMzQ3LjMzLTM4OC43MC4gVGhlXG4gKiBpbnRlci1wYXJ0IGdhcHMgKDIuMiUgLyAyLjIlIC8gMS4wMyUpIGxpdmUgaW4gSWNvbnMuc2NzcyBhcyBwYWRkaW5nLCBzbyB0aGVzZVxuICogZml2ZSBudW1iZXJzIGFkZCB1cCB0byAxIGFuZCB0aGUgbG9ja3VwIGZpbGxzIGl0cyBib3ggZXhhY3RseS5cbiAqXG4gKiBFYWNoIHBhcnQga2VlcHMgaXRzIG93biBhc3BlY3QgcmF0aW8gdmlhIGBwcmVzZXJ2ZUFzcGVjdFJhdGlvYCwgc28gb25seSB0aGVcbiAqIHdpZHRoIGhhcyB0byBiZSByaWdodCDigJQgdGhlIGhlaWdodCBhcmd1bWVudCBqdXN0IGJvdW5kcyB0aGUgYm94LlxuICovXG5jb25zdCBCRVRBX0xPQ0tVUCA9IHtcbiAgICB3b3JkOiAwLjM0NjgsXG4gICAgbmV0d29yazogMC40MDk0LFxuICAgIGJldGE6IDAuMTA2Myxcbn07XG5leHBvcnQgY29uc3QgTG9nb1dpdGhCZXRhID0gKHByb3BzKSA9PiB7XG4gICAgY29uc3QgeyBsb2dvQ29sb3IsIHdvcmRDb2xvciwgbG9nb0Nscywgd29yZENscywgYmV0YUNvbG9yLCBiZXRhQ2xzLCBuZXR3b3JrTG9nbywgbmV0d29ya0NscywgbmV0d29ya0NvbG9yLCBjb2xvciwgY2xhc3NOYW1lLCB3aWR0aCwgaGVpZ2h0LCBzaXplIH0gPSBwcm9wcywgcmVzdCA9IF9fcmVzdChwcm9wcywgW1wibG9nb0NvbG9yXCIsIFwid29yZENvbG9yXCIsIFwibG9nb0Nsc1wiLCBcIndvcmRDbHNcIiwgXCJiZXRhQ29sb3JcIiwgXCJiZXRhQ2xzXCIsIFwibmV0d29ya0xvZ29cIiwgXCJuZXR3b3JrQ2xzXCIsIFwibmV0d29ya0NvbG9yXCIsIFwiY29sb3JcIiwgXCJjbGFzc05hbWVcIiwgXCJ3aWR0aFwiLCBcImhlaWdodFwiLCBcInNpemVcIl0pO1xuICAgIGNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKCdpY29ucycpO1xuICAgIGNvbnN0IGggPSB1c2VNZW1vKCgpID0+IGhlaWdodCB8fCBzaXplLCBbaGVpZ2h0LCBzaXplXSk7XG4gICAgcmV0dXJuIF9qc3hzKFwiaVwiLCB7IGNsYXNzTmFtZTogam9pbkNscyhjbGFzc2VzKCdsb2dvLXdpdGgtYmV0YScpLCBuZXR3b3JrTG9nbyAmJiBjbGFzc2VzKCdsb2dvLXdpdGgtYmV0YS13aXRoLW5ldHdvcmsnKSwgY2xhc3NOYW1lKSwgY2hpbGRyZW46IFtfanN4KExvZ28sIE9iamVjdC5hc3NpZ24oeyBjb2xvcjogbG9nb0NvbG9yIHx8IGNvbG9yLCB3aWR0aDogaCwgaGVpZ2h0OiBoLCBjbGFzc05hbWU6IGxvZ29DbHMgfSwgcmVzdCkpLCBfanN4KExvZ29Xb3JkLCBPYmplY3QuYXNzaWduKHsgY29sb3I6IHdvcmRDb2xvciB8fCBjb2xvciwgd2lkdGg6IHdpZHRoICYmIGhlaWdodFxuICAgICAgICAgICAgICAgICAgICA/IG5ldHdvcmtMb2dvXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICgoK3dpZHRoKSAqIEJFVEFfTE9DS1VQLndvcmQpXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICgoK3dpZHRoKSAtICgraGVpZ2h0KSAtICgoK3dpZHRoKSAqIDAuMDQpIC0gKCgrd2lkdGgpICogMC4xOTcpKVxuICAgICAgICAgICAgICAgICAgICA6IHNpemUsIGhlaWdodDogaCwgY2xhc3NOYW1lOiB3b3JkQ2xzIH0sIHJlc3QpKSwgbmV0d29ya0xvZ28gJiYgX2pzeChMb2dvTmV0d29yaywgT2JqZWN0LmFzc2lnbih7IGNvbG9yOiBuZXR3b3JrQ29sb3IgfHwgY29sb3IsIHdpZHRoOiB3aWR0aCAmJiBoZWlnaHQgPyAoKCt3aWR0aCkgKiBCRVRBX0xPQ0tVUC5uZXR3b3JrKSA6IHNpemUsIGhlaWdodDogaCwgY2xhc3NOYW1lOiBuZXR3b3JrQ2xzIH0sIHJlc3QpKSwgX2pzeChMb2dvQmV0YSwgT2JqZWN0LmFzc2lnbih7IGNvbG9yOiBiZXRhQ29sb3IgfHwgY29sb3IsIGNsYXNzTmFtZTogYmV0YUNscywgd2lkdGg6IHdpZHRoICYmIGhlaWdodFxuICAgICAgICAgICAgICAgICAgICA/IG5ldHdvcmtMb2dvXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICgoK3dpZHRoKSAqIEJFVEFfTE9DS1VQLmJldGEpXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICgoK3dpZHRoKSAtICgraGVpZ2h0KSAtICgoK3dpZHRoKSAqIDAuMDQpIC0gKCgrd2lkdGgpICogMC42MTgpIC0gMSlcbiAgICAgICAgICAgICAgICAgICAgOiBzaXplLCBoZWlnaHQ6IGggPyAraCAvIDIuNSA6IHZvaWQgMCB9LCByZXN0LCB7IHN0eWxlOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHJlc3Quc3R5bGUpLCB7ICctLWxvZ28taGVpZ2h0JzogYCR7aCAhPT0gbnVsbCAmJiBoICE9PSB2b2lkIDAgPyBoIDogMjN9cHhgIH0pIH0pKV0gfSk7XG59O1xuZXhwb3J0IGRlZmF1bHQge1xuICAgIExvZ28sXG4gICAgTG9nb1dvcmQsXG4gICAgTG9nb05ldHdvcmssXG4gICAgTG9nb1dpdGhXb3JkcyxcbiAgICBMb2dvQmcsXG4gICAgTG9nb0JldGEsXG4gICAgTG9nb1dpdGhCZXRhLFxufTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=