schummar-table 0.37.0 → 0.37.3

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.
package/dist/es/index.js CHANGED
@@ -867,15 +867,15 @@ const thisYear = (delta = 0) => {
867
867
  };
868
868
  const MS_PER_DAY = 1e3 * 60 * 60 * 24;
869
869
  const getCalendarWeek = (date) => {
870
- const y = date.getFullYear();
871
- const fdoy = new Date(y, 0, 1);
872
- const doy = Math.floor((date.getTime() - fdoy.getTime() + (date.getTimezoneOffset() - fdoy.getTimezoneOffset())) / MS_PER_DAY);
873
- const dow = fdoy.getDay();
874
- const w = Math.floor((10 + doy - dow) / 7);
875
- if (w === 0) {
876
- return getCalendarWeek(new Date(y - 1, 11, 31));
870
+ const endOfWeek = new Date(date.getFullYear(), date.getMonth(), date.getDate() + (7 - (date.getDay() || 7)));
871
+ const year = endOfWeek.getFullYear();
872
+ const firstDayOfYear = new Date(year, 0, 1);
873
+ const dayOfYear = Math.floor((endOfWeek.getTime() - firstDayOfYear.getTime() + (endOfWeek.getTimezoneOffset() - firstDayOfYear.getTimezoneOffset())) / MS_PER_DAY) + 1;
874
+ const weekOfYear = Math.floor((3 + dayOfYear) / 7);
875
+ if (weekOfYear === 0) {
876
+ return getCalendarWeek(new Date(endOfWeek.getFullYear(), endOfWeek.getMonth(), endOfWeek.getDate() - 7)) + 1;
877
877
  }
878
- return w;
878
+ return weekOfYear;
879
879
  };
880
880
  const commonQuickOptions = {
881
881
  today: {
@@ -930,13 +930,23 @@ function dateClamp(date, min, max) {
930
930
  }
931
931
  return date;
932
932
  }
933
+ function getValueForComparison(value) {
934
+ var _a, _b;
935
+ if (!value) {
936
+ return value;
937
+ }
938
+ if (value instanceof Date) {
939
+ return value.getTime();
940
+ }
941
+ return `${(_a = value.min) == null ? void 0 : _a.getTime()}-${(_b = value.max) == null ? void 0 : _b.getTime()}`;
942
+ }
933
943
  var _ref$d = process.env.NODE_ENV === "production" ? {
934
944
  name: "1pbc0wn",
935
945
  styles: "display:grid;grid-auto-flow:column;justify-content:center;align-items:baseline;gap:var(--spacing)"
936
946
  } : {
937
947
  name: "kl77zb-DatePicker",
938
948
  styles: "display:grid;grid-auto-flow:column;justify-content:center;align-items:baseline;gap:var(--spacing);label:DatePicker;",
939
- map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2RhdGVQaWNrZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQThaUSIsImZpbGUiOiIvaG9tZS9ydW5uZXIvd29yay9zY2h1bW1hci10YWJsZS9zY2h1bW1hci10YWJsZS9zcmMvY29tcG9uZW50cy9kYXRlUGlja2VyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVPYmosIHVzZURheXplZCB9IGZyb20gJ2RheXplZCc7XG5pbXBvcnQge1xuICBGcmFnbWVudCxcbiAgUmVhY3ROb2RlLFxuICBjcmVhdGVDb250ZXh0LFxuICB1c2VDb250ZXh0LFxuICB1c2VFZmZlY3QsXG4gIHVzZU1lbW8sXG4gIHVzZVN0YXRlLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJy4uL2hvb2tzL3VzZVRoZW1lJztcbmltcG9ydCB7IGRlZmF1bHRzIH0gZnJvbSAnLi4vbWlzYy9kZWZhdWx0cyc7XG5pbXBvcnQgeyBncmF5IH0gZnJvbSAnLi4vdGhlbWUvZGVmYXVsdFRoZW1lL2RlZmF1bHRDbGFzc2VzJztcbmltcG9ydCB7IHVzZUNzc1ZhcmlhYmxlcyB9IGZyb20gJy4uL3RoZW1lL3VzZUNzc1ZhcmlhYmxlcyc7XG5pbXBvcnQgeyBEYXRlSW5wdXQgfSBmcm9tICcuL2RhdGVJbnB1dCc7XG5pbXBvcnQgeyBUZXh0IH0gZnJvbSAnLi90ZXh0JztcbmltcG9ydCB7IEludGVycG9sYXRpb24sIFRoZW1lIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuXG5leHBvcnQgdHlwZSBEYXRlUmFuZ2UgPSB7IG1pbjogRGF0ZTsgbWF4OiBEYXRlIH07XG5cbmV4cG9ydCB0eXBlIERhdGVQaWNrZXJRdWlja09wdGlvbiA9XG4gIHwgJ3RvZGF5J1xuICB8ICd0aGlzV2VlaydcbiAgfCAndGhpc01vbnRoJ1xuICB8ICd0aGlzWWVhcidcbiAgfCAnbGFzdFNldmVuRGF5cydcbiAgfCAnbGFzdFRoaXJ0eURheXMnXG4gIHwgeyBsYWJlbDogUmVhY3ROb2RlOyB2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8ICgoKSA9PiBEYXRlIHwgRGF0ZVJhbmdlKSB9XG4gIHwgKChvbkNoYW5nZTogKHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCkgPT4gdm9pZCkgPT4gUmVhY3ROb2RlKTtcblxuZXhwb3J0IHR5cGUgRGF0ZVBpY2tlclByb3BzID0ge1xuICAvKiogQ3VycmVudGx5IHNlbGVjdGVkIGRheSBvciByYW5nZSBvZiBkYXlzLiAqL1xuICB2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGw7XG4gIC8qKiBDYWxsYmFjayBmb3Igd2hlbiB0aGUgZGF5IChyYW5nZSkgY2hhbmdlcy4gKi9cbiAgb25DaGFuZ2U6ICh2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpID0+IHZvaWQ7XG4gIC8qKiBDdXJyZW50bHkgdmlzaWJsZSBkYXRlLiAqL1xuICBkYXRlSW5WaWV3PzogRGF0ZTtcbiAgLyoqIENhbGxiYWNrIGZvciB3aGVuIHRoZSBjdXJyZW50bHkgdmlzaWJsZSBkYXRlIGNoYW5nZXMuICovXG4gIG9uRGF0ZUluVmlld0NoYW5nZT86ICh2YWx1ZTogRGF0ZSkgPT4gdm9pZDtcbiAgLyoqIElmIGVuYWJsZWQsIHJhbmdlcyBjYW4gYmUgc2VsZWN0ZWQuICovXG4gIHJhbmdlU2VsZWN0PzogYm9vbGVhbjtcbiAgLyoqIFdoaWNoIGxvY2FsZSB0byB1c2UgdG8gcmVuZGVyIHRoZSBjYWxlbmRhci4gKi9cbiAgbG9jYWxlPzogc3RyaW5nO1xuICAvKiogV2hpY2ggZGF5IG9mIHRoZSB3ZWVrIHNob3VsZCBiZSBpbiB0aGUgZmlyc3QgY29sdW1uLiAoMD1TdW5kYXksIDE9TW9uZGF5LCAuLi4pXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIGZpcnN0RGF5T2ZXZWVrPzogMCB8IDEgfCAyIHwgMyB8IDQgfCA1IHwgNjtcbiAgLyoqIFdoaWNoIG1vbnRoIHRvIHNob3cgaW5pdGlhbGx5ICovXG4gIGRlZmF1bHREYXRlSW5WaWV3PzogRGF0ZTtcbiAgLyoqIFNob3cgYnV0dG9ucyB0byBxdWlja2x5IHNlbGVjdCBzdWdnZXN0ZWQgZGF0ZXMgb3IgZGF0ZSByYW5nZXMgKi9cbiAgcXVpY2tPcHRpb25zPzogRGF0ZVBpY2tlclF1aWNrT3B0aW9uW107XG4gIC8qKiBNaW5pbXVtIHNlbGVjdGFibGUgZGF0ZSAqL1xuICAvKiogRGF0ZSByYW5nZXMgdGhhdCBhcmUgdmlzdWFsbHkgbWFya2VkIGFzIGJsb2NrZWQgKi9cbiAgYmxvY2tlZFJhbmdlcz86IERhdGVSYW5nZVtdO1xuICBtaW5EYXRlPzogRGF0ZTtcbiAgLyoqIE1heGltdW0gc2VsZWN0YWJsZSBkYXRlICovXG4gIG1heERhdGU/OiBEYXRlO1xuICAvKiogV2hldGhlciB0byBzaG93IHRoZSBjYWxlbmRhciB3ZWVrIGluIHRoZSBmaXJzdCBjb2x1bW4gKi9cbiAgc2hvd0NhbGVuZGFyV2Vlaz86IGJvb2xlYW47XG59O1xuXG5jb25zdCBEYXRlUGlja2VyQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8UGFydGlhbDxPbWl0PERhdGVQaWNrZXJQcm9wcywgJ3ZhbHVlJyB8ICdvbkNoYW5nZSc+Pj4oe30pO1xuXG5leHBvcnQgZnVuY3Rpb24gRGF0ZVBpY2tlclByb3ZpZGVyKHtcbiAgY2hpbGRyZW4sXG4gIC4uLnByb3BzXG59OiBQYXJ0aWFsPE9taXQ8RGF0ZVBpY2tlclByb3BzLCAndmFsdWUnIHwgJ29uQ2hhbmdlJz4+ICYgeyBjaGlsZHJlbj86IFJlYWN0Tm9kZSB9KSB7XG4gIGNvbnN0IHZhbHVlID0gdXNlTWVtbygoKSA9PiBwcm9wcywgW0pTT04uc3RyaW5naWZ5KHByb3BzKV0pO1xuXG4gIHJldHVybiA8RGF0ZVBpY2tlckNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3ZhbHVlfT57Y2hpbGRyZW59PC9EYXRlUGlja2VyQ29udGV4dC5Qcm92aWRlcj47XG59XG5cbmNvbnN0IHdlZWtEYXlzID0gWzAsIDEsIDIsIDMsIDQsIDUsIDZdIGFzIGNvbnN0O1xuXG4vKiogUm91bmRzIGEgZGF0ZSBkb3duIHRvIHRoZSBzdGFydCBvZiB0aGUgZGF5LiAqL1xuZXhwb3J0IGNvbnN0IHN0YXJ0T2ZEYXkgPSAoZDogRGF0ZSkgPT4gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCBkLmdldE1vbnRoKCksIGQuZ2V0RGF0ZSgpKTtcblxuLyoqIFJvdW5kcyBhIGRhdGUgdXAgdG8gdGhlIGVuZCBvZiB0aGUgZGF5LiAqL1xuZXhwb3J0IGNvbnN0IGVuZE9mRGF5ID0gKGQ6IERhdGUpID0+XG4gIG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgZC5nZXRNb250aCgpLCBkLmdldERhdGUoKSArIDEsIDAsIDAsIDAsIC0xKTtcblxuZXhwb3J0IGNvbnN0IGxhc3REYXlzID0gKGRheXM6IG51bWJlcik6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG4gIG1pbi5zZXREYXRlKG1pbi5nZXREYXRlKCkgLSBkYXlzICsgMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG5vdyksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdG9kYXkgPSAoKSA9PiBsYXN0RGF5cygxKTtcblxuZXhwb3J0IGNvbnN0IHRoaXNXZWVrID0gKGRlbHRhID0gMCwgZmlyc3REYXlPZldlZWsgPSAxKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcblxuICBsZXQgZGlmZiA9IG1pbi5nZXREYXkoKSAtIGZpcnN0RGF5T2ZXZWVrO1xuICBpZiAoZGlmZiA8IDApIHtcbiAgICBkaWZmICs9IDc7XG4gIH1cbiAgbWluLnNldERhdGUobWluLmdldERhdGUoKSAtIGRpZmYgKyBkZWx0YSAqIDcpO1xuXG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXREYXRlKG1heC5nZXREYXRlKCkgKyA2KTtcblxuICByZXR1cm4ge1xuICAgIG1pbjogc3RhcnRPZkRheShtaW4pLFxuICAgIG1heDogZW5kT2ZEYXkobWF4KSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCB0aGlzTW9udGggPSAoZGVsdGEgPSAwKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcbiAgbWluLnNldERhdGUoMSk7XG4gIG1pbi5zZXRNb250aChtaW4uZ2V0TW9udGgoKSArIGRlbHRhKTtcbiAgY29uc3QgbWF4ID0gbmV3IERhdGUobWluKTtcbiAgbWF4LnNldE1vbnRoKG1heC5nZXRNb250aCgpICsgMSk7XG4gIG1heC5zZXREYXRlKG1heC5nZXREYXRlKCkgLSAxKTtcblxuICByZXR1cm4ge1xuICAgIG1pbjogc3RhcnRPZkRheShtaW4pLFxuICAgIG1heDogZW5kT2ZEYXkobWF4KSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCB0aGlzWWVhciA9IChkZWx0YSA9IDApOiBEYXRlUmFuZ2UgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBtaW4gPSBuZXcgRGF0ZShub3cpO1xuICBtaW4uc2V0RGF0ZSgxKTtcbiAgbWluLnNldE1vbnRoKDApO1xuICBtaW4uc2V0RnVsbFllYXIobWluLmdldEZ1bGxZZWFyKCkgKyBkZWx0YSk7XG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXRGdWxsWWVhcihtYXguZ2V0RnVsbFllYXIoKSArIDEpO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpIC0gMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5jb25zdCBNU19QRVJfREFZID0gMTAwMCAqIDYwICogNjAgKiAyNDtcbmV4cG9ydCBjb25zdCBnZXRDYWxlbmRhcldlZWsgPSAoZGF0ZTogRGF0ZSk6IG51bWJlciA9PiB7XG4gIC8vIElTTyA4NjAxOiBXZWVrIDEgaXMgdGhlIHdlZWsgd2l0aCB0aGUgZmlyc3QgVGh1cnNkYXkgb2YgdGhlIHllYXIuXG4gIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcblxuICBjb25zdCB5ID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICBjb25zdCBmZG95ID0gbmV3IERhdGUoeSwgMCwgMSk7XG4gIGNvbnN0IGRveSA9IE1hdGguZmxvb3IoXG4gICAgKGRhdGUuZ2V0VGltZSgpIC0gZmRveS5nZXRUaW1lKCkgKyAoZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpIC0gZmRveS5nZXRUaW1lem9uZU9mZnNldCgpKSkgL1xuICAgICAgTVNfUEVSX0RBWSxcbiAgKTtcbiAgY29uc3QgZG93ID0gZmRveS5nZXREYXkoKTtcbiAgY29uc3QgdyA9IE1hdGguZmxvb3IoKDEwICsgZG95IC0gZG93KSAvIDcpO1xuXG4gIGlmICh3ID09PSAwKSB7XG4gICAgcmV0dXJuIGdldENhbGVuZGFyV2VlayhuZXcgRGF0ZSh5IC0gMSwgMTEsIDMxKSk7XG4gIH1cblxuICByZXR1cm4gdztcbn07XG5cbmV4cG9ydCBjb25zdCBjb21tb25RdWlja09wdGlvbnMgPSB7XG4gIHRvZGF5OiB7IGxhYmVsOiA8VGV4dCBpZD1cInRvZGF5XCIgLz4sIHZhbHVlOiB0b2RheSB9LFxuICB0aGlzV2VlazogeyBsYWJlbDogPFRleHQgaWQ9XCJ0aGlzV2Vla1wiIC8+LCB2YWx1ZTogKHByb3BzKSA9PiB0aGlzV2VlaygwLCBwcm9wcy5maXJzdERheU9mV2VlaykgfSxcbiAgdGhpc01vbnRoOiB7IGxhYmVsOiA8VGV4dCBpZD1cInRoaXNNb250aFwiIC8+LCB2YWx1ZTogKCkgPT4gdGhpc01vbnRoKCkgfSxcbiAgdGhpc1llYXI6IHsgbGFiZWw6IDxUZXh0IGlkPVwidGhpc1llYXJcIiAvPiwgdmFsdWU6ICgpID0+IHRoaXNZZWFyKCkgfSxcbiAgbGFzdFNldmVuRGF5czogeyBsYWJlbDogPFRleHQgaWQ9XCJsYXN0U2V2ZW5EYXlzXCIgLz4sIHZhbHVlOiAoKSA9PiBsYXN0RGF5cyg3KSB9LFxuICBsYXN0VGhpcnR5RGF5czogeyBsYWJlbDogPFRleHQgaWQ9XCJsYXN0VGhpcnR5RGF5c1wiIC8+LCB2YWx1ZTogKCkgPT4gbGFzdERheXMoMzApIH0sXG59IHNhdGlzZmllcyBSZWNvcmQ8XG4gIERhdGVQaWNrZXJRdWlja09wdGlvbiAmIHN0cmluZyxcbiAgeyBsYWJlbDogUmVhY3ROb2RlOyB2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8ICgocHJvcHM6IERhdGVQaWNrZXJQcm9wcykgPT4gRGF0ZSB8IERhdGVSYW5nZSkgfVxuPjtcblxuLyoqIFJldHVybnMgd2hldGhlciB0d28gZGF0ZXMgYW5kL29yIGRhdGUgcmFuZ2VzIGludGVyc2VjdC4gSW50ZXJzZWN0aW9uIGlzIGNvbnNpZGVyZWQgcGVyIGRheS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkYXRlSW50ZXJzZWN0KGE6IERhdGUgfCBudWxsIHwgRGF0ZVJhbmdlLCBiOiBEYXRlIHwgbnVsbCB8IERhdGVSYW5nZSkge1xuICBpZiAoYSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICBhID0geyBtaW46IGEsIG1heDogYSB9O1xuICB9XG4gIGlmIChiIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIGIgPSB7IG1pbjogYiwgbWF4OiBiIH07XG4gIH1cblxuICBpZiAoIWE/Lm1pbiB8fCAhYS5tYXggfHwgIWI/Lm1pbiB8fCAhYi5tYXgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gIShlbmRPZkRheShhLm1heCkgPCBzdGFydE9mRGF5KGIubWluKSB8fCBzdGFydE9mRGF5KGEubWluKSA+IGVuZE9mRGF5KGIubWF4KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRlQ2xhbXAoZGF0ZTogRGF0ZSwgbWluPzogRGF0ZSwgbWF4PzogRGF0ZSkge1xuICBpZiAobWluICYmIGRhdGUgPCBtaW4pIHtcbiAgICByZXR1cm4gbWluO1xuICB9XG5cbiAgaWYgKG1heCAmJiBkYXRlID4gbWF4KSB7XG4gICAgcmV0dXJuIG1heDtcbiAgfVxuXG4gIHJldHVybiBkYXRlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRGF0ZVBpY2tlcihwcm9wczogRGF0ZVBpY2tlclByb3BzKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KERhdGVQaWNrZXJDb250ZXh0KTtcblxuICBjb25zdCB7XG4gICAgdmFsdWUsXG4gICAgcmFuZ2VTZWxlY3QsXG4gICAgbG9jYWxlLFxuICAgIGZpcnN0RGF5T2ZXZWVrID0gMSxcbiAgICBkZWZhdWx0RGF0ZUluVmlldyxcbiAgICBxdWlja09wdGlvbnMgPSBbJ3RvZGF5JywgJ3RoaXNXZWVrJ10sXG4gICAgbWluRGF0ZSxcbiAgICBtYXhEYXRlLFxuICAgIHNob3dDYWxlbmRhcldlZWssXG4gICAgYmxvY2tlZFJhbmdlcyA9IFtdLFxuICB9ID0gZGVmYXVsdHM8RGF0ZVBpY2tlclByb3BzPihwcm9wcywgY29udGV4dCk7XG5cbiAgZnVuY3Rpb24gb25DaGFuZ2UodmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgdmFsdWUgPSBkYXRlQ2xhbXAodmFsdWUsIG1pbkRhdGUsIG1heERhdGUpO1xuICAgIH0gZWxzZSBpZiAodmFsdWUpIHtcbiAgICAgIHZhbHVlID0ge1xuICAgICAgICBtaW46IGRhdGVDbGFtcCh2YWx1ZS5taW4sIG1pbkRhdGUsIG1heERhdGUpLFxuICAgICAgICBtYXg6IGRhdGVDbGFtcCh2YWx1ZS5tYXgsIG1pbkRhdGUsIG1heERhdGUpLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBwcm9wcy5vbkNoYW5nZSh2YWx1ZSk7XG4gIH1cblxuICBjb25zdCBCdXR0b24gPSB1c2VUaGVtZSgodCkgPT4gdC5jb21wb25lbnRzLkJ1dHRvbik7XG4gIGNvbnN0IEljb25CdXR0b24gPSB1c2VUaGVtZSgodCkgPT4gdC5jb21wb25lbnRzLkljb25CdXR0b24pO1xuICBjb25zdCBDaGV2cm9uUmlnaHQgPSB1c2VUaGVtZSgodCkgPT4gdC5pY29ucy5DaGV2cm9uUmlnaHQpO1xuICBjb25zdCBjc3NWYXJpYWJsZXMgPSB1c2VDc3NWYXJpYWJsZXMoKTtcbiAgZnVuY3Rpb24gZ2V0RGF5Q3NzU3R5bGVzKHtcbiAgICBkaXNhYmxlZCxcbiAgICBwcmV2TW9udGgsXG4gICAgbmV4dE1vbnRoLFxuICAgIHRvZGF5LFxuICAgIGJsb2NrZWQsXG4gICAgc2VsZWN0ZWQsXG4gICAgcHJlU2VsZWN0ZWQsXG4gIH06IHtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgcHJldk1vbnRoPzogYm9vbGVhbjtcbiAgICBuZXh0TW9udGg/OiBib29sZWFuO1xuICAgIHRvZGF5PzogYm9vbGVhbjtcbiAgICBibG9ja2VkPzogYm9vbGVhbjtcbiAgICBzZWxlY3RlZD86IGJvb2xlYW47XG4gICAgcHJlU2VsZWN0ZWQ/OiBib29sZWFuO1xuICB9KTogSW50ZXJwb2xhdGlvbjxUaGVtZT4ge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICBib3JkZXI6ICdub25lJyxcbiAgICAgICAgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgY3Vyc29yOiBkaXNhYmxlZCA/IHVuZGVmaW5lZCA6ICdwb2ludGVyJyxcbiAgICAgICAgZm9udDogJ2luaGVyaXQnLFxuICAgICAgfSxcbiAgICAgIChwcmV2TW9udGggfHwgbmV4dE1vbnRoKSAmJiB7XG4gICAgICAgIGNvbG9yOiBncmF5LFxuICAgICAgfSxcbiAgICAgIHRvZGF5ICYmIHtcbiAgICAgICAgb3V0bGluZTogJzFweCBzb2xpZCB2YXIoLS1zZWNvbmRhcnlNYWluKScsXG4gICAgICB9LFxuICAgICAgYmxvY2tlZCAmJiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1ibG9ja2VkTWFpbiknLFxuICAgICAgICBjb2xvcjogJ3ZhcigtLWJsb2NrZWRDb250cmFzdFRleHQpJyxcbiAgICAgIH0sXG4gICAgICBzZWxlY3RlZCAmJiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1wcmltYXJ5TWFpbiknLFxuICAgICAgICBjb2xvcjogJ3ZhcigtLXByaW1hcnlDb250cmFzdFRleHQpJyxcbiAgICAgIH0sXG4gICAgICBibG9ja2VkICYmXG4gICAgICAgIHNlbGVjdGVkICYmIHtcbiAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICAgICAnOjpiZWZvcmUnOiB7XG4gICAgICAgICAgICBjb250ZW50OiAnXCJcIicsXG4gICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgIHJpZ2h0OiAwLFxuICAgICAgICAgICAgYm90dG9tOiAwLFxuICAgICAgICAgICAgbGVmdDogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1ibG9ja2VkTWFpbiknLFxuICAgICAgICAgICAgY2xpcFBhdGg6ICdwb2x5Z29uKDAgMCwgMCA1MCUsIDUwJSAwKScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIHByZVNlbGVjdGVkICYmIHtcbiAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLXByaW1hcnlMaWdodCknLFxuICAgICAgICBjb2xvcjogJ3ZhcigtLXByaW1hcnlDb250cmFzdFRleHQpJyxcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxuXG4gIGNvbnN0IG1vdW50VGltZSA9IHVzZU1lbW8oKCkgPT4gbmV3IERhdGUoKSwgW10pO1xuICBjb25zdCBbZGlydHksIHNldERpcnR5XSA9IHVzZVN0YXRlPFBhcnRpYWw8RGF0ZVJhbmdlPj4oKTtcbiAgY29uc3QgW2hvdmVyZWQsIHNldEhvdmVyZWRdID0gdXNlU3RhdGU8RGF0ZT4oKTtcbiAgY29uc3QgW2RhdGVJblZpZXdMb2NhbCwgc2V0RGF0ZUluVmlld0xvY2FsXSA9IHVzZVN0YXRlPERhdGU+KGRlZmF1bHREYXRlSW5WaWV3ID8/IG1vdW50VGltZSk7XG4gIGNvbnN0IGRhdGVJblZpZXcgPSBwcm9wcy5kYXRlSW5WaWV3ID8/IGRhdGVJblZpZXdMb2NhbDtcblxuICBmdW5jdGlvbiBzZXREYXRlSW5WaWV3KGRhdGU6IERhdGUpIHtcbiAgICBzZXREYXRlSW5WaWV3TG9jYWwoZGF0ZSk7XG4gICAgcHJvcHMub25EYXRlSW5WaWV3Q2hhbmdlPy4oZGF0ZSk7XG4gIH1cblxuICBjb25zdCBtaW4gPSBkaXJ0eSA/IGRpcnR5Lm1pbiA6IHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IHZhbHVlIDogdmFsdWU/Lm1pbjtcbiAgY29uc3QgbWF4ID0gZGlydHkgPyBkaXJ0eS5tYXggOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlPy5tYXg7XG5cbiAgY29uc3QgcmVzb2x2ZWRRdWlja09wdGlvbnMgPSBbLi4ucXVpY2tPcHRpb25zLCB7IGxhYmVsOiA8VGV4dCBpZD1cInJlc2V0XCIgLz4sIHZhbHVlOiBudWxsIH1dLm1hcChcbiAgICAob3B0aW9uLCBpbmRleCkgPT4ge1xuICAgICAgaWYgKG9wdGlvbiBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgICAgIHJldHVybiBvcHRpb24oKHZhbHVlKSA9PiB7XG4gICAgICAgICAgc2V0RGlydHkodW5kZWZpbmVkKTtcbiAgICAgICAgICBvbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IGxhYmVsLCB2YWx1ZSB9ID0gdHlwZW9mIG9wdGlvbiA9PT0gJ3N0cmluZycgPyBjb21tb25RdWlja09wdGlvbnNbb3B0aW9uXSA6IG9wdGlvbjtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG5cbiAgICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgICAgICAgICAgIG9uQ2hhbmdlKHZhbHVlKHByb3BzKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBvbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtsYWJlbH1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApO1xuICAgIH0sXG4gICk7XG5cbiAgY29uc3QgeyBjYWxlbmRhcnMsIGdldEJhY2tQcm9wcywgZ2V0Rm9yd2FyZFByb3BzLCBnZXREYXRlUHJvcHMgfSA9IHVzZURheXplZCh7XG4gICAgb25EYXRlU2VsZWN0ZWQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICBmaXJzdERheU9mV2VlayxcbiAgICBzaG93T3V0c2lkZURheXM6IHRydWUsXG4gICAgZGF0ZTogZGF0ZUluVmlldyxcbiAgICBvbk9mZnNldENoYW5nZWQ6IChvZmZzZXQpID0+XG4gICAgICBzZXREYXRlSW5WaWV3KG5ldyBEYXRlKGRhdGVJblZpZXcuZ2V0RnVsbFllYXIoKSwgZGF0ZUluVmlldy5nZXRNb250aCgpICsgb2Zmc2V0KSksXG4gICAgb2Zmc2V0OiAwLFxuICAgIG1pbkRhdGUsXG4gICAgbWF4RGF0ZSxcbiAgfSk7XG4gIGNvbnN0IG5vdyA9IHVzZU1lbW8oKCkgPT4gc3RhcnRPZkRheShuZXcgRGF0ZSgpKSwgW10pO1xuXG4gIGNvbnN0IGZvcm1hdFdlZWtkYXkgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IGZvcm1hdCB9ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IHdlZWtkYXk6ICdzaG9ydCcgfSk7XG4gICAgcmV0dXJuICh3ZWVrRGF5OiBudW1iZXIpID0+XG4gICAgICBmb3JtYXQobmV3IERhdGUoRGF0ZS5VVEMoMjAyMSwgNywgKCh3ZWVrRGF5ICsgZmlyc3REYXlPZldlZWspICUgNykgKyAxKSkpO1xuICB9LCBbbG9jYWxlLCBmaXJzdERheU9mV2Vla10pO1xuXG4gIHVzZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgc2V0RGF0ZUluVmlldyhcbiAgICAgICAgdmFsdWUgPT09IG51bGwgPyBkZWZhdWx0RGF0ZUluVmlldyA/PyBtb3VudFRpbWUgOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlLm1heCxcbiAgICAgICksXG4gICAgW3ZhbHVlLCBkZWZhdWx0RGF0ZUluVmlldywgbW91bnRUaW1lXSxcbiAgKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghcmFuZ2VTZWxlY3QpIHtcbiAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgfVxuICB9LCBbcmFuZ2VTZWxlY3RdKTtcblxuICBmdW5jdGlvbiBzZXQobWluPzogRGF0ZSwgbWF4PzogRGF0ZSwgZWRpdD86ICdtaW4nIHwgJ21heCcpIHtcbiAgICBpZiAoIXJhbmdlU2VsZWN0KSB7XG4gICAgICBvbkNoYW5nZShtaW4gPz8gbnVsbCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKG1pbiAmJiBtYXggJiYgbWluID4gbWF4KSB7XG4gICAgICBpZiAoZWRpdCA9PT0gJ21pbicpIHtcbiAgICAgICAgbWF4ID0gbWluO1xuICAgICAgfSBlbHNlIGlmIChlZGl0ID09PSAnbWF4Jykge1xuICAgICAgICBtaW4gPSBtYXg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbbWluLCBtYXhdID0gW21heCwgbWluXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIW1pbiA9PT0gIW1heCkge1xuICAgICAgc2V0RGlydHkodW5kZWZpbmVkKTtcbiAgICAgIG9uQ2hhbmdlKG1pbiAmJiBtYXggPyB7IG1pbiwgbWF4OiBlbmRPZkRheShtYXgpIH0gOiBudWxsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0RGlydHkoeyBtaW4sIG1heCB9KTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBmb3JtYXRNb250aCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHsgZm9ybWF0IH0gPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUsIHsgbW9udGg6ICdsb25nJyB9KTtcbiAgICByZXR1cm4gKG1vbnRoOiBudW1iZXIpID0+IGZvcm1hdChuZXcgRGF0ZSgyMDIxLCBtb250aCkpO1xuICB9LCBbbG9jYWxlXSk7XG5cbiAgY29uc3QgZm9ybWF0WWVhciA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHsgZm9ybWF0IH0gPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUsIHsgeWVhcjogJ251bWVyaWMnIH0pO1xuICAgIHJldHVybiAoeWVhcjogbnVtYmVyKSA9PiBmb3JtYXQobmV3IERhdGUoeWVhciwgMCwgMSkpO1xuICB9LCBbbG9jYWxlXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNzcz17Y3NzVmFyaWFibGVzfT5cbiAgICAgIDxkaXZcbiAgICAgICAgY3NzPXt7XG4gICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgIGdyaWRBdXRvRmxvdzogJ2NvbHVtbicsXG4gICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgIGFsaWduSXRlbXM6ICdiYXNlbGluZScsXG4gICAgICAgICAgZ2FwOiAndmFyKC0tc3BhY2luZyknLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8RGF0ZUlucHV0XG4gICAgICAgICAgdmFsdWU9e21pbiA/PyBudWxsfVxuICAgICAgICAgIG9uQ2hhbmdlPXsoZGF0ZSkgPT4gc2V0KGRhdGUgPz8gdW5kZWZpbmVkLCBtYXgsICdtaW4nKX1cbiAgICAgICAgICBsb2NhbGU9e2xvY2FsZX1cbiAgICAgICAgLz5cblxuICAgICAgICB7cmFuZ2VTZWxlY3QgJiYgKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICB7JyAtICd9XG4gICAgICAgICAgICA8RGF0ZUlucHV0XG4gICAgICAgICAgICAgIHZhbHVlPXttYXggPz8gbnVsbH1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhkYXRlKSA9PiBzZXQobWluLCBkYXRlID8/IHVuZGVmaW5lZCwgJ21heCcpfVxuICAgICAgICAgICAgICBsb2NhbGU9e2xvY2FsZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cblxuICAgICAge2NhbGVuZGFycy5tYXAoKHsgbW9udGgsIHllYXIsIHdlZWtzIH0pID0+IChcbiAgICAgICAgPGRpdiBrZXk9e2Ake21vbnRofSR7eWVhcn1gfSBjc3M9e3sgZGlzcGxheTogJ2dyaWQnIH19PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICBtYXJnaW46ICdjYWxjKHZhcigtLXNwYWNpbmcpICogNCkgMCcsXG4gICAgICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICAgICAgZ3JpZEF1dG9GbG93OiAnY29sdW1uJyxcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJyxcbiAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxJY29uQnV0dG9uIHR5cGU9XCJidXR0b25cIiB7Li4uZ2V0QmFja1Byb3BzKHsgY2FsZW5kYXJzIH0pfT5cbiAgICAgICAgICAgICAgPENoZXZyb25SaWdodCBjc3M9e3sgdHJhbnNmb3JtOiAncm90YXRlM2QoMCwgMCwgMSwgMTgwZGVnKScgfX0gLz5cbiAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cblxuICAgICAgICAgICAgPGRpdiBjc3M9e3sgZGlzcGxheTogJ2ZsZXgnIH19PlxuICAgICAgICAgICAgICB7Zm9ybWF0TW9udGgobW9udGgpfSB7Zm9ybWF0WWVhcih5ZWFyKX1cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8SWNvbkJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgey4uLmdldEZvcndhcmRQcm9wcyh7IGNhbGVuZGFycyB9KX0+XG4gICAgICAgICAgICAgIDxDaGV2cm9uUmlnaHQgLz5cbiAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICBqdXN0aWZ5U2VsZjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICAgICAgZ3JpZFRlbXBsYXRlQ29sdW1uczogJ3JlcGVhdCg4LCBtYXgtY29udGVudCknLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7c2hvd0NhbGVuZGFyV2VlayA/IChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICAgICAganVzdGlmeVNlbGY6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgICAgICAgICAgICBib3JkZXJSaWdodDogYDFweCBzb2xpZCAke2dyYXl9YCxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFRleHQgaWQ9XCJjYWxlbmRhcldlZWtcIiAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHt3ZWVrRGF5cy5tYXAoKF92LCB3ZWVrRGF5KSA9PiAoXG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBrZXk9e3dlZWtEYXl9XG4gICAgICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgICAgICBqdXN0aWZ5U2VsZjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge2Zvcm1hdFdlZWtkYXkod2Vla0RheSl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKSl9XG5cbiAgICAgICAgICAgIHt3ZWVrcy5tYXAoKHdlZWssIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHdlZWtTdGFydCA9IHdlZWtbMF0gYXMgRGF0ZU9iajtcbiAgICAgICAgICAgICAgY29uc3Qgd2Vla0VuZCA9IHdlZWtbNl0gYXMgRGF0ZU9iajtcbiAgICAgICAgICAgICAgY29uc3Qgd2Vla0Rpc2FibGVkID1cbiAgICAgICAgICAgICAgICAhcmFuZ2VTZWxlY3QgfHxcbiAgICAgICAgICAgICAgICAobWluRGF0ZSAmJiB3ZWVrRW5kLmRhdGUgPCBtaW5EYXRlKSB8fFxuICAgICAgICAgICAgICAgIChtYXhEYXRlICYmIHdlZWtTdGFydC5kYXRlID4gbWF4RGF0ZSk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8RnJhZ21lbnQga2V5PXtpbmRleH0+XG4gICAgICAgICAgICAgICAgICB7c2hvd0NhbGVuZGFyV2VlayA/IChcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI6ICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3I6IHdlZWtEaXNhYmxlZCA/IHVuZGVmaW5lZCA6ICdwb2ludGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQ6ICdpbmhlcml0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJpZ2h0OiBgMXB4IHNvbGlkICR7Z3JheX1gLFxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdlZWtEaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1pbiA9IG1pbkRhdGUgJiYgd2Vla1N0YXJ0LmRhdGUgPCBtaW5EYXRlID8gbWluRGF0ZSA6IHdlZWtTdGFydC5kYXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF4ID0gbWF4RGF0ZSAmJiB3ZWVrRW5kLmRhdGUgPiBtYXhEYXRlID8gbWF4RGF0ZSA6IHdlZWtFbmQuZGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldChtaW4sIG1heCk7XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtnZXRDYWxlbmRhcldlZWsoKHdlZWtbMF0gYXMgRGF0ZU9iaikuZGF0ZSl9XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAvPlxuICAgICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgICAge3dlZWsubWFwKChkYXRlT2JqZWN0LCBkYXlJbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWRhdGVPYmplY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPGRpdiBrZXk9e2RheUluZGV4fSAvPjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgcHJldk1vbnRoLCBuZXh0TW9udGgsIGRhdGUgfSA9IGRhdGVPYmplY3Q7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRvZGF5ID0gc3RhcnRPZkRheShkYXRlKS5nZXRUaW1lKCkgPT09IG5vdy5nZXRUaW1lKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpc2FibGVkID0gKG1pbkRhdGUgJiYgZGF0ZSA8IG1pbkRhdGUpIHx8IChtYXhEYXRlICYmIGRhdGUgPiBtYXhEYXRlKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZCA9XG4gICAgICAgICAgICAgICAgICAgICAgZGF0ZS5nZXRUaW1lKCkgPT09IG1pbj8uZ2V0VGltZSgpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgKG1pbiAmJiBtYXggJiYgZGF0ZUludGVyc2VjdChkYXRlLCB7IG1pbiwgbWF4IH0pKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJlU2VsZWN0ZWQgPVxuICAgICAgICAgICAgICAgICAgICAgICFzZWxlY3RlZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICFkaXNhYmxlZCAmJlxuICAgICAgICAgICAgICAgICAgICAgIChkYXRlLmdldFRpbWUoKSA9PT0gaG92ZXJlZD8uZ2V0VGltZSgpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAobWluICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICFtYXggJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJlZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlSW50ZXJzZWN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluIDw9IGhvdmVyZWQgPyB7IG1pbiwgbWF4OiBob3ZlcmVkIH0gOiB7IG1pbjogaG92ZXJlZCwgbWF4OiBtaW4gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9ja2VkID0gYmxvY2tlZFJhbmdlcy5zb21lKChyYW5nZSkgPT4gZGF0ZUludGVyc2VjdChkYXRlLCByYW5nZSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2Ake2luZGV4fS0ke2RheUluZGV4fWB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2dldERheUNzc1N0eWxlcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2TW9udGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRNb250aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kYXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVTZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgey4uLmdldERhdGVQcm9wcyh7IGRhdGVPYmo6IGRhdGVPYmplY3QgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaXJ0eSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtaW4pIHNldChtaW4sIGRhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugc2V0KGRhdGUsIG1heCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0KGRhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyT3Zlcj17KCkgPT4gc2V0SG92ZXJlZChkYXRlKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlck91dD17KCkgPT4gc2V0SG92ZXJlZCh1bmRlZmluZWQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtkYXRlLmdldERhdGUoKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICApKX1cblxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e3tcbiAgICAgICAgICBtYXJnaW5Ub3A6ICd2YXIoLS1zcGFjaW5nKScsXG4gICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgIGdyaWRBdXRvRmxvdzogJ2NvbHVtbicsXG4gICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICB7cmVzb2x2ZWRRdWlja09wdGlvbnN9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiJdfQ== */",
949
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2RhdGVQaWNrZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXViUSIsImZpbGUiOiIvaG9tZS9ydW5uZXIvd29yay9zY2h1bW1hci10YWJsZS9zY2h1bW1hci10YWJsZS9zcmMvY29tcG9uZW50cy9kYXRlUGlja2VyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVPYmosIHVzZURheXplZCB9IGZyb20gJ2RheXplZCc7XG5pbXBvcnQge1xuICBGcmFnbWVudCxcbiAgUmVhY3ROb2RlLFxuICBjcmVhdGVDb250ZXh0LFxuICB1c2VDb250ZXh0LFxuICB1c2VFZmZlY3QsXG4gIHVzZU1lbW8sXG4gIHVzZVN0YXRlLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJy4uL2hvb2tzL3VzZVRoZW1lJztcbmltcG9ydCB7IGRlZmF1bHRzIH0gZnJvbSAnLi4vbWlzYy9kZWZhdWx0cyc7XG5pbXBvcnQgeyBncmF5IH0gZnJvbSAnLi4vdGhlbWUvZGVmYXVsdFRoZW1lL2RlZmF1bHRDbGFzc2VzJztcbmltcG9ydCB7IHVzZUNzc1ZhcmlhYmxlcyB9IGZyb20gJy4uL3RoZW1lL3VzZUNzc1ZhcmlhYmxlcyc7XG5pbXBvcnQgeyBEYXRlSW5wdXQgfSBmcm9tICcuL2RhdGVJbnB1dCc7XG5pbXBvcnQgeyBUZXh0IH0gZnJvbSAnLi90ZXh0JztcbmltcG9ydCB7IEludGVycG9sYXRpb24sIFRoZW1lIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuXG5leHBvcnQgdHlwZSBEYXRlUmFuZ2UgPSB7IG1pbjogRGF0ZTsgbWF4OiBEYXRlIH07XG5cbmV4cG9ydCB0eXBlIERhdGVQaWNrZXJRdWlja09wdGlvbiA9XG4gIHwgJ3RvZGF5J1xuICB8ICd0aGlzV2VlaydcbiAgfCAndGhpc01vbnRoJ1xuICB8ICd0aGlzWWVhcidcbiAgfCAnbGFzdFNldmVuRGF5cydcbiAgfCAnbGFzdFRoaXJ0eURheXMnXG4gIHwgeyBsYWJlbDogUmVhY3ROb2RlOyB2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8ICgoKSA9PiBEYXRlIHwgRGF0ZVJhbmdlKSB9XG4gIHwgKChvbkNoYW5nZTogKHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCkgPT4gdm9pZCkgPT4gUmVhY3ROb2RlKTtcblxuZXhwb3J0IHR5cGUgRGF0ZVBpY2tlclByb3BzID0ge1xuICAvKiogQ3VycmVudGx5IHNlbGVjdGVkIGRheSBvciByYW5nZSBvZiBkYXlzLiAqL1xuICB2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGw7XG4gIC8qKiBDYWxsYmFjayBmb3Igd2hlbiB0aGUgZGF5IChyYW5nZSkgY2hhbmdlcy4gKi9cbiAgb25DaGFuZ2U6ICh2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpID0+IHZvaWQ7XG4gIC8qKiBDdXJyZW50bHkgdmlzaWJsZSBkYXRlLiAqL1xuICBkYXRlSW5WaWV3PzogRGF0ZTtcbiAgLyoqIENhbGxiYWNrIGZvciB3aGVuIHRoZSBjdXJyZW50bHkgdmlzaWJsZSBkYXRlIGNoYW5nZXMuICovXG4gIG9uRGF0ZUluVmlld0NoYW5nZT86ICh2YWx1ZTogRGF0ZSkgPT4gdm9pZDtcbiAgLyoqIElmIGVuYWJsZWQsIHJhbmdlcyBjYW4gYmUgc2VsZWN0ZWQuICovXG4gIHJhbmdlU2VsZWN0PzogYm9vbGVhbjtcbiAgLyoqIFdoaWNoIGxvY2FsZSB0byB1c2UgdG8gcmVuZGVyIHRoZSBjYWxlbmRhci4gKi9cbiAgbG9jYWxlPzogc3RyaW5nO1xuICAvKiogV2hpY2ggZGF5IG9mIHRoZSB3ZWVrIHNob3VsZCBiZSBpbiB0aGUgZmlyc3QgY29sdW1uLiAoMD1TdW5kYXksIDE9TW9uZGF5LCAuLi4pXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIGZpcnN0RGF5T2ZXZWVrPzogMCB8IDEgfCAyIHwgMyB8IDQgfCA1IHwgNjtcbiAgLyoqIFdoaWNoIG1vbnRoIHRvIHNob3cgaW5pdGlhbGx5ICovXG4gIGRlZmF1bHREYXRlSW5WaWV3PzogRGF0ZTtcbiAgLyoqIFNob3cgYnV0dG9ucyB0byBxdWlja2x5IHNlbGVjdCBzdWdnZXN0ZWQgZGF0ZXMgb3IgZGF0ZSByYW5nZXMgKi9cbiAgcXVpY2tPcHRpb25zPzogRGF0ZVBpY2tlclF1aWNrT3B0aW9uW107XG4gIC8qKiBNaW5pbXVtIHNlbGVjdGFibGUgZGF0ZSAqL1xuICAvKiogRGF0ZSByYW5nZXMgdGhhdCBhcmUgdmlzdWFsbHkgbWFya2VkIGFzIGJsb2NrZWQgKi9cbiAgYmxvY2tlZFJhbmdlcz86IERhdGVSYW5nZVtdO1xuICBtaW5EYXRlPzogRGF0ZTtcbiAgLyoqIE1heGltdW0gc2VsZWN0YWJsZSBkYXRlICovXG4gIG1heERhdGU/OiBEYXRlO1xuICAvKiogV2hldGhlciB0byBzaG93IHRoZSBjYWxlbmRhciB3ZWVrIGluIHRoZSBmaXJzdCBjb2x1bW4gKi9cbiAgc2hvd0NhbGVuZGFyV2Vlaz86IGJvb2xlYW47XG59O1xuXG5jb25zdCBEYXRlUGlja2VyQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8UGFydGlhbDxPbWl0PERhdGVQaWNrZXJQcm9wcywgJ3ZhbHVlJyB8ICdvbkNoYW5nZSc+Pj4oe30pO1xuXG5leHBvcnQgZnVuY3Rpb24gRGF0ZVBpY2tlclByb3ZpZGVyKHtcbiAgY2hpbGRyZW4sXG4gIC4uLnByb3BzXG59OiBQYXJ0aWFsPE9taXQ8RGF0ZVBpY2tlclByb3BzLCAndmFsdWUnIHwgJ29uQ2hhbmdlJz4+ICYgeyBjaGlsZHJlbj86IFJlYWN0Tm9kZSB9KSB7XG4gIGNvbnN0IHZhbHVlID0gdXNlTWVtbygoKSA9PiBwcm9wcywgW0pTT04uc3RyaW5naWZ5KHByb3BzKV0pO1xuXG4gIHJldHVybiA8RGF0ZVBpY2tlckNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3ZhbHVlfT57Y2hpbGRyZW59PC9EYXRlUGlja2VyQ29udGV4dC5Qcm92aWRlcj47XG59XG5cbmNvbnN0IHdlZWtEYXlzID0gWzAsIDEsIDIsIDMsIDQsIDUsIDZdIGFzIGNvbnN0O1xuXG4vKiogUm91bmRzIGEgZGF0ZSBkb3duIHRvIHRoZSBzdGFydCBvZiB0aGUgZGF5LiAqL1xuZXhwb3J0IGNvbnN0IHN0YXJ0T2ZEYXkgPSAoZDogRGF0ZSkgPT4gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCBkLmdldE1vbnRoKCksIGQuZ2V0RGF0ZSgpKTtcblxuLyoqIFJvdW5kcyBhIGRhdGUgdXAgdG8gdGhlIGVuZCBvZiB0aGUgZGF5LiAqL1xuZXhwb3J0IGNvbnN0IGVuZE9mRGF5ID0gKGQ6IERhdGUpID0+XG4gIG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgZC5nZXRNb250aCgpLCBkLmdldERhdGUoKSArIDEsIDAsIDAsIDAsIC0xKTtcblxuZXhwb3J0IGNvbnN0IGxhc3REYXlzID0gKGRheXM6IG51bWJlcik6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG4gIG1pbi5zZXREYXRlKG1pbi5nZXREYXRlKCkgLSBkYXlzICsgMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG5vdyksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdG9kYXkgPSAoKSA9PiBsYXN0RGF5cygxKTtcblxuZXhwb3J0IGNvbnN0IHRoaXNXZWVrID0gKGRlbHRhID0gMCwgZmlyc3REYXlPZldlZWsgPSAxKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcblxuICBsZXQgZGlmZiA9IG1pbi5nZXREYXkoKSAtIGZpcnN0RGF5T2ZXZWVrO1xuICBpZiAoZGlmZiA8IDApIHtcbiAgICBkaWZmICs9IDc7XG4gIH1cbiAgbWluLnNldERhdGUobWluLmdldERhdGUoKSAtIGRpZmYgKyBkZWx0YSAqIDcpO1xuXG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXREYXRlKG1heC5nZXREYXRlKCkgKyA2KTtcblxuICByZXR1cm4ge1xuICAgIG1pbjogc3RhcnRPZkRheShtaW4pLFxuICAgIG1heDogZW5kT2ZEYXkobWF4KSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCB0aGlzTW9udGggPSAoZGVsdGEgPSAwKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcbiAgbWluLnNldERhdGUoMSk7XG4gIG1pbi5zZXRNb250aChtaW4uZ2V0TW9udGgoKSArIGRlbHRhKTtcbiAgY29uc3QgbWF4ID0gbmV3IERhdGUobWluKTtcbiAgbWF4LnNldE1vbnRoKG1heC5nZXRNb250aCgpICsgMSk7XG4gIG1heC5zZXREYXRlKG1heC5nZXREYXRlKCkgLSAxKTtcblxuICByZXR1cm4ge1xuICAgIG1pbjogc3RhcnRPZkRheShtaW4pLFxuICAgIG1heDogZW5kT2ZEYXkobWF4KSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCB0aGlzWWVhciA9IChkZWx0YSA9IDApOiBEYXRlUmFuZ2UgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBtaW4gPSBuZXcgRGF0ZShub3cpO1xuICBtaW4uc2V0RGF0ZSgxKTtcbiAgbWluLnNldE1vbnRoKDApO1xuICBtaW4uc2V0RnVsbFllYXIobWluLmdldEZ1bGxZZWFyKCkgKyBkZWx0YSk7XG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXRGdWxsWWVhcihtYXguZ2V0RnVsbFllYXIoKSArIDEpO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpIC0gMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5jb25zdCBNU19QRVJfREFZID0gMTAwMCAqIDYwICogNjAgKiAyNDtcbmV4cG9ydCBjb25zdCBnZXRDYWxlbmRhcldlZWsgPSAoZGF0ZTogRGF0ZSk6IG51bWJlciA9PiB7XG4gIC8vIElTTyA4NjAxOiBXZWVrIDEgaXMgdGhlIHdlZWsgd2l0aCB0aGUgZmlyc3QgVGh1cnNkYXkgb2YgdGhlIHllYXIuXG4gIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcblxuICBjb25zdCBlbmRPZldlZWsgPSBuZXcgRGF0ZShcbiAgICBkYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgZGF0ZS5nZXRNb250aCgpLFxuICAgIGRhdGUuZ2V0RGF0ZSgpICsgKDcgLSAoZGF0ZS5nZXREYXkoKSB8fCA3KSksXG4gICk7XG5cbiAgY29uc3QgeWVhciA9IGVuZE9mV2Vlay5nZXRGdWxsWWVhcigpO1xuICBjb25zdCBmaXJzdERheU9mWWVhciA9IG5ldyBEYXRlKHllYXIsIDAsIDEpO1xuICBjb25zdCBkYXlPZlllYXIgPVxuICAgIE1hdGguZmxvb3IoXG4gICAgICAoZW5kT2ZXZWVrLmdldFRpbWUoKSAtXG4gICAgICAgIGZpcnN0RGF5T2ZZZWFyLmdldFRpbWUoKSArXG4gICAgICAgIChlbmRPZldlZWsuZ2V0VGltZXpvbmVPZmZzZXQoKSAtIGZpcnN0RGF5T2ZZZWFyLmdldFRpbWV6b25lT2Zmc2V0KCkpKSAvXG4gICAgICAgIE1TX1BFUl9EQVksXG4gICAgKSArIDE7XG4gIGNvbnN0IHdlZWtPZlllYXIgPSBNYXRoLmZsb29yKCgzICsgZGF5T2ZZZWFyKSAvIDcpO1xuXG4gIGlmICh3ZWVrT2ZZZWFyID09PSAwKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGdldENhbGVuZGFyV2VlayhcbiAgICAgICAgbmV3IERhdGUoZW5kT2ZXZWVrLmdldEZ1bGxZZWFyKCksIGVuZE9mV2Vlay5nZXRNb250aCgpLCBlbmRPZldlZWsuZ2V0RGF0ZSgpIC0gNyksXG4gICAgICApICsgMVxuICAgICk7XG4gIH1cblxuICByZXR1cm4gd2Vla09mWWVhcjtcbn07XG5cbmV4cG9ydCBjb25zdCBjb21tb25RdWlja09wdGlvbnMgPSB7XG4gIHRvZGF5OiB7IGxhYmVsOiA8VGV4dCBpZD1cInRvZGF5XCIgLz4sIHZhbHVlOiB0b2RheSB9LFxuICB0aGlzV2VlazogeyBsYWJlbDogPFRleHQgaWQ9XCJ0aGlzV2Vla1wiIC8+LCB2YWx1ZTogKHByb3BzKSA9PiB0aGlzV2VlaygwLCBwcm9wcy5maXJzdERheU9mV2VlaykgfSxcbiAgdGhpc01vbnRoOiB7IGxhYmVsOiA8VGV4dCBpZD1cInRoaXNNb250aFwiIC8+LCB2YWx1ZTogKCkgPT4gdGhpc01vbnRoKCkgfSxcbiAgdGhpc1llYXI6IHsgbGFiZWw6IDxUZXh0IGlkPVwidGhpc1llYXJcIiAvPiwgdmFsdWU6ICgpID0+IHRoaXNZZWFyKCkgfSxcbiAgbGFzdFNldmVuRGF5czogeyBsYWJlbDogPFRleHQgaWQ9XCJsYXN0U2V2ZW5EYXlzXCIgLz4sIHZhbHVlOiAoKSA9PiBsYXN0RGF5cyg3KSB9LFxuICBsYXN0VGhpcnR5RGF5czogeyBsYWJlbDogPFRleHQgaWQ9XCJsYXN0VGhpcnR5RGF5c1wiIC8+LCB2YWx1ZTogKCkgPT4gbGFzdERheXMoMzApIH0sXG59IHNhdGlzZmllcyBSZWNvcmQ8XG4gIERhdGVQaWNrZXJRdWlja09wdGlvbiAmIHN0cmluZyxcbiAgeyBsYWJlbDogUmVhY3ROb2RlOyB2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8ICgocHJvcHM6IERhdGVQaWNrZXJQcm9wcykgPT4gRGF0ZSB8IERhdGVSYW5nZSkgfVxuPjtcblxuLyoqIFJldHVybnMgd2hldGhlciB0d28gZGF0ZXMgYW5kL29yIGRhdGUgcmFuZ2VzIGludGVyc2VjdC4gSW50ZXJzZWN0aW9uIGlzIGNvbnNpZGVyZWQgcGVyIGRheS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkYXRlSW50ZXJzZWN0KFxuICBhOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgYjogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwgfCB1bmRlZmluZWQsXG4pIHtcbiAgaWYgKGEgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgYSA9IHsgbWluOiBhLCBtYXg6IGEgfTtcbiAgfVxuICBpZiAoYiBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICBiID0geyBtaW46IGIsIG1heDogYiB9O1xuICB9XG5cbiAgaWYgKCFhPy5taW4gfHwgIWEubWF4IHx8ICFiPy5taW4gfHwgIWIubWF4KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuICEoZW5kT2ZEYXkoYS5tYXgpIDwgc3RhcnRPZkRheShiLm1pbikgfHwgc3RhcnRPZkRheShhLm1pbikgPiBlbmRPZkRheShiLm1heCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUNsYW1wKGRhdGU6IERhdGUsIG1pbj86IERhdGUsIG1heD86IERhdGUpIHtcbiAgaWYgKG1pbiAmJiBkYXRlIDwgbWluKSB7XG4gICAgcmV0dXJuIG1pbjtcbiAgfVxuXG4gIGlmIChtYXggJiYgZGF0ZSA+IG1heCkge1xuICAgIHJldHVybiBtYXg7XG4gIH1cblxuICByZXR1cm4gZGF0ZTtcbn1cblxuZnVuY3Rpb24gZ2V0VmFsdWVGb3JDb21wYXJpc29uKHZhbHVlPzogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpIHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgcmV0dXJuIHZhbHVlLmdldFRpbWUoKTtcbiAgfVxuICByZXR1cm4gYCR7dmFsdWUubWluPy5nZXRUaW1lKCl9LSR7dmFsdWUubWF4Py5nZXRUaW1lKCl9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVQaWNrZXIocHJvcHM6IERhdGVQaWNrZXJQcm9wcykge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChEYXRlUGlja2VyQ29udGV4dCk7XG5cbiAgY29uc3Qge1xuICAgIHZhbHVlLFxuICAgIHJhbmdlU2VsZWN0LFxuICAgIGxvY2FsZSxcbiAgICBmaXJzdERheU9mV2VlayA9IDEsXG4gICAgZGVmYXVsdERhdGVJblZpZXcsXG4gICAgcXVpY2tPcHRpb25zID0gWyd0b2RheScsICd0aGlzV2VlayddLFxuICAgIG1pbkRhdGUsXG4gICAgbWF4RGF0ZSxcbiAgICBzaG93Q2FsZW5kYXJXZWVrLFxuICAgIGJsb2NrZWRSYW5nZXMgPSBbXSxcbiAgfSA9IGRlZmF1bHRzPERhdGVQaWNrZXJQcm9wcz4ocHJvcHMsIGNvbnRleHQpO1xuXG4gIGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCkge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIHZhbHVlID0gZGF0ZUNsYW1wKHZhbHVlLCBtaW5EYXRlLCBtYXhEYXRlKTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICB2YWx1ZSA9IHtcbiAgICAgICAgbWluOiBkYXRlQ2xhbXAodmFsdWUubWluLCBtaW5EYXRlLCBtYXhEYXRlKSxcbiAgICAgICAgbWF4OiBkYXRlQ2xhbXAodmFsdWUubWF4LCBtaW5EYXRlLCBtYXhEYXRlKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcHJvcHMub25DaGFuZ2UodmFsdWUpO1xuICB9XG5cbiAgY29uc3QgQnV0dG9uID0gdXNlVGhlbWUoKHQpID0+IHQuY29tcG9uZW50cy5CdXR0b24pO1xuICBjb25zdCBJY29uQnV0dG9uID0gdXNlVGhlbWUoKHQpID0+IHQuY29tcG9uZW50cy5JY29uQnV0dG9uKTtcbiAgY29uc3QgQ2hldnJvblJpZ2h0ID0gdXNlVGhlbWUoKHQpID0+IHQuaWNvbnMuQ2hldnJvblJpZ2h0KTtcbiAgY29uc3QgY3NzVmFyaWFibGVzID0gdXNlQ3NzVmFyaWFibGVzKCk7XG4gIGZ1bmN0aW9uIGdldERheUNzc1N0eWxlcyh7XG4gICAgZGlzYWJsZWQsXG4gICAgcHJldk1vbnRoLFxuICAgIG5leHRNb250aCxcbiAgICB0b2RheSxcbiAgICBibG9ja2VkLFxuICAgIHNlbGVjdGVkLFxuICAgIHByZVNlbGVjdGVkLFxuICB9OiB7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIHByZXZNb250aD86IGJvb2xlYW47XG4gICAgbmV4dE1vbnRoPzogYm9vbGVhbjtcbiAgICB0b2RheT86IGJvb2xlYW47XG4gICAgYmxvY2tlZD86IGJvb2xlYW47XG4gICAgc2VsZWN0ZWQ/OiBib29sZWFuO1xuICAgIHByZVNlbGVjdGVkPzogYm9vbGVhbjtcbiAgfSk6IEludGVycG9sYXRpb248VGhlbWU+IHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgIGN1cnNvcjogZGlzYWJsZWQgPyB1bmRlZmluZWQgOiAncG9pbnRlcicsXG4gICAgICAgIGZvbnQ6ICdpbmhlcml0JyxcbiAgICAgIH0sXG4gICAgICAocHJldk1vbnRoIHx8IG5leHRNb250aCkgJiYge1xuICAgICAgICBjb2xvcjogZ3JheSxcbiAgICAgIH0sXG4gICAgICB0b2RheSAmJiB7XG4gICAgICAgIG91dGxpbmU6ICcxcHggc29saWQgdmFyKC0tc2Vjb25kYXJ5TWFpbiknLFxuICAgICAgfSxcbiAgICAgIGJsb2NrZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tYmxvY2tlZE1haW4pJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1ibG9ja2VkQ29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgICAgc2VsZWN0ZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tcHJpbWFyeU1haW4pJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1wcmltYXJ5Q29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgICAgYmxvY2tlZCAmJlxuICAgICAgICBzZWxlY3RlZCAmJiB7XG4gICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgICAgJzo6YmVmb3JlJzoge1xuICAgICAgICAgICAgY29udGVudDogJ1wiXCInLFxuICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICByaWdodDogMCxcbiAgICAgICAgICAgIGJvdHRvbTogMCxcbiAgICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tYmxvY2tlZE1haW4pJyxcbiAgICAgICAgICAgIGNsaXBQYXRoOiAncG9seWdvbigwIDAsIDAgNTAlLCA1MCUgMCknLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBwcmVTZWxlY3RlZCAmJiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1wcmltYXJ5TGlnaHQpJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1wcmltYXJ5Q29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICBjb25zdCBtb3VudFRpbWUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKCksIFtdKTtcbiAgY29uc3QgW2RpcnR5LCBzZXREaXJ0eV0gPSB1c2VTdGF0ZTxQYXJ0aWFsPERhdGVSYW5nZT4+KCk7XG4gIGNvbnN0IFtob3ZlcmVkLCBzZXRIb3ZlcmVkXSA9IHVzZVN0YXRlPERhdGVSYW5nZT4oKTtcbiAgY29uc3QgW2RhdGVJblZpZXdMb2NhbCwgc2V0RGF0ZUluVmlld0xvY2FsXSA9IHVzZVN0YXRlPERhdGU+KGRlZmF1bHREYXRlSW5WaWV3ID8/IG1vdW50VGltZSk7XG4gIGNvbnN0IGRhdGVJblZpZXcgPSBwcm9wcy5kYXRlSW5WaWV3ID8/IGRhdGVJblZpZXdMb2NhbDtcblxuICBmdW5jdGlvbiBzZXREYXRlSW5WaWV3KGRhdGU6IERhdGUpIHtcbiAgICBzZXREYXRlSW5WaWV3TG9jYWwoZGF0ZSk7XG4gICAgcHJvcHMub25EYXRlSW5WaWV3Q2hhbmdlPy4oZGF0ZSk7XG4gIH1cblxuICBjb25zdCBtaW4gPSBkaXJ0eSA/IGRpcnR5Lm1pbiA6IHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IHZhbHVlIDogdmFsdWU/Lm1pbjtcbiAgY29uc3QgbWF4ID0gZGlydHkgPyBkaXJ0eS5tYXggOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlPy5tYXg7XG5cbiAgY29uc3QgcmVzb2x2ZWRRdWlja09wdGlvbnMgPSBbLi4ucXVpY2tPcHRpb25zLCB7IGxhYmVsOiA8VGV4dCBpZD1cInJlc2V0XCIgLz4sIHZhbHVlOiBudWxsIH1dLm1hcChcbiAgICAob3B0aW9uLCBpbmRleCkgPT4ge1xuICAgICAgaWYgKG9wdGlvbiBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgICAgIHJldHVybiBvcHRpb24oKHZhbHVlKSA9PiB7XG4gICAgICAgICAgc2V0RGlydHkodW5kZWZpbmVkKTtcbiAgICAgICAgICBvbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IGxhYmVsLCB2YWx1ZSB9ID0gdHlwZW9mIG9wdGlvbiA9PT0gJ3N0cmluZycgPyBjb21tb25RdWlja09wdGlvbnNbb3B0aW9uXSA6IG9wdGlvbjtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG5cbiAgICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgICAgICAgICAgIG9uQ2hhbmdlKHZhbHVlKHByb3BzKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBvbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtsYWJlbH1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApO1xuICAgIH0sXG4gICk7XG5cbiAgY29uc3QgeyBjYWxlbmRhcnMsIGdldEJhY2tQcm9wcywgZ2V0Rm9yd2FyZFByb3BzLCBnZXREYXRlUHJvcHMgfSA9IHVzZURheXplZCh7XG4gICAgb25EYXRlU2VsZWN0ZWQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICBmaXJzdERheU9mV2VlayxcbiAgICBzaG93T3V0c2lkZURheXM6IHRydWUsXG4gICAgZGF0ZTogZGF0ZUluVmlldyxcbiAgICBvbk9mZnNldENoYW5nZWQ6IChvZmZzZXQpID0+XG4gICAgICBzZXREYXRlSW5WaWV3KG5ldyBEYXRlKGRhdGVJblZpZXcuZ2V0RnVsbFllYXIoKSwgZGF0ZUluVmlldy5nZXRNb250aCgpICsgb2Zmc2V0KSksXG4gICAgb2Zmc2V0OiAwLFxuICAgIG1pbkRhdGUsXG4gICAgbWF4RGF0ZSxcbiAgfSk7XG4gIGNvbnN0IG5vdyA9IHVzZU1lbW8oKCkgPT4gc3RhcnRPZkRheShuZXcgRGF0ZSgpKSwgW10pO1xuXG4gIGNvbnN0IGZvcm1hdFdlZWtkYXkgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IGZvcm1hdCB9ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IHdlZWtkYXk6ICdzaG9ydCcgfSk7XG4gICAgcmV0dXJuICh3ZWVrRGF5OiBudW1iZXIpID0+XG4gICAgICBmb3JtYXQobmV3IERhdGUoRGF0ZS5VVEMoMjAyMSwgNywgKCh3ZWVrRGF5ICsgZmlyc3REYXlPZldlZWspICUgNykgKyAxKSkpO1xuICB9LCBbbG9jYWxlLCBmaXJzdERheU9mV2Vla10pO1xuXG4gIHVzZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgc2V0RGF0ZUluVmlldyhcbiAgICAgICAgdmFsdWUgPT09IG51bGwgPyBkZWZhdWx0RGF0ZUluVmlldyA/PyBtb3VudFRpbWUgOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlLm1heCxcbiAgICAgICksXG4gICAgW2dldFZhbHVlRm9yQ29tcGFyaXNvbih2YWx1ZSksIGdldFZhbHVlRm9yQ29tcGFyaXNvbihkZWZhdWx0RGF0ZUluVmlldyksIG1vdW50VGltZV0sXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXJhbmdlU2VsZWN0KSB7XG4gICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuICAgIH1cbiAgfSwgW3JhbmdlU2VsZWN0XSk7XG5cbiAgZnVuY3Rpb24gc2V0KG1pbj86IERhdGUsIG1heD86IERhdGUsIGVkaXQ/OiAnbWluJyB8ICdtYXgnKSB7XG4gICAgaWYgKCFyYW5nZVNlbGVjdCkge1xuICAgICAgb25DaGFuZ2UobWluID8/IG51bGwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChtaW4gJiYgbWF4ICYmIG1pbiA+IG1heCkge1xuICAgICAgaWYgKGVkaXQgPT09ICdtaW4nKSB7XG4gICAgICAgIG1heCA9IG1pbjtcbiAgICAgIH0gZWxzZSBpZiAoZWRpdCA9PT0gJ21heCcpIHtcbiAgICAgICAgbWluID0gbWF4O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgW21pbiwgbWF4XSA9IFttYXgsIG1pbl07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFtaW4gPT09ICFtYXgpIHtcbiAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgICBvbkNoYW5nZShtaW4gJiYgbWF4ID8geyBtaW4sIG1heDogZW5kT2ZEYXkobWF4KSB9IDogbnVsbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldERpcnR5KHsgbWluLCBtYXggfSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZm9ybWF0TW9udGggPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IGZvcm1hdCB9ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IG1vbnRoOiAnbG9uZycgfSk7XG4gICAgcmV0dXJuIChtb250aDogbnVtYmVyKSA9PiBmb3JtYXQobmV3IERhdGUoMjAyMSwgbW9udGgpKTtcbiAgfSwgW2xvY2FsZV0pO1xuXG4gIGNvbnN0IGZvcm1hdFllYXIgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IGZvcm1hdCB9ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IHllYXI6ICdudW1lcmljJyB9KTtcbiAgICByZXR1cm4gKHllYXI6IG51bWJlcikgPT4gZm9ybWF0KG5ldyBEYXRlKHllYXIsIDAsIDEpKTtcbiAgfSwgW2xvY2FsZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjc3M9e2Nzc1ZhcmlhYmxlc30+XG4gICAgICA8ZGl2XG4gICAgICAgIGNzcz17e1xuICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICBhbGlnbkl0ZW1zOiAnYmFzZWxpbmUnLFxuICAgICAgICAgIGdhcDogJ3ZhcigtLXNwYWNpbmcpJyxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPERhdGVJbnB1dFxuICAgICAgICAgIHZhbHVlPXttaW4gPz8gbnVsbH1cbiAgICAgICAgICBvbkNoYW5nZT17KGRhdGUpID0+IHNldChkYXRlID8/IHVuZGVmaW5lZCwgbWF4LCAnbWluJyl9XG4gICAgICAgICAgbG9jYWxlPXtsb2NhbGV9XG4gICAgICAgIC8+XG5cbiAgICAgICAge3JhbmdlU2VsZWN0ICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgeycgLSAnfVxuICAgICAgICAgICAgPERhdGVJbnB1dFxuICAgICAgICAgICAgICB2YWx1ZT17bWF4ID8/IG51bGx9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZGF0ZSkgPT4gc2V0KG1pbiwgZGF0ZSA/PyB1bmRlZmluZWQsICdtYXgnKX1cbiAgICAgICAgICAgICAgbG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvPlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIHtjYWxlbmRhcnMubWFwKCh7IG1vbnRoLCB5ZWFyLCB3ZWVrcyB9KSA9PiAoXG4gICAgICAgIDxkaXYga2V5PXtgJHttb250aH0ke3llYXJ9YH0gY3NzPXt7IGRpc3BsYXk6ICdncmlkJyB9fT5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgbWFyZ2luOiAnY2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpIDAnLFxuICAgICAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgICAgIGdyaWRBdXRvRmxvdzogJ2NvbHVtbicsXG4gICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnc3BhY2UtYmV0d2VlbicsXG4gICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8SWNvbkJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgey4uLmdldEJhY2tQcm9wcyh7IGNhbGVuZGFycyB9KX0+XG4gICAgICAgICAgICAgIDxDaGV2cm9uUmlnaHQgY3NzPXt7IHRyYW5zZm9ybTogJ3JvdGF0ZTNkKDAsIDAsIDEsIDE4MGRlZyknIH19IC8+XG4gICAgICAgICAgICA8L0ljb25CdXR0b24+XG5cbiAgICAgICAgICAgIDxkaXYgY3NzPXt7IGRpc3BsYXk6ICdmbGV4JyB9fT5cbiAgICAgICAgICAgICAge2Zvcm1hdE1vbnRoKG1vbnRoKX0ge2Zvcm1hdFllYXIoeWVhcil9XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPEljb25CdXR0b24gdHlwZT1cImJ1dHRvblwiIHsuLi5nZXRGb3J3YXJkUHJvcHMoeyBjYWxlbmRhcnMgfSl9PlxuICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0IC8+XG4gICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAganVzdGlmeVNlbGY6ICdjZW50ZXInLFxuICAgICAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgICAgIGdyaWRUZW1wbGF0ZUNvbHVtbnM6ICdyZXBlYXQoOCwgbWF4LWNvbnRlbnQpJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3Nob3dDYWxlbmRhcldlZWsgPyAoXG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgICAgYm9yZGVyUmlnaHQ6IGAxcHggc29saWQgJHtncmF5fWAsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxUZXh0IGlkPVwiY2FsZW5kYXJXZWVrXCIgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8ZGl2IC8+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7d2Vla0RheXMubWFwKChfdiwgd2Vla0RheSkgPT4gKFxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAga2V5PXt3ZWVrRGF5fVxuICAgICAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICAgICAganVzdGlmeVNlbGY6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtmb3JtYXRXZWVrZGF5KHdlZWtEYXkpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkpfVxuXG4gICAgICAgICAgICB7d2Vla3MubWFwKCh3ZWVrLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrU3RhcnQgPSB3ZWVrWzBdIGFzIERhdGVPYmo7XG4gICAgICAgICAgICAgIGNvbnN0IHdlZWtFbmQgPSB3ZWVrWzZdIGFzIERhdGVPYmo7XG4gICAgICAgICAgICAgIGNvbnN0IHdlZWtEaXNhYmxlZCA9XG4gICAgICAgICAgICAgICAgIXJhbmdlU2VsZWN0IHx8XG4gICAgICAgICAgICAgICAgKG1pbkRhdGUgJiYgd2Vla0VuZC5kYXRlIDwgbWluRGF0ZSkgfHxcbiAgICAgICAgICAgICAgICAobWF4RGF0ZSAmJiB3ZWVrU3RhcnQuZGF0ZSA+IG1heERhdGUpO1xuXG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPEZyYWdtZW50IGtleT17aW5kZXh9PlxuICAgICAgICAgICAgICAgICAge3Nob3dDYWxlbmRhcldlZWsgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiB3ZWVrRGlzYWJsZWQgPyB1bmRlZmluZWQgOiAncG9pbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb250OiAnaW5oZXJpdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSaWdodDogYDFweCBzb2xpZCAke2dyYXl9YCxcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3ZWVrRGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtaW4gPSBtaW5EYXRlICYmIHdlZWtTdGFydC5kYXRlIDwgbWluRGF0ZSA/IG1pbkRhdGUgOiB3ZWVrU3RhcnQuZGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1heCA9IG1heERhdGUgJiYgd2Vla0VuZC5kYXRlID4gbWF4RGF0ZSA/IG1heERhdGUgOiB3ZWVrRW5kLmRhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXQobWluLCBtYXgpO1xuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyT3Zlcj17KCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICF3ZWVrRGlzYWJsZWQgJiYgc2V0SG92ZXJlZCh7IG1pbjogd2Vla1N0YXJ0LmRhdGUsIG1heDogd2Vla0VuZC5kYXRlIH0pXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlck91dD17KCkgPT4gIXdlZWtEaXNhYmxlZCAmJiBzZXRIb3ZlcmVkKHVuZGVmaW5lZCl9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7Z2V0Q2FsZW5kYXJXZWVrKHdlZWtFbmQuZGF0ZSl9XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAvPlxuICAgICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgICAge3dlZWsubWFwKChkYXRlT2JqZWN0LCBkYXlJbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWRhdGVPYmplY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPGRpdiBrZXk9e2RheUluZGV4fSAvPjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgcHJldk1vbnRoLCBuZXh0TW9udGgsIGRhdGUgfSA9IGRhdGVPYmplY3Q7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRvZGF5ID0gc3RhcnRPZkRheShkYXRlKS5nZXRUaW1lKCkgPT09IG5vdy5nZXRUaW1lKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpc2FibGVkID0gKG1pbkRhdGUgJiYgZGF0ZSA8IG1pbkRhdGUpIHx8IChtYXhEYXRlICYmIGRhdGUgPiBtYXhEYXRlKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZCA9XG4gICAgICAgICAgICAgICAgICAgICAgZGF0ZS5nZXRUaW1lKCkgPT09IG1pbj8uZ2V0VGltZSgpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgKG1pbiAmJiBtYXggJiYgZGF0ZUludGVyc2VjdChkYXRlLCB7IG1pbiwgbWF4IH0pKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJlU2VsZWN0ZWQgPVxuICAgICAgICAgICAgICAgICAgICAgICFzZWxlY3RlZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICFkaXNhYmxlZCAmJlxuICAgICAgICAgICAgICAgICAgICAgIChkYXRlSW50ZXJzZWN0KGRhdGUsIGhvdmVyZWQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAobWluICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICFtYXggJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJlZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlSW50ZXJzZWN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluIDw9IGhvdmVyZWQubWluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHsgbWluLCBtYXg6IGhvdmVyZWQubWluIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogeyBtaW46IGhvdmVyZWQubWF4LCBtYXg6IG1pbiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICApKSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrZWQgPSBibG9ja2VkUmFuZ2VzLnNvbWUoKHJhbmdlKSA9PiBkYXRlSW50ZXJzZWN0KGRhdGUsIHJhbmdlKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleT17YCR7aW5kZXh9LSR7ZGF5SW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Z2V0RGF5Q3NzU3R5bGVzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZNb250aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dE1vbnRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RheSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByZVNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICB7Li4uZ2V0RGF0ZVByb3BzKHsgZGF0ZU9iajogZGF0ZU9iamVjdCB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpcnR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1pbikgc2V0KG1pbiwgZGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBzZXQoZGF0ZSwgbWF4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQoZGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJPdmVyPXsoKSA9PiBzZXRIb3ZlcmVkKHsgbWluOiBkYXRlLCBtYXg6IGRhdGUgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJPdXQ9eygpID0+IHNldEhvdmVyZWQodW5kZWZpbmVkKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7ZGF0ZS5nZXREYXRlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKSl9XG5cbiAgICAgIDxkaXZcbiAgICAgICAgY3NzPXt7XG4gICAgICAgICAgbWFyZ2luVG9wOiAndmFyKC0tc3BhY2luZyknLFxuICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAge3Jlc29sdmVkUXVpY2tPcHRpb25zfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iXX0= */",
940
950
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__$d
941
951
  };
942
952
  var _ref2$4 = process.env.NODE_ENV === "production" ? {
@@ -945,7 +955,7 @@ var _ref2$4 = process.env.NODE_ENV === "production" ? {
945
955
  } : {
946
956
  name: "7ssa71-DatePicker",
947
957
  styles: "display:grid;label:DatePicker;",
948
- map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2RhdGVQaWNrZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXlicUMiLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvc2NodW1tYXItdGFibGUvc2NodW1tYXItdGFibGUvc3JjL2NvbXBvbmVudHMvZGF0ZVBpY2tlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlT2JqLCB1c2VEYXl6ZWQgfSBmcm9tICdkYXl6ZWQnO1xuaW1wb3J0IHtcbiAgRnJhZ21lbnQsXG4gIFJlYWN0Tm9kZSxcbiAgY3JlYXRlQ29udGV4dCxcbiAgdXNlQ29udGV4dCxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICcuLi9ob29rcy91c2VUaGVtZSc7XG5pbXBvcnQgeyBkZWZhdWx0cyB9IGZyb20gJy4uL21pc2MvZGVmYXVsdHMnO1xuaW1wb3J0IHsgZ3JheSB9IGZyb20gJy4uL3RoZW1lL2RlZmF1bHRUaGVtZS9kZWZhdWx0Q2xhc3Nlcyc7XG5pbXBvcnQgeyB1c2VDc3NWYXJpYWJsZXMgfSBmcm9tICcuLi90aGVtZS91c2VDc3NWYXJpYWJsZXMnO1xuaW1wb3J0IHsgRGF0ZUlucHV0IH0gZnJvbSAnLi9kYXRlSW5wdXQnO1xuaW1wb3J0IHsgVGV4dCB9IGZyb20gJy4vdGV4dCc7XG5pbXBvcnQgeyBJbnRlcnBvbGF0aW9uLCBUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuZXhwb3J0IHR5cGUgRGF0ZVJhbmdlID0geyBtaW46IERhdGU7IG1heDogRGF0ZSB9O1xuXG5leHBvcnQgdHlwZSBEYXRlUGlja2VyUXVpY2tPcHRpb24gPVxuICB8ICd0b2RheSdcbiAgfCAndGhpc1dlZWsnXG4gIHwgJ3RoaXNNb250aCdcbiAgfCAndGhpc1llYXInXG4gIHwgJ2xhc3RTZXZlbkRheXMnXG4gIHwgJ2xhc3RUaGlydHlEYXlzJ1xuICB8IHsgbGFiZWw6IFJlYWN0Tm9kZTsgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCAoKCkgPT4gRGF0ZSB8IERhdGVSYW5nZSkgfVxuICB8ICgob25DaGFuZ2U6ICh2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpID0+IHZvaWQpID0+IFJlYWN0Tm9kZSk7XG5cbmV4cG9ydCB0eXBlIERhdGVQaWNrZXJQcm9wcyA9IHtcbiAgLyoqIEN1cnJlbnRseSBzZWxlY3RlZCBkYXkgb3IgcmFuZ2Ugb2YgZGF5cy4gKi9cbiAgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsO1xuICAvKiogQ2FsbGJhY2sgZm9yIHdoZW4gdGhlIGRheSAocmFuZ2UpIGNoYW5nZXMuICovXG4gIG9uQ2hhbmdlOiAodmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSA9PiB2b2lkO1xuICAvKiogQ3VycmVudGx5IHZpc2libGUgZGF0ZS4gKi9cbiAgZGF0ZUluVmlldz86IERhdGU7XG4gIC8qKiBDYWxsYmFjayBmb3Igd2hlbiB0aGUgY3VycmVudGx5IHZpc2libGUgZGF0ZSBjaGFuZ2VzLiAqL1xuICBvbkRhdGVJblZpZXdDaGFuZ2U/OiAodmFsdWU6IERhdGUpID0+IHZvaWQ7XG4gIC8qKiBJZiBlbmFibGVkLCByYW5nZXMgY2FuIGJlIHNlbGVjdGVkLiAqL1xuICByYW5nZVNlbGVjdD86IGJvb2xlYW47XG4gIC8qKiBXaGljaCBsb2NhbGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgY2FsZW5kYXIuICovXG4gIGxvY2FsZT86IHN0cmluZztcbiAgLyoqIFdoaWNoIGRheSBvZiB0aGUgd2VlayBzaG91bGQgYmUgaW4gdGhlIGZpcnN0IGNvbHVtbi4gKDA9U3VuZGF5LCAxPU1vbmRheSwgLi4uKVxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICBmaXJzdERheU9mV2Vlaz86IDAgfCAxIHwgMiB8IDMgfCA0IHwgNSB8IDY7XG4gIC8qKiBXaGljaCBtb250aCB0byBzaG93IGluaXRpYWxseSAqL1xuICBkZWZhdWx0RGF0ZUluVmlldz86IERhdGU7XG4gIC8qKiBTaG93IGJ1dHRvbnMgdG8gcXVpY2tseSBzZWxlY3Qgc3VnZ2VzdGVkIGRhdGVzIG9yIGRhdGUgcmFuZ2VzICovXG4gIHF1aWNrT3B0aW9ucz86IERhdGVQaWNrZXJRdWlja09wdGlvbltdO1xuICAvKiogTWluaW11bSBzZWxlY3RhYmxlIGRhdGUgKi9cbiAgLyoqIERhdGUgcmFuZ2VzIHRoYXQgYXJlIHZpc3VhbGx5IG1hcmtlZCBhcyBibG9ja2VkICovXG4gIGJsb2NrZWRSYW5nZXM/OiBEYXRlUmFuZ2VbXTtcbiAgbWluRGF0ZT86IERhdGU7XG4gIC8qKiBNYXhpbXVtIHNlbGVjdGFibGUgZGF0ZSAqL1xuICBtYXhEYXRlPzogRGF0ZTtcbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgY2FsZW5kYXIgd2VlayBpbiB0aGUgZmlyc3QgY29sdW1uICovXG4gIHNob3dDYWxlbmRhcldlZWs/OiBib29sZWFuO1xufTtcblxuY29uc3QgRGF0ZVBpY2tlckNvbnRleHQgPSBjcmVhdGVDb250ZXh0PFBhcnRpYWw8T21pdDxEYXRlUGlja2VyUHJvcHMsICd2YWx1ZScgfCAnb25DaGFuZ2UnPj4+KHt9KTtcblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVQaWNrZXJQcm92aWRlcih7XG4gIGNoaWxkcmVuLFxuICAuLi5wcm9wc1xufTogUGFydGlhbDxPbWl0PERhdGVQaWNrZXJQcm9wcywgJ3ZhbHVlJyB8ICdvbkNoYW5nZSc+PiAmIHsgY2hpbGRyZW4/OiBSZWFjdE5vZGUgfSkge1xuICBjb25zdCB2YWx1ZSA9IHVzZU1lbW8oKCkgPT4gcHJvcHMsIFtKU09OLnN0cmluZ2lmeShwcm9wcyldKTtcblxuICByZXR1cm4gPERhdGVQaWNrZXJDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt2YWx1ZX0+e2NoaWxkcmVufTwvRGF0ZVBpY2tlckNvbnRleHQuUHJvdmlkZXI+O1xufVxuXG5jb25zdCB3ZWVrRGF5cyA9IFswLCAxLCAyLCAzLCA0LCA1LCA2XSBhcyBjb25zdDtcblxuLyoqIFJvdW5kcyBhIGRhdGUgZG93biB0byB0aGUgc3RhcnQgb2YgdGhlIGRheS4gKi9cbmV4cG9ydCBjb25zdCBzdGFydE9mRGF5ID0gKGQ6IERhdGUpID0+IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgZC5nZXRNb250aCgpLCBkLmdldERhdGUoKSk7XG5cbi8qKiBSb3VuZHMgYSBkYXRlIHVwIHRvIHRoZSBlbmQgb2YgdGhlIGRheS4gKi9cbmV4cG9ydCBjb25zdCBlbmRPZkRheSA9IChkOiBEYXRlKSA9PlxuICBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIGQuZ2V0TW9udGgoKSwgZC5nZXREYXRlKCkgKyAxLCAwLCAwLCAwLCAtMSk7XG5cbmV4cG9ydCBjb25zdCBsYXN0RGF5cyA9IChkYXlzOiBudW1iZXIpOiBEYXRlUmFuZ2UgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBtaW4gPSBuZXcgRGF0ZShub3cpO1xuICBtaW4uc2V0RGF0ZShtaW4uZ2V0RGF0ZSgpIC0gZGF5cyArIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShub3cpLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHRvZGF5ID0gKCkgPT4gbGFzdERheXMoMSk7XG5cbmV4cG9ydCBjb25zdCB0aGlzV2VlayA9IChkZWx0YSA9IDAsIGZpcnN0RGF5T2ZXZWVrID0gMSk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG5cbiAgbGV0IGRpZmYgPSBtaW4uZ2V0RGF5KCkgLSBmaXJzdERheU9mV2VlaztcbiAgaWYgKGRpZmYgPCAwKSB7XG4gICAgZGlmZiArPSA3O1xuICB9XG4gIG1pbi5zZXREYXRlKG1pbi5nZXREYXRlKCkgLSBkaWZmICsgZGVsdGEgKiA3KTtcblxuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpICsgNik7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdGhpc01vbnRoID0gKGRlbHRhID0gMCk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG4gIG1pbi5zZXREYXRlKDEpO1xuICBtaW4uc2V0TW9udGgobWluLmdldE1vbnRoKCkgKyBkZWx0YSk7XG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXRNb250aChtYXguZ2V0TW9udGgoKSArIDEpO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpIC0gMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdGhpc1llYXIgPSAoZGVsdGEgPSAwKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcbiAgbWluLnNldERhdGUoMSk7XG4gIG1pbi5zZXRNb250aCgwKTtcbiAgbWluLnNldEZ1bGxZZWFyKG1pbi5nZXRGdWxsWWVhcigpICsgZGVsdGEpO1xuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0RnVsbFllYXIobWF4LmdldEZ1bGxZZWFyKCkgKyAxKTtcbiAgbWF4LnNldERhdGUobWF4LmdldERhdGUoKSAtIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShtYXgpLFxuICB9O1xufTtcblxuY29uc3QgTVNfUEVSX0RBWSA9IDEwMDAgKiA2MCAqIDYwICogMjQ7XG5leHBvcnQgY29uc3QgZ2V0Q2FsZW5kYXJXZWVrID0gKGRhdGU6IERhdGUpOiBudW1iZXIgPT4ge1xuICAvLyBJU08gODYwMTogV2VlayAxIGlzIHRoZSB3ZWVrIHdpdGggdGhlIGZpcnN0IFRodXJzZGF5IG9mIHRoZSB5ZWFyLlxuICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG5cbiAgY29uc3QgeSA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgY29uc3QgZmRveSA9IG5ldyBEYXRlKHksIDAsIDEpO1xuICBjb25zdCBkb3kgPSBNYXRoLmZsb29yKFxuICAgIChkYXRlLmdldFRpbWUoKSAtIGZkb3kuZ2V0VGltZSgpICsgKGRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSAtIGZkb3kuZ2V0VGltZXpvbmVPZmZzZXQoKSkpIC9cbiAgICAgIE1TX1BFUl9EQVksXG4gICk7XG4gIGNvbnN0IGRvdyA9IGZkb3kuZ2V0RGF5KCk7XG4gIGNvbnN0IHcgPSBNYXRoLmZsb29yKCgxMCArIGRveSAtIGRvdykgLyA3KTtcblxuICBpZiAodyA9PT0gMCkge1xuICAgIHJldHVybiBnZXRDYWxlbmRhcldlZWsobmV3IERhdGUoeSAtIDEsIDExLCAzMSkpO1xuICB9XG5cbiAgcmV0dXJuIHc7XG59O1xuXG5leHBvcnQgY29uc3QgY29tbW9uUXVpY2tPcHRpb25zID0ge1xuICB0b2RheTogeyBsYWJlbDogPFRleHQgaWQ9XCJ0b2RheVwiIC8+LCB2YWx1ZTogdG9kYXkgfSxcbiAgdGhpc1dlZWs6IHsgbGFiZWw6IDxUZXh0IGlkPVwidGhpc1dlZWtcIiAvPiwgdmFsdWU6IChwcm9wcykgPT4gdGhpc1dlZWsoMCwgcHJvcHMuZmlyc3REYXlPZldlZWspIH0sXG4gIHRoaXNNb250aDogeyBsYWJlbDogPFRleHQgaWQ9XCJ0aGlzTW9udGhcIiAvPiwgdmFsdWU6ICgpID0+IHRoaXNNb250aCgpIH0sXG4gIHRoaXNZZWFyOiB7IGxhYmVsOiA8VGV4dCBpZD1cInRoaXNZZWFyXCIgLz4sIHZhbHVlOiAoKSA9PiB0aGlzWWVhcigpIH0sXG4gIGxhc3RTZXZlbkRheXM6IHsgbGFiZWw6IDxUZXh0IGlkPVwibGFzdFNldmVuRGF5c1wiIC8+LCB2YWx1ZTogKCkgPT4gbGFzdERheXMoNykgfSxcbiAgbGFzdFRoaXJ0eURheXM6IHsgbGFiZWw6IDxUZXh0IGlkPVwibGFzdFRoaXJ0eURheXNcIiAvPiwgdmFsdWU6ICgpID0+IGxhc3REYXlzKDMwKSB9LFxufSBzYXRpc2ZpZXMgUmVjb3JkPFxuICBEYXRlUGlja2VyUXVpY2tPcHRpb24gJiBzdHJpbmcsXG4gIHsgbGFiZWw6IFJlYWN0Tm9kZTsgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCAoKHByb3BzOiBEYXRlUGlja2VyUHJvcHMpID0+IERhdGUgfCBEYXRlUmFuZ2UpIH1cbj47XG5cbi8qKiBSZXR1cm5zIHdoZXRoZXIgdHdvIGRhdGVzIGFuZC9vciBkYXRlIHJhbmdlcyBpbnRlcnNlY3QuIEludGVyc2VjdGlvbiBpcyBjb25zaWRlcmVkIHBlciBkYXkuICovXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUludGVyc2VjdChhOiBEYXRlIHwgbnVsbCB8IERhdGVSYW5nZSwgYjogRGF0ZSB8IG51bGwgfCBEYXRlUmFuZ2UpIHtcbiAgaWYgKGEgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgYSA9IHsgbWluOiBhLCBtYXg6IGEgfTtcbiAgfVxuICBpZiAoYiBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICBiID0geyBtaW46IGIsIG1heDogYiB9O1xuICB9XG5cbiAgaWYgKCFhPy5taW4gfHwgIWEubWF4IHx8ICFiPy5taW4gfHwgIWIubWF4KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuICEoZW5kT2ZEYXkoYS5tYXgpIDwgc3RhcnRPZkRheShiLm1pbikgfHwgc3RhcnRPZkRheShhLm1pbikgPiBlbmRPZkRheShiLm1heCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUNsYW1wKGRhdGU6IERhdGUsIG1pbj86IERhdGUsIG1heD86IERhdGUpIHtcbiAgaWYgKG1pbiAmJiBkYXRlIDwgbWluKSB7XG4gICAgcmV0dXJuIG1pbjtcbiAgfVxuXG4gIGlmIChtYXggJiYgZGF0ZSA+IG1heCkge1xuICAgIHJldHVybiBtYXg7XG4gIH1cblxuICByZXR1cm4gZGF0ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVQaWNrZXIocHJvcHM6IERhdGVQaWNrZXJQcm9wcykge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChEYXRlUGlja2VyQ29udGV4dCk7XG5cbiAgY29uc3Qge1xuICAgIHZhbHVlLFxuICAgIHJhbmdlU2VsZWN0LFxuICAgIGxvY2FsZSxcbiAgICBmaXJzdERheU9mV2VlayA9IDEsXG4gICAgZGVmYXVsdERhdGVJblZpZXcsXG4gICAgcXVpY2tPcHRpb25zID0gWyd0b2RheScsICd0aGlzV2VlayddLFxuICAgIG1pbkRhdGUsXG4gICAgbWF4RGF0ZSxcbiAgICBzaG93Q2FsZW5kYXJXZWVrLFxuICAgIGJsb2NrZWRSYW5nZXMgPSBbXSxcbiAgfSA9IGRlZmF1bHRzPERhdGVQaWNrZXJQcm9wcz4ocHJvcHMsIGNvbnRleHQpO1xuXG4gIGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCkge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIHZhbHVlID0gZGF0ZUNsYW1wKHZhbHVlLCBtaW5EYXRlLCBtYXhEYXRlKTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICB2YWx1ZSA9IHtcbiAgICAgICAgbWluOiBkYXRlQ2xhbXAodmFsdWUubWluLCBtaW5EYXRlLCBtYXhEYXRlKSxcbiAgICAgICAgbWF4OiBkYXRlQ2xhbXAodmFsdWUubWF4LCBtaW5EYXRlLCBtYXhEYXRlKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcHJvcHMub25DaGFuZ2UodmFsdWUpO1xuICB9XG5cbiAgY29uc3QgQnV0dG9uID0gdXNlVGhlbWUoKHQpID0+IHQuY29tcG9uZW50cy5CdXR0b24pO1xuICBjb25zdCBJY29uQnV0dG9uID0gdXNlVGhlbWUoKHQpID0+IHQuY29tcG9uZW50cy5JY29uQnV0dG9uKTtcbiAgY29uc3QgQ2hldnJvblJpZ2h0ID0gdXNlVGhlbWUoKHQpID0+IHQuaWNvbnMuQ2hldnJvblJpZ2h0KTtcbiAgY29uc3QgY3NzVmFyaWFibGVzID0gdXNlQ3NzVmFyaWFibGVzKCk7XG4gIGZ1bmN0aW9uIGdldERheUNzc1N0eWxlcyh7XG4gICAgZGlzYWJsZWQsXG4gICAgcHJldk1vbnRoLFxuICAgIG5leHRNb250aCxcbiAgICB0b2RheSxcbiAgICBibG9ja2VkLFxuICAgIHNlbGVjdGVkLFxuICAgIHByZVNlbGVjdGVkLFxuICB9OiB7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIHByZXZNb250aD86IGJvb2xlYW47XG4gICAgbmV4dE1vbnRoPzogYm9vbGVhbjtcbiAgICB0b2RheT86IGJvb2xlYW47XG4gICAgYmxvY2tlZD86IGJvb2xlYW47XG4gICAgc2VsZWN0ZWQ/OiBib29sZWFuO1xuICAgIHByZVNlbGVjdGVkPzogYm9vbGVhbjtcbiAgfSk6IEludGVycG9sYXRpb248VGhlbWU+IHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgIGN1cnNvcjogZGlzYWJsZWQgPyB1bmRlZmluZWQgOiAncG9pbnRlcicsXG4gICAgICAgIGZvbnQ6ICdpbmhlcml0JyxcbiAgICAgIH0sXG4gICAgICAocHJldk1vbnRoIHx8IG5leHRNb250aCkgJiYge1xuICAgICAgICBjb2xvcjogZ3JheSxcbiAgICAgIH0sXG4gICAgICB0b2RheSAmJiB7XG4gICAgICAgIG91dGxpbmU6ICcxcHggc29saWQgdmFyKC0tc2Vjb25kYXJ5TWFpbiknLFxuICAgICAgfSxcbiAgICAgIGJsb2NrZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tYmxvY2tlZE1haW4pJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1ibG9ja2VkQ29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgICAgc2VsZWN0ZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tcHJpbWFyeU1haW4pJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1wcmltYXJ5Q29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgICAgYmxvY2tlZCAmJlxuICAgICAgICBzZWxlY3RlZCAmJiB7XG4gICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgICAgJzo6YmVmb3JlJzoge1xuICAgICAgICAgICAgY29udGVudDogJ1wiXCInLFxuICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICByaWdodDogMCxcbiAgICAgICAgICAgIGJvdHRvbTogMCxcbiAgICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tYmxvY2tlZE1haW4pJyxcbiAgICAgICAgICAgIGNsaXBQYXRoOiAncG9seWdvbigwIDAsIDAgNTAlLCA1MCUgMCknLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBwcmVTZWxlY3RlZCAmJiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1wcmltYXJ5TGlnaHQpJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1wcmltYXJ5Q29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICBjb25zdCBtb3VudFRpbWUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKCksIFtdKTtcbiAgY29uc3QgW2RpcnR5LCBzZXREaXJ0eV0gPSB1c2VTdGF0ZTxQYXJ0aWFsPERhdGVSYW5nZT4+KCk7XG4gIGNvbnN0IFtob3ZlcmVkLCBzZXRIb3ZlcmVkXSA9IHVzZVN0YXRlPERhdGU+KCk7XG4gIGNvbnN0IFtkYXRlSW5WaWV3TG9jYWwsIHNldERhdGVJblZpZXdMb2NhbF0gPSB1c2VTdGF0ZTxEYXRlPihkZWZhdWx0RGF0ZUluVmlldyA/PyBtb3VudFRpbWUpO1xuICBjb25zdCBkYXRlSW5WaWV3ID0gcHJvcHMuZGF0ZUluVmlldyA/PyBkYXRlSW5WaWV3TG9jYWw7XG5cbiAgZnVuY3Rpb24gc2V0RGF0ZUluVmlldyhkYXRlOiBEYXRlKSB7XG4gICAgc2V0RGF0ZUluVmlld0xvY2FsKGRhdGUpO1xuICAgIHByb3BzLm9uRGF0ZUluVmlld0NoYW5nZT8uKGRhdGUpO1xuICB9XG5cbiAgY29uc3QgbWluID0gZGlydHkgPyBkaXJ0eS5taW4gOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlPy5taW47XG4gIGNvbnN0IG1heCA9IGRpcnR5ID8gZGlydHkubWF4IDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZT8ubWF4O1xuXG4gIGNvbnN0IHJlc29sdmVkUXVpY2tPcHRpb25zID0gWy4uLnF1aWNrT3B0aW9ucywgeyBsYWJlbDogPFRleHQgaWQ9XCJyZXNldFwiIC8+LCB2YWx1ZTogbnVsbCB9XS5tYXAoXG4gICAgKG9wdGlvbiwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChvcHRpb24gaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICByZXR1cm4gb3B0aW9uKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBsYWJlbCwgdmFsdWUgfSA9IHR5cGVvZiBvcHRpb24gPT09ICdzdHJpbmcnID8gY29tbW9uUXVpY2tPcHRpb25zW29wdGlvbl0gOiBvcHRpb247XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuXG4gICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICAgICAgICBvbkNoYW5nZSh2YWx1ZShwcm9wcykpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7bGFiZWx9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKTtcbiAgICB9LFxuICApO1xuXG4gIGNvbnN0IHsgY2FsZW5kYXJzLCBnZXRCYWNrUHJvcHMsIGdldEZvcndhcmRQcm9wcywgZ2V0RGF0ZVByb3BzIH0gPSB1c2VEYXl6ZWQoe1xuICAgIG9uRGF0ZVNlbGVjdGVkOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgZmlyc3REYXlPZldlZWssXG4gICAgc2hvd091dHNpZGVEYXlzOiB0cnVlLFxuICAgIGRhdGU6IGRhdGVJblZpZXcsXG4gICAgb25PZmZzZXRDaGFuZ2VkOiAob2Zmc2V0KSA9PlxuICAgICAgc2V0RGF0ZUluVmlldyhuZXcgRGF0ZShkYXRlSW5WaWV3LmdldEZ1bGxZZWFyKCksIGRhdGVJblZpZXcuZ2V0TW9udGgoKSArIG9mZnNldCkpLFxuICAgIG9mZnNldDogMCxcbiAgICBtaW5EYXRlLFxuICAgIG1heERhdGUsXG4gIH0pO1xuICBjb25zdCBub3cgPSB1c2VNZW1vKCgpID0+IHN0YXJ0T2ZEYXkobmV3IERhdGUoKSksIFtdKTtcblxuICBjb25zdCBmb3JtYXRXZWVrZGF5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyB3ZWVrZGF5OiAnc2hvcnQnIH0pO1xuICAgIHJldHVybiAod2Vla0RheTogbnVtYmVyKSA9PlxuICAgICAgZm9ybWF0KG5ldyBEYXRlKERhdGUuVVRDKDIwMjEsIDcsICgod2Vla0RheSArIGZpcnN0RGF5T2ZXZWVrKSAlIDcpICsgMSkpKTtcbiAgfSwgW2xvY2FsZSwgZmlyc3REYXlPZldlZWtdKTtcblxuICB1c2VFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHNldERhdGVJblZpZXcoXG4gICAgICAgIHZhbHVlID09PSBudWxsID8gZGVmYXVsdERhdGVJblZpZXcgPz8gbW91bnRUaW1lIDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZS5tYXgsXG4gICAgICApLFxuICAgIFt2YWx1ZSwgZGVmYXVsdERhdGVJblZpZXcsIG1vdW50VGltZV0sXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXJhbmdlU2VsZWN0KSB7XG4gICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuICAgIH1cbiAgfSwgW3JhbmdlU2VsZWN0XSk7XG5cbiAgZnVuY3Rpb24gc2V0KG1pbj86IERhdGUsIG1heD86IERhdGUsIGVkaXQ/OiAnbWluJyB8ICdtYXgnKSB7XG4gICAgaWYgKCFyYW5nZVNlbGVjdCkge1xuICAgICAgb25DaGFuZ2UobWluID8/IG51bGwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChtaW4gJiYgbWF4ICYmIG1pbiA+IG1heCkge1xuICAgICAgaWYgKGVkaXQgPT09ICdtaW4nKSB7XG4gICAgICAgIG1heCA9IG1pbjtcbiAgICAgIH0gZWxzZSBpZiAoZWRpdCA9PT0gJ21heCcpIHtcbiAgICAgICAgbWluID0gbWF4O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgW21pbiwgbWF4XSA9IFttYXgsIG1pbl07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFtaW4gPT09ICFtYXgpIHtcbiAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgICBvbkNoYW5nZShtaW4gJiYgbWF4ID8geyBtaW4sIG1heDogZW5kT2ZEYXkobWF4KSB9IDogbnVsbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldERpcnR5KHsgbWluLCBtYXggfSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZm9ybWF0TW9udGggPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IGZvcm1hdCB9ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IG1vbnRoOiAnbG9uZycgfSk7XG4gICAgcmV0dXJuIChtb250aDogbnVtYmVyKSA9PiBmb3JtYXQobmV3IERhdGUoMjAyMSwgbW9udGgpKTtcbiAgfSwgW2xvY2FsZV0pO1xuXG4gIGNvbnN0IGZvcm1hdFllYXIgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IGZvcm1hdCB9ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IHllYXI6ICdudW1lcmljJyB9KTtcbiAgICByZXR1cm4gKHllYXI6IG51bWJlcikgPT4gZm9ybWF0KG5ldyBEYXRlKHllYXIsIDAsIDEpKTtcbiAgfSwgW2xvY2FsZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjc3M9e2Nzc1ZhcmlhYmxlc30+XG4gICAgICA8ZGl2XG4gICAgICAgIGNzcz17e1xuICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICBhbGlnbkl0ZW1zOiAnYmFzZWxpbmUnLFxuICAgICAgICAgIGdhcDogJ3ZhcigtLXNwYWNpbmcpJyxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPERhdGVJbnB1dFxuICAgICAgICAgIHZhbHVlPXttaW4gPz8gbnVsbH1cbiAgICAgICAgICBvbkNoYW5nZT17KGRhdGUpID0+IHNldChkYXRlID8/IHVuZGVmaW5lZCwgbWF4LCAnbWluJyl9XG4gICAgICAgICAgbG9jYWxlPXtsb2NhbGV9XG4gICAgICAgIC8+XG5cbiAgICAgICAge3JhbmdlU2VsZWN0ICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgeycgLSAnfVxuICAgICAgICAgICAgPERhdGVJbnB1dFxuICAgICAgICAgICAgICB2YWx1ZT17bWF4ID8/IG51bGx9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZGF0ZSkgPT4gc2V0KG1pbiwgZGF0ZSA/PyB1bmRlZmluZWQsICdtYXgnKX1cbiAgICAgICAgICAgICAgbG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvPlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIHtjYWxlbmRhcnMubWFwKCh7IG1vbnRoLCB5ZWFyLCB3ZWVrcyB9KSA9PiAoXG4gICAgICAgIDxkaXYga2V5PXtgJHttb250aH0ke3llYXJ9YH0gY3NzPXt7IGRpc3BsYXk6ICdncmlkJyB9fT5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgbWFyZ2luOiAnY2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpIDAnLFxuICAgICAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgICAgIGdyaWRBdXRvRmxvdzogJ2NvbHVtbicsXG4gICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnc3BhY2UtYmV0d2VlbicsXG4gICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8SWNvbkJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgey4uLmdldEJhY2tQcm9wcyh7IGNhbGVuZGFycyB9KX0+XG4gICAgICAgICAgICAgIDxDaGV2cm9uUmlnaHQgY3NzPXt7IHRyYW5zZm9ybTogJ3JvdGF0ZTNkKDAsIDAsIDEsIDE4MGRlZyknIH19IC8+XG4gICAgICAgICAgICA8L0ljb25CdXR0b24+XG5cbiAgICAgICAgICAgIDxkaXYgY3NzPXt7IGRpc3BsYXk6ICdmbGV4JyB9fT5cbiAgICAgICAgICAgICAge2Zvcm1hdE1vbnRoKG1vbnRoKX0ge2Zvcm1hdFllYXIoeWVhcil9XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPEljb25CdXR0b24gdHlwZT1cImJ1dHRvblwiIHsuLi5nZXRGb3J3YXJkUHJvcHMoeyBjYWxlbmRhcnMgfSl9PlxuICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0IC8+XG4gICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAganVzdGlmeVNlbGY6ICdjZW50ZXInLFxuICAgICAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgICAgIGdyaWRUZW1wbGF0ZUNvbHVtbnM6ICdyZXBlYXQoOCwgbWF4LWNvbnRlbnQpJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3Nob3dDYWxlbmRhcldlZWsgPyAoXG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgICAgYm9yZGVyUmlnaHQ6IGAxcHggc29saWQgJHtncmF5fWAsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxUZXh0IGlkPVwiY2FsZW5kYXJXZWVrXCIgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8ZGl2IC8+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7d2Vla0RheXMubWFwKChfdiwgd2Vla0RheSkgPT4gKFxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAga2V5PXt3ZWVrRGF5fVxuICAgICAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICAgICAganVzdGlmeVNlbGY6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtmb3JtYXRXZWVrZGF5KHdlZWtEYXkpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkpfVxuXG4gICAgICAgICAgICB7d2Vla3MubWFwKCh3ZWVrLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrU3RhcnQgPSB3ZWVrWzBdIGFzIERhdGVPYmo7XG4gICAgICAgICAgICAgIGNvbnN0IHdlZWtFbmQgPSB3ZWVrWzZdIGFzIERhdGVPYmo7XG4gICAgICAgICAgICAgIGNvbnN0IHdlZWtEaXNhYmxlZCA9XG4gICAgICAgICAgICAgICAgIXJhbmdlU2VsZWN0IHx8XG4gICAgICAgICAgICAgICAgKG1pbkRhdGUgJiYgd2Vla0VuZC5kYXRlIDwgbWluRGF0ZSkgfHxcbiAgICAgICAgICAgICAgICAobWF4RGF0ZSAmJiB3ZWVrU3RhcnQuZGF0ZSA+IG1heERhdGUpO1xuXG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPEZyYWdtZW50IGtleT17aW5kZXh9PlxuICAgICAgICAgICAgICAgICAge3Nob3dDYWxlbmRhcldlZWsgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiB3ZWVrRGlzYWJsZWQgPyB1bmRlZmluZWQgOiAncG9pbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb250OiAnaW5oZXJpdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSaWdodDogYDFweCBzb2xpZCAke2dyYXl9YCxcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3ZWVrRGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtaW4gPSBtaW5EYXRlICYmIHdlZWtTdGFydC5kYXRlIDwgbWluRGF0ZSA/IG1pbkRhdGUgOiB3ZWVrU3RhcnQuZGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1heCA9IG1heERhdGUgJiYgd2Vla0VuZC5kYXRlID4gbWF4RGF0ZSA/IG1heERhdGUgOiB3ZWVrRW5kLmRhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXQobWluLCBtYXgpO1xuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7Z2V0Q2FsZW5kYXJXZWVrKCh3ZWVrWzBdIGFzIERhdGVPYmopLmRhdGUpfVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICAgIHt3ZWVrLm1hcCgoZGF0ZU9iamVjdCwgZGF5SW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFkYXRlT2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxkaXYga2V5PXtkYXlJbmRleH0gLz47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHByZXZNb250aCwgbmV4dE1vbnRoLCBkYXRlIH0gPSBkYXRlT2JqZWN0O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0b2RheSA9IHN0YXJ0T2ZEYXkoZGF0ZSkuZ2V0VGltZSgpID09PSBub3cuZ2V0VGltZSgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXNhYmxlZCA9IChtaW5EYXRlICYmIGRhdGUgPCBtaW5EYXRlKSB8fCAobWF4RGF0ZSAmJiBkYXRlID4gbWF4RGF0ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPVxuICAgICAgICAgICAgICAgICAgICAgIGRhdGUuZ2V0VGltZSgpID09PSBtaW4/LmdldFRpbWUoKSB8fFxuICAgICAgICAgICAgICAgICAgICAgIChtaW4gJiYgbWF4ICYmIGRhdGVJbnRlcnNlY3QoZGF0ZSwgeyBtaW4sIG1heCB9KSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZVNlbGVjdGVkID1cbiAgICAgICAgICAgICAgICAgICAgICAhc2VsZWN0ZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAhZGlzYWJsZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAoZGF0ZS5nZXRUaW1lKCkgPT09IGhvdmVyZWQ/LmdldFRpbWUoKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKG1pbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAhbWF4ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZUludGVyc2VjdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbiA8PSBob3ZlcmVkID8geyBtaW4sIG1heDogaG92ZXJlZCB9IDogeyBtaW46IGhvdmVyZWQsIG1heDogbWluIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tlZCA9IGJsb2NrZWRSYW5nZXMuc29tZSgocmFuZ2UpID0+IGRhdGVJbnRlcnNlY3QoZGF0ZSwgcmFuZ2UpKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtgJHtpbmRleH0tJHtkYXlJbmRleH1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtnZXREYXlDc3NTdHlsZXMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldk1vbnRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0TW9udGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRvZGF5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja2VkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlU2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5nZXREYXRlUHJvcHMoeyBkYXRlT2JqOiBkYXRlT2JqZWN0IH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGlydHkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWluKSBzZXQobWluLCBkYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHNldChkYXRlLCBtYXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldChkYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlck92ZXI9eygpID0+IHNldEhvdmVyZWQoZGF0ZSl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJPdXQ9eygpID0+IHNldEhvdmVyZWQodW5kZWZpbmVkKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7ZGF0ZS5nZXREYXRlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKSl9XG5cbiAgICAgIDxkaXZcbiAgICAgICAgY3NzPXt7XG4gICAgICAgICAgbWFyZ2luVG9wOiAndmFyKC0tc3BhY2luZyknLFxuICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAge3Jlc29sdmVkUXVpY2tPcHRpb25zfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iXX0= */",
958
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2RhdGVQaWNrZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWtkcUMiLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvc2NodW1tYXItdGFibGUvc2NodW1tYXItdGFibGUvc3JjL2NvbXBvbmVudHMvZGF0ZVBpY2tlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlT2JqLCB1c2VEYXl6ZWQgfSBmcm9tICdkYXl6ZWQnO1xuaW1wb3J0IHtcbiAgRnJhZ21lbnQsXG4gIFJlYWN0Tm9kZSxcbiAgY3JlYXRlQ29udGV4dCxcbiAgdXNlQ29udGV4dCxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICcuLi9ob29rcy91c2VUaGVtZSc7XG5pbXBvcnQgeyBkZWZhdWx0cyB9IGZyb20gJy4uL21pc2MvZGVmYXVsdHMnO1xuaW1wb3J0IHsgZ3JheSB9IGZyb20gJy4uL3RoZW1lL2RlZmF1bHRUaGVtZS9kZWZhdWx0Q2xhc3Nlcyc7XG5pbXBvcnQgeyB1c2VDc3NWYXJpYWJsZXMgfSBmcm9tICcuLi90aGVtZS91c2VDc3NWYXJpYWJsZXMnO1xuaW1wb3J0IHsgRGF0ZUlucHV0IH0gZnJvbSAnLi9kYXRlSW5wdXQnO1xuaW1wb3J0IHsgVGV4dCB9IGZyb20gJy4vdGV4dCc7XG5pbXBvcnQgeyBJbnRlcnBvbGF0aW9uLCBUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuZXhwb3J0IHR5cGUgRGF0ZVJhbmdlID0geyBtaW46IERhdGU7IG1heDogRGF0ZSB9O1xuXG5leHBvcnQgdHlwZSBEYXRlUGlja2VyUXVpY2tPcHRpb24gPVxuICB8ICd0b2RheSdcbiAgfCAndGhpc1dlZWsnXG4gIHwgJ3RoaXNNb250aCdcbiAgfCAndGhpc1llYXInXG4gIHwgJ2xhc3RTZXZlbkRheXMnXG4gIHwgJ2xhc3RUaGlydHlEYXlzJ1xuICB8IHsgbGFiZWw6IFJlYWN0Tm9kZTsgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCAoKCkgPT4gRGF0ZSB8IERhdGVSYW5nZSkgfVxuICB8ICgob25DaGFuZ2U6ICh2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpID0+IHZvaWQpID0+IFJlYWN0Tm9kZSk7XG5cbmV4cG9ydCB0eXBlIERhdGVQaWNrZXJQcm9wcyA9IHtcbiAgLyoqIEN1cnJlbnRseSBzZWxlY3RlZCBkYXkgb3IgcmFuZ2Ugb2YgZGF5cy4gKi9cbiAgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsO1xuICAvKiogQ2FsbGJhY2sgZm9yIHdoZW4gdGhlIGRheSAocmFuZ2UpIGNoYW5nZXMuICovXG4gIG9uQ2hhbmdlOiAodmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSA9PiB2b2lkO1xuICAvKiogQ3VycmVudGx5IHZpc2libGUgZGF0ZS4gKi9cbiAgZGF0ZUluVmlldz86IERhdGU7XG4gIC8qKiBDYWxsYmFjayBmb3Igd2hlbiB0aGUgY3VycmVudGx5IHZpc2libGUgZGF0ZSBjaGFuZ2VzLiAqL1xuICBvbkRhdGVJblZpZXdDaGFuZ2U/OiAodmFsdWU6IERhdGUpID0+IHZvaWQ7XG4gIC8qKiBJZiBlbmFibGVkLCByYW5nZXMgY2FuIGJlIHNlbGVjdGVkLiAqL1xuICByYW5nZVNlbGVjdD86IGJvb2xlYW47XG4gIC8qKiBXaGljaCBsb2NhbGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgY2FsZW5kYXIuICovXG4gIGxvY2FsZT86IHN0cmluZztcbiAgLyoqIFdoaWNoIGRheSBvZiB0aGUgd2VlayBzaG91bGQgYmUgaW4gdGhlIGZpcnN0IGNvbHVtbi4gKDA9U3VuZGF5LCAxPU1vbmRheSwgLi4uKVxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICBmaXJzdERheU9mV2Vlaz86IDAgfCAxIHwgMiB8IDMgfCA0IHwgNSB8IDY7XG4gIC8qKiBXaGljaCBtb250aCB0byBzaG93IGluaXRpYWxseSAqL1xuICBkZWZhdWx0RGF0ZUluVmlldz86IERhdGU7XG4gIC8qKiBTaG93IGJ1dHRvbnMgdG8gcXVpY2tseSBzZWxlY3Qgc3VnZ2VzdGVkIGRhdGVzIG9yIGRhdGUgcmFuZ2VzICovXG4gIHF1aWNrT3B0aW9ucz86IERhdGVQaWNrZXJRdWlja09wdGlvbltdO1xuICAvKiogTWluaW11bSBzZWxlY3RhYmxlIGRhdGUgKi9cbiAgLyoqIERhdGUgcmFuZ2VzIHRoYXQgYXJlIHZpc3VhbGx5IG1hcmtlZCBhcyBibG9ja2VkICovXG4gIGJsb2NrZWRSYW5nZXM/OiBEYXRlUmFuZ2VbXTtcbiAgbWluRGF0ZT86IERhdGU7XG4gIC8qKiBNYXhpbXVtIHNlbGVjdGFibGUgZGF0ZSAqL1xuICBtYXhEYXRlPzogRGF0ZTtcbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgY2FsZW5kYXIgd2VlayBpbiB0aGUgZmlyc3QgY29sdW1uICovXG4gIHNob3dDYWxlbmRhcldlZWs/OiBib29sZWFuO1xufTtcblxuY29uc3QgRGF0ZVBpY2tlckNvbnRleHQgPSBjcmVhdGVDb250ZXh0PFBhcnRpYWw8T21pdDxEYXRlUGlja2VyUHJvcHMsICd2YWx1ZScgfCAnb25DaGFuZ2UnPj4+KHt9KTtcblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVQaWNrZXJQcm92aWRlcih7XG4gIGNoaWxkcmVuLFxuICAuLi5wcm9wc1xufTogUGFydGlhbDxPbWl0PERhdGVQaWNrZXJQcm9wcywgJ3ZhbHVlJyB8ICdvbkNoYW5nZSc+PiAmIHsgY2hpbGRyZW4/OiBSZWFjdE5vZGUgfSkge1xuICBjb25zdCB2YWx1ZSA9IHVzZU1lbW8oKCkgPT4gcHJvcHMsIFtKU09OLnN0cmluZ2lmeShwcm9wcyldKTtcblxuICByZXR1cm4gPERhdGVQaWNrZXJDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt2YWx1ZX0+e2NoaWxkcmVufTwvRGF0ZVBpY2tlckNvbnRleHQuUHJvdmlkZXI+O1xufVxuXG5jb25zdCB3ZWVrRGF5cyA9IFswLCAxLCAyLCAzLCA0LCA1LCA2XSBhcyBjb25zdDtcblxuLyoqIFJvdW5kcyBhIGRhdGUgZG93biB0byB0aGUgc3RhcnQgb2YgdGhlIGRheS4gKi9cbmV4cG9ydCBjb25zdCBzdGFydE9mRGF5ID0gKGQ6IERhdGUpID0+IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgZC5nZXRNb250aCgpLCBkLmdldERhdGUoKSk7XG5cbi8qKiBSb3VuZHMgYSBkYXRlIHVwIHRvIHRoZSBlbmQgb2YgdGhlIGRheS4gKi9cbmV4cG9ydCBjb25zdCBlbmRPZkRheSA9IChkOiBEYXRlKSA9PlxuICBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIGQuZ2V0TW9udGgoKSwgZC5nZXREYXRlKCkgKyAxLCAwLCAwLCAwLCAtMSk7XG5cbmV4cG9ydCBjb25zdCBsYXN0RGF5cyA9IChkYXlzOiBudW1iZXIpOiBEYXRlUmFuZ2UgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBtaW4gPSBuZXcgRGF0ZShub3cpO1xuICBtaW4uc2V0RGF0ZShtaW4uZ2V0RGF0ZSgpIC0gZGF5cyArIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShub3cpLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHRvZGF5ID0gKCkgPT4gbGFzdERheXMoMSk7XG5cbmV4cG9ydCBjb25zdCB0aGlzV2VlayA9IChkZWx0YSA9IDAsIGZpcnN0RGF5T2ZXZWVrID0gMSk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG5cbiAgbGV0IGRpZmYgPSBtaW4uZ2V0RGF5KCkgLSBmaXJzdERheU9mV2VlaztcbiAgaWYgKGRpZmYgPCAwKSB7XG4gICAgZGlmZiArPSA3O1xuICB9XG4gIG1pbi5zZXREYXRlKG1pbi5nZXREYXRlKCkgLSBkaWZmICsgZGVsdGEgKiA3KTtcblxuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpICsgNik7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdGhpc01vbnRoID0gKGRlbHRhID0gMCk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG4gIG1pbi5zZXREYXRlKDEpO1xuICBtaW4uc2V0TW9udGgobWluLmdldE1vbnRoKCkgKyBkZWx0YSk7XG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXRNb250aChtYXguZ2V0TW9udGgoKSArIDEpO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpIC0gMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdGhpc1llYXIgPSAoZGVsdGEgPSAwKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcbiAgbWluLnNldERhdGUoMSk7XG4gIG1pbi5zZXRNb250aCgwKTtcbiAgbWluLnNldEZ1bGxZZWFyKG1pbi5nZXRGdWxsWWVhcigpICsgZGVsdGEpO1xuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0RnVsbFllYXIobWF4LmdldEZ1bGxZZWFyKCkgKyAxKTtcbiAgbWF4LnNldERhdGUobWF4LmdldERhdGUoKSAtIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShtYXgpLFxuICB9O1xufTtcblxuY29uc3QgTVNfUEVSX0RBWSA9IDEwMDAgKiA2MCAqIDYwICogMjQ7XG5leHBvcnQgY29uc3QgZ2V0Q2FsZW5kYXJXZWVrID0gKGRhdGU6IERhdGUpOiBudW1iZXIgPT4ge1xuICAvLyBJU08gODYwMTogV2VlayAxIGlzIHRoZSB3ZWVrIHdpdGggdGhlIGZpcnN0IFRodXJzZGF5IG9mIHRoZSB5ZWFyLlxuICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG5cbiAgY29uc3QgZW5kT2ZXZWVrID0gbmV3IERhdGUoXG4gICAgZGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgIGRhdGUuZ2V0TW9udGgoKSxcbiAgICBkYXRlLmdldERhdGUoKSArICg3IC0gKGRhdGUuZ2V0RGF5KCkgfHwgNykpLFxuICApO1xuXG4gIGNvbnN0IHllYXIgPSBlbmRPZldlZWsuZ2V0RnVsbFllYXIoKTtcbiAgY29uc3QgZmlyc3REYXlPZlllYXIgPSBuZXcgRGF0ZSh5ZWFyLCAwLCAxKTtcbiAgY29uc3QgZGF5T2ZZZWFyID1cbiAgICBNYXRoLmZsb29yKFxuICAgICAgKGVuZE9mV2Vlay5nZXRUaW1lKCkgLVxuICAgICAgICBmaXJzdERheU9mWWVhci5nZXRUaW1lKCkgK1xuICAgICAgICAoZW5kT2ZXZWVrLmdldFRpbWV6b25lT2Zmc2V0KCkgLSBmaXJzdERheU9mWWVhci5nZXRUaW1lem9uZU9mZnNldCgpKSkgL1xuICAgICAgICBNU19QRVJfREFZLFxuICAgICkgKyAxO1xuICBjb25zdCB3ZWVrT2ZZZWFyID0gTWF0aC5mbG9vcigoMyArIGRheU9mWWVhcikgLyA3KTtcblxuICBpZiAod2Vla09mWWVhciA9PT0gMCkge1xuICAgIHJldHVybiAoXG4gICAgICBnZXRDYWxlbmRhcldlZWsoXG4gICAgICAgIG5ldyBEYXRlKGVuZE9mV2Vlay5nZXRGdWxsWWVhcigpLCBlbmRPZldlZWsuZ2V0TW9udGgoKSwgZW5kT2ZXZWVrLmdldERhdGUoKSAtIDcpLFxuICAgICAgKSArIDFcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIHdlZWtPZlllYXI7XG59O1xuXG5leHBvcnQgY29uc3QgY29tbW9uUXVpY2tPcHRpb25zID0ge1xuICB0b2RheTogeyBsYWJlbDogPFRleHQgaWQ9XCJ0b2RheVwiIC8+LCB2YWx1ZTogdG9kYXkgfSxcbiAgdGhpc1dlZWs6IHsgbGFiZWw6IDxUZXh0IGlkPVwidGhpc1dlZWtcIiAvPiwgdmFsdWU6IChwcm9wcykgPT4gdGhpc1dlZWsoMCwgcHJvcHMuZmlyc3REYXlPZldlZWspIH0sXG4gIHRoaXNNb250aDogeyBsYWJlbDogPFRleHQgaWQ9XCJ0aGlzTW9udGhcIiAvPiwgdmFsdWU6ICgpID0+IHRoaXNNb250aCgpIH0sXG4gIHRoaXNZZWFyOiB7IGxhYmVsOiA8VGV4dCBpZD1cInRoaXNZZWFyXCIgLz4sIHZhbHVlOiAoKSA9PiB0aGlzWWVhcigpIH0sXG4gIGxhc3RTZXZlbkRheXM6IHsgbGFiZWw6IDxUZXh0IGlkPVwibGFzdFNldmVuRGF5c1wiIC8+LCB2YWx1ZTogKCkgPT4gbGFzdERheXMoNykgfSxcbiAgbGFzdFRoaXJ0eURheXM6IHsgbGFiZWw6IDxUZXh0IGlkPVwibGFzdFRoaXJ0eURheXNcIiAvPiwgdmFsdWU6ICgpID0+IGxhc3REYXlzKDMwKSB9LFxufSBzYXRpc2ZpZXMgUmVjb3JkPFxuICBEYXRlUGlja2VyUXVpY2tPcHRpb24gJiBzdHJpbmcsXG4gIHsgbGFiZWw6IFJlYWN0Tm9kZTsgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCAoKHByb3BzOiBEYXRlUGlja2VyUHJvcHMpID0+IERhdGUgfCBEYXRlUmFuZ2UpIH1cbj47XG5cbi8qKiBSZXR1cm5zIHdoZXRoZXIgdHdvIGRhdGVzIGFuZC9vciBkYXRlIHJhbmdlcyBpbnRlcnNlY3QuIEludGVyc2VjdGlvbiBpcyBjb25zaWRlcmVkIHBlciBkYXkuICovXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUludGVyc2VjdChcbiAgYTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwgfCB1bmRlZmluZWQsXG4gIGI6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsIHwgdW5kZWZpbmVkLFxuKSB7XG4gIGlmIChhIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIGEgPSB7IG1pbjogYSwgbWF4OiBhIH07XG4gIH1cbiAgaWYgKGIgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgYiA9IHsgbWluOiBiLCBtYXg6IGIgfTtcbiAgfVxuXG4gIGlmICghYT8ubWluIHx8ICFhLm1heCB8fCAhYj8ubWluIHx8ICFiLm1heCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiAhKGVuZE9mRGF5KGEubWF4KSA8IHN0YXJ0T2ZEYXkoYi5taW4pIHx8IHN0YXJ0T2ZEYXkoYS5taW4pID4gZW5kT2ZEYXkoYi5tYXgpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGVDbGFtcChkYXRlOiBEYXRlLCBtaW4/OiBEYXRlLCBtYXg/OiBEYXRlKSB7XG4gIGlmIChtaW4gJiYgZGF0ZSA8IG1pbikge1xuICAgIHJldHVybiBtaW47XG4gIH1cblxuICBpZiAobWF4ICYmIGRhdGUgPiBtYXgpIHtcbiAgICByZXR1cm4gbWF4O1xuICB9XG5cbiAgcmV0dXJuIGRhdGU7XG59XG5cbmZ1bmN0aW9uIGdldFZhbHVlRm9yQ29tcGFyaXNvbih2YWx1ZT86IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSB7XG4gIGlmICghdmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHJldHVybiB2YWx1ZS5nZXRUaW1lKCk7XG4gIH1cbiAgcmV0dXJuIGAke3ZhbHVlLm1pbj8uZ2V0VGltZSgpfS0ke3ZhbHVlLm1heD8uZ2V0VGltZSgpfWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRlUGlja2VyKHByb3BzOiBEYXRlUGlja2VyUHJvcHMpIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoRGF0ZVBpY2tlckNvbnRleHQpO1xuXG4gIGNvbnN0IHtcbiAgICB2YWx1ZSxcbiAgICByYW5nZVNlbGVjdCxcbiAgICBsb2NhbGUsXG4gICAgZmlyc3REYXlPZldlZWsgPSAxLFxuICAgIGRlZmF1bHREYXRlSW5WaWV3LFxuICAgIHF1aWNrT3B0aW9ucyA9IFsndG9kYXknLCAndGhpc1dlZWsnXSxcbiAgICBtaW5EYXRlLFxuICAgIG1heERhdGUsXG4gICAgc2hvd0NhbGVuZGFyV2VlayxcbiAgICBibG9ja2VkUmFuZ2VzID0gW10sXG4gIH0gPSBkZWZhdWx0czxEYXRlUGlja2VyUHJvcHM+KHByb3BzLCBjb250ZXh0KTtcblxuICBmdW5jdGlvbiBvbkNoYW5nZSh2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICB2YWx1ZSA9IGRhdGVDbGFtcCh2YWx1ZSwgbWluRGF0ZSwgbWF4RGF0ZSk7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSkge1xuICAgICAgdmFsdWUgPSB7XG4gICAgICAgIG1pbjogZGF0ZUNsYW1wKHZhbHVlLm1pbiwgbWluRGF0ZSwgbWF4RGF0ZSksXG4gICAgICAgIG1heDogZGF0ZUNsYW1wKHZhbHVlLm1heCwgbWluRGF0ZSwgbWF4RGF0ZSksXG4gICAgICB9O1xuICAgIH1cblxuICAgIHByb3BzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgfVxuXG4gIGNvbnN0IEJ1dHRvbiA9IHVzZVRoZW1lKCh0KSA9PiB0LmNvbXBvbmVudHMuQnV0dG9uKTtcbiAgY29uc3QgSWNvbkJ1dHRvbiA9IHVzZVRoZW1lKCh0KSA9PiB0LmNvbXBvbmVudHMuSWNvbkJ1dHRvbik7XG4gIGNvbnN0IENoZXZyb25SaWdodCA9IHVzZVRoZW1lKCh0KSA9PiB0Lmljb25zLkNoZXZyb25SaWdodCk7XG4gIGNvbnN0IGNzc1ZhcmlhYmxlcyA9IHVzZUNzc1ZhcmlhYmxlcygpO1xuICBmdW5jdGlvbiBnZXREYXlDc3NTdHlsZXMoe1xuICAgIGRpc2FibGVkLFxuICAgIHByZXZNb250aCxcbiAgICBuZXh0TW9udGgsXG4gICAgdG9kYXksXG4gICAgYmxvY2tlZCxcbiAgICBzZWxlY3RlZCxcbiAgICBwcmVTZWxlY3RlZCxcbiAgfToge1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBwcmV2TW9udGg/OiBib29sZWFuO1xuICAgIG5leHRNb250aD86IGJvb2xlYW47XG4gICAgdG9kYXk/OiBib29sZWFuO1xuICAgIGJsb2NrZWQ/OiBib29sZWFuO1xuICAgIHNlbGVjdGVkPzogYm9vbGVhbjtcbiAgICBwcmVTZWxlY3RlZD86IGJvb2xlYW47XG4gIH0pOiBJbnRlcnBvbGF0aW9uPFRoZW1lPiB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgIGJvcmRlcjogJ25vbmUnLFxuICAgICAgICBiYWNrZ3JvdW5kOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICBjdXJzb3I6IGRpc2FibGVkID8gdW5kZWZpbmVkIDogJ3BvaW50ZXInLFxuICAgICAgICBmb250OiAnaW5oZXJpdCcsXG4gICAgICB9LFxuICAgICAgKHByZXZNb250aCB8fCBuZXh0TW9udGgpICYmIHtcbiAgICAgICAgY29sb3I6IGdyYXksXG4gICAgICB9LFxuICAgICAgdG9kYXkgJiYge1xuICAgICAgICBvdXRsaW5lOiAnMXB4IHNvbGlkIHZhcigtLXNlY29uZGFyeU1haW4pJyxcbiAgICAgIH0sXG4gICAgICBibG9ja2VkICYmIHtcbiAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLWJsb2NrZWRNYWluKScsXG4gICAgICAgIGNvbG9yOiAndmFyKC0tYmxvY2tlZENvbnRyYXN0VGV4dCknLFxuICAgICAgfSxcbiAgICAgIHNlbGVjdGVkICYmIHtcbiAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLXByaW1hcnlNYWluKScsXG4gICAgICAgIGNvbG9yOiAndmFyKC0tcHJpbWFyeUNvbnRyYXN0VGV4dCknLFxuICAgICAgfSxcbiAgICAgIGJsb2NrZWQgJiZcbiAgICAgICAgc2VsZWN0ZWQgJiYge1xuICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICAgICc6OmJlZm9yZSc6IHtcbiAgICAgICAgICAgIGNvbnRlbnQ6ICdcIlwiJyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgcmlnaHQ6IDAsXG4gICAgICAgICAgICBib3R0b206IDAsXG4gICAgICAgICAgICBsZWZ0OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLWJsb2NrZWRNYWluKScsXG4gICAgICAgICAgICBjbGlwUGF0aDogJ3BvbHlnb24oMCAwLCAwIDUwJSwgNTAlIDApJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgcHJlU2VsZWN0ZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tcHJpbWFyeUxpZ2h0KScsXG4gICAgICAgIGNvbG9yOiAndmFyKC0tcHJpbWFyeUNvbnRyYXN0VGV4dCknLFxuICAgICAgfSxcbiAgICBdO1xuICB9XG5cbiAgY29uc3QgbW91bnRUaW1lID0gdXNlTWVtbygoKSA9PiBuZXcgRGF0ZSgpLCBbXSk7XG4gIGNvbnN0IFtkaXJ0eSwgc2V0RGlydHldID0gdXNlU3RhdGU8UGFydGlhbDxEYXRlUmFuZ2U+PigpO1xuICBjb25zdCBbaG92ZXJlZCwgc2V0SG92ZXJlZF0gPSB1c2VTdGF0ZTxEYXRlUmFuZ2U+KCk7XG4gIGNvbnN0IFtkYXRlSW5WaWV3TG9jYWwsIHNldERhdGVJblZpZXdMb2NhbF0gPSB1c2VTdGF0ZTxEYXRlPihkZWZhdWx0RGF0ZUluVmlldyA/PyBtb3VudFRpbWUpO1xuICBjb25zdCBkYXRlSW5WaWV3ID0gcHJvcHMuZGF0ZUluVmlldyA/PyBkYXRlSW5WaWV3TG9jYWw7XG5cbiAgZnVuY3Rpb24gc2V0RGF0ZUluVmlldyhkYXRlOiBEYXRlKSB7XG4gICAgc2V0RGF0ZUluVmlld0xvY2FsKGRhdGUpO1xuICAgIHByb3BzLm9uRGF0ZUluVmlld0NoYW5nZT8uKGRhdGUpO1xuICB9XG5cbiAgY29uc3QgbWluID0gZGlydHkgPyBkaXJ0eS5taW4gOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlPy5taW47XG4gIGNvbnN0IG1heCA9IGRpcnR5ID8gZGlydHkubWF4IDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZT8ubWF4O1xuXG4gIGNvbnN0IHJlc29sdmVkUXVpY2tPcHRpb25zID0gWy4uLnF1aWNrT3B0aW9ucywgeyBsYWJlbDogPFRleHQgaWQ9XCJyZXNldFwiIC8+LCB2YWx1ZTogbnVsbCB9XS5tYXAoXG4gICAgKG9wdGlvbiwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChvcHRpb24gaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICByZXR1cm4gb3B0aW9uKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBsYWJlbCwgdmFsdWUgfSA9IHR5cGVvZiBvcHRpb24gPT09ICdzdHJpbmcnID8gY29tbW9uUXVpY2tPcHRpb25zW29wdGlvbl0gOiBvcHRpb247XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuXG4gICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICAgICAgICBvbkNoYW5nZSh2YWx1ZShwcm9wcykpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7bGFiZWx9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKTtcbiAgICB9LFxuICApO1xuXG4gIGNvbnN0IHsgY2FsZW5kYXJzLCBnZXRCYWNrUHJvcHMsIGdldEZvcndhcmRQcm9wcywgZ2V0RGF0ZVByb3BzIH0gPSB1c2VEYXl6ZWQoe1xuICAgIG9uRGF0ZVNlbGVjdGVkOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgZmlyc3REYXlPZldlZWssXG4gICAgc2hvd091dHNpZGVEYXlzOiB0cnVlLFxuICAgIGRhdGU6IGRhdGVJblZpZXcsXG4gICAgb25PZmZzZXRDaGFuZ2VkOiAob2Zmc2V0KSA9PlxuICAgICAgc2V0RGF0ZUluVmlldyhuZXcgRGF0ZShkYXRlSW5WaWV3LmdldEZ1bGxZZWFyKCksIGRhdGVJblZpZXcuZ2V0TW9udGgoKSArIG9mZnNldCkpLFxuICAgIG9mZnNldDogMCxcbiAgICBtaW5EYXRlLFxuICAgIG1heERhdGUsXG4gIH0pO1xuICBjb25zdCBub3cgPSB1c2VNZW1vKCgpID0+IHN0YXJ0T2ZEYXkobmV3IERhdGUoKSksIFtdKTtcblxuICBjb25zdCBmb3JtYXRXZWVrZGF5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyB3ZWVrZGF5OiAnc2hvcnQnIH0pO1xuICAgIHJldHVybiAod2Vla0RheTogbnVtYmVyKSA9PlxuICAgICAgZm9ybWF0KG5ldyBEYXRlKERhdGUuVVRDKDIwMjEsIDcsICgod2Vla0RheSArIGZpcnN0RGF5T2ZXZWVrKSAlIDcpICsgMSkpKTtcbiAgfSwgW2xvY2FsZSwgZmlyc3REYXlPZldlZWtdKTtcblxuICB1c2VFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHNldERhdGVJblZpZXcoXG4gICAgICAgIHZhbHVlID09PSBudWxsID8gZGVmYXVsdERhdGVJblZpZXcgPz8gbW91bnRUaW1lIDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZS5tYXgsXG4gICAgICApLFxuICAgIFtnZXRWYWx1ZUZvckNvbXBhcmlzb24odmFsdWUpLCBnZXRWYWx1ZUZvckNvbXBhcmlzb24oZGVmYXVsdERhdGVJblZpZXcpLCBtb3VudFRpbWVdLFxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFyYW5nZVNlbGVjdCkge1xuICAgICAgc2V0RGlydHkodW5kZWZpbmVkKTtcbiAgICB9XG4gIH0sIFtyYW5nZVNlbGVjdF0pO1xuXG4gIGZ1bmN0aW9uIHNldChtaW4/OiBEYXRlLCBtYXg/OiBEYXRlLCBlZGl0PzogJ21pbicgfCAnbWF4Jykge1xuICAgIGlmICghcmFuZ2VTZWxlY3QpIHtcbiAgICAgIG9uQ2hhbmdlKG1pbiA/PyBudWxsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAobWluICYmIG1heCAmJiBtaW4gPiBtYXgpIHtcbiAgICAgIGlmIChlZGl0ID09PSAnbWluJykge1xuICAgICAgICBtYXggPSBtaW47XG4gICAgICB9IGVsc2UgaWYgKGVkaXQgPT09ICdtYXgnKSB7XG4gICAgICAgIG1pbiA9IG1heDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIFttaW4sIG1heF0gPSBbbWF4LCBtaW5dO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghbWluID09PSAhbWF4KSB7XG4gICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuICAgICAgb25DaGFuZ2UobWluICYmIG1heCA/IHsgbWluLCBtYXg6IGVuZE9mRGF5KG1heCkgfSA6IG51bGwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXREaXJ0eSh7IG1pbiwgbWF4IH0pO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGZvcm1hdE1vbnRoID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyBtb250aDogJ2xvbmcnIH0pO1xuICAgIHJldHVybiAobW9udGg6IG51bWJlcikgPT4gZm9ybWF0KG5ldyBEYXRlKDIwMjEsIG1vbnRoKSk7XG4gIH0sIFtsb2NhbGVdKTtcblxuICBjb25zdCBmb3JtYXRZZWFyID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyB5ZWFyOiAnbnVtZXJpYycgfSk7XG4gICAgcmV0dXJuICh5ZWFyOiBudW1iZXIpID0+IGZvcm1hdChuZXcgRGF0ZSh5ZWFyLCAwLCAxKSk7XG4gIH0sIFtsb2NhbGVdKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY3NzPXtjc3NWYXJpYWJsZXN9PlxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e3tcbiAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgZ3JpZEF1dG9GbG93OiAnY29sdW1uJyxcbiAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgYWxpZ25JdGVtczogJ2Jhc2VsaW5lJyxcbiAgICAgICAgICBnYXA6ICd2YXIoLS1zcGFjaW5nKScsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxEYXRlSW5wdXRcbiAgICAgICAgICB2YWx1ZT17bWluID8/IG51bGx9XG4gICAgICAgICAgb25DaGFuZ2U9eyhkYXRlKSA9PiBzZXQoZGF0ZSA/PyB1bmRlZmluZWQsIG1heCwgJ21pbicpfVxuICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAvPlxuXG4gICAgICAgIHtyYW5nZVNlbGVjdCAmJiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIHsnIC0gJ31cbiAgICAgICAgICAgIDxEYXRlSW5wdXRcbiAgICAgICAgICAgICAgdmFsdWU9e21heCA/PyBudWxsfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGRhdGUpID0+IHNldChtaW4sIGRhdGUgPz8gdW5kZWZpbmVkLCAnbWF4Jyl9XG4gICAgICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7Y2FsZW5kYXJzLm1hcCgoeyBtb250aCwgeWVhciwgd2Vla3MgfSkgPT4gKFxuICAgICAgICA8ZGl2IGtleT17YCR7bW9udGh9JHt5ZWFyfWB9IGNzcz17eyBkaXNwbGF5OiAnZ3JpZCcgfX0+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgIG1hcmdpbjogJ2NhbGModmFyKC0tc3BhY2luZykgKiA0KSAwJyxcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nLFxuICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPEljb25CdXR0b24gdHlwZT1cImJ1dHRvblwiIHsuLi5nZXRCYWNrUHJvcHMoeyBjYWxlbmRhcnMgfSl9PlxuICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0IGNzcz17eyB0cmFuc2Zvcm06ICdyb3RhdGUzZCgwLCAwLCAxLCAxODBkZWcpJyB9fSAvPlxuICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuXG4gICAgICAgICAgICA8ZGl2IGNzcz17eyBkaXNwbGF5OiAnZmxleCcgfX0+XG4gICAgICAgICAgICAgIHtmb3JtYXRNb250aChtb250aCl9IHtmb3JtYXRZZWFyKHllYXIpfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxJY29uQnV0dG9uIHR5cGU9XCJidXR0b25cIiB7Li4uZ2V0Rm9yd2FyZFByb3BzKHsgY2FsZW5kYXJzIH0pfT5cbiAgICAgICAgICAgICAgPENoZXZyb25SaWdodCAvPlxuICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgICAgICBncmlkVGVtcGxhdGVDb2x1bW5zOiAncmVwZWF0KDgsIG1heC1jb250ZW50KScsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtzaG93Q2FsZW5kYXJXZWVrID8gKFxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgICAgICBqdXN0aWZ5U2VsZjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgICAgICAgICAgIGJvcmRlclJpZ2h0OiBgMXB4IHNvbGlkICR7Z3JheX1gLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8VGV4dCBpZD1cImNhbGVuZGFyV2Vla1wiIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPGRpdiAvPlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAge3dlZWtEYXlzLm1hcCgoX3YsIHdlZWtEYXkpID0+IChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGtleT17d2Vla0RheX1cbiAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7Zm9ybWF0V2Vla2RheSh3ZWVrRGF5KX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApKX1cblxuICAgICAgICAgICAge3dlZWtzLm1hcCgod2VlaywgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgd2Vla1N0YXJ0ID0gd2Vla1swXSBhcyBEYXRlT2JqO1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrRW5kID0gd2Vla1s2XSBhcyBEYXRlT2JqO1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrRGlzYWJsZWQgPVxuICAgICAgICAgICAgICAgICFyYW5nZVNlbGVjdCB8fFxuICAgICAgICAgICAgICAgIChtaW5EYXRlICYmIHdlZWtFbmQuZGF0ZSA8IG1pbkRhdGUpIHx8XG4gICAgICAgICAgICAgICAgKG1heERhdGUgJiYgd2Vla1N0YXJ0LmRhdGUgPiBtYXhEYXRlKTtcblxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxGcmFnbWVudCBrZXk9e2luZGV4fT5cbiAgICAgICAgICAgICAgICAgIHtzaG93Q2FsZW5kYXJXZWVrID8gKFxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcjogd2Vla0Rpc2FibGVkID8gdW5kZWZpbmVkIDogJ3BvaW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9udDogJ2luaGVyaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmlnaHQ6IGAxcHggc29saWQgJHtncmF5fWAsXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAod2Vla0Rpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWluID0gbWluRGF0ZSAmJiB3ZWVrU3RhcnQuZGF0ZSA8IG1pbkRhdGUgPyBtaW5EYXRlIDogd2Vla1N0YXJ0LmRhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXggPSBtYXhEYXRlICYmIHdlZWtFbmQuZGF0ZSA+IG1heERhdGUgPyBtYXhEYXRlIDogd2Vla0VuZC5kYXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0KG1pbiwgbWF4KTtcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlck92ZXI9eygpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAhd2Vla0Rpc2FibGVkICYmIHNldEhvdmVyZWQoeyBtaW46IHdlZWtTdGFydC5kYXRlLCBtYXg6IHdlZWtFbmQuZGF0ZSB9KVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJPdXQ9eygpID0+ICF3ZWVrRGlzYWJsZWQgJiYgc2V0SG92ZXJlZCh1bmRlZmluZWQpfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge2dldENhbGVuZGFyV2Vlayh3ZWVrRW5kLmRhdGUpfVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICAgIHt3ZWVrLm1hcCgoZGF0ZU9iamVjdCwgZGF5SW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFkYXRlT2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxkaXYga2V5PXtkYXlJbmRleH0gLz47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHByZXZNb250aCwgbmV4dE1vbnRoLCBkYXRlIH0gPSBkYXRlT2JqZWN0O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0b2RheSA9IHN0YXJ0T2ZEYXkoZGF0ZSkuZ2V0VGltZSgpID09PSBub3cuZ2V0VGltZSgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXNhYmxlZCA9IChtaW5EYXRlICYmIGRhdGUgPCBtaW5EYXRlKSB8fCAobWF4RGF0ZSAmJiBkYXRlID4gbWF4RGF0ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPVxuICAgICAgICAgICAgICAgICAgICAgIGRhdGUuZ2V0VGltZSgpID09PSBtaW4/LmdldFRpbWUoKSB8fFxuICAgICAgICAgICAgICAgICAgICAgIChtaW4gJiYgbWF4ICYmIGRhdGVJbnRlcnNlY3QoZGF0ZSwgeyBtaW4sIG1heCB9KSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZVNlbGVjdGVkID1cbiAgICAgICAgICAgICAgICAgICAgICAhc2VsZWN0ZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAhZGlzYWJsZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAoZGF0ZUludGVyc2VjdChkYXRlLCBob3ZlcmVkKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKG1pbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAhbWF4ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZUludGVyc2VjdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbiA8PSBob3ZlcmVkLm1pblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IG1pbiwgbWF4OiBob3ZlcmVkLm1pbiB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHsgbWluOiBob3ZlcmVkLm1heCwgbWF4OiBtaW4gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9ja2VkID0gYmxvY2tlZFJhbmdlcy5zb21lKChyYW5nZSkgPT4gZGF0ZUludGVyc2VjdChkYXRlLCByYW5nZSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2Ake2luZGV4fS0ke2RheUluZGV4fWB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2dldERheUNzc1N0eWxlcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2TW9udGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRNb250aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kYXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVTZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgey4uLmdldERhdGVQcm9wcyh7IGRhdGVPYmo6IGRhdGVPYmplY3QgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaXJ0eSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtaW4pIHNldChtaW4sIGRhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugc2V0KGRhdGUsIG1heCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0KGRhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyT3Zlcj17KCkgPT4gc2V0SG92ZXJlZCh7IG1pbjogZGF0ZSwgbWF4OiBkYXRlIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyT3V0PXsoKSA9PiBzZXRIb3ZlcmVkKHVuZGVmaW5lZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge2RhdGUuZ2V0RGF0ZSgpfVxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgPC9GcmFnbWVudD5cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICkpfVxuXG4gICAgICA8ZGl2XG4gICAgICAgIGNzcz17e1xuICAgICAgICAgIG1hcmdpblRvcDogJ3ZhcigtLXNwYWNpbmcpJyxcbiAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgZ3JpZEF1dG9GbG93OiAnY29sdW1uJyxcbiAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIHtyZXNvbHZlZFF1aWNrT3B0aW9uc31cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuIl19 */",
949
959
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__$d
950
960
  };
951
961
  var _ref3$2 = process.env.NODE_ENV === "production" ? {
@@ -954,7 +964,7 @@ var _ref3$2 = process.env.NODE_ENV === "production" ? {
954
964
  } : {
955
965
  name: "1e48re2-DatePicker",
956
966
  styles: "margin:calc(var(--spacing) * 4) 0;display:grid;grid-auto-flow:column;justify-content:space-between;align-items:center;label:DatePicker;",
957
- map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2RhdGVQaWNrZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTJiWSIsImZpbGUiOiIvaG9tZS9ydW5uZXIvd29yay9zY2h1bW1hci10YWJsZS9zY2h1bW1hci10YWJsZS9zcmMvY29tcG9uZW50cy9kYXRlUGlja2VyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVPYmosIHVzZURheXplZCB9IGZyb20gJ2RheXplZCc7XG5pbXBvcnQge1xuICBGcmFnbWVudCxcbiAgUmVhY3ROb2RlLFxuICBjcmVhdGVDb250ZXh0LFxuICB1c2VDb250ZXh0LFxuICB1c2VFZmZlY3QsXG4gIHVzZU1lbW8sXG4gIHVzZVN0YXRlLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJy4uL2hvb2tzL3VzZVRoZW1lJztcbmltcG9ydCB7IGRlZmF1bHRzIH0gZnJvbSAnLi4vbWlzYy9kZWZhdWx0cyc7XG5pbXBvcnQgeyBncmF5IH0gZnJvbSAnLi4vdGhlbWUvZGVmYXVsdFRoZW1lL2RlZmF1bHRDbGFzc2VzJztcbmltcG9ydCB7IHVzZUNzc1ZhcmlhYmxlcyB9IGZyb20gJy4uL3RoZW1lL3VzZUNzc1ZhcmlhYmxlcyc7XG5pbXBvcnQgeyBEYXRlSW5wdXQgfSBmcm9tICcuL2RhdGVJbnB1dCc7XG5pbXBvcnQgeyBUZXh0IH0gZnJvbSAnLi90ZXh0JztcbmltcG9ydCB7IEludGVycG9sYXRpb24sIFRoZW1lIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuXG5leHBvcnQgdHlwZSBEYXRlUmFuZ2UgPSB7IG1pbjogRGF0ZTsgbWF4OiBEYXRlIH07XG5cbmV4cG9ydCB0eXBlIERhdGVQaWNrZXJRdWlja09wdGlvbiA9XG4gIHwgJ3RvZGF5J1xuICB8ICd0aGlzV2VlaydcbiAgfCAndGhpc01vbnRoJ1xuICB8ICd0aGlzWWVhcidcbiAgfCAnbGFzdFNldmVuRGF5cydcbiAgfCAnbGFzdFRoaXJ0eURheXMnXG4gIHwgeyBsYWJlbDogUmVhY3ROb2RlOyB2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8ICgoKSA9PiBEYXRlIHwgRGF0ZVJhbmdlKSB9XG4gIHwgKChvbkNoYW5nZTogKHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCkgPT4gdm9pZCkgPT4gUmVhY3ROb2RlKTtcblxuZXhwb3J0IHR5cGUgRGF0ZVBpY2tlclByb3BzID0ge1xuICAvKiogQ3VycmVudGx5IHNlbGVjdGVkIGRheSBvciByYW5nZSBvZiBkYXlzLiAqL1xuICB2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGw7XG4gIC8qKiBDYWxsYmFjayBmb3Igd2hlbiB0aGUgZGF5IChyYW5nZSkgY2hhbmdlcy4gKi9cbiAgb25DaGFuZ2U6ICh2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpID0+IHZvaWQ7XG4gIC8qKiBDdXJyZW50bHkgdmlzaWJsZSBkYXRlLiAqL1xuICBkYXRlSW5WaWV3PzogRGF0ZTtcbiAgLyoqIENhbGxiYWNrIGZvciB3aGVuIHRoZSBjdXJyZW50bHkgdmlzaWJsZSBkYXRlIGNoYW5nZXMuICovXG4gIG9uRGF0ZUluVmlld0NoYW5nZT86ICh2YWx1ZTogRGF0ZSkgPT4gdm9pZDtcbiAgLyoqIElmIGVuYWJsZWQsIHJhbmdlcyBjYW4gYmUgc2VsZWN0ZWQuICovXG4gIHJhbmdlU2VsZWN0PzogYm9vbGVhbjtcbiAgLyoqIFdoaWNoIGxvY2FsZSB0byB1c2UgdG8gcmVuZGVyIHRoZSBjYWxlbmRhci4gKi9cbiAgbG9jYWxlPzogc3RyaW5nO1xuICAvKiogV2hpY2ggZGF5IG9mIHRoZSB3ZWVrIHNob3VsZCBiZSBpbiB0aGUgZmlyc3QgY29sdW1uLiAoMD1TdW5kYXksIDE9TW9uZGF5LCAuLi4pXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIGZpcnN0RGF5T2ZXZWVrPzogMCB8IDEgfCAyIHwgMyB8IDQgfCA1IHwgNjtcbiAgLyoqIFdoaWNoIG1vbnRoIHRvIHNob3cgaW5pdGlhbGx5ICovXG4gIGRlZmF1bHREYXRlSW5WaWV3PzogRGF0ZTtcbiAgLyoqIFNob3cgYnV0dG9ucyB0byBxdWlja2x5IHNlbGVjdCBzdWdnZXN0ZWQgZGF0ZXMgb3IgZGF0ZSByYW5nZXMgKi9cbiAgcXVpY2tPcHRpb25zPzogRGF0ZVBpY2tlclF1aWNrT3B0aW9uW107XG4gIC8qKiBNaW5pbXVtIHNlbGVjdGFibGUgZGF0ZSAqL1xuICAvKiogRGF0ZSByYW5nZXMgdGhhdCBhcmUgdmlzdWFsbHkgbWFya2VkIGFzIGJsb2NrZWQgKi9cbiAgYmxvY2tlZFJhbmdlcz86IERhdGVSYW5nZVtdO1xuICBtaW5EYXRlPzogRGF0ZTtcbiAgLyoqIE1heGltdW0gc2VsZWN0YWJsZSBkYXRlICovXG4gIG1heERhdGU/OiBEYXRlO1xuICAvKiogV2hldGhlciB0byBzaG93IHRoZSBjYWxlbmRhciB3ZWVrIGluIHRoZSBmaXJzdCBjb2x1bW4gKi9cbiAgc2hvd0NhbGVuZGFyV2Vlaz86IGJvb2xlYW47XG59O1xuXG5jb25zdCBEYXRlUGlja2VyQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8UGFydGlhbDxPbWl0PERhdGVQaWNrZXJQcm9wcywgJ3ZhbHVlJyB8ICdvbkNoYW5nZSc+Pj4oe30pO1xuXG5leHBvcnQgZnVuY3Rpb24gRGF0ZVBpY2tlclByb3ZpZGVyKHtcbiAgY2hpbGRyZW4sXG4gIC4uLnByb3BzXG59OiBQYXJ0aWFsPE9taXQ8RGF0ZVBpY2tlclByb3BzLCAndmFsdWUnIHwgJ29uQ2hhbmdlJz4+ICYgeyBjaGlsZHJlbj86IFJlYWN0Tm9kZSB9KSB7XG4gIGNvbnN0IHZhbHVlID0gdXNlTWVtbygoKSA9PiBwcm9wcywgW0pTT04uc3RyaW5naWZ5KHByb3BzKV0pO1xuXG4gIHJldHVybiA8RGF0ZVBpY2tlckNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3ZhbHVlfT57Y2hpbGRyZW59PC9EYXRlUGlja2VyQ29udGV4dC5Qcm92aWRlcj47XG59XG5cbmNvbnN0IHdlZWtEYXlzID0gWzAsIDEsIDIsIDMsIDQsIDUsIDZdIGFzIGNvbnN0O1xuXG4vKiogUm91bmRzIGEgZGF0ZSBkb3duIHRvIHRoZSBzdGFydCBvZiB0aGUgZGF5LiAqL1xuZXhwb3J0IGNvbnN0IHN0YXJ0T2ZEYXkgPSAoZDogRGF0ZSkgPT4gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCBkLmdldE1vbnRoKCksIGQuZ2V0RGF0ZSgpKTtcblxuLyoqIFJvdW5kcyBhIGRhdGUgdXAgdG8gdGhlIGVuZCBvZiB0aGUgZGF5LiAqL1xuZXhwb3J0IGNvbnN0IGVuZE9mRGF5ID0gKGQ6IERhdGUpID0+XG4gIG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgZC5nZXRNb250aCgpLCBkLmdldERhdGUoKSArIDEsIDAsIDAsIDAsIC0xKTtcblxuZXhwb3J0IGNvbnN0IGxhc3REYXlzID0gKGRheXM6IG51bWJlcik6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG4gIG1pbi5zZXREYXRlKG1pbi5nZXREYXRlKCkgLSBkYXlzICsgMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG5vdyksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdG9kYXkgPSAoKSA9PiBsYXN0RGF5cygxKTtcblxuZXhwb3J0IGNvbnN0IHRoaXNXZWVrID0gKGRlbHRhID0gMCwgZmlyc3REYXlPZldlZWsgPSAxKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcblxuICBsZXQgZGlmZiA9IG1pbi5nZXREYXkoKSAtIGZpcnN0RGF5T2ZXZWVrO1xuICBpZiAoZGlmZiA8IDApIHtcbiAgICBkaWZmICs9IDc7XG4gIH1cbiAgbWluLnNldERhdGUobWluLmdldERhdGUoKSAtIGRpZmYgKyBkZWx0YSAqIDcpO1xuXG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXREYXRlKG1heC5nZXREYXRlKCkgKyA2KTtcblxuICByZXR1cm4ge1xuICAgIG1pbjogc3RhcnRPZkRheShtaW4pLFxuICAgIG1heDogZW5kT2ZEYXkobWF4KSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCB0aGlzTW9udGggPSAoZGVsdGEgPSAwKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcbiAgbWluLnNldERhdGUoMSk7XG4gIG1pbi5zZXRNb250aChtaW4uZ2V0TW9udGgoKSArIGRlbHRhKTtcbiAgY29uc3QgbWF4ID0gbmV3IERhdGUobWluKTtcbiAgbWF4LnNldE1vbnRoKG1heC5nZXRNb250aCgpICsgMSk7XG4gIG1heC5zZXREYXRlKG1heC5nZXREYXRlKCkgLSAxKTtcblxuICByZXR1cm4ge1xuICAgIG1pbjogc3RhcnRPZkRheShtaW4pLFxuICAgIG1heDogZW5kT2ZEYXkobWF4KSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCB0aGlzWWVhciA9IChkZWx0YSA9IDApOiBEYXRlUmFuZ2UgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBtaW4gPSBuZXcgRGF0ZShub3cpO1xuICBtaW4uc2V0RGF0ZSgxKTtcbiAgbWluLnNldE1vbnRoKDApO1xuICBtaW4uc2V0RnVsbFllYXIobWluLmdldEZ1bGxZZWFyKCkgKyBkZWx0YSk7XG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXRGdWxsWWVhcihtYXguZ2V0RnVsbFllYXIoKSArIDEpO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpIC0gMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5jb25zdCBNU19QRVJfREFZID0gMTAwMCAqIDYwICogNjAgKiAyNDtcbmV4cG9ydCBjb25zdCBnZXRDYWxlbmRhcldlZWsgPSAoZGF0ZTogRGF0ZSk6IG51bWJlciA9PiB7XG4gIC8vIElTTyA4NjAxOiBXZWVrIDEgaXMgdGhlIHdlZWsgd2l0aCB0aGUgZmlyc3QgVGh1cnNkYXkgb2YgdGhlIHllYXIuXG4gIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcblxuICBjb25zdCB5ID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICBjb25zdCBmZG95ID0gbmV3IERhdGUoeSwgMCwgMSk7XG4gIGNvbnN0IGRveSA9IE1hdGguZmxvb3IoXG4gICAgKGRhdGUuZ2V0VGltZSgpIC0gZmRveS5nZXRUaW1lKCkgKyAoZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpIC0gZmRveS5nZXRUaW1lem9uZU9mZnNldCgpKSkgL1xuICAgICAgTVNfUEVSX0RBWSxcbiAgKTtcbiAgY29uc3QgZG93ID0gZmRveS5nZXREYXkoKTtcbiAgY29uc3QgdyA9IE1hdGguZmxvb3IoKDEwICsgZG95IC0gZG93KSAvIDcpO1xuXG4gIGlmICh3ID09PSAwKSB7XG4gICAgcmV0dXJuIGdldENhbGVuZGFyV2VlayhuZXcgRGF0ZSh5IC0gMSwgMTEsIDMxKSk7XG4gIH1cblxuICByZXR1cm4gdztcbn07XG5cbmV4cG9ydCBjb25zdCBjb21tb25RdWlja09wdGlvbnMgPSB7XG4gIHRvZGF5OiB7IGxhYmVsOiA8VGV4dCBpZD1cInRvZGF5XCIgLz4sIHZhbHVlOiB0b2RheSB9LFxuICB0aGlzV2VlazogeyBsYWJlbDogPFRleHQgaWQ9XCJ0aGlzV2Vla1wiIC8+LCB2YWx1ZTogKHByb3BzKSA9PiB0aGlzV2VlaygwLCBwcm9wcy5maXJzdERheU9mV2VlaykgfSxcbiAgdGhpc01vbnRoOiB7IGxhYmVsOiA8VGV4dCBpZD1cInRoaXNNb250aFwiIC8+LCB2YWx1ZTogKCkgPT4gdGhpc01vbnRoKCkgfSxcbiAgdGhpc1llYXI6IHsgbGFiZWw6IDxUZXh0IGlkPVwidGhpc1llYXJcIiAvPiwgdmFsdWU6ICgpID0+IHRoaXNZZWFyKCkgfSxcbiAgbGFzdFNldmVuRGF5czogeyBsYWJlbDogPFRleHQgaWQ9XCJsYXN0U2V2ZW5EYXlzXCIgLz4sIHZhbHVlOiAoKSA9PiBsYXN0RGF5cyg3KSB9LFxuICBsYXN0VGhpcnR5RGF5czogeyBsYWJlbDogPFRleHQgaWQ9XCJsYXN0VGhpcnR5RGF5c1wiIC8+LCB2YWx1ZTogKCkgPT4gbGFzdERheXMoMzApIH0sXG59IHNhdGlzZmllcyBSZWNvcmQ8XG4gIERhdGVQaWNrZXJRdWlja09wdGlvbiAmIHN0cmluZyxcbiAgeyBsYWJlbDogUmVhY3ROb2RlOyB2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8ICgocHJvcHM6IERhdGVQaWNrZXJQcm9wcykgPT4gRGF0ZSB8IERhdGVSYW5nZSkgfVxuPjtcblxuLyoqIFJldHVybnMgd2hldGhlciB0d28gZGF0ZXMgYW5kL29yIGRhdGUgcmFuZ2VzIGludGVyc2VjdC4gSW50ZXJzZWN0aW9uIGlzIGNvbnNpZGVyZWQgcGVyIGRheS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkYXRlSW50ZXJzZWN0KGE6IERhdGUgfCBudWxsIHwgRGF0ZVJhbmdlLCBiOiBEYXRlIHwgbnVsbCB8IERhdGVSYW5nZSkge1xuICBpZiAoYSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICBhID0geyBtaW46IGEsIG1heDogYSB9O1xuICB9XG4gIGlmIChiIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIGIgPSB7IG1pbjogYiwgbWF4OiBiIH07XG4gIH1cblxuICBpZiAoIWE/Lm1pbiB8fCAhYS5tYXggfHwgIWI/Lm1pbiB8fCAhYi5tYXgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gIShlbmRPZkRheShhLm1heCkgPCBzdGFydE9mRGF5KGIubWluKSB8fCBzdGFydE9mRGF5KGEubWluKSA+IGVuZE9mRGF5KGIubWF4KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRlQ2xhbXAoZGF0ZTogRGF0ZSwgbWluPzogRGF0ZSwgbWF4PzogRGF0ZSkge1xuICBpZiAobWluICYmIGRhdGUgPCBtaW4pIHtcbiAgICByZXR1cm4gbWluO1xuICB9XG5cbiAgaWYgKG1heCAmJiBkYXRlID4gbWF4KSB7XG4gICAgcmV0dXJuIG1heDtcbiAgfVxuXG4gIHJldHVybiBkYXRlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRGF0ZVBpY2tlcihwcm9wczogRGF0ZVBpY2tlclByb3BzKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KERhdGVQaWNrZXJDb250ZXh0KTtcblxuICBjb25zdCB7XG4gICAgdmFsdWUsXG4gICAgcmFuZ2VTZWxlY3QsXG4gICAgbG9jYWxlLFxuICAgIGZpcnN0RGF5T2ZXZWVrID0gMSxcbiAgICBkZWZhdWx0RGF0ZUluVmlldyxcbiAgICBxdWlja09wdGlvbnMgPSBbJ3RvZGF5JywgJ3RoaXNXZWVrJ10sXG4gICAgbWluRGF0ZSxcbiAgICBtYXhEYXRlLFxuICAgIHNob3dDYWxlbmRhcldlZWssXG4gICAgYmxvY2tlZFJhbmdlcyA9IFtdLFxuICB9ID0gZGVmYXVsdHM8RGF0ZVBpY2tlclByb3BzPihwcm9wcywgY29udGV4dCk7XG5cbiAgZnVuY3Rpb24gb25DaGFuZ2UodmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgdmFsdWUgPSBkYXRlQ2xhbXAodmFsdWUsIG1pbkRhdGUsIG1heERhdGUpO1xuICAgIH0gZWxzZSBpZiAodmFsdWUpIHtcbiAgICAgIHZhbHVlID0ge1xuICAgICAgICBtaW46IGRhdGVDbGFtcCh2YWx1ZS5taW4sIG1pbkRhdGUsIG1heERhdGUpLFxuICAgICAgICBtYXg6IGRhdGVDbGFtcCh2YWx1ZS5tYXgsIG1pbkRhdGUsIG1heERhdGUpLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBwcm9wcy5vbkNoYW5nZSh2YWx1ZSk7XG4gIH1cblxuICBjb25zdCBCdXR0b24gPSB1c2VUaGVtZSgodCkgPT4gdC5jb21wb25lbnRzLkJ1dHRvbik7XG4gIGNvbnN0IEljb25CdXR0b24gPSB1c2VUaGVtZSgodCkgPT4gdC5jb21wb25lbnRzLkljb25CdXR0b24pO1xuICBjb25zdCBDaGV2cm9uUmlnaHQgPSB1c2VUaGVtZSgodCkgPT4gdC5pY29ucy5DaGV2cm9uUmlnaHQpO1xuICBjb25zdCBjc3NWYXJpYWJsZXMgPSB1c2VDc3NWYXJpYWJsZXMoKTtcbiAgZnVuY3Rpb24gZ2V0RGF5Q3NzU3R5bGVzKHtcbiAgICBkaXNhYmxlZCxcbiAgICBwcmV2TW9udGgsXG4gICAgbmV4dE1vbnRoLFxuICAgIHRvZGF5LFxuICAgIGJsb2NrZWQsXG4gICAgc2VsZWN0ZWQsXG4gICAgcHJlU2VsZWN0ZWQsXG4gIH06IHtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgcHJldk1vbnRoPzogYm9vbGVhbjtcbiAgICBuZXh0TW9udGg/OiBib29sZWFuO1xuICAgIHRvZGF5PzogYm9vbGVhbjtcbiAgICBibG9ja2VkPzogYm9vbGVhbjtcbiAgICBzZWxlY3RlZD86IGJvb2xlYW47XG4gICAgcHJlU2VsZWN0ZWQ/OiBib29sZWFuO1xuICB9KTogSW50ZXJwb2xhdGlvbjxUaGVtZT4ge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICBib3JkZXI6ICdub25lJyxcbiAgICAgICAgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgY3Vyc29yOiBkaXNhYmxlZCA/IHVuZGVmaW5lZCA6ICdwb2ludGVyJyxcbiAgICAgICAgZm9udDogJ2luaGVyaXQnLFxuICAgICAgfSxcbiAgICAgIChwcmV2TW9udGggfHwgbmV4dE1vbnRoKSAmJiB7XG4gICAgICAgIGNvbG9yOiBncmF5LFxuICAgICAgfSxcbiAgICAgIHRvZGF5ICYmIHtcbiAgICAgICAgb3V0bGluZTogJzFweCBzb2xpZCB2YXIoLS1zZWNvbmRhcnlNYWluKScsXG4gICAgICB9LFxuICAgICAgYmxvY2tlZCAmJiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1ibG9ja2VkTWFpbiknLFxuICAgICAgICBjb2xvcjogJ3ZhcigtLWJsb2NrZWRDb250cmFzdFRleHQpJyxcbiAgICAgIH0sXG4gICAgICBzZWxlY3RlZCAmJiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1wcmltYXJ5TWFpbiknLFxuICAgICAgICBjb2xvcjogJ3ZhcigtLXByaW1hcnlDb250cmFzdFRleHQpJyxcbiAgICAgIH0sXG4gICAgICBibG9ja2VkICYmXG4gICAgICAgIHNlbGVjdGVkICYmIHtcbiAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICAgICAnOjpiZWZvcmUnOiB7XG4gICAgICAgICAgICBjb250ZW50OiAnXCJcIicsXG4gICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgIHJpZ2h0OiAwLFxuICAgICAgICAgICAgYm90dG9tOiAwLFxuICAgICAgICAgICAgbGVmdDogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1ibG9ja2VkTWFpbiknLFxuICAgICAgICAgICAgY2xpcFBhdGg6ICdwb2x5Z29uKDAgMCwgMCA1MCUsIDUwJSAwKScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIHByZVNlbGVjdGVkICYmIHtcbiAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLXByaW1hcnlMaWdodCknLFxuICAgICAgICBjb2xvcjogJ3ZhcigtLXByaW1hcnlDb250cmFzdFRleHQpJyxcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxuXG4gIGNvbnN0IG1vdW50VGltZSA9IHVzZU1lbW8oKCkgPT4gbmV3IERhdGUoKSwgW10pO1xuICBjb25zdCBbZGlydHksIHNldERpcnR5XSA9IHVzZVN0YXRlPFBhcnRpYWw8RGF0ZVJhbmdlPj4oKTtcbiAgY29uc3QgW2hvdmVyZWQsIHNldEhvdmVyZWRdID0gdXNlU3RhdGU8RGF0ZT4oKTtcbiAgY29uc3QgW2RhdGVJblZpZXdMb2NhbCwgc2V0RGF0ZUluVmlld0xvY2FsXSA9IHVzZVN0YXRlPERhdGU+KGRlZmF1bHREYXRlSW5WaWV3ID8/IG1vdW50VGltZSk7XG4gIGNvbnN0IGRhdGVJblZpZXcgPSBwcm9wcy5kYXRlSW5WaWV3ID8/IGRhdGVJblZpZXdMb2NhbDtcblxuICBmdW5jdGlvbiBzZXREYXRlSW5WaWV3KGRhdGU6IERhdGUpIHtcbiAgICBzZXREYXRlSW5WaWV3TG9jYWwoZGF0ZSk7XG4gICAgcHJvcHMub25EYXRlSW5WaWV3Q2hhbmdlPy4oZGF0ZSk7XG4gIH1cblxuICBjb25zdCBtaW4gPSBkaXJ0eSA/IGRpcnR5Lm1pbiA6IHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IHZhbHVlIDogdmFsdWU/Lm1pbjtcbiAgY29uc3QgbWF4ID0gZGlydHkgPyBkaXJ0eS5tYXggOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlPy5tYXg7XG5cbiAgY29uc3QgcmVzb2x2ZWRRdWlja09wdGlvbnMgPSBbLi4ucXVpY2tPcHRpb25zLCB7IGxhYmVsOiA8VGV4dCBpZD1cInJlc2V0XCIgLz4sIHZhbHVlOiBudWxsIH1dLm1hcChcbiAgICAob3B0aW9uLCBpbmRleCkgPT4ge1xuICAgICAgaWYgKG9wdGlvbiBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgICAgIHJldHVybiBvcHRpb24oKHZhbHVlKSA9PiB7XG4gICAgICAgICAgc2V0RGlydHkodW5kZWZpbmVkKTtcbiAgICAgICAgICBvbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IGxhYmVsLCB2YWx1ZSB9ID0gdHlwZW9mIG9wdGlvbiA9PT0gJ3N0cmluZycgPyBjb21tb25RdWlja09wdGlvbnNbb3B0aW9uXSA6IG9wdGlvbjtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG5cbiAgICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgICAgICAgICAgIG9uQ2hhbmdlKHZhbHVlKHByb3BzKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBvbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtsYWJlbH1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApO1xuICAgIH0sXG4gICk7XG5cbiAgY29uc3QgeyBjYWxlbmRhcnMsIGdldEJhY2tQcm9wcywgZ2V0Rm9yd2FyZFByb3BzLCBnZXREYXRlUHJvcHMgfSA9IHVzZURheXplZCh7XG4gICAgb25EYXRlU2VsZWN0ZWQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICBmaXJzdERheU9mV2VlayxcbiAgICBzaG93T3V0c2lkZURheXM6IHRydWUsXG4gICAgZGF0ZTogZGF0ZUluVmlldyxcbiAgICBvbk9mZnNldENoYW5nZWQ6IChvZmZzZXQpID0+XG4gICAgICBzZXREYXRlSW5WaWV3KG5ldyBEYXRlKGRhdGVJblZpZXcuZ2V0RnVsbFllYXIoKSwgZGF0ZUluVmlldy5nZXRNb250aCgpICsgb2Zmc2V0KSksXG4gICAgb2Zmc2V0OiAwLFxuICAgIG1pbkRhdGUsXG4gICAgbWF4RGF0ZSxcbiAgfSk7XG4gIGNvbnN0IG5vdyA9IHVzZU1lbW8oKCkgPT4gc3RhcnRPZkRheShuZXcgRGF0ZSgpKSwgW10pO1xuXG4gIGNvbnN0IGZvcm1hdFdlZWtkYXkgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IGZvcm1hdCB9ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IHdlZWtkYXk6ICdzaG9ydCcgfSk7XG4gICAgcmV0dXJuICh3ZWVrRGF5OiBudW1iZXIpID0+XG4gICAgICBmb3JtYXQobmV3IERhdGUoRGF0ZS5VVEMoMjAyMSwgNywgKCh3ZWVrRGF5ICsgZmlyc3REYXlPZldlZWspICUgNykgKyAxKSkpO1xuICB9LCBbbG9jYWxlLCBmaXJzdERheU9mV2Vla10pO1xuXG4gIHVzZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgc2V0RGF0ZUluVmlldyhcbiAgICAgICAgdmFsdWUgPT09IG51bGwgPyBkZWZhdWx0RGF0ZUluVmlldyA/PyBtb3VudFRpbWUgOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlLm1heCxcbiAgICAgICksXG4gICAgW3ZhbHVlLCBkZWZhdWx0RGF0ZUluVmlldywgbW91bnRUaW1lXSxcbiAgKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghcmFuZ2VTZWxlY3QpIHtcbiAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgfVxuICB9LCBbcmFuZ2VTZWxlY3RdKTtcblxuICBmdW5jdGlvbiBzZXQobWluPzogRGF0ZSwgbWF4PzogRGF0ZSwgZWRpdD86ICdtaW4nIHwgJ21heCcpIHtcbiAgICBpZiAoIXJhbmdlU2VsZWN0KSB7XG4gICAgICBvbkNoYW5nZShtaW4gPz8gbnVsbCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKG1pbiAmJiBtYXggJiYgbWluID4gbWF4KSB7XG4gICAgICBpZiAoZWRpdCA9PT0gJ21pbicpIHtcbiAgICAgICAgbWF4ID0gbWluO1xuICAgICAgfSBlbHNlIGlmIChlZGl0ID09PSAnbWF4Jykge1xuICAgICAgICBtaW4gPSBtYXg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbbWluLCBtYXhdID0gW21heCwgbWluXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIW1pbiA9PT0gIW1heCkge1xuICAgICAgc2V0RGlydHkodW5kZWZpbmVkKTtcbiAgICAgIG9uQ2hhbmdlKG1pbiAmJiBtYXggPyB7IG1pbiwgbWF4OiBlbmRPZkRheShtYXgpIH0gOiBudWxsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0RGlydHkoeyBtaW4sIG1heCB9KTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBmb3JtYXRNb250aCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHsgZm9ybWF0IH0gPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUsIHsgbW9udGg6ICdsb25nJyB9KTtcbiAgICByZXR1cm4gKG1vbnRoOiBudW1iZXIpID0+IGZvcm1hdChuZXcgRGF0ZSgyMDIxLCBtb250aCkpO1xuICB9LCBbbG9jYWxlXSk7XG5cbiAgY29uc3QgZm9ybWF0WWVhciA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHsgZm9ybWF0IH0gPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUsIHsgeWVhcjogJ251bWVyaWMnIH0pO1xuICAgIHJldHVybiAoeWVhcjogbnVtYmVyKSA9PiBmb3JtYXQobmV3IERhdGUoeWVhciwgMCwgMSkpO1xuICB9LCBbbG9jYWxlXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNzcz17Y3NzVmFyaWFibGVzfT5cbiAgICAgIDxkaXZcbiAgICAgICAgY3NzPXt7XG4gICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgIGdyaWRBdXRvRmxvdzogJ2NvbHVtbicsXG4gICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgIGFsaWduSXRlbXM6ICdiYXNlbGluZScsXG4gICAgICAgICAgZ2FwOiAndmFyKC0tc3BhY2luZyknLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8RGF0ZUlucHV0XG4gICAgICAgICAgdmFsdWU9e21pbiA/PyBudWxsfVxuICAgICAgICAgIG9uQ2hhbmdlPXsoZGF0ZSkgPT4gc2V0KGRhdGUgPz8gdW5kZWZpbmVkLCBtYXgsICdtaW4nKX1cbiAgICAgICAgICBsb2NhbGU9e2xvY2FsZX1cbiAgICAgICAgLz5cblxuICAgICAgICB7cmFuZ2VTZWxlY3QgJiYgKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICB7JyAtICd9XG4gICAgICAgICAgICA8RGF0ZUlucHV0XG4gICAgICAgICAgICAgIHZhbHVlPXttYXggPz8gbnVsbH1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhkYXRlKSA9PiBzZXQobWluLCBkYXRlID8/IHVuZGVmaW5lZCwgJ21heCcpfVxuICAgICAgICAgICAgICBsb2NhbGU9e2xvY2FsZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cblxuICAgICAge2NhbGVuZGFycy5tYXAoKHsgbW9udGgsIHllYXIsIHdlZWtzIH0pID0+IChcbiAgICAgICAgPGRpdiBrZXk9e2Ake21vbnRofSR7eWVhcn1gfSBjc3M9e3sgZGlzcGxheTogJ2dyaWQnIH19PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICBtYXJnaW46ICdjYWxjKHZhcigtLXNwYWNpbmcpICogNCkgMCcsXG4gICAgICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICAgICAgZ3JpZEF1dG9GbG93OiAnY29sdW1uJyxcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJyxcbiAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxJY29uQnV0dG9uIHR5cGU9XCJidXR0b25cIiB7Li4uZ2V0QmFja1Byb3BzKHsgY2FsZW5kYXJzIH0pfT5cbiAgICAgICAgICAgICAgPENoZXZyb25SaWdodCBjc3M9e3sgdHJhbnNmb3JtOiAncm90YXRlM2QoMCwgMCwgMSwgMTgwZGVnKScgfX0gLz5cbiAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cblxuICAgICAgICAgICAgPGRpdiBjc3M9e3sgZGlzcGxheTogJ2ZsZXgnIH19PlxuICAgICAgICAgICAgICB7Zm9ybWF0TW9udGgobW9udGgpfSB7Zm9ybWF0WWVhcih5ZWFyKX1cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8SWNvbkJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgey4uLmdldEZvcndhcmRQcm9wcyh7IGNhbGVuZGFycyB9KX0+XG4gICAgICAgICAgICAgIDxDaGV2cm9uUmlnaHQgLz5cbiAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICBqdXN0aWZ5U2VsZjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICAgICAgZ3JpZFRlbXBsYXRlQ29sdW1uczogJ3JlcGVhdCg4LCBtYXgtY29udGVudCknLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7c2hvd0NhbGVuZGFyV2VlayA/IChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICAgICAganVzdGlmeVNlbGY6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgICAgICAgICAgICBib3JkZXJSaWdodDogYDFweCBzb2xpZCAke2dyYXl9YCxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFRleHQgaWQ9XCJjYWxlbmRhcldlZWtcIiAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHt3ZWVrRGF5cy5tYXAoKF92LCB3ZWVrRGF5KSA9PiAoXG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBrZXk9e3dlZWtEYXl9XG4gICAgICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgICAgICBqdXN0aWZ5U2VsZjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge2Zvcm1hdFdlZWtkYXkod2Vla0RheSl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKSl9XG5cbiAgICAgICAgICAgIHt3ZWVrcy5tYXAoKHdlZWssIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHdlZWtTdGFydCA9IHdlZWtbMF0gYXMgRGF0ZU9iajtcbiAgICAgICAgICAgICAgY29uc3Qgd2Vla0VuZCA9IHdlZWtbNl0gYXMgRGF0ZU9iajtcbiAgICAgICAgICAgICAgY29uc3Qgd2Vla0Rpc2FibGVkID1cbiAgICAgICAgICAgICAgICAhcmFuZ2VTZWxlY3QgfHxcbiAgICAgICAgICAgICAgICAobWluRGF0ZSAmJiB3ZWVrRW5kLmRhdGUgPCBtaW5EYXRlKSB8fFxuICAgICAgICAgICAgICAgIChtYXhEYXRlICYmIHdlZWtTdGFydC5kYXRlID4gbWF4RGF0ZSk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8RnJhZ21lbnQga2V5PXtpbmRleH0+XG4gICAgICAgICAgICAgICAgICB7c2hvd0NhbGVuZGFyV2VlayA/IChcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI6ICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3I6IHdlZWtEaXNhYmxlZCA/IHVuZGVmaW5lZCA6ICdwb2ludGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQ6ICdpbmhlcml0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJpZ2h0OiBgMXB4IHNvbGlkICR7Z3JheX1gLFxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdlZWtEaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1pbiA9IG1pbkRhdGUgJiYgd2Vla1N0YXJ0LmRhdGUgPCBtaW5EYXRlID8gbWluRGF0ZSA6IHdlZWtTdGFydC5kYXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF4ID0gbWF4RGF0ZSAmJiB3ZWVrRW5kLmRhdGUgPiBtYXhEYXRlID8gbWF4RGF0ZSA6IHdlZWtFbmQuZGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldChtaW4sIG1heCk7XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtnZXRDYWxlbmRhcldlZWsoKHdlZWtbMF0gYXMgRGF0ZU9iaikuZGF0ZSl9XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAvPlxuICAgICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgICAge3dlZWsubWFwKChkYXRlT2JqZWN0LCBkYXlJbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWRhdGVPYmplY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPGRpdiBrZXk9e2RheUluZGV4fSAvPjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgcHJldk1vbnRoLCBuZXh0TW9udGgsIGRhdGUgfSA9IGRhdGVPYmplY3Q7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRvZGF5ID0gc3RhcnRPZkRheShkYXRlKS5nZXRUaW1lKCkgPT09IG5vdy5nZXRUaW1lKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpc2FibGVkID0gKG1pbkRhdGUgJiYgZGF0ZSA8IG1pbkRhdGUpIHx8IChtYXhEYXRlICYmIGRhdGUgPiBtYXhEYXRlKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZCA9XG4gICAgICAgICAgICAgICAgICAgICAgZGF0ZS5nZXRUaW1lKCkgPT09IG1pbj8uZ2V0VGltZSgpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgKG1pbiAmJiBtYXggJiYgZGF0ZUludGVyc2VjdChkYXRlLCB7IG1pbiwgbWF4IH0pKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJlU2VsZWN0ZWQgPVxuICAgICAgICAgICAgICAgICAgICAgICFzZWxlY3RlZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICFkaXNhYmxlZCAmJlxuICAgICAgICAgICAgICAgICAgICAgIChkYXRlLmdldFRpbWUoKSA9PT0gaG92ZXJlZD8uZ2V0VGltZSgpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAobWluICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICFtYXggJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJlZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlSW50ZXJzZWN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluIDw9IGhvdmVyZWQgPyB7IG1pbiwgbWF4OiBob3ZlcmVkIH0gOiB7IG1pbjogaG92ZXJlZCwgbWF4OiBtaW4gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9ja2VkID0gYmxvY2tlZFJhbmdlcy5zb21lKChyYW5nZSkgPT4gZGF0ZUludGVyc2VjdChkYXRlLCByYW5nZSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2Ake2luZGV4fS0ke2RheUluZGV4fWB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2dldERheUNzc1N0eWxlcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2TW9udGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRNb250aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kYXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVTZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgey4uLmdldERhdGVQcm9wcyh7IGRhdGVPYmo6IGRhdGVPYmplY3QgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaXJ0eSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtaW4pIHNldChtaW4sIGRhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugc2V0KGRhdGUsIG1heCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0KGRhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyT3Zlcj17KCkgPT4gc2V0SG92ZXJlZChkYXRlKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlck91dD17KCkgPT4gc2V0SG92ZXJlZCh1bmRlZmluZWQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtkYXRlLmdldERhdGUoKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICApKX1cblxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e3tcbiAgICAgICAgICBtYXJnaW5Ub3A6ICd2YXIoLS1zcGFjaW5nKScsXG4gICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgIGdyaWRBdXRvRmxvdzogJ2NvbHVtbicsXG4gICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICB7cmVzb2x2ZWRRdWlja09wdGlvbnN9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiJdfQ== */",
967
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2RhdGVQaWNrZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW9kWSIsImZpbGUiOiIvaG9tZS9ydW5uZXIvd29yay9zY2h1bW1hci10YWJsZS9zY2h1bW1hci10YWJsZS9zcmMvY29tcG9uZW50cy9kYXRlUGlja2VyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVPYmosIHVzZURheXplZCB9IGZyb20gJ2RheXplZCc7XG5pbXBvcnQge1xuICBGcmFnbWVudCxcbiAgUmVhY3ROb2RlLFxuICBjcmVhdGVDb250ZXh0LFxuICB1c2VDb250ZXh0LFxuICB1c2VFZmZlY3QsXG4gIHVzZU1lbW8sXG4gIHVzZVN0YXRlLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJy4uL2hvb2tzL3VzZVRoZW1lJztcbmltcG9ydCB7IGRlZmF1bHRzIH0gZnJvbSAnLi4vbWlzYy9kZWZhdWx0cyc7XG5pbXBvcnQgeyBncmF5IH0gZnJvbSAnLi4vdGhlbWUvZGVmYXVsdFRoZW1lL2RlZmF1bHRDbGFzc2VzJztcbmltcG9ydCB7IHVzZUNzc1ZhcmlhYmxlcyB9IGZyb20gJy4uL3RoZW1lL3VzZUNzc1ZhcmlhYmxlcyc7XG5pbXBvcnQgeyBEYXRlSW5wdXQgfSBmcm9tICcuL2RhdGVJbnB1dCc7XG5pbXBvcnQgeyBUZXh0IH0gZnJvbSAnLi90ZXh0JztcbmltcG9ydCB7IEludGVycG9sYXRpb24sIFRoZW1lIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuXG5leHBvcnQgdHlwZSBEYXRlUmFuZ2UgPSB7IG1pbjogRGF0ZTsgbWF4OiBEYXRlIH07XG5cbmV4cG9ydCB0eXBlIERhdGVQaWNrZXJRdWlja09wdGlvbiA9XG4gIHwgJ3RvZGF5J1xuICB8ICd0aGlzV2VlaydcbiAgfCAndGhpc01vbnRoJ1xuICB8ICd0aGlzWWVhcidcbiAgfCAnbGFzdFNldmVuRGF5cydcbiAgfCAnbGFzdFRoaXJ0eURheXMnXG4gIHwgeyBsYWJlbDogUmVhY3ROb2RlOyB2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8ICgoKSA9PiBEYXRlIHwgRGF0ZVJhbmdlKSB9XG4gIHwgKChvbkNoYW5nZTogKHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCkgPT4gdm9pZCkgPT4gUmVhY3ROb2RlKTtcblxuZXhwb3J0IHR5cGUgRGF0ZVBpY2tlclByb3BzID0ge1xuICAvKiogQ3VycmVudGx5IHNlbGVjdGVkIGRheSBvciByYW5nZSBvZiBkYXlzLiAqL1xuICB2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGw7XG4gIC8qKiBDYWxsYmFjayBmb3Igd2hlbiB0aGUgZGF5IChyYW5nZSkgY2hhbmdlcy4gKi9cbiAgb25DaGFuZ2U6ICh2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpID0+IHZvaWQ7XG4gIC8qKiBDdXJyZW50bHkgdmlzaWJsZSBkYXRlLiAqL1xuICBkYXRlSW5WaWV3PzogRGF0ZTtcbiAgLyoqIENhbGxiYWNrIGZvciB3aGVuIHRoZSBjdXJyZW50bHkgdmlzaWJsZSBkYXRlIGNoYW5nZXMuICovXG4gIG9uRGF0ZUluVmlld0NoYW5nZT86ICh2YWx1ZTogRGF0ZSkgPT4gdm9pZDtcbiAgLyoqIElmIGVuYWJsZWQsIHJhbmdlcyBjYW4gYmUgc2VsZWN0ZWQuICovXG4gIHJhbmdlU2VsZWN0PzogYm9vbGVhbjtcbiAgLyoqIFdoaWNoIGxvY2FsZSB0byB1c2UgdG8gcmVuZGVyIHRoZSBjYWxlbmRhci4gKi9cbiAgbG9jYWxlPzogc3RyaW5nO1xuICAvKiogV2hpY2ggZGF5IG9mIHRoZSB3ZWVrIHNob3VsZCBiZSBpbiB0aGUgZmlyc3QgY29sdW1uLiAoMD1TdW5kYXksIDE9TW9uZGF5LCAuLi4pXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIGZpcnN0RGF5T2ZXZWVrPzogMCB8IDEgfCAyIHwgMyB8IDQgfCA1IHwgNjtcbiAgLyoqIFdoaWNoIG1vbnRoIHRvIHNob3cgaW5pdGlhbGx5ICovXG4gIGRlZmF1bHREYXRlSW5WaWV3PzogRGF0ZTtcbiAgLyoqIFNob3cgYnV0dG9ucyB0byBxdWlja2x5IHNlbGVjdCBzdWdnZXN0ZWQgZGF0ZXMgb3IgZGF0ZSByYW5nZXMgKi9cbiAgcXVpY2tPcHRpb25zPzogRGF0ZVBpY2tlclF1aWNrT3B0aW9uW107XG4gIC8qKiBNaW5pbXVtIHNlbGVjdGFibGUgZGF0ZSAqL1xuICAvKiogRGF0ZSByYW5nZXMgdGhhdCBhcmUgdmlzdWFsbHkgbWFya2VkIGFzIGJsb2NrZWQgKi9cbiAgYmxvY2tlZFJhbmdlcz86IERhdGVSYW5nZVtdO1xuICBtaW5EYXRlPzogRGF0ZTtcbiAgLyoqIE1heGltdW0gc2VsZWN0YWJsZSBkYXRlICovXG4gIG1heERhdGU/OiBEYXRlO1xuICAvKiogV2hldGhlciB0byBzaG93IHRoZSBjYWxlbmRhciB3ZWVrIGluIHRoZSBmaXJzdCBjb2x1bW4gKi9cbiAgc2hvd0NhbGVuZGFyV2Vlaz86IGJvb2xlYW47XG59O1xuXG5jb25zdCBEYXRlUGlja2VyQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8UGFydGlhbDxPbWl0PERhdGVQaWNrZXJQcm9wcywgJ3ZhbHVlJyB8ICdvbkNoYW5nZSc+Pj4oe30pO1xuXG5leHBvcnQgZnVuY3Rpb24gRGF0ZVBpY2tlclByb3ZpZGVyKHtcbiAgY2hpbGRyZW4sXG4gIC4uLnByb3BzXG59OiBQYXJ0aWFsPE9taXQ8RGF0ZVBpY2tlclByb3BzLCAndmFsdWUnIHwgJ29uQ2hhbmdlJz4+ICYgeyBjaGlsZHJlbj86IFJlYWN0Tm9kZSB9KSB7XG4gIGNvbnN0IHZhbHVlID0gdXNlTWVtbygoKSA9PiBwcm9wcywgW0pTT04uc3RyaW5naWZ5KHByb3BzKV0pO1xuXG4gIHJldHVybiA8RGF0ZVBpY2tlckNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3ZhbHVlfT57Y2hpbGRyZW59PC9EYXRlUGlja2VyQ29udGV4dC5Qcm92aWRlcj47XG59XG5cbmNvbnN0IHdlZWtEYXlzID0gWzAsIDEsIDIsIDMsIDQsIDUsIDZdIGFzIGNvbnN0O1xuXG4vKiogUm91bmRzIGEgZGF0ZSBkb3duIHRvIHRoZSBzdGFydCBvZiB0aGUgZGF5LiAqL1xuZXhwb3J0IGNvbnN0IHN0YXJ0T2ZEYXkgPSAoZDogRGF0ZSkgPT4gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCBkLmdldE1vbnRoKCksIGQuZ2V0RGF0ZSgpKTtcblxuLyoqIFJvdW5kcyBhIGRhdGUgdXAgdG8gdGhlIGVuZCBvZiB0aGUgZGF5LiAqL1xuZXhwb3J0IGNvbnN0IGVuZE9mRGF5ID0gKGQ6IERhdGUpID0+XG4gIG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgZC5nZXRNb250aCgpLCBkLmdldERhdGUoKSArIDEsIDAsIDAsIDAsIC0xKTtcblxuZXhwb3J0IGNvbnN0IGxhc3REYXlzID0gKGRheXM6IG51bWJlcik6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG4gIG1pbi5zZXREYXRlKG1pbi5nZXREYXRlKCkgLSBkYXlzICsgMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG5vdyksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdG9kYXkgPSAoKSA9PiBsYXN0RGF5cygxKTtcblxuZXhwb3J0IGNvbnN0IHRoaXNXZWVrID0gKGRlbHRhID0gMCwgZmlyc3REYXlPZldlZWsgPSAxKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcblxuICBsZXQgZGlmZiA9IG1pbi5nZXREYXkoKSAtIGZpcnN0RGF5T2ZXZWVrO1xuICBpZiAoZGlmZiA8IDApIHtcbiAgICBkaWZmICs9IDc7XG4gIH1cbiAgbWluLnNldERhdGUobWluLmdldERhdGUoKSAtIGRpZmYgKyBkZWx0YSAqIDcpO1xuXG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXREYXRlKG1heC5nZXREYXRlKCkgKyA2KTtcblxuICByZXR1cm4ge1xuICAgIG1pbjogc3RhcnRPZkRheShtaW4pLFxuICAgIG1heDogZW5kT2ZEYXkobWF4KSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCB0aGlzTW9udGggPSAoZGVsdGEgPSAwKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcbiAgbWluLnNldERhdGUoMSk7XG4gIG1pbi5zZXRNb250aChtaW4uZ2V0TW9udGgoKSArIGRlbHRhKTtcbiAgY29uc3QgbWF4ID0gbmV3IERhdGUobWluKTtcbiAgbWF4LnNldE1vbnRoKG1heC5nZXRNb250aCgpICsgMSk7XG4gIG1heC5zZXREYXRlKG1heC5nZXREYXRlKCkgLSAxKTtcblxuICByZXR1cm4ge1xuICAgIG1pbjogc3RhcnRPZkRheShtaW4pLFxuICAgIG1heDogZW5kT2ZEYXkobWF4KSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCB0aGlzWWVhciA9IChkZWx0YSA9IDApOiBEYXRlUmFuZ2UgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBtaW4gPSBuZXcgRGF0ZShub3cpO1xuICBtaW4uc2V0RGF0ZSgxKTtcbiAgbWluLnNldE1vbnRoKDApO1xuICBtaW4uc2V0RnVsbFllYXIobWluLmdldEZ1bGxZZWFyKCkgKyBkZWx0YSk7XG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXRGdWxsWWVhcihtYXguZ2V0RnVsbFllYXIoKSArIDEpO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpIC0gMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5jb25zdCBNU19QRVJfREFZID0gMTAwMCAqIDYwICogNjAgKiAyNDtcbmV4cG9ydCBjb25zdCBnZXRDYWxlbmRhcldlZWsgPSAoZGF0ZTogRGF0ZSk6IG51bWJlciA9PiB7XG4gIC8vIElTTyA4NjAxOiBXZWVrIDEgaXMgdGhlIHdlZWsgd2l0aCB0aGUgZmlyc3QgVGh1cnNkYXkgb2YgdGhlIHllYXIuXG4gIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcblxuICBjb25zdCBlbmRPZldlZWsgPSBuZXcgRGF0ZShcbiAgICBkYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgZGF0ZS5nZXRNb250aCgpLFxuICAgIGRhdGUuZ2V0RGF0ZSgpICsgKDcgLSAoZGF0ZS5nZXREYXkoKSB8fCA3KSksXG4gICk7XG5cbiAgY29uc3QgeWVhciA9IGVuZE9mV2Vlay5nZXRGdWxsWWVhcigpO1xuICBjb25zdCBmaXJzdERheU9mWWVhciA9IG5ldyBEYXRlKHllYXIsIDAsIDEpO1xuICBjb25zdCBkYXlPZlllYXIgPVxuICAgIE1hdGguZmxvb3IoXG4gICAgICAoZW5kT2ZXZWVrLmdldFRpbWUoKSAtXG4gICAgICAgIGZpcnN0RGF5T2ZZZWFyLmdldFRpbWUoKSArXG4gICAgICAgIChlbmRPZldlZWsuZ2V0VGltZXpvbmVPZmZzZXQoKSAtIGZpcnN0RGF5T2ZZZWFyLmdldFRpbWV6b25lT2Zmc2V0KCkpKSAvXG4gICAgICAgIE1TX1BFUl9EQVksXG4gICAgKSArIDE7XG4gIGNvbnN0IHdlZWtPZlllYXIgPSBNYXRoLmZsb29yKCgzICsgZGF5T2ZZZWFyKSAvIDcpO1xuXG4gIGlmICh3ZWVrT2ZZZWFyID09PSAwKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGdldENhbGVuZGFyV2VlayhcbiAgICAgICAgbmV3IERhdGUoZW5kT2ZXZWVrLmdldEZ1bGxZZWFyKCksIGVuZE9mV2Vlay5nZXRNb250aCgpLCBlbmRPZldlZWsuZ2V0RGF0ZSgpIC0gNyksXG4gICAgICApICsgMVxuICAgICk7XG4gIH1cblxuICByZXR1cm4gd2Vla09mWWVhcjtcbn07XG5cbmV4cG9ydCBjb25zdCBjb21tb25RdWlja09wdGlvbnMgPSB7XG4gIHRvZGF5OiB7IGxhYmVsOiA8VGV4dCBpZD1cInRvZGF5XCIgLz4sIHZhbHVlOiB0b2RheSB9LFxuICB0aGlzV2VlazogeyBsYWJlbDogPFRleHQgaWQ9XCJ0aGlzV2Vla1wiIC8+LCB2YWx1ZTogKHByb3BzKSA9PiB0aGlzV2VlaygwLCBwcm9wcy5maXJzdERheU9mV2VlaykgfSxcbiAgdGhpc01vbnRoOiB7IGxhYmVsOiA8VGV4dCBpZD1cInRoaXNNb250aFwiIC8+LCB2YWx1ZTogKCkgPT4gdGhpc01vbnRoKCkgfSxcbiAgdGhpc1llYXI6IHsgbGFiZWw6IDxUZXh0IGlkPVwidGhpc1llYXJcIiAvPiwgdmFsdWU6ICgpID0+IHRoaXNZZWFyKCkgfSxcbiAgbGFzdFNldmVuRGF5czogeyBsYWJlbDogPFRleHQgaWQ9XCJsYXN0U2V2ZW5EYXlzXCIgLz4sIHZhbHVlOiAoKSA9PiBsYXN0RGF5cyg3KSB9LFxuICBsYXN0VGhpcnR5RGF5czogeyBsYWJlbDogPFRleHQgaWQ9XCJsYXN0VGhpcnR5RGF5c1wiIC8+LCB2YWx1ZTogKCkgPT4gbGFzdERheXMoMzApIH0sXG59IHNhdGlzZmllcyBSZWNvcmQ8XG4gIERhdGVQaWNrZXJRdWlja09wdGlvbiAmIHN0cmluZyxcbiAgeyBsYWJlbDogUmVhY3ROb2RlOyB2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8ICgocHJvcHM6IERhdGVQaWNrZXJQcm9wcykgPT4gRGF0ZSB8IERhdGVSYW5nZSkgfVxuPjtcblxuLyoqIFJldHVybnMgd2hldGhlciB0d28gZGF0ZXMgYW5kL29yIGRhdGUgcmFuZ2VzIGludGVyc2VjdC4gSW50ZXJzZWN0aW9uIGlzIGNvbnNpZGVyZWQgcGVyIGRheS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkYXRlSW50ZXJzZWN0KFxuICBhOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgYjogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwgfCB1bmRlZmluZWQsXG4pIHtcbiAgaWYgKGEgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgYSA9IHsgbWluOiBhLCBtYXg6IGEgfTtcbiAgfVxuICBpZiAoYiBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICBiID0geyBtaW46IGIsIG1heDogYiB9O1xuICB9XG5cbiAgaWYgKCFhPy5taW4gfHwgIWEubWF4IHx8ICFiPy5taW4gfHwgIWIubWF4KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuICEoZW5kT2ZEYXkoYS5tYXgpIDwgc3RhcnRPZkRheShiLm1pbikgfHwgc3RhcnRPZkRheShhLm1pbikgPiBlbmRPZkRheShiLm1heCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUNsYW1wKGRhdGU6IERhdGUsIG1pbj86IERhdGUsIG1heD86IERhdGUpIHtcbiAgaWYgKG1pbiAmJiBkYXRlIDwgbWluKSB7XG4gICAgcmV0dXJuIG1pbjtcbiAgfVxuXG4gIGlmIChtYXggJiYgZGF0ZSA+IG1heCkge1xuICAgIHJldHVybiBtYXg7XG4gIH1cblxuICByZXR1cm4gZGF0ZTtcbn1cblxuZnVuY3Rpb24gZ2V0VmFsdWVGb3JDb21wYXJpc29uKHZhbHVlPzogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpIHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgcmV0dXJuIHZhbHVlLmdldFRpbWUoKTtcbiAgfVxuICByZXR1cm4gYCR7dmFsdWUubWluPy5nZXRUaW1lKCl9LSR7dmFsdWUubWF4Py5nZXRUaW1lKCl9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVQaWNrZXIocHJvcHM6IERhdGVQaWNrZXJQcm9wcykge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChEYXRlUGlja2VyQ29udGV4dCk7XG5cbiAgY29uc3Qge1xuICAgIHZhbHVlLFxuICAgIHJhbmdlU2VsZWN0LFxuICAgIGxvY2FsZSxcbiAgICBmaXJzdERheU9mV2VlayA9IDEsXG4gICAgZGVmYXVsdERhdGVJblZpZXcsXG4gICAgcXVpY2tPcHRpb25zID0gWyd0b2RheScsICd0aGlzV2VlayddLFxuICAgIG1pbkRhdGUsXG4gICAgbWF4RGF0ZSxcbiAgICBzaG93Q2FsZW5kYXJXZWVrLFxuICAgIGJsb2NrZWRSYW5nZXMgPSBbXSxcbiAgfSA9IGRlZmF1bHRzPERhdGVQaWNrZXJQcm9wcz4ocHJvcHMsIGNvbnRleHQpO1xuXG4gIGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCkge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIHZhbHVlID0gZGF0ZUNsYW1wKHZhbHVlLCBtaW5EYXRlLCBtYXhEYXRlKTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICB2YWx1ZSA9IHtcbiAgICAgICAgbWluOiBkYXRlQ2xhbXAodmFsdWUubWluLCBtaW5EYXRlLCBtYXhEYXRlKSxcbiAgICAgICAgbWF4OiBkYXRlQ2xhbXAodmFsdWUubWF4LCBtaW5EYXRlLCBtYXhEYXRlKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcHJvcHMub25DaGFuZ2UodmFsdWUpO1xuICB9XG5cbiAgY29uc3QgQnV0dG9uID0gdXNlVGhlbWUoKHQpID0+IHQuY29tcG9uZW50cy5CdXR0b24pO1xuICBjb25zdCBJY29uQnV0dG9uID0gdXNlVGhlbWUoKHQpID0+IHQuY29tcG9uZW50cy5JY29uQnV0dG9uKTtcbiAgY29uc3QgQ2hldnJvblJpZ2h0ID0gdXNlVGhlbWUoKHQpID0+IHQuaWNvbnMuQ2hldnJvblJpZ2h0KTtcbiAgY29uc3QgY3NzVmFyaWFibGVzID0gdXNlQ3NzVmFyaWFibGVzKCk7XG4gIGZ1bmN0aW9uIGdldERheUNzc1N0eWxlcyh7XG4gICAgZGlzYWJsZWQsXG4gICAgcHJldk1vbnRoLFxuICAgIG5leHRNb250aCxcbiAgICB0b2RheSxcbiAgICBibG9ja2VkLFxuICAgIHNlbGVjdGVkLFxuICAgIHByZVNlbGVjdGVkLFxuICB9OiB7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIHByZXZNb250aD86IGJvb2xlYW47XG4gICAgbmV4dE1vbnRoPzogYm9vbGVhbjtcbiAgICB0b2RheT86IGJvb2xlYW47XG4gICAgYmxvY2tlZD86IGJvb2xlYW47XG4gICAgc2VsZWN0ZWQ/OiBib29sZWFuO1xuICAgIHByZVNlbGVjdGVkPzogYm9vbGVhbjtcbiAgfSk6IEludGVycG9sYXRpb248VGhlbWU+IHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgIGN1cnNvcjogZGlzYWJsZWQgPyB1bmRlZmluZWQgOiAncG9pbnRlcicsXG4gICAgICAgIGZvbnQ6ICdpbmhlcml0JyxcbiAgICAgIH0sXG4gICAgICAocHJldk1vbnRoIHx8IG5leHRNb250aCkgJiYge1xuICAgICAgICBjb2xvcjogZ3JheSxcbiAgICAgIH0sXG4gICAgICB0b2RheSAmJiB7XG4gICAgICAgIG91dGxpbmU6ICcxcHggc29saWQgdmFyKC0tc2Vjb25kYXJ5TWFpbiknLFxuICAgICAgfSxcbiAgICAgIGJsb2NrZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tYmxvY2tlZE1haW4pJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1ibG9ja2VkQ29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgICAgc2VsZWN0ZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tcHJpbWFyeU1haW4pJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1wcmltYXJ5Q29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgICAgYmxvY2tlZCAmJlxuICAgICAgICBzZWxlY3RlZCAmJiB7XG4gICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgICAgJzo6YmVmb3JlJzoge1xuICAgICAgICAgICAgY29udGVudDogJ1wiXCInLFxuICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICByaWdodDogMCxcbiAgICAgICAgICAgIGJvdHRvbTogMCxcbiAgICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tYmxvY2tlZE1haW4pJyxcbiAgICAgICAgICAgIGNsaXBQYXRoOiAncG9seWdvbigwIDAsIDAgNTAlLCA1MCUgMCknLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBwcmVTZWxlY3RlZCAmJiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1wcmltYXJ5TGlnaHQpJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1wcmltYXJ5Q29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICBjb25zdCBtb3VudFRpbWUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKCksIFtdKTtcbiAgY29uc3QgW2RpcnR5LCBzZXREaXJ0eV0gPSB1c2VTdGF0ZTxQYXJ0aWFsPERhdGVSYW5nZT4+KCk7XG4gIGNvbnN0IFtob3ZlcmVkLCBzZXRIb3ZlcmVkXSA9IHVzZVN0YXRlPERhdGVSYW5nZT4oKTtcbiAgY29uc3QgW2RhdGVJblZpZXdMb2NhbCwgc2V0RGF0ZUluVmlld0xvY2FsXSA9IHVzZVN0YXRlPERhdGU+KGRlZmF1bHREYXRlSW5WaWV3ID8/IG1vdW50VGltZSk7XG4gIGNvbnN0IGRhdGVJblZpZXcgPSBwcm9wcy5kYXRlSW5WaWV3ID8/IGRhdGVJblZpZXdMb2NhbDtcblxuICBmdW5jdGlvbiBzZXREYXRlSW5WaWV3KGRhdGU6IERhdGUpIHtcbiAgICBzZXREYXRlSW5WaWV3TG9jYWwoZGF0ZSk7XG4gICAgcHJvcHMub25EYXRlSW5WaWV3Q2hhbmdlPy4oZGF0ZSk7XG4gIH1cblxuICBjb25zdCBtaW4gPSBkaXJ0eSA/IGRpcnR5Lm1pbiA6IHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IHZhbHVlIDogdmFsdWU/Lm1pbjtcbiAgY29uc3QgbWF4ID0gZGlydHkgPyBkaXJ0eS5tYXggOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlPy5tYXg7XG5cbiAgY29uc3QgcmVzb2x2ZWRRdWlja09wdGlvbnMgPSBbLi4ucXVpY2tPcHRpb25zLCB7IGxhYmVsOiA8VGV4dCBpZD1cInJlc2V0XCIgLz4sIHZhbHVlOiBudWxsIH1dLm1hcChcbiAgICAob3B0aW9uLCBpbmRleCkgPT4ge1xuICAgICAgaWYgKG9wdGlvbiBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgICAgIHJldHVybiBvcHRpb24oKHZhbHVlKSA9PiB7XG4gICAgICAgICAgc2V0RGlydHkodW5kZWZpbmVkKTtcbiAgICAgICAgICBvbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IGxhYmVsLCB2YWx1ZSB9ID0gdHlwZW9mIG9wdGlvbiA9PT0gJ3N0cmluZycgPyBjb21tb25RdWlja09wdGlvbnNbb3B0aW9uXSA6IG9wdGlvbjtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG5cbiAgICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgICAgICAgICAgIG9uQ2hhbmdlKHZhbHVlKHByb3BzKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBvbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtsYWJlbH1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApO1xuICAgIH0sXG4gICk7XG5cbiAgY29uc3QgeyBjYWxlbmRhcnMsIGdldEJhY2tQcm9wcywgZ2V0Rm9yd2FyZFByb3BzLCBnZXREYXRlUHJvcHMgfSA9IHVzZURheXplZCh7XG4gICAgb25EYXRlU2VsZWN0ZWQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICBmaXJzdERheU9mV2VlayxcbiAgICBzaG93T3V0c2lkZURheXM6IHRydWUsXG4gICAgZGF0ZTogZGF0ZUluVmlldyxcbiAgICBvbk9mZnNldENoYW5nZWQ6IChvZmZzZXQpID0+XG4gICAgICBzZXREYXRlSW5WaWV3KG5ldyBEYXRlKGRhdGVJblZpZXcuZ2V0RnVsbFllYXIoKSwgZGF0ZUluVmlldy5nZXRNb250aCgpICsgb2Zmc2V0KSksXG4gICAgb2Zmc2V0OiAwLFxuICAgIG1pbkRhdGUsXG4gICAgbWF4RGF0ZSxcbiAgfSk7XG4gIGNvbnN0IG5vdyA9IHVzZU1lbW8oKCkgPT4gc3RhcnRPZkRheShuZXcgRGF0ZSgpKSwgW10pO1xuXG4gIGNvbnN0IGZvcm1hdFdlZWtkYXkgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IGZvcm1hdCB9ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IHdlZWtkYXk6ICdzaG9ydCcgfSk7XG4gICAgcmV0dXJuICh3ZWVrRGF5OiBudW1iZXIpID0+XG4gICAgICBmb3JtYXQobmV3IERhdGUoRGF0ZS5VVEMoMjAyMSwgNywgKCh3ZWVrRGF5ICsgZmlyc3REYXlPZldlZWspICUgNykgKyAxKSkpO1xuICB9LCBbbG9jYWxlLCBmaXJzdERheU9mV2Vla10pO1xuXG4gIHVzZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgc2V0RGF0ZUluVmlldyhcbiAgICAgICAgdmFsdWUgPT09IG51bGwgPyBkZWZhdWx0RGF0ZUluVmlldyA/PyBtb3VudFRpbWUgOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlLm1heCxcbiAgICAgICksXG4gICAgW2dldFZhbHVlRm9yQ29tcGFyaXNvbih2YWx1ZSksIGdldFZhbHVlRm9yQ29tcGFyaXNvbihkZWZhdWx0RGF0ZUluVmlldyksIG1vdW50VGltZV0sXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXJhbmdlU2VsZWN0KSB7XG4gICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuICAgIH1cbiAgfSwgW3JhbmdlU2VsZWN0XSk7XG5cbiAgZnVuY3Rpb24gc2V0KG1pbj86IERhdGUsIG1heD86IERhdGUsIGVkaXQ/OiAnbWluJyB8ICdtYXgnKSB7XG4gICAgaWYgKCFyYW5nZVNlbGVjdCkge1xuICAgICAgb25DaGFuZ2UobWluID8/IG51bGwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChtaW4gJiYgbWF4ICYmIG1pbiA+IG1heCkge1xuICAgICAgaWYgKGVkaXQgPT09ICdtaW4nKSB7XG4gICAgICAgIG1heCA9IG1pbjtcbiAgICAgIH0gZWxzZSBpZiAoZWRpdCA9PT0gJ21heCcpIHtcbiAgICAgICAgbWluID0gbWF4O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgW21pbiwgbWF4XSA9IFttYXgsIG1pbl07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFtaW4gPT09ICFtYXgpIHtcbiAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgICBvbkNoYW5nZShtaW4gJiYgbWF4ID8geyBtaW4sIG1heDogZW5kT2ZEYXkobWF4KSB9IDogbnVsbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldERpcnR5KHsgbWluLCBtYXggfSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZm9ybWF0TW9udGggPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IGZvcm1hdCB9ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IG1vbnRoOiAnbG9uZycgfSk7XG4gICAgcmV0dXJuIChtb250aDogbnVtYmVyKSA9PiBmb3JtYXQobmV3IERhdGUoMjAyMSwgbW9udGgpKTtcbiAgfSwgW2xvY2FsZV0pO1xuXG4gIGNvbnN0IGZvcm1hdFllYXIgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IGZvcm1hdCB9ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IHllYXI6ICdudW1lcmljJyB9KTtcbiAgICByZXR1cm4gKHllYXI6IG51bWJlcikgPT4gZm9ybWF0KG5ldyBEYXRlKHllYXIsIDAsIDEpKTtcbiAgfSwgW2xvY2FsZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjc3M9e2Nzc1ZhcmlhYmxlc30+XG4gICAgICA8ZGl2XG4gICAgICAgIGNzcz17e1xuICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICBhbGlnbkl0ZW1zOiAnYmFzZWxpbmUnLFxuICAgICAgICAgIGdhcDogJ3ZhcigtLXNwYWNpbmcpJyxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPERhdGVJbnB1dFxuICAgICAgICAgIHZhbHVlPXttaW4gPz8gbnVsbH1cbiAgICAgICAgICBvbkNoYW5nZT17KGRhdGUpID0+IHNldChkYXRlID8/IHVuZGVmaW5lZCwgbWF4LCAnbWluJyl9XG4gICAgICAgICAgbG9jYWxlPXtsb2NhbGV9XG4gICAgICAgIC8+XG5cbiAgICAgICAge3JhbmdlU2VsZWN0ICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgeycgLSAnfVxuICAgICAgICAgICAgPERhdGVJbnB1dFxuICAgICAgICAgICAgICB2YWx1ZT17bWF4ID8/IG51bGx9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZGF0ZSkgPT4gc2V0KG1pbiwgZGF0ZSA/PyB1bmRlZmluZWQsICdtYXgnKX1cbiAgICAgICAgICAgICAgbG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvPlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIHtjYWxlbmRhcnMubWFwKCh7IG1vbnRoLCB5ZWFyLCB3ZWVrcyB9KSA9PiAoXG4gICAgICAgIDxkaXYga2V5PXtgJHttb250aH0ke3llYXJ9YH0gY3NzPXt7IGRpc3BsYXk6ICdncmlkJyB9fT5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgbWFyZ2luOiAnY2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpIDAnLFxuICAgICAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgICAgIGdyaWRBdXRvRmxvdzogJ2NvbHVtbicsXG4gICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnc3BhY2UtYmV0d2VlbicsXG4gICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8SWNvbkJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgey4uLmdldEJhY2tQcm9wcyh7IGNhbGVuZGFycyB9KX0+XG4gICAgICAgICAgICAgIDxDaGV2cm9uUmlnaHQgY3NzPXt7IHRyYW5zZm9ybTogJ3JvdGF0ZTNkKDAsIDAsIDEsIDE4MGRlZyknIH19IC8+XG4gICAgICAgICAgICA8L0ljb25CdXR0b24+XG5cbiAgICAgICAgICAgIDxkaXYgY3NzPXt7IGRpc3BsYXk6ICdmbGV4JyB9fT5cbiAgICAgICAgICAgICAge2Zvcm1hdE1vbnRoKG1vbnRoKX0ge2Zvcm1hdFllYXIoeWVhcil9XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPEljb25CdXR0b24gdHlwZT1cImJ1dHRvblwiIHsuLi5nZXRGb3J3YXJkUHJvcHMoeyBjYWxlbmRhcnMgfSl9PlxuICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0IC8+XG4gICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAganVzdGlmeVNlbGY6ICdjZW50ZXInLFxuICAgICAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgICAgIGdyaWRUZW1wbGF0ZUNvbHVtbnM6ICdyZXBlYXQoOCwgbWF4LWNvbnRlbnQpJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3Nob3dDYWxlbmRhcldlZWsgPyAoXG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgICAgYm9yZGVyUmlnaHQ6IGAxcHggc29saWQgJHtncmF5fWAsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxUZXh0IGlkPVwiY2FsZW5kYXJXZWVrXCIgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8ZGl2IC8+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7d2Vla0RheXMubWFwKChfdiwgd2Vla0RheSkgPT4gKFxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAga2V5PXt3ZWVrRGF5fVxuICAgICAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICAgICAganVzdGlmeVNlbGY6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtmb3JtYXRXZWVrZGF5KHdlZWtEYXkpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkpfVxuXG4gICAgICAgICAgICB7d2Vla3MubWFwKCh3ZWVrLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrU3RhcnQgPSB3ZWVrWzBdIGFzIERhdGVPYmo7XG4gICAgICAgICAgICAgIGNvbnN0IHdlZWtFbmQgPSB3ZWVrWzZdIGFzIERhdGVPYmo7XG4gICAgICAgICAgICAgIGNvbnN0IHdlZWtEaXNhYmxlZCA9XG4gICAgICAgICAgICAgICAgIXJhbmdlU2VsZWN0IHx8XG4gICAgICAgICAgICAgICAgKG1pbkRhdGUgJiYgd2Vla0VuZC5kYXRlIDwgbWluRGF0ZSkgfHxcbiAgICAgICAgICAgICAgICAobWF4RGF0ZSAmJiB3ZWVrU3RhcnQuZGF0ZSA+IG1heERhdGUpO1xuXG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPEZyYWdtZW50IGtleT17aW5kZXh9PlxuICAgICAgICAgICAgICAgICAge3Nob3dDYWxlbmRhcldlZWsgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiB3ZWVrRGlzYWJsZWQgPyB1bmRlZmluZWQgOiAncG9pbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb250OiAnaW5oZXJpdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSaWdodDogYDFweCBzb2xpZCAke2dyYXl9YCxcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3ZWVrRGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtaW4gPSBtaW5EYXRlICYmIHdlZWtTdGFydC5kYXRlIDwgbWluRGF0ZSA/IG1pbkRhdGUgOiB3ZWVrU3RhcnQuZGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1heCA9IG1heERhdGUgJiYgd2Vla0VuZC5kYXRlID4gbWF4RGF0ZSA/IG1heERhdGUgOiB3ZWVrRW5kLmRhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXQobWluLCBtYXgpO1xuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyT3Zlcj17KCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICF3ZWVrRGlzYWJsZWQgJiYgc2V0SG92ZXJlZCh7IG1pbjogd2Vla1N0YXJ0LmRhdGUsIG1heDogd2Vla0VuZC5kYXRlIH0pXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlck91dD17KCkgPT4gIXdlZWtEaXNhYmxlZCAmJiBzZXRIb3ZlcmVkKHVuZGVmaW5lZCl9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7Z2V0Q2FsZW5kYXJXZWVrKHdlZWtFbmQuZGF0ZSl9XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAvPlxuICAgICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgICAge3dlZWsubWFwKChkYXRlT2JqZWN0LCBkYXlJbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWRhdGVPYmplY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPGRpdiBrZXk9e2RheUluZGV4fSAvPjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgcHJldk1vbnRoLCBuZXh0TW9udGgsIGRhdGUgfSA9IGRhdGVPYmplY3Q7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRvZGF5ID0gc3RhcnRPZkRheShkYXRlKS5nZXRUaW1lKCkgPT09IG5vdy5nZXRUaW1lKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpc2FibGVkID0gKG1pbkRhdGUgJiYgZGF0ZSA8IG1pbkRhdGUpIHx8IChtYXhEYXRlICYmIGRhdGUgPiBtYXhEYXRlKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZCA9XG4gICAgICAgICAgICAgICAgICAgICAgZGF0ZS5nZXRUaW1lKCkgPT09IG1pbj8uZ2V0VGltZSgpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgKG1pbiAmJiBtYXggJiYgZGF0ZUludGVyc2VjdChkYXRlLCB7IG1pbiwgbWF4IH0pKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJlU2VsZWN0ZWQgPVxuICAgICAgICAgICAgICAgICAgICAgICFzZWxlY3RlZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICFkaXNhYmxlZCAmJlxuICAgICAgICAgICAgICAgICAgICAgIChkYXRlSW50ZXJzZWN0KGRhdGUsIGhvdmVyZWQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAobWluICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICFtYXggJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJlZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlSW50ZXJzZWN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluIDw9IGhvdmVyZWQubWluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHsgbWluLCBtYXg6IGhvdmVyZWQubWluIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogeyBtaW46IGhvdmVyZWQubWF4LCBtYXg6IG1pbiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICApKSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrZWQgPSBibG9ja2VkUmFuZ2VzLnNvbWUoKHJhbmdlKSA9PiBkYXRlSW50ZXJzZWN0KGRhdGUsIHJhbmdlKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleT17YCR7aW5kZXh9LSR7ZGF5SW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Z2V0RGF5Q3NzU3R5bGVzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZNb250aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dE1vbnRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RheSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByZVNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICB7Li4uZ2V0RGF0ZVByb3BzKHsgZGF0ZU9iajogZGF0ZU9iamVjdCB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpcnR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1pbikgc2V0KG1pbiwgZGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBzZXQoZGF0ZSwgbWF4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQoZGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJPdmVyPXsoKSA9PiBzZXRIb3ZlcmVkKHsgbWluOiBkYXRlLCBtYXg6IGRhdGUgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJPdXQ9eygpID0+IHNldEhvdmVyZWQodW5kZWZpbmVkKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7ZGF0ZS5nZXREYXRlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKSl9XG5cbiAgICAgIDxkaXZcbiAgICAgICAgY3NzPXt7XG4gICAgICAgICAgbWFyZ2luVG9wOiAndmFyKC0tc3BhY2luZyknLFxuICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAge3Jlc29sdmVkUXVpY2tPcHRpb25zfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iXX0= */",
958
968
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__$d
959
969
  };
960
970
  var _ref4$2 = process.env.NODE_ENV === "production" ? {
@@ -963,7 +973,7 @@ var _ref4$2 = process.env.NODE_ENV === "production" ? {
963
973
  } : {
964
974
  name: "avs0ta-DatePicker",
965
975
  styles: "transform:rotate3d(0, 0, 1, 180deg);label:DatePicker;",
966
- map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2RhdGVQaWNrZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW9jNEIiLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvc2NodW1tYXItdGFibGUvc2NodW1tYXItdGFibGUvc3JjL2NvbXBvbmVudHMvZGF0ZVBpY2tlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlT2JqLCB1c2VEYXl6ZWQgfSBmcm9tICdkYXl6ZWQnO1xuaW1wb3J0IHtcbiAgRnJhZ21lbnQsXG4gIFJlYWN0Tm9kZSxcbiAgY3JlYXRlQ29udGV4dCxcbiAgdXNlQ29udGV4dCxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICcuLi9ob29rcy91c2VUaGVtZSc7XG5pbXBvcnQgeyBkZWZhdWx0cyB9IGZyb20gJy4uL21pc2MvZGVmYXVsdHMnO1xuaW1wb3J0IHsgZ3JheSB9IGZyb20gJy4uL3RoZW1lL2RlZmF1bHRUaGVtZS9kZWZhdWx0Q2xhc3Nlcyc7XG5pbXBvcnQgeyB1c2VDc3NWYXJpYWJsZXMgfSBmcm9tICcuLi90aGVtZS91c2VDc3NWYXJpYWJsZXMnO1xuaW1wb3J0IHsgRGF0ZUlucHV0IH0gZnJvbSAnLi9kYXRlSW5wdXQnO1xuaW1wb3J0IHsgVGV4dCB9IGZyb20gJy4vdGV4dCc7XG5pbXBvcnQgeyBJbnRlcnBvbGF0aW9uLCBUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuZXhwb3J0IHR5cGUgRGF0ZVJhbmdlID0geyBtaW46IERhdGU7IG1heDogRGF0ZSB9O1xuXG5leHBvcnQgdHlwZSBEYXRlUGlja2VyUXVpY2tPcHRpb24gPVxuICB8ICd0b2RheSdcbiAgfCAndGhpc1dlZWsnXG4gIHwgJ3RoaXNNb250aCdcbiAgfCAndGhpc1llYXInXG4gIHwgJ2xhc3RTZXZlbkRheXMnXG4gIHwgJ2xhc3RUaGlydHlEYXlzJ1xuICB8IHsgbGFiZWw6IFJlYWN0Tm9kZTsgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCAoKCkgPT4gRGF0ZSB8IERhdGVSYW5nZSkgfVxuICB8ICgob25DaGFuZ2U6ICh2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpID0+IHZvaWQpID0+IFJlYWN0Tm9kZSk7XG5cbmV4cG9ydCB0eXBlIERhdGVQaWNrZXJQcm9wcyA9IHtcbiAgLyoqIEN1cnJlbnRseSBzZWxlY3RlZCBkYXkgb3IgcmFuZ2Ugb2YgZGF5cy4gKi9cbiAgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsO1xuICAvKiogQ2FsbGJhY2sgZm9yIHdoZW4gdGhlIGRheSAocmFuZ2UpIGNoYW5nZXMuICovXG4gIG9uQ2hhbmdlOiAodmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSA9PiB2b2lkO1xuICAvKiogQ3VycmVudGx5IHZpc2libGUgZGF0ZS4gKi9cbiAgZGF0ZUluVmlldz86IERhdGU7XG4gIC8qKiBDYWxsYmFjayBmb3Igd2hlbiB0aGUgY3VycmVudGx5IHZpc2libGUgZGF0ZSBjaGFuZ2VzLiAqL1xuICBvbkRhdGVJblZpZXdDaGFuZ2U/OiAodmFsdWU6IERhdGUpID0+IHZvaWQ7XG4gIC8qKiBJZiBlbmFibGVkLCByYW5nZXMgY2FuIGJlIHNlbGVjdGVkLiAqL1xuICByYW5nZVNlbGVjdD86IGJvb2xlYW47XG4gIC8qKiBXaGljaCBsb2NhbGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgY2FsZW5kYXIuICovXG4gIGxvY2FsZT86IHN0cmluZztcbiAgLyoqIFdoaWNoIGRheSBvZiB0aGUgd2VlayBzaG91bGQgYmUgaW4gdGhlIGZpcnN0IGNvbHVtbi4gKDA9U3VuZGF5LCAxPU1vbmRheSwgLi4uKVxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICBmaXJzdERheU9mV2Vlaz86IDAgfCAxIHwgMiB8IDMgfCA0IHwgNSB8IDY7XG4gIC8qKiBXaGljaCBtb250aCB0byBzaG93IGluaXRpYWxseSAqL1xuICBkZWZhdWx0RGF0ZUluVmlldz86IERhdGU7XG4gIC8qKiBTaG93IGJ1dHRvbnMgdG8gcXVpY2tseSBzZWxlY3Qgc3VnZ2VzdGVkIGRhdGVzIG9yIGRhdGUgcmFuZ2VzICovXG4gIHF1aWNrT3B0aW9ucz86IERhdGVQaWNrZXJRdWlja09wdGlvbltdO1xuICAvKiogTWluaW11bSBzZWxlY3RhYmxlIGRhdGUgKi9cbiAgLyoqIERhdGUgcmFuZ2VzIHRoYXQgYXJlIHZpc3VhbGx5IG1hcmtlZCBhcyBibG9ja2VkICovXG4gIGJsb2NrZWRSYW5nZXM/OiBEYXRlUmFuZ2VbXTtcbiAgbWluRGF0ZT86IERhdGU7XG4gIC8qKiBNYXhpbXVtIHNlbGVjdGFibGUgZGF0ZSAqL1xuICBtYXhEYXRlPzogRGF0ZTtcbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgY2FsZW5kYXIgd2VlayBpbiB0aGUgZmlyc3QgY29sdW1uICovXG4gIHNob3dDYWxlbmRhcldlZWs/OiBib29sZWFuO1xufTtcblxuY29uc3QgRGF0ZVBpY2tlckNvbnRleHQgPSBjcmVhdGVDb250ZXh0PFBhcnRpYWw8T21pdDxEYXRlUGlja2VyUHJvcHMsICd2YWx1ZScgfCAnb25DaGFuZ2UnPj4+KHt9KTtcblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVQaWNrZXJQcm92aWRlcih7XG4gIGNoaWxkcmVuLFxuICAuLi5wcm9wc1xufTogUGFydGlhbDxPbWl0PERhdGVQaWNrZXJQcm9wcywgJ3ZhbHVlJyB8ICdvbkNoYW5nZSc+PiAmIHsgY2hpbGRyZW4/OiBSZWFjdE5vZGUgfSkge1xuICBjb25zdCB2YWx1ZSA9IHVzZU1lbW8oKCkgPT4gcHJvcHMsIFtKU09OLnN0cmluZ2lmeShwcm9wcyldKTtcblxuICByZXR1cm4gPERhdGVQaWNrZXJDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt2YWx1ZX0+e2NoaWxkcmVufTwvRGF0ZVBpY2tlckNvbnRleHQuUHJvdmlkZXI+O1xufVxuXG5jb25zdCB3ZWVrRGF5cyA9IFswLCAxLCAyLCAzLCA0LCA1LCA2XSBhcyBjb25zdDtcblxuLyoqIFJvdW5kcyBhIGRhdGUgZG93biB0byB0aGUgc3RhcnQgb2YgdGhlIGRheS4gKi9cbmV4cG9ydCBjb25zdCBzdGFydE9mRGF5ID0gKGQ6IERhdGUpID0+IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgZC5nZXRNb250aCgpLCBkLmdldERhdGUoKSk7XG5cbi8qKiBSb3VuZHMgYSBkYXRlIHVwIHRvIHRoZSBlbmQgb2YgdGhlIGRheS4gKi9cbmV4cG9ydCBjb25zdCBlbmRPZkRheSA9IChkOiBEYXRlKSA9PlxuICBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIGQuZ2V0TW9udGgoKSwgZC5nZXREYXRlKCkgKyAxLCAwLCAwLCAwLCAtMSk7XG5cbmV4cG9ydCBjb25zdCBsYXN0RGF5cyA9IChkYXlzOiBudW1iZXIpOiBEYXRlUmFuZ2UgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBtaW4gPSBuZXcgRGF0ZShub3cpO1xuICBtaW4uc2V0RGF0ZShtaW4uZ2V0RGF0ZSgpIC0gZGF5cyArIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShub3cpLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHRvZGF5ID0gKCkgPT4gbGFzdERheXMoMSk7XG5cbmV4cG9ydCBjb25zdCB0aGlzV2VlayA9IChkZWx0YSA9IDAsIGZpcnN0RGF5T2ZXZWVrID0gMSk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG5cbiAgbGV0IGRpZmYgPSBtaW4uZ2V0RGF5KCkgLSBmaXJzdERheU9mV2VlaztcbiAgaWYgKGRpZmYgPCAwKSB7XG4gICAgZGlmZiArPSA3O1xuICB9XG4gIG1pbi5zZXREYXRlKG1pbi5nZXREYXRlKCkgLSBkaWZmICsgZGVsdGEgKiA3KTtcblxuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpICsgNik7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdGhpc01vbnRoID0gKGRlbHRhID0gMCk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG4gIG1pbi5zZXREYXRlKDEpO1xuICBtaW4uc2V0TW9udGgobWluLmdldE1vbnRoKCkgKyBkZWx0YSk7XG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXRNb250aChtYXguZ2V0TW9udGgoKSArIDEpO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpIC0gMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdGhpc1llYXIgPSAoZGVsdGEgPSAwKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcbiAgbWluLnNldERhdGUoMSk7XG4gIG1pbi5zZXRNb250aCgwKTtcbiAgbWluLnNldEZ1bGxZZWFyKG1pbi5nZXRGdWxsWWVhcigpICsgZGVsdGEpO1xuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0RnVsbFllYXIobWF4LmdldEZ1bGxZZWFyKCkgKyAxKTtcbiAgbWF4LnNldERhdGUobWF4LmdldERhdGUoKSAtIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShtYXgpLFxuICB9O1xufTtcblxuY29uc3QgTVNfUEVSX0RBWSA9IDEwMDAgKiA2MCAqIDYwICogMjQ7XG5leHBvcnQgY29uc3QgZ2V0Q2FsZW5kYXJXZWVrID0gKGRhdGU6IERhdGUpOiBudW1iZXIgPT4ge1xuICAvLyBJU08gODYwMTogV2VlayAxIGlzIHRoZSB3ZWVrIHdpdGggdGhlIGZpcnN0IFRodXJzZGF5IG9mIHRoZSB5ZWFyLlxuICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG5cbiAgY29uc3QgeSA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgY29uc3QgZmRveSA9IG5ldyBEYXRlKHksIDAsIDEpO1xuICBjb25zdCBkb3kgPSBNYXRoLmZsb29yKFxuICAgIChkYXRlLmdldFRpbWUoKSAtIGZkb3kuZ2V0VGltZSgpICsgKGRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSAtIGZkb3kuZ2V0VGltZXpvbmVPZmZzZXQoKSkpIC9cbiAgICAgIE1TX1BFUl9EQVksXG4gICk7XG4gIGNvbnN0IGRvdyA9IGZkb3kuZ2V0RGF5KCk7XG4gIGNvbnN0IHcgPSBNYXRoLmZsb29yKCgxMCArIGRveSAtIGRvdykgLyA3KTtcblxuICBpZiAodyA9PT0gMCkge1xuICAgIHJldHVybiBnZXRDYWxlbmRhcldlZWsobmV3IERhdGUoeSAtIDEsIDExLCAzMSkpO1xuICB9XG5cbiAgcmV0dXJuIHc7XG59O1xuXG5leHBvcnQgY29uc3QgY29tbW9uUXVpY2tPcHRpb25zID0ge1xuICB0b2RheTogeyBsYWJlbDogPFRleHQgaWQ9XCJ0b2RheVwiIC8+LCB2YWx1ZTogdG9kYXkgfSxcbiAgdGhpc1dlZWs6IHsgbGFiZWw6IDxUZXh0IGlkPVwidGhpc1dlZWtcIiAvPiwgdmFsdWU6IChwcm9wcykgPT4gdGhpc1dlZWsoMCwgcHJvcHMuZmlyc3REYXlPZldlZWspIH0sXG4gIHRoaXNNb250aDogeyBsYWJlbDogPFRleHQgaWQ9XCJ0aGlzTW9udGhcIiAvPiwgdmFsdWU6ICgpID0+IHRoaXNNb250aCgpIH0sXG4gIHRoaXNZZWFyOiB7IGxhYmVsOiA8VGV4dCBpZD1cInRoaXNZZWFyXCIgLz4sIHZhbHVlOiAoKSA9PiB0aGlzWWVhcigpIH0sXG4gIGxhc3RTZXZlbkRheXM6IHsgbGFiZWw6IDxUZXh0IGlkPVwibGFzdFNldmVuRGF5c1wiIC8+LCB2YWx1ZTogKCkgPT4gbGFzdERheXMoNykgfSxcbiAgbGFzdFRoaXJ0eURheXM6IHsgbGFiZWw6IDxUZXh0IGlkPVwibGFzdFRoaXJ0eURheXNcIiAvPiwgdmFsdWU6ICgpID0+IGxhc3REYXlzKDMwKSB9LFxufSBzYXRpc2ZpZXMgUmVjb3JkPFxuICBEYXRlUGlja2VyUXVpY2tPcHRpb24gJiBzdHJpbmcsXG4gIHsgbGFiZWw6IFJlYWN0Tm9kZTsgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCAoKHByb3BzOiBEYXRlUGlja2VyUHJvcHMpID0+IERhdGUgfCBEYXRlUmFuZ2UpIH1cbj47XG5cbi8qKiBSZXR1cm5zIHdoZXRoZXIgdHdvIGRhdGVzIGFuZC9vciBkYXRlIHJhbmdlcyBpbnRlcnNlY3QuIEludGVyc2VjdGlvbiBpcyBjb25zaWRlcmVkIHBlciBkYXkuICovXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUludGVyc2VjdChhOiBEYXRlIHwgbnVsbCB8IERhdGVSYW5nZSwgYjogRGF0ZSB8IG51bGwgfCBEYXRlUmFuZ2UpIHtcbiAgaWYgKGEgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgYSA9IHsgbWluOiBhLCBtYXg6IGEgfTtcbiAgfVxuICBpZiAoYiBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICBiID0geyBtaW46IGIsIG1heDogYiB9O1xuICB9XG5cbiAgaWYgKCFhPy5taW4gfHwgIWEubWF4IHx8ICFiPy5taW4gfHwgIWIubWF4KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuICEoZW5kT2ZEYXkoYS5tYXgpIDwgc3RhcnRPZkRheShiLm1pbikgfHwgc3RhcnRPZkRheShhLm1pbikgPiBlbmRPZkRheShiLm1heCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUNsYW1wKGRhdGU6IERhdGUsIG1pbj86IERhdGUsIG1heD86IERhdGUpIHtcbiAgaWYgKG1pbiAmJiBkYXRlIDwgbWluKSB7XG4gICAgcmV0dXJuIG1pbjtcbiAgfVxuXG4gIGlmIChtYXggJiYgZGF0ZSA+IG1heCkge1xuICAgIHJldHVybiBtYXg7XG4gIH1cblxuICByZXR1cm4gZGF0ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVQaWNrZXIocHJvcHM6IERhdGVQaWNrZXJQcm9wcykge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChEYXRlUGlja2VyQ29udGV4dCk7XG5cbiAgY29uc3Qge1xuICAgIHZhbHVlLFxuICAgIHJhbmdlU2VsZWN0LFxuICAgIGxvY2FsZSxcbiAgICBmaXJzdERheU9mV2VlayA9IDEsXG4gICAgZGVmYXVsdERhdGVJblZpZXcsXG4gICAgcXVpY2tPcHRpb25zID0gWyd0b2RheScsICd0aGlzV2VlayddLFxuICAgIG1pbkRhdGUsXG4gICAgbWF4RGF0ZSxcbiAgICBzaG93Q2FsZW5kYXJXZWVrLFxuICAgIGJsb2NrZWRSYW5nZXMgPSBbXSxcbiAgfSA9IGRlZmF1bHRzPERhdGVQaWNrZXJQcm9wcz4ocHJvcHMsIGNvbnRleHQpO1xuXG4gIGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCkge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIHZhbHVlID0gZGF0ZUNsYW1wKHZhbHVlLCBtaW5EYXRlLCBtYXhEYXRlKTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICB2YWx1ZSA9IHtcbiAgICAgICAgbWluOiBkYXRlQ2xhbXAodmFsdWUubWluLCBtaW5EYXRlLCBtYXhEYXRlKSxcbiAgICAgICAgbWF4OiBkYXRlQ2xhbXAodmFsdWUubWF4LCBtaW5EYXRlLCBtYXhEYXRlKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcHJvcHMub25DaGFuZ2UodmFsdWUpO1xuICB9XG5cbiAgY29uc3QgQnV0dG9uID0gdXNlVGhlbWUoKHQpID0+IHQuY29tcG9uZW50cy5CdXR0b24pO1xuICBjb25zdCBJY29uQnV0dG9uID0gdXNlVGhlbWUoKHQpID0+IHQuY29tcG9uZW50cy5JY29uQnV0dG9uKTtcbiAgY29uc3QgQ2hldnJvblJpZ2h0ID0gdXNlVGhlbWUoKHQpID0+IHQuaWNvbnMuQ2hldnJvblJpZ2h0KTtcbiAgY29uc3QgY3NzVmFyaWFibGVzID0gdXNlQ3NzVmFyaWFibGVzKCk7XG4gIGZ1bmN0aW9uIGdldERheUNzc1N0eWxlcyh7XG4gICAgZGlzYWJsZWQsXG4gICAgcHJldk1vbnRoLFxuICAgIG5leHRNb250aCxcbiAgICB0b2RheSxcbiAgICBibG9ja2VkLFxuICAgIHNlbGVjdGVkLFxuICAgIHByZVNlbGVjdGVkLFxuICB9OiB7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIHByZXZNb250aD86IGJvb2xlYW47XG4gICAgbmV4dE1vbnRoPzogYm9vbGVhbjtcbiAgICB0b2RheT86IGJvb2xlYW47XG4gICAgYmxvY2tlZD86IGJvb2xlYW47XG4gICAgc2VsZWN0ZWQ/OiBib29sZWFuO1xuICAgIHByZVNlbGVjdGVkPzogYm9vbGVhbjtcbiAgfSk6IEludGVycG9sYXRpb248VGhlbWU+IHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgIGN1cnNvcjogZGlzYWJsZWQgPyB1bmRlZmluZWQgOiAncG9pbnRlcicsXG4gICAgICAgIGZvbnQ6ICdpbmhlcml0JyxcbiAgICAgIH0sXG4gICAgICAocHJldk1vbnRoIHx8IG5leHRNb250aCkgJiYge1xuICAgICAgICBjb2xvcjogZ3JheSxcbiAgICAgIH0sXG4gICAgICB0b2RheSAmJiB7XG4gICAgICAgIG91dGxpbmU6ICcxcHggc29saWQgdmFyKC0tc2Vjb25kYXJ5TWFpbiknLFxuICAgICAgfSxcbiAgICAgIGJsb2NrZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tYmxvY2tlZE1haW4pJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1ibG9ja2VkQ29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgICAgc2VsZWN0ZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tcHJpbWFyeU1haW4pJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1wcmltYXJ5Q29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgICAgYmxvY2tlZCAmJlxuICAgICAgICBzZWxlY3RlZCAmJiB7XG4gICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgICAgJzo6YmVmb3JlJzoge1xuICAgICAgICAgICAgY29udGVudDogJ1wiXCInLFxuICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICByaWdodDogMCxcbiAgICAgICAgICAgIGJvdHRvbTogMCxcbiAgICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tYmxvY2tlZE1haW4pJyxcbiAgICAgICAgICAgIGNsaXBQYXRoOiAncG9seWdvbigwIDAsIDAgNTAlLCA1MCUgMCknLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBwcmVTZWxlY3RlZCAmJiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1wcmltYXJ5TGlnaHQpJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1wcmltYXJ5Q29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICBjb25zdCBtb3VudFRpbWUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKCksIFtdKTtcbiAgY29uc3QgW2RpcnR5LCBzZXREaXJ0eV0gPSB1c2VTdGF0ZTxQYXJ0aWFsPERhdGVSYW5nZT4+KCk7XG4gIGNvbnN0IFtob3ZlcmVkLCBzZXRIb3ZlcmVkXSA9IHVzZVN0YXRlPERhdGU+KCk7XG4gIGNvbnN0IFtkYXRlSW5WaWV3TG9jYWwsIHNldERhdGVJblZpZXdMb2NhbF0gPSB1c2VTdGF0ZTxEYXRlPihkZWZhdWx0RGF0ZUluVmlldyA/PyBtb3VudFRpbWUpO1xuICBjb25zdCBkYXRlSW5WaWV3ID0gcHJvcHMuZGF0ZUluVmlldyA/PyBkYXRlSW5WaWV3TG9jYWw7XG5cbiAgZnVuY3Rpb24gc2V0RGF0ZUluVmlldyhkYXRlOiBEYXRlKSB7XG4gICAgc2V0RGF0ZUluVmlld0xvY2FsKGRhdGUpO1xuICAgIHByb3BzLm9uRGF0ZUluVmlld0NoYW5nZT8uKGRhdGUpO1xuICB9XG5cbiAgY29uc3QgbWluID0gZGlydHkgPyBkaXJ0eS5taW4gOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlPy5taW47XG4gIGNvbnN0IG1heCA9IGRpcnR5ID8gZGlydHkubWF4IDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZT8ubWF4O1xuXG4gIGNvbnN0IHJlc29sdmVkUXVpY2tPcHRpb25zID0gWy4uLnF1aWNrT3B0aW9ucywgeyBsYWJlbDogPFRleHQgaWQ9XCJyZXNldFwiIC8+LCB2YWx1ZTogbnVsbCB9XS5tYXAoXG4gICAgKG9wdGlvbiwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChvcHRpb24gaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICByZXR1cm4gb3B0aW9uKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBsYWJlbCwgdmFsdWUgfSA9IHR5cGVvZiBvcHRpb24gPT09ICdzdHJpbmcnID8gY29tbW9uUXVpY2tPcHRpb25zW29wdGlvbl0gOiBvcHRpb247XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuXG4gICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICAgICAgICBvbkNoYW5nZSh2YWx1ZShwcm9wcykpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7bGFiZWx9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKTtcbiAgICB9LFxuICApO1xuXG4gIGNvbnN0IHsgY2FsZW5kYXJzLCBnZXRCYWNrUHJvcHMsIGdldEZvcndhcmRQcm9wcywgZ2V0RGF0ZVByb3BzIH0gPSB1c2VEYXl6ZWQoe1xuICAgIG9uRGF0ZVNlbGVjdGVkOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgZmlyc3REYXlPZldlZWssXG4gICAgc2hvd091dHNpZGVEYXlzOiB0cnVlLFxuICAgIGRhdGU6IGRhdGVJblZpZXcsXG4gICAgb25PZmZzZXRDaGFuZ2VkOiAob2Zmc2V0KSA9PlxuICAgICAgc2V0RGF0ZUluVmlldyhuZXcgRGF0ZShkYXRlSW5WaWV3LmdldEZ1bGxZZWFyKCksIGRhdGVJblZpZXcuZ2V0TW9udGgoKSArIG9mZnNldCkpLFxuICAgIG9mZnNldDogMCxcbiAgICBtaW5EYXRlLFxuICAgIG1heERhdGUsXG4gIH0pO1xuICBjb25zdCBub3cgPSB1c2VNZW1vKCgpID0+IHN0YXJ0T2ZEYXkobmV3IERhdGUoKSksIFtdKTtcblxuICBjb25zdCBmb3JtYXRXZWVrZGF5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyB3ZWVrZGF5OiAnc2hvcnQnIH0pO1xuICAgIHJldHVybiAod2Vla0RheTogbnVtYmVyKSA9PlxuICAgICAgZm9ybWF0KG5ldyBEYXRlKERhdGUuVVRDKDIwMjEsIDcsICgod2Vla0RheSArIGZpcnN0RGF5T2ZXZWVrKSAlIDcpICsgMSkpKTtcbiAgfSwgW2xvY2FsZSwgZmlyc3REYXlPZldlZWtdKTtcblxuICB1c2VFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHNldERhdGVJblZpZXcoXG4gICAgICAgIHZhbHVlID09PSBudWxsID8gZGVmYXVsdERhdGVJblZpZXcgPz8gbW91bnRUaW1lIDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZS5tYXgsXG4gICAgICApLFxuICAgIFt2YWx1ZSwgZGVmYXVsdERhdGVJblZpZXcsIG1vdW50VGltZV0sXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXJhbmdlU2VsZWN0KSB7XG4gICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuICAgIH1cbiAgfSwgW3JhbmdlU2VsZWN0XSk7XG5cbiAgZnVuY3Rpb24gc2V0KG1pbj86IERhdGUsIG1heD86IERhdGUsIGVkaXQ/OiAnbWluJyB8ICdtYXgnKSB7XG4gICAgaWYgKCFyYW5nZVNlbGVjdCkge1xuICAgICAgb25DaGFuZ2UobWluID8/IG51bGwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChtaW4gJiYgbWF4ICYmIG1pbiA+IG1heCkge1xuICAgICAgaWYgKGVkaXQgPT09ICdtaW4nKSB7XG4gICAgICAgIG1heCA9IG1pbjtcbiAgICAgIH0gZWxzZSBpZiAoZWRpdCA9PT0gJ21heCcpIHtcbiAgICAgICAgbWluID0gbWF4O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgW21pbiwgbWF4XSA9IFttYXgsIG1pbl07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFtaW4gPT09ICFtYXgpIHtcbiAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgICBvbkNoYW5nZShtaW4gJiYgbWF4ID8geyBtaW4sIG1heDogZW5kT2ZEYXkobWF4KSB9IDogbnVsbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldERpcnR5KHsgbWluLCBtYXggfSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZm9ybWF0TW9udGggPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IGZvcm1hdCB9ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IG1vbnRoOiAnbG9uZycgfSk7XG4gICAgcmV0dXJuIChtb250aDogbnVtYmVyKSA9PiBmb3JtYXQobmV3IERhdGUoMjAyMSwgbW9udGgpKTtcbiAgfSwgW2xvY2FsZV0pO1xuXG4gIGNvbnN0IGZvcm1hdFllYXIgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IGZvcm1hdCB9ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IHllYXI6ICdudW1lcmljJyB9KTtcbiAgICByZXR1cm4gKHllYXI6IG51bWJlcikgPT4gZm9ybWF0KG5ldyBEYXRlKHllYXIsIDAsIDEpKTtcbiAgfSwgW2xvY2FsZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjc3M9e2Nzc1ZhcmlhYmxlc30+XG4gICAgICA8ZGl2XG4gICAgICAgIGNzcz17e1xuICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICBhbGlnbkl0ZW1zOiAnYmFzZWxpbmUnLFxuICAgICAgICAgIGdhcDogJ3ZhcigtLXNwYWNpbmcpJyxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPERhdGVJbnB1dFxuICAgICAgICAgIHZhbHVlPXttaW4gPz8gbnVsbH1cbiAgICAgICAgICBvbkNoYW5nZT17KGRhdGUpID0+IHNldChkYXRlID8/IHVuZGVmaW5lZCwgbWF4LCAnbWluJyl9XG4gICAgICAgICAgbG9jYWxlPXtsb2NhbGV9XG4gICAgICAgIC8+XG5cbiAgICAgICAge3JhbmdlU2VsZWN0ICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgeycgLSAnfVxuICAgICAgICAgICAgPERhdGVJbnB1dFxuICAgICAgICAgICAgICB2YWx1ZT17bWF4ID8/IG51bGx9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZGF0ZSkgPT4gc2V0KG1pbiwgZGF0ZSA/PyB1bmRlZmluZWQsICdtYXgnKX1cbiAgICAgICAgICAgICAgbG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvPlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIHtjYWxlbmRhcnMubWFwKCh7IG1vbnRoLCB5ZWFyLCB3ZWVrcyB9KSA9PiAoXG4gICAgICAgIDxkaXYga2V5PXtgJHttb250aH0ke3llYXJ9YH0gY3NzPXt7IGRpc3BsYXk6ICdncmlkJyB9fT5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgbWFyZ2luOiAnY2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpIDAnLFxuICAgICAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgICAgIGdyaWRBdXRvRmxvdzogJ2NvbHVtbicsXG4gICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnc3BhY2UtYmV0d2VlbicsXG4gICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8SWNvbkJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgey4uLmdldEJhY2tQcm9wcyh7IGNhbGVuZGFycyB9KX0+XG4gICAgICAgICAgICAgIDxDaGV2cm9uUmlnaHQgY3NzPXt7IHRyYW5zZm9ybTogJ3JvdGF0ZTNkKDAsIDAsIDEsIDE4MGRlZyknIH19IC8+XG4gICAgICAgICAgICA8L0ljb25CdXR0b24+XG5cbiAgICAgICAgICAgIDxkaXYgY3NzPXt7IGRpc3BsYXk6ICdmbGV4JyB9fT5cbiAgICAgICAgICAgICAge2Zvcm1hdE1vbnRoKG1vbnRoKX0ge2Zvcm1hdFllYXIoeWVhcil9XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPEljb25CdXR0b24gdHlwZT1cImJ1dHRvblwiIHsuLi5nZXRGb3J3YXJkUHJvcHMoeyBjYWxlbmRhcnMgfSl9PlxuICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0IC8+XG4gICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAganVzdGlmeVNlbGY6ICdjZW50ZXInLFxuICAgICAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgICAgIGdyaWRUZW1wbGF0ZUNvbHVtbnM6ICdyZXBlYXQoOCwgbWF4LWNvbnRlbnQpJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3Nob3dDYWxlbmRhcldlZWsgPyAoXG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgICAgYm9yZGVyUmlnaHQ6IGAxcHggc29saWQgJHtncmF5fWAsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxUZXh0IGlkPVwiY2FsZW5kYXJXZWVrXCIgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8ZGl2IC8+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7d2Vla0RheXMubWFwKChfdiwgd2Vla0RheSkgPT4gKFxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAga2V5PXt3ZWVrRGF5fVxuICAgICAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICAgICAganVzdGlmeVNlbGY6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtmb3JtYXRXZWVrZGF5KHdlZWtEYXkpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkpfVxuXG4gICAgICAgICAgICB7d2Vla3MubWFwKCh3ZWVrLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrU3RhcnQgPSB3ZWVrWzBdIGFzIERhdGVPYmo7XG4gICAgICAgICAgICAgIGNvbnN0IHdlZWtFbmQgPSB3ZWVrWzZdIGFzIERhdGVPYmo7XG4gICAgICAgICAgICAgIGNvbnN0IHdlZWtEaXNhYmxlZCA9XG4gICAgICAgICAgICAgICAgIXJhbmdlU2VsZWN0IHx8XG4gICAgICAgICAgICAgICAgKG1pbkRhdGUgJiYgd2Vla0VuZC5kYXRlIDwgbWluRGF0ZSkgfHxcbiAgICAgICAgICAgICAgICAobWF4RGF0ZSAmJiB3ZWVrU3RhcnQuZGF0ZSA+IG1heERhdGUpO1xuXG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPEZyYWdtZW50IGtleT17aW5kZXh9PlxuICAgICAgICAgICAgICAgICAge3Nob3dDYWxlbmRhcldlZWsgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiB3ZWVrRGlzYWJsZWQgPyB1bmRlZmluZWQgOiAncG9pbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb250OiAnaW5oZXJpdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSaWdodDogYDFweCBzb2xpZCAke2dyYXl9YCxcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3ZWVrRGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtaW4gPSBtaW5EYXRlICYmIHdlZWtTdGFydC5kYXRlIDwgbWluRGF0ZSA/IG1pbkRhdGUgOiB3ZWVrU3RhcnQuZGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1heCA9IG1heERhdGUgJiYgd2Vla0VuZC5kYXRlID4gbWF4RGF0ZSA/IG1heERhdGUgOiB3ZWVrRW5kLmRhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXQobWluLCBtYXgpO1xuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7Z2V0Q2FsZW5kYXJXZWVrKCh3ZWVrWzBdIGFzIERhdGVPYmopLmRhdGUpfVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICAgIHt3ZWVrLm1hcCgoZGF0ZU9iamVjdCwgZGF5SW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFkYXRlT2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxkaXYga2V5PXtkYXlJbmRleH0gLz47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHByZXZNb250aCwgbmV4dE1vbnRoLCBkYXRlIH0gPSBkYXRlT2JqZWN0O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0b2RheSA9IHN0YXJ0T2ZEYXkoZGF0ZSkuZ2V0VGltZSgpID09PSBub3cuZ2V0VGltZSgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXNhYmxlZCA9IChtaW5EYXRlICYmIGRhdGUgPCBtaW5EYXRlKSB8fCAobWF4RGF0ZSAmJiBkYXRlID4gbWF4RGF0ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPVxuICAgICAgICAgICAgICAgICAgICAgIGRhdGUuZ2V0VGltZSgpID09PSBtaW4/LmdldFRpbWUoKSB8fFxuICAgICAgICAgICAgICAgICAgICAgIChtaW4gJiYgbWF4ICYmIGRhdGVJbnRlcnNlY3QoZGF0ZSwgeyBtaW4sIG1heCB9KSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZVNlbGVjdGVkID1cbiAgICAgICAgICAgICAgICAgICAgICAhc2VsZWN0ZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAhZGlzYWJsZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAoZGF0ZS5nZXRUaW1lKCkgPT09IGhvdmVyZWQ/LmdldFRpbWUoKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKG1pbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAhbWF4ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZUludGVyc2VjdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbiA8PSBob3ZlcmVkID8geyBtaW4sIG1heDogaG92ZXJlZCB9IDogeyBtaW46IGhvdmVyZWQsIG1heDogbWluIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tlZCA9IGJsb2NrZWRSYW5nZXMuc29tZSgocmFuZ2UpID0+IGRhdGVJbnRlcnNlY3QoZGF0ZSwgcmFuZ2UpKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtgJHtpbmRleH0tJHtkYXlJbmRleH1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtnZXREYXlDc3NTdHlsZXMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldk1vbnRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0TW9udGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRvZGF5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja2VkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlU2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5nZXREYXRlUHJvcHMoeyBkYXRlT2JqOiBkYXRlT2JqZWN0IH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGlydHkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWluKSBzZXQobWluLCBkYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHNldChkYXRlLCBtYXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldChkYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlck92ZXI9eygpID0+IHNldEhvdmVyZWQoZGF0ZSl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJPdXQ9eygpID0+IHNldEhvdmVyZWQodW5kZWZpbmVkKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7ZGF0ZS5nZXREYXRlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKSl9XG5cbiAgICAgIDxkaXZcbiAgICAgICAgY3NzPXt7XG4gICAgICAgICAgbWFyZ2luVG9wOiAndmFyKC0tc3BhY2luZyknLFxuICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAge3Jlc29sdmVkUXVpY2tPcHRpb25zfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iXX0= */",
976
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2RhdGVQaWNrZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTZkNEIiLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvc2NodW1tYXItdGFibGUvc2NodW1tYXItdGFibGUvc3JjL2NvbXBvbmVudHMvZGF0ZVBpY2tlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlT2JqLCB1c2VEYXl6ZWQgfSBmcm9tICdkYXl6ZWQnO1xuaW1wb3J0IHtcbiAgRnJhZ21lbnQsXG4gIFJlYWN0Tm9kZSxcbiAgY3JlYXRlQ29udGV4dCxcbiAgdXNlQ29udGV4dCxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICcuLi9ob29rcy91c2VUaGVtZSc7XG5pbXBvcnQgeyBkZWZhdWx0cyB9IGZyb20gJy4uL21pc2MvZGVmYXVsdHMnO1xuaW1wb3J0IHsgZ3JheSB9IGZyb20gJy4uL3RoZW1lL2RlZmF1bHRUaGVtZS9kZWZhdWx0Q2xhc3Nlcyc7XG5pbXBvcnQgeyB1c2VDc3NWYXJpYWJsZXMgfSBmcm9tICcuLi90aGVtZS91c2VDc3NWYXJpYWJsZXMnO1xuaW1wb3J0IHsgRGF0ZUlucHV0IH0gZnJvbSAnLi9kYXRlSW5wdXQnO1xuaW1wb3J0IHsgVGV4dCB9IGZyb20gJy4vdGV4dCc7XG5pbXBvcnQgeyBJbnRlcnBvbGF0aW9uLCBUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuZXhwb3J0IHR5cGUgRGF0ZVJhbmdlID0geyBtaW46IERhdGU7IG1heDogRGF0ZSB9O1xuXG5leHBvcnQgdHlwZSBEYXRlUGlja2VyUXVpY2tPcHRpb24gPVxuICB8ICd0b2RheSdcbiAgfCAndGhpc1dlZWsnXG4gIHwgJ3RoaXNNb250aCdcbiAgfCAndGhpc1llYXInXG4gIHwgJ2xhc3RTZXZlbkRheXMnXG4gIHwgJ2xhc3RUaGlydHlEYXlzJ1xuICB8IHsgbGFiZWw6IFJlYWN0Tm9kZTsgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCAoKCkgPT4gRGF0ZSB8IERhdGVSYW5nZSkgfVxuICB8ICgob25DaGFuZ2U6ICh2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpID0+IHZvaWQpID0+IFJlYWN0Tm9kZSk7XG5cbmV4cG9ydCB0eXBlIERhdGVQaWNrZXJQcm9wcyA9IHtcbiAgLyoqIEN1cnJlbnRseSBzZWxlY3RlZCBkYXkgb3IgcmFuZ2Ugb2YgZGF5cy4gKi9cbiAgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsO1xuICAvKiogQ2FsbGJhY2sgZm9yIHdoZW4gdGhlIGRheSAocmFuZ2UpIGNoYW5nZXMuICovXG4gIG9uQ2hhbmdlOiAodmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSA9PiB2b2lkO1xuICAvKiogQ3VycmVudGx5IHZpc2libGUgZGF0ZS4gKi9cbiAgZGF0ZUluVmlldz86IERhdGU7XG4gIC8qKiBDYWxsYmFjayBmb3Igd2hlbiB0aGUgY3VycmVudGx5IHZpc2libGUgZGF0ZSBjaGFuZ2VzLiAqL1xuICBvbkRhdGVJblZpZXdDaGFuZ2U/OiAodmFsdWU6IERhdGUpID0+IHZvaWQ7XG4gIC8qKiBJZiBlbmFibGVkLCByYW5nZXMgY2FuIGJlIHNlbGVjdGVkLiAqL1xuICByYW5nZVNlbGVjdD86IGJvb2xlYW47XG4gIC8qKiBXaGljaCBsb2NhbGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgY2FsZW5kYXIuICovXG4gIGxvY2FsZT86IHN0cmluZztcbiAgLyoqIFdoaWNoIGRheSBvZiB0aGUgd2VlayBzaG91bGQgYmUgaW4gdGhlIGZpcnN0IGNvbHVtbi4gKDA9U3VuZGF5LCAxPU1vbmRheSwgLi4uKVxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICBmaXJzdERheU9mV2Vlaz86IDAgfCAxIHwgMiB8IDMgfCA0IHwgNSB8IDY7XG4gIC8qKiBXaGljaCBtb250aCB0byBzaG93IGluaXRpYWxseSAqL1xuICBkZWZhdWx0RGF0ZUluVmlldz86IERhdGU7XG4gIC8qKiBTaG93IGJ1dHRvbnMgdG8gcXVpY2tseSBzZWxlY3Qgc3VnZ2VzdGVkIGRhdGVzIG9yIGRhdGUgcmFuZ2VzICovXG4gIHF1aWNrT3B0aW9ucz86IERhdGVQaWNrZXJRdWlja09wdGlvbltdO1xuICAvKiogTWluaW11bSBzZWxlY3RhYmxlIGRhdGUgKi9cbiAgLyoqIERhdGUgcmFuZ2VzIHRoYXQgYXJlIHZpc3VhbGx5IG1hcmtlZCBhcyBibG9ja2VkICovXG4gIGJsb2NrZWRSYW5nZXM/OiBEYXRlUmFuZ2VbXTtcbiAgbWluRGF0ZT86IERhdGU7XG4gIC8qKiBNYXhpbXVtIHNlbGVjdGFibGUgZGF0ZSAqL1xuICBtYXhEYXRlPzogRGF0ZTtcbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgY2FsZW5kYXIgd2VlayBpbiB0aGUgZmlyc3QgY29sdW1uICovXG4gIHNob3dDYWxlbmRhcldlZWs/OiBib29sZWFuO1xufTtcblxuY29uc3QgRGF0ZVBpY2tlckNvbnRleHQgPSBjcmVhdGVDb250ZXh0PFBhcnRpYWw8T21pdDxEYXRlUGlja2VyUHJvcHMsICd2YWx1ZScgfCAnb25DaGFuZ2UnPj4+KHt9KTtcblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVQaWNrZXJQcm92aWRlcih7XG4gIGNoaWxkcmVuLFxuICAuLi5wcm9wc1xufTogUGFydGlhbDxPbWl0PERhdGVQaWNrZXJQcm9wcywgJ3ZhbHVlJyB8ICdvbkNoYW5nZSc+PiAmIHsgY2hpbGRyZW4/OiBSZWFjdE5vZGUgfSkge1xuICBjb25zdCB2YWx1ZSA9IHVzZU1lbW8oKCkgPT4gcHJvcHMsIFtKU09OLnN0cmluZ2lmeShwcm9wcyldKTtcblxuICByZXR1cm4gPERhdGVQaWNrZXJDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt2YWx1ZX0+e2NoaWxkcmVufTwvRGF0ZVBpY2tlckNvbnRleHQuUHJvdmlkZXI+O1xufVxuXG5jb25zdCB3ZWVrRGF5cyA9IFswLCAxLCAyLCAzLCA0LCA1LCA2XSBhcyBjb25zdDtcblxuLyoqIFJvdW5kcyBhIGRhdGUgZG93biB0byB0aGUgc3RhcnQgb2YgdGhlIGRheS4gKi9cbmV4cG9ydCBjb25zdCBzdGFydE9mRGF5ID0gKGQ6IERhdGUpID0+IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgZC5nZXRNb250aCgpLCBkLmdldERhdGUoKSk7XG5cbi8qKiBSb3VuZHMgYSBkYXRlIHVwIHRvIHRoZSBlbmQgb2YgdGhlIGRheS4gKi9cbmV4cG9ydCBjb25zdCBlbmRPZkRheSA9IChkOiBEYXRlKSA9PlxuICBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIGQuZ2V0TW9udGgoKSwgZC5nZXREYXRlKCkgKyAxLCAwLCAwLCAwLCAtMSk7XG5cbmV4cG9ydCBjb25zdCBsYXN0RGF5cyA9IChkYXlzOiBudW1iZXIpOiBEYXRlUmFuZ2UgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBtaW4gPSBuZXcgRGF0ZShub3cpO1xuICBtaW4uc2V0RGF0ZShtaW4uZ2V0RGF0ZSgpIC0gZGF5cyArIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShub3cpLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHRvZGF5ID0gKCkgPT4gbGFzdERheXMoMSk7XG5cbmV4cG9ydCBjb25zdCB0aGlzV2VlayA9IChkZWx0YSA9IDAsIGZpcnN0RGF5T2ZXZWVrID0gMSk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG5cbiAgbGV0IGRpZmYgPSBtaW4uZ2V0RGF5KCkgLSBmaXJzdERheU9mV2VlaztcbiAgaWYgKGRpZmYgPCAwKSB7XG4gICAgZGlmZiArPSA3O1xuICB9XG4gIG1pbi5zZXREYXRlKG1pbi5nZXREYXRlKCkgLSBkaWZmICsgZGVsdGEgKiA3KTtcblxuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpICsgNik7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdGhpc01vbnRoID0gKGRlbHRhID0gMCk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG4gIG1pbi5zZXREYXRlKDEpO1xuICBtaW4uc2V0TW9udGgobWluLmdldE1vbnRoKCkgKyBkZWx0YSk7XG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXRNb250aChtYXguZ2V0TW9udGgoKSArIDEpO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpIC0gMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdGhpc1llYXIgPSAoZGVsdGEgPSAwKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcbiAgbWluLnNldERhdGUoMSk7XG4gIG1pbi5zZXRNb250aCgwKTtcbiAgbWluLnNldEZ1bGxZZWFyKG1pbi5nZXRGdWxsWWVhcigpICsgZGVsdGEpO1xuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0RnVsbFllYXIobWF4LmdldEZ1bGxZZWFyKCkgKyAxKTtcbiAgbWF4LnNldERhdGUobWF4LmdldERhdGUoKSAtIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShtYXgpLFxuICB9O1xufTtcblxuY29uc3QgTVNfUEVSX0RBWSA9IDEwMDAgKiA2MCAqIDYwICogMjQ7XG5leHBvcnQgY29uc3QgZ2V0Q2FsZW5kYXJXZWVrID0gKGRhdGU6IERhdGUpOiBudW1iZXIgPT4ge1xuICAvLyBJU08gODYwMTogV2VlayAxIGlzIHRoZSB3ZWVrIHdpdGggdGhlIGZpcnN0IFRodXJzZGF5IG9mIHRoZSB5ZWFyLlxuICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG5cbiAgY29uc3QgZW5kT2ZXZWVrID0gbmV3IERhdGUoXG4gICAgZGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgIGRhdGUuZ2V0TW9udGgoKSxcbiAgICBkYXRlLmdldERhdGUoKSArICg3IC0gKGRhdGUuZ2V0RGF5KCkgfHwgNykpLFxuICApO1xuXG4gIGNvbnN0IHllYXIgPSBlbmRPZldlZWsuZ2V0RnVsbFllYXIoKTtcbiAgY29uc3QgZmlyc3REYXlPZlllYXIgPSBuZXcgRGF0ZSh5ZWFyLCAwLCAxKTtcbiAgY29uc3QgZGF5T2ZZZWFyID1cbiAgICBNYXRoLmZsb29yKFxuICAgICAgKGVuZE9mV2Vlay5nZXRUaW1lKCkgLVxuICAgICAgICBmaXJzdERheU9mWWVhci5nZXRUaW1lKCkgK1xuICAgICAgICAoZW5kT2ZXZWVrLmdldFRpbWV6b25lT2Zmc2V0KCkgLSBmaXJzdERheU9mWWVhci5nZXRUaW1lem9uZU9mZnNldCgpKSkgL1xuICAgICAgICBNU19QRVJfREFZLFxuICAgICkgKyAxO1xuICBjb25zdCB3ZWVrT2ZZZWFyID0gTWF0aC5mbG9vcigoMyArIGRheU9mWWVhcikgLyA3KTtcblxuICBpZiAod2Vla09mWWVhciA9PT0gMCkge1xuICAgIHJldHVybiAoXG4gICAgICBnZXRDYWxlbmRhcldlZWsoXG4gICAgICAgIG5ldyBEYXRlKGVuZE9mV2Vlay5nZXRGdWxsWWVhcigpLCBlbmRPZldlZWsuZ2V0TW9udGgoKSwgZW5kT2ZXZWVrLmdldERhdGUoKSAtIDcpLFxuICAgICAgKSArIDFcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIHdlZWtPZlllYXI7XG59O1xuXG5leHBvcnQgY29uc3QgY29tbW9uUXVpY2tPcHRpb25zID0ge1xuICB0b2RheTogeyBsYWJlbDogPFRleHQgaWQ9XCJ0b2RheVwiIC8+LCB2YWx1ZTogdG9kYXkgfSxcbiAgdGhpc1dlZWs6IHsgbGFiZWw6IDxUZXh0IGlkPVwidGhpc1dlZWtcIiAvPiwgdmFsdWU6IChwcm9wcykgPT4gdGhpc1dlZWsoMCwgcHJvcHMuZmlyc3REYXlPZldlZWspIH0sXG4gIHRoaXNNb250aDogeyBsYWJlbDogPFRleHQgaWQ9XCJ0aGlzTW9udGhcIiAvPiwgdmFsdWU6ICgpID0+IHRoaXNNb250aCgpIH0sXG4gIHRoaXNZZWFyOiB7IGxhYmVsOiA8VGV4dCBpZD1cInRoaXNZZWFyXCIgLz4sIHZhbHVlOiAoKSA9PiB0aGlzWWVhcigpIH0sXG4gIGxhc3RTZXZlbkRheXM6IHsgbGFiZWw6IDxUZXh0IGlkPVwibGFzdFNldmVuRGF5c1wiIC8+LCB2YWx1ZTogKCkgPT4gbGFzdERheXMoNykgfSxcbiAgbGFzdFRoaXJ0eURheXM6IHsgbGFiZWw6IDxUZXh0IGlkPVwibGFzdFRoaXJ0eURheXNcIiAvPiwgdmFsdWU6ICgpID0+IGxhc3REYXlzKDMwKSB9LFxufSBzYXRpc2ZpZXMgUmVjb3JkPFxuICBEYXRlUGlja2VyUXVpY2tPcHRpb24gJiBzdHJpbmcsXG4gIHsgbGFiZWw6IFJlYWN0Tm9kZTsgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCAoKHByb3BzOiBEYXRlUGlja2VyUHJvcHMpID0+IERhdGUgfCBEYXRlUmFuZ2UpIH1cbj47XG5cbi8qKiBSZXR1cm5zIHdoZXRoZXIgdHdvIGRhdGVzIGFuZC9vciBkYXRlIHJhbmdlcyBpbnRlcnNlY3QuIEludGVyc2VjdGlvbiBpcyBjb25zaWRlcmVkIHBlciBkYXkuICovXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUludGVyc2VjdChcbiAgYTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwgfCB1bmRlZmluZWQsXG4gIGI6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsIHwgdW5kZWZpbmVkLFxuKSB7XG4gIGlmIChhIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIGEgPSB7IG1pbjogYSwgbWF4OiBhIH07XG4gIH1cbiAgaWYgKGIgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgYiA9IHsgbWluOiBiLCBtYXg6IGIgfTtcbiAgfVxuXG4gIGlmICghYT8ubWluIHx8ICFhLm1heCB8fCAhYj8ubWluIHx8ICFiLm1heCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiAhKGVuZE9mRGF5KGEubWF4KSA8IHN0YXJ0T2ZEYXkoYi5taW4pIHx8IHN0YXJ0T2ZEYXkoYS5taW4pID4gZW5kT2ZEYXkoYi5tYXgpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGVDbGFtcChkYXRlOiBEYXRlLCBtaW4/OiBEYXRlLCBtYXg/OiBEYXRlKSB7XG4gIGlmIChtaW4gJiYgZGF0ZSA8IG1pbikge1xuICAgIHJldHVybiBtaW47XG4gIH1cblxuICBpZiAobWF4ICYmIGRhdGUgPiBtYXgpIHtcbiAgICByZXR1cm4gbWF4O1xuICB9XG5cbiAgcmV0dXJuIGRhdGU7XG59XG5cbmZ1bmN0aW9uIGdldFZhbHVlRm9yQ29tcGFyaXNvbih2YWx1ZT86IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSB7XG4gIGlmICghdmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHJldHVybiB2YWx1ZS5nZXRUaW1lKCk7XG4gIH1cbiAgcmV0dXJuIGAke3ZhbHVlLm1pbj8uZ2V0VGltZSgpfS0ke3ZhbHVlLm1heD8uZ2V0VGltZSgpfWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRlUGlja2VyKHByb3BzOiBEYXRlUGlja2VyUHJvcHMpIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoRGF0ZVBpY2tlckNvbnRleHQpO1xuXG4gIGNvbnN0IHtcbiAgICB2YWx1ZSxcbiAgICByYW5nZVNlbGVjdCxcbiAgICBsb2NhbGUsXG4gICAgZmlyc3REYXlPZldlZWsgPSAxLFxuICAgIGRlZmF1bHREYXRlSW5WaWV3LFxuICAgIHF1aWNrT3B0aW9ucyA9IFsndG9kYXknLCAndGhpc1dlZWsnXSxcbiAgICBtaW5EYXRlLFxuICAgIG1heERhdGUsXG4gICAgc2hvd0NhbGVuZGFyV2VlayxcbiAgICBibG9ja2VkUmFuZ2VzID0gW10sXG4gIH0gPSBkZWZhdWx0czxEYXRlUGlja2VyUHJvcHM+KHByb3BzLCBjb250ZXh0KTtcblxuICBmdW5jdGlvbiBvbkNoYW5nZSh2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICB2YWx1ZSA9IGRhdGVDbGFtcCh2YWx1ZSwgbWluRGF0ZSwgbWF4RGF0ZSk7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSkge1xuICAgICAgdmFsdWUgPSB7XG4gICAgICAgIG1pbjogZGF0ZUNsYW1wKHZhbHVlLm1pbiwgbWluRGF0ZSwgbWF4RGF0ZSksXG4gICAgICAgIG1heDogZGF0ZUNsYW1wKHZhbHVlLm1heCwgbWluRGF0ZSwgbWF4RGF0ZSksXG4gICAgICB9O1xuICAgIH1cblxuICAgIHByb3BzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgfVxuXG4gIGNvbnN0IEJ1dHRvbiA9IHVzZVRoZW1lKCh0KSA9PiB0LmNvbXBvbmVudHMuQnV0dG9uKTtcbiAgY29uc3QgSWNvbkJ1dHRvbiA9IHVzZVRoZW1lKCh0KSA9PiB0LmNvbXBvbmVudHMuSWNvbkJ1dHRvbik7XG4gIGNvbnN0IENoZXZyb25SaWdodCA9IHVzZVRoZW1lKCh0KSA9PiB0Lmljb25zLkNoZXZyb25SaWdodCk7XG4gIGNvbnN0IGNzc1ZhcmlhYmxlcyA9IHVzZUNzc1ZhcmlhYmxlcygpO1xuICBmdW5jdGlvbiBnZXREYXlDc3NTdHlsZXMoe1xuICAgIGRpc2FibGVkLFxuICAgIHByZXZNb250aCxcbiAgICBuZXh0TW9udGgsXG4gICAgdG9kYXksXG4gICAgYmxvY2tlZCxcbiAgICBzZWxlY3RlZCxcbiAgICBwcmVTZWxlY3RlZCxcbiAgfToge1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBwcmV2TW9udGg/OiBib29sZWFuO1xuICAgIG5leHRNb250aD86IGJvb2xlYW47XG4gICAgdG9kYXk/OiBib29sZWFuO1xuICAgIGJsb2NrZWQ/OiBib29sZWFuO1xuICAgIHNlbGVjdGVkPzogYm9vbGVhbjtcbiAgICBwcmVTZWxlY3RlZD86IGJvb2xlYW47XG4gIH0pOiBJbnRlcnBvbGF0aW9uPFRoZW1lPiB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgIGJvcmRlcjogJ25vbmUnLFxuICAgICAgICBiYWNrZ3JvdW5kOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICBjdXJzb3I6IGRpc2FibGVkID8gdW5kZWZpbmVkIDogJ3BvaW50ZXInLFxuICAgICAgICBmb250OiAnaW5oZXJpdCcsXG4gICAgICB9LFxuICAgICAgKHByZXZNb250aCB8fCBuZXh0TW9udGgpICYmIHtcbiAgICAgICAgY29sb3I6IGdyYXksXG4gICAgICB9LFxuICAgICAgdG9kYXkgJiYge1xuICAgICAgICBvdXRsaW5lOiAnMXB4IHNvbGlkIHZhcigtLXNlY29uZGFyeU1haW4pJyxcbiAgICAgIH0sXG4gICAgICBibG9ja2VkICYmIHtcbiAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLWJsb2NrZWRNYWluKScsXG4gICAgICAgIGNvbG9yOiAndmFyKC0tYmxvY2tlZENvbnRyYXN0VGV4dCknLFxuICAgICAgfSxcbiAgICAgIHNlbGVjdGVkICYmIHtcbiAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLXByaW1hcnlNYWluKScsXG4gICAgICAgIGNvbG9yOiAndmFyKC0tcHJpbWFyeUNvbnRyYXN0VGV4dCknLFxuICAgICAgfSxcbiAgICAgIGJsb2NrZWQgJiZcbiAgICAgICAgc2VsZWN0ZWQgJiYge1xuICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICAgICc6OmJlZm9yZSc6IHtcbiAgICAgICAgICAgIGNvbnRlbnQ6ICdcIlwiJyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgcmlnaHQ6IDAsXG4gICAgICAgICAgICBib3R0b206IDAsXG4gICAgICAgICAgICBsZWZ0OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLWJsb2NrZWRNYWluKScsXG4gICAgICAgICAgICBjbGlwUGF0aDogJ3BvbHlnb24oMCAwLCAwIDUwJSwgNTAlIDApJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgcHJlU2VsZWN0ZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tcHJpbWFyeUxpZ2h0KScsXG4gICAgICAgIGNvbG9yOiAndmFyKC0tcHJpbWFyeUNvbnRyYXN0VGV4dCknLFxuICAgICAgfSxcbiAgICBdO1xuICB9XG5cbiAgY29uc3QgbW91bnRUaW1lID0gdXNlTWVtbygoKSA9PiBuZXcgRGF0ZSgpLCBbXSk7XG4gIGNvbnN0IFtkaXJ0eSwgc2V0RGlydHldID0gdXNlU3RhdGU8UGFydGlhbDxEYXRlUmFuZ2U+PigpO1xuICBjb25zdCBbaG92ZXJlZCwgc2V0SG92ZXJlZF0gPSB1c2VTdGF0ZTxEYXRlUmFuZ2U+KCk7XG4gIGNvbnN0IFtkYXRlSW5WaWV3TG9jYWwsIHNldERhdGVJblZpZXdMb2NhbF0gPSB1c2VTdGF0ZTxEYXRlPihkZWZhdWx0RGF0ZUluVmlldyA/PyBtb3VudFRpbWUpO1xuICBjb25zdCBkYXRlSW5WaWV3ID0gcHJvcHMuZGF0ZUluVmlldyA/PyBkYXRlSW5WaWV3TG9jYWw7XG5cbiAgZnVuY3Rpb24gc2V0RGF0ZUluVmlldyhkYXRlOiBEYXRlKSB7XG4gICAgc2V0RGF0ZUluVmlld0xvY2FsKGRhdGUpO1xuICAgIHByb3BzLm9uRGF0ZUluVmlld0NoYW5nZT8uKGRhdGUpO1xuICB9XG5cbiAgY29uc3QgbWluID0gZGlydHkgPyBkaXJ0eS5taW4gOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlPy5taW47XG4gIGNvbnN0IG1heCA9IGRpcnR5ID8gZGlydHkubWF4IDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZT8ubWF4O1xuXG4gIGNvbnN0IHJlc29sdmVkUXVpY2tPcHRpb25zID0gWy4uLnF1aWNrT3B0aW9ucywgeyBsYWJlbDogPFRleHQgaWQ9XCJyZXNldFwiIC8+LCB2YWx1ZTogbnVsbCB9XS5tYXAoXG4gICAgKG9wdGlvbiwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChvcHRpb24gaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICByZXR1cm4gb3B0aW9uKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBsYWJlbCwgdmFsdWUgfSA9IHR5cGVvZiBvcHRpb24gPT09ICdzdHJpbmcnID8gY29tbW9uUXVpY2tPcHRpb25zW29wdGlvbl0gOiBvcHRpb247XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuXG4gICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICAgICAgICBvbkNoYW5nZSh2YWx1ZShwcm9wcykpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7bGFiZWx9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKTtcbiAgICB9LFxuICApO1xuXG4gIGNvbnN0IHsgY2FsZW5kYXJzLCBnZXRCYWNrUHJvcHMsIGdldEZvcndhcmRQcm9wcywgZ2V0RGF0ZVByb3BzIH0gPSB1c2VEYXl6ZWQoe1xuICAgIG9uRGF0ZVNlbGVjdGVkOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgZmlyc3REYXlPZldlZWssXG4gICAgc2hvd091dHNpZGVEYXlzOiB0cnVlLFxuICAgIGRhdGU6IGRhdGVJblZpZXcsXG4gICAgb25PZmZzZXRDaGFuZ2VkOiAob2Zmc2V0KSA9PlxuICAgICAgc2V0RGF0ZUluVmlldyhuZXcgRGF0ZShkYXRlSW5WaWV3LmdldEZ1bGxZZWFyKCksIGRhdGVJblZpZXcuZ2V0TW9udGgoKSArIG9mZnNldCkpLFxuICAgIG9mZnNldDogMCxcbiAgICBtaW5EYXRlLFxuICAgIG1heERhdGUsXG4gIH0pO1xuICBjb25zdCBub3cgPSB1c2VNZW1vKCgpID0+IHN0YXJ0T2ZEYXkobmV3IERhdGUoKSksIFtdKTtcblxuICBjb25zdCBmb3JtYXRXZWVrZGF5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyB3ZWVrZGF5OiAnc2hvcnQnIH0pO1xuICAgIHJldHVybiAod2Vla0RheTogbnVtYmVyKSA9PlxuICAgICAgZm9ybWF0KG5ldyBEYXRlKERhdGUuVVRDKDIwMjEsIDcsICgod2Vla0RheSArIGZpcnN0RGF5T2ZXZWVrKSAlIDcpICsgMSkpKTtcbiAgfSwgW2xvY2FsZSwgZmlyc3REYXlPZldlZWtdKTtcblxuICB1c2VFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHNldERhdGVJblZpZXcoXG4gICAgICAgIHZhbHVlID09PSBudWxsID8gZGVmYXVsdERhdGVJblZpZXcgPz8gbW91bnRUaW1lIDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZS5tYXgsXG4gICAgICApLFxuICAgIFtnZXRWYWx1ZUZvckNvbXBhcmlzb24odmFsdWUpLCBnZXRWYWx1ZUZvckNvbXBhcmlzb24oZGVmYXVsdERhdGVJblZpZXcpLCBtb3VudFRpbWVdLFxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFyYW5nZVNlbGVjdCkge1xuICAgICAgc2V0RGlydHkodW5kZWZpbmVkKTtcbiAgICB9XG4gIH0sIFtyYW5nZVNlbGVjdF0pO1xuXG4gIGZ1bmN0aW9uIHNldChtaW4/OiBEYXRlLCBtYXg/OiBEYXRlLCBlZGl0PzogJ21pbicgfCAnbWF4Jykge1xuICAgIGlmICghcmFuZ2VTZWxlY3QpIHtcbiAgICAgIG9uQ2hhbmdlKG1pbiA/PyBudWxsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAobWluICYmIG1heCAmJiBtaW4gPiBtYXgpIHtcbiAgICAgIGlmIChlZGl0ID09PSAnbWluJykge1xuICAgICAgICBtYXggPSBtaW47XG4gICAgICB9IGVsc2UgaWYgKGVkaXQgPT09ICdtYXgnKSB7XG4gICAgICAgIG1pbiA9IG1heDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIFttaW4sIG1heF0gPSBbbWF4LCBtaW5dO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghbWluID09PSAhbWF4KSB7XG4gICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuICAgICAgb25DaGFuZ2UobWluICYmIG1heCA/IHsgbWluLCBtYXg6IGVuZE9mRGF5KG1heCkgfSA6IG51bGwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXREaXJ0eSh7IG1pbiwgbWF4IH0pO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGZvcm1hdE1vbnRoID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyBtb250aDogJ2xvbmcnIH0pO1xuICAgIHJldHVybiAobW9udGg6IG51bWJlcikgPT4gZm9ybWF0KG5ldyBEYXRlKDIwMjEsIG1vbnRoKSk7XG4gIH0sIFtsb2NhbGVdKTtcblxuICBjb25zdCBmb3JtYXRZZWFyID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyB5ZWFyOiAnbnVtZXJpYycgfSk7XG4gICAgcmV0dXJuICh5ZWFyOiBudW1iZXIpID0+IGZvcm1hdChuZXcgRGF0ZSh5ZWFyLCAwLCAxKSk7XG4gIH0sIFtsb2NhbGVdKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY3NzPXtjc3NWYXJpYWJsZXN9PlxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e3tcbiAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgZ3JpZEF1dG9GbG93OiAnY29sdW1uJyxcbiAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgYWxpZ25JdGVtczogJ2Jhc2VsaW5lJyxcbiAgICAgICAgICBnYXA6ICd2YXIoLS1zcGFjaW5nKScsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxEYXRlSW5wdXRcbiAgICAgICAgICB2YWx1ZT17bWluID8/IG51bGx9XG4gICAgICAgICAgb25DaGFuZ2U9eyhkYXRlKSA9PiBzZXQoZGF0ZSA/PyB1bmRlZmluZWQsIG1heCwgJ21pbicpfVxuICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAvPlxuXG4gICAgICAgIHtyYW5nZVNlbGVjdCAmJiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIHsnIC0gJ31cbiAgICAgICAgICAgIDxEYXRlSW5wdXRcbiAgICAgICAgICAgICAgdmFsdWU9e21heCA/PyBudWxsfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGRhdGUpID0+IHNldChtaW4sIGRhdGUgPz8gdW5kZWZpbmVkLCAnbWF4Jyl9XG4gICAgICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7Y2FsZW5kYXJzLm1hcCgoeyBtb250aCwgeWVhciwgd2Vla3MgfSkgPT4gKFxuICAgICAgICA8ZGl2IGtleT17YCR7bW9udGh9JHt5ZWFyfWB9IGNzcz17eyBkaXNwbGF5OiAnZ3JpZCcgfX0+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgIG1hcmdpbjogJ2NhbGModmFyKC0tc3BhY2luZykgKiA0KSAwJyxcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nLFxuICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPEljb25CdXR0b24gdHlwZT1cImJ1dHRvblwiIHsuLi5nZXRCYWNrUHJvcHMoeyBjYWxlbmRhcnMgfSl9PlxuICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0IGNzcz17eyB0cmFuc2Zvcm06ICdyb3RhdGUzZCgwLCAwLCAxLCAxODBkZWcpJyB9fSAvPlxuICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuXG4gICAgICAgICAgICA8ZGl2IGNzcz17eyBkaXNwbGF5OiAnZmxleCcgfX0+XG4gICAgICAgICAgICAgIHtmb3JtYXRNb250aChtb250aCl9IHtmb3JtYXRZZWFyKHllYXIpfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxJY29uQnV0dG9uIHR5cGU9XCJidXR0b25cIiB7Li4uZ2V0Rm9yd2FyZFByb3BzKHsgY2FsZW5kYXJzIH0pfT5cbiAgICAgICAgICAgICAgPENoZXZyb25SaWdodCAvPlxuICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgICAgICBncmlkVGVtcGxhdGVDb2x1bW5zOiAncmVwZWF0KDgsIG1heC1jb250ZW50KScsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtzaG93Q2FsZW5kYXJXZWVrID8gKFxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgICAgICBqdXN0aWZ5U2VsZjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgICAgICAgICAgIGJvcmRlclJpZ2h0OiBgMXB4IHNvbGlkICR7Z3JheX1gLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8VGV4dCBpZD1cImNhbGVuZGFyV2Vla1wiIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPGRpdiAvPlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAge3dlZWtEYXlzLm1hcCgoX3YsIHdlZWtEYXkpID0+IChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGtleT17d2Vla0RheX1cbiAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7Zm9ybWF0V2Vla2RheSh3ZWVrRGF5KX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApKX1cblxuICAgICAgICAgICAge3dlZWtzLm1hcCgod2VlaywgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgd2Vla1N0YXJ0ID0gd2Vla1swXSBhcyBEYXRlT2JqO1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrRW5kID0gd2Vla1s2XSBhcyBEYXRlT2JqO1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrRGlzYWJsZWQgPVxuICAgICAgICAgICAgICAgICFyYW5nZVNlbGVjdCB8fFxuICAgICAgICAgICAgICAgIChtaW5EYXRlICYmIHdlZWtFbmQuZGF0ZSA8IG1pbkRhdGUpIHx8XG4gICAgICAgICAgICAgICAgKG1heERhdGUgJiYgd2Vla1N0YXJ0LmRhdGUgPiBtYXhEYXRlKTtcblxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxGcmFnbWVudCBrZXk9e2luZGV4fT5cbiAgICAgICAgICAgICAgICAgIHtzaG93Q2FsZW5kYXJXZWVrID8gKFxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcjogd2Vla0Rpc2FibGVkID8gdW5kZWZpbmVkIDogJ3BvaW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9udDogJ2luaGVyaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmlnaHQ6IGAxcHggc29saWQgJHtncmF5fWAsXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAod2Vla0Rpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWluID0gbWluRGF0ZSAmJiB3ZWVrU3RhcnQuZGF0ZSA8IG1pbkRhdGUgPyBtaW5EYXRlIDogd2Vla1N0YXJ0LmRhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXggPSBtYXhEYXRlICYmIHdlZWtFbmQuZGF0ZSA+IG1heERhdGUgPyBtYXhEYXRlIDogd2Vla0VuZC5kYXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0KG1pbiwgbWF4KTtcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlck92ZXI9eygpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAhd2Vla0Rpc2FibGVkICYmIHNldEhvdmVyZWQoeyBtaW46IHdlZWtTdGFydC5kYXRlLCBtYXg6IHdlZWtFbmQuZGF0ZSB9KVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJPdXQ9eygpID0+ICF3ZWVrRGlzYWJsZWQgJiYgc2V0SG92ZXJlZCh1bmRlZmluZWQpfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge2dldENhbGVuZGFyV2Vlayh3ZWVrRW5kLmRhdGUpfVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICAgIHt3ZWVrLm1hcCgoZGF0ZU9iamVjdCwgZGF5SW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFkYXRlT2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxkaXYga2V5PXtkYXlJbmRleH0gLz47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHByZXZNb250aCwgbmV4dE1vbnRoLCBkYXRlIH0gPSBkYXRlT2JqZWN0O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0b2RheSA9IHN0YXJ0T2ZEYXkoZGF0ZSkuZ2V0VGltZSgpID09PSBub3cuZ2V0VGltZSgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXNhYmxlZCA9IChtaW5EYXRlICYmIGRhdGUgPCBtaW5EYXRlKSB8fCAobWF4RGF0ZSAmJiBkYXRlID4gbWF4RGF0ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPVxuICAgICAgICAgICAgICAgICAgICAgIGRhdGUuZ2V0VGltZSgpID09PSBtaW4/LmdldFRpbWUoKSB8fFxuICAgICAgICAgICAgICAgICAgICAgIChtaW4gJiYgbWF4ICYmIGRhdGVJbnRlcnNlY3QoZGF0ZSwgeyBtaW4sIG1heCB9KSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZVNlbGVjdGVkID1cbiAgICAgICAgICAgICAgICAgICAgICAhc2VsZWN0ZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAhZGlzYWJsZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAoZGF0ZUludGVyc2VjdChkYXRlLCBob3ZlcmVkKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKG1pbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAhbWF4ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZUludGVyc2VjdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbiA8PSBob3ZlcmVkLm1pblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IG1pbiwgbWF4OiBob3ZlcmVkLm1pbiB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHsgbWluOiBob3ZlcmVkLm1heCwgbWF4OiBtaW4gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9ja2VkID0gYmxvY2tlZFJhbmdlcy5zb21lKChyYW5nZSkgPT4gZGF0ZUludGVyc2VjdChkYXRlLCByYW5nZSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2Ake2luZGV4fS0ke2RheUluZGV4fWB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2dldERheUNzc1N0eWxlcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2TW9udGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRNb250aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kYXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVTZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgey4uLmdldERhdGVQcm9wcyh7IGRhdGVPYmo6IGRhdGVPYmplY3QgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaXJ0eSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtaW4pIHNldChtaW4sIGRhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugc2V0KGRhdGUsIG1heCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0KGRhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyT3Zlcj17KCkgPT4gc2V0SG92ZXJlZCh7IG1pbjogZGF0ZSwgbWF4OiBkYXRlIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyT3V0PXsoKSA9PiBzZXRIb3ZlcmVkKHVuZGVmaW5lZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge2RhdGUuZ2V0RGF0ZSgpfVxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgPC9GcmFnbWVudD5cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICkpfVxuXG4gICAgICA8ZGl2XG4gICAgICAgIGNzcz17e1xuICAgICAgICAgIG1hcmdpblRvcDogJ3ZhcigtLXNwYWNpbmcpJyxcbiAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgZ3JpZEF1dG9GbG93OiAnY29sdW1uJyxcbiAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIHtyZXNvbHZlZFF1aWNrT3B0aW9uc31cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuIl19 */",
967
977
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__$d
968
978
  };
969
979
  var _ref5$2 = process.env.NODE_ENV === "production" ? {
@@ -972,7 +982,7 @@ var _ref5$2 = process.env.NODE_ENV === "production" ? {
972
982
  } : {
973
983
  name: "g57uq1-DatePicker",
974
984
  styles: "display:flex;label:DatePicker;",
975
- map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2RhdGVQaWNrZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXVjaUIiLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvc2NodW1tYXItdGFibGUvc2NodW1tYXItdGFibGUvc3JjL2NvbXBvbmVudHMvZGF0ZVBpY2tlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlT2JqLCB1c2VEYXl6ZWQgfSBmcm9tICdkYXl6ZWQnO1xuaW1wb3J0IHtcbiAgRnJhZ21lbnQsXG4gIFJlYWN0Tm9kZSxcbiAgY3JlYXRlQ29udGV4dCxcbiAgdXNlQ29udGV4dCxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICcuLi9ob29rcy91c2VUaGVtZSc7XG5pbXBvcnQgeyBkZWZhdWx0cyB9IGZyb20gJy4uL21pc2MvZGVmYXVsdHMnO1xuaW1wb3J0IHsgZ3JheSB9IGZyb20gJy4uL3RoZW1lL2RlZmF1bHRUaGVtZS9kZWZhdWx0Q2xhc3Nlcyc7XG5pbXBvcnQgeyB1c2VDc3NWYXJpYWJsZXMgfSBmcm9tICcuLi90aGVtZS91c2VDc3NWYXJpYWJsZXMnO1xuaW1wb3J0IHsgRGF0ZUlucHV0IH0gZnJvbSAnLi9kYXRlSW5wdXQnO1xuaW1wb3J0IHsgVGV4dCB9IGZyb20gJy4vdGV4dCc7XG5pbXBvcnQgeyBJbnRlcnBvbGF0aW9uLCBUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuZXhwb3J0IHR5cGUgRGF0ZVJhbmdlID0geyBtaW46IERhdGU7IG1heDogRGF0ZSB9O1xuXG5leHBvcnQgdHlwZSBEYXRlUGlja2VyUXVpY2tPcHRpb24gPVxuICB8ICd0b2RheSdcbiAgfCAndGhpc1dlZWsnXG4gIHwgJ3RoaXNNb250aCdcbiAgfCAndGhpc1llYXInXG4gIHwgJ2xhc3RTZXZlbkRheXMnXG4gIHwgJ2xhc3RUaGlydHlEYXlzJ1xuICB8IHsgbGFiZWw6IFJlYWN0Tm9kZTsgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCAoKCkgPT4gRGF0ZSB8IERhdGVSYW5nZSkgfVxuICB8ICgob25DaGFuZ2U6ICh2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpID0+IHZvaWQpID0+IFJlYWN0Tm9kZSk7XG5cbmV4cG9ydCB0eXBlIERhdGVQaWNrZXJQcm9wcyA9IHtcbiAgLyoqIEN1cnJlbnRseSBzZWxlY3RlZCBkYXkgb3IgcmFuZ2Ugb2YgZGF5cy4gKi9cbiAgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsO1xuICAvKiogQ2FsbGJhY2sgZm9yIHdoZW4gdGhlIGRheSAocmFuZ2UpIGNoYW5nZXMuICovXG4gIG9uQ2hhbmdlOiAodmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSA9PiB2b2lkO1xuICAvKiogQ3VycmVudGx5IHZpc2libGUgZGF0ZS4gKi9cbiAgZGF0ZUluVmlldz86IERhdGU7XG4gIC8qKiBDYWxsYmFjayBmb3Igd2hlbiB0aGUgY3VycmVudGx5IHZpc2libGUgZGF0ZSBjaGFuZ2VzLiAqL1xuICBvbkRhdGVJblZpZXdDaGFuZ2U/OiAodmFsdWU6IERhdGUpID0+IHZvaWQ7XG4gIC8qKiBJZiBlbmFibGVkLCByYW5nZXMgY2FuIGJlIHNlbGVjdGVkLiAqL1xuICByYW5nZVNlbGVjdD86IGJvb2xlYW47XG4gIC8qKiBXaGljaCBsb2NhbGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgY2FsZW5kYXIuICovXG4gIGxvY2FsZT86IHN0cmluZztcbiAgLyoqIFdoaWNoIGRheSBvZiB0aGUgd2VlayBzaG91bGQgYmUgaW4gdGhlIGZpcnN0IGNvbHVtbi4gKDA9U3VuZGF5LCAxPU1vbmRheSwgLi4uKVxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICBmaXJzdERheU9mV2Vlaz86IDAgfCAxIHwgMiB8IDMgfCA0IHwgNSB8IDY7XG4gIC8qKiBXaGljaCBtb250aCB0byBzaG93IGluaXRpYWxseSAqL1xuICBkZWZhdWx0RGF0ZUluVmlldz86IERhdGU7XG4gIC8qKiBTaG93IGJ1dHRvbnMgdG8gcXVpY2tseSBzZWxlY3Qgc3VnZ2VzdGVkIGRhdGVzIG9yIGRhdGUgcmFuZ2VzICovXG4gIHF1aWNrT3B0aW9ucz86IERhdGVQaWNrZXJRdWlja09wdGlvbltdO1xuICAvKiogTWluaW11bSBzZWxlY3RhYmxlIGRhdGUgKi9cbiAgLyoqIERhdGUgcmFuZ2VzIHRoYXQgYXJlIHZpc3VhbGx5IG1hcmtlZCBhcyBibG9ja2VkICovXG4gIGJsb2NrZWRSYW5nZXM/OiBEYXRlUmFuZ2VbXTtcbiAgbWluRGF0ZT86IERhdGU7XG4gIC8qKiBNYXhpbXVtIHNlbGVjdGFibGUgZGF0ZSAqL1xuICBtYXhEYXRlPzogRGF0ZTtcbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgY2FsZW5kYXIgd2VlayBpbiB0aGUgZmlyc3QgY29sdW1uICovXG4gIHNob3dDYWxlbmRhcldlZWs/OiBib29sZWFuO1xufTtcblxuY29uc3QgRGF0ZVBpY2tlckNvbnRleHQgPSBjcmVhdGVDb250ZXh0PFBhcnRpYWw8T21pdDxEYXRlUGlja2VyUHJvcHMsICd2YWx1ZScgfCAnb25DaGFuZ2UnPj4+KHt9KTtcblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVQaWNrZXJQcm92aWRlcih7XG4gIGNoaWxkcmVuLFxuICAuLi5wcm9wc1xufTogUGFydGlhbDxPbWl0PERhdGVQaWNrZXJQcm9wcywgJ3ZhbHVlJyB8ICdvbkNoYW5nZSc+PiAmIHsgY2hpbGRyZW4/OiBSZWFjdE5vZGUgfSkge1xuICBjb25zdCB2YWx1ZSA9IHVzZU1lbW8oKCkgPT4gcHJvcHMsIFtKU09OLnN0cmluZ2lmeShwcm9wcyldKTtcblxuICByZXR1cm4gPERhdGVQaWNrZXJDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt2YWx1ZX0+e2NoaWxkcmVufTwvRGF0ZVBpY2tlckNvbnRleHQuUHJvdmlkZXI+O1xufVxuXG5jb25zdCB3ZWVrRGF5cyA9IFswLCAxLCAyLCAzLCA0LCA1LCA2XSBhcyBjb25zdDtcblxuLyoqIFJvdW5kcyBhIGRhdGUgZG93biB0byB0aGUgc3RhcnQgb2YgdGhlIGRheS4gKi9cbmV4cG9ydCBjb25zdCBzdGFydE9mRGF5ID0gKGQ6IERhdGUpID0+IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgZC5nZXRNb250aCgpLCBkLmdldERhdGUoKSk7XG5cbi8qKiBSb3VuZHMgYSBkYXRlIHVwIHRvIHRoZSBlbmQgb2YgdGhlIGRheS4gKi9cbmV4cG9ydCBjb25zdCBlbmRPZkRheSA9IChkOiBEYXRlKSA9PlxuICBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIGQuZ2V0TW9udGgoKSwgZC5nZXREYXRlKCkgKyAxLCAwLCAwLCAwLCAtMSk7XG5cbmV4cG9ydCBjb25zdCBsYXN0RGF5cyA9IChkYXlzOiBudW1iZXIpOiBEYXRlUmFuZ2UgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBtaW4gPSBuZXcgRGF0ZShub3cpO1xuICBtaW4uc2V0RGF0ZShtaW4uZ2V0RGF0ZSgpIC0gZGF5cyArIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShub3cpLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHRvZGF5ID0gKCkgPT4gbGFzdERheXMoMSk7XG5cbmV4cG9ydCBjb25zdCB0aGlzV2VlayA9IChkZWx0YSA9IDAsIGZpcnN0RGF5T2ZXZWVrID0gMSk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG5cbiAgbGV0IGRpZmYgPSBtaW4uZ2V0RGF5KCkgLSBmaXJzdERheU9mV2VlaztcbiAgaWYgKGRpZmYgPCAwKSB7XG4gICAgZGlmZiArPSA3O1xuICB9XG4gIG1pbi5zZXREYXRlKG1pbi5nZXREYXRlKCkgLSBkaWZmICsgZGVsdGEgKiA3KTtcblxuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpICsgNik7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdGhpc01vbnRoID0gKGRlbHRhID0gMCk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG4gIG1pbi5zZXREYXRlKDEpO1xuICBtaW4uc2V0TW9udGgobWluLmdldE1vbnRoKCkgKyBkZWx0YSk7XG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXRNb250aChtYXguZ2V0TW9udGgoKSArIDEpO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpIC0gMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdGhpc1llYXIgPSAoZGVsdGEgPSAwKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcbiAgbWluLnNldERhdGUoMSk7XG4gIG1pbi5zZXRNb250aCgwKTtcbiAgbWluLnNldEZ1bGxZZWFyKG1pbi5nZXRGdWxsWWVhcigpICsgZGVsdGEpO1xuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0RnVsbFllYXIobWF4LmdldEZ1bGxZZWFyKCkgKyAxKTtcbiAgbWF4LnNldERhdGUobWF4LmdldERhdGUoKSAtIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShtYXgpLFxuICB9O1xufTtcblxuY29uc3QgTVNfUEVSX0RBWSA9IDEwMDAgKiA2MCAqIDYwICogMjQ7XG5leHBvcnQgY29uc3QgZ2V0Q2FsZW5kYXJXZWVrID0gKGRhdGU6IERhdGUpOiBudW1iZXIgPT4ge1xuICAvLyBJU08gODYwMTogV2VlayAxIGlzIHRoZSB3ZWVrIHdpdGggdGhlIGZpcnN0IFRodXJzZGF5IG9mIHRoZSB5ZWFyLlxuICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG5cbiAgY29uc3QgeSA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgY29uc3QgZmRveSA9IG5ldyBEYXRlKHksIDAsIDEpO1xuICBjb25zdCBkb3kgPSBNYXRoLmZsb29yKFxuICAgIChkYXRlLmdldFRpbWUoKSAtIGZkb3kuZ2V0VGltZSgpICsgKGRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSAtIGZkb3kuZ2V0VGltZXpvbmVPZmZzZXQoKSkpIC9cbiAgICAgIE1TX1BFUl9EQVksXG4gICk7XG4gIGNvbnN0IGRvdyA9IGZkb3kuZ2V0RGF5KCk7XG4gIGNvbnN0IHcgPSBNYXRoLmZsb29yKCgxMCArIGRveSAtIGRvdykgLyA3KTtcblxuICBpZiAodyA9PT0gMCkge1xuICAgIHJldHVybiBnZXRDYWxlbmRhcldlZWsobmV3IERhdGUoeSAtIDEsIDExLCAzMSkpO1xuICB9XG5cbiAgcmV0dXJuIHc7XG59O1xuXG5leHBvcnQgY29uc3QgY29tbW9uUXVpY2tPcHRpb25zID0ge1xuICB0b2RheTogeyBsYWJlbDogPFRleHQgaWQ9XCJ0b2RheVwiIC8+LCB2YWx1ZTogdG9kYXkgfSxcbiAgdGhpc1dlZWs6IHsgbGFiZWw6IDxUZXh0IGlkPVwidGhpc1dlZWtcIiAvPiwgdmFsdWU6IChwcm9wcykgPT4gdGhpc1dlZWsoMCwgcHJvcHMuZmlyc3REYXlPZldlZWspIH0sXG4gIHRoaXNNb250aDogeyBsYWJlbDogPFRleHQgaWQ9XCJ0aGlzTW9udGhcIiAvPiwgdmFsdWU6ICgpID0+IHRoaXNNb250aCgpIH0sXG4gIHRoaXNZZWFyOiB7IGxhYmVsOiA8VGV4dCBpZD1cInRoaXNZZWFyXCIgLz4sIHZhbHVlOiAoKSA9PiB0aGlzWWVhcigpIH0sXG4gIGxhc3RTZXZlbkRheXM6IHsgbGFiZWw6IDxUZXh0IGlkPVwibGFzdFNldmVuRGF5c1wiIC8+LCB2YWx1ZTogKCkgPT4gbGFzdERheXMoNykgfSxcbiAgbGFzdFRoaXJ0eURheXM6IHsgbGFiZWw6IDxUZXh0IGlkPVwibGFzdFRoaXJ0eURheXNcIiAvPiwgdmFsdWU6ICgpID0+IGxhc3REYXlzKDMwKSB9LFxufSBzYXRpc2ZpZXMgUmVjb3JkPFxuICBEYXRlUGlja2VyUXVpY2tPcHRpb24gJiBzdHJpbmcsXG4gIHsgbGFiZWw6IFJlYWN0Tm9kZTsgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCAoKHByb3BzOiBEYXRlUGlja2VyUHJvcHMpID0+IERhdGUgfCBEYXRlUmFuZ2UpIH1cbj47XG5cbi8qKiBSZXR1cm5zIHdoZXRoZXIgdHdvIGRhdGVzIGFuZC9vciBkYXRlIHJhbmdlcyBpbnRlcnNlY3QuIEludGVyc2VjdGlvbiBpcyBjb25zaWRlcmVkIHBlciBkYXkuICovXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUludGVyc2VjdChhOiBEYXRlIHwgbnVsbCB8IERhdGVSYW5nZSwgYjogRGF0ZSB8IG51bGwgfCBEYXRlUmFuZ2UpIHtcbiAgaWYgKGEgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgYSA9IHsgbWluOiBhLCBtYXg6IGEgfTtcbiAgfVxuICBpZiAoYiBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICBiID0geyBtaW46IGIsIG1heDogYiB9O1xuICB9XG5cbiAgaWYgKCFhPy5taW4gfHwgIWEubWF4IHx8ICFiPy5taW4gfHwgIWIubWF4KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuICEoZW5kT2ZEYXkoYS5tYXgpIDwgc3RhcnRPZkRheShiLm1pbikgfHwgc3RhcnRPZkRheShhLm1pbikgPiBlbmRPZkRheShiLm1heCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUNsYW1wKGRhdGU6IERhdGUsIG1pbj86IERhdGUsIG1heD86IERhdGUpIHtcbiAgaWYgKG1pbiAmJiBkYXRlIDwgbWluKSB7XG4gICAgcmV0dXJuIG1pbjtcbiAgfVxuXG4gIGlmIChtYXggJiYgZGF0ZSA+IG1heCkge1xuICAgIHJldHVybiBtYXg7XG4gIH1cblxuICByZXR1cm4gZGF0ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVQaWNrZXIocHJvcHM6IERhdGVQaWNrZXJQcm9wcykge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChEYXRlUGlja2VyQ29udGV4dCk7XG5cbiAgY29uc3Qge1xuICAgIHZhbHVlLFxuICAgIHJhbmdlU2VsZWN0LFxuICAgIGxvY2FsZSxcbiAgICBmaXJzdERheU9mV2VlayA9IDEsXG4gICAgZGVmYXVsdERhdGVJblZpZXcsXG4gICAgcXVpY2tPcHRpb25zID0gWyd0b2RheScsICd0aGlzV2VlayddLFxuICAgIG1pbkRhdGUsXG4gICAgbWF4RGF0ZSxcbiAgICBzaG93Q2FsZW5kYXJXZWVrLFxuICAgIGJsb2NrZWRSYW5nZXMgPSBbXSxcbiAgfSA9IGRlZmF1bHRzPERhdGVQaWNrZXJQcm9wcz4ocHJvcHMsIGNvbnRleHQpO1xuXG4gIGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCkge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIHZhbHVlID0gZGF0ZUNsYW1wKHZhbHVlLCBtaW5EYXRlLCBtYXhEYXRlKTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICB2YWx1ZSA9IHtcbiAgICAgICAgbWluOiBkYXRlQ2xhbXAodmFsdWUubWluLCBtaW5EYXRlLCBtYXhEYXRlKSxcbiAgICAgICAgbWF4OiBkYXRlQ2xhbXAodmFsdWUubWF4LCBtaW5EYXRlLCBtYXhEYXRlKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcHJvcHMub25DaGFuZ2UodmFsdWUpO1xuICB9XG5cbiAgY29uc3QgQnV0dG9uID0gdXNlVGhlbWUoKHQpID0+IHQuY29tcG9uZW50cy5CdXR0b24pO1xuICBjb25zdCBJY29uQnV0dG9uID0gdXNlVGhlbWUoKHQpID0+IHQuY29tcG9uZW50cy5JY29uQnV0dG9uKTtcbiAgY29uc3QgQ2hldnJvblJpZ2h0ID0gdXNlVGhlbWUoKHQpID0+IHQuaWNvbnMuQ2hldnJvblJpZ2h0KTtcbiAgY29uc3QgY3NzVmFyaWFibGVzID0gdXNlQ3NzVmFyaWFibGVzKCk7XG4gIGZ1bmN0aW9uIGdldERheUNzc1N0eWxlcyh7XG4gICAgZGlzYWJsZWQsXG4gICAgcHJldk1vbnRoLFxuICAgIG5leHRNb250aCxcbiAgICB0b2RheSxcbiAgICBibG9ja2VkLFxuICAgIHNlbGVjdGVkLFxuICAgIHByZVNlbGVjdGVkLFxuICB9OiB7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIHByZXZNb250aD86IGJvb2xlYW47XG4gICAgbmV4dE1vbnRoPzogYm9vbGVhbjtcbiAgICB0b2RheT86IGJvb2xlYW47XG4gICAgYmxvY2tlZD86IGJvb2xlYW47XG4gICAgc2VsZWN0ZWQ/OiBib29sZWFuO1xuICAgIHByZVNlbGVjdGVkPzogYm9vbGVhbjtcbiAgfSk6IEludGVycG9sYXRpb248VGhlbWU+IHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgIGN1cnNvcjogZGlzYWJsZWQgPyB1bmRlZmluZWQgOiAncG9pbnRlcicsXG4gICAgICAgIGZvbnQ6ICdpbmhlcml0JyxcbiAgICAgIH0sXG4gICAgICAocHJldk1vbnRoIHx8IG5leHRNb250aCkgJiYge1xuICAgICAgICBjb2xvcjogZ3JheSxcbiAgICAgIH0sXG4gICAgICB0b2RheSAmJiB7XG4gICAgICAgIG91dGxpbmU6ICcxcHggc29saWQgdmFyKC0tc2Vjb25kYXJ5TWFpbiknLFxuICAgICAgfSxcbiAgICAgIGJsb2NrZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tYmxvY2tlZE1haW4pJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1ibG9ja2VkQ29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgICAgc2VsZWN0ZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tcHJpbWFyeU1haW4pJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1wcmltYXJ5Q29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgICAgYmxvY2tlZCAmJlxuICAgICAgICBzZWxlY3RlZCAmJiB7XG4gICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgICAgJzo6YmVmb3JlJzoge1xuICAgICAgICAgICAgY29udGVudDogJ1wiXCInLFxuICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICByaWdodDogMCxcbiAgICAgICAgICAgIGJvdHRvbTogMCxcbiAgICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tYmxvY2tlZE1haW4pJyxcbiAgICAgICAgICAgIGNsaXBQYXRoOiAncG9seWdvbigwIDAsIDAgNTAlLCA1MCUgMCknLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBwcmVTZWxlY3RlZCAmJiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1wcmltYXJ5TGlnaHQpJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1wcmltYXJ5Q29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICBjb25zdCBtb3VudFRpbWUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKCksIFtdKTtcbiAgY29uc3QgW2RpcnR5LCBzZXREaXJ0eV0gPSB1c2VTdGF0ZTxQYXJ0aWFsPERhdGVSYW5nZT4+KCk7XG4gIGNvbnN0IFtob3ZlcmVkLCBzZXRIb3ZlcmVkXSA9IHVzZVN0YXRlPERhdGU+KCk7XG4gIGNvbnN0IFtkYXRlSW5WaWV3TG9jYWwsIHNldERhdGVJblZpZXdMb2NhbF0gPSB1c2VTdGF0ZTxEYXRlPihkZWZhdWx0RGF0ZUluVmlldyA/PyBtb3VudFRpbWUpO1xuICBjb25zdCBkYXRlSW5WaWV3ID0gcHJvcHMuZGF0ZUluVmlldyA/PyBkYXRlSW5WaWV3TG9jYWw7XG5cbiAgZnVuY3Rpb24gc2V0RGF0ZUluVmlldyhkYXRlOiBEYXRlKSB7XG4gICAgc2V0RGF0ZUluVmlld0xvY2FsKGRhdGUpO1xuICAgIHByb3BzLm9uRGF0ZUluVmlld0NoYW5nZT8uKGRhdGUpO1xuICB9XG5cbiAgY29uc3QgbWluID0gZGlydHkgPyBkaXJ0eS5taW4gOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlPy5taW47XG4gIGNvbnN0IG1heCA9IGRpcnR5ID8gZGlydHkubWF4IDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZT8ubWF4O1xuXG4gIGNvbnN0IHJlc29sdmVkUXVpY2tPcHRpb25zID0gWy4uLnF1aWNrT3B0aW9ucywgeyBsYWJlbDogPFRleHQgaWQ9XCJyZXNldFwiIC8+LCB2YWx1ZTogbnVsbCB9XS5tYXAoXG4gICAgKG9wdGlvbiwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChvcHRpb24gaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICByZXR1cm4gb3B0aW9uKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBsYWJlbCwgdmFsdWUgfSA9IHR5cGVvZiBvcHRpb24gPT09ICdzdHJpbmcnID8gY29tbW9uUXVpY2tPcHRpb25zW29wdGlvbl0gOiBvcHRpb247XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuXG4gICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICAgICAgICBvbkNoYW5nZSh2YWx1ZShwcm9wcykpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7bGFiZWx9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKTtcbiAgICB9LFxuICApO1xuXG4gIGNvbnN0IHsgY2FsZW5kYXJzLCBnZXRCYWNrUHJvcHMsIGdldEZvcndhcmRQcm9wcywgZ2V0RGF0ZVByb3BzIH0gPSB1c2VEYXl6ZWQoe1xuICAgIG9uRGF0ZVNlbGVjdGVkOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgZmlyc3REYXlPZldlZWssXG4gICAgc2hvd091dHNpZGVEYXlzOiB0cnVlLFxuICAgIGRhdGU6IGRhdGVJblZpZXcsXG4gICAgb25PZmZzZXRDaGFuZ2VkOiAob2Zmc2V0KSA9PlxuICAgICAgc2V0RGF0ZUluVmlldyhuZXcgRGF0ZShkYXRlSW5WaWV3LmdldEZ1bGxZZWFyKCksIGRhdGVJblZpZXcuZ2V0TW9udGgoKSArIG9mZnNldCkpLFxuICAgIG9mZnNldDogMCxcbiAgICBtaW5EYXRlLFxuICAgIG1heERhdGUsXG4gIH0pO1xuICBjb25zdCBub3cgPSB1c2VNZW1vKCgpID0+IHN0YXJ0T2ZEYXkobmV3IERhdGUoKSksIFtdKTtcblxuICBjb25zdCBmb3JtYXRXZWVrZGF5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyB3ZWVrZGF5OiAnc2hvcnQnIH0pO1xuICAgIHJldHVybiAod2Vla0RheTogbnVtYmVyKSA9PlxuICAgICAgZm9ybWF0KG5ldyBEYXRlKERhdGUuVVRDKDIwMjEsIDcsICgod2Vla0RheSArIGZpcnN0RGF5T2ZXZWVrKSAlIDcpICsgMSkpKTtcbiAgfSwgW2xvY2FsZSwgZmlyc3REYXlPZldlZWtdKTtcblxuICB1c2VFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHNldERhdGVJblZpZXcoXG4gICAgICAgIHZhbHVlID09PSBudWxsID8gZGVmYXVsdERhdGVJblZpZXcgPz8gbW91bnRUaW1lIDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZS5tYXgsXG4gICAgICApLFxuICAgIFt2YWx1ZSwgZGVmYXVsdERhdGVJblZpZXcsIG1vdW50VGltZV0sXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXJhbmdlU2VsZWN0KSB7XG4gICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuICAgIH1cbiAgfSwgW3JhbmdlU2VsZWN0XSk7XG5cbiAgZnVuY3Rpb24gc2V0KG1pbj86IERhdGUsIG1heD86IERhdGUsIGVkaXQ/OiAnbWluJyB8ICdtYXgnKSB7XG4gICAgaWYgKCFyYW5nZVNlbGVjdCkge1xuICAgICAgb25DaGFuZ2UobWluID8/IG51bGwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChtaW4gJiYgbWF4ICYmIG1pbiA+IG1heCkge1xuICAgICAgaWYgKGVkaXQgPT09ICdtaW4nKSB7XG4gICAgICAgIG1heCA9IG1pbjtcbiAgICAgIH0gZWxzZSBpZiAoZWRpdCA9PT0gJ21heCcpIHtcbiAgICAgICAgbWluID0gbWF4O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgW21pbiwgbWF4XSA9IFttYXgsIG1pbl07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFtaW4gPT09ICFtYXgpIHtcbiAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgICBvbkNoYW5nZShtaW4gJiYgbWF4ID8geyBtaW4sIG1heDogZW5kT2ZEYXkobWF4KSB9IDogbnVsbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldERpcnR5KHsgbWluLCBtYXggfSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZm9ybWF0TW9udGggPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IGZvcm1hdCB9ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IG1vbnRoOiAnbG9uZycgfSk7XG4gICAgcmV0dXJuIChtb250aDogbnVtYmVyKSA9PiBmb3JtYXQobmV3IERhdGUoMjAyMSwgbW9udGgpKTtcbiAgfSwgW2xvY2FsZV0pO1xuXG4gIGNvbnN0IGZvcm1hdFllYXIgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IGZvcm1hdCB9ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IHllYXI6ICdudW1lcmljJyB9KTtcbiAgICByZXR1cm4gKHllYXI6IG51bWJlcikgPT4gZm9ybWF0KG5ldyBEYXRlKHllYXIsIDAsIDEpKTtcbiAgfSwgW2xvY2FsZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjc3M9e2Nzc1ZhcmlhYmxlc30+XG4gICAgICA8ZGl2XG4gICAgICAgIGNzcz17e1xuICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICBhbGlnbkl0ZW1zOiAnYmFzZWxpbmUnLFxuICAgICAgICAgIGdhcDogJ3ZhcigtLXNwYWNpbmcpJyxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPERhdGVJbnB1dFxuICAgICAgICAgIHZhbHVlPXttaW4gPz8gbnVsbH1cbiAgICAgICAgICBvbkNoYW5nZT17KGRhdGUpID0+IHNldChkYXRlID8/IHVuZGVmaW5lZCwgbWF4LCAnbWluJyl9XG4gICAgICAgICAgbG9jYWxlPXtsb2NhbGV9XG4gICAgICAgIC8+XG5cbiAgICAgICAge3JhbmdlU2VsZWN0ICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgeycgLSAnfVxuICAgICAgICAgICAgPERhdGVJbnB1dFxuICAgICAgICAgICAgICB2YWx1ZT17bWF4ID8/IG51bGx9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZGF0ZSkgPT4gc2V0KG1pbiwgZGF0ZSA/PyB1bmRlZmluZWQsICdtYXgnKX1cbiAgICAgICAgICAgICAgbG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvPlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIHtjYWxlbmRhcnMubWFwKCh7IG1vbnRoLCB5ZWFyLCB3ZWVrcyB9KSA9PiAoXG4gICAgICAgIDxkaXYga2V5PXtgJHttb250aH0ke3llYXJ9YH0gY3NzPXt7IGRpc3BsYXk6ICdncmlkJyB9fT5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgbWFyZ2luOiAnY2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpIDAnLFxuICAgICAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgICAgIGdyaWRBdXRvRmxvdzogJ2NvbHVtbicsXG4gICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnc3BhY2UtYmV0d2VlbicsXG4gICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8SWNvbkJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgey4uLmdldEJhY2tQcm9wcyh7IGNhbGVuZGFycyB9KX0+XG4gICAgICAgICAgICAgIDxDaGV2cm9uUmlnaHQgY3NzPXt7IHRyYW5zZm9ybTogJ3JvdGF0ZTNkKDAsIDAsIDEsIDE4MGRlZyknIH19IC8+XG4gICAgICAgICAgICA8L0ljb25CdXR0b24+XG5cbiAgICAgICAgICAgIDxkaXYgY3NzPXt7IGRpc3BsYXk6ICdmbGV4JyB9fT5cbiAgICAgICAgICAgICAge2Zvcm1hdE1vbnRoKG1vbnRoKX0ge2Zvcm1hdFllYXIoeWVhcil9XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPEljb25CdXR0b24gdHlwZT1cImJ1dHRvblwiIHsuLi5nZXRGb3J3YXJkUHJvcHMoeyBjYWxlbmRhcnMgfSl9PlxuICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0IC8+XG4gICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAganVzdGlmeVNlbGY6ICdjZW50ZXInLFxuICAgICAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgICAgIGdyaWRUZW1wbGF0ZUNvbHVtbnM6ICdyZXBlYXQoOCwgbWF4LWNvbnRlbnQpJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3Nob3dDYWxlbmRhcldlZWsgPyAoXG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgICAgYm9yZGVyUmlnaHQ6IGAxcHggc29saWQgJHtncmF5fWAsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxUZXh0IGlkPVwiY2FsZW5kYXJXZWVrXCIgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8ZGl2IC8+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7d2Vla0RheXMubWFwKChfdiwgd2Vla0RheSkgPT4gKFxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAga2V5PXt3ZWVrRGF5fVxuICAgICAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICAgICAganVzdGlmeVNlbGY6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtmb3JtYXRXZWVrZGF5KHdlZWtEYXkpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkpfVxuXG4gICAgICAgICAgICB7d2Vla3MubWFwKCh3ZWVrLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrU3RhcnQgPSB3ZWVrWzBdIGFzIERhdGVPYmo7XG4gICAgICAgICAgICAgIGNvbnN0IHdlZWtFbmQgPSB3ZWVrWzZdIGFzIERhdGVPYmo7XG4gICAgICAgICAgICAgIGNvbnN0IHdlZWtEaXNhYmxlZCA9XG4gICAgICAgICAgICAgICAgIXJhbmdlU2VsZWN0IHx8XG4gICAgICAgICAgICAgICAgKG1pbkRhdGUgJiYgd2Vla0VuZC5kYXRlIDwgbWluRGF0ZSkgfHxcbiAgICAgICAgICAgICAgICAobWF4RGF0ZSAmJiB3ZWVrU3RhcnQuZGF0ZSA+IG1heERhdGUpO1xuXG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPEZyYWdtZW50IGtleT17aW5kZXh9PlxuICAgICAgICAgICAgICAgICAge3Nob3dDYWxlbmRhcldlZWsgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiB3ZWVrRGlzYWJsZWQgPyB1bmRlZmluZWQgOiAncG9pbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb250OiAnaW5oZXJpdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSaWdodDogYDFweCBzb2xpZCAke2dyYXl9YCxcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3ZWVrRGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtaW4gPSBtaW5EYXRlICYmIHdlZWtTdGFydC5kYXRlIDwgbWluRGF0ZSA/IG1pbkRhdGUgOiB3ZWVrU3RhcnQuZGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1heCA9IG1heERhdGUgJiYgd2Vla0VuZC5kYXRlID4gbWF4RGF0ZSA/IG1heERhdGUgOiB3ZWVrRW5kLmRhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXQobWluLCBtYXgpO1xuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7Z2V0Q2FsZW5kYXJXZWVrKCh3ZWVrWzBdIGFzIERhdGVPYmopLmRhdGUpfVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICAgIHt3ZWVrLm1hcCgoZGF0ZU9iamVjdCwgZGF5SW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFkYXRlT2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxkaXYga2V5PXtkYXlJbmRleH0gLz47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHByZXZNb250aCwgbmV4dE1vbnRoLCBkYXRlIH0gPSBkYXRlT2JqZWN0O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0b2RheSA9IHN0YXJ0T2ZEYXkoZGF0ZSkuZ2V0VGltZSgpID09PSBub3cuZ2V0VGltZSgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXNhYmxlZCA9IChtaW5EYXRlICYmIGRhdGUgPCBtaW5EYXRlKSB8fCAobWF4RGF0ZSAmJiBkYXRlID4gbWF4RGF0ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPVxuICAgICAgICAgICAgICAgICAgICAgIGRhdGUuZ2V0VGltZSgpID09PSBtaW4/LmdldFRpbWUoKSB8fFxuICAgICAgICAgICAgICAgICAgICAgIChtaW4gJiYgbWF4ICYmIGRhdGVJbnRlcnNlY3QoZGF0ZSwgeyBtaW4sIG1heCB9KSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZVNlbGVjdGVkID1cbiAgICAgICAgICAgICAgICAgICAgICAhc2VsZWN0ZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAhZGlzYWJsZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAoZGF0ZS5nZXRUaW1lKCkgPT09IGhvdmVyZWQ/LmdldFRpbWUoKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKG1pbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAhbWF4ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZUludGVyc2VjdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbiA8PSBob3ZlcmVkID8geyBtaW4sIG1heDogaG92ZXJlZCB9IDogeyBtaW46IGhvdmVyZWQsIG1heDogbWluIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tlZCA9IGJsb2NrZWRSYW5nZXMuc29tZSgocmFuZ2UpID0+IGRhdGVJbnRlcnNlY3QoZGF0ZSwgcmFuZ2UpKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtgJHtpbmRleH0tJHtkYXlJbmRleH1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtnZXREYXlDc3NTdHlsZXMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldk1vbnRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0TW9udGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRvZGF5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja2VkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlU2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5nZXREYXRlUHJvcHMoeyBkYXRlT2JqOiBkYXRlT2JqZWN0IH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGlydHkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWluKSBzZXQobWluLCBkYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHNldChkYXRlLCBtYXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldChkYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlck92ZXI9eygpID0+IHNldEhvdmVyZWQoZGF0ZSl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJPdXQ9eygpID0+IHNldEhvdmVyZWQodW5kZWZpbmVkKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7ZGF0ZS5nZXREYXRlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKSl9XG5cbiAgICAgIDxkaXZcbiAgICAgICAgY3NzPXt7XG4gICAgICAgICAgbWFyZ2luVG9wOiAndmFyKC0tc3BhY2luZyknLFxuICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAge3Jlc29sdmVkUXVpY2tPcHRpb25zfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iXX0= */",
985
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2RhdGVQaWNrZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdlaUIiLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvc2NodW1tYXItdGFibGUvc2NodW1tYXItdGFibGUvc3JjL2NvbXBvbmVudHMvZGF0ZVBpY2tlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlT2JqLCB1c2VEYXl6ZWQgfSBmcm9tICdkYXl6ZWQnO1xuaW1wb3J0IHtcbiAgRnJhZ21lbnQsXG4gIFJlYWN0Tm9kZSxcbiAgY3JlYXRlQ29udGV4dCxcbiAgdXNlQ29udGV4dCxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICcuLi9ob29rcy91c2VUaGVtZSc7XG5pbXBvcnQgeyBkZWZhdWx0cyB9IGZyb20gJy4uL21pc2MvZGVmYXVsdHMnO1xuaW1wb3J0IHsgZ3JheSB9IGZyb20gJy4uL3RoZW1lL2RlZmF1bHRUaGVtZS9kZWZhdWx0Q2xhc3Nlcyc7XG5pbXBvcnQgeyB1c2VDc3NWYXJpYWJsZXMgfSBmcm9tICcuLi90aGVtZS91c2VDc3NWYXJpYWJsZXMnO1xuaW1wb3J0IHsgRGF0ZUlucHV0IH0gZnJvbSAnLi9kYXRlSW5wdXQnO1xuaW1wb3J0IHsgVGV4dCB9IGZyb20gJy4vdGV4dCc7XG5pbXBvcnQgeyBJbnRlcnBvbGF0aW9uLCBUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuZXhwb3J0IHR5cGUgRGF0ZVJhbmdlID0geyBtaW46IERhdGU7IG1heDogRGF0ZSB9O1xuXG5leHBvcnQgdHlwZSBEYXRlUGlja2VyUXVpY2tPcHRpb24gPVxuICB8ICd0b2RheSdcbiAgfCAndGhpc1dlZWsnXG4gIHwgJ3RoaXNNb250aCdcbiAgfCAndGhpc1llYXInXG4gIHwgJ2xhc3RTZXZlbkRheXMnXG4gIHwgJ2xhc3RUaGlydHlEYXlzJ1xuICB8IHsgbGFiZWw6IFJlYWN0Tm9kZTsgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCAoKCkgPT4gRGF0ZSB8IERhdGVSYW5nZSkgfVxuICB8ICgob25DaGFuZ2U6ICh2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpID0+IHZvaWQpID0+IFJlYWN0Tm9kZSk7XG5cbmV4cG9ydCB0eXBlIERhdGVQaWNrZXJQcm9wcyA9IHtcbiAgLyoqIEN1cnJlbnRseSBzZWxlY3RlZCBkYXkgb3IgcmFuZ2Ugb2YgZGF5cy4gKi9cbiAgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsO1xuICAvKiogQ2FsbGJhY2sgZm9yIHdoZW4gdGhlIGRheSAocmFuZ2UpIGNoYW5nZXMuICovXG4gIG9uQ2hhbmdlOiAodmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSA9PiB2b2lkO1xuICAvKiogQ3VycmVudGx5IHZpc2libGUgZGF0ZS4gKi9cbiAgZGF0ZUluVmlldz86IERhdGU7XG4gIC8qKiBDYWxsYmFjayBmb3Igd2hlbiB0aGUgY3VycmVudGx5IHZpc2libGUgZGF0ZSBjaGFuZ2VzLiAqL1xuICBvbkRhdGVJblZpZXdDaGFuZ2U/OiAodmFsdWU6IERhdGUpID0+IHZvaWQ7XG4gIC8qKiBJZiBlbmFibGVkLCByYW5nZXMgY2FuIGJlIHNlbGVjdGVkLiAqL1xuICByYW5nZVNlbGVjdD86IGJvb2xlYW47XG4gIC8qKiBXaGljaCBsb2NhbGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgY2FsZW5kYXIuICovXG4gIGxvY2FsZT86IHN0cmluZztcbiAgLyoqIFdoaWNoIGRheSBvZiB0aGUgd2VlayBzaG91bGQgYmUgaW4gdGhlIGZpcnN0IGNvbHVtbi4gKDA9U3VuZGF5LCAxPU1vbmRheSwgLi4uKVxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICBmaXJzdERheU9mV2Vlaz86IDAgfCAxIHwgMiB8IDMgfCA0IHwgNSB8IDY7XG4gIC8qKiBXaGljaCBtb250aCB0byBzaG93IGluaXRpYWxseSAqL1xuICBkZWZhdWx0RGF0ZUluVmlldz86IERhdGU7XG4gIC8qKiBTaG93IGJ1dHRvbnMgdG8gcXVpY2tseSBzZWxlY3Qgc3VnZ2VzdGVkIGRhdGVzIG9yIGRhdGUgcmFuZ2VzICovXG4gIHF1aWNrT3B0aW9ucz86IERhdGVQaWNrZXJRdWlja09wdGlvbltdO1xuICAvKiogTWluaW11bSBzZWxlY3RhYmxlIGRhdGUgKi9cbiAgLyoqIERhdGUgcmFuZ2VzIHRoYXQgYXJlIHZpc3VhbGx5IG1hcmtlZCBhcyBibG9ja2VkICovXG4gIGJsb2NrZWRSYW5nZXM/OiBEYXRlUmFuZ2VbXTtcbiAgbWluRGF0ZT86IERhdGU7XG4gIC8qKiBNYXhpbXVtIHNlbGVjdGFibGUgZGF0ZSAqL1xuICBtYXhEYXRlPzogRGF0ZTtcbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgY2FsZW5kYXIgd2VlayBpbiB0aGUgZmlyc3QgY29sdW1uICovXG4gIHNob3dDYWxlbmRhcldlZWs/OiBib29sZWFuO1xufTtcblxuY29uc3QgRGF0ZVBpY2tlckNvbnRleHQgPSBjcmVhdGVDb250ZXh0PFBhcnRpYWw8T21pdDxEYXRlUGlja2VyUHJvcHMsICd2YWx1ZScgfCAnb25DaGFuZ2UnPj4+KHt9KTtcblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVQaWNrZXJQcm92aWRlcih7XG4gIGNoaWxkcmVuLFxuICAuLi5wcm9wc1xufTogUGFydGlhbDxPbWl0PERhdGVQaWNrZXJQcm9wcywgJ3ZhbHVlJyB8ICdvbkNoYW5nZSc+PiAmIHsgY2hpbGRyZW4/OiBSZWFjdE5vZGUgfSkge1xuICBjb25zdCB2YWx1ZSA9IHVzZU1lbW8oKCkgPT4gcHJvcHMsIFtKU09OLnN0cmluZ2lmeShwcm9wcyldKTtcblxuICByZXR1cm4gPERhdGVQaWNrZXJDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt2YWx1ZX0+e2NoaWxkcmVufTwvRGF0ZVBpY2tlckNvbnRleHQuUHJvdmlkZXI+O1xufVxuXG5jb25zdCB3ZWVrRGF5cyA9IFswLCAxLCAyLCAzLCA0LCA1LCA2XSBhcyBjb25zdDtcblxuLyoqIFJvdW5kcyBhIGRhdGUgZG93biB0byB0aGUgc3RhcnQgb2YgdGhlIGRheS4gKi9cbmV4cG9ydCBjb25zdCBzdGFydE9mRGF5ID0gKGQ6IERhdGUpID0+IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgZC5nZXRNb250aCgpLCBkLmdldERhdGUoKSk7XG5cbi8qKiBSb3VuZHMgYSBkYXRlIHVwIHRvIHRoZSBlbmQgb2YgdGhlIGRheS4gKi9cbmV4cG9ydCBjb25zdCBlbmRPZkRheSA9IChkOiBEYXRlKSA9PlxuICBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIGQuZ2V0TW9udGgoKSwgZC5nZXREYXRlKCkgKyAxLCAwLCAwLCAwLCAtMSk7XG5cbmV4cG9ydCBjb25zdCBsYXN0RGF5cyA9IChkYXlzOiBudW1iZXIpOiBEYXRlUmFuZ2UgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBtaW4gPSBuZXcgRGF0ZShub3cpO1xuICBtaW4uc2V0RGF0ZShtaW4uZ2V0RGF0ZSgpIC0gZGF5cyArIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShub3cpLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHRvZGF5ID0gKCkgPT4gbGFzdERheXMoMSk7XG5cbmV4cG9ydCBjb25zdCB0aGlzV2VlayA9IChkZWx0YSA9IDAsIGZpcnN0RGF5T2ZXZWVrID0gMSk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG5cbiAgbGV0IGRpZmYgPSBtaW4uZ2V0RGF5KCkgLSBmaXJzdERheU9mV2VlaztcbiAgaWYgKGRpZmYgPCAwKSB7XG4gICAgZGlmZiArPSA3O1xuICB9XG4gIG1pbi5zZXREYXRlKG1pbi5nZXREYXRlKCkgLSBkaWZmICsgZGVsdGEgKiA3KTtcblxuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpICsgNik7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdGhpc01vbnRoID0gKGRlbHRhID0gMCk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG4gIG1pbi5zZXREYXRlKDEpO1xuICBtaW4uc2V0TW9udGgobWluLmdldE1vbnRoKCkgKyBkZWx0YSk7XG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXRNb250aChtYXguZ2V0TW9udGgoKSArIDEpO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpIC0gMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdGhpc1llYXIgPSAoZGVsdGEgPSAwKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcbiAgbWluLnNldERhdGUoMSk7XG4gIG1pbi5zZXRNb250aCgwKTtcbiAgbWluLnNldEZ1bGxZZWFyKG1pbi5nZXRGdWxsWWVhcigpICsgZGVsdGEpO1xuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0RnVsbFllYXIobWF4LmdldEZ1bGxZZWFyKCkgKyAxKTtcbiAgbWF4LnNldERhdGUobWF4LmdldERhdGUoKSAtIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShtYXgpLFxuICB9O1xufTtcblxuY29uc3QgTVNfUEVSX0RBWSA9IDEwMDAgKiA2MCAqIDYwICogMjQ7XG5leHBvcnQgY29uc3QgZ2V0Q2FsZW5kYXJXZWVrID0gKGRhdGU6IERhdGUpOiBudW1iZXIgPT4ge1xuICAvLyBJU08gODYwMTogV2VlayAxIGlzIHRoZSB3ZWVrIHdpdGggdGhlIGZpcnN0IFRodXJzZGF5IG9mIHRoZSB5ZWFyLlxuICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG5cbiAgY29uc3QgZW5kT2ZXZWVrID0gbmV3IERhdGUoXG4gICAgZGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgIGRhdGUuZ2V0TW9udGgoKSxcbiAgICBkYXRlLmdldERhdGUoKSArICg3IC0gKGRhdGUuZ2V0RGF5KCkgfHwgNykpLFxuICApO1xuXG4gIGNvbnN0IHllYXIgPSBlbmRPZldlZWsuZ2V0RnVsbFllYXIoKTtcbiAgY29uc3QgZmlyc3REYXlPZlllYXIgPSBuZXcgRGF0ZSh5ZWFyLCAwLCAxKTtcbiAgY29uc3QgZGF5T2ZZZWFyID1cbiAgICBNYXRoLmZsb29yKFxuICAgICAgKGVuZE9mV2Vlay5nZXRUaW1lKCkgLVxuICAgICAgICBmaXJzdERheU9mWWVhci5nZXRUaW1lKCkgK1xuICAgICAgICAoZW5kT2ZXZWVrLmdldFRpbWV6b25lT2Zmc2V0KCkgLSBmaXJzdERheU9mWWVhci5nZXRUaW1lem9uZU9mZnNldCgpKSkgL1xuICAgICAgICBNU19QRVJfREFZLFxuICAgICkgKyAxO1xuICBjb25zdCB3ZWVrT2ZZZWFyID0gTWF0aC5mbG9vcigoMyArIGRheU9mWWVhcikgLyA3KTtcblxuICBpZiAod2Vla09mWWVhciA9PT0gMCkge1xuICAgIHJldHVybiAoXG4gICAgICBnZXRDYWxlbmRhcldlZWsoXG4gICAgICAgIG5ldyBEYXRlKGVuZE9mV2Vlay5nZXRGdWxsWWVhcigpLCBlbmRPZldlZWsuZ2V0TW9udGgoKSwgZW5kT2ZXZWVrLmdldERhdGUoKSAtIDcpLFxuICAgICAgKSArIDFcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIHdlZWtPZlllYXI7XG59O1xuXG5leHBvcnQgY29uc3QgY29tbW9uUXVpY2tPcHRpb25zID0ge1xuICB0b2RheTogeyBsYWJlbDogPFRleHQgaWQ9XCJ0b2RheVwiIC8+LCB2YWx1ZTogdG9kYXkgfSxcbiAgdGhpc1dlZWs6IHsgbGFiZWw6IDxUZXh0IGlkPVwidGhpc1dlZWtcIiAvPiwgdmFsdWU6IChwcm9wcykgPT4gdGhpc1dlZWsoMCwgcHJvcHMuZmlyc3REYXlPZldlZWspIH0sXG4gIHRoaXNNb250aDogeyBsYWJlbDogPFRleHQgaWQ9XCJ0aGlzTW9udGhcIiAvPiwgdmFsdWU6ICgpID0+IHRoaXNNb250aCgpIH0sXG4gIHRoaXNZZWFyOiB7IGxhYmVsOiA8VGV4dCBpZD1cInRoaXNZZWFyXCIgLz4sIHZhbHVlOiAoKSA9PiB0aGlzWWVhcigpIH0sXG4gIGxhc3RTZXZlbkRheXM6IHsgbGFiZWw6IDxUZXh0IGlkPVwibGFzdFNldmVuRGF5c1wiIC8+LCB2YWx1ZTogKCkgPT4gbGFzdERheXMoNykgfSxcbiAgbGFzdFRoaXJ0eURheXM6IHsgbGFiZWw6IDxUZXh0IGlkPVwibGFzdFRoaXJ0eURheXNcIiAvPiwgdmFsdWU6ICgpID0+IGxhc3REYXlzKDMwKSB9LFxufSBzYXRpc2ZpZXMgUmVjb3JkPFxuICBEYXRlUGlja2VyUXVpY2tPcHRpb24gJiBzdHJpbmcsXG4gIHsgbGFiZWw6IFJlYWN0Tm9kZTsgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCAoKHByb3BzOiBEYXRlUGlja2VyUHJvcHMpID0+IERhdGUgfCBEYXRlUmFuZ2UpIH1cbj47XG5cbi8qKiBSZXR1cm5zIHdoZXRoZXIgdHdvIGRhdGVzIGFuZC9vciBkYXRlIHJhbmdlcyBpbnRlcnNlY3QuIEludGVyc2VjdGlvbiBpcyBjb25zaWRlcmVkIHBlciBkYXkuICovXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUludGVyc2VjdChcbiAgYTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwgfCB1bmRlZmluZWQsXG4gIGI6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsIHwgdW5kZWZpbmVkLFxuKSB7XG4gIGlmIChhIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIGEgPSB7IG1pbjogYSwgbWF4OiBhIH07XG4gIH1cbiAgaWYgKGIgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgYiA9IHsgbWluOiBiLCBtYXg6IGIgfTtcbiAgfVxuXG4gIGlmICghYT8ubWluIHx8ICFhLm1heCB8fCAhYj8ubWluIHx8ICFiLm1heCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiAhKGVuZE9mRGF5KGEubWF4KSA8IHN0YXJ0T2ZEYXkoYi5taW4pIHx8IHN0YXJ0T2ZEYXkoYS5taW4pID4gZW5kT2ZEYXkoYi5tYXgpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGVDbGFtcChkYXRlOiBEYXRlLCBtaW4/OiBEYXRlLCBtYXg/OiBEYXRlKSB7XG4gIGlmIChtaW4gJiYgZGF0ZSA8IG1pbikge1xuICAgIHJldHVybiBtaW47XG4gIH1cblxuICBpZiAobWF4ICYmIGRhdGUgPiBtYXgpIHtcbiAgICByZXR1cm4gbWF4O1xuICB9XG5cbiAgcmV0dXJuIGRhdGU7XG59XG5cbmZ1bmN0aW9uIGdldFZhbHVlRm9yQ29tcGFyaXNvbih2YWx1ZT86IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSB7XG4gIGlmICghdmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHJldHVybiB2YWx1ZS5nZXRUaW1lKCk7XG4gIH1cbiAgcmV0dXJuIGAke3ZhbHVlLm1pbj8uZ2V0VGltZSgpfS0ke3ZhbHVlLm1heD8uZ2V0VGltZSgpfWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRlUGlja2VyKHByb3BzOiBEYXRlUGlja2VyUHJvcHMpIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoRGF0ZVBpY2tlckNvbnRleHQpO1xuXG4gIGNvbnN0IHtcbiAgICB2YWx1ZSxcbiAgICByYW5nZVNlbGVjdCxcbiAgICBsb2NhbGUsXG4gICAgZmlyc3REYXlPZldlZWsgPSAxLFxuICAgIGRlZmF1bHREYXRlSW5WaWV3LFxuICAgIHF1aWNrT3B0aW9ucyA9IFsndG9kYXknLCAndGhpc1dlZWsnXSxcbiAgICBtaW5EYXRlLFxuICAgIG1heERhdGUsXG4gICAgc2hvd0NhbGVuZGFyV2VlayxcbiAgICBibG9ja2VkUmFuZ2VzID0gW10sXG4gIH0gPSBkZWZhdWx0czxEYXRlUGlja2VyUHJvcHM+KHByb3BzLCBjb250ZXh0KTtcblxuICBmdW5jdGlvbiBvbkNoYW5nZSh2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICB2YWx1ZSA9IGRhdGVDbGFtcCh2YWx1ZSwgbWluRGF0ZSwgbWF4RGF0ZSk7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSkge1xuICAgICAgdmFsdWUgPSB7XG4gICAgICAgIG1pbjogZGF0ZUNsYW1wKHZhbHVlLm1pbiwgbWluRGF0ZSwgbWF4RGF0ZSksXG4gICAgICAgIG1heDogZGF0ZUNsYW1wKHZhbHVlLm1heCwgbWluRGF0ZSwgbWF4RGF0ZSksXG4gICAgICB9O1xuICAgIH1cblxuICAgIHByb3BzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgfVxuXG4gIGNvbnN0IEJ1dHRvbiA9IHVzZVRoZW1lKCh0KSA9PiB0LmNvbXBvbmVudHMuQnV0dG9uKTtcbiAgY29uc3QgSWNvbkJ1dHRvbiA9IHVzZVRoZW1lKCh0KSA9PiB0LmNvbXBvbmVudHMuSWNvbkJ1dHRvbik7XG4gIGNvbnN0IENoZXZyb25SaWdodCA9IHVzZVRoZW1lKCh0KSA9PiB0Lmljb25zLkNoZXZyb25SaWdodCk7XG4gIGNvbnN0IGNzc1ZhcmlhYmxlcyA9IHVzZUNzc1ZhcmlhYmxlcygpO1xuICBmdW5jdGlvbiBnZXREYXlDc3NTdHlsZXMoe1xuICAgIGRpc2FibGVkLFxuICAgIHByZXZNb250aCxcbiAgICBuZXh0TW9udGgsXG4gICAgdG9kYXksXG4gICAgYmxvY2tlZCxcbiAgICBzZWxlY3RlZCxcbiAgICBwcmVTZWxlY3RlZCxcbiAgfToge1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBwcmV2TW9udGg/OiBib29sZWFuO1xuICAgIG5leHRNb250aD86IGJvb2xlYW47XG4gICAgdG9kYXk/OiBib29sZWFuO1xuICAgIGJsb2NrZWQ/OiBib29sZWFuO1xuICAgIHNlbGVjdGVkPzogYm9vbGVhbjtcbiAgICBwcmVTZWxlY3RlZD86IGJvb2xlYW47XG4gIH0pOiBJbnRlcnBvbGF0aW9uPFRoZW1lPiB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgIGJvcmRlcjogJ25vbmUnLFxuICAgICAgICBiYWNrZ3JvdW5kOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICBjdXJzb3I6IGRpc2FibGVkID8gdW5kZWZpbmVkIDogJ3BvaW50ZXInLFxuICAgICAgICBmb250OiAnaW5oZXJpdCcsXG4gICAgICB9LFxuICAgICAgKHByZXZNb250aCB8fCBuZXh0TW9udGgpICYmIHtcbiAgICAgICAgY29sb3I6IGdyYXksXG4gICAgICB9LFxuICAgICAgdG9kYXkgJiYge1xuICAgICAgICBvdXRsaW5lOiAnMXB4IHNvbGlkIHZhcigtLXNlY29uZGFyeU1haW4pJyxcbiAgICAgIH0sXG4gICAgICBibG9ja2VkICYmIHtcbiAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLWJsb2NrZWRNYWluKScsXG4gICAgICAgIGNvbG9yOiAndmFyKC0tYmxvY2tlZENvbnRyYXN0VGV4dCknLFxuICAgICAgfSxcbiAgICAgIHNlbGVjdGVkICYmIHtcbiAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLXByaW1hcnlNYWluKScsXG4gICAgICAgIGNvbG9yOiAndmFyKC0tcHJpbWFyeUNvbnRyYXN0VGV4dCknLFxuICAgICAgfSxcbiAgICAgIGJsb2NrZWQgJiZcbiAgICAgICAgc2VsZWN0ZWQgJiYge1xuICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICAgICc6OmJlZm9yZSc6IHtcbiAgICAgICAgICAgIGNvbnRlbnQ6ICdcIlwiJyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgcmlnaHQ6IDAsXG4gICAgICAgICAgICBib3R0b206IDAsXG4gICAgICAgICAgICBsZWZ0OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLWJsb2NrZWRNYWluKScsXG4gICAgICAgICAgICBjbGlwUGF0aDogJ3BvbHlnb24oMCAwLCAwIDUwJSwgNTAlIDApJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgcHJlU2VsZWN0ZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tcHJpbWFyeUxpZ2h0KScsXG4gICAgICAgIGNvbG9yOiAndmFyKC0tcHJpbWFyeUNvbnRyYXN0VGV4dCknLFxuICAgICAgfSxcbiAgICBdO1xuICB9XG5cbiAgY29uc3QgbW91bnRUaW1lID0gdXNlTWVtbygoKSA9PiBuZXcgRGF0ZSgpLCBbXSk7XG4gIGNvbnN0IFtkaXJ0eSwgc2V0RGlydHldID0gdXNlU3RhdGU8UGFydGlhbDxEYXRlUmFuZ2U+PigpO1xuICBjb25zdCBbaG92ZXJlZCwgc2V0SG92ZXJlZF0gPSB1c2VTdGF0ZTxEYXRlUmFuZ2U+KCk7XG4gIGNvbnN0IFtkYXRlSW5WaWV3TG9jYWwsIHNldERhdGVJblZpZXdMb2NhbF0gPSB1c2VTdGF0ZTxEYXRlPihkZWZhdWx0RGF0ZUluVmlldyA/PyBtb3VudFRpbWUpO1xuICBjb25zdCBkYXRlSW5WaWV3ID0gcHJvcHMuZGF0ZUluVmlldyA/PyBkYXRlSW5WaWV3TG9jYWw7XG5cbiAgZnVuY3Rpb24gc2V0RGF0ZUluVmlldyhkYXRlOiBEYXRlKSB7XG4gICAgc2V0RGF0ZUluVmlld0xvY2FsKGRhdGUpO1xuICAgIHByb3BzLm9uRGF0ZUluVmlld0NoYW5nZT8uKGRhdGUpO1xuICB9XG5cbiAgY29uc3QgbWluID0gZGlydHkgPyBkaXJ0eS5taW4gOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlPy5taW47XG4gIGNvbnN0IG1heCA9IGRpcnR5ID8gZGlydHkubWF4IDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZT8ubWF4O1xuXG4gIGNvbnN0IHJlc29sdmVkUXVpY2tPcHRpb25zID0gWy4uLnF1aWNrT3B0aW9ucywgeyBsYWJlbDogPFRleHQgaWQ9XCJyZXNldFwiIC8+LCB2YWx1ZTogbnVsbCB9XS5tYXAoXG4gICAgKG9wdGlvbiwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChvcHRpb24gaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICByZXR1cm4gb3B0aW9uKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBsYWJlbCwgdmFsdWUgfSA9IHR5cGVvZiBvcHRpb24gPT09ICdzdHJpbmcnID8gY29tbW9uUXVpY2tPcHRpb25zW29wdGlvbl0gOiBvcHRpb247XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuXG4gICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICAgICAgICBvbkNoYW5nZSh2YWx1ZShwcm9wcykpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7bGFiZWx9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKTtcbiAgICB9LFxuICApO1xuXG4gIGNvbnN0IHsgY2FsZW5kYXJzLCBnZXRCYWNrUHJvcHMsIGdldEZvcndhcmRQcm9wcywgZ2V0RGF0ZVByb3BzIH0gPSB1c2VEYXl6ZWQoe1xuICAgIG9uRGF0ZVNlbGVjdGVkOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgZmlyc3REYXlPZldlZWssXG4gICAgc2hvd091dHNpZGVEYXlzOiB0cnVlLFxuICAgIGRhdGU6IGRhdGVJblZpZXcsXG4gICAgb25PZmZzZXRDaGFuZ2VkOiAob2Zmc2V0KSA9PlxuICAgICAgc2V0RGF0ZUluVmlldyhuZXcgRGF0ZShkYXRlSW5WaWV3LmdldEZ1bGxZZWFyKCksIGRhdGVJblZpZXcuZ2V0TW9udGgoKSArIG9mZnNldCkpLFxuICAgIG9mZnNldDogMCxcbiAgICBtaW5EYXRlLFxuICAgIG1heERhdGUsXG4gIH0pO1xuICBjb25zdCBub3cgPSB1c2VNZW1vKCgpID0+IHN0YXJ0T2ZEYXkobmV3IERhdGUoKSksIFtdKTtcblxuICBjb25zdCBmb3JtYXRXZWVrZGF5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyB3ZWVrZGF5OiAnc2hvcnQnIH0pO1xuICAgIHJldHVybiAod2Vla0RheTogbnVtYmVyKSA9PlxuICAgICAgZm9ybWF0KG5ldyBEYXRlKERhdGUuVVRDKDIwMjEsIDcsICgod2Vla0RheSArIGZpcnN0RGF5T2ZXZWVrKSAlIDcpICsgMSkpKTtcbiAgfSwgW2xvY2FsZSwgZmlyc3REYXlPZldlZWtdKTtcblxuICB1c2VFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHNldERhdGVJblZpZXcoXG4gICAgICAgIHZhbHVlID09PSBudWxsID8gZGVmYXVsdERhdGVJblZpZXcgPz8gbW91bnRUaW1lIDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZS5tYXgsXG4gICAgICApLFxuICAgIFtnZXRWYWx1ZUZvckNvbXBhcmlzb24odmFsdWUpLCBnZXRWYWx1ZUZvckNvbXBhcmlzb24oZGVmYXVsdERhdGVJblZpZXcpLCBtb3VudFRpbWVdLFxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFyYW5nZVNlbGVjdCkge1xuICAgICAgc2V0RGlydHkodW5kZWZpbmVkKTtcbiAgICB9XG4gIH0sIFtyYW5nZVNlbGVjdF0pO1xuXG4gIGZ1bmN0aW9uIHNldChtaW4/OiBEYXRlLCBtYXg/OiBEYXRlLCBlZGl0PzogJ21pbicgfCAnbWF4Jykge1xuICAgIGlmICghcmFuZ2VTZWxlY3QpIHtcbiAgICAgIG9uQ2hhbmdlKG1pbiA/PyBudWxsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAobWluICYmIG1heCAmJiBtaW4gPiBtYXgpIHtcbiAgICAgIGlmIChlZGl0ID09PSAnbWluJykge1xuICAgICAgICBtYXggPSBtaW47XG4gICAgICB9IGVsc2UgaWYgKGVkaXQgPT09ICdtYXgnKSB7XG4gICAgICAgIG1pbiA9IG1heDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIFttaW4sIG1heF0gPSBbbWF4LCBtaW5dO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghbWluID09PSAhbWF4KSB7XG4gICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuICAgICAgb25DaGFuZ2UobWluICYmIG1heCA/IHsgbWluLCBtYXg6IGVuZE9mRGF5KG1heCkgfSA6IG51bGwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXREaXJ0eSh7IG1pbiwgbWF4IH0pO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGZvcm1hdE1vbnRoID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyBtb250aDogJ2xvbmcnIH0pO1xuICAgIHJldHVybiAobW9udGg6IG51bWJlcikgPT4gZm9ybWF0KG5ldyBEYXRlKDIwMjEsIG1vbnRoKSk7XG4gIH0sIFtsb2NhbGVdKTtcblxuICBjb25zdCBmb3JtYXRZZWFyID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyB5ZWFyOiAnbnVtZXJpYycgfSk7XG4gICAgcmV0dXJuICh5ZWFyOiBudW1iZXIpID0+IGZvcm1hdChuZXcgRGF0ZSh5ZWFyLCAwLCAxKSk7XG4gIH0sIFtsb2NhbGVdKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY3NzPXtjc3NWYXJpYWJsZXN9PlxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e3tcbiAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgZ3JpZEF1dG9GbG93OiAnY29sdW1uJyxcbiAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgYWxpZ25JdGVtczogJ2Jhc2VsaW5lJyxcbiAgICAgICAgICBnYXA6ICd2YXIoLS1zcGFjaW5nKScsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxEYXRlSW5wdXRcbiAgICAgICAgICB2YWx1ZT17bWluID8/IG51bGx9XG4gICAgICAgICAgb25DaGFuZ2U9eyhkYXRlKSA9PiBzZXQoZGF0ZSA/PyB1bmRlZmluZWQsIG1heCwgJ21pbicpfVxuICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAvPlxuXG4gICAgICAgIHtyYW5nZVNlbGVjdCAmJiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIHsnIC0gJ31cbiAgICAgICAgICAgIDxEYXRlSW5wdXRcbiAgICAgICAgICAgICAgdmFsdWU9e21heCA/PyBudWxsfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGRhdGUpID0+IHNldChtaW4sIGRhdGUgPz8gdW5kZWZpbmVkLCAnbWF4Jyl9XG4gICAgICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7Y2FsZW5kYXJzLm1hcCgoeyBtb250aCwgeWVhciwgd2Vla3MgfSkgPT4gKFxuICAgICAgICA8ZGl2IGtleT17YCR7bW9udGh9JHt5ZWFyfWB9IGNzcz17eyBkaXNwbGF5OiAnZ3JpZCcgfX0+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgIG1hcmdpbjogJ2NhbGModmFyKC0tc3BhY2luZykgKiA0KSAwJyxcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nLFxuICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPEljb25CdXR0b24gdHlwZT1cImJ1dHRvblwiIHsuLi5nZXRCYWNrUHJvcHMoeyBjYWxlbmRhcnMgfSl9PlxuICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0IGNzcz17eyB0cmFuc2Zvcm06ICdyb3RhdGUzZCgwLCAwLCAxLCAxODBkZWcpJyB9fSAvPlxuICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuXG4gICAgICAgICAgICA8ZGl2IGNzcz17eyBkaXNwbGF5OiAnZmxleCcgfX0+XG4gICAgICAgICAgICAgIHtmb3JtYXRNb250aChtb250aCl9IHtmb3JtYXRZZWFyKHllYXIpfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxJY29uQnV0dG9uIHR5cGU9XCJidXR0b25cIiB7Li4uZ2V0Rm9yd2FyZFByb3BzKHsgY2FsZW5kYXJzIH0pfT5cbiAgICAgICAgICAgICAgPENoZXZyb25SaWdodCAvPlxuICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgICAgICBncmlkVGVtcGxhdGVDb2x1bW5zOiAncmVwZWF0KDgsIG1heC1jb250ZW50KScsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtzaG93Q2FsZW5kYXJXZWVrID8gKFxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgICAgICBqdXN0aWZ5U2VsZjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgICAgICAgICAgIGJvcmRlclJpZ2h0OiBgMXB4IHNvbGlkICR7Z3JheX1gLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8VGV4dCBpZD1cImNhbGVuZGFyV2Vla1wiIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPGRpdiAvPlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAge3dlZWtEYXlzLm1hcCgoX3YsIHdlZWtEYXkpID0+IChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGtleT17d2Vla0RheX1cbiAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7Zm9ybWF0V2Vla2RheSh3ZWVrRGF5KX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApKX1cblxuICAgICAgICAgICAge3dlZWtzLm1hcCgod2VlaywgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgd2Vla1N0YXJ0ID0gd2Vla1swXSBhcyBEYXRlT2JqO1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrRW5kID0gd2Vla1s2XSBhcyBEYXRlT2JqO1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrRGlzYWJsZWQgPVxuICAgICAgICAgICAgICAgICFyYW5nZVNlbGVjdCB8fFxuICAgICAgICAgICAgICAgIChtaW5EYXRlICYmIHdlZWtFbmQuZGF0ZSA8IG1pbkRhdGUpIHx8XG4gICAgICAgICAgICAgICAgKG1heERhdGUgJiYgd2Vla1N0YXJ0LmRhdGUgPiBtYXhEYXRlKTtcblxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxGcmFnbWVudCBrZXk9e2luZGV4fT5cbiAgICAgICAgICAgICAgICAgIHtzaG93Q2FsZW5kYXJXZWVrID8gKFxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcjogd2Vla0Rpc2FibGVkID8gdW5kZWZpbmVkIDogJ3BvaW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9udDogJ2luaGVyaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmlnaHQ6IGAxcHggc29saWQgJHtncmF5fWAsXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAod2Vla0Rpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWluID0gbWluRGF0ZSAmJiB3ZWVrU3RhcnQuZGF0ZSA8IG1pbkRhdGUgPyBtaW5EYXRlIDogd2Vla1N0YXJ0LmRhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXggPSBtYXhEYXRlICYmIHdlZWtFbmQuZGF0ZSA+IG1heERhdGUgPyBtYXhEYXRlIDogd2Vla0VuZC5kYXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0KG1pbiwgbWF4KTtcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlck92ZXI9eygpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAhd2Vla0Rpc2FibGVkICYmIHNldEhvdmVyZWQoeyBtaW46IHdlZWtTdGFydC5kYXRlLCBtYXg6IHdlZWtFbmQuZGF0ZSB9KVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJPdXQ9eygpID0+ICF3ZWVrRGlzYWJsZWQgJiYgc2V0SG92ZXJlZCh1bmRlZmluZWQpfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge2dldENhbGVuZGFyV2Vlayh3ZWVrRW5kLmRhdGUpfVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICAgIHt3ZWVrLm1hcCgoZGF0ZU9iamVjdCwgZGF5SW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFkYXRlT2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxkaXYga2V5PXtkYXlJbmRleH0gLz47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHByZXZNb250aCwgbmV4dE1vbnRoLCBkYXRlIH0gPSBkYXRlT2JqZWN0O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0b2RheSA9IHN0YXJ0T2ZEYXkoZGF0ZSkuZ2V0VGltZSgpID09PSBub3cuZ2V0VGltZSgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXNhYmxlZCA9IChtaW5EYXRlICYmIGRhdGUgPCBtaW5EYXRlKSB8fCAobWF4RGF0ZSAmJiBkYXRlID4gbWF4RGF0ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPVxuICAgICAgICAgICAgICAgICAgICAgIGRhdGUuZ2V0VGltZSgpID09PSBtaW4/LmdldFRpbWUoKSB8fFxuICAgICAgICAgICAgICAgICAgICAgIChtaW4gJiYgbWF4ICYmIGRhdGVJbnRlcnNlY3QoZGF0ZSwgeyBtaW4sIG1heCB9KSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZVNlbGVjdGVkID1cbiAgICAgICAgICAgICAgICAgICAgICAhc2VsZWN0ZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAhZGlzYWJsZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAoZGF0ZUludGVyc2VjdChkYXRlLCBob3ZlcmVkKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKG1pbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAhbWF4ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZUludGVyc2VjdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbiA8PSBob3ZlcmVkLm1pblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IG1pbiwgbWF4OiBob3ZlcmVkLm1pbiB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHsgbWluOiBob3ZlcmVkLm1heCwgbWF4OiBtaW4gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9ja2VkID0gYmxvY2tlZFJhbmdlcy5zb21lKChyYW5nZSkgPT4gZGF0ZUludGVyc2VjdChkYXRlLCByYW5nZSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2Ake2luZGV4fS0ke2RheUluZGV4fWB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2dldERheUNzc1N0eWxlcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2TW9udGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRNb250aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kYXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVTZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgey4uLmdldERhdGVQcm9wcyh7IGRhdGVPYmo6IGRhdGVPYmplY3QgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaXJ0eSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtaW4pIHNldChtaW4sIGRhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugc2V0KGRhdGUsIG1heCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0KGRhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyT3Zlcj17KCkgPT4gc2V0SG92ZXJlZCh7IG1pbjogZGF0ZSwgbWF4OiBkYXRlIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyT3V0PXsoKSA9PiBzZXRIb3ZlcmVkKHVuZGVmaW5lZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge2RhdGUuZ2V0RGF0ZSgpfVxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgPC9GcmFnbWVudD5cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICkpfVxuXG4gICAgICA8ZGl2XG4gICAgICAgIGNzcz17e1xuICAgICAgICAgIG1hcmdpblRvcDogJ3ZhcigtLXNwYWNpbmcpJyxcbiAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgZ3JpZEF1dG9GbG93OiAnY29sdW1uJyxcbiAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIHtyZXNvbHZlZFF1aWNrT3B0aW9uc31cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuIl19 */",
976
986
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__$d
977
987
  };
978
988
  var _ref6 = process.env.NODE_ENV === "production" ? {
@@ -981,7 +991,7 @@ var _ref6 = process.env.NODE_ENV === "production" ? {
981
991
  } : {
982
992
  name: "ru3xfb-DatePicker",
983
993
  styles: "justify-self:center;display:grid;grid-template-columns:repeat(8, max-content);label:DatePicker;",
984
- map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2RhdGVQaWNrZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWlkWSIsImZpbGUiOiIvaG9tZS9ydW5uZXIvd29yay9zY2h1bW1hci10YWJsZS9zY2h1bW1hci10YWJsZS9zcmMvY29tcG9uZW50cy9kYXRlUGlja2VyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVPYmosIHVzZURheXplZCB9IGZyb20gJ2RheXplZCc7XG5pbXBvcnQge1xuICBGcmFnbWVudCxcbiAgUmVhY3ROb2RlLFxuICBjcmVhdGVDb250ZXh0LFxuICB1c2VDb250ZXh0LFxuICB1c2VFZmZlY3QsXG4gIHVzZU1lbW8sXG4gIHVzZVN0YXRlLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJy4uL2hvb2tzL3VzZVRoZW1lJztcbmltcG9ydCB7IGRlZmF1bHRzIH0gZnJvbSAnLi4vbWlzYy9kZWZhdWx0cyc7XG5pbXBvcnQgeyBncmF5IH0gZnJvbSAnLi4vdGhlbWUvZGVmYXVsdFRoZW1lL2RlZmF1bHRDbGFzc2VzJztcbmltcG9ydCB7IHVzZUNzc1ZhcmlhYmxlcyB9IGZyb20gJy4uL3RoZW1lL3VzZUNzc1ZhcmlhYmxlcyc7XG5pbXBvcnQgeyBEYXRlSW5wdXQgfSBmcm9tICcuL2RhdGVJbnB1dCc7XG5pbXBvcnQgeyBUZXh0IH0gZnJvbSAnLi90ZXh0JztcbmltcG9ydCB7IEludGVycG9sYXRpb24sIFRoZW1lIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuXG5leHBvcnQgdHlwZSBEYXRlUmFuZ2UgPSB7IG1pbjogRGF0ZTsgbWF4OiBEYXRlIH07XG5cbmV4cG9ydCB0eXBlIERhdGVQaWNrZXJRdWlja09wdGlvbiA9XG4gIHwgJ3RvZGF5J1xuICB8ICd0aGlzV2VlaydcbiAgfCAndGhpc01vbnRoJ1xuICB8ICd0aGlzWWVhcidcbiAgfCAnbGFzdFNldmVuRGF5cydcbiAgfCAnbGFzdFRoaXJ0eURheXMnXG4gIHwgeyBsYWJlbDogUmVhY3ROb2RlOyB2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8ICgoKSA9PiBEYXRlIHwgRGF0ZVJhbmdlKSB9XG4gIHwgKChvbkNoYW5nZTogKHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCkgPT4gdm9pZCkgPT4gUmVhY3ROb2RlKTtcblxuZXhwb3J0IHR5cGUgRGF0ZVBpY2tlclByb3BzID0ge1xuICAvKiogQ3VycmVudGx5IHNlbGVjdGVkIGRheSBvciByYW5nZSBvZiBkYXlzLiAqL1xuICB2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGw7XG4gIC8qKiBDYWxsYmFjayBmb3Igd2hlbiB0aGUgZGF5IChyYW5nZSkgY2hhbmdlcy4gKi9cbiAgb25DaGFuZ2U6ICh2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpID0+IHZvaWQ7XG4gIC8qKiBDdXJyZW50bHkgdmlzaWJsZSBkYXRlLiAqL1xuICBkYXRlSW5WaWV3PzogRGF0ZTtcbiAgLyoqIENhbGxiYWNrIGZvciB3aGVuIHRoZSBjdXJyZW50bHkgdmlzaWJsZSBkYXRlIGNoYW5nZXMuICovXG4gIG9uRGF0ZUluVmlld0NoYW5nZT86ICh2YWx1ZTogRGF0ZSkgPT4gdm9pZDtcbiAgLyoqIElmIGVuYWJsZWQsIHJhbmdlcyBjYW4gYmUgc2VsZWN0ZWQuICovXG4gIHJhbmdlU2VsZWN0PzogYm9vbGVhbjtcbiAgLyoqIFdoaWNoIGxvY2FsZSB0byB1c2UgdG8gcmVuZGVyIHRoZSBjYWxlbmRhci4gKi9cbiAgbG9jYWxlPzogc3RyaW5nO1xuICAvKiogV2hpY2ggZGF5IG9mIHRoZSB3ZWVrIHNob3VsZCBiZSBpbiB0aGUgZmlyc3QgY29sdW1uLiAoMD1TdW5kYXksIDE9TW9uZGF5LCAuLi4pXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIGZpcnN0RGF5T2ZXZWVrPzogMCB8IDEgfCAyIHwgMyB8IDQgfCA1IHwgNjtcbiAgLyoqIFdoaWNoIG1vbnRoIHRvIHNob3cgaW5pdGlhbGx5ICovXG4gIGRlZmF1bHREYXRlSW5WaWV3PzogRGF0ZTtcbiAgLyoqIFNob3cgYnV0dG9ucyB0byBxdWlja2x5IHNlbGVjdCBzdWdnZXN0ZWQgZGF0ZXMgb3IgZGF0ZSByYW5nZXMgKi9cbiAgcXVpY2tPcHRpb25zPzogRGF0ZVBpY2tlclF1aWNrT3B0aW9uW107XG4gIC8qKiBNaW5pbXVtIHNlbGVjdGFibGUgZGF0ZSAqL1xuICAvKiogRGF0ZSByYW5nZXMgdGhhdCBhcmUgdmlzdWFsbHkgbWFya2VkIGFzIGJsb2NrZWQgKi9cbiAgYmxvY2tlZFJhbmdlcz86IERhdGVSYW5nZVtdO1xuICBtaW5EYXRlPzogRGF0ZTtcbiAgLyoqIE1heGltdW0gc2VsZWN0YWJsZSBkYXRlICovXG4gIG1heERhdGU/OiBEYXRlO1xuICAvKiogV2hldGhlciB0byBzaG93IHRoZSBjYWxlbmRhciB3ZWVrIGluIHRoZSBmaXJzdCBjb2x1bW4gKi9cbiAgc2hvd0NhbGVuZGFyV2Vlaz86IGJvb2xlYW47XG59O1xuXG5jb25zdCBEYXRlUGlja2VyQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8UGFydGlhbDxPbWl0PERhdGVQaWNrZXJQcm9wcywgJ3ZhbHVlJyB8ICdvbkNoYW5nZSc+Pj4oe30pO1xuXG5leHBvcnQgZnVuY3Rpb24gRGF0ZVBpY2tlclByb3ZpZGVyKHtcbiAgY2hpbGRyZW4sXG4gIC4uLnByb3BzXG59OiBQYXJ0aWFsPE9taXQ8RGF0ZVBpY2tlclByb3BzLCAndmFsdWUnIHwgJ29uQ2hhbmdlJz4+ICYgeyBjaGlsZHJlbj86IFJlYWN0Tm9kZSB9KSB7XG4gIGNvbnN0IHZhbHVlID0gdXNlTWVtbygoKSA9PiBwcm9wcywgW0pTT04uc3RyaW5naWZ5KHByb3BzKV0pO1xuXG4gIHJldHVybiA8RGF0ZVBpY2tlckNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3ZhbHVlfT57Y2hpbGRyZW59PC9EYXRlUGlja2VyQ29udGV4dC5Qcm92aWRlcj47XG59XG5cbmNvbnN0IHdlZWtEYXlzID0gWzAsIDEsIDIsIDMsIDQsIDUsIDZdIGFzIGNvbnN0O1xuXG4vKiogUm91bmRzIGEgZGF0ZSBkb3duIHRvIHRoZSBzdGFydCBvZiB0aGUgZGF5LiAqL1xuZXhwb3J0IGNvbnN0IHN0YXJ0T2ZEYXkgPSAoZDogRGF0ZSkgPT4gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCBkLmdldE1vbnRoKCksIGQuZ2V0RGF0ZSgpKTtcblxuLyoqIFJvdW5kcyBhIGRhdGUgdXAgdG8gdGhlIGVuZCBvZiB0aGUgZGF5LiAqL1xuZXhwb3J0IGNvbnN0IGVuZE9mRGF5ID0gKGQ6IERhdGUpID0+XG4gIG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgZC5nZXRNb250aCgpLCBkLmdldERhdGUoKSArIDEsIDAsIDAsIDAsIC0xKTtcblxuZXhwb3J0IGNvbnN0IGxhc3REYXlzID0gKGRheXM6IG51bWJlcik6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG4gIG1pbi5zZXREYXRlKG1pbi5nZXREYXRlKCkgLSBkYXlzICsgMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG5vdyksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdG9kYXkgPSAoKSA9PiBsYXN0RGF5cygxKTtcblxuZXhwb3J0IGNvbnN0IHRoaXNXZWVrID0gKGRlbHRhID0gMCwgZmlyc3REYXlPZldlZWsgPSAxKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcblxuICBsZXQgZGlmZiA9IG1pbi5nZXREYXkoKSAtIGZpcnN0RGF5T2ZXZWVrO1xuICBpZiAoZGlmZiA8IDApIHtcbiAgICBkaWZmICs9IDc7XG4gIH1cbiAgbWluLnNldERhdGUobWluLmdldERhdGUoKSAtIGRpZmYgKyBkZWx0YSAqIDcpO1xuXG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXREYXRlKG1heC5nZXREYXRlKCkgKyA2KTtcblxuICByZXR1cm4ge1xuICAgIG1pbjogc3RhcnRPZkRheShtaW4pLFxuICAgIG1heDogZW5kT2ZEYXkobWF4KSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCB0aGlzTW9udGggPSAoZGVsdGEgPSAwKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcbiAgbWluLnNldERhdGUoMSk7XG4gIG1pbi5zZXRNb250aChtaW4uZ2V0TW9udGgoKSArIGRlbHRhKTtcbiAgY29uc3QgbWF4ID0gbmV3IERhdGUobWluKTtcbiAgbWF4LnNldE1vbnRoKG1heC5nZXRNb250aCgpICsgMSk7XG4gIG1heC5zZXREYXRlKG1heC5nZXREYXRlKCkgLSAxKTtcblxuICByZXR1cm4ge1xuICAgIG1pbjogc3RhcnRPZkRheShtaW4pLFxuICAgIG1heDogZW5kT2ZEYXkobWF4KSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCB0aGlzWWVhciA9IChkZWx0YSA9IDApOiBEYXRlUmFuZ2UgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBtaW4gPSBuZXcgRGF0ZShub3cpO1xuICBtaW4uc2V0RGF0ZSgxKTtcbiAgbWluLnNldE1vbnRoKDApO1xuICBtaW4uc2V0RnVsbFllYXIobWluLmdldEZ1bGxZZWFyKCkgKyBkZWx0YSk7XG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXRGdWxsWWVhcihtYXguZ2V0RnVsbFllYXIoKSArIDEpO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpIC0gMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5jb25zdCBNU19QRVJfREFZID0gMTAwMCAqIDYwICogNjAgKiAyNDtcbmV4cG9ydCBjb25zdCBnZXRDYWxlbmRhcldlZWsgPSAoZGF0ZTogRGF0ZSk6IG51bWJlciA9PiB7XG4gIC8vIElTTyA4NjAxOiBXZWVrIDEgaXMgdGhlIHdlZWsgd2l0aCB0aGUgZmlyc3QgVGh1cnNkYXkgb2YgdGhlIHllYXIuXG4gIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcblxuICBjb25zdCB5ID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICBjb25zdCBmZG95ID0gbmV3IERhdGUoeSwgMCwgMSk7XG4gIGNvbnN0IGRveSA9IE1hdGguZmxvb3IoXG4gICAgKGRhdGUuZ2V0VGltZSgpIC0gZmRveS5nZXRUaW1lKCkgKyAoZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpIC0gZmRveS5nZXRUaW1lem9uZU9mZnNldCgpKSkgL1xuICAgICAgTVNfUEVSX0RBWSxcbiAgKTtcbiAgY29uc3QgZG93ID0gZmRveS5nZXREYXkoKTtcbiAgY29uc3QgdyA9IE1hdGguZmxvb3IoKDEwICsgZG95IC0gZG93KSAvIDcpO1xuXG4gIGlmICh3ID09PSAwKSB7XG4gICAgcmV0dXJuIGdldENhbGVuZGFyV2VlayhuZXcgRGF0ZSh5IC0gMSwgMTEsIDMxKSk7XG4gIH1cblxuICByZXR1cm4gdztcbn07XG5cbmV4cG9ydCBjb25zdCBjb21tb25RdWlja09wdGlvbnMgPSB7XG4gIHRvZGF5OiB7IGxhYmVsOiA8VGV4dCBpZD1cInRvZGF5XCIgLz4sIHZhbHVlOiB0b2RheSB9LFxuICB0aGlzV2VlazogeyBsYWJlbDogPFRleHQgaWQ9XCJ0aGlzV2Vla1wiIC8+LCB2YWx1ZTogKHByb3BzKSA9PiB0aGlzV2VlaygwLCBwcm9wcy5maXJzdERheU9mV2VlaykgfSxcbiAgdGhpc01vbnRoOiB7IGxhYmVsOiA8VGV4dCBpZD1cInRoaXNNb250aFwiIC8+LCB2YWx1ZTogKCkgPT4gdGhpc01vbnRoKCkgfSxcbiAgdGhpc1llYXI6IHsgbGFiZWw6IDxUZXh0IGlkPVwidGhpc1llYXJcIiAvPiwgdmFsdWU6ICgpID0+IHRoaXNZZWFyKCkgfSxcbiAgbGFzdFNldmVuRGF5czogeyBsYWJlbDogPFRleHQgaWQ9XCJsYXN0U2V2ZW5EYXlzXCIgLz4sIHZhbHVlOiAoKSA9PiBsYXN0RGF5cyg3KSB9LFxuICBsYXN0VGhpcnR5RGF5czogeyBsYWJlbDogPFRleHQgaWQ9XCJsYXN0VGhpcnR5RGF5c1wiIC8+LCB2YWx1ZTogKCkgPT4gbGFzdERheXMoMzApIH0sXG59IHNhdGlzZmllcyBSZWNvcmQ8XG4gIERhdGVQaWNrZXJRdWlja09wdGlvbiAmIHN0cmluZyxcbiAgeyBsYWJlbDogUmVhY3ROb2RlOyB2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8ICgocHJvcHM6IERhdGVQaWNrZXJQcm9wcykgPT4gRGF0ZSB8IERhdGVSYW5nZSkgfVxuPjtcblxuLyoqIFJldHVybnMgd2hldGhlciB0d28gZGF0ZXMgYW5kL29yIGRhdGUgcmFuZ2VzIGludGVyc2VjdC4gSW50ZXJzZWN0aW9uIGlzIGNvbnNpZGVyZWQgcGVyIGRheS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkYXRlSW50ZXJzZWN0KGE6IERhdGUgfCBudWxsIHwgRGF0ZVJhbmdlLCBiOiBEYXRlIHwgbnVsbCB8IERhdGVSYW5nZSkge1xuICBpZiAoYSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICBhID0geyBtaW46IGEsIG1heDogYSB9O1xuICB9XG4gIGlmIChiIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIGIgPSB7IG1pbjogYiwgbWF4OiBiIH07XG4gIH1cblxuICBpZiAoIWE/Lm1pbiB8fCAhYS5tYXggfHwgIWI/Lm1pbiB8fCAhYi5tYXgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gIShlbmRPZkRheShhLm1heCkgPCBzdGFydE9mRGF5KGIubWluKSB8fCBzdGFydE9mRGF5KGEubWluKSA+IGVuZE9mRGF5KGIubWF4KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRlQ2xhbXAoZGF0ZTogRGF0ZSwgbWluPzogRGF0ZSwgbWF4PzogRGF0ZSkge1xuICBpZiAobWluICYmIGRhdGUgPCBtaW4pIHtcbiAgICByZXR1cm4gbWluO1xuICB9XG5cbiAgaWYgKG1heCAmJiBkYXRlID4gbWF4KSB7XG4gICAgcmV0dXJuIG1heDtcbiAgfVxuXG4gIHJldHVybiBkYXRlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRGF0ZVBpY2tlcihwcm9wczogRGF0ZVBpY2tlclByb3BzKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KERhdGVQaWNrZXJDb250ZXh0KTtcblxuICBjb25zdCB7XG4gICAgdmFsdWUsXG4gICAgcmFuZ2VTZWxlY3QsXG4gICAgbG9jYWxlLFxuICAgIGZpcnN0RGF5T2ZXZWVrID0gMSxcbiAgICBkZWZhdWx0RGF0ZUluVmlldyxcbiAgICBxdWlja09wdGlvbnMgPSBbJ3RvZGF5JywgJ3RoaXNXZWVrJ10sXG4gICAgbWluRGF0ZSxcbiAgICBtYXhEYXRlLFxuICAgIHNob3dDYWxlbmRhcldlZWssXG4gICAgYmxvY2tlZFJhbmdlcyA9IFtdLFxuICB9ID0gZGVmYXVsdHM8RGF0ZVBpY2tlclByb3BzPihwcm9wcywgY29udGV4dCk7XG5cbiAgZnVuY3Rpb24gb25DaGFuZ2UodmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgdmFsdWUgPSBkYXRlQ2xhbXAodmFsdWUsIG1pbkRhdGUsIG1heERhdGUpO1xuICAgIH0gZWxzZSBpZiAodmFsdWUpIHtcbiAgICAgIHZhbHVlID0ge1xuICAgICAgICBtaW46IGRhdGVDbGFtcCh2YWx1ZS5taW4sIG1pbkRhdGUsIG1heERhdGUpLFxuICAgICAgICBtYXg6IGRhdGVDbGFtcCh2YWx1ZS5tYXgsIG1pbkRhdGUsIG1heERhdGUpLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBwcm9wcy5vbkNoYW5nZSh2YWx1ZSk7XG4gIH1cblxuICBjb25zdCBCdXR0b24gPSB1c2VUaGVtZSgodCkgPT4gdC5jb21wb25lbnRzLkJ1dHRvbik7XG4gIGNvbnN0IEljb25CdXR0b24gPSB1c2VUaGVtZSgodCkgPT4gdC5jb21wb25lbnRzLkljb25CdXR0b24pO1xuICBjb25zdCBDaGV2cm9uUmlnaHQgPSB1c2VUaGVtZSgodCkgPT4gdC5pY29ucy5DaGV2cm9uUmlnaHQpO1xuICBjb25zdCBjc3NWYXJpYWJsZXMgPSB1c2VDc3NWYXJpYWJsZXMoKTtcbiAgZnVuY3Rpb24gZ2V0RGF5Q3NzU3R5bGVzKHtcbiAgICBkaXNhYmxlZCxcbiAgICBwcmV2TW9udGgsXG4gICAgbmV4dE1vbnRoLFxuICAgIHRvZGF5LFxuICAgIGJsb2NrZWQsXG4gICAgc2VsZWN0ZWQsXG4gICAgcHJlU2VsZWN0ZWQsXG4gIH06IHtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgcHJldk1vbnRoPzogYm9vbGVhbjtcbiAgICBuZXh0TW9udGg/OiBib29sZWFuO1xuICAgIHRvZGF5PzogYm9vbGVhbjtcbiAgICBibG9ja2VkPzogYm9vbGVhbjtcbiAgICBzZWxlY3RlZD86IGJvb2xlYW47XG4gICAgcHJlU2VsZWN0ZWQ/OiBib29sZWFuO1xuICB9KTogSW50ZXJwb2xhdGlvbjxUaGVtZT4ge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICBib3JkZXI6ICdub25lJyxcbiAgICAgICAgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgY3Vyc29yOiBkaXNhYmxlZCA/IHVuZGVmaW5lZCA6ICdwb2ludGVyJyxcbiAgICAgICAgZm9udDogJ2luaGVyaXQnLFxuICAgICAgfSxcbiAgICAgIChwcmV2TW9udGggfHwgbmV4dE1vbnRoKSAmJiB7XG4gICAgICAgIGNvbG9yOiBncmF5LFxuICAgICAgfSxcbiAgICAgIHRvZGF5ICYmIHtcbiAgICAgICAgb3V0bGluZTogJzFweCBzb2xpZCB2YXIoLS1zZWNvbmRhcnlNYWluKScsXG4gICAgICB9LFxuICAgICAgYmxvY2tlZCAmJiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1ibG9ja2VkTWFpbiknLFxuICAgICAgICBjb2xvcjogJ3ZhcigtLWJsb2NrZWRDb250cmFzdFRleHQpJyxcbiAgICAgIH0sXG4gICAgICBzZWxlY3RlZCAmJiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1wcmltYXJ5TWFpbiknLFxuICAgICAgICBjb2xvcjogJ3ZhcigtLXByaW1hcnlDb250cmFzdFRleHQpJyxcbiAgICAgIH0sXG4gICAgICBibG9ja2VkICYmXG4gICAgICAgIHNlbGVjdGVkICYmIHtcbiAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICAgICAnOjpiZWZvcmUnOiB7XG4gICAgICAgICAgICBjb250ZW50OiAnXCJcIicsXG4gICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgIHJpZ2h0OiAwLFxuICAgICAgICAgICAgYm90dG9tOiAwLFxuICAgICAgICAgICAgbGVmdDogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1ibG9ja2VkTWFpbiknLFxuICAgICAgICAgICAgY2xpcFBhdGg6ICdwb2x5Z29uKDAgMCwgMCA1MCUsIDUwJSAwKScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIHByZVNlbGVjdGVkICYmIHtcbiAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLXByaW1hcnlMaWdodCknLFxuICAgICAgICBjb2xvcjogJ3ZhcigtLXByaW1hcnlDb250cmFzdFRleHQpJyxcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxuXG4gIGNvbnN0IG1vdW50VGltZSA9IHVzZU1lbW8oKCkgPT4gbmV3IERhdGUoKSwgW10pO1xuICBjb25zdCBbZGlydHksIHNldERpcnR5XSA9IHVzZVN0YXRlPFBhcnRpYWw8RGF0ZVJhbmdlPj4oKTtcbiAgY29uc3QgW2hvdmVyZWQsIHNldEhvdmVyZWRdID0gdXNlU3RhdGU8RGF0ZT4oKTtcbiAgY29uc3QgW2RhdGVJblZpZXdMb2NhbCwgc2V0RGF0ZUluVmlld0xvY2FsXSA9IHVzZVN0YXRlPERhdGU+KGRlZmF1bHREYXRlSW5WaWV3ID8/IG1vdW50VGltZSk7XG4gIGNvbnN0IGRhdGVJblZpZXcgPSBwcm9wcy5kYXRlSW5WaWV3ID8/IGRhdGVJblZpZXdMb2NhbDtcblxuICBmdW5jdGlvbiBzZXREYXRlSW5WaWV3KGRhdGU6IERhdGUpIHtcbiAgICBzZXREYXRlSW5WaWV3TG9jYWwoZGF0ZSk7XG4gICAgcHJvcHMub25EYXRlSW5WaWV3Q2hhbmdlPy4oZGF0ZSk7XG4gIH1cblxuICBjb25zdCBtaW4gPSBkaXJ0eSA/IGRpcnR5Lm1pbiA6IHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IHZhbHVlIDogdmFsdWU/Lm1pbjtcbiAgY29uc3QgbWF4ID0gZGlydHkgPyBkaXJ0eS5tYXggOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlPy5tYXg7XG5cbiAgY29uc3QgcmVzb2x2ZWRRdWlja09wdGlvbnMgPSBbLi4ucXVpY2tPcHRpb25zLCB7IGxhYmVsOiA8VGV4dCBpZD1cInJlc2V0XCIgLz4sIHZhbHVlOiBudWxsIH1dLm1hcChcbiAgICAob3B0aW9uLCBpbmRleCkgPT4ge1xuICAgICAgaWYgKG9wdGlvbiBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgICAgIHJldHVybiBvcHRpb24oKHZhbHVlKSA9PiB7XG4gICAgICAgICAgc2V0RGlydHkodW5kZWZpbmVkKTtcbiAgICAgICAgICBvbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IGxhYmVsLCB2YWx1ZSB9ID0gdHlwZW9mIG9wdGlvbiA9PT0gJ3N0cmluZycgPyBjb21tb25RdWlja09wdGlvbnNbb3B0aW9uXSA6IG9wdGlvbjtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG5cbiAgICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgICAgICAgICAgIG9uQ2hhbmdlKHZhbHVlKHByb3BzKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBvbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtsYWJlbH1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApO1xuICAgIH0sXG4gICk7XG5cbiAgY29uc3QgeyBjYWxlbmRhcnMsIGdldEJhY2tQcm9wcywgZ2V0Rm9yd2FyZFByb3BzLCBnZXREYXRlUHJvcHMgfSA9IHVzZURheXplZCh7XG4gICAgb25EYXRlU2VsZWN0ZWQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICBmaXJzdERheU9mV2VlayxcbiAgICBzaG93T3V0c2lkZURheXM6IHRydWUsXG4gICAgZGF0ZTogZGF0ZUluVmlldyxcbiAgICBvbk9mZnNldENoYW5nZWQ6IChvZmZzZXQpID0+XG4gICAgICBzZXREYXRlSW5WaWV3KG5ldyBEYXRlKGRhdGVJblZpZXcuZ2V0RnVsbFllYXIoKSwgZGF0ZUluVmlldy5nZXRNb250aCgpICsgb2Zmc2V0KSksXG4gICAgb2Zmc2V0OiAwLFxuICAgIG1pbkRhdGUsXG4gICAgbWF4RGF0ZSxcbiAgfSk7XG4gIGNvbnN0IG5vdyA9IHVzZU1lbW8oKCkgPT4gc3RhcnRPZkRheShuZXcgRGF0ZSgpKSwgW10pO1xuXG4gIGNvbnN0IGZvcm1hdFdlZWtkYXkgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IGZvcm1hdCB9ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IHdlZWtkYXk6ICdzaG9ydCcgfSk7XG4gICAgcmV0dXJuICh3ZWVrRGF5OiBudW1iZXIpID0+XG4gICAgICBmb3JtYXQobmV3IERhdGUoRGF0ZS5VVEMoMjAyMSwgNywgKCh3ZWVrRGF5ICsgZmlyc3REYXlPZldlZWspICUgNykgKyAxKSkpO1xuICB9LCBbbG9jYWxlLCBmaXJzdERheU9mV2Vla10pO1xuXG4gIHVzZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgc2V0RGF0ZUluVmlldyhcbiAgICAgICAgdmFsdWUgPT09IG51bGwgPyBkZWZhdWx0RGF0ZUluVmlldyA/PyBtb3VudFRpbWUgOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlLm1heCxcbiAgICAgICksXG4gICAgW3ZhbHVlLCBkZWZhdWx0RGF0ZUluVmlldywgbW91bnRUaW1lXSxcbiAgKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghcmFuZ2VTZWxlY3QpIHtcbiAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgfVxuICB9LCBbcmFuZ2VTZWxlY3RdKTtcblxuICBmdW5jdGlvbiBzZXQobWluPzogRGF0ZSwgbWF4PzogRGF0ZSwgZWRpdD86ICdtaW4nIHwgJ21heCcpIHtcbiAgICBpZiAoIXJhbmdlU2VsZWN0KSB7XG4gICAgICBvbkNoYW5nZShtaW4gPz8gbnVsbCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKG1pbiAmJiBtYXggJiYgbWluID4gbWF4KSB7XG4gICAgICBpZiAoZWRpdCA9PT0gJ21pbicpIHtcbiAgICAgICAgbWF4ID0gbWluO1xuICAgICAgfSBlbHNlIGlmIChlZGl0ID09PSAnbWF4Jykge1xuICAgICAgICBtaW4gPSBtYXg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbbWluLCBtYXhdID0gW21heCwgbWluXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIW1pbiA9PT0gIW1heCkge1xuICAgICAgc2V0RGlydHkodW5kZWZpbmVkKTtcbiAgICAgIG9uQ2hhbmdlKG1pbiAmJiBtYXggPyB7IG1pbiwgbWF4OiBlbmRPZkRheShtYXgpIH0gOiBudWxsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0RGlydHkoeyBtaW4sIG1heCB9KTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBmb3JtYXRNb250aCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHsgZm9ybWF0IH0gPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUsIHsgbW9udGg6ICdsb25nJyB9KTtcbiAgICByZXR1cm4gKG1vbnRoOiBudW1iZXIpID0+IGZvcm1hdChuZXcgRGF0ZSgyMDIxLCBtb250aCkpO1xuICB9LCBbbG9jYWxlXSk7XG5cbiAgY29uc3QgZm9ybWF0WWVhciA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHsgZm9ybWF0IH0gPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUsIHsgeWVhcjogJ251bWVyaWMnIH0pO1xuICAgIHJldHVybiAoeWVhcjogbnVtYmVyKSA9PiBmb3JtYXQobmV3IERhdGUoeWVhciwgMCwgMSkpO1xuICB9LCBbbG9jYWxlXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNzcz17Y3NzVmFyaWFibGVzfT5cbiAgICAgIDxkaXZcbiAgICAgICAgY3NzPXt7XG4gICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgIGdyaWRBdXRvRmxvdzogJ2NvbHVtbicsXG4gICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgIGFsaWduSXRlbXM6ICdiYXNlbGluZScsXG4gICAgICAgICAgZ2FwOiAndmFyKC0tc3BhY2luZyknLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8RGF0ZUlucHV0XG4gICAgICAgICAgdmFsdWU9e21pbiA/PyBudWxsfVxuICAgICAgICAgIG9uQ2hhbmdlPXsoZGF0ZSkgPT4gc2V0KGRhdGUgPz8gdW5kZWZpbmVkLCBtYXgsICdtaW4nKX1cbiAgICAgICAgICBsb2NhbGU9e2xvY2FsZX1cbiAgICAgICAgLz5cblxuICAgICAgICB7cmFuZ2VTZWxlY3QgJiYgKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICB7JyAtICd9XG4gICAgICAgICAgICA8RGF0ZUlucHV0XG4gICAgICAgICAgICAgIHZhbHVlPXttYXggPz8gbnVsbH1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhkYXRlKSA9PiBzZXQobWluLCBkYXRlID8/IHVuZGVmaW5lZCwgJ21heCcpfVxuICAgICAgICAgICAgICBsb2NhbGU9e2xvY2FsZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cblxuICAgICAge2NhbGVuZGFycy5tYXAoKHsgbW9udGgsIHllYXIsIHdlZWtzIH0pID0+IChcbiAgICAgICAgPGRpdiBrZXk9e2Ake21vbnRofSR7eWVhcn1gfSBjc3M9e3sgZGlzcGxheTogJ2dyaWQnIH19PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICBtYXJnaW46ICdjYWxjKHZhcigtLXNwYWNpbmcpICogNCkgMCcsXG4gICAgICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICAgICAgZ3JpZEF1dG9GbG93OiAnY29sdW1uJyxcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJyxcbiAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxJY29uQnV0dG9uIHR5cGU9XCJidXR0b25cIiB7Li4uZ2V0QmFja1Byb3BzKHsgY2FsZW5kYXJzIH0pfT5cbiAgICAgICAgICAgICAgPENoZXZyb25SaWdodCBjc3M9e3sgdHJhbnNmb3JtOiAncm90YXRlM2QoMCwgMCwgMSwgMTgwZGVnKScgfX0gLz5cbiAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cblxuICAgICAgICAgICAgPGRpdiBjc3M9e3sgZGlzcGxheTogJ2ZsZXgnIH19PlxuICAgICAgICAgICAgICB7Zm9ybWF0TW9udGgobW9udGgpfSB7Zm9ybWF0WWVhcih5ZWFyKX1cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8SWNvbkJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgey4uLmdldEZvcndhcmRQcm9wcyh7IGNhbGVuZGFycyB9KX0+XG4gICAgICAgICAgICAgIDxDaGV2cm9uUmlnaHQgLz5cbiAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICBqdXN0aWZ5U2VsZjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICAgICAgZ3JpZFRlbXBsYXRlQ29sdW1uczogJ3JlcGVhdCg4LCBtYXgtY29udGVudCknLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7c2hvd0NhbGVuZGFyV2VlayA/IChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICAgICAganVzdGlmeVNlbGY6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgICAgICAgICAgICBib3JkZXJSaWdodDogYDFweCBzb2xpZCAke2dyYXl9YCxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFRleHQgaWQ9XCJjYWxlbmRhcldlZWtcIiAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHt3ZWVrRGF5cy5tYXAoKF92LCB3ZWVrRGF5KSA9PiAoXG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBrZXk9e3dlZWtEYXl9XG4gICAgICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgICAgICBqdXN0aWZ5U2VsZjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge2Zvcm1hdFdlZWtkYXkod2Vla0RheSl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKSl9XG5cbiAgICAgICAgICAgIHt3ZWVrcy5tYXAoKHdlZWssIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHdlZWtTdGFydCA9IHdlZWtbMF0gYXMgRGF0ZU9iajtcbiAgICAgICAgICAgICAgY29uc3Qgd2Vla0VuZCA9IHdlZWtbNl0gYXMgRGF0ZU9iajtcbiAgICAgICAgICAgICAgY29uc3Qgd2Vla0Rpc2FibGVkID1cbiAgICAgICAgICAgICAgICAhcmFuZ2VTZWxlY3QgfHxcbiAgICAgICAgICAgICAgICAobWluRGF0ZSAmJiB3ZWVrRW5kLmRhdGUgPCBtaW5EYXRlKSB8fFxuICAgICAgICAgICAgICAgIChtYXhEYXRlICYmIHdlZWtTdGFydC5kYXRlID4gbWF4RGF0ZSk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8RnJhZ21lbnQga2V5PXtpbmRleH0+XG4gICAgICAgICAgICAgICAgICB7c2hvd0NhbGVuZGFyV2VlayA/IChcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI6ICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3I6IHdlZWtEaXNhYmxlZCA/IHVuZGVmaW5lZCA6ICdwb2ludGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQ6ICdpbmhlcml0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJpZ2h0OiBgMXB4IHNvbGlkICR7Z3JheX1gLFxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdlZWtEaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1pbiA9IG1pbkRhdGUgJiYgd2Vla1N0YXJ0LmRhdGUgPCBtaW5EYXRlID8gbWluRGF0ZSA6IHdlZWtTdGFydC5kYXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF4ID0gbWF4RGF0ZSAmJiB3ZWVrRW5kLmRhdGUgPiBtYXhEYXRlID8gbWF4RGF0ZSA6IHdlZWtFbmQuZGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldChtaW4sIG1heCk7XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtnZXRDYWxlbmRhcldlZWsoKHdlZWtbMF0gYXMgRGF0ZU9iaikuZGF0ZSl9XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAvPlxuICAgICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgICAge3dlZWsubWFwKChkYXRlT2JqZWN0LCBkYXlJbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWRhdGVPYmplY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPGRpdiBrZXk9e2RheUluZGV4fSAvPjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgcHJldk1vbnRoLCBuZXh0TW9udGgsIGRhdGUgfSA9IGRhdGVPYmplY3Q7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRvZGF5ID0gc3RhcnRPZkRheShkYXRlKS5nZXRUaW1lKCkgPT09IG5vdy5nZXRUaW1lKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpc2FibGVkID0gKG1pbkRhdGUgJiYgZGF0ZSA8IG1pbkRhdGUpIHx8IChtYXhEYXRlICYmIGRhdGUgPiBtYXhEYXRlKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZCA9XG4gICAgICAgICAgICAgICAgICAgICAgZGF0ZS5nZXRUaW1lKCkgPT09IG1pbj8uZ2V0VGltZSgpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgKG1pbiAmJiBtYXggJiYgZGF0ZUludGVyc2VjdChkYXRlLCB7IG1pbiwgbWF4IH0pKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJlU2VsZWN0ZWQgPVxuICAgICAgICAgICAgICAgICAgICAgICFzZWxlY3RlZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICFkaXNhYmxlZCAmJlxuICAgICAgICAgICAgICAgICAgICAgIChkYXRlLmdldFRpbWUoKSA9PT0gaG92ZXJlZD8uZ2V0VGltZSgpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAobWluICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICFtYXggJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJlZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlSW50ZXJzZWN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluIDw9IGhvdmVyZWQgPyB7IG1pbiwgbWF4OiBob3ZlcmVkIH0gOiB7IG1pbjogaG92ZXJlZCwgbWF4OiBtaW4gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9ja2VkID0gYmxvY2tlZFJhbmdlcy5zb21lKChyYW5nZSkgPT4gZGF0ZUludGVyc2VjdChkYXRlLCByYW5nZSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2Ake2luZGV4fS0ke2RheUluZGV4fWB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2dldERheUNzc1N0eWxlcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2TW9udGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRNb250aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kYXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVTZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgey4uLmdldERhdGVQcm9wcyh7IGRhdGVPYmo6IGRhdGVPYmplY3QgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaXJ0eSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtaW4pIHNldChtaW4sIGRhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugc2V0KGRhdGUsIG1heCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0KGRhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyT3Zlcj17KCkgPT4gc2V0SG92ZXJlZChkYXRlKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlck91dD17KCkgPT4gc2V0SG92ZXJlZCh1bmRlZmluZWQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtkYXRlLmdldERhdGUoKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICApKX1cblxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e3tcbiAgICAgICAgICBtYXJnaW5Ub3A6ICd2YXIoLS1zcGFjaW5nKScsXG4gICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgIGdyaWRBdXRvRmxvdzogJ2NvbHVtbicsXG4gICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICB7cmVzb2x2ZWRRdWlja09wdGlvbnN9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiJdfQ== */",
994
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2RhdGVQaWNrZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTBlWSIsImZpbGUiOiIvaG9tZS9ydW5uZXIvd29yay9zY2h1bW1hci10YWJsZS9zY2h1bW1hci10YWJsZS9zcmMvY29tcG9uZW50cy9kYXRlUGlja2VyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVPYmosIHVzZURheXplZCB9IGZyb20gJ2RheXplZCc7XG5pbXBvcnQge1xuICBGcmFnbWVudCxcbiAgUmVhY3ROb2RlLFxuICBjcmVhdGVDb250ZXh0LFxuICB1c2VDb250ZXh0LFxuICB1c2VFZmZlY3QsXG4gIHVzZU1lbW8sXG4gIHVzZVN0YXRlLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJy4uL2hvb2tzL3VzZVRoZW1lJztcbmltcG9ydCB7IGRlZmF1bHRzIH0gZnJvbSAnLi4vbWlzYy9kZWZhdWx0cyc7XG5pbXBvcnQgeyBncmF5IH0gZnJvbSAnLi4vdGhlbWUvZGVmYXVsdFRoZW1lL2RlZmF1bHRDbGFzc2VzJztcbmltcG9ydCB7IHVzZUNzc1ZhcmlhYmxlcyB9IGZyb20gJy4uL3RoZW1lL3VzZUNzc1ZhcmlhYmxlcyc7XG5pbXBvcnQgeyBEYXRlSW5wdXQgfSBmcm9tICcuL2RhdGVJbnB1dCc7XG5pbXBvcnQgeyBUZXh0IH0gZnJvbSAnLi90ZXh0JztcbmltcG9ydCB7IEludGVycG9sYXRpb24sIFRoZW1lIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuXG5leHBvcnQgdHlwZSBEYXRlUmFuZ2UgPSB7IG1pbjogRGF0ZTsgbWF4OiBEYXRlIH07XG5cbmV4cG9ydCB0eXBlIERhdGVQaWNrZXJRdWlja09wdGlvbiA9XG4gIHwgJ3RvZGF5J1xuICB8ICd0aGlzV2VlaydcbiAgfCAndGhpc01vbnRoJ1xuICB8ICd0aGlzWWVhcidcbiAgfCAnbGFzdFNldmVuRGF5cydcbiAgfCAnbGFzdFRoaXJ0eURheXMnXG4gIHwgeyBsYWJlbDogUmVhY3ROb2RlOyB2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8ICgoKSA9PiBEYXRlIHwgRGF0ZVJhbmdlKSB9XG4gIHwgKChvbkNoYW5nZTogKHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCkgPT4gdm9pZCkgPT4gUmVhY3ROb2RlKTtcblxuZXhwb3J0IHR5cGUgRGF0ZVBpY2tlclByb3BzID0ge1xuICAvKiogQ3VycmVudGx5IHNlbGVjdGVkIGRheSBvciByYW5nZSBvZiBkYXlzLiAqL1xuICB2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGw7XG4gIC8qKiBDYWxsYmFjayBmb3Igd2hlbiB0aGUgZGF5IChyYW5nZSkgY2hhbmdlcy4gKi9cbiAgb25DaGFuZ2U6ICh2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpID0+IHZvaWQ7XG4gIC8qKiBDdXJyZW50bHkgdmlzaWJsZSBkYXRlLiAqL1xuICBkYXRlSW5WaWV3PzogRGF0ZTtcbiAgLyoqIENhbGxiYWNrIGZvciB3aGVuIHRoZSBjdXJyZW50bHkgdmlzaWJsZSBkYXRlIGNoYW5nZXMuICovXG4gIG9uRGF0ZUluVmlld0NoYW5nZT86ICh2YWx1ZTogRGF0ZSkgPT4gdm9pZDtcbiAgLyoqIElmIGVuYWJsZWQsIHJhbmdlcyBjYW4gYmUgc2VsZWN0ZWQuICovXG4gIHJhbmdlU2VsZWN0PzogYm9vbGVhbjtcbiAgLyoqIFdoaWNoIGxvY2FsZSB0byB1c2UgdG8gcmVuZGVyIHRoZSBjYWxlbmRhci4gKi9cbiAgbG9jYWxlPzogc3RyaW5nO1xuICAvKiogV2hpY2ggZGF5IG9mIHRoZSB3ZWVrIHNob3VsZCBiZSBpbiB0aGUgZmlyc3QgY29sdW1uLiAoMD1TdW5kYXksIDE9TW9uZGF5LCAuLi4pXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIGZpcnN0RGF5T2ZXZWVrPzogMCB8IDEgfCAyIHwgMyB8IDQgfCA1IHwgNjtcbiAgLyoqIFdoaWNoIG1vbnRoIHRvIHNob3cgaW5pdGlhbGx5ICovXG4gIGRlZmF1bHREYXRlSW5WaWV3PzogRGF0ZTtcbiAgLyoqIFNob3cgYnV0dG9ucyB0byBxdWlja2x5IHNlbGVjdCBzdWdnZXN0ZWQgZGF0ZXMgb3IgZGF0ZSByYW5nZXMgKi9cbiAgcXVpY2tPcHRpb25zPzogRGF0ZVBpY2tlclF1aWNrT3B0aW9uW107XG4gIC8qKiBNaW5pbXVtIHNlbGVjdGFibGUgZGF0ZSAqL1xuICAvKiogRGF0ZSByYW5nZXMgdGhhdCBhcmUgdmlzdWFsbHkgbWFya2VkIGFzIGJsb2NrZWQgKi9cbiAgYmxvY2tlZFJhbmdlcz86IERhdGVSYW5nZVtdO1xuICBtaW5EYXRlPzogRGF0ZTtcbiAgLyoqIE1heGltdW0gc2VsZWN0YWJsZSBkYXRlICovXG4gIG1heERhdGU/OiBEYXRlO1xuICAvKiogV2hldGhlciB0byBzaG93IHRoZSBjYWxlbmRhciB3ZWVrIGluIHRoZSBmaXJzdCBjb2x1bW4gKi9cbiAgc2hvd0NhbGVuZGFyV2Vlaz86IGJvb2xlYW47XG59O1xuXG5jb25zdCBEYXRlUGlja2VyQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8UGFydGlhbDxPbWl0PERhdGVQaWNrZXJQcm9wcywgJ3ZhbHVlJyB8ICdvbkNoYW5nZSc+Pj4oe30pO1xuXG5leHBvcnQgZnVuY3Rpb24gRGF0ZVBpY2tlclByb3ZpZGVyKHtcbiAgY2hpbGRyZW4sXG4gIC4uLnByb3BzXG59OiBQYXJ0aWFsPE9taXQ8RGF0ZVBpY2tlclByb3BzLCAndmFsdWUnIHwgJ29uQ2hhbmdlJz4+ICYgeyBjaGlsZHJlbj86IFJlYWN0Tm9kZSB9KSB7XG4gIGNvbnN0IHZhbHVlID0gdXNlTWVtbygoKSA9PiBwcm9wcywgW0pTT04uc3RyaW5naWZ5KHByb3BzKV0pO1xuXG4gIHJldHVybiA8RGF0ZVBpY2tlckNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3ZhbHVlfT57Y2hpbGRyZW59PC9EYXRlUGlja2VyQ29udGV4dC5Qcm92aWRlcj47XG59XG5cbmNvbnN0IHdlZWtEYXlzID0gWzAsIDEsIDIsIDMsIDQsIDUsIDZdIGFzIGNvbnN0O1xuXG4vKiogUm91bmRzIGEgZGF0ZSBkb3duIHRvIHRoZSBzdGFydCBvZiB0aGUgZGF5LiAqL1xuZXhwb3J0IGNvbnN0IHN0YXJ0T2ZEYXkgPSAoZDogRGF0ZSkgPT4gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCBkLmdldE1vbnRoKCksIGQuZ2V0RGF0ZSgpKTtcblxuLyoqIFJvdW5kcyBhIGRhdGUgdXAgdG8gdGhlIGVuZCBvZiB0aGUgZGF5LiAqL1xuZXhwb3J0IGNvbnN0IGVuZE9mRGF5ID0gKGQ6IERhdGUpID0+XG4gIG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgZC5nZXRNb250aCgpLCBkLmdldERhdGUoKSArIDEsIDAsIDAsIDAsIC0xKTtcblxuZXhwb3J0IGNvbnN0IGxhc3REYXlzID0gKGRheXM6IG51bWJlcik6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG4gIG1pbi5zZXREYXRlKG1pbi5nZXREYXRlKCkgLSBkYXlzICsgMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG5vdyksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdG9kYXkgPSAoKSA9PiBsYXN0RGF5cygxKTtcblxuZXhwb3J0IGNvbnN0IHRoaXNXZWVrID0gKGRlbHRhID0gMCwgZmlyc3REYXlPZldlZWsgPSAxKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcblxuICBsZXQgZGlmZiA9IG1pbi5nZXREYXkoKSAtIGZpcnN0RGF5T2ZXZWVrO1xuICBpZiAoZGlmZiA8IDApIHtcbiAgICBkaWZmICs9IDc7XG4gIH1cbiAgbWluLnNldERhdGUobWluLmdldERhdGUoKSAtIGRpZmYgKyBkZWx0YSAqIDcpO1xuXG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXREYXRlKG1heC5nZXREYXRlKCkgKyA2KTtcblxuICByZXR1cm4ge1xuICAgIG1pbjogc3RhcnRPZkRheShtaW4pLFxuICAgIG1heDogZW5kT2ZEYXkobWF4KSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCB0aGlzTW9udGggPSAoZGVsdGEgPSAwKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcbiAgbWluLnNldERhdGUoMSk7XG4gIG1pbi5zZXRNb250aChtaW4uZ2V0TW9udGgoKSArIGRlbHRhKTtcbiAgY29uc3QgbWF4ID0gbmV3IERhdGUobWluKTtcbiAgbWF4LnNldE1vbnRoKG1heC5nZXRNb250aCgpICsgMSk7XG4gIG1heC5zZXREYXRlKG1heC5nZXREYXRlKCkgLSAxKTtcblxuICByZXR1cm4ge1xuICAgIG1pbjogc3RhcnRPZkRheShtaW4pLFxuICAgIG1heDogZW5kT2ZEYXkobWF4KSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCB0aGlzWWVhciA9IChkZWx0YSA9IDApOiBEYXRlUmFuZ2UgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBtaW4gPSBuZXcgRGF0ZShub3cpO1xuICBtaW4uc2V0RGF0ZSgxKTtcbiAgbWluLnNldE1vbnRoKDApO1xuICBtaW4uc2V0RnVsbFllYXIobWluLmdldEZ1bGxZZWFyKCkgKyBkZWx0YSk7XG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXRGdWxsWWVhcihtYXguZ2V0RnVsbFllYXIoKSArIDEpO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpIC0gMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5jb25zdCBNU19QRVJfREFZID0gMTAwMCAqIDYwICogNjAgKiAyNDtcbmV4cG9ydCBjb25zdCBnZXRDYWxlbmRhcldlZWsgPSAoZGF0ZTogRGF0ZSk6IG51bWJlciA9PiB7XG4gIC8vIElTTyA4NjAxOiBXZWVrIDEgaXMgdGhlIHdlZWsgd2l0aCB0aGUgZmlyc3QgVGh1cnNkYXkgb2YgdGhlIHllYXIuXG4gIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcblxuICBjb25zdCBlbmRPZldlZWsgPSBuZXcgRGF0ZShcbiAgICBkYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgZGF0ZS5nZXRNb250aCgpLFxuICAgIGRhdGUuZ2V0RGF0ZSgpICsgKDcgLSAoZGF0ZS5nZXREYXkoKSB8fCA3KSksXG4gICk7XG5cbiAgY29uc3QgeWVhciA9IGVuZE9mV2Vlay5nZXRGdWxsWWVhcigpO1xuICBjb25zdCBmaXJzdERheU9mWWVhciA9IG5ldyBEYXRlKHllYXIsIDAsIDEpO1xuICBjb25zdCBkYXlPZlllYXIgPVxuICAgIE1hdGguZmxvb3IoXG4gICAgICAoZW5kT2ZXZWVrLmdldFRpbWUoKSAtXG4gICAgICAgIGZpcnN0RGF5T2ZZZWFyLmdldFRpbWUoKSArXG4gICAgICAgIChlbmRPZldlZWsuZ2V0VGltZXpvbmVPZmZzZXQoKSAtIGZpcnN0RGF5T2ZZZWFyLmdldFRpbWV6b25lT2Zmc2V0KCkpKSAvXG4gICAgICAgIE1TX1BFUl9EQVksXG4gICAgKSArIDE7XG4gIGNvbnN0IHdlZWtPZlllYXIgPSBNYXRoLmZsb29yKCgzICsgZGF5T2ZZZWFyKSAvIDcpO1xuXG4gIGlmICh3ZWVrT2ZZZWFyID09PSAwKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGdldENhbGVuZGFyV2VlayhcbiAgICAgICAgbmV3IERhdGUoZW5kT2ZXZWVrLmdldEZ1bGxZZWFyKCksIGVuZE9mV2Vlay5nZXRNb250aCgpLCBlbmRPZldlZWsuZ2V0RGF0ZSgpIC0gNyksXG4gICAgICApICsgMVxuICAgICk7XG4gIH1cblxuICByZXR1cm4gd2Vla09mWWVhcjtcbn07XG5cbmV4cG9ydCBjb25zdCBjb21tb25RdWlja09wdGlvbnMgPSB7XG4gIHRvZGF5OiB7IGxhYmVsOiA8VGV4dCBpZD1cInRvZGF5XCIgLz4sIHZhbHVlOiB0b2RheSB9LFxuICB0aGlzV2VlazogeyBsYWJlbDogPFRleHQgaWQ9XCJ0aGlzV2Vla1wiIC8+LCB2YWx1ZTogKHByb3BzKSA9PiB0aGlzV2VlaygwLCBwcm9wcy5maXJzdERheU9mV2VlaykgfSxcbiAgdGhpc01vbnRoOiB7IGxhYmVsOiA8VGV4dCBpZD1cInRoaXNNb250aFwiIC8+LCB2YWx1ZTogKCkgPT4gdGhpc01vbnRoKCkgfSxcbiAgdGhpc1llYXI6IHsgbGFiZWw6IDxUZXh0IGlkPVwidGhpc1llYXJcIiAvPiwgdmFsdWU6ICgpID0+IHRoaXNZZWFyKCkgfSxcbiAgbGFzdFNldmVuRGF5czogeyBsYWJlbDogPFRleHQgaWQ9XCJsYXN0U2V2ZW5EYXlzXCIgLz4sIHZhbHVlOiAoKSA9PiBsYXN0RGF5cyg3KSB9LFxuICBsYXN0VGhpcnR5RGF5czogeyBsYWJlbDogPFRleHQgaWQ9XCJsYXN0VGhpcnR5RGF5c1wiIC8+LCB2YWx1ZTogKCkgPT4gbGFzdERheXMoMzApIH0sXG59IHNhdGlzZmllcyBSZWNvcmQ8XG4gIERhdGVQaWNrZXJRdWlja09wdGlvbiAmIHN0cmluZyxcbiAgeyBsYWJlbDogUmVhY3ROb2RlOyB2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8ICgocHJvcHM6IERhdGVQaWNrZXJQcm9wcykgPT4gRGF0ZSB8IERhdGVSYW5nZSkgfVxuPjtcblxuLyoqIFJldHVybnMgd2hldGhlciB0d28gZGF0ZXMgYW5kL29yIGRhdGUgcmFuZ2VzIGludGVyc2VjdC4gSW50ZXJzZWN0aW9uIGlzIGNvbnNpZGVyZWQgcGVyIGRheS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkYXRlSW50ZXJzZWN0KFxuICBhOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgYjogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwgfCB1bmRlZmluZWQsXG4pIHtcbiAgaWYgKGEgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgYSA9IHsgbWluOiBhLCBtYXg6IGEgfTtcbiAgfVxuICBpZiAoYiBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICBiID0geyBtaW46IGIsIG1heDogYiB9O1xuICB9XG5cbiAgaWYgKCFhPy5taW4gfHwgIWEubWF4IHx8ICFiPy5taW4gfHwgIWIubWF4KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuICEoZW5kT2ZEYXkoYS5tYXgpIDwgc3RhcnRPZkRheShiLm1pbikgfHwgc3RhcnRPZkRheShhLm1pbikgPiBlbmRPZkRheShiLm1heCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUNsYW1wKGRhdGU6IERhdGUsIG1pbj86IERhdGUsIG1heD86IERhdGUpIHtcbiAgaWYgKG1pbiAmJiBkYXRlIDwgbWluKSB7XG4gICAgcmV0dXJuIG1pbjtcbiAgfVxuXG4gIGlmIChtYXggJiYgZGF0ZSA+IG1heCkge1xuICAgIHJldHVybiBtYXg7XG4gIH1cblxuICByZXR1cm4gZGF0ZTtcbn1cblxuZnVuY3Rpb24gZ2V0VmFsdWVGb3JDb21wYXJpc29uKHZhbHVlPzogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpIHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgcmV0dXJuIHZhbHVlLmdldFRpbWUoKTtcbiAgfVxuICByZXR1cm4gYCR7dmFsdWUubWluPy5nZXRUaW1lKCl9LSR7dmFsdWUubWF4Py5nZXRUaW1lKCl9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVQaWNrZXIocHJvcHM6IERhdGVQaWNrZXJQcm9wcykge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChEYXRlUGlja2VyQ29udGV4dCk7XG5cbiAgY29uc3Qge1xuICAgIHZhbHVlLFxuICAgIHJhbmdlU2VsZWN0LFxuICAgIGxvY2FsZSxcbiAgICBmaXJzdERheU9mV2VlayA9IDEsXG4gICAgZGVmYXVsdERhdGVJblZpZXcsXG4gICAgcXVpY2tPcHRpb25zID0gWyd0b2RheScsICd0aGlzV2VlayddLFxuICAgIG1pbkRhdGUsXG4gICAgbWF4RGF0ZSxcbiAgICBzaG93Q2FsZW5kYXJXZWVrLFxuICAgIGJsb2NrZWRSYW5nZXMgPSBbXSxcbiAgfSA9IGRlZmF1bHRzPERhdGVQaWNrZXJQcm9wcz4ocHJvcHMsIGNvbnRleHQpO1xuXG4gIGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCkge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIHZhbHVlID0gZGF0ZUNsYW1wKHZhbHVlLCBtaW5EYXRlLCBtYXhEYXRlKTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICB2YWx1ZSA9IHtcbiAgICAgICAgbWluOiBkYXRlQ2xhbXAodmFsdWUubWluLCBtaW5EYXRlLCBtYXhEYXRlKSxcbiAgICAgICAgbWF4OiBkYXRlQ2xhbXAodmFsdWUubWF4LCBtaW5EYXRlLCBtYXhEYXRlKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcHJvcHMub25DaGFuZ2UodmFsdWUpO1xuICB9XG5cbiAgY29uc3QgQnV0dG9uID0gdXNlVGhlbWUoKHQpID0+IHQuY29tcG9uZW50cy5CdXR0b24pO1xuICBjb25zdCBJY29uQnV0dG9uID0gdXNlVGhlbWUoKHQpID0+IHQuY29tcG9uZW50cy5JY29uQnV0dG9uKTtcbiAgY29uc3QgQ2hldnJvblJpZ2h0ID0gdXNlVGhlbWUoKHQpID0+IHQuaWNvbnMuQ2hldnJvblJpZ2h0KTtcbiAgY29uc3QgY3NzVmFyaWFibGVzID0gdXNlQ3NzVmFyaWFibGVzKCk7XG4gIGZ1bmN0aW9uIGdldERheUNzc1N0eWxlcyh7XG4gICAgZGlzYWJsZWQsXG4gICAgcHJldk1vbnRoLFxuICAgIG5leHRNb250aCxcbiAgICB0b2RheSxcbiAgICBibG9ja2VkLFxuICAgIHNlbGVjdGVkLFxuICAgIHByZVNlbGVjdGVkLFxuICB9OiB7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIHByZXZNb250aD86IGJvb2xlYW47XG4gICAgbmV4dE1vbnRoPzogYm9vbGVhbjtcbiAgICB0b2RheT86IGJvb2xlYW47XG4gICAgYmxvY2tlZD86IGJvb2xlYW47XG4gICAgc2VsZWN0ZWQ/OiBib29sZWFuO1xuICAgIHByZVNlbGVjdGVkPzogYm9vbGVhbjtcbiAgfSk6IEludGVycG9sYXRpb248VGhlbWU+IHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgIGN1cnNvcjogZGlzYWJsZWQgPyB1bmRlZmluZWQgOiAncG9pbnRlcicsXG4gICAgICAgIGZvbnQ6ICdpbmhlcml0JyxcbiAgICAgIH0sXG4gICAgICAocHJldk1vbnRoIHx8IG5leHRNb250aCkgJiYge1xuICAgICAgICBjb2xvcjogZ3JheSxcbiAgICAgIH0sXG4gICAgICB0b2RheSAmJiB7XG4gICAgICAgIG91dGxpbmU6ICcxcHggc29saWQgdmFyKC0tc2Vjb25kYXJ5TWFpbiknLFxuICAgICAgfSxcbiAgICAgIGJsb2NrZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tYmxvY2tlZE1haW4pJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1ibG9ja2VkQ29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgICAgc2VsZWN0ZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tcHJpbWFyeU1haW4pJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1wcmltYXJ5Q29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgICAgYmxvY2tlZCAmJlxuICAgICAgICBzZWxlY3RlZCAmJiB7XG4gICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgICAgJzo6YmVmb3JlJzoge1xuICAgICAgICAgICAgY29udGVudDogJ1wiXCInLFxuICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICByaWdodDogMCxcbiAgICAgICAgICAgIGJvdHRvbTogMCxcbiAgICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tYmxvY2tlZE1haW4pJyxcbiAgICAgICAgICAgIGNsaXBQYXRoOiAncG9seWdvbigwIDAsIDAgNTAlLCA1MCUgMCknLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBwcmVTZWxlY3RlZCAmJiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1wcmltYXJ5TGlnaHQpJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1wcmltYXJ5Q29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICBjb25zdCBtb3VudFRpbWUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKCksIFtdKTtcbiAgY29uc3QgW2RpcnR5LCBzZXREaXJ0eV0gPSB1c2VTdGF0ZTxQYXJ0aWFsPERhdGVSYW5nZT4+KCk7XG4gIGNvbnN0IFtob3ZlcmVkLCBzZXRIb3ZlcmVkXSA9IHVzZVN0YXRlPERhdGVSYW5nZT4oKTtcbiAgY29uc3QgW2RhdGVJblZpZXdMb2NhbCwgc2V0RGF0ZUluVmlld0xvY2FsXSA9IHVzZVN0YXRlPERhdGU+KGRlZmF1bHREYXRlSW5WaWV3ID8/IG1vdW50VGltZSk7XG4gIGNvbnN0IGRhdGVJblZpZXcgPSBwcm9wcy5kYXRlSW5WaWV3ID8/IGRhdGVJblZpZXdMb2NhbDtcblxuICBmdW5jdGlvbiBzZXREYXRlSW5WaWV3KGRhdGU6IERhdGUpIHtcbiAgICBzZXREYXRlSW5WaWV3TG9jYWwoZGF0ZSk7XG4gICAgcHJvcHMub25EYXRlSW5WaWV3Q2hhbmdlPy4oZGF0ZSk7XG4gIH1cblxuICBjb25zdCBtaW4gPSBkaXJ0eSA/IGRpcnR5Lm1pbiA6IHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IHZhbHVlIDogdmFsdWU/Lm1pbjtcbiAgY29uc3QgbWF4ID0gZGlydHkgPyBkaXJ0eS5tYXggOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlPy5tYXg7XG5cbiAgY29uc3QgcmVzb2x2ZWRRdWlja09wdGlvbnMgPSBbLi4ucXVpY2tPcHRpb25zLCB7IGxhYmVsOiA8VGV4dCBpZD1cInJlc2V0XCIgLz4sIHZhbHVlOiBudWxsIH1dLm1hcChcbiAgICAob3B0aW9uLCBpbmRleCkgPT4ge1xuICAgICAgaWYgKG9wdGlvbiBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgICAgIHJldHVybiBvcHRpb24oKHZhbHVlKSA9PiB7XG4gICAgICAgICAgc2V0RGlydHkodW5kZWZpbmVkKTtcbiAgICAgICAgICBvbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IGxhYmVsLCB2YWx1ZSB9ID0gdHlwZW9mIG9wdGlvbiA9PT0gJ3N0cmluZycgPyBjb21tb25RdWlja09wdGlvbnNbb3B0aW9uXSA6IG9wdGlvbjtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG5cbiAgICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgICAgICAgICAgIG9uQ2hhbmdlKHZhbHVlKHByb3BzKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBvbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtsYWJlbH1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApO1xuICAgIH0sXG4gICk7XG5cbiAgY29uc3QgeyBjYWxlbmRhcnMsIGdldEJhY2tQcm9wcywgZ2V0Rm9yd2FyZFByb3BzLCBnZXREYXRlUHJvcHMgfSA9IHVzZURheXplZCh7XG4gICAgb25EYXRlU2VsZWN0ZWQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICBmaXJzdERheU9mV2VlayxcbiAgICBzaG93T3V0c2lkZURheXM6IHRydWUsXG4gICAgZGF0ZTogZGF0ZUluVmlldyxcbiAgICBvbk9mZnNldENoYW5nZWQ6IChvZmZzZXQpID0+XG4gICAgICBzZXREYXRlSW5WaWV3KG5ldyBEYXRlKGRhdGVJblZpZXcuZ2V0RnVsbFllYXIoKSwgZGF0ZUluVmlldy5nZXRNb250aCgpICsgb2Zmc2V0KSksXG4gICAgb2Zmc2V0OiAwLFxuICAgIG1pbkRhdGUsXG4gICAgbWF4RGF0ZSxcbiAgfSk7XG4gIGNvbnN0IG5vdyA9IHVzZU1lbW8oKCkgPT4gc3RhcnRPZkRheShuZXcgRGF0ZSgpKSwgW10pO1xuXG4gIGNvbnN0IGZvcm1hdFdlZWtkYXkgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IGZvcm1hdCB9ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IHdlZWtkYXk6ICdzaG9ydCcgfSk7XG4gICAgcmV0dXJuICh3ZWVrRGF5OiBudW1iZXIpID0+XG4gICAgICBmb3JtYXQobmV3IERhdGUoRGF0ZS5VVEMoMjAyMSwgNywgKCh3ZWVrRGF5ICsgZmlyc3REYXlPZldlZWspICUgNykgKyAxKSkpO1xuICB9LCBbbG9jYWxlLCBmaXJzdERheU9mV2Vla10pO1xuXG4gIHVzZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgc2V0RGF0ZUluVmlldyhcbiAgICAgICAgdmFsdWUgPT09IG51bGwgPyBkZWZhdWx0RGF0ZUluVmlldyA/PyBtb3VudFRpbWUgOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlLm1heCxcbiAgICAgICksXG4gICAgW2dldFZhbHVlRm9yQ29tcGFyaXNvbih2YWx1ZSksIGdldFZhbHVlRm9yQ29tcGFyaXNvbihkZWZhdWx0RGF0ZUluVmlldyksIG1vdW50VGltZV0sXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXJhbmdlU2VsZWN0KSB7XG4gICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuICAgIH1cbiAgfSwgW3JhbmdlU2VsZWN0XSk7XG5cbiAgZnVuY3Rpb24gc2V0KG1pbj86IERhdGUsIG1heD86IERhdGUsIGVkaXQ/OiAnbWluJyB8ICdtYXgnKSB7XG4gICAgaWYgKCFyYW5nZVNlbGVjdCkge1xuICAgICAgb25DaGFuZ2UobWluID8/IG51bGwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChtaW4gJiYgbWF4ICYmIG1pbiA+IG1heCkge1xuICAgICAgaWYgKGVkaXQgPT09ICdtaW4nKSB7XG4gICAgICAgIG1heCA9IG1pbjtcbiAgICAgIH0gZWxzZSBpZiAoZWRpdCA9PT0gJ21heCcpIHtcbiAgICAgICAgbWluID0gbWF4O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgW21pbiwgbWF4XSA9IFttYXgsIG1pbl07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFtaW4gPT09ICFtYXgpIHtcbiAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgICBvbkNoYW5nZShtaW4gJiYgbWF4ID8geyBtaW4sIG1heDogZW5kT2ZEYXkobWF4KSB9IDogbnVsbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldERpcnR5KHsgbWluLCBtYXggfSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZm9ybWF0TW9udGggPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IGZvcm1hdCB9ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IG1vbnRoOiAnbG9uZycgfSk7XG4gICAgcmV0dXJuIChtb250aDogbnVtYmVyKSA9PiBmb3JtYXQobmV3IERhdGUoMjAyMSwgbW9udGgpKTtcbiAgfSwgW2xvY2FsZV0pO1xuXG4gIGNvbnN0IGZvcm1hdFllYXIgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IGZvcm1hdCB9ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IHllYXI6ICdudW1lcmljJyB9KTtcbiAgICByZXR1cm4gKHllYXI6IG51bWJlcikgPT4gZm9ybWF0KG5ldyBEYXRlKHllYXIsIDAsIDEpKTtcbiAgfSwgW2xvY2FsZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjc3M9e2Nzc1ZhcmlhYmxlc30+XG4gICAgICA8ZGl2XG4gICAgICAgIGNzcz17e1xuICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICBhbGlnbkl0ZW1zOiAnYmFzZWxpbmUnLFxuICAgICAgICAgIGdhcDogJ3ZhcigtLXNwYWNpbmcpJyxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPERhdGVJbnB1dFxuICAgICAgICAgIHZhbHVlPXttaW4gPz8gbnVsbH1cbiAgICAgICAgICBvbkNoYW5nZT17KGRhdGUpID0+IHNldChkYXRlID8/IHVuZGVmaW5lZCwgbWF4LCAnbWluJyl9XG4gICAgICAgICAgbG9jYWxlPXtsb2NhbGV9XG4gICAgICAgIC8+XG5cbiAgICAgICAge3JhbmdlU2VsZWN0ICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgeycgLSAnfVxuICAgICAgICAgICAgPERhdGVJbnB1dFxuICAgICAgICAgICAgICB2YWx1ZT17bWF4ID8/IG51bGx9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZGF0ZSkgPT4gc2V0KG1pbiwgZGF0ZSA/PyB1bmRlZmluZWQsICdtYXgnKX1cbiAgICAgICAgICAgICAgbG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvPlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIHtjYWxlbmRhcnMubWFwKCh7IG1vbnRoLCB5ZWFyLCB3ZWVrcyB9KSA9PiAoXG4gICAgICAgIDxkaXYga2V5PXtgJHttb250aH0ke3llYXJ9YH0gY3NzPXt7IGRpc3BsYXk6ICdncmlkJyB9fT5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgbWFyZ2luOiAnY2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpIDAnLFxuICAgICAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgICAgIGdyaWRBdXRvRmxvdzogJ2NvbHVtbicsXG4gICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnc3BhY2UtYmV0d2VlbicsXG4gICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8SWNvbkJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgey4uLmdldEJhY2tQcm9wcyh7IGNhbGVuZGFycyB9KX0+XG4gICAgICAgICAgICAgIDxDaGV2cm9uUmlnaHQgY3NzPXt7IHRyYW5zZm9ybTogJ3JvdGF0ZTNkKDAsIDAsIDEsIDE4MGRlZyknIH19IC8+XG4gICAgICAgICAgICA8L0ljb25CdXR0b24+XG5cbiAgICAgICAgICAgIDxkaXYgY3NzPXt7IGRpc3BsYXk6ICdmbGV4JyB9fT5cbiAgICAgICAgICAgICAge2Zvcm1hdE1vbnRoKG1vbnRoKX0ge2Zvcm1hdFllYXIoeWVhcil9XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPEljb25CdXR0b24gdHlwZT1cImJ1dHRvblwiIHsuLi5nZXRGb3J3YXJkUHJvcHMoeyBjYWxlbmRhcnMgfSl9PlxuICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0IC8+XG4gICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAganVzdGlmeVNlbGY6ICdjZW50ZXInLFxuICAgICAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgICAgIGdyaWRUZW1wbGF0ZUNvbHVtbnM6ICdyZXBlYXQoOCwgbWF4LWNvbnRlbnQpJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3Nob3dDYWxlbmRhcldlZWsgPyAoXG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgICAgYm9yZGVyUmlnaHQ6IGAxcHggc29saWQgJHtncmF5fWAsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxUZXh0IGlkPVwiY2FsZW5kYXJXZWVrXCIgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8ZGl2IC8+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7d2Vla0RheXMubWFwKChfdiwgd2Vla0RheSkgPT4gKFxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAga2V5PXt3ZWVrRGF5fVxuICAgICAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICAgICAganVzdGlmeVNlbGY6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtmb3JtYXRXZWVrZGF5KHdlZWtEYXkpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkpfVxuXG4gICAgICAgICAgICB7d2Vla3MubWFwKCh3ZWVrLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrU3RhcnQgPSB3ZWVrWzBdIGFzIERhdGVPYmo7XG4gICAgICAgICAgICAgIGNvbnN0IHdlZWtFbmQgPSB3ZWVrWzZdIGFzIERhdGVPYmo7XG4gICAgICAgICAgICAgIGNvbnN0IHdlZWtEaXNhYmxlZCA9XG4gICAgICAgICAgICAgICAgIXJhbmdlU2VsZWN0IHx8XG4gICAgICAgICAgICAgICAgKG1pbkRhdGUgJiYgd2Vla0VuZC5kYXRlIDwgbWluRGF0ZSkgfHxcbiAgICAgICAgICAgICAgICAobWF4RGF0ZSAmJiB3ZWVrU3RhcnQuZGF0ZSA+IG1heERhdGUpO1xuXG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPEZyYWdtZW50IGtleT17aW5kZXh9PlxuICAgICAgICAgICAgICAgICAge3Nob3dDYWxlbmRhcldlZWsgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiB3ZWVrRGlzYWJsZWQgPyB1bmRlZmluZWQgOiAncG9pbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb250OiAnaW5oZXJpdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSaWdodDogYDFweCBzb2xpZCAke2dyYXl9YCxcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3ZWVrRGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtaW4gPSBtaW5EYXRlICYmIHdlZWtTdGFydC5kYXRlIDwgbWluRGF0ZSA/IG1pbkRhdGUgOiB3ZWVrU3RhcnQuZGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1heCA9IG1heERhdGUgJiYgd2Vla0VuZC5kYXRlID4gbWF4RGF0ZSA/IG1heERhdGUgOiB3ZWVrRW5kLmRhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXQobWluLCBtYXgpO1xuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyT3Zlcj17KCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICF3ZWVrRGlzYWJsZWQgJiYgc2V0SG92ZXJlZCh7IG1pbjogd2Vla1N0YXJ0LmRhdGUsIG1heDogd2Vla0VuZC5kYXRlIH0pXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlck91dD17KCkgPT4gIXdlZWtEaXNhYmxlZCAmJiBzZXRIb3ZlcmVkKHVuZGVmaW5lZCl9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7Z2V0Q2FsZW5kYXJXZWVrKHdlZWtFbmQuZGF0ZSl9XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAvPlxuICAgICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgICAge3dlZWsubWFwKChkYXRlT2JqZWN0LCBkYXlJbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWRhdGVPYmplY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPGRpdiBrZXk9e2RheUluZGV4fSAvPjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgcHJldk1vbnRoLCBuZXh0TW9udGgsIGRhdGUgfSA9IGRhdGVPYmplY3Q7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRvZGF5ID0gc3RhcnRPZkRheShkYXRlKS5nZXRUaW1lKCkgPT09IG5vdy5nZXRUaW1lKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpc2FibGVkID0gKG1pbkRhdGUgJiYgZGF0ZSA8IG1pbkRhdGUpIHx8IChtYXhEYXRlICYmIGRhdGUgPiBtYXhEYXRlKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZCA9XG4gICAgICAgICAgICAgICAgICAgICAgZGF0ZS5nZXRUaW1lKCkgPT09IG1pbj8uZ2V0VGltZSgpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgKG1pbiAmJiBtYXggJiYgZGF0ZUludGVyc2VjdChkYXRlLCB7IG1pbiwgbWF4IH0pKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJlU2VsZWN0ZWQgPVxuICAgICAgICAgICAgICAgICAgICAgICFzZWxlY3RlZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICFkaXNhYmxlZCAmJlxuICAgICAgICAgICAgICAgICAgICAgIChkYXRlSW50ZXJzZWN0KGRhdGUsIGhvdmVyZWQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAobWluICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICFtYXggJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJlZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlSW50ZXJzZWN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluIDw9IGhvdmVyZWQubWluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHsgbWluLCBtYXg6IGhvdmVyZWQubWluIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogeyBtaW46IGhvdmVyZWQubWF4LCBtYXg6IG1pbiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICApKSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrZWQgPSBibG9ja2VkUmFuZ2VzLnNvbWUoKHJhbmdlKSA9PiBkYXRlSW50ZXJzZWN0KGRhdGUsIHJhbmdlKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleT17YCR7aW5kZXh9LSR7ZGF5SW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Z2V0RGF5Q3NzU3R5bGVzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZNb250aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dE1vbnRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RheSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByZVNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICB7Li4uZ2V0RGF0ZVByb3BzKHsgZGF0ZU9iajogZGF0ZU9iamVjdCB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpcnR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1pbikgc2V0KG1pbiwgZGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBzZXQoZGF0ZSwgbWF4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQoZGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJPdmVyPXsoKSA9PiBzZXRIb3ZlcmVkKHsgbWluOiBkYXRlLCBtYXg6IGRhdGUgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJPdXQ9eygpID0+IHNldEhvdmVyZWQodW5kZWZpbmVkKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7ZGF0ZS5nZXREYXRlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKSl9XG5cbiAgICAgIDxkaXZcbiAgICAgICAgY3NzPXt7XG4gICAgICAgICAgbWFyZ2luVG9wOiAndmFyKC0tc3BhY2luZyknLFxuICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAge3Jlc29sdmVkUXVpY2tPcHRpb25zfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iXX0= */",
985
995
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__$d
986
996
  };
987
997
  var _ref7 = process.env.NODE_ENV === "production" ? {
@@ -990,7 +1000,7 @@ var _ref7 = process.env.NODE_ENV === "production" ? {
990
1000
  } : {
991
1001
  name: "5a0dsf-DatePicker",
992
1002
  styles: "justify-self:center;padding:10px;label:DatePicker;",
993
- map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2RhdGVQaWNrZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXdlZ0IiLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvc2NodW1tYXItdGFibGUvc2NodW1tYXItdGFibGUvc3JjL2NvbXBvbmVudHMvZGF0ZVBpY2tlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlT2JqLCB1c2VEYXl6ZWQgfSBmcm9tICdkYXl6ZWQnO1xuaW1wb3J0IHtcbiAgRnJhZ21lbnQsXG4gIFJlYWN0Tm9kZSxcbiAgY3JlYXRlQ29udGV4dCxcbiAgdXNlQ29udGV4dCxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICcuLi9ob29rcy91c2VUaGVtZSc7XG5pbXBvcnQgeyBkZWZhdWx0cyB9IGZyb20gJy4uL21pc2MvZGVmYXVsdHMnO1xuaW1wb3J0IHsgZ3JheSB9IGZyb20gJy4uL3RoZW1lL2RlZmF1bHRUaGVtZS9kZWZhdWx0Q2xhc3Nlcyc7XG5pbXBvcnQgeyB1c2VDc3NWYXJpYWJsZXMgfSBmcm9tICcuLi90aGVtZS91c2VDc3NWYXJpYWJsZXMnO1xuaW1wb3J0IHsgRGF0ZUlucHV0IH0gZnJvbSAnLi9kYXRlSW5wdXQnO1xuaW1wb3J0IHsgVGV4dCB9IGZyb20gJy4vdGV4dCc7XG5pbXBvcnQgeyBJbnRlcnBvbGF0aW9uLCBUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuZXhwb3J0IHR5cGUgRGF0ZVJhbmdlID0geyBtaW46IERhdGU7IG1heDogRGF0ZSB9O1xuXG5leHBvcnQgdHlwZSBEYXRlUGlja2VyUXVpY2tPcHRpb24gPVxuICB8ICd0b2RheSdcbiAgfCAndGhpc1dlZWsnXG4gIHwgJ3RoaXNNb250aCdcbiAgfCAndGhpc1llYXInXG4gIHwgJ2xhc3RTZXZlbkRheXMnXG4gIHwgJ2xhc3RUaGlydHlEYXlzJ1xuICB8IHsgbGFiZWw6IFJlYWN0Tm9kZTsgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCAoKCkgPT4gRGF0ZSB8IERhdGVSYW5nZSkgfVxuICB8ICgob25DaGFuZ2U6ICh2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpID0+IHZvaWQpID0+IFJlYWN0Tm9kZSk7XG5cbmV4cG9ydCB0eXBlIERhdGVQaWNrZXJQcm9wcyA9IHtcbiAgLyoqIEN1cnJlbnRseSBzZWxlY3RlZCBkYXkgb3IgcmFuZ2Ugb2YgZGF5cy4gKi9cbiAgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsO1xuICAvKiogQ2FsbGJhY2sgZm9yIHdoZW4gdGhlIGRheSAocmFuZ2UpIGNoYW5nZXMuICovXG4gIG9uQ2hhbmdlOiAodmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSA9PiB2b2lkO1xuICAvKiogQ3VycmVudGx5IHZpc2libGUgZGF0ZS4gKi9cbiAgZGF0ZUluVmlldz86IERhdGU7XG4gIC8qKiBDYWxsYmFjayBmb3Igd2hlbiB0aGUgY3VycmVudGx5IHZpc2libGUgZGF0ZSBjaGFuZ2VzLiAqL1xuICBvbkRhdGVJblZpZXdDaGFuZ2U/OiAodmFsdWU6IERhdGUpID0+IHZvaWQ7XG4gIC8qKiBJZiBlbmFibGVkLCByYW5nZXMgY2FuIGJlIHNlbGVjdGVkLiAqL1xuICByYW5nZVNlbGVjdD86IGJvb2xlYW47XG4gIC8qKiBXaGljaCBsb2NhbGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgY2FsZW5kYXIuICovXG4gIGxvY2FsZT86IHN0cmluZztcbiAgLyoqIFdoaWNoIGRheSBvZiB0aGUgd2VlayBzaG91bGQgYmUgaW4gdGhlIGZpcnN0IGNvbHVtbi4gKDA9U3VuZGF5LCAxPU1vbmRheSwgLi4uKVxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICBmaXJzdERheU9mV2Vlaz86IDAgfCAxIHwgMiB8IDMgfCA0IHwgNSB8IDY7XG4gIC8qKiBXaGljaCBtb250aCB0byBzaG93IGluaXRpYWxseSAqL1xuICBkZWZhdWx0RGF0ZUluVmlldz86IERhdGU7XG4gIC8qKiBTaG93IGJ1dHRvbnMgdG8gcXVpY2tseSBzZWxlY3Qgc3VnZ2VzdGVkIGRhdGVzIG9yIGRhdGUgcmFuZ2VzICovXG4gIHF1aWNrT3B0aW9ucz86IERhdGVQaWNrZXJRdWlja09wdGlvbltdO1xuICAvKiogTWluaW11bSBzZWxlY3RhYmxlIGRhdGUgKi9cbiAgLyoqIERhdGUgcmFuZ2VzIHRoYXQgYXJlIHZpc3VhbGx5IG1hcmtlZCBhcyBibG9ja2VkICovXG4gIGJsb2NrZWRSYW5nZXM/OiBEYXRlUmFuZ2VbXTtcbiAgbWluRGF0ZT86IERhdGU7XG4gIC8qKiBNYXhpbXVtIHNlbGVjdGFibGUgZGF0ZSAqL1xuICBtYXhEYXRlPzogRGF0ZTtcbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgY2FsZW5kYXIgd2VlayBpbiB0aGUgZmlyc3QgY29sdW1uICovXG4gIHNob3dDYWxlbmRhcldlZWs/OiBib29sZWFuO1xufTtcblxuY29uc3QgRGF0ZVBpY2tlckNvbnRleHQgPSBjcmVhdGVDb250ZXh0PFBhcnRpYWw8T21pdDxEYXRlUGlja2VyUHJvcHMsICd2YWx1ZScgfCAnb25DaGFuZ2UnPj4+KHt9KTtcblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVQaWNrZXJQcm92aWRlcih7XG4gIGNoaWxkcmVuLFxuICAuLi5wcm9wc1xufTogUGFydGlhbDxPbWl0PERhdGVQaWNrZXJQcm9wcywgJ3ZhbHVlJyB8ICdvbkNoYW5nZSc+PiAmIHsgY2hpbGRyZW4/OiBSZWFjdE5vZGUgfSkge1xuICBjb25zdCB2YWx1ZSA9IHVzZU1lbW8oKCkgPT4gcHJvcHMsIFtKU09OLnN0cmluZ2lmeShwcm9wcyldKTtcblxuICByZXR1cm4gPERhdGVQaWNrZXJDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt2YWx1ZX0+e2NoaWxkcmVufTwvRGF0ZVBpY2tlckNvbnRleHQuUHJvdmlkZXI+O1xufVxuXG5jb25zdCB3ZWVrRGF5cyA9IFswLCAxLCAyLCAzLCA0LCA1LCA2XSBhcyBjb25zdDtcblxuLyoqIFJvdW5kcyBhIGRhdGUgZG93biB0byB0aGUgc3RhcnQgb2YgdGhlIGRheS4gKi9cbmV4cG9ydCBjb25zdCBzdGFydE9mRGF5ID0gKGQ6IERhdGUpID0+IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgZC5nZXRNb250aCgpLCBkLmdldERhdGUoKSk7XG5cbi8qKiBSb3VuZHMgYSBkYXRlIHVwIHRvIHRoZSBlbmQgb2YgdGhlIGRheS4gKi9cbmV4cG9ydCBjb25zdCBlbmRPZkRheSA9IChkOiBEYXRlKSA9PlxuICBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIGQuZ2V0TW9udGgoKSwgZC5nZXREYXRlKCkgKyAxLCAwLCAwLCAwLCAtMSk7XG5cbmV4cG9ydCBjb25zdCBsYXN0RGF5cyA9IChkYXlzOiBudW1iZXIpOiBEYXRlUmFuZ2UgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBtaW4gPSBuZXcgRGF0ZShub3cpO1xuICBtaW4uc2V0RGF0ZShtaW4uZ2V0RGF0ZSgpIC0gZGF5cyArIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShub3cpLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHRvZGF5ID0gKCkgPT4gbGFzdERheXMoMSk7XG5cbmV4cG9ydCBjb25zdCB0aGlzV2VlayA9IChkZWx0YSA9IDAsIGZpcnN0RGF5T2ZXZWVrID0gMSk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG5cbiAgbGV0IGRpZmYgPSBtaW4uZ2V0RGF5KCkgLSBmaXJzdERheU9mV2VlaztcbiAgaWYgKGRpZmYgPCAwKSB7XG4gICAgZGlmZiArPSA3O1xuICB9XG4gIG1pbi5zZXREYXRlKG1pbi5nZXREYXRlKCkgLSBkaWZmICsgZGVsdGEgKiA3KTtcblxuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpICsgNik7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdGhpc01vbnRoID0gKGRlbHRhID0gMCk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG4gIG1pbi5zZXREYXRlKDEpO1xuICBtaW4uc2V0TW9udGgobWluLmdldE1vbnRoKCkgKyBkZWx0YSk7XG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXRNb250aChtYXguZ2V0TW9udGgoKSArIDEpO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpIC0gMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdGhpc1llYXIgPSAoZGVsdGEgPSAwKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcbiAgbWluLnNldERhdGUoMSk7XG4gIG1pbi5zZXRNb250aCgwKTtcbiAgbWluLnNldEZ1bGxZZWFyKG1pbi5nZXRGdWxsWWVhcigpICsgZGVsdGEpO1xuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0RnVsbFllYXIobWF4LmdldEZ1bGxZZWFyKCkgKyAxKTtcbiAgbWF4LnNldERhdGUobWF4LmdldERhdGUoKSAtIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShtYXgpLFxuICB9O1xufTtcblxuY29uc3QgTVNfUEVSX0RBWSA9IDEwMDAgKiA2MCAqIDYwICogMjQ7XG5leHBvcnQgY29uc3QgZ2V0Q2FsZW5kYXJXZWVrID0gKGRhdGU6IERhdGUpOiBudW1iZXIgPT4ge1xuICAvLyBJU08gODYwMTogV2VlayAxIGlzIHRoZSB3ZWVrIHdpdGggdGhlIGZpcnN0IFRodXJzZGF5IG9mIHRoZSB5ZWFyLlxuICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG5cbiAgY29uc3QgeSA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgY29uc3QgZmRveSA9IG5ldyBEYXRlKHksIDAsIDEpO1xuICBjb25zdCBkb3kgPSBNYXRoLmZsb29yKFxuICAgIChkYXRlLmdldFRpbWUoKSAtIGZkb3kuZ2V0VGltZSgpICsgKGRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSAtIGZkb3kuZ2V0VGltZXpvbmVPZmZzZXQoKSkpIC9cbiAgICAgIE1TX1BFUl9EQVksXG4gICk7XG4gIGNvbnN0IGRvdyA9IGZkb3kuZ2V0RGF5KCk7XG4gIGNvbnN0IHcgPSBNYXRoLmZsb29yKCgxMCArIGRveSAtIGRvdykgLyA3KTtcblxuICBpZiAodyA9PT0gMCkge1xuICAgIHJldHVybiBnZXRDYWxlbmRhcldlZWsobmV3IERhdGUoeSAtIDEsIDExLCAzMSkpO1xuICB9XG5cbiAgcmV0dXJuIHc7XG59O1xuXG5leHBvcnQgY29uc3QgY29tbW9uUXVpY2tPcHRpb25zID0ge1xuICB0b2RheTogeyBsYWJlbDogPFRleHQgaWQ9XCJ0b2RheVwiIC8+LCB2YWx1ZTogdG9kYXkgfSxcbiAgdGhpc1dlZWs6IHsgbGFiZWw6IDxUZXh0IGlkPVwidGhpc1dlZWtcIiAvPiwgdmFsdWU6IChwcm9wcykgPT4gdGhpc1dlZWsoMCwgcHJvcHMuZmlyc3REYXlPZldlZWspIH0sXG4gIHRoaXNNb250aDogeyBsYWJlbDogPFRleHQgaWQ9XCJ0aGlzTW9udGhcIiAvPiwgdmFsdWU6ICgpID0+IHRoaXNNb250aCgpIH0sXG4gIHRoaXNZZWFyOiB7IGxhYmVsOiA8VGV4dCBpZD1cInRoaXNZZWFyXCIgLz4sIHZhbHVlOiAoKSA9PiB0aGlzWWVhcigpIH0sXG4gIGxhc3RTZXZlbkRheXM6IHsgbGFiZWw6IDxUZXh0IGlkPVwibGFzdFNldmVuRGF5c1wiIC8+LCB2YWx1ZTogKCkgPT4gbGFzdERheXMoNykgfSxcbiAgbGFzdFRoaXJ0eURheXM6IHsgbGFiZWw6IDxUZXh0IGlkPVwibGFzdFRoaXJ0eURheXNcIiAvPiwgdmFsdWU6ICgpID0+IGxhc3REYXlzKDMwKSB9LFxufSBzYXRpc2ZpZXMgUmVjb3JkPFxuICBEYXRlUGlja2VyUXVpY2tPcHRpb24gJiBzdHJpbmcsXG4gIHsgbGFiZWw6IFJlYWN0Tm9kZTsgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCAoKHByb3BzOiBEYXRlUGlja2VyUHJvcHMpID0+IERhdGUgfCBEYXRlUmFuZ2UpIH1cbj47XG5cbi8qKiBSZXR1cm5zIHdoZXRoZXIgdHdvIGRhdGVzIGFuZC9vciBkYXRlIHJhbmdlcyBpbnRlcnNlY3QuIEludGVyc2VjdGlvbiBpcyBjb25zaWRlcmVkIHBlciBkYXkuICovXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUludGVyc2VjdChhOiBEYXRlIHwgbnVsbCB8IERhdGVSYW5nZSwgYjogRGF0ZSB8IG51bGwgfCBEYXRlUmFuZ2UpIHtcbiAgaWYgKGEgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgYSA9IHsgbWluOiBhLCBtYXg6IGEgfTtcbiAgfVxuICBpZiAoYiBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICBiID0geyBtaW46IGIsIG1heDogYiB9O1xuICB9XG5cbiAgaWYgKCFhPy5taW4gfHwgIWEubWF4IHx8ICFiPy5taW4gfHwgIWIubWF4KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuICEoZW5kT2ZEYXkoYS5tYXgpIDwgc3RhcnRPZkRheShiLm1pbikgfHwgc3RhcnRPZkRheShhLm1pbikgPiBlbmRPZkRheShiLm1heCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUNsYW1wKGRhdGU6IERhdGUsIG1pbj86IERhdGUsIG1heD86IERhdGUpIHtcbiAgaWYgKG1pbiAmJiBkYXRlIDwgbWluKSB7XG4gICAgcmV0dXJuIG1pbjtcbiAgfVxuXG4gIGlmIChtYXggJiYgZGF0ZSA+IG1heCkge1xuICAgIHJldHVybiBtYXg7XG4gIH1cblxuICByZXR1cm4gZGF0ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVQaWNrZXIocHJvcHM6IERhdGVQaWNrZXJQcm9wcykge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChEYXRlUGlja2VyQ29udGV4dCk7XG5cbiAgY29uc3Qge1xuICAgIHZhbHVlLFxuICAgIHJhbmdlU2VsZWN0LFxuICAgIGxvY2FsZSxcbiAgICBmaXJzdERheU9mV2VlayA9IDEsXG4gICAgZGVmYXVsdERhdGVJblZpZXcsXG4gICAgcXVpY2tPcHRpb25zID0gWyd0b2RheScsICd0aGlzV2VlayddLFxuICAgIG1pbkRhdGUsXG4gICAgbWF4RGF0ZSxcbiAgICBzaG93Q2FsZW5kYXJXZWVrLFxuICAgIGJsb2NrZWRSYW5nZXMgPSBbXSxcbiAgfSA9IGRlZmF1bHRzPERhdGVQaWNrZXJQcm9wcz4ocHJvcHMsIGNvbnRleHQpO1xuXG4gIGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCkge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIHZhbHVlID0gZGF0ZUNsYW1wKHZhbHVlLCBtaW5EYXRlLCBtYXhEYXRlKTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICB2YWx1ZSA9IHtcbiAgICAgICAgbWluOiBkYXRlQ2xhbXAodmFsdWUubWluLCBtaW5EYXRlLCBtYXhEYXRlKSxcbiAgICAgICAgbWF4OiBkYXRlQ2xhbXAodmFsdWUubWF4LCBtaW5EYXRlLCBtYXhEYXRlKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcHJvcHMub25DaGFuZ2UodmFsdWUpO1xuICB9XG5cbiAgY29uc3QgQnV0dG9uID0gdXNlVGhlbWUoKHQpID0+IHQuY29tcG9uZW50cy5CdXR0b24pO1xuICBjb25zdCBJY29uQnV0dG9uID0gdXNlVGhlbWUoKHQpID0+IHQuY29tcG9uZW50cy5JY29uQnV0dG9uKTtcbiAgY29uc3QgQ2hldnJvblJpZ2h0ID0gdXNlVGhlbWUoKHQpID0+IHQuaWNvbnMuQ2hldnJvblJpZ2h0KTtcbiAgY29uc3QgY3NzVmFyaWFibGVzID0gdXNlQ3NzVmFyaWFibGVzKCk7XG4gIGZ1bmN0aW9uIGdldERheUNzc1N0eWxlcyh7XG4gICAgZGlzYWJsZWQsXG4gICAgcHJldk1vbnRoLFxuICAgIG5leHRNb250aCxcbiAgICB0b2RheSxcbiAgICBibG9ja2VkLFxuICAgIHNlbGVjdGVkLFxuICAgIHByZVNlbGVjdGVkLFxuICB9OiB7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIHByZXZNb250aD86IGJvb2xlYW47XG4gICAgbmV4dE1vbnRoPzogYm9vbGVhbjtcbiAgICB0b2RheT86IGJvb2xlYW47XG4gICAgYmxvY2tlZD86IGJvb2xlYW47XG4gICAgc2VsZWN0ZWQ/OiBib29sZWFuO1xuICAgIHByZVNlbGVjdGVkPzogYm9vbGVhbjtcbiAgfSk6IEludGVycG9sYXRpb248VGhlbWU+IHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgIGN1cnNvcjogZGlzYWJsZWQgPyB1bmRlZmluZWQgOiAncG9pbnRlcicsXG4gICAgICAgIGZvbnQ6ICdpbmhlcml0JyxcbiAgICAgIH0sXG4gICAgICAocHJldk1vbnRoIHx8IG5leHRNb250aCkgJiYge1xuICAgICAgICBjb2xvcjogZ3JheSxcbiAgICAgIH0sXG4gICAgICB0b2RheSAmJiB7XG4gICAgICAgIG91dGxpbmU6ICcxcHggc29saWQgdmFyKC0tc2Vjb25kYXJ5TWFpbiknLFxuICAgICAgfSxcbiAgICAgIGJsb2NrZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tYmxvY2tlZE1haW4pJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1ibG9ja2VkQ29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgICAgc2VsZWN0ZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tcHJpbWFyeU1haW4pJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1wcmltYXJ5Q29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgICAgYmxvY2tlZCAmJlxuICAgICAgICBzZWxlY3RlZCAmJiB7XG4gICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgICAgJzo6YmVmb3JlJzoge1xuICAgICAgICAgICAgY29udGVudDogJ1wiXCInLFxuICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICByaWdodDogMCxcbiAgICAgICAgICAgIGJvdHRvbTogMCxcbiAgICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tYmxvY2tlZE1haW4pJyxcbiAgICAgICAgICAgIGNsaXBQYXRoOiAncG9seWdvbigwIDAsIDAgNTAlLCA1MCUgMCknLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBwcmVTZWxlY3RlZCAmJiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1wcmltYXJ5TGlnaHQpJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1wcmltYXJ5Q29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICBjb25zdCBtb3VudFRpbWUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKCksIFtdKTtcbiAgY29uc3QgW2RpcnR5LCBzZXREaXJ0eV0gPSB1c2VTdGF0ZTxQYXJ0aWFsPERhdGVSYW5nZT4+KCk7XG4gIGNvbnN0IFtob3ZlcmVkLCBzZXRIb3ZlcmVkXSA9IHVzZVN0YXRlPERhdGU+KCk7XG4gIGNvbnN0IFtkYXRlSW5WaWV3TG9jYWwsIHNldERhdGVJblZpZXdMb2NhbF0gPSB1c2VTdGF0ZTxEYXRlPihkZWZhdWx0RGF0ZUluVmlldyA/PyBtb3VudFRpbWUpO1xuICBjb25zdCBkYXRlSW5WaWV3ID0gcHJvcHMuZGF0ZUluVmlldyA/PyBkYXRlSW5WaWV3TG9jYWw7XG5cbiAgZnVuY3Rpb24gc2V0RGF0ZUluVmlldyhkYXRlOiBEYXRlKSB7XG4gICAgc2V0RGF0ZUluVmlld0xvY2FsKGRhdGUpO1xuICAgIHByb3BzLm9uRGF0ZUluVmlld0NoYW5nZT8uKGRhdGUpO1xuICB9XG5cbiAgY29uc3QgbWluID0gZGlydHkgPyBkaXJ0eS5taW4gOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlPy5taW47XG4gIGNvbnN0IG1heCA9IGRpcnR5ID8gZGlydHkubWF4IDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZT8ubWF4O1xuXG4gIGNvbnN0IHJlc29sdmVkUXVpY2tPcHRpb25zID0gWy4uLnF1aWNrT3B0aW9ucywgeyBsYWJlbDogPFRleHQgaWQ9XCJyZXNldFwiIC8+LCB2YWx1ZTogbnVsbCB9XS5tYXAoXG4gICAgKG9wdGlvbiwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChvcHRpb24gaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICByZXR1cm4gb3B0aW9uKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBsYWJlbCwgdmFsdWUgfSA9IHR5cGVvZiBvcHRpb24gPT09ICdzdHJpbmcnID8gY29tbW9uUXVpY2tPcHRpb25zW29wdGlvbl0gOiBvcHRpb247XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuXG4gICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICAgICAgICBvbkNoYW5nZSh2YWx1ZShwcm9wcykpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7bGFiZWx9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKTtcbiAgICB9LFxuICApO1xuXG4gIGNvbnN0IHsgY2FsZW5kYXJzLCBnZXRCYWNrUHJvcHMsIGdldEZvcndhcmRQcm9wcywgZ2V0RGF0ZVByb3BzIH0gPSB1c2VEYXl6ZWQoe1xuICAgIG9uRGF0ZVNlbGVjdGVkOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgZmlyc3REYXlPZldlZWssXG4gICAgc2hvd091dHNpZGVEYXlzOiB0cnVlLFxuICAgIGRhdGU6IGRhdGVJblZpZXcsXG4gICAgb25PZmZzZXRDaGFuZ2VkOiAob2Zmc2V0KSA9PlxuICAgICAgc2V0RGF0ZUluVmlldyhuZXcgRGF0ZShkYXRlSW5WaWV3LmdldEZ1bGxZZWFyKCksIGRhdGVJblZpZXcuZ2V0TW9udGgoKSArIG9mZnNldCkpLFxuICAgIG9mZnNldDogMCxcbiAgICBtaW5EYXRlLFxuICAgIG1heERhdGUsXG4gIH0pO1xuICBjb25zdCBub3cgPSB1c2VNZW1vKCgpID0+IHN0YXJ0T2ZEYXkobmV3IERhdGUoKSksIFtdKTtcblxuICBjb25zdCBmb3JtYXRXZWVrZGF5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyB3ZWVrZGF5OiAnc2hvcnQnIH0pO1xuICAgIHJldHVybiAod2Vla0RheTogbnVtYmVyKSA9PlxuICAgICAgZm9ybWF0KG5ldyBEYXRlKERhdGUuVVRDKDIwMjEsIDcsICgod2Vla0RheSArIGZpcnN0RGF5T2ZXZWVrKSAlIDcpICsgMSkpKTtcbiAgfSwgW2xvY2FsZSwgZmlyc3REYXlPZldlZWtdKTtcblxuICB1c2VFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHNldERhdGVJblZpZXcoXG4gICAgICAgIHZhbHVlID09PSBudWxsID8gZGVmYXVsdERhdGVJblZpZXcgPz8gbW91bnRUaW1lIDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZS5tYXgsXG4gICAgICApLFxuICAgIFt2YWx1ZSwgZGVmYXVsdERhdGVJblZpZXcsIG1vdW50VGltZV0sXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXJhbmdlU2VsZWN0KSB7XG4gICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuICAgIH1cbiAgfSwgW3JhbmdlU2VsZWN0XSk7XG5cbiAgZnVuY3Rpb24gc2V0KG1pbj86IERhdGUsIG1heD86IERhdGUsIGVkaXQ/OiAnbWluJyB8ICdtYXgnKSB7XG4gICAgaWYgKCFyYW5nZVNlbGVjdCkge1xuICAgICAgb25DaGFuZ2UobWluID8/IG51bGwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChtaW4gJiYgbWF4ICYmIG1pbiA+IG1heCkge1xuICAgICAgaWYgKGVkaXQgPT09ICdtaW4nKSB7XG4gICAgICAgIG1heCA9IG1pbjtcbiAgICAgIH0gZWxzZSBpZiAoZWRpdCA9PT0gJ21heCcpIHtcbiAgICAgICAgbWluID0gbWF4O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgW21pbiwgbWF4XSA9IFttYXgsIG1pbl07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFtaW4gPT09ICFtYXgpIHtcbiAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgICBvbkNoYW5nZShtaW4gJiYgbWF4ID8geyBtaW4sIG1heDogZW5kT2ZEYXkobWF4KSB9IDogbnVsbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldERpcnR5KHsgbWluLCBtYXggfSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZm9ybWF0TW9udGggPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IGZvcm1hdCB9ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IG1vbnRoOiAnbG9uZycgfSk7XG4gICAgcmV0dXJuIChtb250aDogbnVtYmVyKSA9PiBmb3JtYXQobmV3IERhdGUoMjAyMSwgbW9udGgpKTtcbiAgfSwgW2xvY2FsZV0pO1xuXG4gIGNvbnN0IGZvcm1hdFllYXIgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IGZvcm1hdCB9ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IHllYXI6ICdudW1lcmljJyB9KTtcbiAgICByZXR1cm4gKHllYXI6IG51bWJlcikgPT4gZm9ybWF0KG5ldyBEYXRlKHllYXIsIDAsIDEpKTtcbiAgfSwgW2xvY2FsZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjc3M9e2Nzc1ZhcmlhYmxlc30+XG4gICAgICA8ZGl2XG4gICAgICAgIGNzcz17e1xuICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICBhbGlnbkl0ZW1zOiAnYmFzZWxpbmUnLFxuICAgICAgICAgIGdhcDogJ3ZhcigtLXNwYWNpbmcpJyxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPERhdGVJbnB1dFxuICAgICAgICAgIHZhbHVlPXttaW4gPz8gbnVsbH1cbiAgICAgICAgICBvbkNoYW5nZT17KGRhdGUpID0+IHNldChkYXRlID8/IHVuZGVmaW5lZCwgbWF4LCAnbWluJyl9XG4gICAgICAgICAgbG9jYWxlPXtsb2NhbGV9XG4gICAgICAgIC8+XG5cbiAgICAgICAge3JhbmdlU2VsZWN0ICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgeycgLSAnfVxuICAgICAgICAgICAgPERhdGVJbnB1dFxuICAgICAgICAgICAgICB2YWx1ZT17bWF4ID8/IG51bGx9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZGF0ZSkgPT4gc2V0KG1pbiwgZGF0ZSA/PyB1bmRlZmluZWQsICdtYXgnKX1cbiAgICAgICAgICAgICAgbG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvPlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIHtjYWxlbmRhcnMubWFwKCh7IG1vbnRoLCB5ZWFyLCB3ZWVrcyB9KSA9PiAoXG4gICAgICAgIDxkaXYga2V5PXtgJHttb250aH0ke3llYXJ9YH0gY3NzPXt7IGRpc3BsYXk6ICdncmlkJyB9fT5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgbWFyZ2luOiAnY2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpIDAnLFxuICAgICAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgICAgIGdyaWRBdXRvRmxvdzogJ2NvbHVtbicsXG4gICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnc3BhY2UtYmV0d2VlbicsXG4gICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8SWNvbkJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgey4uLmdldEJhY2tQcm9wcyh7IGNhbGVuZGFycyB9KX0+XG4gICAgICAgICAgICAgIDxDaGV2cm9uUmlnaHQgY3NzPXt7IHRyYW5zZm9ybTogJ3JvdGF0ZTNkKDAsIDAsIDEsIDE4MGRlZyknIH19IC8+XG4gICAgICAgICAgICA8L0ljb25CdXR0b24+XG5cbiAgICAgICAgICAgIDxkaXYgY3NzPXt7IGRpc3BsYXk6ICdmbGV4JyB9fT5cbiAgICAgICAgICAgICAge2Zvcm1hdE1vbnRoKG1vbnRoKX0ge2Zvcm1hdFllYXIoeWVhcil9XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPEljb25CdXR0b24gdHlwZT1cImJ1dHRvblwiIHsuLi5nZXRGb3J3YXJkUHJvcHMoeyBjYWxlbmRhcnMgfSl9PlxuICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0IC8+XG4gICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAganVzdGlmeVNlbGY6ICdjZW50ZXInLFxuICAgICAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgICAgIGdyaWRUZW1wbGF0ZUNvbHVtbnM6ICdyZXBlYXQoOCwgbWF4LWNvbnRlbnQpJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3Nob3dDYWxlbmRhcldlZWsgPyAoXG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgICAgYm9yZGVyUmlnaHQ6IGAxcHggc29saWQgJHtncmF5fWAsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxUZXh0IGlkPVwiY2FsZW5kYXJXZWVrXCIgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8ZGl2IC8+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7d2Vla0RheXMubWFwKChfdiwgd2Vla0RheSkgPT4gKFxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAga2V5PXt3ZWVrRGF5fVxuICAgICAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICAgICAganVzdGlmeVNlbGY6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtmb3JtYXRXZWVrZGF5KHdlZWtEYXkpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkpfVxuXG4gICAgICAgICAgICB7d2Vla3MubWFwKCh3ZWVrLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrU3RhcnQgPSB3ZWVrWzBdIGFzIERhdGVPYmo7XG4gICAgICAgICAgICAgIGNvbnN0IHdlZWtFbmQgPSB3ZWVrWzZdIGFzIERhdGVPYmo7XG4gICAgICAgICAgICAgIGNvbnN0IHdlZWtEaXNhYmxlZCA9XG4gICAgICAgICAgICAgICAgIXJhbmdlU2VsZWN0IHx8XG4gICAgICAgICAgICAgICAgKG1pbkRhdGUgJiYgd2Vla0VuZC5kYXRlIDwgbWluRGF0ZSkgfHxcbiAgICAgICAgICAgICAgICAobWF4RGF0ZSAmJiB3ZWVrU3RhcnQuZGF0ZSA+IG1heERhdGUpO1xuXG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPEZyYWdtZW50IGtleT17aW5kZXh9PlxuICAgICAgICAgICAgICAgICAge3Nob3dDYWxlbmRhcldlZWsgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiB3ZWVrRGlzYWJsZWQgPyB1bmRlZmluZWQgOiAncG9pbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb250OiAnaW5oZXJpdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSaWdodDogYDFweCBzb2xpZCAke2dyYXl9YCxcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3ZWVrRGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtaW4gPSBtaW5EYXRlICYmIHdlZWtTdGFydC5kYXRlIDwgbWluRGF0ZSA/IG1pbkRhdGUgOiB3ZWVrU3RhcnQuZGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1heCA9IG1heERhdGUgJiYgd2Vla0VuZC5kYXRlID4gbWF4RGF0ZSA/IG1heERhdGUgOiB3ZWVrRW5kLmRhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXQobWluLCBtYXgpO1xuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7Z2V0Q2FsZW5kYXJXZWVrKCh3ZWVrWzBdIGFzIERhdGVPYmopLmRhdGUpfVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICAgIHt3ZWVrLm1hcCgoZGF0ZU9iamVjdCwgZGF5SW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFkYXRlT2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxkaXYga2V5PXtkYXlJbmRleH0gLz47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHByZXZNb250aCwgbmV4dE1vbnRoLCBkYXRlIH0gPSBkYXRlT2JqZWN0O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0b2RheSA9IHN0YXJ0T2ZEYXkoZGF0ZSkuZ2V0VGltZSgpID09PSBub3cuZ2V0VGltZSgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXNhYmxlZCA9IChtaW5EYXRlICYmIGRhdGUgPCBtaW5EYXRlKSB8fCAobWF4RGF0ZSAmJiBkYXRlID4gbWF4RGF0ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPVxuICAgICAgICAgICAgICAgICAgICAgIGRhdGUuZ2V0VGltZSgpID09PSBtaW4/LmdldFRpbWUoKSB8fFxuICAgICAgICAgICAgICAgICAgICAgIChtaW4gJiYgbWF4ICYmIGRhdGVJbnRlcnNlY3QoZGF0ZSwgeyBtaW4sIG1heCB9KSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZVNlbGVjdGVkID1cbiAgICAgICAgICAgICAgICAgICAgICAhc2VsZWN0ZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAhZGlzYWJsZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAoZGF0ZS5nZXRUaW1lKCkgPT09IGhvdmVyZWQ/LmdldFRpbWUoKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKG1pbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAhbWF4ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZUludGVyc2VjdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbiA8PSBob3ZlcmVkID8geyBtaW4sIG1heDogaG92ZXJlZCB9IDogeyBtaW46IGhvdmVyZWQsIG1heDogbWluIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tlZCA9IGJsb2NrZWRSYW5nZXMuc29tZSgocmFuZ2UpID0+IGRhdGVJbnRlcnNlY3QoZGF0ZSwgcmFuZ2UpKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtgJHtpbmRleH0tJHtkYXlJbmRleH1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtnZXREYXlDc3NTdHlsZXMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldk1vbnRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0TW9udGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRvZGF5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja2VkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlU2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5nZXREYXRlUHJvcHMoeyBkYXRlT2JqOiBkYXRlT2JqZWN0IH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGlydHkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWluKSBzZXQobWluLCBkYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHNldChkYXRlLCBtYXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldChkYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlck92ZXI9eygpID0+IHNldEhvdmVyZWQoZGF0ZSl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJPdXQ9eygpID0+IHNldEhvdmVyZWQodW5kZWZpbmVkKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7ZGF0ZS5nZXREYXRlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKSl9XG5cbiAgICAgIDxkaXZcbiAgICAgICAgY3NzPXt7XG4gICAgICAgICAgbWFyZ2luVG9wOiAndmFyKC0tc3BhY2luZyknLFxuICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAge3Jlc29sdmVkUXVpY2tPcHRpb25zfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iXX0= */",
1003
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2RhdGVQaWNrZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWlnQmdCIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2RhdGVQaWNrZXIudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZU9iaiwgdXNlRGF5emVkIH0gZnJvbSAnZGF5emVkJztcbmltcG9ydCB7XG4gIEZyYWdtZW50LFxuICBSZWFjdE5vZGUsXG4gIGNyZWF0ZUNvbnRleHQsXG4gIHVzZUNvbnRleHQsXG4gIHVzZUVmZmVjdCxcbiAgdXNlTWVtbyxcbiAgdXNlU3RhdGUsXG59IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZVRoZW1lIH0gZnJvbSAnLi4vaG9va3MvdXNlVGhlbWUnO1xuaW1wb3J0IHsgZGVmYXVsdHMgfSBmcm9tICcuLi9taXNjL2RlZmF1bHRzJztcbmltcG9ydCB7IGdyYXkgfSBmcm9tICcuLi90aGVtZS9kZWZhdWx0VGhlbWUvZGVmYXVsdENsYXNzZXMnO1xuaW1wb3J0IHsgdXNlQ3NzVmFyaWFibGVzIH0gZnJvbSAnLi4vdGhlbWUvdXNlQ3NzVmFyaWFibGVzJztcbmltcG9ydCB7IERhdGVJbnB1dCB9IGZyb20gJy4vZGF0ZUlucHV0JztcbmltcG9ydCB7IFRleHQgfSBmcm9tICcuL3RleHQnO1xuaW1wb3J0IHsgSW50ZXJwb2xhdGlvbiwgVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5cbmV4cG9ydCB0eXBlIERhdGVSYW5nZSA9IHsgbWluOiBEYXRlOyBtYXg6IERhdGUgfTtcblxuZXhwb3J0IHR5cGUgRGF0ZVBpY2tlclF1aWNrT3B0aW9uID1cbiAgfCAndG9kYXknXG4gIHwgJ3RoaXNXZWVrJ1xuICB8ICd0aGlzTW9udGgnXG4gIHwgJ3RoaXNZZWFyJ1xuICB8ICdsYXN0U2V2ZW5EYXlzJ1xuICB8ICdsYXN0VGhpcnR5RGF5cydcbiAgfCB7IGxhYmVsOiBSZWFjdE5vZGU7IHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgKCgpID0+IERhdGUgfCBEYXRlUmFuZ2UpIH1cbiAgfCAoKG9uQ2hhbmdlOiAodmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSA9PiB2b2lkKSA9PiBSZWFjdE5vZGUpO1xuXG5leHBvcnQgdHlwZSBEYXRlUGlja2VyUHJvcHMgPSB7XG4gIC8qKiBDdXJyZW50bHkgc2VsZWN0ZWQgZGF5IG9yIHJhbmdlIG9mIGRheXMuICovXG4gIHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbDtcbiAgLyoqIENhbGxiYWNrIGZvciB3aGVuIHRoZSBkYXkgKHJhbmdlKSBjaGFuZ2VzLiAqL1xuICBvbkNoYW5nZTogKHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCkgPT4gdm9pZDtcbiAgLyoqIEN1cnJlbnRseSB2aXNpYmxlIGRhdGUuICovXG4gIGRhdGVJblZpZXc/OiBEYXRlO1xuICAvKiogQ2FsbGJhY2sgZm9yIHdoZW4gdGhlIGN1cnJlbnRseSB2aXNpYmxlIGRhdGUgY2hhbmdlcy4gKi9cbiAgb25EYXRlSW5WaWV3Q2hhbmdlPzogKHZhbHVlOiBEYXRlKSA9PiB2b2lkO1xuICAvKiogSWYgZW5hYmxlZCwgcmFuZ2VzIGNhbiBiZSBzZWxlY3RlZC4gKi9cbiAgcmFuZ2VTZWxlY3Q/OiBib29sZWFuO1xuICAvKiogV2hpY2ggbG9jYWxlIHRvIHVzZSB0byByZW5kZXIgdGhlIGNhbGVuZGFyLiAqL1xuICBsb2NhbGU/OiBzdHJpbmc7XG4gIC8qKiBXaGljaCBkYXkgb2YgdGhlIHdlZWsgc2hvdWxkIGJlIGluIHRoZSBmaXJzdCBjb2x1bW4uICgwPVN1bmRheSwgMT1Nb25kYXksIC4uLilcbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgZmlyc3REYXlPZldlZWs/OiAwIHwgMSB8IDIgfCAzIHwgNCB8IDUgfCA2O1xuICAvKiogV2hpY2ggbW9udGggdG8gc2hvdyBpbml0aWFsbHkgKi9cbiAgZGVmYXVsdERhdGVJblZpZXc/OiBEYXRlO1xuICAvKiogU2hvdyBidXR0b25zIHRvIHF1aWNrbHkgc2VsZWN0IHN1Z2dlc3RlZCBkYXRlcyBvciBkYXRlIHJhbmdlcyAqL1xuICBxdWlja09wdGlvbnM/OiBEYXRlUGlja2VyUXVpY2tPcHRpb25bXTtcbiAgLyoqIE1pbmltdW0gc2VsZWN0YWJsZSBkYXRlICovXG4gIC8qKiBEYXRlIHJhbmdlcyB0aGF0IGFyZSB2aXN1YWxseSBtYXJrZWQgYXMgYmxvY2tlZCAqL1xuICBibG9ja2VkUmFuZ2VzPzogRGF0ZVJhbmdlW107XG4gIG1pbkRhdGU/OiBEYXRlO1xuICAvKiogTWF4aW11bSBzZWxlY3RhYmxlIGRhdGUgKi9cbiAgbWF4RGF0ZT86IERhdGU7XG4gIC8qKiBXaGV0aGVyIHRvIHNob3cgdGhlIGNhbGVuZGFyIHdlZWsgaW4gdGhlIGZpcnN0IGNvbHVtbiAqL1xuICBzaG93Q2FsZW5kYXJXZWVrPzogYm9vbGVhbjtcbn07XG5cbmNvbnN0IERhdGVQaWNrZXJDb250ZXh0ID0gY3JlYXRlQ29udGV4dDxQYXJ0aWFsPE9taXQ8RGF0ZVBpY2tlclByb3BzLCAndmFsdWUnIHwgJ29uQ2hhbmdlJz4+Pih7fSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRlUGlja2VyUHJvdmlkZXIoe1xuICBjaGlsZHJlbixcbiAgLi4ucHJvcHNcbn06IFBhcnRpYWw8T21pdDxEYXRlUGlja2VyUHJvcHMsICd2YWx1ZScgfCAnb25DaGFuZ2UnPj4gJiB7IGNoaWxkcmVuPzogUmVhY3ROb2RlIH0pIHtcbiAgY29uc3QgdmFsdWUgPSB1c2VNZW1vKCgpID0+IHByb3BzLCBbSlNPTi5zdHJpbmdpZnkocHJvcHMpXSk7XG5cbiAgcmV0dXJuIDxEYXRlUGlja2VyQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17dmFsdWV9PntjaGlsZHJlbn08L0RhdGVQaWNrZXJDb250ZXh0LlByb3ZpZGVyPjtcbn1cblxuY29uc3Qgd2Vla0RheXMgPSBbMCwgMSwgMiwgMywgNCwgNSwgNl0gYXMgY29uc3Q7XG5cbi8qKiBSb3VuZHMgYSBkYXRlIGRvd24gdG8gdGhlIHN0YXJ0IG9mIHRoZSBkYXkuICovXG5leHBvcnQgY29uc3Qgc3RhcnRPZkRheSA9IChkOiBEYXRlKSA9PiBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIGQuZ2V0TW9udGgoKSwgZC5nZXREYXRlKCkpO1xuXG4vKiogUm91bmRzIGEgZGF0ZSB1cCB0byB0aGUgZW5kIG9mIHRoZSBkYXkuICovXG5leHBvcnQgY29uc3QgZW5kT2ZEYXkgPSAoZDogRGF0ZSkgPT5cbiAgbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCBkLmdldE1vbnRoKCksIGQuZ2V0RGF0ZSgpICsgMSwgMCwgMCwgMCwgLTEpO1xuXG5leHBvcnQgY29uc3QgbGFzdERheXMgPSAoZGF5czogbnVtYmVyKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcbiAgbWluLnNldERhdGUobWluLmdldERhdGUoKSAtIGRheXMgKyAxKTtcblxuICByZXR1cm4ge1xuICAgIG1pbjogc3RhcnRPZkRheShtaW4pLFxuICAgIG1heDogZW5kT2ZEYXkobm93KSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCB0b2RheSA9ICgpID0+IGxhc3REYXlzKDEpO1xuXG5leHBvcnQgY29uc3QgdGhpc1dlZWsgPSAoZGVsdGEgPSAwLCBmaXJzdERheU9mV2VlayA9IDEpOiBEYXRlUmFuZ2UgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBtaW4gPSBuZXcgRGF0ZShub3cpO1xuXG4gIGxldCBkaWZmID0gbWluLmdldERheSgpIC0gZmlyc3REYXlPZldlZWs7XG4gIGlmIChkaWZmIDwgMCkge1xuICAgIGRpZmYgKz0gNztcbiAgfVxuICBtaW4uc2V0RGF0ZShtaW4uZ2V0RGF0ZSgpIC0gZGlmZiArIGRlbHRhICogNyk7XG5cbiAgY29uc3QgbWF4ID0gbmV3IERhdGUobWluKTtcbiAgbWF4LnNldERhdGUobWF4LmdldERhdGUoKSArIDYpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShtYXgpLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHRoaXNNb250aCA9IChkZWx0YSA9IDApOiBEYXRlUmFuZ2UgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBtaW4gPSBuZXcgRGF0ZShub3cpO1xuICBtaW4uc2V0RGF0ZSgxKTtcbiAgbWluLnNldE1vbnRoKG1pbi5nZXRNb250aCgpICsgZGVsdGEpO1xuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0TW9udGgobWF4LmdldE1vbnRoKCkgKyAxKTtcbiAgbWF4LnNldERhdGUobWF4LmdldERhdGUoKSAtIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShtYXgpLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHRoaXNZZWFyID0gKGRlbHRhID0gMCk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG4gIG1pbi5zZXREYXRlKDEpO1xuICBtaW4uc2V0TW9udGgoMCk7XG4gIG1pbi5zZXRGdWxsWWVhcihtaW4uZ2V0RnVsbFllYXIoKSArIGRlbHRhKTtcbiAgY29uc3QgbWF4ID0gbmV3IERhdGUobWluKTtcbiAgbWF4LnNldEZ1bGxZZWFyKG1heC5nZXRGdWxsWWVhcigpICsgMSk7XG4gIG1heC5zZXREYXRlKG1heC5nZXREYXRlKCkgLSAxKTtcblxuICByZXR1cm4ge1xuICAgIG1pbjogc3RhcnRPZkRheShtaW4pLFxuICAgIG1heDogZW5kT2ZEYXkobWF4KSxcbiAgfTtcbn07XG5cbmNvbnN0IE1TX1BFUl9EQVkgPSAxMDAwICogNjAgKiA2MCAqIDI0O1xuZXhwb3J0IGNvbnN0IGdldENhbGVuZGFyV2VlayA9IChkYXRlOiBEYXRlKTogbnVtYmVyID0+IHtcbiAgLy8gSVNPIDg2MDE6IFdlZWsgMSBpcyB0aGUgd2VlayB3aXRoIHRoZSBmaXJzdCBUaHVyc2RheSBvZiB0aGUgeWVhci5cbiAgLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZVxuXG4gIGNvbnN0IGVuZE9mV2VlayA9IG5ldyBEYXRlKFxuICAgIGRhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICBkYXRlLmdldE1vbnRoKCksXG4gICAgZGF0ZS5nZXREYXRlKCkgKyAoNyAtIChkYXRlLmdldERheSgpIHx8IDcpKSxcbiAgKTtcblxuICBjb25zdCB5ZWFyID0gZW5kT2ZXZWVrLmdldEZ1bGxZZWFyKCk7XG4gIGNvbnN0IGZpcnN0RGF5T2ZZZWFyID0gbmV3IERhdGUoeWVhciwgMCwgMSk7XG4gIGNvbnN0IGRheU9mWWVhciA9XG4gICAgTWF0aC5mbG9vcihcbiAgICAgIChlbmRPZldlZWsuZ2V0VGltZSgpIC1cbiAgICAgICAgZmlyc3REYXlPZlllYXIuZ2V0VGltZSgpICtcbiAgICAgICAgKGVuZE9mV2Vlay5nZXRUaW1lem9uZU9mZnNldCgpIC0gZmlyc3REYXlPZlllYXIuZ2V0VGltZXpvbmVPZmZzZXQoKSkpIC9cbiAgICAgICAgTVNfUEVSX0RBWSxcbiAgICApICsgMTtcbiAgY29uc3Qgd2Vla09mWWVhciA9IE1hdGguZmxvb3IoKDMgKyBkYXlPZlllYXIpIC8gNyk7XG5cbiAgaWYgKHdlZWtPZlllYXIgPT09IDApIHtcbiAgICByZXR1cm4gKFxuICAgICAgZ2V0Q2FsZW5kYXJXZWVrKFxuICAgICAgICBuZXcgRGF0ZShlbmRPZldlZWsuZ2V0RnVsbFllYXIoKSwgZW5kT2ZXZWVrLmdldE1vbnRoKCksIGVuZE9mV2Vlay5nZXREYXRlKCkgLSA3KSxcbiAgICAgICkgKyAxXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiB3ZWVrT2ZZZWFyO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbW1vblF1aWNrT3B0aW9ucyA9IHtcbiAgdG9kYXk6IHsgbGFiZWw6IDxUZXh0IGlkPVwidG9kYXlcIiAvPiwgdmFsdWU6IHRvZGF5IH0sXG4gIHRoaXNXZWVrOiB7IGxhYmVsOiA8VGV4dCBpZD1cInRoaXNXZWVrXCIgLz4sIHZhbHVlOiAocHJvcHMpID0+IHRoaXNXZWVrKDAsIHByb3BzLmZpcnN0RGF5T2ZXZWVrKSB9LFxuICB0aGlzTW9udGg6IHsgbGFiZWw6IDxUZXh0IGlkPVwidGhpc01vbnRoXCIgLz4sIHZhbHVlOiAoKSA9PiB0aGlzTW9udGgoKSB9LFxuICB0aGlzWWVhcjogeyBsYWJlbDogPFRleHQgaWQ9XCJ0aGlzWWVhclwiIC8+LCB2YWx1ZTogKCkgPT4gdGhpc1llYXIoKSB9LFxuICBsYXN0U2V2ZW5EYXlzOiB7IGxhYmVsOiA8VGV4dCBpZD1cImxhc3RTZXZlbkRheXNcIiAvPiwgdmFsdWU6ICgpID0+IGxhc3REYXlzKDcpIH0sXG4gIGxhc3RUaGlydHlEYXlzOiB7IGxhYmVsOiA8VGV4dCBpZD1cImxhc3RUaGlydHlEYXlzXCIgLz4sIHZhbHVlOiAoKSA9PiBsYXN0RGF5cygzMCkgfSxcbn0gc2F0aXNmaWVzIFJlY29yZDxcbiAgRGF0ZVBpY2tlclF1aWNrT3B0aW9uICYgc3RyaW5nLFxuICB7IGxhYmVsOiBSZWFjdE5vZGU7IHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgKChwcm9wczogRGF0ZVBpY2tlclByb3BzKSA9PiBEYXRlIHwgRGF0ZVJhbmdlKSB9XG4+O1xuXG4vKiogUmV0dXJucyB3aGV0aGVyIHR3byBkYXRlcyBhbmQvb3IgZGF0ZSByYW5nZXMgaW50ZXJzZWN0LiBJbnRlcnNlY3Rpb24gaXMgY29uc2lkZXJlZCBwZXIgZGF5LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRhdGVJbnRlcnNlY3QoXG4gIGE6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsIHwgdW5kZWZpbmVkLFxuICBiOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCB8IHVuZGVmaW5lZCxcbikge1xuICBpZiAoYSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICBhID0geyBtaW46IGEsIG1heDogYSB9O1xuICB9XG4gIGlmIChiIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIGIgPSB7IG1pbjogYiwgbWF4OiBiIH07XG4gIH1cblxuICBpZiAoIWE/Lm1pbiB8fCAhYS5tYXggfHwgIWI/Lm1pbiB8fCAhYi5tYXgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gIShlbmRPZkRheShhLm1heCkgPCBzdGFydE9mRGF5KGIubWluKSB8fCBzdGFydE9mRGF5KGEubWluKSA+IGVuZE9mRGF5KGIubWF4KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRlQ2xhbXAoZGF0ZTogRGF0ZSwgbWluPzogRGF0ZSwgbWF4PzogRGF0ZSkge1xuICBpZiAobWluICYmIGRhdGUgPCBtaW4pIHtcbiAgICByZXR1cm4gbWluO1xuICB9XG5cbiAgaWYgKG1heCAmJiBkYXRlID4gbWF4KSB7XG4gICAgcmV0dXJuIG1heDtcbiAgfVxuXG4gIHJldHVybiBkYXRlO1xufVxuXG5mdW5jdGlvbiBnZXRWYWx1ZUZvckNvbXBhcmlzb24odmFsdWU/OiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCkge1xuICBpZiAoIXZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICByZXR1cm4gdmFsdWUuZ2V0VGltZSgpO1xuICB9XG4gIHJldHVybiBgJHt2YWx1ZS5taW4/LmdldFRpbWUoKX0tJHt2YWx1ZS5tYXg/LmdldFRpbWUoKX1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRGF0ZVBpY2tlcihwcm9wczogRGF0ZVBpY2tlclByb3BzKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KERhdGVQaWNrZXJDb250ZXh0KTtcblxuICBjb25zdCB7XG4gICAgdmFsdWUsXG4gICAgcmFuZ2VTZWxlY3QsXG4gICAgbG9jYWxlLFxuICAgIGZpcnN0RGF5T2ZXZWVrID0gMSxcbiAgICBkZWZhdWx0RGF0ZUluVmlldyxcbiAgICBxdWlja09wdGlvbnMgPSBbJ3RvZGF5JywgJ3RoaXNXZWVrJ10sXG4gICAgbWluRGF0ZSxcbiAgICBtYXhEYXRlLFxuICAgIHNob3dDYWxlbmRhcldlZWssXG4gICAgYmxvY2tlZFJhbmdlcyA9IFtdLFxuICB9ID0gZGVmYXVsdHM8RGF0ZVBpY2tlclByb3BzPihwcm9wcywgY29udGV4dCk7XG5cbiAgZnVuY3Rpb24gb25DaGFuZ2UodmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgdmFsdWUgPSBkYXRlQ2xhbXAodmFsdWUsIG1pbkRhdGUsIG1heERhdGUpO1xuICAgIH0gZWxzZSBpZiAodmFsdWUpIHtcbiAgICAgIHZhbHVlID0ge1xuICAgICAgICBtaW46IGRhdGVDbGFtcCh2YWx1ZS5taW4sIG1pbkRhdGUsIG1heERhdGUpLFxuICAgICAgICBtYXg6IGRhdGVDbGFtcCh2YWx1ZS5tYXgsIG1pbkRhdGUsIG1heERhdGUpLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBwcm9wcy5vbkNoYW5nZSh2YWx1ZSk7XG4gIH1cblxuICBjb25zdCBCdXR0b24gPSB1c2VUaGVtZSgodCkgPT4gdC5jb21wb25lbnRzLkJ1dHRvbik7XG4gIGNvbnN0IEljb25CdXR0b24gPSB1c2VUaGVtZSgodCkgPT4gdC5jb21wb25lbnRzLkljb25CdXR0b24pO1xuICBjb25zdCBDaGV2cm9uUmlnaHQgPSB1c2VUaGVtZSgodCkgPT4gdC5pY29ucy5DaGV2cm9uUmlnaHQpO1xuICBjb25zdCBjc3NWYXJpYWJsZXMgPSB1c2VDc3NWYXJpYWJsZXMoKTtcbiAgZnVuY3Rpb24gZ2V0RGF5Q3NzU3R5bGVzKHtcbiAgICBkaXNhYmxlZCxcbiAgICBwcmV2TW9udGgsXG4gICAgbmV4dE1vbnRoLFxuICAgIHRvZGF5LFxuICAgIGJsb2NrZWQsXG4gICAgc2VsZWN0ZWQsXG4gICAgcHJlU2VsZWN0ZWQsXG4gIH06IHtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgcHJldk1vbnRoPzogYm9vbGVhbjtcbiAgICBuZXh0TW9udGg/OiBib29sZWFuO1xuICAgIHRvZGF5PzogYm9vbGVhbjtcbiAgICBibG9ja2VkPzogYm9vbGVhbjtcbiAgICBzZWxlY3RlZD86IGJvb2xlYW47XG4gICAgcHJlU2VsZWN0ZWQ/OiBib29sZWFuO1xuICB9KTogSW50ZXJwb2xhdGlvbjxUaGVtZT4ge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICBib3JkZXI6ICdub25lJyxcbiAgICAgICAgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgY3Vyc29yOiBkaXNhYmxlZCA/IHVuZGVmaW5lZCA6ICdwb2ludGVyJyxcbiAgICAgICAgZm9udDogJ2luaGVyaXQnLFxuICAgICAgfSxcbiAgICAgIChwcmV2TW9udGggfHwgbmV4dE1vbnRoKSAmJiB7XG4gICAgICAgIGNvbG9yOiBncmF5LFxuICAgICAgfSxcbiAgICAgIHRvZGF5ICYmIHtcbiAgICAgICAgb3V0bGluZTogJzFweCBzb2xpZCB2YXIoLS1zZWNvbmRhcnlNYWluKScsXG4gICAgICB9LFxuICAgICAgYmxvY2tlZCAmJiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1ibG9ja2VkTWFpbiknLFxuICAgICAgICBjb2xvcjogJ3ZhcigtLWJsb2NrZWRDb250cmFzdFRleHQpJyxcbiAgICAgIH0sXG4gICAgICBzZWxlY3RlZCAmJiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1wcmltYXJ5TWFpbiknLFxuICAgICAgICBjb2xvcjogJ3ZhcigtLXByaW1hcnlDb250cmFzdFRleHQpJyxcbiAgICAgIH0sXG4gICAgICBibG9ja2VkICYmXG4gICAgICAgIHNlbGVjdGVkICYmIHtcbiAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICAgICAnOjpiZWZvcmUnOiB7XG4gICAgICAgICAgICBjb250ZW50OiAnXCJcIicsXG4gICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgIHJpZ2h0OiAwLFxuICAgICAgICAgICAgYm90dG9tOiAwLFxuICAgICAgICAgICAgbGVmdDogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1ibG9ja2VkTWFpbiknLFxuICAgICAgICAgICAgY2xpcFBhdGg6ICdwb2x5Z29uKDAgMCwgMCA1MCUsIDUwJSAwKScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIHByZVNlbGVjdGVkICYmIHtcbiAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLXByaW1hcnlMaWdodCknLFxuICAgICAgICBjb2xvcjogJ3ZhcigtLXByaW1hcnlDb250cmFzdFRleHQpJyxcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxuXG4gIGNvbnN0IG1vdW50VGltZSA9IHVzZU1lbW8oKCkgPT4gbmV3IERhdGUoKSwgW10pO1xuICBjb25zdCBbZGlydHksIHNldERpcnR5XSA9IHVzZVN0YXRlPFBhcnRpYWw8RGF0ZVJhbmdlPj4oKTtcbiAgY29uc3QgW2hvdmVyZWQsIHNldEhvdmVyZWRdID0gdXNlU3RhdGU8RGF0ZVJhbmdlPigpO1xuICBjb25zdCBbZGF0ZUluVmlld0xvY2FsLCBzZXREYXRlSW5WaWV3TG9jYWxdID0gdXNlU3RhdGU8RGF0ZT4oZGVmYXVsdERhdGVJblZpZXcgPz8gbW91bnRUaW1lKTtcbiAgY29uc3QgZGF0ZUluVmlldyA9IHByb3BzLmRhdGVJblZpZXcgPz8gZGF0ZUluVmlld0xvY2FsO1xuXG4gIGZ1bmN0aW9uIHNldERhdGVJblZpZXcoZGF0ZTogRGF0ZSkge1xuICAgIHNldERhdGVJblZpZXdMb2NhbChkYXRlKTtcbiAgICBwcm9wcy5vbkRhdGVJblZpZXdDaGFuZ2U/LihkYXRlKTtcbiAgfVxuXG4gIGNvbnN0IG1pbiA9IGRpcnR5ID8gZGlydHkubWluIDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZT8ubWluO1xuICBjb25zdCBtYXggPSBkaXJ0eSA/IGRpcnR5Lm1heCA6IHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IHZhbHVlIDogdmFsdWU/Lm1heDtcblxuICBjb25zdCByZXNvbHZlZFF1aWNrT3B0aW9ucyA9IFsuLi5xdWlja09wdGlvbnMsIHsgbGFiZWw6IDxUZXh0IGlkPVwicmVzZXRcIiAvPiwgdmFsdWU6IG51bGwgfV0ubWFwKFxuICAgIChvcHRpb24sIGluZGV4KSA9PiB7XG4gICAgICBpZiAob3B0aW9uIGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbigodmFsdWUpID0+IHtcbiAgICAgICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuICAgICAgICAgIG9uQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgbGFiZWwsIHZhbHVlIH0gPSB0eXBlb2Ygb3B0aW9uID09PSAnc3RyaW5nJyA/IGNvbW1vblF1aWNrT3B0aW9uc1tvcHRpb25dIDogb3B0aW9uO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgc2V0RGlydHkodW5kZWZpbmVkKTtcblxuICAgICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcbiAgICAgICAgICAgICAgb25DaGFuZ2UodmFsdWUocHJvcHMpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG9uQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAge2xhYmVsfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICk7XG4gICAgfSxcbiAgKTtcblxuICBjb25zdCB7IGNhbGVuZGFycywgZ2V0QmFja1Byb3BzLCBnZXRGb3J3YXJkUHJvcHMsIGdldERhdGVQcm9wcyB9ID0gdXNlRGF5emVkKHtcbiAgICBvbkRhdGVTZWxlY3RlZDogKCkgPT4gdW5kZWZpbmVkLFxuICAgIGZpcnN0RGF5T2ZXZWVrLFxuICAgIHNob3dPdXRzaWRlRGF5czogdHJ1ZSxcbiAgICBkYXRlOiBkYXRlSW5WaWV3LFxuICAgIG9uT2Zmc2V0Q2hhbmdlZDogKG9mZnNldCkgPT5cbiAgICAgIHNldERhdGVJblZpZXcobmV3IERhdGUoZGF0ZUluVmlldy5nZXRGdWxsWWVhcigpLCBkYXRlSW5WaWV3LmdldE1vbnRoKCkgKyBvZmZzZXQpKSxcbiAgICBvZmZzZXQ6IDAsXG4gICAgbWluRGF0ZSxcbiAgICBtYXhEYXRlLFxuICB9KTtcbiAgY29uc3Qgbm93ID0gdXNlTWVtbygoKSA9PiBzdGFydE9mRGF5KG5ldyBEYXRlKCkpLCBbXSk7XG5cbiAgY29uc3QgZm9ybWF0V2Vla2RheSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHsgZm9ybWF0IH0gPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUsIHsgd2Vla2RheTogJ3Nob3J0JyB9KTtcbiAgICByZXR1cm4gKHdlZWtEYXk6IG51bWJlcikgPT5cbiAgICAgIGZvcm1hdChuZXcgRGF0ZShEYXRlLlVUQygyMDIxLCA3LCAoKHdlZWtEYXkgKyBmaXJzdERheU9mV2VlaykgJSA3KSArIDEpKSk7XG4gIH0sIFtsb2NhbGUsIGZpcnN0RGF5T2ZXZWVrXSk7XG5cbiAgdXNlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICBzZXREYXRlSW5WaWV3KFxuICAgICAgICB2YWx1ZSA9PT0gbnVsbCA/IGRlZmF1bHREYXRlSW5WaWV3ID8/IG1vdW50VGltZSA6IHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IHZhbHVlIDogdmFsdWUubWF4LFxuICAgICAgKSxcbiAgICBbZ2V0VmFsdWVGb3JDb21wYXJpc29uKHZhbHVlKSwgZ2V0VmFsdWVGb3JDb21wYXJpc29uKGRlZmF1bHREYXRlSW5WaWV3KSwgbW91bnRUaW1lXSxcbiAgKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghcmFuZ2VTZWxlY3QpIHtcbiAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgfVxuICB9LCBbcmFuZ2VTZWxlY3RdKTtcblxuICBmdW5jdGlvbiBzZXQobWluPzogRGF0ZSwgbWF4PzogRGF0ZSwgZWRpdD86ICdtaW4nIHwgJ21heCcpIHtcbiAgICBpZiAoIXJhbmdlU2VsZWN0KSB7XG4gICAgICBvbkNoYW5nZShtaW4gPz8gbnVsbCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKG1pbiAmJiBtYXggJiYgbWluID4gbWF4KSB7XG4gICAgICBpZiAoZWRpdCA9PT0gJ21pbicpIHtcbiAgICAgICAgbWF4ID0gbWluO1xuICAgICAgfSBlbHNlIGlmIChlZGl0ID09PSAnbWF4Jykge1xuICAgICAgICBtaW4gPSBtYXg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbbWluLCBtYXhdID0gW21heCwgbWluXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIW1pbiA9PT0gIW1heCkge1xuICAgICAgc2V0RGlydHkodW5kZWZpbmVkKTtcbiAgICAgIG9uQ2hhbmdlKG1pbiAmJiBtYXggPyB7IG1pbiwgbWF4OiBlbmRPZkRheShtYXgpIH0gOiBudWxsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0RGlydHkoeyBtaW4sIG1heCB9KTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBmb3JtYXRNb250aCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHsgZm9ybWF0IH0gPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUsIHsgbW9udGg6ICdsb25nJyB9KTtcbiAgICByZXR1cm4gKG1vbnRoOiBudW1iZXIpID0+IGZvcm1hdChuZXcgRGF0ZSgyMDIxLCBtb250aCkpO1xuICB9LCBbbG9jYWxlXSk7XG5cbiAgY29uc3QgZm9ybWF0WWVhciA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHsgZm9ybWF0IH0gPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUsIHsgeWVhcjogJ251bWVyaWMnIH0pO1xuICAgIHJldHVybiAoeWVhcjogbnVtYmVyKSA9PiBmb3JtYXQobmV3IERhdGUoeWVhciwgMCwgMSkpO1xuICB9LCBbbG9jYWxlXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNzcz17Y3NzVmFyaWFibGVzfT5cbiAgICAgIDxkaXZcbiAgICAgICAgY3NzPXt7XG4gICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgIGdyaWRBdXRvRmxvdzogJ2NvbHVtbicsXG4gICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgIGFsaWduSXRlbXM6ICdiYXNlbGluZScsXG4gICAgICAgICAgZ2FwOiAndmFyKC0tc3BhY2luZyknLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8RGF0ZUlucHV0XG4gICAgICAgICAgdmFsdWU9e21pbiA/PyBudWxsfVxuICAgICAgICAgIG9uQ2hhbmdlPXsoZGF0ZSkgPT4gc2V0KGRhdGUgPz8gdW5kZWZpbmVkLCBtYXgsICdtaW4nKX1cbiAgICAgICAgICBsb2NhbGU9e2xvY2FsZX1cbiAgICAgICAgLz5cblxuICAgICAgICB7cmFuZ2VTZWxlY3QgJiYgKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICB7JyAtICd9XG4gICAgICAgICAgICA8RGF0ZUlucHV0XG4gICAgICAgICAgICAgIHZhbHVlPXttYXggPz8gbnVsbH1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhkYXRlKSA9PiBzZXQobWluLCBkYXRlID8/IHVuZGVmaW5lZCwgJ21heCcpfVxuICAgICAgICAgICAgICBsb2NhbGU9e2xvY2FsZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cblxuICAgICAge2NhbGVuZGFycy5tYXAoKHsgbW9udGgsIHllYXIsIHdlZWtzIH0pID0+IChcbiAgICAgICAgPGRpdiBrZXk9e2Ake21vbnRofSR7eWVhcn1gfSBjc3M9e3sgZGlzcGxheTogJ2dyaWQnIH19PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICBtYXJnaW46ICdjYWxjKHZhcigtLXNwYWNpbmcpICogNCkgMCcsXG4gICAgICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICAgICAgZ3JpZEF1dG9GbG93OiAnY29sdW1uJyxcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJyxcbiAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxJY29uQnV0dG9uIHR5cGU9XCJidXR0b25cIiB7Li4uZ2V0QmFja1Byb3BzKHsgY2FsZW5kYXJzIH0pfT5cbiAgICAgICAgICAgICAgPENoZXZyb25SaWdodCBjc3M9e3sgdHJhbnNmb3JtOiAncm90YXRlM2QoMCwgMCwgMSwgMTgwZGVnKScgfX0gLz5cbiAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cblxuICAgICAgICAgICAgPGRpdiBjc3M9e3sgZGlzcGxheTogJ2ZsZXgnIH19PlxuICAgICAgICAgICAgICB7Zm9ybWF0TW9udGgobW9udGgpfSB7Zm9ybWF0WWVhcih5ZWFyKX1cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8SWNvbkJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgey4uLmdldEZvcndhcmRQcm9wcyh7IGNhbGVuZGFycyB9KX0+XG4gICAgICAgICAgICAgIDxDaGV2cm9uUmlnaHQgLz5cbiAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICBqdXN0aWZ5U2VsZjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICAgICAgZ3JpZFRlbXBsYXRlQ29sdW1uczogJ3JlcGVhdCg4LCBtYXgtY29udGVudCknLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7c2hvd0NhbGVuZGFyV2VlayA/IChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICAgICAganVzdGlmeVNlbGY6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgICAgICAgICAgICBib3JkZXJSaWdodDogYDFweCBzb2xpZCAke2dyYXl9YCxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFRleHQgaWQ9XCJjYWxlbmRhcldlZWtcIiAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHt3ZWVrRGF5cy5tYXAoKF92LCB3ZWVrRGF5KSA9PiAoXG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBrZXk9e3dlZWtEYXl9XG4gICAgICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgICAgICBqdXN0aWZ5U2VsZjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge2Zvcm1hdFdlZWtkYXkod2Vla0RheSl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKSl9XG5cbiAgICAgICAgICAgIHt3ZWVrcy5tYXAoKHdlZWssIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHdlZWtTdGFydCA9IHdlZWtbMF0gYXMgRGF0ZU9iajtcbiAgICAgICAgICAgICAgY29uc3Qgd2Vla0VuZCA9IHdlZWtbNl0gYXMgRGF0ZU9iajtcbiAgICAgICAgICAgICAgY29uc3Qgd2Vla0Rpc2FibGVkID1cbiAgICAgICAgICAgICAgICAhcmFuZ2VTZWxlY3QgfHxcbiAgICAgICAgICAgICAgICAobWluRGF0ZSAmJiB3ZWVrRW5kLmRhdGUgPCBtaW5EYXRlKSB8fFxuICAgICAgICAgICAgICAgIChtYXhEYXRlICYmIHdlZWtTdGFydC5kYXRlID4gbWF4RGF0ZSk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8RnJhZ21lbnQga2V5PXtpbmRleH0+XG4gICAgICAgICAgICAgICAgICB7c2hvd0NhbGVuZGFyV2VlayA/IChcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI6ICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3I6IHdlZWtEaXNhYmxlZCA/IHVuZGVmaW5lZCA6ICdwb2ludGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQ6ICdpbmhlcml0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJpZ2h0OiBgMXB4IHNvbGlkICR7Z3JheX1gLFxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdlZWtEaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1pbiA9IG1pbkRhdGUgJiYgd2Vla1N0YXJ0LmRhdGUgPCBtaW5EYXRlID8gbWluRGF0ZSA6IHdlZWtTdGFydC5kYXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF4ID0gbWF4RGF0ZSAmJiB3ZWVrRW5kLmRhdGUgPiBtYXhEYXRlID8gbWF4RGF0ZSA6IHdlZWtFbmQuZGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldChtaW4sIG1heCk7XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJPdmVyPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgIXdlZWtEaXNhYmxlZCAmJiBzZXRIb3ZlcmVkKHsgbWluOiB3ZWVrU3RhcnQuZGF0ZSwgbWF4OiB3ZWVrRW5kLmRhdGUgfSlcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyT3V0PXsoKSA9PiAhd2Vla0Rpc2FibGVkICYmIHNldEhvdmVyZWQodW5kZWZpbmVkKX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtnZXRDYWxlbmRhcldlZWsod2Vla0VuZC5kYXRlKX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IC8+XG4gICAgICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgICAgICB7d2Vlay5tYXAoKGRhdGVPYmplY3QsIGRheUluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZGF0ZU9iamVjdCkge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8ZGl2IGtleT17ZGF5SW5kZXh9IC8+O1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBwcmV2TW9udGgsIG5leHRNb250aCwgZGF0ZSB9ID0gZGF0ZU9iamVjdDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdG9kYXkgPSBzdGFydE9mRGF5KGRhdGUpLmdldFRpbWUoKSA9PT0gbm93LmdldFRpbWUoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlzYWJsZWQgPSAobWluRGF0ZSAmJiBkYXRlIDwgbWluRGF0ZSkgfHwgKG1heERhdGUgJiYgZGF0ZSA+IG1heERhdGUpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkID1cbiAgICAgICAgICAgICAgICAgICAgICBkYXRlLmdldFRpbWUoKSA9PT0gbWluPy5nZXRUaW1lKCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAobWluICYmIG1heCAmJiBkYXRlSW50ZXJzZWN0KGRhdGUsIHsgbWluLCBtYXggfSkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmVTZWxlY3RlZCA9XG4gICAgICAgICAgICAgICAgICAgICAgIXNlbGVjdGVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgIWRpc2FibGVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgKGRhdGVJbnRlcnNlY3QoZGF0ZSwgaG92ZXJlZCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIChtaW4gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIW1heCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICBob3ZlcmVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVJbnRlcnNlY3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW4gPD0gaG92ZXJlZC5taW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBtaW4sIG1heDogaG92ZXJlZC5taW4gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7IG1pbjogaG92ZXJlZC5tYXgsIG1heDogbWluIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tlZCA9IGJsb2NrZWRSYW5nZXMuc29tZSgocmFuZ2UpID0+IGRhdGVJbnRlcnNlY3QoZGF0ZSwgcmFuZ2UpKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtgJHtpbmRleH0tJHtkYXlJbmRleH1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtnZXREYXlDc3NTdHlsZXMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldk1vbnRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0TW9udGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRvZGF5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja2VkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlU2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5nZXREYXRlUHJvcHMoeyBkYXRlT2JqOiBkYXRlT2JqZWN0IH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGlydHkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWluKSBzZXQobWluLCBkYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHNldChkYXRlLCBtYXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldChkYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlck92ZXI9eygpID0+IHNldEhvdmVyZWQoeyBtaW46IGRhdGUsIG1heDogZGF0ZSB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlck91dD17KCkgPT4gc2V0SG92ZXJlZCh1bmRlZmluZWQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtkYXRlLmdldERhdGUoKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICApKX1cblxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e3tcbiAgICAgICAgICBtYXJnaW5Ub3A6ICd2YXIoLS1zcGFjaW5nKScsXG4gICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgIGdyaWRBdXRvRmxvdzogJ2NvbHVtbicsXG4gICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICB7cmVzb2x2ZWRRdWlja09wdGlvbnN9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiJdfQ== */",
994
1004
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__$d
995
1005
  };
996
1006
  var _ref8 = process.env.NODE_ENV === "production" ? {
@@ -999,7 +1009,7 @@ var _ref8 = process.env.NODE_ENV === "production" ? {
999
1009
  } : {
1000
1010
  name: "1lzq5di-DatePicker",
1001
1011
  styles: "margin-top:var(--spacing);display:grid;grid-auto-flow:column;justify-content:center;label:DatePicker;",
1002
- map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2RhdGVQaWNrZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXFsQlEiLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvc2NodW1tYXItdGFibGUvc2NodW1tYXItdGFibGUvc3JjL2NvbXBvbmVudHMvZGF0ZVBpY2tlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlT2JqLCB1c2VEYXl6ZWQgfSBmcm9tICdkYXl6ZWQnO1xuaW1wb3J0IHtcbiAgRnJhZ21lbnQsXG4gIFJlYWN0Tm9kZSxcbiAgY3JlYXRlQ29udGV4dCxcbiAgdXNlQ29udGV4dCxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICcuLi9ob29rcy91c2VUaGVtZSc7XG5pbXBvcnQgeyBkZWZhdWx0cyB9IGZyb20gJy4uL21pc2MvZGVmYXVsdHMnO1xuaW1wb3J0IHsgZ3JheSB9IGZyb20gJy4uL3RoZW1lL2RlZmF1bHRUaGVtZS9kZWZhdWx0Q2xhc3Nlcyc7XG5pbXBvcnQgeyB1c2VDc3NWYXJpYWJsZXMgfSBmcm9tICcuLi90aGVtZS91c2VDc3NWYXJpYWJsZXMnO1xuaW1wb3J0IHsgRGF0ZUlucHV0IH0gZnJvbSAnLi9kYXRlSW5wdXQnO1xuaW1wb3J0IHsgVGV4dCB9IGZyb20gJy4vdGV4dCc7XG5pbXBvcnQgeyBJbnRlcnBvbGF0aW9uLCBUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuZXhwb3J0IHR5cGUgRGF0ZVJhbmdlID0geyBtaW46IERhdGU7IG1heDogRGF0ZSB9O1xuXG5leHBvcnQgdHlwZSBEYXRlUGlja2VyUXVpY2tPcHRpb24gPVxuICB8ICd0b2RheSdcbiAgfCAndGhpc1dlZWsnXG4gIHwgJ3RoaXNNb250aCdcbiAgfCAndGhpc1llYXInXG4gIHwgJ2xhc3RTZXZlbkRheXMnXG4gIHwgJ2xhc3RUaGlydHlEYXlzJ1xuICB8IHsgbGFiZWw6IFJlYWN0Tm9kZTsgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCAoKCkgPT4gRGF0ZSB8IERhdGVSYW5nZSkgfVxuICB8ICgob25DaGFuZ2U6ICh2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpID0+IHZvaWQpID0+IFJlYWN0Tm9kZSk7XG5cbmV4cG9ydCB0eXBlIERhdGVQaWNrZXJQcm9wcyA9IHtcbiAgLyoqIEN1cnJlbnRseSBzZWxlY3RlZCBkYXkgb3IgcmFuZ2Ugb2YgZGF5cy4gKi9cbiAgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsO1xuICAvKiogQ2FsbGJhY2sgZm9yIHdoZW4gdGhlIGRheSAocmFuZ2UpIGNoYW5nZXMuICovXG4gIG9uQ2hhbmdlOiAodmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSA9PiB2b2lkO1xuICAvKiogQ3VycmVudGx5IHZpc2libGUgZGF0ZS4gKi9cbiAgZGF0ZUluVmlldz86IERhdGU7XG4gIC8qKiBDYWxsYmFjayBmb3Igd2hlbiB0aGUgY3VycmVudGx5IHZpc2libGUgZGF0ZSBjaGFuZ2VzLiAqL1xuICBvbkRhdGVJblZpZXdDaGFuZ2U/OiAodmFsdWU6IERhdGUpID0+IHZvaWQ7XG4gIC8qKiBJZiBlbmFibGVkLCByYW5nZXMgY2FuIGJlIHNlbGVjdGVkLiAqL1xuICByYW5nZVNlbGVjdD86IGJvb2xlYW47XG4gIC8qKiBXaGljaCBsb2NhbGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgY2FsZW5kYXIuICovXG4gIGxvY2FsZT86IHN0cmluZztcbiAgLyoqIFdoaWNoIGRheSBvZiB0aGUgd2VlayBzaG91bGQgYmUgaW4gdGhlIGZpcnN0IGNvbHVtbi4gKDA9U3VuZGF5LCAxPU1vbmRheSwgLi4uKVxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICBmaXJzdERheU9mV2Vlaz86IDAgfCAxIHwgMiB8IDMgfCA0IHwgNSB8IDY7XG4gIC8qKiBXaGljaCBtb250aCB0byBzaG93IGluaXRpYWxseSAqL1xuICBkZWZhdWx0RGF0ZUluVmlldz86IERhdGU7XG4gIC8qKiBTaG93IGJ1dHRvbnMgdG8gcXVpY2tseSBzZWxlY3Qgc3VnZ2VzdGVkIGRhdGVzIG9yIGRhdGUgcmFuZ2VzICovXG4gIHF1aWNrT3B0aW9ucz86IERhdGVQaWNrZXJRdWlja09wdGlvbltdO1xuICAvKiogTWluaW11bSBzZWxlY3RhYmxlIGRhdGUgKi9cbiAgLyoqIERhdGUgcmFuZ2VzIHRoYXQgYXJlIHZpc3VhbGx5IG1hcmtlZCBhcyBibG9ja2VkICovXG4gIGJsb2NrZWRSYW5nZXM/OiBEYXRlUmFuZ2VbXTtcbiAgbWluRGF0ZT86IERhdGU7XG4gIC8qKiBNYXhpbXVtIHNlbGVjdGFibGUgZGF0ZSAqL1xuICBtYXhEYXRlPzogRGF0ZTtcbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgY2FsZW5kYXIgd2VlayBpbiB0aGUgZmlyc3QgY29sdW1uICovXG4gIHNob3dDYWxlbmRhcldlZWs/OiBib29sZWFuO1xufTtcblxuY29uc3QgRGF0ZVBpY2tlckNvbnRleHQgPSBjcmVhdGVDb250ZXh0PFBhcnRpYWw8T21pdDxEYXRlUGlja2VyUHJvcHMsICd2YWx1ZScgfCAnb25DaGFuZ2UnPj4+KHt9KTtcblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVQaWNrZXJQcm92aWRlcih7XG4gIGNoaWxkcmVuLFxuICAuLi5wcm9wc1xufTogUGFydGlhbDxPbWl0PERhdGVQaWNrZXJQcm9wcywgJ3ZhbHVlJyB8ICdvbkNoYW5nZSc+PiAmIHsgY2hpbGRyZW4/OiBSZWFjdE5vZGUgfSkge1xuICBjb25zdCB2YWx1ZSA9IHVzZU1lbW8oKCkgPT4gcHJvcHMsIFtKU09OLnN0cmluZ2lmeShwcm9wcyldKTtcblxuICByZXR1cm4gPERhdGVQaWNrZXJDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt2YWx1ZX0+e2NoaWxkcmVufTwvRGF0ZVBpY2tlckNvbnRleHQuUHJvdmlkZXI+O1xufVxuXG5jb25zdCB3ZWVrRGF5cyA9IFswLCAxLCAyLCAzLCA0LCA1LCA2XSBhcyBjb25zdDtcblxuLyoqIFJvdW5kcyBhIGRhdGUgZG93biB0byB0aGUgc3RhcnQgb2YgdGhlIGRheS4gKi9cbmV4cG9ydCBjb25zdCBzdGFydE9mRGF5ID0gKGQ6IERhdGUpID0+IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgZC5nZXRNb250aCgpLCBkLmdldERhdGUoKSk7XG5cbi8qKiBSb3VuZHMgYSBkYXRlIHVwIHRvIHRoZSBlbmQgb2YgdGhlIGRheS4gKi9cbmV4cG9ydCBjb25zdCBlbmRPZkRheSA9IChkOiBEYXRlKSA9PlxuICBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIGQuZ2V0TW9udGgoKSwgZC5nZXREYXRlKCkgKyAxLCAwLCAwLCAwLCAtMSk7XG5cbmV4cG9ydCBjb25zdCBsYXN0RGF5cyA9IChkYXlzOiBudW1iZXIpOiBEYXRlUmFuZ2UgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBtaW4gPSBuZXcgRGF0ZShub3cpO1xuICBtaW4uc2V0RGF0ZShtaW4uZ2V0RGF0ZSgpIC0gZGF5cyArIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShub3cpLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHRvZGF5ID0gKCkgPT4gbGFzdERheXMoMSk7XG5cbmV4cG9ydCBjb25zdCB0aGlzV2VlayA9IChkZWx0YSA9IDAsIGZpcnN0RGF5T2ZXZWVrID0gMSk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG5cbiAgbGV0IGRpZmYgPSBtaW4uZ2V0RGF5KCkgLSBmaXJzdERheU9mV2VlaztcbiAgaWYgKGRpZmYgPCAwKSB7XG4gICAgZGlmZiArPSA3O1xuICB9XG4gIG1pbi5zZXREYXRlKG1pbi5nZXREYXRlKCkgLSBkaWZmICsgZGVsdGEgKiA3KTtcblxuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpICsgNik7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdGhpc01vbnRoID0gKGRlbHRhID0gMCk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG4gIG1pbi5zZXREYXRlKDEpO1xuICBtaW4uc2V0TW9udGgobWluLmdldE1vbnRoKCkgKyBkZWx0YSk7XG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXRNb250aChtYXguZ2V0TW9udGgoKSArIDEpO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpIC0gMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdGhpc1llYXIgPSAoZGVsdGEgPSAwKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcbiAgbWluLnNldERhdGUoMSk7XG4gIG1pbi5zZXRNb250aCgwKTtcbiAgbWluLnNldEZ1bGxZZWFyKG1pbi5nZXRGdWxsWWVhcigpICsgZGVsdGEpO1xuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0RnVsbFllYXIobWF4LmdldEZ1bGxZZWFyKCkgKyAxKTtcbiAgbWF4LnNldERhdGUobWF4LmdldERhdGUoKSAtIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShtYXgpLFxuICB9O1xufTtcblxuY29uc3QgTVNfUEVSX0RBWSA9IDEwMDAgKiA2MCAqIDYwICogMjQ7XG5leHBvcnQgY29uc3QgZ2V0Q2FsZW5kYXJXZWVrID0gKGRhdGU6IERhdGUpOiBudW1iZXIgPT4ge1xuICAvLyBJU08gODYwMTogV2VlayAxIGlzIHRoZSB3ZWVrIHdpdGggdGhlIGZpcnN0IFRodXJzZGF5IG9mIHRoZSB5ZWFyLlxuICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG5cbiAgY29uc3QgeSA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgY29uc3QgZmRveSA9IG5ldyBEYXRlKHksIDAsIDEpO1xuICBjb25zdCBkb3kgPSBNYXRoLmZsb29yKFxuICAgIChkYXRlLmdldFRpbWUoKSAtIGZkb3kuZ2V0VGltZSgpICsgKGRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSAtIGZkb3kuZ2V0VGltZXpvbmVPZmZzZXQoKSkpIC9cbiAgICAgIE1TX1BFUl9EQVksXG4gICk7XG4gIGNvbnN0IGRvdyA9IGZkb3kuZ2V0RGF5KCk7XG4gIGNvbnN0IHcgPSBNYXRoLmZsb29yKCgxMCArIGRveSAtIGRvdykgLyA3KTtcblxuICBpZiAodyA9PT0gMCkge1xuICAgIHJldHVybiBnZXRDYWxlbmRhcldlZWsobmV3IERhdGUoeSAtIDEsIDExLCAzMSkpO1xuICB9XG5cbiAgcmV0dXJuIHc7XG59O1xuXG5leHBvcnQgY29uc3QgY29tbW9uUXVpY2tPcHRpb25zID0ge1xuICB0b2RheTogeyBsYWJlbDogPFRleHQgaWQ9XCJ0b2RheVwiIC8+LCB2YWx1ZTogdG9kYXkgfSxcbiAgdGhpc1dlZWs6IHsgbGFiZWw6IDxUZXh0IGlkPVwidGhpc1dlZWtcIiAvPiwgdmFsdWU6IChwcm9wcykgPT4gdGhpc1dlZWsoMCwgcHJvcHMuZmlyc3REYXlPZldlZWspIH0sXG4gIHRoaXNNb250aDogeyBsYWJlbDogPFRleHQgaWQ9XCJ0aGlzTW9udGhcIiAvPiwgdmFsdWU6ICgpID0+IHRoaXNNb250aCgpIH0sXG4gIHRoaXNZZWFyOiB7IGxhYmVsOiA8VGV4dCBpZD1cInRoaXNZZWFyXCIgLz4sIHZhbHVlOiAoKSA9PiB0aGlzWWVhcigpIH0sXG4gIGxhc3RTZXZlbkRheXM6IHsgbGFiZWw6IDxUZXh0IGlkPVwibGFzdFNldmVuRGF5c1wiIC8+LCB2YWx1ZTogKCkgPT4gbGFzdERheXMoNykgfSxcbiAgbGFzdFRoaXJ0eURheXM6IHsgbGFiZWw6IDxUZXh0IGlkPVwibGFzdFRoaXJ0eURheXNcIiAvPiwgdmFsdWU6ICgpID0+IGxhc3REYXlzKDMwKSB9LFxufSBzYXRpc2ZpZXMgUmVjb3JkPFxuICBEYXRlUGlja2VyUXVpY2tPcHRpb24gJiBzdHJpbmcsXG4gIHsgbGFiZWw6IFJlYWN0Tm9kZTsgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCAoKHByb3BzOiBEYXRlUGlja2VyUHJvcHMpID0+IERhdGUgfCBEYXRlUmFuZ2UpIH1cbj47XG5cbi8qKiBSZXR1cm5zIHdoZXRoZXIgdHdvIGRhdGVzIGFuZC9vciBkYXRlIHJhbmdlcyBpbnRlcnNlY3QuIEludGVyc2VjdGlvbiBpcyBjb25zaWRlcmVkIHBlciBkYXkuICovXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUludGVyc2VjdChhOiBEYXRlIHwgbnVsbCB8IERhdGVSYW5nZSwgYjogRGF0ZSB8IG51bGwgfCBEYXRlUmFuZ2UpIHtcbiAgaWYgKGEgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgYSA9IHsgbWluOiBhLCBtYXg6IGEgfTtcbiAgfVxuICBpZiAoYiBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICBiID0geyBtaW46IGIsIG1heDogYiB9O1xuICB9XG5cbiAgaWYgKCFhPy5taW4gfHwgIWEubWF4IHx8ICFiPy5taW4gfHwgIWIubWF4KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuICEoZW5kT2ZEYXkoYS5tYXgpIDwgc3RhcnRPZkRheShiLm1pbikgfHwgc3RhcnRPZkRheShhLm1pbikgPiBlbmRPZkRheShiLm1heCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUNsYW1wKGRhdGU6IERhdGUsIG1pbj86IERhdGUsIG1heD86IERhdGUpIHtcbiAgaWYgKG1pbiAmJiBkYXRlIDwgbWluKSB7XG4gICAgcmV0dXJuIG1pbjtcbiAgfVxuXG4gIGlmIChtYXggJiYgZGF0ZSA+IG1heCkge1xuICAgIHJldHVybiBtYXg7XG4gIH1cblxuICByZXR1cm4gZGF0ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVQaWNrZXIocHJvcHM6IERhdGVQaWNrZXJQcm9wcykge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChEYXRlUGlja2VyQ29udGV4dCk7XG5cbiAgY29uc3Qge1xuICAgIHZhbHVlLFxuICAgIHJhbmdlU2VsZWN0LFxuICAgIGxvY2FsZSxcbiAgICBmaXJzdERheU9mV2VlayA9IDEsXG4gICAgZGVmYXVsdERhdGVJblZpZXcsXG4gICAgcXVpY2tPcHRpb25zID0gWyd0b2RheScsICd0aGlzV2VlayddLFxuICAgIG1pbkRhdGUsXG4gICAgbWF4RGF0ZSxcbiAgICBzaG93Q2FsZW5kYXJXZWVrLFxuICAgIGJsb2NrZWRSYW5nZXMgPSBbXSxcbiAgfSA9IGRlZmF1bHRzPERhdGVQaWNrZXJQcm9wcz4ocHJvcHMsIGNvbnRleHQpO1xuXG4gIGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCkge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIHZhbHVlID0gZGF0ZUNsYW1wKHZhbHVlLCBtaW5EYXRlLCBtYXhEYXRlKTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICB2YWx1ZSA9IHtcbiAgICAgICAgbWluOiBkYXRlQ2xhbXAodmFsdWUubWluLCBtaW5EYXRlLCBtYXhEYXRlKSxcbiAgICAgICAgbWF4OiBkYXRlQ2xhbXAodmFsdWUubWF4LCBtaW5EYXRlLCBtYXhEYXRlKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcHJvcHMub25DaGFuZ2UodmFsdWUpO1xuICB9XG5cbiAgY29uc3QgQnV0dG9uID0gdXNlVGhlbWUoKHQpID0+IHQuY29tcG9uZW50cy5CdXR0b24pO1xuICBjb25zdCBJY29uQnV0dG9uID0gdXNlVGhlbWUoKHQpID0+IHQuY29tcG9uZW50cy5JY29uQnV0dG9uKTtcbiAgY29uc3QgQ2hldnJvblJpZ2h0ID0gdXNlVGhlbWUoKHQpID0+IHQuaWNvbnMuQ2hldnJvblJpZ2h0KTtcbiAgY29uc3QgY3NzVmFyaWFibGVzID0gdXNlQ3NzVmFyaWFibGVzKCk7XG4gIGZ1bmN0aW9uIGdldERheUNzc1N0eWxlcyh7XG4gICAgZGlzYWJsZWQsXG4gICAgcHJldk1vbnRoLFxuICAgIG5leHRNb250aCxcbiAgICB0b2RheSxcbiAgICBibG9ja2VkLFxuICAgIHNlbGVjdGVkLFxuICAgIHByZVNlbGVjdGVkLFxuICB9OiB7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIHByZXZNb250aD86IGJvb2xlYW47XG4gICAgbmV4dE1vbnRoPzogYm9vbGVhbjtcbiAgICB0b2RheT86IGJvb2xlYW47XG4gICAgYmxvY2tlZD86IGJvb2xlYW47XG4gICAgc2VsZWN0ZWQ/OiBib29sZWFuO1xuICAgIHByZVNlbGVjdGVkPzogYm9vbGVhbjtcbiAgfSk6IEludGVycG9sYXRpb248VGhlbWU+IHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgIGN1cnNvcjogZGlzYWJsZWQgPyB1bmRlZmluZWQgOiAncG9pbnRlcicsXG4gICAgICAgIGZvbnQ6ICdpbmhlcml0JyxcbiAgICAgIH0sXG4gICAgICAocHJldk1vbnRoIHx8IG5leHRNb250aCkgJiYge1xuICAgICAgICBjb2xvcjogZ3JheSxcbiAgICAgIH0sXG4gICAgICB0b2RheSAmJiB7XG4gICAgICAgIG91dGxpbmU6ICcxcHggc29saWQgdmFyKC0tc2Vjb25kYXJ5TWFpbiknLFxuICAgICAgfSxcbiAgICAgIGJsb2NrZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tYmxvY2tlZE1haW4pJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1ibG9ja2VkQ29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgICAgc2VsZWN0ZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tcHJpbWFyeU1haW4pJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1wcmltYXJ5Q29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgICAgYmxvY2tlZCAmJlxuICAgICAgICBzZWxlY3RlZCAmJiB7XG4gICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgICAgJzo6YmVmb3JlJzoge1xuICAgICAgICAgICAgY29udGVudDogJ1wiXCInLFxuICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICByaWdodDogMCxcbiAgICAgICAgICAgIGJvdHRvbTogMCxcbiAgICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tYmxvY2tlZE1haW4pJyxcbiAgICAgICAgICAgIGNsaXBQYXRoOiAncG9seWdvbigwIDAsIDAgNTAlLCA1MCUgMCknLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBwcmVTZWxlY3RlZCAmJiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1wcmltYXJ5TGlnaHQpJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1wcmltYXJ5Q29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICBjb25zdCBtb3VudFRpbWUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKCksIFtdKTtcbiAgY29uc3QgW2RpcnR5LCBzZXREaXJ0eV0gPSB1c2VTdGF0ZTxQYXJ0aWFsPERhdGVSYW5nZT4+KCk7XG4gIGNvbnN0IFtob3ZlcmVkLCBzZXRIb3ZlcmVkXSA9IHVzZVN0YXRlPERhdGU+KCk7XG4gIGNvbnN0IFtkYXRlSW5WaWV3TG9jYWwsIHNldERhdGVJblZpZXdMb2NhbF0gPSB1c2VTdGF0ZTxEYXRlPihkZWZhdWx0RGF0ZUluVmlldyA/PyBtb3VudFRpbWUpO1xuICBjb25zdCBkYXRlSW5WaWV3ID0gcHJvcHMuZGF0ZUluVmlldyA/PyBkYXRlSW5WaWV3TG9jYWw7XG5cbiAgZnVuY3Rpb24gc2V0RGF0ZUluVmlldyhkYXRlOiBEYXRlKSB7XG4gICAgc2V0RGF0ZUluVmlld0xvY2FsKGRhdGUpO1xuICAgIHByb3BzLm9uRGF0ZUluVmlld0NoYW5nZT8uKGRhdGUpO1xuICB9XG5cbiAgY29uc3QgbWluID0gZGlydHkgPyBkaXJ0eS5taW4gOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlPy5taW47XG4gIGNvbnN0IG1heCA9IGRpcnR5ID8gZGlydHkubWF4IDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZT8ubWF4O1xuXG4gIGNvbnN0IHJlc29sdmVkUXVpY2tPcHRpb25zID0gWy4uLnF1aWNrT3B0aW9ucywgeyBsYWJlbDogPFRleHQgaWQ9XCJyZXNldFwiIC8+LCB2YWx1ZTogbnVsbCB9XS5tYXAoXG4gICAgKG9wdGlvbiwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChvcHRpb24gaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICByZXR1cm4gb3B0aW9uKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBsYWJlbCwgdmFsdWUgfSA9IHR5cGVvZiBvcHRpb24gPT09ICdzdHJpbmcnID8gY29tbW9uUXVpY2tPcHRpb25zW29wdGlvbl0gOiBvcHRpb247XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuXG4gICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICAgICAgICBvbkNoYW5nZSh2YWx1ZShwcm9wcykpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7bGFiZWx9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKTtcbiAgICB9LFxuICApO1xuXG4gIGNvbnN0IHsgY2FsZW5kYXJzLCBnZXRCYWNrUHJvcHMsIGdldEZvcndhcmRQcm9wcywgZ2V0RGF0ZVByb3BzIH0gPSB1c2VEYXl6ZWQoe1xuICAgIG9uRGF0ZVNlbGVjdGVkOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgZmlyc3REYXlPZldlZWssXG4gICAgc2hvd091dHNpZGVEYXlzOiB0cnVlLFxuICAgIGRhdGU6IGRhdGVJblZpZXcsXG4gICAgb25PZmZzZXRDaGFuZ2VkOiAob2Zmc2V0KSA9PlxuICAgICAgc2V0RGF0ZUluVmlldyhuZXcgRGF0ZShkYXRlSW5WaWV3LmdldEZ1bGxZZWFyKCksIGRhdGVJblZpZXcuZ2V0TW9udGgoKSArIG9mZnNldCkpLFxuICAgIG9mZnNldDogMCxcbiAgICBtaW5EYXRlLFxuICAgIG1heERhdGUsXG4gIH0pO1xuICBjb25zdCBub3cgPSB1c2VNZW1vKCgpID0+IHN0YXJ0T2ZEYXkobmV3IERhdGUoKSksIFtdKTtcblxuICBjb25zdCBmb3JtYXRXZWVrZGF5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyB3ZWVrZGF5OiAnc2hvcnQnIH0pO1xuICAgIHJldHVybiAod2Vla0RheTogbnVtYmVyKSA9PlxuICAgICAgZm9ybWF0KG5ldyBEYXRlKERhdGUuVVRDKDIwMjEsIDcsICgod2Vla0RheSArIGZpcnN0RGF5T2ZXZWVrKSAlIDcpICsgMSkpKTtcbiAgfSwgW2xvY2FsZSwgZmlyc3REYXlPZldlZWtdKTtcblxuICB1c2VFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHNldERhdGVJblZpZXcoXG4gICAgICAgIHZhbHVlID09PSBudWxsID8gZGVmYXVsdERhdGVJblZpZXcgPz8gbW91bnRUaW1lIDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZS5tYXgsXG4gICAgICApLFxuICAgIFt2YWx1ZSwgZGVmYXVsdERhdGVJblZpZXcsIG1vdW50VGltZV0sXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXJhbmdlU2VsZWN0KSB7XG4gICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuICAgIH1cbiAgfSwgW3JhbmdlU2VsZWN0XSk7XG5cbiAgZnVuY3Rpb24gc2V0KG1pbj86IERhdGUsIG1heD86IERhdGUsIGVkaXQ/OiAnbWluJyB8ICdtYXgnKSB7XG4gICAgaWYgKCFyYW5nZVNlbGVjdCkge1xuICAgICAgb25DaGFuZ2UobWluID8/IG51bGwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChtaW4gJiYgbWF4ICYmIG1pbiA+IG1heCkge1xuICAgICAgaWYgKGVkaXQgPT09ICdtaW4nKSB7XG4gICAgICAgIG1heCA9IG1pbjtcbiAgICAgIH0gZWxzZSBpZiAoZWRpdCA9PT0gJ21heCcpIHtcbiAgICAgICAgbWluID0gbWF4O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgW21pbiwgbWF4XSA9IFttYXgsIG1pbl07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFtaW4gPT09ICFtYXgpIHtcbiAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgICBvbkNoYW5nZShtaW4gJiYgbWF4ID8geyBtaW4sIG1heDogZW5kT2ZEYXkobWF4KSB9IDogbnVsbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldERpcnR5KHsgbWluLCBtYXggfSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZm9ybWF0TW9udGggPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IGZvcm1hdCB9ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IG1vbnRoOiAnbG9uZycgfSk7XG4gICAgcmV0dXJuIChtb250aDogbnVtYmVyKSA9PiBmb3JtYXQobmV3IERhdGUoMjAyMSwgbW9udGgpKTtcbiAgfSwgW2xvY2FsZV0pO1xuXG4gIGNvbnN0IGZvcm1hdFllYXIgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IGZvcm1hdCB9ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IHllYXI6ICdudW1lcmljJyB9KTtcbiAgICByZXR1cm4gKHllYXI6IG51bWJlcikgPT4gZm9ybWF0KG5ldyBEYXRlKHllYXIsIDAsIDEpKTtcbiAgfSwgW2xvY2FsZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjc3M9e2Nzc1ZhcmlhYmxlc30+XG4gICAgICA8ZGl2XG4gICAgICAgIGNzcz17e1xuICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICBhbGlnbkl0ZW1zOiAnYmFzZWxpbmUnLFxuICAgICAgICAgIGdhcDogJ3ZhcigtLXNwYWNpbmcpJyxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPERhdGVJbnB1dFxuICAgICAgICAgIHZhbHVlPXttaW4gPz8gbnVsbH1cbiAgICAgICAgICBvbkNoYW5nZT17KGRhdGUpID0+IHNldChkYXRlID8/IHVuZGVmaW5lZCwgbWF4LCAnbWluJyl9XG4gICAgICAgICAgbG9jYWxlPXtsb2NhbGV9XG4gICAgICAgIC8+XG5cbiAgICAgICAge3JhbmdlU2VsZWN0ICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgeycgLSAnfVxuICAgICAgICAgICAgPERhdGVJbnB1dFxuICAgICAgICAgICAgICB2YWx1ZT17bWF4ID8/IG51bGx9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZGF0ZSkgPT4gc2V0KG1pbiwgZGF0ZSA/PyB1bmRlZmluZWQsICdtYXgnKX1cbiAgICAgICAgICAgICAgbG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvPlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIHtjYWxlbmRhcnMubWFwKCh7IG1vbnRoLCB5ZWFyLCB3ZWVrcyB9KSA9PiAoXG4gICAgICAgIDxkaXYga2V5PXtgJHttb250aH0ke3llYXJ9YH0gY3NzPXt7IGRpc3BsYXk6ICdncmlkJyB9fT5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgbWFyZ2luOiAnY2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpIDAnLFxuICAgICAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgICAgIGdyaWRBdXRvRmxvdzogJ2NvbHVtbicsXG4gICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnc3BhY2UtYmV0d2VlbicsXG4gICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8SWNvbkJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgey4uLmdldEJhY2tQcm9wcyh7IGNhbGVuZGFycyB9KX0+XG4gICAgICAgICAgICAgIDxDaGV2cm9uUmlnaHQgY3NzPXt7IHRyYW5zZm9ybTogJ3JvdGF0ZTNkKDAsIDAsIDEsIDE4MGRlZyknIH19IC8+XG4gICAgICAgICAgICA8L0ljb25CdXR0b24+XG5cbiAgICAgICAgICAgIDxkaXYgY3NzPXt7IGRpc3BsYXk6ICdmbGV4JyB9fT5cbiAgICAgICAgICAgICAge2Zvcm1hdE1vbnRoKG1vbnRoKX0ge2Zvcm1hdFllYXIoeWVhcil9XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPEljb25CdXR0b24gdHlwZT1cImJ1dHRvblwiIHsuLi5nZXRGb3J3YXJkUHJvcHMoeyBjYWxlbmRhcnMgfSl9PlxuICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0IC8+XG4gICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAganVzdGlmeVNlbGY6ICdjZW50ZXInLFxuICAgICAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgICAgIGdyaWRUZW1wbGF0ZUNvbHVtbnM6ICdyZXBlYXQoOCwgbWF4LWNvbnRlbnQpJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3Nob3dDYWxlbmRhcldlZWsgPyAoXG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgICAgYm9yZGVyUmlnaHQ6IGAxcHggc29saWQgJHtncmF5fWAsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxUZXh0IGlkPVwiY2FsZW5kYXJXZWVrXCIgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8ZGl2IC8+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7d2Vla0RheXMubWFwKChfdiwgd2Vla0RheSkgPT4gKFxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAga2V5PXt3ZWVrRGF5fVxuICAgICAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICAgICAganVzdGlmeVNlbGY6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtmb3JtYXRXZWVrZGF5KHdlZWtEYXkpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkpfVxuXG4gICAgICAgICAgICB7d2Vla3MubWFwKCh3ZWVrLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrU3RhcnQgPSB3ZWVrWzBdIGFzIERhdGVPYmo7XG4gICAgICAgICAgICAgIGNvbnN0IHdlZWtFbmQgPSB3ZWVrWzZdIGFzIERhdGVPYmo7XG4gICAgICAgICAgICAgIGNvbnN0IHdlZWtEaXNhYmxlZCA9XG4gICAgICAgICAgICAgICAgIXJhbmdlU2VsZWN0IHx8XG4gICAgICAgICAgICAgICAgKG1pbkRhdGUgJiYgd2Vla0VuZC5kYXRlIDwgbWluRGF0ZSkgfHxcbiAgICAgICAgICAgICAgICAobWF4RGF0ZSAmJiB3ZWVrU3RhcnQuZGF0ZSA+IG1heERhdGUpO1xuXG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPEZyYWdtZW50IGtleT17aW5kZXh9PlxuICAgICAgICAgICAgICAgICAge3Nob3dDYWxlbmRhcldlZWsgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiB3ZWVrRGlzYWJsZWQgPyB1bmRlZmluZWQgOiAncG9pbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb250OiAnaW5oZXJpdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSaWdodDogYDFweCBzb2xpZCAke2dyYXl9YCxcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3ZWVrRGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtaW4gPSBtaW5EYXRlICYmIHdlZWtTdGFydC5kYXRlIDwgbWluRGF0ZSA/IG1pbkRhdGUgOiB3ZWVrU3RhcnQuZGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1heCA9IG1heERhdGUgJiYgd2Vla0VuZC5kYXRlID4gbWF4RGF0ZSA/IG1heERhdGUgOiB3ZWVrRW5kLmRhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXQobWluLCBtYXgpO1xuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7Z2V0Q2FsZW5kYXJXZWVrKCh3ZWVrWzBdIGFzIERhdGVPYmopLmRhdGUpfVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICAgIHt3ZWVrLm1hcCgoZGF0ZU9iamVjdCwgZGF5SW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFkYXRlT2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxkaXYga2V5PXtkYXlJbmRleH0gLz47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHByZXZNb250aCwgbmV4dE1vbnRoLCBkYXRlIH0gPSBkYXRlT2JqZWN0O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0b2RheSA9IHN0YXJ0T2ZEYXkoZGF0ZSkuZ2V0VGltZSgpID09PSBub3cuZ2V0VGltZSgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXNhYmxlZCA9IChtaW5EYXRlICYmIGRhdGUgPCBtaW5EYXRlKSB8fCAobWF4RGF0ZSAmJiBkYXRlID4gbWF4RGF0ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPVxuICAgICAgICAgICAgICAgICAgICAgIGRhdGUuZ2V0VGltZSgpID09PSBtaW4/LmdldFRpbWUoKSB8fFxuICAgICAgICAgICAgICAgICAgICAgIChtaW4gJiYgbWF4ICYmIGRhdGVJbnRlcnNlY3QoZGF0ZSwgeyBtaW4sIG1heCB9KSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZVNlbGVjdGVkID1cbiAgICAgICAgICAgICAgICAgICAgICAhc2VsZWN0ZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAhZGlzYWJsZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAoZGF0ZS5nZXRUaW1lKCkgPT09IGhvdmVyZWQ/LmdldFRpbWUoKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKG1pbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAhbWF4ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZUludGVyc2VjdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbiA8PSBob3ZlcmVkID8geyBtaW4sIG1heDogaG92ZXJlZCB9IDogeyBtaW46IGhvdmVyZWQsIG1heDogbWluIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tlZCA9IGJsb2NrZWRSYW5nZXMuc29tZSgocmFuZ2UpID0+IGRhdGVJbnRlcnNlY3QoZGF0ZSwgcmFuZ2UpKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtgJHtpbmRleH0tJHtkYXlJbmRleH1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtnZXREYXlDc3NTdHlsZXMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldk1vbnRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0TW9udGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRvZGF5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja2VkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlU2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5nZXREYXRlUHJvcHMoeyBkYXRlT2JqOiBkYXRlT2JqZWN0IH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGlydHkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWluKSBzZXQobWluLCBkYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHNldChkYXRlLCBtYXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldChkYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlck92ZXI9eygpID0+IHNldEhvdmVyZWQoZGF0ZSl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJPdXQ9eygpID0+IHNldEhvdmVyZWQodW5kZWZpbmVkKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7ZGF0ZS5nZXREYXRlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKSl9XG5cbiAgICAgIDxkaXZcbiAgICAgICAgY3NzPXt7XG4gICAgICAgICAgbWFyZ2luVG9wOiAndmFyKC0tc3BhY2luZyknLFxuICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAge3Jlc29sdmVkUXVpY2tPcHRpb25zfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iXX0= */",
1012
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2RhdGVQaWNrZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW9uQlEiLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvc2NodW1tYXItdGFibGUvc2NodW1tYXItdGFibGUvc3JjL2NvbXBvbmVudHMvZGF0ZVBpY2tlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlT2JqLCB1c2VEYXl6ZWQgfSBmcm9tICdkYXl6ZWQnO1xuaW1wb3J0IHtcbiAgRnJhZ21lbnQsXG4gIFJlYWN0Tm9kZSxcbiAgY3JlYXRlQ29udGV4dCxcbiAgdXNlQ29udGV4dCxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICcuLi9ob29rcy91c2VUaGVtZSc7XG5pbXBvcnQgeyBkZWZhdWx0cyB9IGZyb20gJy4uL21pc2MvZGVmYXVsdHMnO1xuaW1wb3J0IHsgZ3JheSB9IGZyb20gJy4uL3RoZW1lL2RlZmF1bHRUaGVtZS9kZWZhdWx0Q2xhc3Nlcyc7XG5pbXBvcnQgeyB1c2VDc3NWYXJpYWJsZXMgfSBmcm9tICcuLi90aGVtZS91c2VDc3NWYXJpYWJsZXMnO1xuaW1wb3J0IHsgRGF0ZUlucHV0IH0gZnJvbSAnLi9kYXRlSW5wdXQnO1xuaW1wb3J0IHsgVGV4dCB9IGZyb20gJy4vdGV4dCc7XG5pbXBvcnQgeyBJbnRlcnBvbGF0aW9uLCBUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuZXhwb3J0IHR5cGUgRGF0ZVJhbmdlID0geyBtaW46IERhdGU7IG1heDogRGF0ZSB9O1xuXG5leHBvcnQgdHlwZSBEYXRlUGlja2VyUXVpY2tPcHRpb24gPVxuICB8ICd0b2RheSdcbiAgfCAndGhpc1dlZWsnXG4gIHwgJ3RoaXNNb250aCdcbiAgfCAndGhpc1llYXInXG4gIHwgJ2xhc3RTZXZlbkRheXMnXG4gIHwgJ2xhc3RUaGlydHlEYXlzJ1xuICB8IHsgbGFiZWw6IFJlYWN0Tm9kZTsgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCAoKCkgPT4gRGF0ZSB8IERhdGVSYW5nZSkgfVxuICB8ICgob25DaGFuZ2U6ICh2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpID0+IHZvaWQpID0+IFJlYWN0Tm9kZSk7XG5cbmV4cG9ydCB0eXBlIERhdGVQaWNrZXJQcm9wcyA9IHtcbiAgLyoqIEN1cnJlbnRseSBzZWxlY3RlZCBkYXkgb3IgcmFuZ2Ugb2YgZGF5cy4gKi9cbiAgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsO1xuICAvKiogQ2FsbGJhY2sgZm9yIHdoZW4gdGhlIGRheSAocmFuZ2UpIGNoYW5nZXMuICovXG4gIG9uQ2hhbmdlOiAodmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSA9PiB2b2lkO1xuICAvKiogQ3VycmVudGx5IHZpc2libGUgZGF0ZS4gKi9cbiAgZGF0ZUluVmlldz86IERhdGU7XG4gIC8qKiBDYWxsYmFjayBmb3Igd2hlbiB0aGUgY3VycmVudGx5IHZpc2libGUgZGF0ZSBjaGFuZ2VzLiAqL1xuICBvbkRhdGVJblZpZXdDaGFuZ2U/OiAodmFsdWU6IERhdGUpID0+IHZvaWQ7XG4gIC8qKiBJZiBlbmFibGVkLCByYW5nZXMgY2FuIGJlIHNlbGVjdGVkLiAqL1xuICByYW5nZVNlbGVjdD86IGJvb2xlYW47XG4gIC8qKiBXaGljaCBsb2NhbGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgY2FsZW5kYXIuICovXG4gIGxvY2FsZT86IHN0cmluZztcbiAgLyoqIFdoaWNoIGRheSBvZiB0aGUgd2VlayBzaG91bGQgYmUgaW4gdGhlIGZpcnN0IGNvbHVtbi4gKDA9U3VuZGF5LCAxPU1vbmRheSwgLi4uKVxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICBmaXJzdERheU9mV2Vlaz86IDAgfCAxIHwgMiB8IDMgfCA0IHwgNSB8IDY7XG4gIC8qKiBXaGljaCBtb250aCB0byBzaG93IGluaXRpYWxseSAqL1xuICBkZWZhdWx0RGF0ZUluVmlldz86IERhdGU7XG4gIC8qKiBTaG93IGJ1dHRvbnMgdG8gcXVpY2tseSBzZWxlY3Qgc3VnZ2VzdGVkIGRhdGVzIG9yIGRhdGUgcmFuZ2VzICovXG4gIHF1aWNrT3B0aW9ucz86IERhdGVQaWNrZXJRdWlja09wdGlvbltdO1xuICAvKiogTWluaW11bSBzZWxlY3RhYmxlIGRhdGUgKi9cbiAgLyoqIERhdGUgcmFuZ2VzIHRoYXQgYXJlIHZpc3VhbGx5IG1hcmtlZCBhcyBibG9ja2VkICovXG4gIGJsb2NrZWRSYW5nZXM/OiBEYXRlUmFuZ2VbXTtcbiAgbWluRGF0ZT86IERhdGU7XG4gIC8qKiBNYXhpbXVtIHNlbGVjdGFibGUgZGF0ZSAqL1xuICBtYXhEYXRlPzogRGF0ZTtcbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgY2FsZW5kYXIgd2VlayBpbiB0aGUgZmlyc3QgY29sdW1uICovXG4gIHNob3dDYWxlbmRhcldlZWs/OiBib29sZWFuO1xufTtcblxuY29uc3QgRGF0ZVBpY2tlckNvbnRleHQgPSBjcmVhdGVDb250ZXh0PFBhcnRpYWw8T21pdDxEYXRlUGlja2VyUHJvcHMsICd2YWx1ZScgfCAnb25DaGFuZ2UnPj4+KHt9KTtcblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVQaWNrZXJQcm92aWRlcih7XG4gIGNoaWxkcmVuLFxuICAuLi5wcm9wc1xufTogUGFydGlhbDxPbWl0PERhdGVQaWNrZXJQcm9wcywgJ3ZhbHVlJyB8ICdvbkNoYW5nZSc+PiAmIHsgY2hpbGRyZW4/OiBSZWFjdE5vZGUgfSkge1xuICBjb25zdCB2YWx1ZSA9IHVzZU1lbW8oKCkgPT4gcHJvcHMsIFtKU09OLnN0cmluZ2lmeShwcm9wcyldKTtcblxuICByZXR1cm4gPERhdGVQaWNrZXJDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt2YWx1ZX0+e2NoaWxkcmVufTwvRGF0ZVBpY2tlckNvbnRleHQuUHJvdmlkZXI+O1xufVxuXG5jb25zdCB3ZWVrRGF5cyA9IFswLCAxLCAyLCAzLCA0LCA1LCA2XSBhcyBjb25zdDtcblxuLyoqIFJvdW5kcyBhIGRhdGUgZG93biB0byB0aGUgc3RhcnQgb2YgdGhlIGRheS4gKi9cbmV4cG9ydCBjb25zdCBzdGFydE9mRGF5ID0gKGQ6IERhdGUpID0+IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgZC5nZXRNb250aCgpLCBkLmdldERhdGUoKSk7XG5cbi8qKiBSb3VuZHMgYSBkYXRlIHVwIHRvIHRoZSBlbmQgb2YgdGhlIGRheS4gKi9cbmV4cG9ydCBjb25zdCBlbmRPZkRheSA9IChkOiBEYXRlKSA9PlxuICBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIGQuZ2V0TW9udGgoKSwgZC5nZXREYXRlKCkgKyAxLCAwLCAwLCAwLCAtMSk7XG5cbmV4cG9ydCBjb25zdCBsYXN0RGF5cyA9IChkYXlzOiBudW1iZXIpOiBEYXRlUmFuZ2UgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBtaW4gPSBuZXcgRGF0ZShub3cpO1xuICBtaW4uc2V0RGF0ZShtaW4uZ2V0RGF0ZSgpIC0gZGF5cyArIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShub3cpLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHRvZGF5ID0gKCkgPT4gbGFzdERheXMoMSk7XG5cbmV4cG9ydCBjb25zdCB0aGlzV2VlayA9IChkZWx0YSA9IDAsIGZpcnN0RGF5T2ZXZWVrID0gMSk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG5cbiAgbGV0IGRpZmYgPSBtaW4uZ2V0RGF5KCkgLSBmaXJzdERheU9mV2VlaztcbiAgaWYgKGRpZmYgPCAwKSB7XG4gICAgZGlmZiArPSA3O1xuICB9XG4gIG1pbi5zZXREYXRlKG1pbi5nZXREYXRlKCkgLSBkaWZmICsgZGVsdGEgKiA3KTtcblxuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpICsgNik7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdGhpc01vbnRoID0gKGRlbHRhID0gMCk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG4gIG1pbi5zZXREYXRlKDEpO1xuICBtaW4uc2V0TW9udGgobWluLmdldE1vbnRoKCkgKyBkZWx0YSk7XG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXRNb250aChtYXguZ2V0TW9udGgoKSArIDEpO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpIC0gMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdGhpc1llYXIgPSAoZGVsdGEgPSAwKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcbiAgbWluLnNldERhdGUoMSk7XG4gIG1pbi5zZXRNb250aCgwKTtcbiAgbWluLnNldEZ1bGxZZWFyKG1pbi5nZXRGdWxsWWVhcigpICsgZGVsdGEpO1xuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0RnVsbFllYXIobWF4LmdldEZ1bGxZZWFyKCkgKyAxKTtcbiAgbWF4LnNldERhdGUobWF4LmdldERhdGUoKSAtIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShtYXgpLFxuICB9O1xufTtcblxuY29uc3QgTVNfUEVSX0RBWSA9IDEwMDAgKiA2MCAqIDYwICogMjQ7XG5leHBvcnQgY29uc3QgZ2V0Q2FsZW5kYXJXZWVrID0gKGRhdGU6IERhdGUpOiBudW1iZXIgPT4ge1xuICAvLyBJU08gODYwMTogV2VlayAxIGlzIHRoZSB3ZWVrIHdpdGggdGhlIGZpcnN0IFRodXJzZGF5IG9mIHRoZSB5ZWFyLlxuICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG5cbiAgY29uc3QgZW5kT2ZXZWVrID0gbmV3IERhdGUoXG4gICAgZGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgIGRhdGUuZ2V0TW9udGgoKSxcbiAgICBkYXRlLmdldERhdGUoKSArICg3IC0gKGRhdGUuZ2V0RGF5KCkgfHwgNykpLFxuICApO1xuXG4gIGNvbnN0IHllYXIgPSBlbmRPZldlZWsuZ2V0RnVsbFllYXIoKTtcbiAgY29uc3QgZmlyc3REYXlPZlllYXIgPSBuZXcgRGF0ZSh5ZWFyLCAwLCAxKTtcbiAgY29uc3QgZGF5T2ZZZWFyID1cbiAgICBNYXRoLmZsb29yKFxuICAgICAgKGVuZE9mV2Vlay5nZXRUaW1lKCkgLVxuICAgICAgICBmaXJzdERheU9mWWVhci5nZXRUaW1lKCkgK1xuICAgICAgICAoZW5kT2ZXZWVrLmdldFRpbWV6b25lT2Zmc2V0KCkgLSBmaXJzdERheU9mWWVhci5nZXRUaW1lem9uZU9mZnNldCgpKSkgL1xuICAgICAgICBNU19QRVJfREFZLFxuICAgICkgKyAxO1xuICBjb25zdCB3ZWVrT2ZZZWFyID0gTWF0aC5mbG9vcigoMyArIGRheU9mWWVhcikgLyA3KTtcblxuICBpZiAod2Vla09mWWVhciA9PT0gMCkge1xuICAgIHJldHVybiAoXG4gICAgICBnZXRDYWxlbmRhcldlZWsoXG4gICAgICAgIG5ldyBEYXRlKGVuZE9mV2Vlay5nZXRGdWxsWWVhcigpLCBlbmRPZldlZWsuZ2V0TW9udGgoKSwgZW5kT2ZXZWVrLmdldERhdGUoKSAtIDcpLFxuICAgICAgKSArIDFcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIHdlZWtPZlllYXI7XG59O1xuXG5leHBvcnQgY29uc3QgY29tbW9uUXVpY2tPcHRpb25zID0ge1xuICB0b2RheTogeyBsYWJlbDogPFRleHQgaWQ9XCJ0b2RheVwiIC8+LCB2YWx1ZTogdG9kYXkgfSxcbiAgdGhpc1dlZWs6IHsgbGFiZWw6IDxUZXh0IGlkPVwidGhpc1dlZWtcIiAvPiwgdmFsdWU6IChwcm9wcykgPT4gdGhpc1dlZWsoMCwgcHJvcHMuZmlyc3REYXlPZldlZWspIH0sXG4gIHRoaXNNb250aDogeyBsYWJlbDogPFRleHQgaWQ9XCJ0aGlzTW9udGhcIiAvPiwgdmFsdWU6ICgpID0+IHRoaXNNb250aCgpIH0sXG4gIHRoaXNZZWFyOiB7IGxhYmVsOiA8VGV4dCBpZD1cInRoaXNZZWFyXCIgLz4sIHZhbHVlOiAoKSA9PiB0aGlzWWVhcigpIH0sXG4gIGxhc3RTZXZlbkRheXM6IHsgbGFiZWw6IDxUZXh0IGlkPVwibGFzdFNldmVuRGF5c1wiIC8+LCB2YWx1ZTogKCkgPT4gbGFzdERheXMoNykgfSxcbiAgbGFzdFRoaXJ0eURheXM6IHsgbGFiZWw6IDxUZXh0IGlkPVwibGFzdFRoaXJ0eURheXNcIiAvPiwgdmFsdWU6ICgpID0+IGxhc3REYXlzKDMwKSB9LFxufSBzYXRpc2ZpZXMgUmVjb3JkPFxuICBEYXRlUGlja2VyUXVpY2tPcHRpb24gJiBzdHJpbmcsXG4gIHsgbGFiZWw6IFJlYWN0Tm9kZTsgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCAoKHByb3BzOiBEYXRlUGlja2VyUHJvcHMpID0+IERhdGUgfCBEYXRlUmFuZ2UpIH1cbj47XG5cbi8qKiBSZXR1cm5zIHdoZXRoZXIgdHdvIGRhdGVzIGFuZC9vciBkYXRlIHJhbmdlcyBpbnRlcnNlY3QuIEludGVyc2VjdGlvbiBpcyBjb25zaWRlcmVkIHBlciBkYXkuICovXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUludGVyc2VjdChcbiAgYTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwgfCB1bmRlZmluZWQsXG4gIGI6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsIHwgdW5kZWZpbmVkLFxuKSB7XG4gIGlmIChhIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIGEgPSB7IG1pbjogYSwgbWF4OiBhIH07XG4gIH1cbiAgaWYgKGIgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgYiA9IHsgbWluOiBiLCBtYXg6IGIgfTtcbiAgfVxuXG4gIGlmICghYT8ubWluIHx8ICFhLm1heCB8fCAhYj8ubWluIHx8ICFiLm1heCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiAhKGVuZE9mRGF5KGEubWF4KSA8IHN0YXJ0T2ZEYXkoYi5taW4pIHx8IHN0YXJ0T2ZEYXkoYS5taW4pID4gZW5kT2ZEYXkoYi5tYXgpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGVDbGFtcChkYXRlOiBEYXRlLCBtaW4/OiBEYXRlLCBtYXg/OiBEYXRlKSB7XG4gIGlmIChtaW4gJiYgZGF0ZSA8IG1pbikge1xuICAgIHJldHVybiBtaW47XG4gIH1cblxuICBpZiAobWF4ICYmIGRhdGUgPiBtYXgpIHtcbiAgICByZXR1cm4gbWF4O1xuICB9XG5cbiAgcmV0dXJuIGRhdGU7XG59XG5cbmZ1bmN0aW9uIGdldFZhbHVlRm9yQ29tcGFyaXNvbih2YWx1ZT86IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSB7XG4gIGlmICghdmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHJldHVybiB2YWx1ZS5nZXRUaW1lKCk7XG4gIH1cbiAgcmV0dXJuIGAke3ZhbHVlLm1pbj8uZ2V0VGltZSgpfS0ke3ZhbHVlLm1heD8uZ2V0VGltZSgpfWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRlUGlja2VyKHByb3BzOiBEYXRlUGlja2VyUHJvcHMpIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoRGF0ZVBpY2tlckNvbnRleHQpO1xuXG4gIGNvbnN0IHtcbiAgICB2YWx1ZSxcbiAgICByYW5nZVNlbGVjdCxcbiAgICBsb2NhbGUsXG4gICAgZmlyc3REYXlPZldlZWsgPSAxLFxuICAgIGRlZmF1bHREYXRlSW5WaWV3LFxuICAgIHF1aWNrT3B0aW9ucyA9IFsndG9kYXknLCAndGhpc1dlZWsnXSxcbiAgICBtaW5EYXRlLFxuICAgIG1heERhdGUsXG4gICAgc2hvd0NhbGVuZGFyV2VlayxcbiAgICBibG9ja2VkUmFuZ2VzID0gW10sXG4gIH0gPSBkZWZhdWx0czxEYXRlUGlja2VyUHJvcHM+KHByb3BzLCBjb250ZXh0KTtcblxuICBmdW5jdGlvbiBvbkNoYW5nZSh2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICB2YWx1ZSA9IGRhdGVDbGFtcCh2YWx1ZSwgbWluRGF0ZSwgbWF4RGF0ZSk7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSkge1xuICAgICAgdmFsdWUgPSB7XG4gICAgICAgIG1pbjogZGF0ZUNsYW1wKHZhbHVlLm1pbiwgbWluRGF0ZSwgbWF4RGF0ZSksXG4gICAgICAgIG1heDogZGF0ZUNsYW1wKHZhbHVlLm1heCwgbWluRGF0ZSwgbWF4RGF0ZSksXG4gICAgICB9O1xuICAgIH1cblxuICAgIHByb3BzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgfVxuXG4gIGNvbnN0IEJ1dHRvbiA9IHVzZVRoZW1lKCh0KSA9PiB0LmNvbXBvbmVudHMuQnV0dG9uKTtcbiAgY29uc3QgSWNvbkJ1dHRvbiA9IHVzZVRoZW1lKCh0KSA9PiB0LmNvbXBvbmVudHMuSWNvbkJ1dHRvbik7XG4gIGNvbnN0IENoZXZyb25SaWdodCA9IHVzZVRoZW1lKCh0KSA9PiB0Lmljb25zLkNoZXZyb25SaWdodCk7XG4gIGNvbnN0IGNzc1ZhcmlhYmxlcyA9IHVzZUNzc1ZhcmlhYmxlcygpO1xuICBmdW5jdGlvbiBnZXREYXlDc3NTdHlsZXMoe1xuICAgIGRpc2FibGVkLFxuICAgIHByZXZNb250aCxcbiAgICBuZXh0TW9udGgsXG4gICAgdG9kYXksXG4gICAgYmxvY2tlZCxcbiAgICBzZWxlY3RlZCxcbiAgICBwcmVTZWxlY3RlZCxcbiAgfToge1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBwcmV2TW9udGg/OiBib29sZWFuO1xuICAgIG5leHRNb250aD86IGJvb2xlYW47XG4gICAgdG9kYXk/OiBib29sZWFuO1xuICAgIGJsb2NrZWQ/OiBib29sZWFuO1xuICAgIHNlbGVjdGVkPzogYm9vbGVhbjtcbiAgICBwcmVTZWxlY3RlZD86IGJvb2xlYW47XG4gIH0pOiBJbnRlcnBvbGF0aW9uPFRoZW1lPiB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgIGJvcmRlcjogJ25vbmUnLFxuICAgICAgICBiYWNrZ3JvdW5kOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICBjdXJzb3I6IGRpc2FibGVkID8gdW5kZWZpbmVkIDogJ3BvaW50ZXInLFxuICAgICAgICBmb250OiAnaW5oZXJpdCcsXG4gICAgICB9LFxuICAgICAgKHByZXZNb250aCB8fCBuZXh0TW9udGgpICYmIHtcbiAgICAgICAgY29sb3I6IGdyYXksXG4gICAgICB9LFxuICAgICAgdG9kYXkgJiYge1xuICAgICAgICBvdXRsaW5lOiAnMXB4IHNvbGlkIHZhcigtLXNlY29uZGFyeU1haW4pJyxcbiAgICAgIH0sXG4gICAgICBibG9ja2VkICYmIHtcbiAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLWJsb2NrZWRNYWluKScsXG4gICAgICAgIGNvbG9yOiAndmFyKC0tYmxvY2tlZENvbnRyYXN0VGV4dCknLFxuICAgICAgfSxcbiAgICAgIHNlbGVjdGVkICYmIHtcbiAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLXByaW1hcnlNYWluKScsXG4gICAgICAgIGNvbG9yOiAndmFyKC0tcHJpbWFyeUNvbnRyYXN0VGV4dCknLFxuICAgICAgfSxcbiAgICAgIGJsb2NrZWQgJiZcbiAgICAgICAgc2VsZWN0ZWQgJiYge1xuICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICAgICc6OmJlZm9yZSc6IHtcbiAgICAgICAgICAgIGNvbnRlbnQ6ICdcIlwiJyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgcmlnaHQ6IDAsXG4gICAgICAgICAgICBib3R0b206IDAsXG4gICAgICAgICAgICBsZWZ0OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLWJsb2NrZWRNYWluKScsXG4gICAgICAgICAgICBjbGlwUGF0aDogJ3BvbHlnb24oMCAwLCAwIDUwJSwgNTAlIDApJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgcHJlU2VsZWN0ZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tcHJpbWFyeUxpZ2h0KScsXG4gICAgICAgIGNvbG9yOiAndmFyKC0tcHJpbWFyeUNvbnRyYXN0VGV4dCknLFxuICAgICAgfSxcbiAgICBdO1xuICB9XG5cbiAgY29uc3QgbW91bnRUaW1lID0gdXNlTWVtbygoKSA9PiBuZXcgRGF0ZSgpLCBbXSk7XG4gIGNvbnN0IFtkaXJ0eSwgc2V0RGlydHldID0gdXNlU3RhdGU8UGFydGlhbDxEYXRlUmFuZ2U+PigpO1xuICBjb25zdCBbaG92ZXJlZCwgc2V0SG92ZXJlZF0gPSB1c2VTdGF0ZTxEYXRlUmFuZ2U+KCk7XG4gIGNvbnN0IFtkYXRlSW5WaWV3TG9jYWwsIHNldERhdGVJblZpZXdMb2NhbF0gPSB1c2VTdGF0ZTxEYXRlPihkZWZhdWx0RGF0ZUluVmlldyA/PyBtb3VudFRpbWUpO1xuICBjb25zdCBkYXRlSW5WaWV3ID0gcHJvcHMuZGF0ZUluVmlldyA/PyBkYXRlSW5WaWV3TG9jYWw7XG5cbiAgZnVuY3Rpb24gc2V0RGF0ZUluVmlldyhkYXRlOiBEYXRlKSB7XG4gICAgc2V0RGF0ZUluVmlld0xvY2FsKGRhdGUpO1xuICAgIHByb3BzLm9uRGF0ZUluVmlld0NoYW5nZT8uKGRhdGUpO1xuICB9XG5cbiAgY29uc3QgbWluID0gZGlydHkgPyBkaXJ0eS5taW4gOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlPy5taW47XG4gIGNvbnN0IG1heCA9IGRpcnR5ID8gZGlydHkubWF4IDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZT8ubWF4O1xuXG4gIGNvbnN0IHJlc29sdmVkUXVpY2tPcHRpb25zID0gWy4uLnF1aWNrT3B0aW9ucywgeyBsYWJlbDogPFRleHQgaWQ9XCJyZXNldFwiIC8+LCB2YWx1ZTogbnVsbCB9XS5tYXAoXG4gICAgKG9wdGlvbiwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChvcHRpb24gaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICByZXR1cm4gb3B0aW9uKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBsYWJlbCwgdmFsdWUgfSA9IHR5cGVvZiBvcHRpb24gPT09ICdzdHJpbmcnID8gY29tbW9uUXVpY2tPcHRpb25zW29wdGlvbl0gOiBvcHRpb247XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuXG4gICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICAgICAgICBvbkNoYW5nZSh2YWx1ZShwcm9wcykpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7bGFiZWx9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKTtcbiAgICB9LFxuICApO1xuXG4gIGNvbnN0IHsgY2FsZW5kYXJzLCBnZXRCYWNrUHJvcHMsIGdldEZvcndhcmRQcm9wcywgZ2V0RGF0ZVByb3BzIH0gPSB1c2VEYXl6ZWQoe1xuICAgIG9uRGF0ZVNlbGVjdGVkOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgZmlyc3REYXlPZldlZWssXG4gICAgc2hvd091dHNpZGVEYXlzOiB0cnVlLFxuICAgIGRhdGU6IGRhdGVJblZpZXcsXG4gICAgb25PZmZzZXRDaGFuZ2VkOiAob2Zmc2V0KSA9PlxuICAgICAgc2V0RGF0ZUluVmlldyhuZXcgRGF0ZShkYXRlSW5WaWV3LmdldEZ1bGxZZWFyKCksIGRhdGVJblZpZXcuZ2V0TW9udGgoKSArIG9mZnNldCkpLFxuICAgIG9mZnNldDogMCxcbiAgICBtaW5EYXRlLFxuICAgIG1heERhdGUsXG4gIH0pO1xuICBjb25zdCBub3cgPSB1c2VNZW1vKCgpID0+IHN0YXJ0T2ZEYXkobmV3IERhdGUoKSksIFtdKTtcblxuICBjb25zdCBmb3JtYXRXZWVrZGF5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyB3ZWVrZGF5OiAnc2hvcnQnIH0pO1xuICAgIHJldHVybiAod2Vla0RheTogbnVtYmVyKSA9PlxuICAgICAgZm9ybWF0KG5ldyBEYXRlKERhdGUuVVRDKDIwMjEsIDcsICgod2Vla0RheSArIGZpcnN0RGF5T2ZXZWVrKSAlIDcpICsgMSkpKTtcbiAgfSwgW2xvY2FsZSwgZmlyc3REYXlPZldlZWtdKTtcblxuICB1c2VFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHNldERhdGVJblZpZXcoXG4gICAgICAgIHZhbHVlID09PSBudWxsID8gZGVmYXVsdERhdGVJblZpZXcgPz8gbW91bnRUaW1lIDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZS5tYXgsXG4gICAgICApLFxuICAgIFtnZXRWYWx1ZUZvckNvbXBhcmlzb24odmFsdWUpLCBnZXRWYWx1ZUZvckNvbXBhcmlzb24oZGVmYXVsdERhdGVJblZpZXcpLCBtb3VudFRpbWVdLFxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFyYW5nZVNlbGVjdCkge1xuICAgICAgc2V0RGlydHkodW5kZWZpbmVkKTtcbiAgICB9XG4gIH0sIFtyYW5nZVNlbGVjdF0pO1xuXG4gIGZ1bmN0aW9uIHNldChtaW4/OiBEYXRlLCBtYXg/OiBEYXRlLCBlZGl0PzogJ21pbicgfCAnbWF4Jykge1xuICAgIGlmICghcmFuZ2VTZWxlY3QpIHtcbiAgICAgIG9uQ2hhbmdlKG1pbiA/PyBudWxsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAobWluICYmIG1heCAmJiBtaW4gPiBtYXgpIHtcbiAgICAgIGlmIChlZGl0ID09PSAnbWluJykge1xuICAgICAgICBtYXggPSBtaW47XG4gICAgICB9IGVsc2UgaWYgKGVkaXQgPT09ICdtYXgnKSB7XG4gICAgICAgIG1pbiA9IG1heDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIFttaW4sIG1heF0gPSBbbWF4LCBtaW5dO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghbWluID09PSAhbWF4KSB7XG4gICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuICAgICAgb25DaGFuZ2UobWluICYmIG1heCA/IHsgbWluLCBtYXg6IGVuZE9mRGF5KG1heCkgfSA6IG51bGwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXREaXJ0eSh7IG1pbiwgbWF4IH0pO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGZvcm1hdE1vbnRoID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyBtb250aDogJ2xvbmcnIH0pO1xuICAgIHJldHVybiAobW9udGg6IG51bWJlcikgPT4gZm9ybWF0KG5ldyBEYXRlKDIwMjEsIG1vbnRoKSk7XG4gIH0sIFtsb2NhbGVdKTtcblxuICBjb25zdCBmb3JtYXRZZWFyID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyB5ZWFyOiAnbnVtZXJpYycgfSk7XG4gICAgcmV0dXJuICh5ZWFyOiBudW1iZXIpID0+IGZvcm1hdChuZXcgRGF0ZSh5ZWFyLCAwLCAxKSk7XG4gIH0sIFtsb2NhbGVdKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY3NzPXtjc3NWYXJpYWJsZXN9PlxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e3tcbiAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgZ3JpZEF1dG9GbG93OiAnY29sdW1uJyxcbiAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgYWxpZ25JdGVtczogJ2Jhc2VsaW5lJyxcbiAgICAgICAgICBnYXA6ICd2YXIoLS1zcGFjaW5nKScsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxEYXRlSW5wdXRcbiAgICAgICAgICB2YWx1ZT17bWluID8/IG51bGx9XG4gICAgICAgICAgb25DaGFuZ2U9eyhkYXRlKSA9PiBzZXQoZGF0ZSA/PyB1bmRlZmluZWQsIG1heCwgJ21pbicpfVxuICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAvPlxuXG4gICAgICAgIHtyYW5nZVNlbGVjdCAmJiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIHsnIC0gJ31cbiAgICAgICAgICAgIDxEYXRlSW5wdXRcbiAgICAgICAgICAgICAgdmFsdWU9e21heCA/PyBudWxsfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGRhdGUpID0+IHNldChtaW4sIGRhdGUgPz8gdW5kZWZpbmVkLCAnbWF4Jyl9XG4gICAgICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7Y2FsZW5kYXJzLm1hcCgoeyBtb250aCwgeWVhciwgd2Vla3MgfSkgPT4gKFxuICAgICAgICA8ZGl2IGtleT17YCR7bW9udGh9JHt5ZWFyfWB9IGNzcz17eyBkaXNwbGF5OiAnZ3JpZCcgfX0+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgIG1hcmdpbjogJ2NhbGModmFyKC0tc3BhY2luZykgKiA0KSAwJyxcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nLFxuICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPEljb25CdXR0b24gdHlwZT1cImJ1dHRvblwiIHsuLi5nZXRCYWNrUHJvcHMoeyBjYWxlbmRhcnMgfSl9PlxuICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0IGNzcz17eyB0cmFuc2Zvcm06ICdyb3RhdGUzZCgwLCAwLCAxLCAxODBkZWcpJyB9fSAvPlxuICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuXG4gICAgICAgICAgICA8ZGl2IGNzcz17eyBkaXNwbGF5OiAnZmxleCcgfX0+XG4gICAgICAgICAgICAgIHtmb3JtYXRNb250aChtb250aCl9IHtmb3JtYXRZZWFyKHllYXIpfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxJY29uQnV0dG9uIHR5cGU9XCJidXR0b25cIiB7Li4uZ2V0Rm9yd2FyZFByb3BzKHsgY2FsZW5kYXJzIH0pfT5cbiAgICAgICAgICAgICAgPENoZXZyb25SaWdodCAvPlxuICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgICAgICBncmlkVGVtcGxhdGVDb2x1bW5zOiAncmVwZWF0KDgsIG1heC1jb250ZW50KScsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtzaG93Q2FsZW5kYXJXZWVrID8gKFxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgICAgICBqdXN0aWZ5U2VsZjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgICAgICAgICAgIGJvcmRlclJpZ2h0OiBgMXB4IHNvbGlkICR7Z3JheX1gLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8VGV4dCBpZD1cImNhbGVuZGFyV2Vla1wiIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPGRpdiAvPlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAge3dlZWtEYXlzLm1hcCgoX3YsIHdlZWtEYXkpID0+IChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGtleT17d2Vla0RheX1cbiAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7Zm9ybWF0V2Vla2RheSh3ZWVrRGF5KX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApKX1cblxuICAgICAgICAgICAge3dlZWtzLm1hcCgod2VlaywgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgd2Vla1N0YXJ0ID0gd2Vla1swXSBhcyBEYXRlT2JqO1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrRW5kID0gd2Vla1s2XSBhcyBEYXRlT2JqO1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrRGlzYWJsZWQgPVxuICAgICAgICAgICAgICAgICFyYW5nZVNlbGVjdCB8fFxuICAgICAgICAgICAgICAgIChtaW5EYXRlICYmIHdlZWtFbmQuZGF0ZSA8IG1pbkRhdGUpIHx8XG4gICAgICAgICAgICAgICAgKG1heERhdGUgJiYgd2Vla1N0YXJ0LmRhdGUgPiBtYXhEYXRlKTtcblxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxGcmFnbWVudCBrZXk9e2luZGV4fT5cbiAgICAgICAgICAgICAgICAgIHtzaG93Q2FsZW5kYXJXZWVrID8gKFxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcjogd2Vla0Rpc2FibGVkID8gdW5kZWZpbmVkIDogJ3BvaW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9udDogJ2luaGVyaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmlnaHQ6IGAxcHggc29saWQgJHtncmF5fWAsXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAod2Vla0Rpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWluID0gbWluRGF0ZSAmJiB3ZWVrU3RhcnQuZGF0ZSA8IG1pbkRhdGUgPyBtaW5EYXRlIDogd2Vla1N0YXJ0LmRhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXggPSBtYXhEYXRlICYmIHdlZWtFbmQuZGF0ZSA+IG1heERhdGUgPyBtYXhEYXRlIDogd2Vla0VuZC5kYXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0KG1pbiwgbWF4KTtcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlck92ZXI9eygpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAhd2Vla0Rpc2FibGVkICYmIHNldEhvdmVyZWQoeyBtaW46IHdlZWtTdGFydC5kYXRlLCBtYXg6IHdlZWtFbmQuZGF0ZSB9KVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJPdXQ9eygpID0+ICF3ZWVrRGlzYWJsZWQgJiYgc2V0SG92ZXJlZCh1bmRlZmluZWQpfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge2dldENhbGVuZGFyV2Vlayh3ZWVrRW5kLmRhdGUpfVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICAgIHt3ZWVrLm1hcCgoZGF0ZU9iamVjdCwgZGF5SW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFkYXRlT2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxkaXYga2V5PXtkYXlJbmRleH0gLz47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHByZXZNb250aCwgbmV4dE1vbnRoLCBkYXRlIH0gPSBkYXRlT2JqZWN0O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0b2RheSA9IHN0YXJ0T2ZEYXkoZGF0ZSkuZ2V0VGltZSgpID09PSBub3cuZ2V0VGltZSgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXNhYmxlZCA9IChtaW5EYXRlICYmIGRhdGUgPCBtaW5EYXRlKSB8fCAobWF4RGF0ZSAmJiBkYXRlID4gbWF4RGF0ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPVxuICAgICAgICAgICAgICAgICAgICAgIGRhdGUuZ2V0VGltZSgpID09PSBtaW4/LmdldFRpbWUoKSB8fFxuICAgICAgICAgICAgICAgICAgICAgIChtaW4gJiYgbWF4ICYmIGRhdGVJbnRlcnNlY3QoZGF0ZSwgeyBtaW4sIG1heCB9KSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZVNlbGVjdGVkID1cbiAgICAgICAgICAgICAgICAgICAgICAhc2VsZWN0ZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAhZGlzYWJsZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAoZGF0ZUludGVyc2VjdChkYXRlLCBob3ZlcmVkKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKG1pbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAhbWF4ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZUludGVyc2VjdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbiA8PSBob3ZlcmVkLm1pblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IG1pbiwgbWF4OiBob3ZlcmVkLm1pbiB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHsgbWluOiBob3ZlcmVkLm1heCwgbWF4OiBtaW4gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9ja2VkID0gYmxvY2tlZFJhbmdlcy5zb21lKChyYW5nZSkgPT4gZGF0ZUludGVyc2VjdChkYXRlLCByYW5nZSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2Ake2luZGV4fS0ke2RheUluZGV4fWB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2dldERheUNzc1N0eWxlcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2TW9udGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRNb250aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kYXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVTZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgey4uLmdldERhdGVQcm9wcyh7IGRhdGVPYmo6IGRhdGVPYmplY3QgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaXJ0eSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtaW4pIHNldChtaW4sIGRhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugc2V0KGRhdGUsIG1heCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0KGRhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyT3Zlcj17KCkgPT4gc2V0SG92ZXJlZCh7IG1pbjogZGF0ZSwgbWF4OiBkYXRlIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyT3V0PXsoKSA9PiBzZXRIb3ZlcmVkKHVuZGVmaW5lZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge2RhdGUuZ2V0RGF0ZSgpfVxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgPC9GcmFnbWVudD5cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICkpfVxuXG4gICAgICA8ZGl2XG4gICAgICAgIGNzcz17e1xuICAgICAgICAgIG1hcmdpblRvcDogJ3ZhcigtLXNwYWNpbmcpJyxcbiAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgZ3JpZEF1dG9GbG93OiAnY29sdW1uJyxcbiAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIHtyZXNvbHZlZFF1aWNrT3B0aW9uc31cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuIl19 */",
1003
1013
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__$d
1004
1014
  };
1005
1015
  function DatePicker(props) {
@@ -1132,7 +1142,7 @@ function DatePicker(props) {
1132
1142
  });
1133
1143
  return (weekDay) => format(new Date(Date.UTC(2021, 7, (weekDay + firstDayOfWeek) % 7 + 1)));
1134
1144
  }, [locale, firstDayOfWeek]);
1135
- useEffect(() => setDateInView(value === null ? defaultDateInView ?? mountTime : value instanceof Date ? value : value.max), [value, defaultDateInView, mountTime]);
1145
+ useEffect(() => setDateInView(value === null ? defaultDateInView ?? mountTime : value instanceof Date ? value : value.max), [getValueForComparison(value), getValueForComparison(defaultDateInView), mountTime]);
1136
1146
  useEffect(() => {
1137
1147
  if (!rangeSelect) {
1138
1148
  setDirty(void 0);
@@ -1212,7 +1222,7 @@ function DatePicker(props) {
1212
1222
  justifySelf: "center",
1213
1223
  padding: 10,
1214
1224
  borderRight: `1px solid ${gray}`
1215
- }, process.env.NODE_ENV === "production" ? "" : ";label:DatePicker;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2RhdGVQaWNrZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXlkZ0IiLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvc2NodW1tYXItdGFibGUvc2NodW1tYXItdGFibGUvc3JjL2NvbXBvbmVudHMvZGF0ZVBpY2tlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlT2JqLCB1c2VEYXl6ZWQgfSBmcm9tICdkYXl6ZWQnO1xuaW1wb3J0IHtcbiAgRnJhZ21lbnQsXG4gIFJlYWN0Tm9kZSxcbiAgY3JlYXRlQ29udGV4dCxcbiAgdXNlQ29udGV4dCxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICcuLi9ob29rcy91c2VUaGVtZSc7XG5pbXBvcnQgeyBkZWZhdWx0cyB9IGZyb20gJy4uL21pc2MvZGVmYXVsdHMnO1xuaW1wb3J0IHsgZ3JheSB9IGZyb20gJy4uL3RoZW1lL2RlZmF1bHRUaGVtZS9kZWZhdWx0Q2xhc3Nlcyc7XG5pbXBvcnQgeyB1c2VDc3NWYXJpYWJsZXMgfSBmcm9tICcuLi90aGVtZS91c2VDc3NWYXJpYWJsZXMnO1xuaW1wb3J0IHsgRGF0ZUlucHV0IH0gZnJvbSAnLi9kYXRlSW5wdXQnO1xuaW1wb3J0IHsgVGV4dCB9IGZyb20gJy4vdGV4dCc7XG5pbXBvcnQgeyBJbnRlcnBvbGF0aW9uLCBUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuZXhwb3J0IHR5cGUgRGF0ZVJhbmdlID0geyBtaW46IERhdGU7IG1heDogRGF0ZSB9O1xuXG5leHBvcnQgdHlwZSBEYXRlUGlja2VyUXVpY2tPcHRpb24gPVxuICB8ICd0b2RheSdcbiAgfCAndGhpc1dlZWsnXG4gIHwgJ3RoaXNNb250aCdcbiAgfCAndGhpc1llYXInXG4gIHwgJ2xhc3RTZXZlbkRheXMnXG4gIHwgJ2xhc3RUaGlydHlEYXlzJ1xuICB8IHsgbGFiZWw6IFJlYWN0Tm9kZTsgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCAoKCkgPT4gRGF0ZSB8IERhdGVSYW5nZSkgfVxuICB8ICgob25DaGFuZ2U6ICh2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpID0+IHZvaWQpID0+IFJlYWN0Tm9kZSk7XG5cbmV4cG9ydCB0eXBlIERhdGVQaWNrZXJQcm9wcyA9IHtcbiAgLyoqIEN1cnJlbnRseSBzZWxlY3RlZCBkYXkgb3IgcmFuZ2Ugb2YgZGF5cy4gKi9cbiAgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsO1xuICAvKiogQ2FsbGJhY2sgZm9yIHdoZW4gdGhlIGRheSAocmFuZ2UpIGNoYW5nZXMuICovXG4gIG9uQ2hhbmdlOiAodmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSA9PiB2b2lkO1xuICAvKiogQ3VycmVudGx5IHZpc2libGUgZGF0ZS4gKi9cbiAgZGF0ZUluVmlldz86IERhdGU7XG4gIC8qKiBDYWxsYmFjayBmb3Igd2hlbiB0aGUgY3VycmVudGx5IHZpc2libGUgZGF0ZSBjaGFuZ2VzLiAqL1xuICBvbkRhdGVJblZpZXdDaGFuZ2U/OiAodmFsdWU6IERhdGUpID0+IHZvaWQ7XG4gIC8qKiBJZiBlbmFibGVkLCByYW5nZXMgY2FuIGJlIHNlbGVjdGVkLiAqL1xuICByYW5nZVNlbGVjdD86IGJvb2xlYW47XG4gIC8qKiBXaGljaCBsb2NhbGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgY2FsZW5kYXIuICovXG4gIGxvY2FsZT86IHN0cmluZztcbiAgLyoqIFdoaWNoIGRheSBvZiB0aGUgd2VlayBzaG91bGQgYmUgaW4gdGhlIGZpcnN0IGNvbHVtbi4gKDA9U3VuZGF5LCAxPU1vbmRheSwgLi4uKVxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICBmaXJzdERheU9mV2Vlaz86IDAgfCAxIHwgMiB8IDMgfCA0IHwgNSB8IDY7XG4gIC8qKiBXaGljaCBtb250aCB0byBzaG93IGluaXRpYWxseSAqL1xuICBkZWZhdWx0RGF0ZUluVmlldz86IERhdGU7XG4gIC8qKiBTaG93IGJ1dHRvbnMgdG8gcXVpY2tseSBzZWxlY3Qgc3VnZ2VzdGVkIGRhdGVzIG9yIGRhdGUgcmFuZ2VzICovXG4gIHF1aWNrT3B0aW9ucz86IERhdGVQaWNrZXJRdWlja09wdGlvbltdO1xuICAvKiogTWluaW11bSBzZWxlY3RhYmxlIGRhdGUgKi9cbiAgLyoqIERhdGUgcmFuZ2VzIHRoYXQgYXJlIHZpc3VhbGx5IG1hcmtlZCBhcyBibG9ja2VkICovXG4gIGJsb2NrZWRSYW5nZXM/OiBEYXRlUmFuZ2VbXTtcbiAgbWluRGF0ZT86IERhdGU7XG4gIC8qKiBNYXhpbXVtIHNlbGVjdGFibGUgZGF0ZSAqL1xuICBtYXhEYXRlPzogRGF0ZTtcbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgY2FsZW5kYXIgd2VlayBpbiB0aGUgZmlyc3QgY29sdW1uICovXG4gIHNob3dDYWxlbmRhcldlZWs/OiBib29sZWFuO1xufTtcblxuY29uc3QgRGF0ZVBpY2tlckNvbnRleHQgPSBjcmVhdGVDb250ZXh0PFBhcnRpYWw8T21pdDxEYXRlUGlja2VyUHJvcHMsICd2YWx1ZScgfCAnb25DaGFuZ2UnPj4+KHt9KTtcblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVQaWNrZXJQcm92aWRlcih7XG4gIGNoaWxkcmVuLFxuICAuLi5wcm9wc1xufTogUGFydGlhbDxPbWl0PERhdGVQaWNrZXJQcm9wcywgJ3ZhbHVlJyB8ICdvbkNoYW5nZSc+PiAmIHsgY2hpbGRyZW4/OiBSZWFjdE5vZGUgfSkge1xuICBjb25zdCB2YWx1ZSA9IHVzZU1lbW8oKCkgPT4gcHJvcHMsIFtKU09OLnN0cmluZ2lmeShwcm9wcyldKTtcblxuICByZXR1cm4gPERhdGVQaWNrZXJDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt2YWx1ZX0+e2NoaWxkcmVufTwvRGF0ZVBpY2tlckNvbnRleHQuUHJvdmlkZXI+O1xufVxuXG5jb25zdCB3ZWVrRGF5cyA9IFswLCAxLCAyLCAzLCA0LCA1LCA2XSBhcyBjb25zdDtcblxuLyoqIFJvdW5kcyBhIGRhdGUgZG93biB0byB0aGUgc3RhcnQgb2YgdGhlIGRheS4gKi9cbmV4cG9ydCBjb25zdCBzdGFydE9mRGF5ID0gKGQ6IERhdGUpID0+IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgZC5nZXRNb250aCgpLCBkLmdldERhdGUoKSk7XG5cbi8qKiBSb3VuZHMgYSBkYXRlIHVwIHRvIHRoZSBlbmQgb2YgdGhlIGRheS4gKi9cbmV4cG9ydCBjb25zdCBlbmRPZkRheSA9IChkOiBEYXRlKSA9PlxuICBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIGQuZ2V0TW9udGgoKSwgZC5nZXREYXRlKCkgKyAxLCAwLCAwLCAwLCAtMSk7XG5cbmV4cG9ydCBjb25zdCBsYXN0RGF5cyA9IChkYXlzOiBudW1iZXIpOiBEYXRlUmFuZ2UgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBtaW4gPSBuZXcgRGF0ZShub3cpO1xuICBtaW4uc2V0RGF0ZShtaW4uZ2V0RGF0ZSgpIC0gZGF5cyArIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShub3cpLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHRvZGF5ID0gKCkgPT4gbGFzdERheXMoMSk7XG5cbmV4cG9ydCBjb25zdCB0aGlzV2VlayA9IChkZWx0YSA9IDAsIGZpcnN0RGF5T2ZXZWVrID0gMSk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG5cbiAgbGV0IGRpZmYgPSBtaW4uZ2V0RGF5KCkgLSBmaXJzdERheU9mV2VlaztcbiAgaWYgKGRpZmYgPCAwKSB7XG4gICAgZGlmZiArPSA3O1xuICB9XG4gIG1pbi5zZXREYXRlKG1pbi5nZXREYXRlKCkgLSBkaWZmICsgZGVsdGEgKiA3KTtcblxuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpICsgNik7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdGhpc01vbnRoID0gKGRlbHRhID0gMCk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG4gIG1pbi5zZXREYXRlKDEpO1xuICBtaW4uc2V0TW9udGgobWluLmdldE1vbnRoKCkgKyBkZWx0YSk7XG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXRNb250aChtYXguZ2V0TW9udGgoKSArIDEpO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpIC0gMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdGhpc1llYXIgPSAoZGVsdGEgPSAwKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcbiAgbWluLnNldERhdGUoMSk7XG4gIG1pbi5zZXRNb250aCgwKTtcbiAgbWluLnNldEZ1bGxZZWFyKG1pbi5nZXRGdWxsWWVhcigpICsgZGVsdGEpO1xuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0RnVsbFllYXIobWF4LmdldEZ1bGxZZWFyKCkgKyAxKTtcbiAgbWF4LnNldERhdGUobWF4LmdldERhdGUoKSAtIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShtYXgpLFxuICB9O1xufTtcblxuY29uc3QgTVNfUEVSX0RBWSA9IDEwMDAgKiA2MCAqIDYwICogMjQ7XG5leHBvcnQgY29uc3QgZ2V0Q2FsZW5kYXJXZWVrID0gKGRhdGU6IERhdGUpOiBudW1iZXIgPT4ge1xuICAvLyBJU08gODYwMTogV2VlayAxIGlzIHRoZSB3ZWVrIHdpdGggdGhlIGZpcnN0IFRodXJzZGF5IG9mIHRoZSB5ZWFyLlxuICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG5cbiAgY29uc3QgeSA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgY29uc3QgZmRveSA9IG5ldyBEYXRlKHksIDAsIDEpO1xuICBjb25zdCBkb3kgPSBNYXRoLmZsb29yKFxuICAgIChkYXRlLmdldFRpbWUoKSAtIGZkb3kuZ2V0VGltZSgpICsgKGRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSAtIGZkb3kuZ2V0VGltZXpvbmVPZmZzZXQoKSkpIC9cbiAgICAgIE1TX1BFUl9EQVksXG4gICk7XG4gIGNvbnN0IGRvdyA9IGZkb3kuZ2V0RGF5KCk7XG4gIGNvbnN0IHcgPSBNYXRoLmZsb29yKCgxMCArIGRveSAtIGRvdykgLyA3KTtcblxuICBpZiAodyA9PT0gMCkge1xuICAgIHJldHVybiBnZXRDYWxlbmRhcldlZWsobmV3IERhdGUoeSAtIDEsIDExLCAzMSkpO1xuICB9XG5cbiAgcmV0dXJuIHc7XG59O1xuXG5leHBvcnQgY29uc3QgY29tbW9uUXVpY2tPcHRpb25zID0ge1xuICB0b2RheTogeyBsYWJlbDogPFRleHQgaWQ9XCJ0b2RheVwiIC8+LCB2YWx1ZTogdG9kYXkgfSxcbiAgdGhpc1dlZWs6IHsgbGFiZWw6IDxUZXh0IGlkPVwidGhpc1dlZWtcIiAvPiwgdmFsdWU6IChwcm9wcykgPT4gdGhpc1dlZWsoMCwgcHJvcHMuZmlyc3REYXlPZldlZWspIH0sXG4gIHRoaXNNb250aDogeyBsYWJlbDogPFRleHQgaWQ9XCJ0aGlzTW9udGhcIiAvPiwgdmFsdWU6ICgpID0+IHRoaXNNb250aCgpIH0sXG4gIHRoaXNZZWFyOiB7IGxhYmVsOiA8VGV4dCBpZD1cInRoaXNZZWFyXCIgLz4sIHZhbHVlOiAoKSA9PiB0aGlzWWVhcigpIH0sXG4gIGxhc3RTZXZlbkRheXM6IHsgbGFiZWw6IDxUZXh0IGlkPVwibGFzdFNldmVuRGF5c1wiIC8+LCB2YWx1ZTogKCkgPT4gbGFzdERheXMoNykgfSxcbiAgbGFzdFRoaXJ0eURheXM6IHsgbGFiZWw6IDxUZXh0IGlkPVwibGFzdFRoaXJ0eURheXNcIiAvPiwgdmFsdWU6ICgpID0+IGxhc3REYXlzKDMwKSB9LFxufSBzYXRpc2ZpZXMgUmVjb3JkPFxuICBEYXRlUGlja2VyUXVpY2tPcHRpb24gJiBzdHJpbmcsXG4gIHsgbGFiZWw6IFJlYWN0Tm9kZTsgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCAoKHByb3BzOiBEYXRlUGlja2VyUHJvcHMpID0+IERhdGUgfCBEYXRlUmFuZ2UpIH1cbj47XG5cbi8qKiBSZXR1cm5zIHdoZXRoZXIgdHdvIGRhdGVzIGFuZC9vciBkYXRlIHJhbmdlcyBpbnRlcnNlY3QuIEludGVyc2VjdGlvbiBpcyBjb25zaWRlcmVkIHBlciBkYXkuICovXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUludGVyc2VjdChhOiBEYXRlIHwgbnVsbCB8IERhdGVSYW5nZSwgYjogRGF0ZSB8IG51bGwgfCBEYXRlUmFuZ2UpIHtcbiAgaWYgKGEgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgYSA9IHsgbWluOiBhLCBtYXg6IGEgfTtcbiAgfVxuICBpZiAoYiBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICBiID0geyBtaW46IGIsIG1heDogYiB9O1xuICB9XG5cbiAgaWYgKCFhPy5taW4gfHwgIWEubWF4IHx8ICFiPy5taW4gfHwgIWIubWF4KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuICEoZW5kT2ZEYXkoYS5tYXgpIDwgc3RhcnRPZkRheShiLm1pbikgfHwgc3RhcnRPZkRheShhLm1pbikgPiBlbmRPZkRheShiLm1heCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUNsYW1wKGRhdGU6IERhdGUsIG1pbj86IERhdGUsIG1heD86IERhdGUpIHtcbiAgaWYgKG1pbiAmJiBkYXRlIDwgbWluKSB7XG4gICAgcmV0dXJuIG1pbjtcbiAgfVxuXG4gIGlmIChtYXggJiYgZGF0ZSA+IG1heCkge1xuICAgIHJldHVybiBtYXg7XG4gIH1cblxuICByZXR1cm4gZGF0ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVQaWNrZXIocHJvcHM6IERhdGVQaWNrZXJQcm9wcykge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChEYXRlUGlja2VyQ29udGV4dCk7XG5cbiAgY29uc3Qge1xuICAgIHZhbHVlLFxuICAgIHJhbmdlU2VsZWN0LFxuICAgIGxvY2FsZSxcbiAgICBmaXJzdERheU9mV2VlayA9IDEsXG4gICAgZGVmYXVsdERhdGVJblZpZXcsXG4gICAgcXVpY2tPcHRpb25zID0gWyd0b2RheScsICd0aGlzV2VlayddLFxuICAgIG1pbkRhdGUsXG4gICAgbWF4RGF0ZSxcbiAgICBzaG93Q2FsZW5kYXJXZWVrLFxuICAgIGJsb2NrZWRSYW5nZXMgPSBbXSxcbiAgfSA9IGRlZmF1bHRzPERhdGVQaWNrZXJQcm9wcz4ocHJvcHMsIGNvbnRleHQpO1xuXG4gIGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCkge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIHZhbHVlID0gZGF0ZUNsYW1wKHZhbHVlLCBtaW5EYXRlLCBtYXhEYXRlKTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICB2YWx1ZSA9IHtcbiAgICAgICAgbWluOiBkYXRlQ2xhbXAodmFsdWUubWluLCBtaW5EYXRlLCBtYXhEYXRlKSxcbiAgICAgICAgbWF4OiBkYXRlQ2xhbXAodmFsdWUubWF4LCBtaW5EYXRlLCBtYXhEYXRlKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcHJvcHMub25DaGFuZ2UodmFsdWUpO1xuICB9XG5cbiAgY29uc3QgQnV0dG9uID0gdXNlVGhlbWUoKHQpID0+IHQuY29tcG9uZW50cy5CdXR0b24pO1xuICBjb25zdCBJY29uQnV0dG9uID0gdXNlVGhlbWUoKHQpID0+IHQuY29tcG9uZW50cy5JY29uQnV0dG9uKTtcbiAgY29uc3QgQ2hldnJvblJpZ2h0ID0gdXNlVGhlbWUoKHQpID0+IHQuaWNvbnMuQ2hldnJvblJpZ2h0KTtcbiAgY29uc3QgY3NzVmFyaWFibGVzID0gdXNlQ3NzVmFyaWFibGVzKCk7XG4gIGZ1bmN0aW9uIGdldERheUNzc1N0eWxlcyh7XG4gICAgZGlzYWJsZWQsXG4gICAgcHJldk1vbnRoLFxuICAgIG5leHRNb250aCxcbiAgICB0b2RheSxcbiAgICBibG9ja2VkLFxuICAgIHNlbGVjdGVkLFxuICAgIHByZVNlbGVjdGVkLFxuICB9OiB7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIHByZXZNb250aD86IGJvb2xlYW47XG4gICAgbmV4dE1vbnRoPzogYm9vbGVhbjtcbiAgICB0b2RheT86IGJvb2xlYW47XG4gICAgYmxvY2tlZD86IGJvb2xlYW47XG4gICAgc2VsZWN0ZWQ/OiBib29sZWFuO1xuICAgIHByZVNlbGVjdGVkPzogYm9vbGVhbjtcbiAgfSk6IEludGVycG9sYXRpb248VGhlbWU+IHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgIGN1cnNvcjogZGlzYWJsZWQgPyB1bmRlZmluZWQgOiAncG9pbnRlcicsXG4gICAgICAgIGZvbnQ6ICdpbmhlcml0JyxcbiAgICAgIH0sXG4gICAgICAocHJldk1vbnRoIHx8IG5leHRNb250aCkgJiYge1xuICAgICAgICBjb2xvcjogZ3JheSxcbiAgICAgIH0sXG4gICAgICB0b2RheSAmJiB7XG4gICAgICAgIG91dGxpbmU6ICcxcHggc29saWQgdmFyKC0tc2Vjb25kYXJ5TWFpbiknLFxuICAgICAgfSxcbiAgICAgIGJsb2NrZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tYmxvY2tlZE1haW4pJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1ibG9ja2VkQ29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgICAgc2VsZWN0ZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tcHJpbWFyeU1haW4pJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1wcmltYXJ5Q29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgICAgYmxvY2tlZCAmJlxuICAgICAgICBzZWxlY3RlZCAmJiB7XG4gICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgICAgJzo6YmVmb3JlJzoge1xuICAgICAgICAgICAgY29udGVudDogJ1wiXCInLFxuICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICByaWdodDogMCxcbiAgICAgICAgICAgIGJvdHRvbTogMCxcbiAgICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tYmxvY2tlZE1haW4pJyxcbiAgICAgICAgICAgIGNsaXBQYXRoOiAncG9seWdvbigwIDAsIDAgNTAlLCA1MCUgMCknLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBwcmVTZWxlY3RlZCAmJiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1wcmltYXJ5TGlnaHQpJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1wcmltYXJ5Q29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICBjb25zdCBtb3VudFRpbWUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKCksIFtdKTtcbiAgY29uc3QgW2RpcnR5LCBzZXREaXJ0eV0gPSB1c2VTdGF0ZTxQYXJ0aWFsPERhdGVSYW5nZT4+KCk7XG4gIGNvbnN0IFtob3ZlcmVkLCBzZXRIb3ZlcmVkXSA9IHVzZVN0YXRlPERhdGU+KCk7XG4gIGNvbnN0IFtkYXRlSW5WaWV3TG9jYWwsIHNldERhdGVJblZpZXdMb2NhbF0gPSB1c2VTdGF0ZTxEYXRlPihkZWZhdWx0RGF0ZUluVmlldyA/PyBtb3VudFRpbWUpO1xuICBjb25zdCBkYXRlSW5WaWV3ID0gcHJvcHMuZGF0ZUluVmlldyA/PyBkYXRlSW5WaWV3TG9jYWw7XG5cbiAgZnVuY3Rpb24gc2V0RGF0ZUluVmlldyhkYXRlOiBEYXRlKSB7XG4gICAgc2V0RGF0ZUluVmlld0xvY2FsKGRhdGUpO1xuICAgIHByb3BzLm9uRGF0ZUluVmlld0NoYW5nZT8uKGRhdGUpO1xuICB9XG5cbiAgY29uc3QgbWluID0gZGlydHkgPyBkaXJ0eS5taW4gOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlPy5taW47XG4gIGNvbnN0IG1heCA9IGRpcnR5ID8gZGlydHkubWF4IDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZT8ubWF4O1xuXG4gIGNvbnN0IHJlc29sdmVkUXVpY2tPcHRpb25zID0gWy4uLnF1aWNrT3B0aW9ucywgeyBsYWJlbDogPFRleHQgaWQ9XCJyZXNldFwiIC8+LCB2YWx1ZTogbnVsbCB9XS5tYXAoXG4gICAgKG9wdGlvbiwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChvcHRpb24gaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICByZXR1cm4gb3B0aW9uKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBsYWJlbCwgdmFsdWUgfSA9IHR5cGVvZiBvcHRpb24gPT09ICdzdHJpbmcnID8gY29tbW9uUXVpY2tPcHRpb25zW29wdGlvbl0gOiBvcHRpb247XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuXG4gICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICAgICAgICBvbkNoYW5nZSh2YWx1ZShwcm9wcykpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7bGFiZWx9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKTtcbiAgICB9LFxuICApO1xuXG4gIGNvbnN0IHsgY2FsZW5kYXJzLCBnZXRCYWNrUHJvcHMsIGdldEZvcndhcmRQcm9wcywgZ2V0RGF0ZVByb3BzIH0gPSB1c2VEYXl6ZWQoe1xuICAgIG9uRGF0ZVNlbGVjdGVkOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgZmlyc3REYXlPZldlZWssXG4gICAgc2hvd091dHNpZGVEYXlzOiB0cnVlLFxuICAgIGRhdGU6IGRhdGVJblZpZXcsXG4gICAgb25PZmZzZXRDaGFuZ2VkOiAob2Zmc2V0KSA9PlxuICAgICAgc2V0RGF0ZUluVmlldyhuZXcgRGF0ZShkYXRlSW5WaWV3LmdldEZ1bGxZZWFyKCksIGRhdGVJblZpZXcuZ2V0TW9udGgoKSArIG9mZnNldCkpLFxuICAgIG9mZnNldDogMCxcbiAgICBtaW5EYXRlLFxuICAgIG1heERhdGUsXG4gIH0pO1xuICBjb25zdCBub3cgPSB1c2VNZW1vKCgpID0+IHN0YXJ0T2ZEYXkobmV3IERhdGUoKSksIFtdKTtcblxuICBjb25zdCBmb3JtYXRXZWVrZGF5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyB3ZWVrZGF5OiAnc2hvcnQnIH0pO1xuICAgIHJldHVybiAod2Vla0RheTogbnVtYmVyKSA9PlxuICAgICAgZm9ybWF0KG5ldyBEYXRlKERhdGUuVVRDKDIwMjEsIDcsICgod2Vla0RheSArIGZpcnN0RGF5T2ZXZWVrKSAlIDcpICsgMSkpKTtcbiAgfSwgW2xvY2FsZSwgZmlyc3REYXlPZldlZWtdKTtcblxuICB1c2VFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHNldERhdGVJblZpZXcoXG4gICAgICAgIHZhbHVlID09PSBudWxsID8gZGVmYXVsdERhdGVJblZpZXcgPz8gbW91bnRUaW1lIDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZS5tYXgsXG4gICAgICApLFxuICAgIFt2YWx1ZSwgZGVmYXVsdERhdGVJblZpZXcsIG1vdW50VGltZV0sXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXJhbmdlU2VsZWN0KSB7XG4gICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuICAgIH1cbiAgfSwgW3JhbmdlU2VsZWN0XSk7XG5cbiAgZnVuY3Rpb24gc2V0KG1pbj86IERhdGUsIG1heD86IERhdGUsIGVkaXQ/OiAnbWluJyB8ICdtYXgnKSB7XG4gICAgaWYgKCFyYW5nZVNlbGVjdCkge1xuICAgICAgb25DaGFuZ2UobWluID8/IG51bGwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChtaW4gJiYgbWF4ICYmIG1pbiA+IG1heCkge1xuICAgICAgaWYgKGVkaXQgPT09ICdtaW4nKSB7XG4gICAgICAgIG1heCA9IG1pbjtcbiAgICAgIH0gZWxzZSBpZiAoZWRpdCA9PT0gJ21heCcpIHtcbiAgICAgICAgbWluID0gbWF4O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgW21pbiwgbWF4XSA9IFttYXgsIG1pbl07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFtaW4gPT09ICFtYXgpIHtcbiAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgICBvbkNoYW5nZShtaW4gJiYgbWF4ID8geyBtaW4sIG1heDogZW5kT2ZEYXkobWF4KSB9IDogbnVsbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldERpcnR5KHsgbWluLCBtYXggfSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZm9ybWF0TW9udGggPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IGZvcm1hdCB9ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IG1vbnRoOiAnbG9uZycgfSk7XG4gICAgcmV0dXJuIChtb250aDogbnVtYmVyKSA9PiBmb3JtYXQobmV3IERhdGUoMjAyMSwgbW9udGgpKTtcbiAgfSwgW2xvY2FsZV0pO1xuXG4gIGNvbnN0IGZvcm1hdFllYXIgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IGZvcm1hdCB9ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IHllYXI6ICdudW1lcmljJyB9KTtcbiAgICByZXR1cm4gKHllYXI6IG51bWJlcikgPT4gZm9ybWF0KG5ldyBEYXRlKHllYXIsIDAsIDEpKTtcbiAgfSwgW2xvY2FsZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjc3M9e2Nzc1ZhcmlhYmxlc30+XG4gICAgICA8ZGl2XG4gICAgICAgIGNzcz17e1xuICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICBhbGlnbkl0ZW1zOiAnYmFzZWxpbmUnLFxuICAgICAgICAgIGdhcDogJ3ZhcigtLXNwYWNpbmcpJyxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPERhdGVJbnB1dFxuICAgICAgICAgIHZhbHVlPXttaW4gPz8gbnVsbH1cbiAgICAgICAgICBvbkNoYW5nZT17KGRhdGUpID0+IHNldChkYXRlID8/IHVuZGVmaW5lZCwgbWF4LCAnbWluJyl9XG4gICAgICAgICAgbG9jYWxlPXtsb2NhbGV9XG4gICAgICAgIC8+XG5cbiAgICAgICAge3JhbmdlU2VsZWN0ICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgeycgLSAnfVxuICAgICAgICAgICAgPERhdGVJbnB1dFxuICAgICAgICAgICAgICB2YWx1ZT17bWF4ID8/IG51bGx9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZGF0ZSkgPT4gc2V0KG1pbiwgZGF0ZSA/PyB1bmRlZmluZWQsICdtYXgnKX1cbiAgICAgICAgICAgICAgbG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvPlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIHtjYWxlbmRhcnMubWFwKCh7IG1vbnRoLCB5ZWFyLCB3ZWVrcyB9KSA9PiAoXG4gICAgICAgIDxkaXYga2V5PXtgJHttb250aH0ke3llYXJ9YH0gY3NzPXt7IGRpc3BsYXk6ICdncmlkJyB9fT5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgbWFyZ2luOiAnY2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpIDAnLFxuICAgICAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgICAgIGdyaWRBdXRvRmxvdzogJ2NvbHVtbicsXG4gICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnc3BhY2UtYmV0d2VlbicsXG4gICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8SWNvbkJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgey4uLmdldEJhY2tQcm9wcyh7IGNhbGVuZGFycyB9KX0+XG4gICAgICAgICAgICAgIDxDaGV2cm9uUmlnaHQgY3NzPXt7IHRyYW5zZm9ybTogJ3JvdGF0ZTNkKDAsIDAsIDEsIDE4MGRlZyknIH19IC8+XG4gICAgICAgICAgICA8L0ljb25CdXR0b24+XG5cbiAgICAgICAgICAgIDxkaXYgY3NzPXt7IGRpc3BsYXk6ICdmbGV4JyB9fT5cbiAgICAgICAgICAgICAge2Zvcm1hdE1vbnRoKG1vbnRoKX0ge2Zvcm1hdFllYXIoeWVhcil9XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPEljb25CdXR0b24gdHlwZT1cImJ1dHRvblwiIHsuLi5nZXRGb3J3YXJkUHJvcHMoeyBjYWxlbmRhcnMgfSl9PlxuICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0IC8+XG4gICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAganVzdGlmeVNlbGY6ICdjZW50ZXInLFxuICAgICAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgICAgIGdyaWRUZW1wbGF0ZUNvbHVtbnM6ICdyZXBlYXQoOCwgbWF4LWNvbnRlbnQpJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3Nob3dDYWxlbmRhcldlZWsgPyAoXG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgICAgYm9yZGVyUmlnaHQ6IGAxcHggc29saWQgJHtncmF5fWAsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxUZXh0IGlkPVwiY2FsZW5kYXJXZWVrXCIgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8ZGl2IC8+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7d2Vla0RheXMubWFwKChfdiwgd2Vla0RheSkgPT4gKFxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAga2V5PXt3ZWVrRGF5fVxuICAgICAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICAgICAganVzdGlmeVNlbGY6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtmb3JtYXRXZWVrZGF5KHdlZWtEYXkpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkpfVxuXG4gICAgICAgICAgICB7d2Vla3MubWFwKCh3ZWVrLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrU3RhcnQgPSB3ZWVrWzBdIGFzIERhdGVPYmo7XG4gICAgICAgICAgICAgIGNvbnN0IHdlZWtFbmQgPSB3ZWVrWzZdIGFzIERhdGVPYmo7XG4gICAgICAgICAgICAgIGNvbnN0IHdlZWtEaXNhYmxlZCA9XG4gICAgICAgICAgICAgICAgIXJhbmdlU2VsZWN0IHx8XG4gICAgICAgICAgICAgICAgKG1pbkRhdGUgJiYgd2Vla0VuZC5kYXRlIDwgbWluRGF0ZSkgfHxcbiAgICAgICAgICAgICAgICAobWF4RGF0ZSAmJiB3ZWVrU3RhcnQuZGF0ZSA+IG1heERhdGUpO1xuXG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPEZyYWdtZW50IGtleT17aW5kZXh9PlxuICAgICAgICAgICAgICAgICAge3Nob3dDYWxlbmRhcldlZWsgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiB3ZWVrRGlzYWJsZWQgPyB1bmRlZmluZWQgOiAncG9pbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb250OiAnaW5oZXJpdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSaWdodDogYDFweCBzb2xpZCAke2dyYXl9YCxcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3ZWVrRGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtaW4gPSBtaW5EYXRlICYmIHdlZWtTdGFydC5kYXRlIDwgbWluRGF0ZSA/IG1pbkRhdGUgOiB3ZWVrU3RhcnQuZGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1heCA9IG1heERhdGUgJiYgd2Vla0VuZC5kYXRlID4gbWF4RGF0ZSA/IG1heERhdGUgOiB3ZWVrRW5kLmRhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXQobWluLCBtYXgpO1xuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7Z2V0Q2FsZW5kYXJXZWVrKCh3ZWVrWzBdIGFzIERhdGVPYmopLmRhdGUpfVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICAgIHt3ZWVrLm1hcCgoZGF0ZU9iamVjdCwgZGF5SW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFkYXRlT2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxkaXYga2V5PXtkYXlJbmRleH0gLz47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHByZXZNb250aCwgbmV4dE1vbnRoLCBkYXRlIH0gPSBkYXRlT2JqZWN0O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0b2RheSA9IHN0YXJ0T2ZEYXkoZGF0ZSkuZ2V0VGltZSgpID09PSBub3cuZ2V0VGltZSgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXNhYmxlZCA9IChtaW5EYXRlICYmIGRhdGUgPCBtaW5EYXRlKSB8fCAobWF4RGF0ZSAmJiBkYXRlID4gbWF4RGF0ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPVxuICAgICAgICAgICAgICAgICAgICAgIGRhdGUuZ2V0VGltZSgpID09PSBtaW4/LmdldFRpbWUoKSB8fFxuICAgICAgICAgICAgICAgICAgICAgIChtaW4gJiYgbWF4ICYmIGRhdGVJbnRlcnNlY3QoZGF0ZSwgeyBtaW4sIG1heCB9KSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZVNlbGVjdGVkID1cbiAgICAgICAgICAgICAgICAgICAgICAhc2VsZWN0ZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAhZGlzYWJsZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAoZGF0ZS5nZXRUaW1lKCkgPT09IGhvdmVyZWQ/LmdldFRpbWUoKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKG1pbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAhbWF4ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZUludGVyc2VjdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbiA8PSBob3ZlcmVkID8geyBtaW4sIG1heDogaG92ZXJlZCB9IDogeyBtaW46IGhvdmVyZWQsIG1heDogbWluIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tlZCA9IGJsb2NrZWRSYW5nZXMuc29tZSgocmFuZ2UpID0+IGRhdGVJbnRlcnNlY3QoZGF0ZSwgcmFuZ2UpKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtgJHtpbmRleH0tJHtkYXlJbmRleH1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtnZXREYXlDc3NTdHlsZXMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldk1vbnRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0TW9udGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRvZGF5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja2VkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlU2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5nZXREYXRlUHJvcHMoeyBkYXRlT2JqOiBkYXRlT2JqZWN0IH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGlydHkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWluKSBzZXQobWluLCBkYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHNldChkYXRlLCBtYXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldChkYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlck92ZXI9eygpID0+IHNldEhvdmVyZWQoZGF0ZSl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJPdXQ9eygpID0+IHNldEhvdmVyZWQodW5kZWZpbmVkKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7ZGF0ZS5nZXREYXRlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKSl9XG5cbiAgICAgIDxkaXZcbiAgICAgICAgY3NzPXt7XG4gICAgICAgICAgbWFyZ2luVG9wOiAndmFyKC0tc3BhY2luZyknLFxuICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAge3Jlc29sdmVkUXVpY2tPcHRpb25zfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iXX0= */"), children: /* @__PURE__ */ jsx(Text, { id: "calendarWeek" }) }) : /* @__PURE__ */ jsx("div", {}),
1225
+ }, process.env.NODE_ENV === "production" ? "" : ";label:DatePicker;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2RhdGVQaWNrZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWtmZ0IiLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvc2NodW1tYXItdGFibGUvc2NodW1tYXItdGFibGUvc3JjL2NvbXBvbmVudHMvZGF0ZVBpY2tlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlT2JqLCB1c2VEYXl6ZWQgfSBmcm9tICdkYXl6ZWQnO1xuaW1wb3J0IHtcbiAgRnJhZ21lbnQsXG4gIFJlYWN0Tm9kZSxcbiAgY3JlYXRlQ29udGV4dCxcbiAgdXNlQ29udGV4dCxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICcuLi9ob29rcy91c2VUaGVtZSc7XG5pbXBvcnQgeyBkZWZhdWx0cyB9IGZyb20gJy4uL21pc2MvZGVmYXVsdHMnO1xuaW1wb3J0IHsgZ3JheSB9IGZyb20gJy4uL3RoZW1lL2RlZmF1bHRUaGVtZS9kZWZhdWx0Q2xhc3Nlcyc7XG5pbXBvcnQgeyB1c2VDc3NWYXJpYWJsZXMgfSBmcm9tICcuLi90aGVtZS91c2VDc3NWYXJpYWJsZXMnO1xuaW1wb3J0IHsgRGF0ZUlucHV0IH0gZnJvbSAnLi9kYXRlSW5wdXQnO1xuaW1wb3J0IHsgVGV4dCB9IGZyb20gJy4vdGV4dCc7XG5pbXBvcnQgeyBJbnRlcnBvbGF0aW9uLCBUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuZXhwb3J0IHR5cGUgRGF0ZVJhbmdlID0geyBtaW46IERhdGU7IG1heDogRGF0ZSB9O1xuXG5leHBvcnQgdHlwZSBEYXRlUGlja2VyUXVpY2tPcHRpb24gPVxuICB8ICd0b2RheSdcbiAgfCAndGhpc1dlZWsnXG4gIHwgJ3RoaXNNb250aCdcbiAgfCAndGhpc1llYXInXG4gIHwgJ2xhc3RTZXZlbkRheXMnXG4gIHwgJ2xhc3RUaGlydHlEYXlzJ1xuICB8IHsgbGFiZWw6IFJlYWN0Tm9kZTsgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCAoKCkgPT4gRGF0ZSB8IERhdGVSYW5nZSkgfVxuICB8ICgob25DaGFuZ2U6ICh2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpID0+IHZvaWQpID0+IFJlYWN0Tm9kZSk7XG5cbmV4cG9ydCB0eXBlIERhdGVQaWNrZXJQcm9wcyA9IHtcbiAgLyoqIEN1cnJlbnRseSBzZWxlY3RlZCBkYXkgb3IgcmFuZ2Ugb2YgZGF5cy4gKi9cbiAgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsO1xuICAvKiogQ2FsbGJhY2sgZm9yIHdoZW4gdGhlIGRheSAocmFuZ2UpIGNoYW5nZXMuICovXG4gIG9uQ2hhbmdlOiAodmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSA9PiB2b2lkO1xuICAvKiogQ3VycmVudGx5IHZpc2libGUgZGF0ZS4gKi9cbiAgZGF0ZUluVmlldz86IERhdGU7XG4gIC8qKiBDYWxsYmFjayBmb3Igd2hlbiB0aGUgY3VycmVudGx5IHZpc2libGUgZGF0ZSBjaGFuZ2VzLiAqL1xuICBvbkRhdGVJblZpZXdDaGFuZ2U/OiAodmFsdWU6IERhdGUpID0+IHZvaWQ7XG4gIC8qKiBJZiBlbmFibGVkLCByYW5nZXMgY2FuIGJlIHNlbGVjdGVkLiAqL1xuICByYW5nZVNlbGVjdD86IGJvb2xlYW47XG4gIC8qKiBXaGljaCBsb2NhbGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgY2FsZW5kYXIuICovXG4gIGxvY2FsZT86IHN0cmluZztcbiAgLyoqIFdoaWNoIGRheSBvZiB0aGUgd2VlayBzaG91bGQgYmUgaW4gdGhlIGZpcnN0IGNvbHVtbi4gKDA9U3VuZGF5LCAxPU1vbmRheSwgLi4uKVxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICBmaXJzdERheU9mV2Vlaz86IDAgfCAxIHwgMiB8IDMgfCA0IHwgNSB8IDY7XG4gIC8qKiBXaGljaCBtb250aCB0byBzaG93IGluaXRpYWxseSAqL1xuICBkZWZhdWx0RGF0ZUluVmlldz86IERhdGU7XG4gIC8qKiBTaG93IGJ1dHRvbnMgdG8gcXVpY2tseSBzZWxlY3Qgc3VnZ2VzdGVkIGRhdGVzIG9yIGRhdGUgcmFuZ2VzICovXG4gIHF1aWNrT3B0aW9ucz86IERhdGVQaWNrZXJRdWlja09wdGlvbltdO1xuICAvKiogTWluaW11bSBzZWxlY3RhYmxlIGRhdGUgKi9cbiAgLyoqIERhdGUgcmFuZ2VzIHRoYXQgYXJlIHZpc3VhbGx5IG1hcmtlZCBhcyBibG9ja2VkICovXG4gIGJsb2NrZWRSYW5nZXM/OiBEYXRlUmFuZ2VbXTtcbiAgbWluRGF0ZT86IERhdGU7XG4gIC8qKiBNYXhpbXVtIHNlbGVjdGFibGUgZGF0ZSAqL1xuICBtYXhEYXRlPzogRGF0ZTtcbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgY2FsZW5kYXIgd2VlayBpbiB0aGUgZmlyc3QgY29sdW1uICovXG4gIHNob3dDYWxlbmRhcldlZWs/OiBib29sZWFuO1xufTtcblxuY29uc3QgRGF0ZVBpY2tlckNvbnRleHQgPSBjcmVhdGVDb250ZXh0PFBhcnRpYWw8T21pdDxEYXRlUGlja2VyUHJvcHMsICd2YWx1ZScgfCAnb25DaGFuZ2UnPj4+KHt9KTtcblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVQaWNrZXJQcm92aWRlcih7XG4gIGNoaWxkcmVuLFxuICAuLi5wcm9wc1xufTogUGFydGlhbDxPbWl0PERhdGVQaWNrZXJQcm9wcywgJ3ZhbHVlJyB8ICdvbkNoYW5nZSc+PiAmIHsgY2hpbGRyZW4/OiBSZWFjdE5vZGUgfSkge1xuICBjb25zdCB2YWx1ZSA9IHVzZU1lbW8oKCkgPT4gcHJvcHMsIFtKU09OLnN0cmluZ2lmeShwcm9wcyldKTtcblxuICByZXR1cm4gPERhdGVQaWNrZXJDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt2YWx1ZX0+e2NoaWxkcmVufTwvRGF0ZVBpY2tlckNvbnRleHQuUHJvdmlkZXI+O1xufVxuXG5jb25zdCB3ZWVrRGF5cyA9IFswLCAxLCAyLCAzLCA0LCA1LCA2XSBhcyBjb25zdDtcblxuLyoqIFJvdW5kcyBhIGRhdGUgZG93biB0byB0aGUgc3RhcnQgb2YgdGhlIGRheS4gKi9cbmV4cG9ydCBjb25zdCBzdGFydE9mRGF5ID0gKGQ6IERhdGUpID0+IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgZC5nZXRNb250aCgpLCBkLmdldERhdGUoKSk7XG5cbi8qKiBSb3VuZHMgYSBkYXRlIHVwIHRvIHRoZSBlbmQgb2YgdGhlIGRheS4gKi9cbmV4cG9ydCBjb25zdCBlbmRPZkRheSA9IChkOiBEYXRlKSA9PlxuICBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIGQuZ2V0TW9udGgoKSwgZC5nZXREYXRlKCkgKyAxLCAwLCAwLCAwLCAtMSk7XG5cbmV4cG9ydCBjb25zdCBsYXN0RGF5cyA9IChkYXlzOiBudW1iZXIpOiBEYXRlUmFuZ2UgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBtaW4gPSBuZXcgRGF0ZShub3cpO1xuICBtaW4uc2V0RGF0ZShtaW4uZ2V0RGF0ZSgpIC0gZGF5cyArIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShub3cpLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHRvZGF5ID0gKCkgPT4gbGFzdERheXMoMSk7XG5cbmV4cG9ydCBjb25zdCB0aGlzV2VlayA9IChkZWx0YSA9IDAsIGZpcnN0RGF5T2ZXZWVrID0gMSk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG5cbiAgbGV0IGRpZmYgPSBtaW4uZ2V0RGF5KCkgLSBmaXJzdERheU9mV2VlaztcbiAgaWYgKGRpZmYgPCAwKSB7XG4gICAgZGlmZiArPSA3O1xuICB9XG4gIG1pbi5zZXREYXRlKG1pbi5nZXREYXRlKCkgLSBkaWZmICsgZGVsdGEgKiA3KTtcblxuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpICsgNik7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdGhpc01vbnRoID0gKGRlbHRhID0gMCk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG4gIG1pbi5zZXREYXRlKDEpO1xuICBtaW4uc2V0TW9udGgobWluLmdldE1vbnRoKCkgKyBkZWx0YSk7XG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXRNb250aChtYXguZ2V0TW9udGgoKSArIDEpO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpIC0gMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdGhpc1llYXIgPSAoZGVsdGEgPSAwKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcbiAgbWluLnNldERhdGUoMSk7XG4gIG1pbi5zZXRNb250aCgwKTtcbiAgbWluLnNldEZ1bGxZZWFyKG1pbi5nZXRGdWxsWWVhcigpICsgZGVsdGEpO1xuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0RnVsbFllYXIobWF4LmdldEZ1bGxZZWFyKCkgKyAxKTtcbiAgbWF4LnNldERhdGUobWF4LmdldERhdGUoKSAtIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShtYXgpLFxuICB9O1xufTtcblxuY29uc3QgTVNfUEVSX0RBWSA9IDEwMDAgKiA2MCAqIDYwICogMjQ7XG5leHBvcnQgY29uc3QgZ2V0Q2FsZW5kYXJXZWVrID0gKGRhdGU6IERhdGUpOiBudW1iZXIgPT4ge1xuICAvLyBJU08gODYwMTogV2VlayAxIGlzIHRoZSB3ZWVrIHdpdGggdGhlIGZpcnN0IFRodXJzZGF5IG9mIHRoZSB5ZWFyLlxuICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG5cbiAgY29uc3QgZW5kT2ZXZWVrID0gbmV3IERhdGUoXG4gICAgZGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgIGRhdGUuZ2V0TW9udGgoKSxcbiAgICBkYXRlLmdldERhdGUoKSArICg3IC0gKGRhdGUuZ2V0RGF5KCkgfHwgNykpLFxuICApO1xuXG4gIGNvbnN0IHllYXIgPSBlbmRPZldlZWsuZ2V0RnVsbFllYXIoKTtcbiAgY29uc3QgZmlyc3REYXlPZlllYXIgPSBuZXcgRGF0ZSh5ZWFyLCAwLCAxKTtcbiAgY29uc3QgZGF5T2ZZZWFyID1cbiAgICBNYXRoLmZsb29yKFxuICAgICAgKGVuZE9mV2Vlay5nZXRUaW1lKCkgLVxuICAgICAgICBmaXJzdERheU9mWWVhci5nZXRUaW1lKCkgK1xuICAgICAgICAoZW5kT2ZXZWVrLmdldFRpbWV6b25lT2Zmc2V0KCkgLSBmaXJzdERheU9mWWVhci5nZXRUaW1lem9uZU9mZnNldCgpKSkgL1xuICAgICAgICBNU19QRVJfREFZLFxuICAgICkgKyAxO1xuICBjb25zdCB3ZWVrT2ZZZWFyID0gTWF0aC5mbG9vcigoMyArIGRheU9mWWVhcikgLyA3KTtcblxuICBpZiAod2Vla09mWWVhciA9PT0gMCkge1xuICAgIHJldHVybiAoXG4gICAgICBnZXRDYWxlbmRhcldlZWsoXG4gICAgICAgIG5ldyBEYXRlKGVuZE9mV2Vlay5nZXRGdWxsWWVhcigpLCBlbmRPZldlZWsuZ2V0TW9udGgoKSwgZW5kT2ZXZWVrLmdldERhdGUoKSAtIDcpLFxuICAgICAgKSArIDFcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIHdlZWtPZlllYXI7XG59O1xuXG5leHBvcnQgY29uc3QgY29tbW9uUXVpY2tPcHRpb25zID0ge1xuICB0b2RheTogeyBsYWJlbDogPFRleHQgaWQ9XCJ0b2RheVwiIC8+LCB2YWx1ZTogdG9kYXkgfSxcbiAgdGhpc1dlZWs6IHsgbGFiZWw6IDxUZXh0IGlkPVwidGhpc1dlZWtcIiAvPiwgdmFsdWU6IChwcm9wcykgPT4gdGhpc1dlZWsoMCwgcHJvcHMuZmlyc3REYXlPZldlZWspIH0sXG4gIHRoaXNNb250aDogeyBsYWJlbDogPFRleHQgaWQ9XCJ0aGlzTW9udGhcIiAvPiwgdmFsdWU6ICgpID0+IHRoaXNNb250aCgpIH0sXG4gIHRoaXNZZWFyOiB7IGxhYmVsOiA8VGV4dCBpZD1cInRoaXNZZWFyXCIgLz4sIHZhbHVlOiAoKSA9PiB0aGlzWWVhcigpIH0sXG4gIGxhc3RTZXZlbkRheXM6IHsgbGFiZWw6IDxUZXh0IGlkPVwibGFzdFNldmVuRGF5c1wiIC8+LCB2YWx1ZTogKCkgPT4gbGFzdERheXMoNykgfSxcbiAgbGFzdFRoaXJ0eURheXM6IHsgbGFiZWw6IDxUZXh0IGlkPVwibGFzdFRoaXJ0eURheXNcIiAvPiwgdmFsdWU6ICgpID0+IGxhc3REYXlzKDMwKSB9LFxufSBzYXRpc2ZpZXMgUmVjb3JkPFxuICBEYXRlUGlja2VyUXVpY2tPcHRpb24gJiBzdHJpbmcsXG4gIHsgbGFiZWw6IFJlYWN0Tm9kZTsgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCAoKHByb3BzOiBEYXRlUGlja2VyUHJvcHMpID0+IERhdGUgfCBEYXRlUmFuZ2UpIH1cbj47XG5cbi8qKiBSZXR1cm5zIHdoZXRoZXIgdHdvIGRhdGVzIGFuZC9vciBkYXRlIHJhbmdlcyBpbnRlcnNlY3QuIEludGVyc2VjdGlvbiBpcyBjb25zaWRlcmVkIHBlciBkYXkuICovXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUludGVyc2VjdChcbiAgYTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwgfCB1bmRlZmluZWQsXG4gIGI6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsIHwgdW5kZWZpbmVkLFxuKSB7XG4gIGlmIChhIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIGEgPSB7IG1pbjogYSwgbWF4OiBhIH07XG4gIH1cbiAgaWYgKGIgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgYiA9IHsgbWluOiBiLCBtYXg6IGIgfTtcbiAgfVxuXG4gIGlmICghYT8ubWluIHx8ICFhLm1heCB8fCAhYj8ubWluIHx8ICFiLm1heCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiAhKGVuZE9mRGF5KGEubWF4KSA8IHN0YXJ0T2ZEYXkoYi5taW4pIHx8IHN0YXJ0T2ZEYXkoYS5taW4pID4gZW5kT2ZEYXkoYi5tYXgpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGVDbGFtcChkYXRlOiBEYXRlLCBtaW4/OiBEYXRlLCBtYXg/OiBEYXRlKSB7XG4gIGlmIChtaW4gJiYgZGF0ZSA8IG1pbikge1xuICAgIHJldHVybiBtaW47XG4gIH1cblxuICBpZiAobWF4ICYmIGRhdGUgPiBtYXgpIHtcbiAgICByZXR1cm4gbWF4O1xuICB9XG5cbiAgcmV0dXJuIGRhdGU7XG59XG5cbmZ1bmN0aW9uIGdldFZhbHVlRm9yQ29tcGFyaXNvbih2YWx1ZT86IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSB7XG4gIGlmICghdmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHJldHVybiB2YWx1ZS5nZXRUaW1lKCk7XG4gIH1cbiAgcmV0dXJuIGAke3ZhbHVlLm1pbj8uZ2V0VGltZSgpfS0ke3ZhbHVlLm1heD8uZ2V0VGltZSgpfWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRlUGlja2VyKHByb3BzOiBEYXRlUGlja2VyUHJvcHMpIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoRGF0ZVBpY2tlckNvbnRleHQpO1xuXG4gIGNvbnN0IHtcbiAgICB2YWx1ZSxcbiAgICByYW5nZVNlbGVjdCxcbiAgICBsb2NhbGUsXG4gICAgZmlyc3REYXlPZldlZWsgPSAxLFxuICAgIGRlZmF1bHREYXRlSW5WaWV3LFxuICAgIHF1aWNrT3B0aW9ucyA9IFsndG9kYXknLCAndGhpc1dlZWsnXSxcbiAgICBtaW5EYXRlLFxuICAgIG1heERhdGUsXG4gICAgc2hvd0NhbGVuZGFyV2VlayxcbiAgICBibG9ja2VkUmFuZ2VzID0gW10sXG4gIH0gPSBkZWZhdWx0czxEYXRlUGlja2VyUHJvcHM+KHByb3BzLCBjb250ZXh0KTtcblxuICBmdW5jdGlvbiBvbkNoYW5nZSh2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICB2YWx1ZSA9IGRhdGVDbGFtcCh2YWx1ZSwgbWluRGF0ZSwgbWF4RGF0ZSk7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSkge1xuICAgICAgdmFsdWUgPSB7XG4gICAgICAgIG1pbjogZGF0ZUNsYW1wKHZhbHVlLm1pbiwgbWluRGF0ZSwgbWF4RGF0ZSksXG4gICAgICAgIG1heDogZGF0ZUNsYW1wKHZhbHVlLm1heCwgbWluRGF0ZSwgbWF4RGF0ZSksXG4gICAgICB9O1xuICAgIH1cblxuICAgIHByb3BzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgfVxuXG4gIGNvbnN0IEJ1dHRvbiA9IHVzZVRoZW1lKCh0KSA9PiB0LmNvbXBvbmVudHMuQnV0dG9uKTtcbiAgY29uc3QgSWNvbkJ1dHRvbiA9IHVzZVRoZW1lKCh0KSA9PiB0LmNvbXBvbmVudHMuSWNvbkJ1dHRvbik7XG4gIGNvbnN0IENoZXZyb25SaWdodCA9IHVzZVRoZW1lKCh0KSA9PiB0Lmljb25zLkNoZXZyb25SaWdodCk7XG4gIGNvbnN0IGNzc1ZhcmlhYmxlcyA9IHVzZUNzc1ZhcmlhYmxlcygpO1xuICBmdW5jdGlvbiBnZXREYXlDc3NTdHlsZXMoe1xuICAgIGRpc2FibGVkLFxuICAgIHByZXZNb250aCxcbiAgICBuZXh0TW9udGgsXG4gICAgdG9kYXksXG4gICAgYmxvY2tlZCxcbiAgICBzZWxlY3RlZCxcbiAgICBwcmVTZWxlY3RlZCxcbiAgfToge1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBwcmV2TW9udGg/OiBib29sZWFuO1xuICAgIG5leHRNb250aD86IGJvb2xlYW47XG4gICAgdG9kYXk/OiBib29sZWFuO1xuICAgIGJsb2NrZWQ/OiBib29sZWFuO1xuICAgIHNlbGVjdGVkPzogYm9vbGVhbjtcbiAgICBwcmVTZWxlY3RlZD86IGJvb2xlYW47XG4gIH0pOiBJbnRlcnBvbGF0aW9uPFRoZW1lPiB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgIGJvcmRlcjogJ25vbmUnLFxuICAgICAgICBiYWNrZ3JvdW5kOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICBjdXJzb3I6IGRpc2FibGVkID8gdW5kZWZpbmVkIDogJ3BvaW50ZXInLFxuICAgICAgICBmb250OiAnaW5oZXJpdCcsXG4gICAgICB9LFxuICAgICAgKHByZXZNb250aCB8fCBuZXh0TW9udGgpICYmIHtcbiAgICAgICAgY29sb3I6IGdyYXksXG4gICAgICB9LFxuICAgICAgdG9kYXkgJiYge1xuICAgICAgICBvdXRsaW5lOiAnMXB4IHNvbGlkIHZhcigtLXNlY29uZGFyeU1haW4pJyxcbiAgICAgIH0sXG4gICAgICBibG9ja2VkICYmIHtcbiAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLWJsb2NrZWRNYWluKScsXG4gICAgICAgIGNvbG9yOiAndmFyKC0tYmxvY2tlZENvbnRyYXN0VGV4dCknLFxuICAgICAgfSxcbiAgICAgIHNlbGVjdGVkICYmIHtcbiAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLXByaW1hcnlNYWluKScsXG4gICAgICAgIGNvbG9yOiAndmFyKC0tcHJpbWFyeUNvbnRyYXN0VGV4dCknLFxuICAgICAgfSxcbiAgICAgIGJsb2NrZWQgJiZcbiAgICAgICAgc2VsZWN0ZWQgJiYge1xuICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICAgICc6OmJlZm9yZSc6IHtcbiAgICAgICAgICAgIGNvbnRlbnQ6ICdcIlwiJyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgcmlnaHQ6IDAsXG4gICAgICAgICAgICBib3R0b206IDAsXG4gICAgICAgICAgICBsZWZ0OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLWJsb2NrZWRNYWluKScsXG4gICAgICAgICAgICBjbGlwUGF0aDogJ3BvbHlnb24oMCAwLCAwIDUwJSwgNTAlIDApJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgcHJlU2VsZWN0ZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tcHJpbWFyeUxpZ2h0KScsXG4gICAgICAgIGNvbG9yOiAndmFyKC0tcHJpbWFyeUNvbnRyYXN0VGV4dCknLFxuICAgICAgfSxcbiAgICBdO1xuICB9XG5cbiAgY29uc3QgbW91bnRUaW1lID0gdXNlTWVtbygoKSA9PiBuZXcgRGF0ZSgpLCBbXSk7XG4gIGNvbnN0IFtkaXJ0eSwgc2V0RGlydHldID0gdXNlU3RhdGU8UGFydGlhbDxEYXRlUmFuZ2U+PigpO1xuICBjb25zdCBbaG92ZXJlZCwgc2V0SG92ZXJlZF0gPSB1c2VTdGF0ZTxEYXRlUmFuZ2U+KCk7XG4gIGNvbnN0IFtkYXRlSW5WaWV3TG9jYWwsIHNldERhdGVJblZpZXdMb2NhbF0gPSB1c2VTdGF0ZTxEYXRlPihkZWZhdWx0RGF0ZUluVmlldyA/PyBtb3VudFRpbWUpO1xuICBjb25zdCBkYXRlSW5WaWV3ID0gcHJvcHMuZGF0ZUluVmlldyA/PyBkYXRlSW5WaWV3TG9jYWw7XG5cbiAgZnVuY3Rpb24gc2V0RGF0ZUluVmlldyhkYXRlOiBEYXRlKSB7XG4gICAgc2V0RGF0ZUluVmlld0xvY2FsKGRhdGUpO1xuICAgIHByb3BzLm9uRGF0ZUluVmlld0NoYW5nZT8uKGRhdGUpO1xuICB9XG5cbiAgY29uc3QgbWluID0gZGlydHkgPyBkaXJ0eS5taW4gOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlPy5taW47XG4gIGNvbnN0IG1heCA9IGRpcnR5ID8gZGlydHkubWF4IDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZT8ubWF4O1xuXG4gIGNvbnN0IHJlc29sdmVkUXVpY2tPcHRpb25zID0gWy4uLnF1aWNrT3B0aW9ucywgeyBsYWJlbDogPFRleHQgaWQ9XCJyZXNldFwiIC8+LCB2YWx1ZTogbnVsbCB9XS5tYXAoXG4gICAgKG9wdGlvbiwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChvcHRpb24gaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICByZXR1cm4gb3B0aW9uKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBsYWJlbCwgdmFsdWUgfSA9IHR5cGVvZiBvcHRpb24gPT09ICdzdHJpbmcnID8gY29tbW9uUXVpY2tPcHRpb25zW29wdGlvbl0gOiBvcHRpb247XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuXG4gICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICAgICAgICBvbkNoYW5nZSh2YWx1ZShwcm9wcykpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7bGFiZWx9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKTtcbiAgICB9LFxuICApO1xuXG4gIGNvbnN0IHsgY2FsZW5kYXJzLCBnZXRCYWNrUHJvcHMsIGdldEZvcndhcmRQcm9wcywgZ2V0RGF0ZVByb3BzIH0gPSB1c2VEYXl6ZWQoe1xuICAgIG9uRGF0ZVNlbGVjdGVkOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgZmlyc3REYXlPZldlZWssXG4gICAgc2hvd091dHNpZGVEYXlzOiB0cnVlLFxuICAgIGRhdGU6IGRhdGVJblZpZXcsXG4gICAgb25PZmZzZXRDaGFuZ2VkOiAob2Zmc2V0KSA9PlxuICAgICAgc2V0RGF0ZUluVmlldyhuZXcgRGF0ZShkYXRlSW5WaWV3LmdldEZ1bGxZZWFyKCksIGRhdGVJblZpZXcuZ2V0TW9udGgoKSArIG9mZnNldCkpLFxuICAgIG9mZnNldDogMCxcbiAgICBtaW5EYXRlLFxuICAgIG1heERhdGUsXG4gIH0pO1xuICBjb25zdCBub3cgPSB1c2VNZW1vKCgpID0+IHN0YXJ0T2ZEYXkobmV3IERhdGUoKSksIFtdKTtcblxuICBjb25zdCBmb3JtYXRXZWVrZGF5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyB3ZWVrZGF5OiAnc2hvcnQnIH0pO1xuICAgIHJldHVybiAod2Vla0RheTogbnVtYmVyKSA9PlxuICAgICAgZm9ybWF0KG5ldyBEYXRlKERhdGUuVVRDKDIwMjEsIDcsICgod2Vla0RheSArIGZpcnN0RGF5T2ZXZWVrKSAlIDcpICsgMSkpKTtcbiAgfSwgW2xvY2FsZSwgZmlyc3REYXlPZldlZWtdKTtcblxuICB1c2VFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHNldERhdGVJblZpZXcoXG4gICAgICAgIHZhbHVlID09PSBudWxsID8gZGVmYXVsdERhdGVJblZpZXcgPz8gbW91bnRUaW1lIDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZS5tYXgsXG4gICAgICApLFxuICAgIFtnZXRWYWx1ZUZvckNvbXBhcmlzb24odmFsdWUpLCBnZXRWYWx1ZUZvckNvbXBhcmlzb24oZGVmYXVsdERhdGVJblZpZXcpLCBtb3VudFRpbWVdLFxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFyYW5nZVNlbGVjdCkge1xuICAgICAgc2V0RGlydHkodW5kZWZpbmVkKTtcbiAgICB9XG4gIH0sIFtyYW5nZVNlbGVjdF0pO1xuXG4gIGZ1bmN0aW9uIHNldChtaW4/OiBEYXRlLCBtYXg/OiBEYXRlLCBlZGl0PzogJ21pbicgfCAnbWF4Jykge1xuICAgIGlmICghcmFuZ2VTZWxlY3QpIHtcbiAgICAgIG9uQ2hhbmdlKG1pbiA/PyBudWxsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAobWluICYmIG1heCAmJiBtaW4gPiBtYXgpIHtcbiAgICAgIGlmIChlZGl0ID09PSAnbWluJykge1xuICAgICAgICBtYXggPSBtaW47XG4gICAgICB9IGVsc2UgaWYgKGVkaXQgPT09ICdtYXgnKSB7XG4gICAgICAgIG1pbiA9IG1heDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIFttaW4sIG1heF0gPSBbbWF4LCBtaW5dO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghbWluID09PSAhbWF4KSB7XG4gICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuICAgICAgb25DaGFuZ2UobWluICYmIG1heCA/IHsgbWluLCBtYXg6IGVuZE9mRGF5KG1heCkgfSA6IG51bGwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXREaXJ0eSh7IG1pbiwgbWF4IH0pO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGZvcm1hdE1vbnRoID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyBtb250aDogJ2xvbmcnIH0pO1xuICAgIHJldHVybiAobW9udGg6IG51bWJlcikgPT4gZm9ybWF0KG5ldyBEYXRlKDIwMjEsIG1vbnRoKSk7XG4gIH0sIFtsb2NhbGVdKTtcblxuICBjb25zdCBmb3JtYXRZZWFyID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyB5ZWFyOiAnbnVtZXJpYycgfSk7XG4gICAgcmV0dXJuICh5ZWFyOiBudW1iZXIpID0+IGZvcm1hdChuZXcgRGF0ZSh5ZWFyLCAwLCAxKSk7XG4gIH0sIFtsb2NhbGVdKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY3NzPXtjc3NWYXJpYWJsZXN9PlxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e3tcbiAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgZ3JpZEF1dG9GbG93OiAnY29sdW1uJyxcbiAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgYWxpZ25JdGVtczogJ2Jhc2VsaW5lJyxcbiAgICAgICAgICBnYXA6ICd2YXIoLS1zcGFjaW5nKScsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxEYXRlSW5wdXRcbiAgICAgICAgICB2YWx1ZT17bWluID8/IG51bGx9XG4gICAgICAgICAgb25DaGFuZ2U9eyhkYXRlKSA9PiBzZXQoZGF0ZSA/PyB1bmRlZmluZWQsIG1heCwgJ21pbicpfVxuICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAvPlxuXG4gICAgICAgIHtyYW5nZVNlbGVjdCAmJiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIHsnIC0gJ31cbiAgICAgICAgICAgIDxEYXRlSW5wdXRcbiAgICAgICAgICAgICAgdmFsdWU9e21heCA/PyBudWxsfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGRhdGUpID0+IHNldChtaW4sIGRhdGUgPz8gdW5kZWZpbmVkLCAnbWF4Jyl9XG4gICAgICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7Y2FsZW5kYXJzLm1hcCgoeyBtb250aCwgeWVhciwgd2Vla3MgfSkgPT4gKFxuICAgICAgICA8ZGl2IGtleT17YCR7bW9udGh9JHt5ZWFyfWB9IGNzcz17eyBkaXNwbGF5OiAnZ3JpZCcgfX0+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgIG1hcmdpbjogJ2NhbGModmFyKC0tc3BhY2luZykgKiA0KSAwJyxcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nLFxuICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPEljb25CdXR0b24gdHlwZT1cImJ1dHRvblwiIHsuLi5nZXRCYWNrUHJvcHMoeyBjYWxlbmRhcnMgfSl9PlxuICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0IGNzcz17eyB0cmFuc2Zvcm06ICdyb3RhdGUzZCgwLCAwLCAxLCAxODBkZWcpJyB9fSAvPlxuICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuXG4gICAgICAgICAgICA8ZGl2IGNzcz17eyBkaXNwbGF5OiAnZmxleCcgfX0+XG4gICAgICAgICAgICAgIHtmb3JtYXRNb250aChtb250aCl9IHtmb3JtYXRZZWFyKHllYXIpfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxJY29uQnV0dG9uIHR5cGU9XCJidXR0b25cIiB7Li4uZ2V0Rm9yd2FyZFByb3BzKHsgY2FsZW5kYXJzIH0pfT5cbiAgICAgICAgICAgICAgPENoZXZyb25SaWdodCAvPlxuICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgICAgICBncmlkVGVtcGxhdGVDb2x1bW5zOiAncmVwZWF0KDgsIG1heC1jb250ZW50KScsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtzaG93Q2FsZW5kYXJXZWVrID8gKFxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgICAgICBqdXN0aWZ5U2VsZjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgICAgICAgICAgIGJvcmRlclJpZ2h0OiBgMXB4IHNvbGlkICR7Z3JheX1gLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8VGV4dCBpZD1cImNhbGVuZGFyV2Vla1wiIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPGRpdiAvPlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAge3dlZWtEYXlzLm1hcCgoX3YsIHdlZWtEYXkpID0+IChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGtleT17d2Vla0RheX1cbiAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7Zm9ybWF0V2Vla2RheSh3ZWVrRGF5KX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApKX1cblxuICAgICAgICAgICAge3dlZWtzLm1hcCgod2VlaywgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgd2Vla1N0YXJ0ID0gd2Vla1swXSBhcyBEYXRlT2JqO1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrRW5kID0gd2Vla1s2XSBhcyBEYXRlT2JqO1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrRGlzYWJsZWQgPVxuICAgICAgICAgICAgICAgICFyYW5nZVNlbGVjdCB8fFxuICAgICAgICAgICAgICAgIChtaW5EYXRlICYmIHdlZWtFbmQuZGF0ZSA8IG1pbkRhdGUpIHx8XG4gICAgICAgICAgICAgICAgKG1heERhdGUgJiYgd2Vla1N0YXJ0LmRhdGUgPiBtYXhEYXRlKTtcblxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxGcmFnbWVudCBrZXk9e2luZGV4fT5cbiAgICAgICAgICAgICAgICAgIHtzaG93Q2FsZW5kYXJXZWVrID8gKFxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcjogd2Vla0Rpc2FibGVkID8gdW5kZWZpbmVkIDogJ3BvaW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9udDogJ2luaGVyaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmlnaHQ6IGAxcHggc29saWQgJHtncmF5fWAsXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAod2Vla0Rpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWluID0gbWluRGF0ZSAmJiB3ZWVrU3RhcnQuZGF0ZSA8IG1pbkRhdGUgPyBtaW5EYXRlIDogd2Vla1N0YXJ0LmRhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXggPSBtYXhEYXRlICYmIHdlZWtFbmQuZGF0ZSA+IG1heERhdGUgPyBtYXhEYXRlIDogd2Vla0VuZC5kYXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0KG1pbiwgbWF4KTtcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlck92ZXI9eygpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAhd2Vla0Rpc2FibGVkICYmIHNldEhvdmVyZWQoeyBtaW46IHdlZWtTdGFydC5kYXRlLCBtYXg6IHdlZWtFbmQuZGF0ZSB9KVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJPdXQ9eygpID0+ICF3ZWVrRGlzYWJsZWQgJiYgc2V0SG92ZXJlZCh1bmRlZmluZWQpfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge2dldENhbGVuZGFyV2Vlayh3ZWVrRW5kLmRhdGUpfVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICAgIHt3ZWVrLm1hcCgoZGF0ZU9iamVjdCwgZGF5SW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFkYXRlT2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxkaXYga2V5PXtkYXlJbmRleH0gLz47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHByZXZNb250aCwgbmV4dE1vbnRoLCBkYXRlIH0gPSBkYXRlT2JqZWN0O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0b2RheSA9IHN0YXJ0T2ZEYXkoZGF0ZSkuZ2V0VGltZSgpID09PSBub3cuZ2V0VGltZSgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXNhYmxlZCA9IChtaW5EYXRlICYmIGRhdGUgPCBtaW5EYXRlKSB8fCAobWF4RGF0ZSAmJiBkYXRlID4gbWF4RGF0ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPVxuICAgICAgICAgICAgICAgICAgICAgIGRhdGUuZ2V0VGltZSgpID09PSBtaW4/LmdldFRpbWUoKSB8fFxuICAgICAgICAgICAgICAgICAgICAgIChtaW4gJiYgbWF4ICYmIGRhdGVJbnRlcnNlY3QoZGF0ZSwgeyBtaW4sIG1heCB9KSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZVNlbGVjdGVkID1cbiAgICAgICAgICAgICAgICAgICAgICAhc2VsZWN0ZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAhZGlzYWJsZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAoZGF0ZUludGVyc2VjdChkYXRlLCBob3ZlcmVkKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKG1pbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAhbWF4ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZUludGVyc2VjdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbiA8PSBob3ZlcmVkLm1pblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IG1pbiwgbWF4OiBob3ZlcmVkLm1pbiB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHsgbWluOiBob3ZlcmVkLm1heCwgbWF4OiBtaW4gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9ja2VkID0gYmxvY2tlZFJhbmdlcy5zb21lKChyYW5nZSkgPT4gZGF0ZUludGVyc2VjdChkYXRlLCByYW5nZSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2Ake2luZGV4fS0ke2RheUluZGV4fWB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2dldERheUNzc1N0eWxlcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2TW9udGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRNb250aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kYXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVTZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgey4uLmdldERhdGVQcm9wcyh7IGRhdGVPYmo6IGRhdGVPYmplY3QgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaXJ0eSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtaW4pIHNldChtaW4sIGRhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugc2V0KGRhdGUsIG1heCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0KGRhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyT3Zlcj17KCkgPT4gc2V0SG92ZXJlZCh7IG1pbjogZGF0ZSwgbWF4OiBkYXRlIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyT3V0PXsoKSA9PiBzZXRIb3ZlcmVkKHVuZGVmaW5lZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge2RhdGUuZ2V0RGF0ZSgpfVxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgPC9GcmFnbWVudD5cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICkpfVxuXG4gICAgICA8ZGl2XG4gICAgICAgIGNzcz17e1xuICAgICAgICAgIG1hcmdpblRvcDogJ3ZhcigtLXNwYWNpbmcpJyxcbiAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgZ3JpZEF1dG9GbG93OiAnY29sdW1uJyxcbiAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIHtyZXNvbHZlZFF1aWNrT3B0aW9uc31cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuIl19 */"), children: /* @__PURE__ */ jsx(Text, { id: "calendarWeek" }) }) : /* @__PURE__ */ jsx("div", {}),
1216
1226
  weekDays.map((_v, weekDay) => /* @__PURE__ */ jsx("div", { css: _ref7, children: formatWeekday(weekDay) }, weekDay)),
1217
1227
  weeks.map((week, index) => {
1218
1228
  const weekStart = week[0];
@@ -1226,14 +1236,17 @@ function DatePicker(props) {
1226
1236
  cursor: weekDisabled ? void 0 : "pointer",
1227
1237
  font: "inherit",
1228
1238
  borderRight: `1px solid ${gray}`
1229
- }, process.env.NODE_ENV === "production" ? "" : ";label:DatePicker;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2RhdGVQaWNrZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQThmc0IiLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvc2NodW1tYXItdGFibGUvc2NodW1tYXItdGFibGUvc3JjL2NvbXBvbmVudHMvZGF0ZVBpY2tlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlT2JqLCB1c2VEYXl6ZWQgfSBmcm9tICdkYXl6ZWQnO1xuaW1wb3J0IHtcbiAgRnJhZ21lbnQsXG4gIFJlYWN0Tm9kZSxcbiAgY3JlYXRlQ29udGV4dCxcbiAgdXNlQ29udGV4dCxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICcuLi9ob29rcy91c2VUaGVtZSc7XG5pbXBvcnQgeyBkZWZhdWx0cyB9IGZyb20gJy4uL21pc2MvZGVmYXVsdHMnO1xuaW1wb3J0IHsgZ3JheSB9IGZyb20gJy4uL3RoZW1lL2RlZmF1bHRUaGVtZS9kZWZhdWx0Q2xhc3Nlcyc7XG5pbXBvcnQgeyB1c2VDc3NWYXJpYWJsZXMgfSBmcm9tICcuLi90aGVtZS91c2VDc3NWYXJpYWJsZXMnO1xuaW1wb3J0IHsgRGF0ZUlucHV0IH0gZnJvbSAnLi9kYXRlSW5wdXQnO1xuaW1wb3J0IHsgVGV4dCB9IGZyb20gJy4vdGV4dCc7XG5pbXBvcnQgeyBJbnRlcnBvbGF0aW9uLCBUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuZXhwb3J0IHR5cGUgRGF0ZVJhbmdlID0geyBtaW46IERhdGU7IG1heDogRGF0ZSB9O1xuXG5leHBvcnQgdHlwZSBEYXRlUGlja2VyUXVpY2tPcHRpb24gPVxuICB8ICd0b2RheSdcbiAgfCAndGhpc1dlZWsnXG4gIHwgJ3RoaXNNb250aCdcbiAgfCAndGhpc1llYXInXG4gIHwgJ2xhc3RTZXZlbkRheXMnXG4gIHwgJ2xhc3RUaGlydHlEYXlzJ1xuICB8IHsgbGFiZWw6IFJlYWN0Tm9kZTsgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCAoKCkgPT4gRGF0ZSB8IERhdGVSYW5nZSkgfVxuICB8ICgob25DaGFuZ2U6ICh2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpID0+IHZvaWQpID0+IFJlYWN0Tm9kZSk7XG5cbmV4cG9ydCB0eXBlIERhdGVQaWNrZXJQcm9wcyA9IHtcbiAgLyoqIEN1cnJlbnRseSBzZWxlY3RlZCBkYXkgb3IgcmFuZ2Ugb2YgZGF5cy4gKi9cbiAgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsO1xuICAvKiogQ2FsbGJhY2sgZm9yIHdoZW4gdGhlIGRheSAocmFuZ2UpIGNoYW5nZXMuICovXG4gIG9uQ2hhbmdlOiAodmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSA9PiB2b2lkO1xuICAvKiogQ3VycmVudGx5IHZpc2libGUgZGF0ZS4gKi9cbiAgZGF0ZUluVmlldz86IERhdGU7XG4gIC8qKiBDYWxsYmFjayBmb3Igd2hlbiB0aGUgY3VycmVudGx5IHZpc2libGUgZGF0ZSBjaGFuZ2VzLiAqL1xuICBvbkRhdGVJblZpZXdDaGFuZ2U/OiAodmFsdWU6IERhdGUpID0+IHZvaWQ7XG4gIC8qKiBJZiBlbmFibGVkLCByYW5nZXMgY2FuIGJlIHNlbGVjdGVkLiAqL1xuICByYW5nZVNlbGVjdD86IGJvb2xlYW47XG4gIC8qKiBXaGljaCBsb2NhbGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgY2FsZW5kYXIuICovXG4gIGxvY2FsZT86IHN0cmluZztcbiAgLyoqIFdoaWNoIGRheSBvZiB0aGUgd2VlayBzaG91bGQgYmUgaW4gdGhlIGZpcnN0IGNvbHVtbi4gKDA9U3VuZGF5LCAxPU1vbmRheSwgLi4uKVxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICBmaXJzdERheU9mV2Vlaz86IDAgfCAxIHwgMiB8IDMgfCA0IHwgNSB8IDY7XG4gIC8qKiBXaGljaCBtb250aCB0byBzaG93IGluaXRpYWxseSAqL1xuICBkZWZhdWx0RGF0ZUluVmlldz86IERhdGU7XG4gIC8qKiBTaG93IGJ1dHRvbnMgdG8gcXVpY2tseSBzZWxlY3Qgc3VnZ2VzdGVkIGRhdGVzIG9yIGRhdGUgcmFuZ2VzICovXG4gIHF1aWNrT3B0aW9ucz86IERhdGVQaWNrZXJRdWlja09wdGlvbltdO1xuICAvKiogTWluaW11bSBzZWxlY3RhYmxlIGRhdGUgKi9cbiAgLyoqIERhdGUgcmFuZ2VzIHRoYXQgYXJlIHZpc3VhbGx5IG1hcmtlZCBhcyBibG9ja2VkICovXG4gIGJsb2NrZWRSYW5nZXM/OiBEYXRlUmFuZ2VbXTtcbiAgbWluRGF0ZT86IERhdGU7XG4gIC8qKiBNYXhpbXVtIHNlbGVjdGFibGUgZGF0ZSAqL1xuICBtYXhEYXRlPzogRGF0ZTtcbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgY2FsZW5kYXIgd2VlayBpbiB0aGUgZmlyc3QgY29sdW1uICovXG4gIHNob3dDYWxlbmRhcldlZWs/OiBib29sZWFuO1xufTtcblxuY29uc3QgRGF0ZVBpY2tlckNvbnRleHQgPSBjcmVhdGVDb250ZXh0PFBhcnRpYWw8T21pdDxEYXRlUGlja2VyUHJvcHMsICd2YWx1ZScgfCAnb25DaGFuZ2UnPj4+KHt9KTtcblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVQaWNrZXJQcm92aWRlcih7XG4gIGNoaWxkcmVuLFxuICAuLi5wcm9wc1xufTogUGFydGlhbDxPbWl0PERhdGVQaWNrZXJQcm9wcywgJ3ZhbHVlJyB8ICdvbkNoYW5nZSc+PiAmIHsgY2hpbGRyZW4/OiBSZWFjdE5vZGUgfSkge1xuICBjb25zdCB2YWx1ZSA9IHVzZU1lbW8oKCkgPT4gcHJvcHMsIFtKU09OLnN0cmluZ2lmeShwcm9wcyldKTtcblxuICByZXR1cm4gPERhdGVQaWNrZXJDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt2YWx1ZX0+e2NoaWxkcmVufTwvRGF0ZVBpY2tlckNvbnRleHQuUHJvdmlkZXI+O1xufVxuXG5jb25zdCB3ZWVrRGF5cyA9IFswLCAxLCAyLCAzLCA0LCA1LCA2XSBhcyBjb25zdDtcblxuLyoqIFJvdW5kcyBhIGRhdGUgZG93biB0byB0aGUgc3RhcnQgb2YgdGhlIGRheS4gKi9cbmV4cG9ydCBjb25zdCBzdGFydE9mRGF5ID0gKGQ6IERhdGUpID0+IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgZC5nZXRNb250aCgpLCBkLmdldERhdGUoKSk7XG5cbi8qKiBSb3VuZHMgYSBkYXRlIHVwIHRvIHRoZSBlbmQgb2YgdGhlIGRheS4gKi9cbmV4cG9ydCBjb25zdCBlbmRPZkRheSA9IChkOiBEYXRlKSA9PlxuICBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIGQuZ2V0TW9udGgoKSwgZC5nZXREYXRlKCkgKyAxLCAwLCAwLCAwLCAtMSk7XG5cbmV4cG9ydCBjb25zdCBsYXN0RGF5cyA9IChkYXlzOiBudW1iZXIpOiBEYXRlUmFuZ2UgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBtaW4gPSBuZXcgRGF0ZShub3cpO1xuICBtaW4uc2V0RGF0ZShtaW4uZ2V0RGF0ZSgpIC0gZGF5cyArIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShub3cpLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHRvZGF5ID0gKCkgPT4gbGFzdERheXMoMSk7XG5cbmV4cG9ydCBjb25zdCB0aGlzV2VlayA9IChkZWx0YSA9IDAsIGZpcnN0RGF5T2ZXZWVrID0gMSk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG5cbiAgbGV0IGRpZmYgPSBtaW4uZ2V0RGF5KCkgLSBmaXJzdERheU9mV2VlaztcbiAgaWYgKGRpZmYgPCAwKSB7XG4gICAgZGlmZiArPSA3O1xuICB9XG4gIG1pbi5zZXREYXRlKG1pbi5nZXREYXRlKCkgLSBkaWZmICsgZGVsdGEgKiA3KTtcblxuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpICsgNik7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdGhpc01vbnRoID0gKGRlbHRhID0gMCk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG4gIG1pbi5zZXREYXRlKDEpO1xuICBtaW4uc2V0TW9udGgobWluLmdldE1vbnRoKCkgKyBkZWx0YSk7XG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXRNb250aChtYXguZ2V0TW9udGgoKSArIDEpO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpIC0gMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdGhpc1llYXIgPSAoZGVsdGEgPSAwKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcbiAgbWluLnNldERhdGUoMSk7XG4gIG1pbi5zZXRNb250aCgwKTtcbiAgbWluLnNldEZ1bGxZZWFyKG1pbi5nZXRGdWxsWWVhcigpICsgZGVsdGEpO1xuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0RnVsbFllYXIobWF4LmdldEZ1bGxZZWFyKCkgKyAxKTtcbiAgbWF4LnNldERhdGUobWF4LmdldERhdGUoKSAtIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShtYXgpLFxuICB9O1xufTtcblxuY29uc3QgTVNfUEVSX0RBWSA9IDEwMDAgKiA2MCAqIDYwICogMjQ7XG5leHBvcnQgY29uc3QgZ2V0Q2FsZW5kYXJXZWVrID0gKGRhdGU6IERhdGUpOiBudW1iZXIgPT4ge1xuICAvLyBJU08gODYwMTogV2VlayAxIGlzIHRoZSB3ZWVrIHdpdGggdGhlIGZpcnN0IFRodXJzZGF5IG9mIHRoZSB5ZWFyLlxuICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG5cbiAgY29uc3QgeSA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgY29uc3QgZmRveSA9IG5ldyBEYXRlKHksIDAsIDEpO1xuICBjb25zdCBkb3kgPSBNYXRoLmZsb29yKFxuICAgIChkYXRlLmdldFRpbWUoKSAtIGZkb3kuZ2V0VGltZSgpICsgKGRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSAtIGZkb3kuZ2V0VGltZXpvbmVPZmZzZXQoKSkpIC9cbiAgICAgIE1TX1BFUl9EQVksXG4gICk7XG4gIGNvbnN0IGRvdyA9IGZkb3kuZ2V0RGF5KCk7XG4gIGNvbnN0IHcgPSBNYXRoLmZsb29yKCgxMCArIGRveSAtIGRvdykgLyA3KTtcblxuICBpZiAodyA9PT0gMCkge1xuICAgIHJldHVybiBnZXRDYWxlbmRhcldlZWsobmV3IERhdGUoeSAtIDEsIDExLCAzMSkpO1xuICB9XG5cbiAgcmV0dXJuIHc7XG59O1xuXG5leHBvcnQgY29uc3QgY29tbW9uUXVpY2tPcHRpb25zID0ge1xuICB0b2RheTogeyBsYWJlbDogPFRleHQgaWQ9XCJ0b2RheVwiIC8+LCB2YWx1ZTogdG9kYXkgfSxcbiAgdGhpc1dlZWs6IHsgbGFiZWw6IDxUZXh0IGlkPVwidGhpc1dlZWtcIiAvPiwgdmFsdWU6IChwcm9wcykgPT4gdGhpc1dlZWsoMCwgcHJvcHMuZmlyc3REYXlPZldlZWspIH0sXG4gIHRoaXNNb250aDogeyBsYWJlbDogPFRleHQgaWQ9XCJ0aGlzTW9udGhcIiAvPiwgdmFsdWU6ICgpID0+IHRoaXNNb250aCgpIH0sXG4gIHRoaXNZZWFyOiB7IGxhYmVsOiA8VGV4dCBpZD1cInRoaXNZZWFyXCIgLz4sIHZhbHVlOiAoKSA9PiB0aGlzWWVhcigpIH0sXG4gIGxhc3RTZXZlbkRheXM6IHsgbGFiZWw6IDxUZXh0IGlkPVwibGFzdFNldmVuRGF5c1wiIC8+LCB2YWx1ZTogKCkgPT4gbGFzdERheXMoNykgfSxcbiAgbGFzdFRoaXJ0eURheXM6IHsgbGFiZWw6IDxUZXh0IGlkPVwibGFzdFRoaXJ0eURheXNcIiAvPiwgdmFsdWU6ICgpID0+IGxhc3REYXlzKDMwKSB9LFxufSBzYXRpc2ZpZXMgUmVjb3JkPFxuICBEYXRlUGlja2VyUXVpY2tPcHRpb24gJiBzdHJpbmcsXG4gIHsgbGFiZWw6IFJlYWN0Tm9kZTsgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCAoKHByb3BzOiBEYXRlUGlja2VyUHJvcHMpID0+IERhdGUgfCBEYXRlUmFuZ2UpIH1cbj47XG5cbi8qKiBSZXR1cm5zIHdoZXRoZXIgdHdvIGRhdGVzIGFuZC9vciBkYXRlIHJhbmdlcyBpbnRlcnNlY3QuIEludGVyc2VjdGlvbiBpcyBjb25zaWRlcmVkIHBlciBkYXkuICovXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUludGVyc2VjdChhOiBEYXRlIHwgbnVsbCB8IERhdGVSYW5nZSwgYjogRGF0ZSB8IG51bGwgfCBEYXRlUmFuZ2UpIHtcbiAgaWYgKGEgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgYSA9IHsgbWluOiBhLCBtYXg6IGEgfTtcbiAgfVxuICBpZiAoYiBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICBiID0geyBtaW46IGIsIG1heDogYiB9O1xuICB9XG5cbiAgaWYgKCFhPy5taW4gfHwgIWEubWF4IHx8ICFiPy5taW4gfHwgIWIubWF4KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuICEoZW5kT2ZEYXkoYS5tYXgpIDwgc3RhcnRPZkRheShiLm1pbikgfHwgc3RhcnRPZkRheShhLm1pbikgPiBlbmRPZkRheShiLm1heCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUNsYW1wKGRhdGU6IERhdGUsIG1pbj86IERhdGUsIG1heD86IERhdGUpIHtcbiAgaWYgKG1pbiAmJiBkYXRlIDwgbWluKSB7XG4gICAgcmV0dXJuIG1pbjtcbiAgfVxuXG4gIGlmIChtYXggJiYgZGF0ZSA+IG1heCkge1xuICAgIHJldHVybiBtYXg7XG4gIH1cblxuICByZXR1cm4gZGF0ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVQaWNrZXIocHJvcHM6IERhdGVQaWNrZXJQcm9wcykge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChEYXRlUGlja2VyQ29udGV4dCk7XG5cbiAgY29uc3Qge1xuICAgIHZhbHVlLFxuICAgIHJhbmdlU2VsZWN0LFxuICAgIGxvY2FsZSxcbiAgICBmaXJzdERheU9mV2VlayA9IDEsXG4gICAgZGVmYXVsdERhdGVJblZpZXcsXG4gICAgcXVpY2tPcHRpb25zID0gWyd0b2RheScsICd0aGlzV2VlayddLFxuICAgIG1pbkRhdGUsXG4gICAgbWF4RGF0ZSxcbiAgICBzaG93Q2FsZW5kYXJXZWVrLFxuICAgIGJsb2NrZWRSYW5nZXMgPSBbXSxcbiAgfSA9IGRlZmF1bHRzPERhdGVQaWNrZXJQcm9wcz4ocHJvcHMsIGNvbnRleHQpO1xuXG4gIGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCkge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIHZhbHVlID0gZGF0ZUNsYW1wKHZhbHVlLCBtaW5EYXRlLCBtYXhEYXRlKTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICB2YWx1ZSA9IHtcbiAgICAgICAgbWluOiBkYXRlQ2xhbXAodmFsdWUubWluLCBtaW5EYXRlLCBtYXhEYXRlKSxcbiAgICAgICAgbWF4OiBkYXRlQ2xhbXAodmFsdWUubWF4LCBtaW5EYXRlLCBtYXhEYXRlKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcHJvcHMub25DaGFuZ2UodmFsdWUpO1xuICB9XG5cbiAgY29uc3QgQnV0dG9uID0gdXNlVGhlbWUoKHQpID0+IHQuY29tcG9uZW50cy5CdXR0b24pO1xuICBjb25zdCBJY29uQnV0dG9uID0gdXNlVGhlbWUoKHQpID0+IHQuY29tcG9uZW50cy5JY29uQnV0dG9uKTtcbiAgY29uc3QgQ2hldnJvblJpZ2h0ID0gdXNlVGhlbWUoKHQpID0+IHQuaWNvbnMuQ2hldnJvblJpZ2h0KTtcbiAgY29uc3QgY3NzVmFyaWFibGVzID0gdXNlQ3NzVmFyaWFibGVzKCk7XG4gIGZ1bmN0aW9uIGdldERheUNzc1N0eWxlcyh7XG4gICAgZGlzYWJsZWQsXG4gICAgcHJldk1vbnRoLFxuICAgIG5leHRNb250aCxcbiAgICB0b2RheSxcbiAgICBibG9ja2VkLFxuICAgIHNlbGVjdGVkLFxuICAgIHByZVNlbGVjdGVkLFxuICB9OiB7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIHByZXZNb250aD86IGJvb2xlYW47XG4gICAgbmV4dE1vbnRoPzogYm9vbGVhbjtcbiAgICB0b2RheT86IGJvb2xlYW47XG4gICAgYmxvY2tlZD86IGJvb2xlYW47XG4gICAgc2VsZWN0ZWQ/OiBib29sZWFuO1xuICAgIHByZVNlbGVjdGVkPzogYm9vbGVhbjtcbiAgfSk6IEludGVycG9sYXRpb248VGhlbWU+IHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgIGN1cnNvcjogZGlzYWJsZWQgPyB1bmRlZmluZWQgOiAncG9pbnRlcicsXG4gICAgICAgIGZvbnQ6ICdpbmhlcml0JyxcbiAgICAgIH0sXG4gICAgICAocHJldk1vbnRoIHx8IG5leHRNb250aCkgJiYge1xuICAgICAgICBjb2xvcjogZ3JheSxcbiAgICAgIH0sXG4gICAgICB0b2RheSAmJiB7XG4gICAgICAgIG91dGxpbmU6ICcxcHggc29saWQgdmFyKC0tc2Vjb25kYXJ5TWFpbiknLFxuICAgICAgfSxcbiAgICAgIGJsb2NrZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tYmxvY2tlZE1haW4pJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1ibG9ja2VkQ29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgICAgc2VsZWN0ZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tcHJpbWFyeU1haW4pJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1wcmltYXJ5Q29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgICAgYmxvY2tlZCAmJlxuICAgICAgICBzZWxlY3RlZCAmJiB7XG4gICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgICAgJzo6YmVmb3JlJzoge1xuICAgICAgICAgICAgY29udGVudDogJ1wiXCInLFxuICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICByaWdodDogMCxcbiAgICAgICAgICAgIGJvdHRvbTogMCxcbiAgICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tYmxvY2tlZE1haW4pJyxcbiAgICAgICAgICAgIGNsaXBQYXRoOiAncG9seWdvbigwIDAsIDAgNTAlLCA1MCUgMCknLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBwcmVTZWxlY3RlZCAmJiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1wcmltYXJ5TGlnaHQpJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1wcmltYXJ5Q29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICBjb25zdCBtb3VudFRpbWUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKCksIFtdKTtcbiAgY29uc3QgW2RpcnR5LCBzZXREaXJ0eV0gPSB1c2VTdGF0ZTxQYXJ0aWFsPERhdGVSYW5nZT4+KCk7XG4gIGNvbnN0IFtob3ZlcmVkLCBzZXRIb3ZlcmVkXSA9IHVzZVN0YXRlPERhdGU+KCk7XG4gIGNvbnN0IFtkYXRlSW5WaWV3TG9jYWwsIHNldERhdGVJblZpZXdMb2NhbF0gPSB1c2VTdGF0ZTxEYXRlPihkZWZhdWx0RGF0ZUluVmlldyA/PyBtb3VudFRpbWUpO1xuICBjb25zdCBkYXRlSW5WaWV3ID0gcHJvcHMuZGF0ZUluVmlldyA/PyBkYXRlSW5WaWV3TG9jYWw7XG5cbiAgZnVuY3Rpb24gc2V0RGF0ZUluVmlldyhkYXRlOiBEYXRlKSB7XG4gICAgc2V0RGF0ZUluVmlld0xvY2FsKGRhdGUpO1xuICAgIHByb3BzLm9uRGF0ZUluVmlld0NoYW5nZT8uKGRhdGUpO1xuICB9XG5cbiAgY29uc3QgbWluID0gZGlydHkgPyBkaXJ0eS5taW4gOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlPy5taW47XG4gIGNvbnN0IG1heCA9IGRpcnR5ID8gZGlydHkubWF4IDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZT8ubWF4O1xuXG4gIGNvbnN0IHJlc29sdmVkUXVpY2tPcHRpb25zID0gWy4uLnF1aWNrT3B0aW9ucywgeyBsYWJlbDogPFRleHQgaWQ9XCJyZXNldFwiIC8+LCB2YWx1ZTogbnVsbCB9XS5tYXAoXG4gICAgKG9wdGlvbiwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChvcHRpb24gaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICByZXR1cm4gb3B0aW9uKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBsYWJlbCwgdmFsdWUgfSA9IHR5cGVvZiBvcHRpb24gPT09ICdzdHJpbmcnID8gY29tbW9uUXVpY2tPcHRpb25zW29wdGlvbl0gOiBvcHRpb247XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuXG4gICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICAgICAgICBvbkNoYW5nZSh2YWx1ZShwcm9wcykpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7bGFiZWx9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKTtcbiAgICB9LFxuICApO1xuXG4gIGNvbnN0IHsgY2FsZW5kYXJzLCBnZXRCYWNrUHJvcHMsIGdldEZvcndhcmRQcm9wcywgZ2V0RGF0ZVByb3BzIH0gPSB1c2VEYXl6ZWQoe1xuICAgIG9uRGF0ZVNlbGVjdGVkOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgZmlyc3REYXlPZldlZWssXG4gICAgc2hvd091dHNpZGVEYXlzOiB0cnVlLFxuICAgIGRhdGU6IGRhdGVJblZpZXcsXG4gICAgb25PZmZzZXRDaGFuZ2VkOiAob2Zmc2V0KSA9PlxuICAgICAgc2V0RGF0ZUluVmlldyhuZXcgRGF0ZShkYXRlSW5WaWV3LmdldEZ1bGxZZWFyKCksIGRhdGVJblZpZXcuZ2V0TW9udGgoKSArIG9mZnNldCkpLFxuICAgIG9mZnNldDogMCxcbiAgICBtaW5EYXRlLFxuICAgIG1heERhdGUsXG4gIH0pO1xuICBjb25zdCBub3cgPSB1c2VNZW1vKCgpID0+IHN0YXJ0T2ZEYXkobmV3IERhdGUoKSksIFtdKTtcblxuICBjb25zdCBmb3JtYXRXZWVrZGF5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyB3ZWVrZGF5OiAnc2hvcnQnIH0pO1xuICAgIHJldHVybiAod2Vla0RheTogbnVtYmVyKSA9PlxuICAgICAgZm9ybWF0KG5ldyBEYXRlKERhdGUuVVRDKDIwMjEsIDcsICgod2Vla0RheSArIGZpcnN0RGF5T2ZXZWVrKSAlIDcpICsgMSkpKTtcbiAgfSwgW2xvY2FsZSwgZmlyc3REYXlPZldlZWtdKTtcblxuICB1c2VFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHNldERhdGVJblZpZXcoXG4gICAgICAgIHZhbHVlID09PSBudWxsID8gZGVmYXVsdERhdGVJblZpZXcgPz8gbW91bnRUaW1lIDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZS5tYXgsXG4gICAgICApLFxuICAgIFt2YWx1ZSwgZGVmYXVsdERhdGVJblZpZXcsIG1vdW50VGltZV0sXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXJhbmdlU2VsZWN0KSB7XG4gICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuICAgIH1cbiAgfSwgW3JhbmdlU2VsZWN0XSk7XG5cbiAgZnVuY3Rpb24gc2V0KG1pbj86IERhdGUsIG1heD86IERhdGUsIGVkaXQ/OiAnbWluJyB8ICdtYXgnKSB7XG4gICAgaWYgKCFyYW5nZVNlbGVjdCkge1xuICAgICAgb25DaGFuZ2UobWluID8/IG51bGwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChtaW4gJiYgbWF4ICYmIG1pbiA+IG1heCkge1xuICAgICAgaWYgKGVkaXQgPT09ICdtaW4nKSB7XG4gICAgICAgIG1heCA9IG1pbjtcbiAgICAgIH0gZWxzZSBpZiAoZWRpdCA9PT0gJ21heCcpIHtcbiAgICAgICAgbWluID0gbWF4O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgW21pbiwgbWF4XSA9IFttYXgsIG1pbl07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFtaW4gPT09ICFtYXgpIHtcbiAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgICBvbkNoYW5nZShtaW4gJiYgbWF4ID8geyBtaW4sIG1heDogZW5kT2ZEYXkobWF4KSB9IDogbnVsbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldERpcnR5KHsgbWluLCBtYXggfSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZm9ybWF0TW9udGggPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IGZvcm1hdCB9ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IG1vbnRoOiAnbG9uZycgfSk7XG4gICAgcmV0dXJuIChtb250aDogbnVtYmVyKSA9PiBmb3JtYXQobmV3IERhdGUoMjAyMSwgbW9udGgpKTtcbiAgfSwgW2xvY2FsZV0pO1xuXG4gIGNvbnN0IGZvcm1hdFllYXIgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IGZvcm1hdCB9ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IHllYXI6ICdudW1lcmljJyB9KTtcbiAgICByZXR1cm4gKHllYXI6IG51bWJlcikgPT4gZm9ybWF0KG5ldyBEYXRlKHllYXIsIDAsIDEpKTtcbiAgfSwgW2xvY2FsZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjc3M9e2Nzc1ZhcmlhYmxlc30+XG4gICAgICA8ZGl2XG4gICAgICAgIGNzcz17e1xuICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICBhbGlnbkl0ZW1zOiAnYmFzZWxpbmUnLFxuICAgICAgICAgIGdhcDogJ3ZhcigtLXNwYWNpbmcpJyxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPERhdGVJbnB1dFxuICAgICAgICAgIHZhbHVlPXttaW4gPz8gbnVsbH1cbiAgICAgICAgICBvbkNoYW5nZT17KGRhdGUpID0+IHNldChkYXRlID8/IHVuZGVmaW5lZCwgbWF4LCAnbWluJyl9XG4gICAgICAgICAgbG9jYWxlPXtsb2NhbGV9XG4gICAgICAgIC8+XG5cbiAgICAgICAge3JhbmdlU2VsZWN0ICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgeycgLSAnfVxuICAgICAgICAgICAgPERhdGVJbnB1dFxuICAgICAgICAgICAgICB2YWx1ZT17bWF4ID8/IG51bGx9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZGF0ZSkgPT4gc2V0KG1pbiwgZGF0ZSA/PyB1bmRlZmluZWQsICdtYXgnKX1cbiAgICAgICAgICAgICAgbG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvPlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIHtjYWxlbmRhcnMubWFwKCh7IG1vbnRoLCB5ZWFyLCB3ZWVrcyB9KSA9PiAoXG4gICAgICAgIDxkaXYga2V5PXtgJHttb250aH0ke3llYXJ9YH0gY3NzPXt7IGRpc3BsYXk6ICdncmlkJyB9fT5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgbWFyZ2luOiAnY2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpIDAnLFxuICAgICAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgICAgIGdyaWRBdXRvRmxvdzogJ2NvbHVtbicsXG4gICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnc3BhY2UtYmV0d2VlbicsXG4gICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8SWNvbkJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgey4uLmdldEJhY2tQcm9wcyh7IGNhbGVuZGFycyB9KX0+XG4gICAgICAgICAgICAgIDxDaGV2cm9uUmlnaHQgY3NzPXt7IHRyYW5zZm9ybTogJ3JvdGF0ZTNkKDAsIDAsIDEsIDE4MGRlZyknIH19IC8+XG4gICAgICAgICAgICA8L0ljb25CdXR0b24+XG5cbiAgICAgICAgICAgIDxkaXYgY3NzPXt7IGRpc3BsYXk6ICdmbGV4JyB9fT5cbiAgICAgICAgICAgICAge2Zvcm1hdE1vbnRoKG1vbnRoKX0ge2Zvcm1hdFllYXIoeWVhcil9XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPEljb25CdXR0b24gdHlwZT1cImJ1dHRvblwiIHsuLi5nZXRGb3J3YXJkUHJvcHMoeyBjYWxlbmRhcnMgfSl9PlxuICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0IC8+XG4gICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAganVzdGlmeVNlbGY6ICdjZW50ZXInLFxuICAgICAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgICAgIGdyaWRUZW1wbGF0ZUNvbHVtbnM6ICdyZXBlYXQoOCwgbWF4LWNvbnRlbnQpJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3Nob3dDYWxlbmRhcldlZWsgPyAoXG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgICAgYm9yZGVyUmlnaHQ6IGAxcHggc29saWQgJHtncmF5fWAsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxUZXh0IGlkPVwiY2FsZW5kYXJXZWVrXCIgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8ZGl2IC8+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7d2Vla0RheXMubWFwKChfdiwgd2Vla0RheSkgPT4gKFxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAga2V5PXt3ZWVrRGF5fVxuICAgICAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICAgICAganVzdGlmeVNlbGY6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtmb3JtYXRXZWVrZGF5KHdlZWtEYXkpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkpfVxuXG4gICAgICAgICAgICB7d2Vla3MubWFwKCh3ZWVrLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrU3RhcnQgPSB3ZWVrWzBdIGFzIERhdGVPYmo7XG4gICAgICAgICAgICAgIGNvbnN0IHdlZWtFbmQgPSB3ZWVrWzZdIGFzIERhdGVPYmo7XG4gICAgICAgICAgICAgIGNvbnN0IHdlZWtEaXNhYmxlZCA9XG4gICAgICAgICAgICAgICAgIXJhbmdlU2VsZWN0IHx8XG4gICAgICAgICAgICAgICAgKG1pbkRhdGUgJiYgd2Vla0VuZC5kYXRlIDwgbWluRGF0ZSkgfHxcbiAgICAgICAgICAgICAgICAobWF4RGF0ZSAmJiB3ZWVrU3RhcnQuZGF0ZSA+IG1heERhdGUpO1xuXG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPEZyYWdtZW50IGtleT17aW5kZXh9PlxuICAgICAgICAgICAgICAgICAge3Nob3dDYWxlbmRhcldlZWsgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiB3ZWVrRGlzYWJsZWQgPyB1bmRlZmluZWQgOiAncG9pbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb250OiAnaW5oZXJpdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSaWdodDogYDFweCBzb2xpZCAke2dyYXl9YCxcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3ZWVrRGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtaW4gPSBtaW5EYXRlICYmIHdlZWtTdGFydC5kYXRlIDwgbWluRGF0ZSA/IG1pbkRhdGUgOiB3ZWVrU3RhcnQuZGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1heCA9IG1heERhdGUgJiYgd2Vla0VuZC5kYXRlID4gbWF4RGF0ZSA/IG1heERhdGUgOiB3ZWVrRW5kLmRhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXQobWluLCBtYXgpO1xuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7Z2V0Q2FsZW5kYXJXZWVrKCh3ZWVrWzBdIGFzIERhdGVPYmopLmRhdGUpfVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICAgIHt3ZWVrLm1hcCgoZGF0ZU9iamVjdCwgZGF5SW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFkYXRlT2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxkaXYga2V5PXtkYXlJbmRleH0gLz47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHByZXZNb250aCwgbmV4dE1vbnRoLCBkYXRlIH0gPSBkYXRlT2JqZWN0O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0b2RheSA9IHN0YXJ0T2ZEYXkoZGF0ZSkuZ2V0VGltZSgpID09PSBub3cuZ2V0VGltZSgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXNhYmxlZCA9IChtaW5EYXRlICYmIGRhdGUgPCBtaW5EYXRlKSB8fCAobWF4RGF0ZSAmJiBkYXRlID4gbWF4RGF0ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPVxuICAgICAgICAgICAgICAgICAgICAgIGRhdGUuZ2V0VGltZSgpID09PSBtaW4/LmdldFRpbWUoKSB8fFxuICAgICAgICAgICAgICAgICAgICAgIChtaW4gJiYgbWF4ICYmIGRhdGVJbnRlcnNlY3QoZGF0ZSwgeyBtaW4sIG1heCB9KSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZVNlbGVjdGVkID1cbiAgICAgICAgICAgICAgICAgICAgICAhc2VsZWN0ZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAhZGlzYWJsZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAoZGF0ZS5nZXRUaW1lKCkgPT09IGhvdmVyZWQ/LmdldFRpbWUoKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKG1pbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAhbWF4ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZUludGVyc2VjdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbiA8PSBob3ZlcmVkID8geyBtaW4sIG1heDogaG92ZXJlZCB9IDogeyBtaW46IGhvdmVyZWQsIG1heDogbWluIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tlZCA9IGJsb2NrZWRSYW5nZXMuc29tZSgocmFuZ2UpID0+IGRhdGVJbnRlcnNlY3QoZGF0ZSwgcmFuZ2UpKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtgJHtpbmRleH0tJHtkYXlJbmRleH1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtnZXREYXlDc3NTdHlsZXMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldk1vbnRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0TW9udGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRvZGF5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja2VkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlU2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5nZXREYXRlUHJvcHMoeyBkYXRlT2JqOiBkYXRlT2JqZWN0IH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGlydHkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWluKSBzZXQobWluLCBkYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHNldChkYXRlLCBtYXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldChkYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlck92ZXI9eygpID0+IHNldEhvdmVyZWQoZGF0ZSl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJPdXQ9eygpID0+IHNldEhvdmVyZWQodW5kZWZpbmVkKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7ZGF0ZS5nZXREYXRlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKSl9XG5cbiAgICAgIDxkaXZcbiAgICAgICAgY3NzPXt7XG4gICAgICAgICAgbWFyZ2luVG9wOiAndmFyKC0tc3BhY2luZyknLFxuICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAge3Jlc29sdmVkUXVpY2tPcHRpb25zfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iXX0= */"), onClick: () => {
1239
+ }, process.env.NODE_ENV === "production" ? "" : ";label:DatePicker;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2RhdGVQaWNrZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXVoQnNCIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2RhdGVQaWNrZXIudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZU9iaiwgdXNlRGF5emVkIH0gZnJvbSAnZGF5emVkJztcbmltcG9ydCB7XG4gIEZyYWdtZW50LFxuICBSZWFjdE5vZGUsXG4gIGNyZWF0ZUNvbnRleHQsXG4gIHVzZUNvbnRleHQsXG4gIHVzZUVmZmVjdCxcbiAgdXNlTWVtbyxcbiAgdXNlU3RhdGUsXG59IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZVRoZW1lIH0gZnJvbSAnLi4vaG9va3MvdXNlVGhlbWUnO1xuaW1wb3J0IHsgZGVmYXVsdHMgfSBmcm9tICcuLi9taXNjL2RlZmF1bHRzJztcbmltcG9ydCB7IGdyYXkgfSBmcm9tICcuLi90aGVtZS9kZWZhdWx0VGhlbWUvZGVmYXVsdENsYXNzZXMnO1xuaW1wb3J0IHsgdXNlQ3NzVmFyaWFibGVzIH0gZnJvbSAnLi4vdGhlbWUvdXNlQ3NzVmFyaWFibGVzJztcbmltcG9ydCB7IERhdGVJbnB1dCB9IGZyb20gJy4vZGF0ZUlucHV0JztcbmltcG9ydCB7IFRleHQgfSBmcm9tICcuL3RleHQnO1xuaW1wb3J0IHsgSW50ZXJwb2xhdGlvbiwgVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5cbmV4cG9ydCB0eXBlIERhdGVSYW5nZSA9IHsgbWluOiBEYXRlOyBtYXg6IERhdGUgfTtcblxuZXhwb3J0IHR5cGUgRGF0ZVBpY2tlclF1aWNrT3B0aW9uID1cbiAgfCAndG9kYXknXG4gIHwgJ3RoaXNXZWVrJ1xuICB8ICd0aGlzTW9udGgnXG4gIHwgJ3RoaXNZZWFyJ1xuICB8ICdsYXN0U2V2ZW5EYXlzJ1xuICB8ICdsYXN0VGhpcnR5RGF5cydcbiAgfCB7IGxhYmVsOiBSZWFjdE5vZGU7IHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgKCgpID0+IERhdGUgfCBEYXRlUmFuZ2UpIH1cbiAgfCAoKG9uQ2hhbmdlOiAodmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSA9PiB2b2lkKSA9PiBSZWFjdE5vZGUpO1xuXG5leHBvcnQgdHlwZSBEYXRlUGlja2VyUHJvcHMgPSB7XG4gIC8qKiBDdXJyZW50bHkgc2VsZWN0ZWQgZGF5IG9yIHJhbmdlIG9mIGRheXMuICovXG4gIHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbDtcbiAgLyoqIENhbGxiYWNrIGZvciB3aGVuIHRoZSBkYXkgKHJhbmdlKSBjaGFuZ2VzLiAqL1xuICBvbkNoYW5nZTogKHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCkgPT4gdm9pZDtcbiAgLyoqIEN1cnJlbnRseSB2aXNpYmxlIGRhdGUuICovXG4gIGRhdGVJblZpZXc/OiBEYXRlO1xuICAvKiogQ2FsbGJhY2sgZm9yIHdoZW4gdGhlIGN1cnJlbnRseSB2aXNpYmxlIGRhdGUgY2hhbmdlcy4gKi9cbiAgb25EYXRlSW5WaWV3Q2hhbmdlPzogKHZhbHVlOiBEYXRlKSA9PiB2b2lkO1xuICAvKiogSWYgZW5hYmxlZCwgcmFuZ2VzIGNhbiBiZSBzZWxlY3RlZC4gKi9cbiAgcmFuZ2VTZWxlY3Q/OiBib29sZWFuO1xuICAvKiogV2hpY2ggbG9jYWxlIHRvIHVzZSB0byByZW5kZXIgdGhlIGNhbGVuZGFyLiAqL1xuICBsb2NhbGU/OiBzdHJpbmc7XG4gIC8qKiBXaGljaCBkYXkgb2YgdGhlIHdlZWsgc2hvdWxkIGJlIGluIHRoZSBmaXJzdCBjb2x1bW4uICgwPVN1bmRheSwgMT1Nb25kYXksIC4uLilcbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgZmlyc3REYXlPZldlZWs/OiAwIHwgMSB8IDIgfCAzIHwgNCB8IDUgfCA2O1xuICAvKiogV2hpY2ggbW9udGggdG8gc2hvdyBpbml0aWFsbHkgKi9cbiAgZGVmYXVsdERhdGVJblZpZXc/OiBEYXRlO1xuICAvKiogU2hvdyBidXR0b25zIHRvIHF1aWNrbHkgc2VsZWN0IHN1Z2dlc3RlZCBkYXRlcyBvciBkYXRlIHJhbmdlcyAqL1xuICBxdWlja09wdGlvbnM/OiBEYXRlUGlja2VyUXVpY2tPcHRpb25bXTtcbiAgLyoqIE1pbmltdW0gc2VsZWN0YWJsZSBkYXRlICovXG4gIC8qKiBEYXRlIHJhbmdlcyB0aGF0IGFyZSB2aXN1YWxseSBtYXJrZWQgYXMgYmxvY2tlZCAqL1xuICBibG9ja2VkUmFuZ2VzPzogRGF0ZVJhbmdlW107XG4gIG1pbkRhdGU/OiBEYXRlO1xuICAvKiogTWF4aW11bSBzZWxlY3RhYmxlIGRhdGUgKi9cbiAgbWF4RGF0ZT86IERhdGU7XG4gIC8qKiBXaGV0aGVyIHRvIHNob3cgdGhlIGNhbGVuZGFyIHdlZWsgaW4gdGhlIGZpcnN0IGNvbHVtbiAqL1xuICBzaG93Q2FsZW5kYXJXZWVrPzogYm9vbGVhbjtcbn07XG5cbmNvbnN0IERhdGVQaWNrZXJDb250ZXh0ID0gY3JlYXRlQ29udGV4dDxQYXJ0aWFsPE9taXQ8RGF0ZVBpY2tlclByb3BzLCAndmFsdWUnIHwgJ29uQ2hhbmdlJz4+Pih7fSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRlUGlja2VyUHJvdmlkZXIoe1xuICBjaGlsZHJlbixcbiAgLi4ucHJvcHNcbn06IFBhcnRpYWw8T21pdDxEYXRlUGlja2VyUHJvcHMsICd2YWx1ZScgfCAnb25DaGFuZ2UnPj4gJiB7IGNoaWxkcmVuPzogUmVhY3ROb2RlIH0pIHtcbiAgY29uc3QgdmFsdWUgPSB1c2VNZW1vKCgpID0+IHByb3BzLCBbSlNPTi5zdHJpbmdpZnkocHJvcHMpXSk7XG5cbiAgcmV0dXJuIDxEYXRlUGlja2VyQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17dmFsdWV9PntjaGlsZHJlbn08L0RhdGVQaWNrZXJDb250ZXh0LlByb3ZpZGVyPjtcbn1cblxuY29uc3Qgd2Vla0RheXMgPSBbMCwgMSwgMiwgMywgNCwgNSwgNl0gYXMgY29uc3Q7XG5cbi8qKiBSb3VuZHMgYSBkYXRlIGRvd24gdG8gdGhlIHN0YXJ0IG9mIHRoZSBkYXkuICovXG5leHBvcnQgY29uc3Qgc3RhcnRPZkRheSA9IChkOiBEYXRlKSA9PiBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIGQuZ2V0TW9udGgoKSwgZC5nZXREYXRlKCkpO1xuXG4vKiogUm91bmRzIGEgZGF0ZSB1cCB0byB0aGUgZW5kIG9mIHRoZSBkYXkuICovXG5leHBvcnQgY29uc3QgZW5kT2ZEYXkgPSAoZDogRGF0ZSkgPT5cbiAgbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCBkLmdldE1vbnRoKCksIGQuZ2V0RGF0ZSgpICsgMSwgMCwgMCwgMCwgLTEpO1xuXG5leHBvcnQgY29uc3QgbGFzdERheXMgPSAoZGF5czogbnVtYmVyKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcbiAgbWluLnNldERhdGUobWluLmdldERhdGUoKSAtIGRheXMgKyAxKTtcblxuICByZXR1cm4ge1xuICAgIG1pbjogc3RhcnRPZkRheShtaW4pLFxuICAgIG1heDogZW5kT2ZEYXkobm93KSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCB0b2RheSA9ICgpID0+IGxhc3REYXlzKDEpO1xuXG5leHBvcnQgY29uc3QgdGhpc1dlZWsgPSAoZGVsdGEgPSAwLCBmaXJzdERheU9mV2VlayA9IDEpOiBEYXRlUmFuZ2UgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBtaW4gPSBuZXcgRGF0ZShub3cpO1xuXG4gIGxldCBkaWZmID0gbWluLmdldERheSgpIC0gZmlyc3REYXlPZldlZWs7XG4gIGlmIChkaWZmIDwgMCkge1xuICAgIGRpZmYgKz0gNztcbiAgfVxuICBtaW4uc2V0RGF0ZShtaW4uZ2V0RGF0ZSgpIC0gZGlmZiArIGRlbHRhICogNyk7XG5cbiAgY29uc3QgbWF4ID0gbmV3IERhdGUobWluKTtcbiAgbWF4LnNldERhdGUobWF4LmdldERhdGUoKSArIDYpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShtYXgpLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHRoaXNNb250aCA9IChkZWx0YSA9IDApOiBEYXRlUmFuZ2UgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBtaW4gPSBuZXcgRGF0ZShub3cpO1xuICBtaW4uc2V0RGF0ZSgxKTtcbiAgbWluLnNldE1vbnRoKG1pbi5nZXRNb250aCgpICsgZGVsdGEpO1xuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0TW9udGgobWF4LmdldE1vbnRoKCkgKyAxKTtcbiAgbWF4LnNldERhdGUobWF4LmdldERhdGUoKSAtIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShtYXgpLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHRoaXNZZWFyID0gKGRlbHRhID0gMCk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG4gIG1pbi5zZXREYXRlKDEpO1xuICBtaW4uc2V0TW9udGgoMCk7XG4gIG1pbi5zZXRGdWxsWWVhcihtaW4uZ2V0RnVsbFllYXIoKSArIGRlbHRhKTtcbiAgY29uc3QgbWF4ID0gbmV3IERhdGUobWluKTtcbiAgbWF4LnNldEZ1bGxZZWFyKG1heC5nZXRGdWxsWWVhcigpICsgMSk7XG4gIG1heC5zZXREYXRlKG1heC5nZXREYXRlKCkgLSAxKTtcblxuICByZXR1cm4ge1xuICAgIG1pbjogc3RhcnRPZkRheShtaW4pLFxuICAgIG1heDogZW5kT2ZEYXkobWF4KSxcbiAgfTtcbn07XG5cbmNvbnN0IE1TX1BFUl9EQVkgPSAxMDAwICogNjAgKiA2MCAqIDI0O1xuZXhwb3J0IGNvbnN0IGdldENhbGVuZGFyV2VlayA9IChkYXRlOiBEYXRlKTogbnVtYmVyID0+IHtcbiAgLy8gSVNPIDg2MDE6IFdlZWsgMSBpcyB0aGUgd2VlayB3aXRoIHRoZSBmaXJzdCBUaHVyc2RheSBvZiB0aGUgeWVhci5cbiAgLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZVxuXG4gIGNvbnN0IGVuZE9mV2VlayA9IG5ldyBEYXRlKFxuICAgIGRhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICBkYXRlLmdldE1vbnRoKCksXG4gICAgZGF0ZS5nZXREYXRlKCkgKyAoNyAtIChkYXRlLmdldERheSgpIHx8IDcpKSxcbiAgKTtcblxuICBjb25zdCB5ZWFyID0gZW5kT2ZXZWVrLmdldEZ1bGxZZWFyKCk7XG4gIGNvbnN0IGZpcnN0RGF5T2ZZZWFyID0gbmV3IERhdGUoeWVhciwgMCwgMSk7XG4gIGNvbnN0IGRheU9mWWVhciA9XG4gICAgTWF0aC5mbG9vcihcbiAgICAgIChlbmRPZldlZWsuZ2V0VGltZSgpIC1cbiAgICAgICAgZmlyc3REYXlPZlllYXIuZ2V0VGltZSgpICtcbiAgICAgICAgKGVuZE9mV2Vlay5nZXRUaW1lem9uZU9mZnNldCgpIC0gZmlyc3REYXlPZlllYXIuZ2V0VGltZXpvbmVPZmZzZXQoKSkpIC9cbiAgICAgICAgTVNfUEVSX0RBWSxcbiAgICApICsgMTtcbiAgY29uc3Qgd2Vla09mWWVhciA9IE1hdGguZmxvb3IoKDMgKyBkYXlPZlllYXIpIC8gNyk7XG5cbiAgaWYgKHdlZWtPZlllYXIgPT09IDApIHtcbiAgICByZXR1cm4gKFxuICAgICAgZ2V0Q2FsZW5kYXJXZWVrKFxuICAgICAgICBuZXcgRGF0ZShlbmRPZldlZWsuZ2V0RnVsbFllYXIoKSwgZW5kT2ZXZWVrLmdldE1vbnRoKCksIGVuZE9mV2Vlay5nZXREYXRlKCkgLSA3KSxcbiAgICAgICkgKyAxXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiB3ZWVrT2ZZZWFyO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbW1vblF1aWNrT3B0aW9ucyA9IHtcbiAgdG9kYXk6IHsgbGFiZWw6IDxUZXh0IGlkPVwidG9kYXlcIiAvPiwgdmFsdWU6IHRvZGF5IH0sXG4gIHRoaXNXZWVrOiB7IGxhYmVsOiA8VGV4dCBpZD1cInRoaXNXZWVrXCIgLz4sIHZhbHVlOiAocHJvcHMpID0+IHRoaXNXZWVrKDAsIHByb3BzLmZpcnN0RGF5T2ZXZWVrKSB9LFxuICB0aGlzTW9udGg6IHsgbGFiZWw6IDxUZXh0IGlkPVwidGhpc01vbnRoXCIgLz4sIHZhbHVlOiAoKSA9PiB0aGlzTW9udGgoKSB9LFxuICB0aGlzWWVhcjogeyBsYWJlbDogPFRleHQgaWQ9XCJ0aGlzWWVhclwiIC8+LCB2YWx1ZTogKCkgPT4gdGhpc1llYXIoKSB9LFxuICBsYXN0U2V2ZW5EYXlzOiB7IGxhYmVsOiA8VGV4dCBpZD1cImxhc3RTZXZlbkRheXNcIiAvPiwgdmFsdWU6ICgpID0+IGxhc3REYXlzKDcpIH0sXG4gIGxhc3RUaGlydHlEYXlzOiB7IGxhYmVsOiA8VGV4dCBpZD1cImxhc3RUaGlydHlEYXlzXCIgLz4sIHZhbHVlOiAoKSA9PiBsYXN0RGF5cygzMCkgfSxcbn0gc2F0aXNmaWVzIFJlY29yZDxcbiAgRGF0ZVBpY2tlclF1aWNrT3B0aW9uICYgc3RyaW5nLFxuICB7IGxhYmVsOiBSZWFjdE5vZGU7IHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgKChwcm9wczogRGF0ZVBpY2tlclByb3BzKSA9PiBEYXRlIHwgRGF0ZVJhbmdlKSB9XG4+O1xuXG4vKiogUmV0dXJucyB3aGV0aGVyIHR3byBkYXRlcyBhbmQvb3IgZGF0ZSByYW5nZXMgaW50ZXJzZWN0LiBJbnRlcnNlY3Rpb24gaXMgY29uc2lkZXJlZCBwZXIgZGF5LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRhdGVJbnRlcnNlY3QoXG4gIGE6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsIHwgdW5kZWZpbmVkLFxuICBiOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCB8IHVuZGVmaW5lZCxcbikge1xuICBpZiAoYSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICBhID0geyBtaW46IGEsIG1heDogYSB9O1xuICB9XG4gIGlmIChiIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIGIgPSB7IG1pbjogYiwgbWF4OiBiIH07XG4gIH1cblxuICBpZiAoIWE/Lm1pbiB8fCAhYS5tYXggfHwgIWI/Lm1pbiB8fCAhYi5tYXgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gIShlbmRPZkRheShhLm1heCkgPCBzdGFydE9mRGF5KGIubWluKSB8fCBzdGFydE9mRGF5KGEubWluKSA+IGVuZE9mRGF5KGIubWF4KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRlQ2xhbXAoZGF0ZTogRGF0ZSwgbWluPzogRGF0ZSwgbWF4PzogRGF0ZSkge1xuICBpZiAobWluICYmIGRhdGUgPCBtaW4pIHtcbiAgICByZXR1cm4gbWluO1xuICB9XG5cbiAgaWYgKG1heCAmJiBkYXRlID4gbWF4KSB7XG4gICAgcmV0dXJuIG1heDtcbiAgfVxuXG4gIHJldHVybiBkYXRlO1xufVxuXG5mdW5jdGlvbiBnZXRWYWx1ZUZvckNvbXBhcmlzb24odmFsdWU/OiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCkge1xuICBpZiAoIXZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICByZXR1cm4gdmFsdWUuZ2V0VGltZSgpO1xuICB9XG4gIHJldHVybiBgJHt2YWx1ZS5taW4/LmdldFRpbWUoKX0tJHt2YWx1ZS5tYXg/LmdldFRpbWUoKX1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRGF0ZVBpY2tlcihwcm9wczogRGF0ZVBpY2tlclByb3BzKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KERhdGVQaWNrZXJDb250ZXh0KTtcblxuICBjb25zdCB7XG4gICAgdmFsdWUsXG4gICAgcmFuZ2VTZWxlY3QsXG4gICAgbG9jYWxlLFxuICAgIGZpcnN0RGF5T2ZXZWVrID0gMSxcbiAgICBkZWZhdWx0RGF0ZUluVmlldyxcbiAgICBxdWlja09wdGlvbnMgPSBbJ3RvZGF5JywgJ3RoaXNXZWVrJ10sXG4gICAgbWluRGF0ZSxcbiAgICBtYXhEYXRlLFxuICAgIHNob3dDYWxlbmRhcldlZWssXG4gICAgYmxvY2tlZFJhbmdlcyA9IFtdLFxuICB9ID0gZGVmYXVsdHM8RGF0ZVBpY2tlclByb3BzPihwcm9wcywgY29udGV4dCk7XG5cbiAgZnVuY3Rpb24gb25DaGFuZ2UodmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgdmFsdWUgPSBkYXRlQ2xhbXAodmFsdWUsIG1pbkRhdGUsIG1heERhdGUpO1xuICAgIH0gZWxzZSBpZiAodmFsdWUpIHtcbiAgICAgIHZhbHVlID0ge1xuICAgICAgICBtaW46IGRhdGVDbGFtcCh2YWx1ZS5taW4sIG1pbkRhdGUsIG1heERhdGUpLFxuICAgICAgICBtYXg6IGRhdGVDbGFtcCh2YWx1ZS5tYXgsIG1pbkRhdGUsIG1heERhdGUpLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBwcm9wcy5vbkNoYW5nZSh2YWx1ZSk7XG4gIH1cblxuICBjb25zdCBCdXR0b24gPSB1c2VUaGVtZSgodCkgPT4gdC5jb21wb25lbnRzLkJ1dHRvbik7XG4gIGNvbnN0IEljb25CdXR0b24gPSB1c2VUaGVtZSgodCkgPT4gdC5jb21wb25lbnRzLkljb25CdXR0b24pO1xuICBjb25zdCBDaGV2cm9uUmlnaHQgPSB1c2VUaGVtZSgodCkgPT4gdC5pY29ucy5DaGV2cm9uUmlnaHQpO1xuICBjb25zdCBjc3NWYXJpYWJsZXMgPSB1c2VDc3NWYXJpYWJsZXMoKTtcbiAgZnVuY3Rpb24gZ2V0RGF5Q3NzU3R5bGVzKHtcbiAgICBkaXNhYmxlZCxcbiAgICBwcmV2TW9udGgsXG4gICAgbmV4dE1vbnRoLFxuICAgIHRvZGF5LFxuICAgIGJsb2NrZWQsXG4gICAgc2VsZWN0ZWQsXG4gICAgcHJlU2VsZWN0ZWQsXG4gIH06IHtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgcHJldk1vbnRoPzogYm9vbGVhbjtcbiAgICBuZXh0TW9udGg/OiBib29sZWFuO1xuICAgIHRvZGF5PzogYm9vbGVhbjtcbiAgICBibG9ja2VkPzogYm9vbGVhbjtcbiAgICBzZWxlY3RlZD86IGJvb2xlYW47XG4gICAgcHJlU2VsZWN0ZWQ/OiBib29sZWFuO1xuICB9KTogSW50ZXJwb2xhdGlvbjxUaGVtZT4ge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICBib3JkZXI6ICdub25lJyxcbiAgICAgICAgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgY3Vyc29yOiBkaXNhYmxlZCA/IHVuZGVmaW5lZCA6ICdwb2ludGVyJyxcbiAgICAgICAgZm9udDogJ2luaGVyaXQnLFxuICAgICAgfSxcbiAgICAgIChwcmV2TW9udGggfHwgbmV4dE1vbnRoKSAmJiB7XG4gICAgICAgIGNvbG9yOiBncmF5LFxuICAgICAgfSxcbiAgICAgIHRvZGF5ICYmIHtcbiAgICAgICAgb3V0bGluZTogJzFweCBzb2xpZCB2YXIoLS1zZWNvbmRhcnlNYWluKScsXG4gICAgICB9LFxuICAgICAgYmxvY2tlZCAmJiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1ibG9ja2VkTWFpbiknLFxuICAgICAgICBjb2xvcjogJ3ZhcigtLWJsb2NrZWRDb250cmFzdFRleHQpJyxcbiAgICAgIH0sXG4gICAgICBzZWxlY3RlZCAmJiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1wcmltYXJ5TWFpbiknLFxuICAgICAgICBjb2xvcjogJ3ZhcigtLXByaW1hcnlDb250cmFzdFRleHQpJyxcbiAgICAgIH0sXG4gICAgICBibG9ja2VkICYmXG4gICAgICAgIHNlbGVjdGVkICYmIHtcbiAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICAgICAnOjpiZWZvcmUnOiB7XG4gICAgICAgICAgICBjb250ZW50OiAnXCJcIicsXG4gICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgIHJpZ2h0OiAwLFxuICAgICAgICAgICAgYm90dG9tOiAwLFxuICAgICAgICAgICAgbGVmdDogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1ibG9ja2VkTWFpbiknLFxuICAgICAgICAgICAgY2xpcFBhdGg6ICdwb2x5Z29uKDAgMCwgMCA1MCUsIDUwJSAwKScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIHByZVNlbGVjdGVkICYmIHtcbiAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLXByaW1hcnlMaWdodCknLFxuICAgICAgICBjb2xvcjogJ3ZhcigtLXByaW1hcnlDb250cmFzdFRleHQpJyxcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxuXG4gIGNvbnN0IG1vdW50VGltZSA9IHVzZU1lbW8oKCkgPT4gbmV3IERhdGUoKSwgW10pO1xuICBjb25zdCBbZGlydHksIHNldERpcnR5XSA9IHVzZVN0YXRlPFBhcnRpYWw8RGF0ZVJhbmdlPj4oKTtcbiAgY29uc3QgW2hvdmVyZWQsIHNldEhvdmVyZWRdID0gdXNlU3RhdGU8RGF0ZVJhbmdlPigpO1xuICBjb25zdCBbZGF0ZUluVmlld0xvY2FsLCBzZXREYXRlSW5WaWV3TG9jYWxdID0gdXNlU3RhdGU8RGF0ZT4oZGVmYXVsdERhdGVJblZpZXcgPz8gbW91bnRUaW1lKTtcbiAgY29uc3QgZGF0ZUluVmlldyA9IHByb3BzLmRhdGVJblZpZXcgPz8gZGF0ZUluVmlld0xvY2FsO1xuXG4gIGZ1bmN0aW9uIHNldERhdGVJblZpZXcoZGF0ZTogRGF0ZSkge1xuICAgIHNldERhdGVJblZpZXdMb2NhbChkYXRlKTtcbiAgICBwcm9wcy5vbkRhdGVJblZpZXdDaGFuZ2U/LihkYXRlKTtcbiAgfVxuXG4gIGNvbnN0IG1pbiA9IGRpcnR5ID8gZGlydHkubWluIDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZT8ubWluO1xuICBjb25zdCBtYXggPSBkaXJ0eSA/IGRpcnR5Lm1heCA6IHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IHZhbHVlIDogdmFsdWU/Lm1heDtcblxuICBjb25zdCByZXNvbHZlZFF1aWNrT3B0aW9ucyA9IFsuLi5xdWlja09wdGlvbnMsIHsgbGFiZWw6IDxUZXh0IGlkPVwicmVzZXRcIiAvPiwgdmFsdWU6IG51bGwgfV0ubWFwKFxuICAgIChvcHRpb24sIGluZGV4KSA9PiB7XG4gICAgICBpZiAob3B0aW9uIGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbigodmFsdWUpID0+IHtcbiAgICAgICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuICAgICAgICAgIG9uQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgbGFiZWwsIHZhbHVlIH0gPSB0eXBlb2Ygb3B0aW9uID09PSAnc3RyaW5nJyA/IGNvbW1vblF1aWNrT3B0aW9uc1tvcHRpb25dIDogb3B0aW9uO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgc2V0RGlydHkodW5kZWZpbmVkKTtcblxuICAgICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcbiAgICAgICAgICAgICAgb25DaGFuZ2UodmFsdWUocHJvcHMpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG9uQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAge2xhYmVsfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICk7XG4gICAgfSxcbiAgKTtcblxuICBjb25zdCB7IGNhbGVuZGFycywgZ2V0QmFja1Byb3BzLCBnZXRGb3J3YXJkUHJvcHMsIGdldERhdGVQcm9wcyB9ID0gdXNlRGF5emVkKHtcbiAgICBvbkRhdGVTZWxlY3RlZDogKCkgPT4gdW5kZWZpbmVkLFxuICAgIGZpcnN0RGF5T2ZXZWVrLFxuICAgIHNob3dPdXRzaWRlRGF5czogdHJ1ZSxcbiAgICBkYXRlOiBkYXRlSW5WaWV3LFxuICAgIG9uT2Zmc2V0Q2hhbmdlZDogKG9mZnNldCkgPT5cbiAgICAgIHNldERhdGVJblZpZXcobmV3IERhdGUoZGF0ZUluVmlldy5nZXRGdWxsWWVhcigpLCBkYXRlSW5WaWV3LmdldE1vbnRoKCkgKyBvZmZzZXQpKSxcbiAgICBvZmZzZXQ6IDAsXG4gICAgbWluRGF0ZSxcbiAgICBtYXhEYXRlLFxuICB9KTtcbiAgY29uc3Qgbm93ID0gdXNlTWVtbygoKSA9PiBzdGFydE9mRGF5KG5ldyBEYXRlKCkpLCBbXSk7XG5cbiAgY29uc3QgZm9ybWF0V2Vla2RheSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHsgZm9ybWF0IH0gPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUsIHsgd2Vla2RheTogJ3Nob3J0JyB9KTtcbiAgICByZXR1cm4gKHdlZWtEYXk6IG51bWJlcikgPT5cbiAgICAgIGZvcm1hdChuZXcgRGF0ZShEYXRlLlVUQygyMDIxLCA3LCAoKHdlZWtEYXkgKyBmaXJzdERheU9mV2VlaykgJSA3KSArIDEpKSk7XG4gIH0sIFtsb2NhbGUsIGZpcnN0RGF5T2ZXZWVrXSk7XG5cbiAgdXNlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICBzZXREYXRlSW5WaWV3KFxuICAgICAgICB2YWx1ZSA9PT0gbnVsbCA/IGRlZmF1bHREYXRlSW5WaWV3ID8/IG1vdW50VGltZSA6IHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IHZhbHVlIDogdmFsdWUubWF4LFxuICAgICAgKSxcbiAgICBbZ2V0VmFsdWVGb3JDb21wYXJpc29uKHZhbHVlKSwgZ2V0VmFsdWVGb3JDb21wYXJpc29uKGRlZmF1bHREYXRlSW5WaWV3KSwgbW91bnRUaW1lXSxcbiAgKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghcmFuZ2VTZWxlY3QpIHtcbiAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgfVxuICB9LCBbcmFuZ2VTZWxlY3RdKTtcblxuICBmdW5jdGlvbiBzZXQobWluPzogRGF0ZSwgbWF4PzogRGF0ZSwgZWRpdD86ICdtaW4nIHwgJ21heCcpIHtcbiAgICBpZiAoIXJhbmdlU2VsZWN0KSB7XG4gICAgICBvbkNoYW5nZShtaW4gPz8gbnVsbCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKG1pbiAmJiBtYXggJiYgbWluID4gbWF4KSB7XG4gICAgICBpZiAoZWRpdCA9PT0gJ21pbicpIHtcbiAgICAgICAgbWF4ID0gbWluO1xuICAgICAgfSBlbHNlIGlmIChlZGl0ID09PSAnbWF4Jykge1xuICAgICAgICBtaW4gPSBtYXg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbbWluLCBtYXhdID0gW21heCwgbWluXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIW1pbiA9PT0gIW1heCkge1xuICAgICAgc2V0RGlydHkodW5kZWZpbmVkKTtcbiAgICAgIG9uQ2hhbmdlKG1pbiAmJiBtYXggPyB7IG1pbiwgbWF4OiBlbmRPZkRheShtYXgpIH0gOiBudWxsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0RGlydHkoeyBtaW4sIG1heCB9KTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBmb3JtYXRNb250aCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHsgZm9ybWF0IH0gPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUsIHsgbW9udGg6ICdsb25nJyB9KTtcbiAgICByZXR1cm4gKG1vbnRoOiBudW1iZXIpID0+IGZvcm1hdChuZXcgRGF0ZSgyMDIxLCBtb250aCkpO1xuICB9LCBbbG9jYWxlXSk7XG5cbiAgY29uc3QgZm9ybWF0WWVhciA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHsgZm9ybWF0IH0gPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUsIHsgeWVhcjogJ251bWVyaWMnIH0pO1xuICAgIHJldHVybiAoeWVhcjogbnVtYmVyKSA9PiBmb3JtYXQobmV3IERhdGUoeWVhciwgMCwgMSkpO1xuICB9LCBbbG9jYWxlXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNzcz17Y3NzVmFyaWFibGVzfT5cbiAgICAgIDxkaXZcbiAgICAgICAgY3NzPXt7XG4gICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgIGdyaWRBdXRvRmxvdzogJ2NvbHVtbicsXG4gICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgIGFsaWduSXRlbXM6ICdiYXNlbGluZScsXG4gICAgICAgICAgZ2FwOiAndmFyKC0tc3BhY2luZyknLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8RGF0ZUlucHV0XG4gICAgICAgICAgdmFsdWU9e21pbiA/PyBudWxsfVxuICAgICAgICAgIG9uQ2hhbmdlPXsoZGF0ZSkgPT4gc2V0KGRhdGUgPz8gdW5kZWZpbmVkLCBtYXgsICdtaW4nKX1cbiAgICAgICAgICBsb2NhbGU9e2xvY2FsZX1cbiAgICAgICAgLz5cblxuICAgICAgICB7cmFuZ2VTZWxlY3QgJiYgKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICB7JyAtICd9XG4gICAgICAgICAgICA8RGF0ZUlucHV0XG4gICAgICAgICAgICAgIHZhbHVlPXttYXggPz8gbnVsbH1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhkYXRlKSA9PiBzZXQobWluLCBkYXRlID8/IHVuZGVmaW5lZCwgJ21heCcpfVxuICAgICAgICAgICAgICBsb2NhbGU9e2xvY2FsZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cblxuICAgICAge2NhbGVuZGFycy5tYXAoKHsgbW9udGgsIHllYXIsIHdlZWtzIH0pID0+IChcbiAgICAgICAgPGRpdiBrZXk9e2Ake21vbnRofSR7eWVhcn1gfSBjc3M9e3sgZGlzcGxheTogJ2dyaWQnIH19PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICBtYXJnaW46ICdjYWxjKHZhcigtLXNwYWNpbmcpICogNCkgMCcsXG4gICAgICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICAgICAgZ3JpZEF1dG9GbG93OiAnY29sdW1uJyxcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJyxcbiAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxJY29uQnV0dG9uIHR5cGU9XCJidXR0b25cIiB7Li4uZ2V0QmFja1Byb3BzKHsgY2FsZW5kYXJzIH0pfT5cbiAgICAgICAgICAgICAgPENoZXZyb25SaWdodCBjc3M9e3sgdHJhbnNmb3JtOiAncm90YXRlM2QoMCwgMCwgMSwgMTgwZGVnKScgfX0gLz5cbiAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cblxuICAgICAgICAgICAgPGRpdiBjc3M9e3sgZGlzcGxheTogJ2ZsZXgnIH19PlxuICAgICAgICAgICAgICB7Zm9ybWF0TW9udGgobW9udGgpfSB7Zm9ybWF0WWVhcih5ZWFyKX1cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8SWNvbkJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgey4uLmdldEZvcndhcmRQcm9wcyh7IGNhbGVuZGFycyB9KX0+XG4gICAgICAgICAgICAgIDxDaGV2cm9uUmlnaHQgLz5cbiAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICBqdXN0aWZ5U2VsZjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICAgICAgZ3JpZFRlbXBsYXRlQ29sdW1uczogJ3JlcGVhdCg4LCBtYXgtY29udGVudCknLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7c2hvd0NhbGVuZGFyV2VlayA/IChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICAgICAganVzdGlmeVNlbGY6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgICAgICAgICAgICBib3JkZXJSaWdodDogYDFweCBzb2xpZCAke2dyYXl9YCxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFRleHQgaWQ9XCJjYWxlbmRhcldlZWtcIiAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHt3ZWVrRGF5cy5tYXAoKF92LCB3ZWVrRGF5KSA9PiAoXG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBrZXk9e3dlZWtEYXl9XG4gICAgICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgICAgICBqdXN0aWZ5U2VsZjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge2Zvcm1hdFdlZWtkYXkod2Vla0RheSl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKSl9XG5cbiAgICAgICAgICAgIHt3ZWVrcy5tYXAoKHdlZWssIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHdlZWtTdGFydCA9IHdlZWtbMF0gYXMgRGF0ZU9iajtcbiAgICAgICAgICAgICAgY29uc3Qgd2Vla0VuZCA9IHdlZWtbNl0gYXMgRGF0ZU9iajtcbiAgICAgICAgICAgICAgY29uc3Qgd2Vla0Rpc2FibGVkID1cbiAgICAgICAgICAgICAgICAhcmFuZ2VTZWxlY3QgfHxcbiAgICAgICAgICAgICAgICAobWluRGF0ZSAmJiB3ZWVrRW5kLmRhdGUgPCBtaW5EYXRlKSB8fFxuICAgICAgICAgICAgICAgIChtYXhEYXRlICYmIHdlZWtTdGFydC5kYXRlID4gbWF4RGF0ZSk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8RnJhZ21lbnQga2V5PXtpbmRleH0+XG4gICAgICAgICAgICAgICAgICB7c2hvd0NhbGVuZGFyV2VlayA/IChcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI6ICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3I6IHdlZWtEaXNhYmxlZCA/IHVuZGVmaW5lZCA6ICdwb2ludGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQ6ICdpbmhlcml0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJpZ2h0OiBgMXB4IHNvbGlkICR7Z3JheX1gLFxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdlZWtEaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1pbiA9IG1pbkRhdGUgJiYgd2Vla1N0YXJ0LmRhdGUgPCBtaW5EYXRlID8gbWluRGF0ZSA6IHdlZWtTdGFydC5kYXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF4ID0gbWF4RGF0ZSAmJiB3ZWVrRW5kLmRhdGUgPiBtYXhEYXRlID8gbWF4RGF0ZSA6IHdlZWtFbmQuZGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldChtaW4sIG1heCk7XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJPdmVyPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgIXdlZWtEaXNhYmxlZCAmJiBzZXRIb3ZlcmVkKHsgbWluOiB3ZWVrU3RhcnQuZGF0ZSwgbWF4OiB3ZWVrRW5kLmRhdGUgfSlcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyT3V0PXsoKSA9PiAhd2Vla0Rpc2FibGVkICYmIHNldEhvdmVyZWQodW5kZWZpbmVkKX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtnZXRDYWxlbmRhcldlZWsod2Vla0VuZC5kYXRlKX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IC8+XG4gICAgICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgICAgICB7d2Vlay5tYXAoKGRhdGVPYmplY3QsIGRheUluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZGF0ZU9iamVjdCkge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8ZGl2IGtleT17ZGF5SW5kZXh9IC8+O1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBwcmV2TW9udGgsIG5leHRNb250aCwgZGF0ZSB9ID0gZGF0ZU9iamVjdDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdG9kYXkgPSBzdGFydE9mRGF5KGRhdGUpLmdldFRpbWUoKSA9PT0gbm93LmdldFRpbWUoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlzYWJsZWQgPSAobWluRGF0ZSAmJiBkYXRlIDwgbWluRGF0ZSkgfHwgKG1heERhdGUgJiYgZGF0ZSA+IG1heERhdGUpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkID1cbiAgICAgICAgICAgICAgICAgICAgICBkYXRlLmdldFRpbWUoKSA9PT0gbWluPy5nZXRUaW1lKCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAobWluICYmIG1heCAmJiBkYXRlSW50ZXJzZWN0KGRhdGUsIHsgbWluLCBtYXggfSkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmVTZWxlY3RlZCA9XG4gICAgICAgICAgICAgICAgICAgICAgIXNlbGVjdGVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgIWRpc2FibGVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgKGRhdGVJbnRlcnNlY3QoZGF0ZSwgaG92ZXJlZCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIChtaW4gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIW1heCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICBob3ZlcmVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVJbnRlcnNlY3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW4gPD0gaG92ZXJlZC5taW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBtaW4sIG1heDogaG92ZXJlZC5taW4gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7IG1pbjogaG92ZXJlZC5tYXgsIG1heDogbWluIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tlZCA9IGJsb2NrZWRSYW5nZXMuc29tZSgocmFuZ2UpID0+IGRhdGVJbnRlcnNlY3QoZGF0ZSwgcmFuZ2UpKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtgJHtpbmRleH0tJHtkYXlJbmRleH1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtnZXREYXlDc3NTdHlsZXMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldk1vbnRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0TW9udGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRvZGF5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja2VkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlU2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5nZXREYXRlUHJvcHMoeyBkYXRlT2JqOiBkYXRlT2JqZWN0IH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGlydHkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWluKSBzZXQobWluLCBkYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHNldChkYXRlLCBtYXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldChkYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlck92ZXI9eygpID0+IHNldEhvdmVyZWQoeyBtaW46IGRhdGUsIG1heDogZGF0ZSB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlck91dD17KCkgPT4gc2V0SG92ZXJlZCh1bmRlZmluZWQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtkYXRlLmdldERhdGUoKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICApKX1cblxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e3tcbiAgICAgICAgICBtYXJnaW5Ub3A6ICd2YXIoLS1zcGFjaW5nKScsXG4gICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgIGdyaWRBdXRvRmxvdzogJ2NvbHVtbicsXG4gICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICB7cmVzb2x2ZWRRdWlja09wdGlvbnN9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiJdfQ== */"), onClick: () => {
1230
1240
  if (weekDisabled) {
1231
1241
  return;
1232
1242
  }
1233
1243
  const min2 = minDate && weekStart.date < minDate ? minDate : weekStart.date;
1234
1244
  const max2 = maxDate && weekEnd.date > maxDate ? maxDate : weekEnd.date;
1235
1245
  set(min2, max2);
1236
- }, children: getCalendarWeek(week[0].date) }) : /* @__PURE__ */ jsx("div", {}),
1246
+ }, onPointerOver: () => !weekDisabled && setHovered({
1247
+ min: weekStart.date,
1248
+ max: weekEnd.date
1249
+ }), onPointerOut: () => !weekDisabled && setHovered(void 0), children: getCalendarWeek(weekEnd.date) }) : /* @__PURE__ */ jsx("div", {}),
1237
1250
  week.map((dateObject, dayIndex) => {
1238
1251
  if (!dateObject) {
1239
1252
  return /* @__PURE__ */ jsx("div", {}, dayIndex);
@@ -1249,11 +1262,11 @@ function DatePicker(props) {
1249
1262
  min,
1250
1263
  max
1251
1264
  });
1252
- const preSelected = !selected && !disabled && (date.getTime() === (hovered == null ? void 0 : hovered.getTime()) || min && !max && hovered && dateIntersect(date, min <= hovered ? {
1265
+ const preSelected = !selected && !disabled && (dateIntersect(date, hovered) || min && !max && hovered && dateIntersect(date, min <= hovered.min ? {
1253
1266
  min,
1254
- max: hovered
1267
+ max: hovered.min
1255
1268
  } : {
1256
- min: hovered,
1269
+ min: hovered.max,
1257
1270
  max: min
1258
1271
  }));
1259
1272
  const blocked = blockedRanges.some((range) => dateIntersect(date, range));
@@ -1276,7 +1289,10 @@ function DatePicker(props) {
1276
1289
  } else {
1277
1290
  set(date);
1278
1291
  }
1279
- }, onPointerOver: () => setHovered(date), onPointerOut: () => setHovered(void 0), disabled, children: date.getDate() }, `${index}-${dayIndex}`);
1292
+ }, onPointerOver: () => setHovered({
1293
+ min: date,
1294
+ max: date
1295
+ }), onPointerOut: () => setHovered(void 0), disabled, children: date.getDate() }, `${index}-${dayIndex}`);
1280
1296
  })
1281
1297
  ] }, index);
1282
1298
  })