@kkcompany/player 2.25.0-canary.7 → 2.25.0-canary.9

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/index.mjs CHANGED
@@ -79,14 +79,6 @@ function getDevice() {
79
79
 
80
80
  const isSafari = () => /^((?!chrome|android|X11|Linux).)*(safari|iPad|iPhone|Version)/i.test(navigator.userAgent);
81
81
 
82
- function needNativeHls() {
83
- // Don't let Android phones play HLS, even if some of them report supported
84
- // This covers Samsung & OPPO special cases
85
- const isAndroid = /android|X11|Linux/i.test(navigator.userAgent);
86
- return isAndroid || /firefox/i.test(navigator.userAgent) ? '' : // canPlayType isn't reliable across all iOS verion / device combinations, so also check user agent
87
- isSafari() ? 'maybe' : document.createElement('video').canPlayType('application/vnd.apple.mpegURL');
88
- }
89
-
90
82
  const isDesktop = () => !getDevice().type; // TODO solve lint error:
91
83
  // navigator.maxTouchPoints() is not supported in Safari 11, iOS Safari 11.0-11.2 compat/compat
92
84
 
@@ -104,38 +96,6 @@ const havePointer = () => {
104
96
  return havePointer.memo;
105
97
  };
106
98
 
107
- const timeoutError = () => new Error('request timeout');
108
- /**
109
- * @param {URL|RequestInfo} url
110
- * @param {RequestInit} options
111
- * @param {{responseType: 'json'|'text'}}
112
- */
113
-
114
-
115
- const retryRequest = (url, options = {}, {
116
- responseType = 'json',
117
- timeout = 6,
118
- retryTimes = 6
119
- } = {}) => new Promise((resolve, reject) => {
120
- setTimeout(() => reject(timeoutError()), timeout * 1000);
121
- fetch(url, options).then(response => {
122
- var _response$responseTyp;
123
-
124
- return resolve(((_response$responseTyp = response[responseType]) === null || _response$responseTyp === void 0 ? void 0 : _response$responseTyp.call(response)) || response);
125
- }).catch(reject);
126
- }).catch(error => {
127
- console.log(error);
128
-
129
- if (retryTimes > 0) {
130
- return retryRequest(url, options, {
131
- timeout,
132
- retryTimes: retryTimes - 1
133
- });
134
- }
135
-
136
- return error;
137
- });
138
-
139
99
  const protocolExtensions = {
140
100
  hls: 'm3u8',
141
101
  dash: 'mpd'
@@ -288,74 +248,6 @@ const getDrmOptions = source => {
288
248
  }];
289
249
  };
290
250
 
291
- function convertToSeconds(timeString) {
292
- const [hours, minutes, seconds] = timeString.split(':').map(parseFloat);
293
- return hours * 3600 + minutes * 60 + seconds;
294
- }
295
- function getVersion() {
296
- try {
297
- // eslint-disable-next-line no-undef
298
- return "2.25.0-canary.7";
299
- } catch (e) {
300
- return undefined;
301
- }
302
- }
303
- function getPopoverPosition(rect, target, boundary) {
304
- const rectX = rect.x || rect.left;
305
- const boundaryX = boundary.x || boundary.left;
306
- const maxLeft = boundary.width - rect.width;
307
- const targetCenter = (target.left + target.right) / 2 - boundaryX;
308
- const center = rectX + rect.width / 2 - boundaryX;
309
- const alignLeft = rectX + (targetCenter - center) - boundaryX;
310
- return {
311
- left: Math.max(0, Math.min(alignLeft, maxLeft)),
312
- top: target.top - rect.height
313
- };
314
- } // eslint-disable-next-line consistent-return
315
-
316
- const nearest = (items, diff) => {
317
- if (!items.length) {
318
- return;
319
- }
320
-
321
- return items.reduce((a, b) => Math.abs(diff(a)) > Math.abs(diff(b)) ? b : a, items[0]);
322
- };
323
-
324
- /* eslint-disable no-param-reassign */
325
-
326
- const matchAll = (input, pattern) => {
327
- const flags = [pattern.global && 'g', pattern.ignoreCase && 'i', pattern.multiline && 'm'].filter(Boolean).join('');
328
- const clone = new RegExp(pattern, flags);
329
- return Array.from(function* () {
330
- let matched = true;
331
-
332
- while (1) {
333
- matched = clone.exec(input);
334
-
335
- if (!matched) {
336
- return;
337
- }
338
-
339
- yield matched;
340
- }
341
- }());
342
- };
343
-
344
- const getHlsQualityOptions = manifest => {
345
- const resolutionList = matchAll(manifest, /RESOLUTION=\d+x(\d+)/g);
346
- return Array.from(new Set(resolutionList.map(([, height]) => ({
347
- height: +height
348
- })))).sort((a, b) => b.height - a.height);
349
- };
350
-
351
- const selectVideoResolution = (_media, {
352
- player
353
- }, restrictions) => {
354
- player.preferredSettings.videoResolution = restrictions;
355
- player.configure('abr.restrictions', restrictions);
356
- };
357
- // for unit test
358
-
359
251
  /* eslint-disable no-param-reassign */
360
252
  // when the gap is small enough, we consider it is on edge.
361
253
  // The magic number 10s comes from observation of YouTube
@@ -525,22 +417,6 @@ const subscribePlaybackState = (media, updateState, {
525
417
  return () => registered.forEach(off => off());
526
418
  };
527
419
 
528
- const tryPatchHlsVideoQualities = async (player, hlsUrl) => {
529
- if (/(^data)|(mp4$)/.test(hlsUrl)) {
530
- return;
531
- } // filtered manifest comes with data URI and should be ignored
532
-
533
-
534
- const manifest = await retryRequest(hlsUrl, {}, {
535
- responseType: 'text'
536
- }).catch(e => console.warn('Failed to get HLS video qualities', e));
537
- const videoQualities = getHlsQualityOptions(manifest);
538
-
539
- if (videoQualities) {
540
- player.getVariantTracks = () => videoQualities;
541
- }
542
- };
543
-
544
420
  const seek = async (media, {
545
421
  player,
546
422
  plugins = []
@@ -690,10 +566,6 @@ const load = async (media, {
690
566
  loadStartTime = merged.startTime;
691
567
  }
692
568
 
693
- if (needNativeHls() && merged.type === 'application/x-mpegurl') {
694
- await tryPatchHlsVideoQualities(player, merged.src);
695
- }
696
-
697
569
  return player.unload().then(() => player.load(merged.src, loadStartTime, merged.type)).then(loadResult => {
698
570
  getSourceText(source).forEach(({
699
571
  src,
@@ -843,11 +715,16 @@ const getTextTracks = (_, {
843
715
  }).filter(track => track.label !== 'unknown' && track.language && !/^un/i.test(track.language));
844
716
  };
845
717
 
718
+ const textTrackOptionOff = {
719
+ label: 'none',
720
+ language: 'none'
721
+ };
722
+
846
723
  const getCurrentSubtitle = (_, {
847
724
  player
848
725
  }) => getTextTracks({}, {
849
726
  player
850
- }).find(track => track.selected) || 'off';
727
+ }).find(track => track.selected) || textTrackOptionOff.label;
851
728
 
852
729
  const textTrackLabel = 'playcraft-text-track';
853
730
  /** @param media HTMLMediaElement */
@@ -865,9 +742,7 @@ const syncTextTrack = (media, {
865
742
  label,
866
743
  language,
867
744
  textTracks = []
868
- } = selected === 'off' ? {
869
- language: 'off'
870
- } : selected;
745
+ } = selected === textTrackOptionOff.label ? textTrackOptionOff : selected;
871
746
  const cues = (_textTracks$find = textTracks.find(track => {
872
747
  var _track$cues;
873
748
 
@@ -887,7 +762,7 @@ const syncTextTrack = (media, {
887
762
 
888
763
  Array.from(cues).forEach(cue => customTextTrack.addCue(new VTTCue(cue.startTime, cue.endTime, cue.text)));
889
764
  customTextTrack.mode = 'showing';
890
- } else if (language === 'off') {
765
+ } else if (language === textTrackOptionOff.language) {
891
766
  player.setTextTrackVisibility(false);
892
767
  } else {
893
768
  if (customTextTrack) {
@@ -907,7 +782,7 @@ const syncTextTrack = (media, {
907
782
  }
908
783
 
909
784
  return ((_media$textTracks = media.textTracks) === null || _media$textTracks === void 0 ? void 0 : _media$textTracks.addEventListener) && on(media.textTracks, 'change', () => {
910
- if (language === 'off') {
785
+ if (language === textTrackOptionOff.language) {
911
786
  player.setTextTrackVisibility(false);
912
787
  }
913
788
  });
@@ -917,7 +792,7 @@ const syncTextTrack = (media, {
917
792
  const setAudioTrack = (_, {
918
793
  player
919
794
  }, next) => {
920
- if (!next) return;
795
+ if (!next || !player) return;
921
796
 
922
797
  try {
923
798
  player.selectAudioLanguage(next.language);
@@ -930,6 +805,39 @@ const setAudioTrack = (_, {
930
805
  }
931
806
  };
932
807
 
808
+ function convertToSeconds(timeString) {
809
+ const [hours, minutes, seconds] = timeString.split(':').map(parseFloat);
810
+ return hours * 3600 + minutes * 60 + seconds;
811
+ }
812
+ function getVersion() {
813
+ try {
814
+ // eslint-disable-next-line no-undef
815
+ return "2.25.0-canary.9";
816
+ } catch (e) {
817
+ return undefined;
818
+ }
819
+ }
820
+ function getPopoverPosition(rect, target, boundary) {
821
+ const rectX = rect.x || rect.left;
822
+ const boundaryX = boundary.x || boundary.left;
823
+ const maxLeft = boundary.width - rect.width;
824
+ const targetCenter = (target.left + target.right) / 2 - boundaryX;
825
+ const center = rectX + rect.width / 2 - boundaryX;
826
+ const alignLeft = rectX + (targetCenter - center) - boundaryX;
827
+ return {
828
+ left: Math.max(0, Math.min(alignLeft, maxLeft)),
829
+ top: target.top - rect.height
830
+ };
831
+ } // eslint-disable-next-line consistent-return
832
+
833
+ const nearest = (items, diff) => {
834
+ if (!items.length) {
835
+ return;
836
+ }
837
+
838
+ return items.reduce((a, b) => Math.abs(diff(a)) > Math.abs(diff(b)) ? b : a, items[0]);
839
+ };
840
+
933
841
  /* eslint-disable no-param-reassign */
934
842
 
935
843
  const getSpeedItems = items => items.map(value => ({
@@ -994,7 +902,7 @@ const getAudioTracks = (_, {
994
902
  }) => {
995
903
  if (!player) return []; // Bitmovin support is omitted as it is not needed in near future
996
904
 
997
- const all = player.getVariantTracks().reduce((result, track) => {
905
+ const all = player.getAudioTracks().reduce((result, track) => {
998
906
  var _track$label;
999
907
 
1000
908
  const label = ((_track$label = track.label) === null || _track$label === void 0 ? void 0 : _track$label.trim()) || track.language || 'unknown';
@@ -1190,18 +1098,20 @@ const getSettingsData = ({
1190
1098
  const matchTracks = (tracks, sorted) => (sorted === null || sorted === void 0 ? void 0 : sorted.map(track => tracks.find(t => t.language === track.language && t.label === track.label)).filter(Boolean)) || tracks;
1191
1099
 
1192
1100
  const getLanguageOptions = (player, sorted) => {
1193
- const audioTracks = player && getAudioTracks({}, {
1101
+ const audioTracks = player ? getAudioTracks({}, {
1194
1102
  player
1195
- });
1103
+ }) : [];
1196
1104
  const textTracks = getTextTracks({}, {
1197
1105
  player
1198
1106
  });
1199
1107
  const textOptions = [].concat(textTracks, {
1200
1108
  type: 'subtitles',
1201
- label: 'OFF',
1109
+ label: 'none',
1110
+ language: 'none',
1202
1111
  selected: !textTracks.some(track => track.selected),
1203
1112
  value: {
1204
- language: 'off',
1113
+ label: 'none',
1114
+ language: 'none',
1205
1115
  id: 'off'
1206
1116
  }
1207
1117
  });
@@ -2405,6 +2315,7 @@ var ja = {
2405
2315
  "KKS.QUALITY": "解像度",
2406
2316
  "KKS.AUDIO": "音声",
2407
2317
  "KKS.SETTING.OFF": "オフ",
2318
+ "KKS.SETTING.none": "オフ",
2408
2319
  "KKS.SUBTITLES": "字幕",
2409
2320
  "KKS.SETTING": "設定",
2410
2321
  "KKS.SETTING.CONFLICT": "ご視聴する動画は、デフォルト画質設定に一致しません。",
@@ -5027,7 +4938,7 @@ const OverlayPanel = ({
5027
4938
  });
5028
4939
  };
5029
4940
 
5030
- /* eslint-disable jsx-a11y/no-static-element-interactions */
4941
+ /* @jsxImportSource @emotion/react */
5031
4942
  const menuItemStyle = {
5032
4943
  padding: 'var(--menu-item-padding, 0.5em 1em) ',
5033
4944
  display: 'flex',
@@ -5061,10 +4972,13 @@ const MenuItem = ({
5061
4972
  selected,
5062
4973
  onClick
5063
4974
  }) => jsx$1("div", {
5064
- css: [menuItemStyle, selected && menuItemSelectedStyle, process.env.NODE_ENV === "production" ? "" : ";label:MenuItem;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1lbnVJdGVtLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1DSSIsImZpbGUiOiJNZW51SXRlbS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9ucyAqL1xuLyogQGpzeEltcG9ydFNvdXJjZSBAZW1vdGlvbi9yZWFjdCAqL1xuaW1wb3J0IGljb24gZnJvbSAnc3R5bGUvaWNvbidcblxuY29uc3QgbWVudUl0ZW1TdHlsZSA9IHtcbiAgcGFkZGluZzogJ3ZhcigtLW1lbnUtaXRlbS1wYWRkaW5nLCAwLjVlbSAxZW0pICcsXG4gIGRpc3BsYXk6ICdmbGV4JyxcbiAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIG1pbldpZHRoOiAwLFxuICBjb2xvcjogJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC42KScsXG4gIGJhY2tncm91bmQ6ICd2YXIoLS1tZW51LWl0ZW0tYmFja2dyb3VuZCwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KSknLCBcbiAgJz4gZGl2Jzoge1xuICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJyxcbiAgICB0ZXh0T3ZlcmZsb3c6ICdlbGxpcHNpcycsXG4gIH1cbn1cblxuY29uc3QgbWVudUl0ZW1TZWxlY3RlZFN0eWxlID0ge1xuICBjb2xvcjogJyNGRkYnLFxuICBmb250V2VpZ2h0OiAnNjAwJyxcbiAgJzo6YWZ0ZXInOiB7XG4gICAgY29udGVudDogJ1wiIFwiJyxcbiAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICBmbGV4OiAnMCAwIDFlbScsXG4gICAgaGVpZ2h0OiAnMWVtJyxcbiAgICBtYXJnaW5MZWZ0OiAnMC41ZW0nLFxuICAgIGJhY2tncm91bmRDb2xvcjogJ3ZhcigtLXNldHRpbmctY2hlY2staWNvbi1jb2xvciwgI2ZmZiknLFxuICAgIG1hc2tTaXplOiAnY29udGFpbicsXG4gICAgbWFza0ltYWdlOiBgdXJsKCR7aWNvbi5jaGVja30pYCxcbiAgfSxcbn1cblxuY29uc3QgTWVudUl0ZW0gPSAoe2xhYmVsLCBzZWxlY3RlZCwgb25DbGlja30pID0+IChcbiAgPGRpdlxuICAgIGNzcz17W21lbnVJdGVtU3R5bGUsIHNlbGVjdGVkICYmIG1lbnVJdGVtU2VsZWN0ZWRTdHlsZV19XG4gICAgb25DbGljaz17b25DbGlja31cbiAgPlxuICAgIDxkaXY+e2xhYmVsfTwvZGl2PlxuICA8L2Rpdj5cbilcblxuZXhwb3J0IGRlZmF1bHQgTWVudUl0ZW1cbiJdfQ== */"],
4975
+ css: [menuItemStyle, selected && menuItemSelectedStyle, process.env.NODE_ENV === "production" ? "" : ";label:MenuItem;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1lbnVJdGVtLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW9DSSIsImZpbGUiOiJNZW51SXRlbS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIEBqc3hJbXBvcnRTb3VyY2UgQGVtb3Rpb24vcmVhY3QgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9ucyAqL1xuaW1wb3J0IGljb24gZnJvbSAnc3R5bGUvaWNvbidcbmltcG9ydCB7Rm9ybWF0dGVkTWVzc2FnZX0gZnJvbSAnY29udGV4dC9JMThuJ1xuXG5jb25zdCBtZW51SXRlbVN0eWxlID0ge1xuICBwYWRkaW5nOiAndmFyKC0tbWVudS1pdGVtLXBhZGRpbmcsIDAuNWVtIDFlbSkgJyxcbiAgZGlzcGxheTogJ2ZsZXgnLFxuICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgbWluV2lkdGg6IDAsXG4gIGNvbG9yOiAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjYpJyxcbiAgYmFja2dyb3VuZDogJ3ZhcigtLW1lbnUtaXRlbS1iYWNrZ3JvdW5kLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpKScsXG4gICc+IGRpdic6IHtcbiAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gICAgdGV4dE92ZXJmbG93OiAnZWxsaXBzaXMnLFxuICB9LFxufVxuXG5jb25zdCBtZW51SXRlbVNlbGVjdGVkU3R5bGUgPSB7XG4gIGNvbG9yOiAnI0ZGRicsXG4gIGZvbnRXZWlnaHQ6ICc2MDAnLFxuICAnOjphZnRlcic6IHtcbiAgICBjb250ZW50OiAnXCIgXCInLFxuICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgIGZsZXg6ICcwIDAgMWVtJyxcbiAgICBoZWlnaHQ6ICcxZW0nLFxuICAgIG1hcmdpbkxlZnQ6ICcwLjVlbScsXG4gICAgYmFja2dyb3VuZENvbG9yOiAndmFyKC0tc2V0dGluZy1jaGVjay1pY29uLWNvbG9yLCAjZmZmKScsXG4gICAgbWFza1NpemU6ICdjb250YWluJyxcbiAgICBtYXNrSW1hZ2U6IGB1cmwoJHtpY29uLmNoZWNrfSlgLFxuICB9LFxufVxuXG5jb25zdCBNZW51SXRlbSA9ICh7bGFiZWwsIHNlbGVjdGVkLCBvbkNsaWNrfSkgPT4gKFxuICA8ZGl2XG4gICAgY3NzPXtbbWVudUl0ZW1TdHlsZSwgc2VsZWN0ZWQgJiYgbWVudUl0ZW1TZWxlY3RlZFN0eWxlXX1cbiAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICA+XG4gICAgPGRpdj5cbiAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPXtgS0tTLlNFVFRJTkcuJHtsYWJlbH1gfSBkZWZhdWx0TWVzc2FnZT17bGFiZWx9IC8+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuKVxuXG5leHBvcnQgZGVmYXVsdCBNZW51SXRlbVxuIl19 */"],
5065
4976
  onClick: onClick,
5066
4977
  children: jsx$1("div", {
5067
- children: label
4978
+ children: jsx$1(FormattedMessage, {
4979
+ id: `KKS.SETTING.${label}`,
4980
+ defaultMessage: label
4981
+ })
5068
4982
  })
5069
4983
  });
5070
4984
 
@@ -7759,7 +7673,7 @@ const loadPlayer = async (videoElement, {
7759
7673
  // TODO unsubscribe to release the video element
7760
7674
  // when resuming from background, video may play without no media events
7761
7675
  // on some iOS devices, pause again to workaround
7762
- if (!isIOS()) {
7676
+ if (isIOS()) {
7763
7677
  on(document, 'visibilitychange', () => setTimeout(() => videoElement.pause(), 50));
7764
7678
  }
7765
7679
 
@@ -7796,6 +7710,16 @@ const loadPlayer = async (videoElement, {
7796
7710
  return player;
7797
7711
  };
7798
7712
 
7713
+ /* eslint-disable no-param-reassign */
7714
+
7715
+ const selectVideoResolution = (_media, {
7716
+ player
7717
+ }, restrictions) => {
7718
+ player.preferredSettings.videoResolution = restrictions;
7719
+ player.configure('abr.restrictions', restrictions);
7720
+ };
7721
+ // for unit test
7722
+
7799
7723
  const baseVideoStyle = {
7800
7724
  objectFit: 'contain',
7801
7725
  width: '100%',
@@ -7821,9 +7745,9 @@ const Video = ({
7821
7745
  currentTime: targetTime,
7822
7746
  playbackRate,
7823
7747
  videoResolution,
7748
+ audioTrack = {},
7824
7749
  textTracks = emptyArray,
7825
7750
  textTrack,
7826
- audio = {},
7827
7751
  liveResume,
7828
7752
  iOSFullscreenDetectThreshold,
7829
7753
  // TODO organize props
@@ -7840,7 +7764,7 @@ const Video = ({
7840
7764
  onPlaylogFired,
7841
7765
  ...videoAttributes
7842
7766
  }) => {
7843
- var _videoElement$current;
7767
+ var _videoElement$current, _videoElement$current2;
7844
7768
 
7845
7769
  const handlers = useRef();
7846
7770
  handlers.current = {
@@ -7941,11 +7865,9 @@ const Video = ({
7941
7865
  }, videoResolution);
7942
7866
  }
7943
7867
  }, [videoResolution, player]);
7944
- useEffect(() => {
7945
- setAudioTrack(videoElement.current, {
7946
- player
7947
- }, audio);
7948
- }, [(audio === null || audio === void 0 ? void 0 : audio.id) || `${audio.language || 'unk'}:${audio.label || ''}`, player]);
7868
+ useEffect(() => setAudioTrack(videoElement.current, {
7869
+ player
7870
+ }, audioTrack), [((_videoElement$current = videoElement.current) === null || _videoElement$current === void 0 ? void 0 : _videoElement$current.readyState) >= 2 && audioTrack.label, audioTrack.language]);
7949
7871
  useEffect(() => {
7950
7872
  if ((textTracks === null || textTracks === void 0 ? void 0 : textTracks.length) > 0 || textTrack) {
7951
7873
  return syncTextTrack(videoElement.current, {
@@ -7954,12 +7876,12 @@ const Video = ({
7954
7876
  textTracks
7955
7877
  } : textTrack);
7956
7878
  }
7957
- }, [((_videoElement$current = videoElement.current) === null || _videoElement$current === void 0 ? void 0 : _videoElement$current.readyState) >= 2 && textTracks, textTrack]);
7879
+ }, [((_videoElement$current2 = videoElement.current) === null || _videoElement$current2 === void 0 ? void 0 : _videoElement$current2.readyState) >= 2 && textTracks, textTrack]);
7958
7880
  return jsx$1("div", {
7959
7881
  ref: videoContainer,
7960
7882
  css: /*#__PURE__*/css({
7961
7883
  video: baseVideoStyle
7962
- }, process.env.NODE_ENV === "production" ? "" : ";label:Video;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlZpZGVvLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWtLOEIiLCJmaWxlIjoiVmlkZW8uanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1wYXJhbS1yZWFzc2lnbiAqL1xuLyogQGpzeEltcG9ydFNvdXJjZSBAZW1vdGlvbi9yZWFjdCAqL1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZUxheW91dEVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnXG5cbmltcG9ydCBtdWx0aVJlZiBmcm9tICd1dGlsL211bHRpUmVmJ1xuaW1wb3J0IGxvYWRQbGF5ZXIgZnJvbSAncGxheWVyQ29yZS9sb2FkUGxheWVyJ1xuaW1wb3J0IHtcbiAgZ2V0TWVkaWFUaW1lLFxuICBzdWJzY3JpYmVQbGF5YmFja1N0YXRlLFxuICBsb2FkLFxuICBzeW5jUGxheWJhY2tTdGF0ZSxcbiAgc2VlayxcbiAgc2V0UGxheWJhY2tSYXRlLFxuICBzZXRBdWRpb1RyYWNrLFxuICBzeW5jVGV4dFRyYWNrLFxufSBmcm9tICdwbGF5ZXJDb3JlL21lZGlhQmluZGluZ3MnXG5pbXBvcnQge3NlbGVjdFZpZGVvUmVzb2x1dGlvbn0gZnJvbSAncGxheWVyQ29yZS9hZGFwdGF0aW9uJ1xuXG5jb25zdCBiYXNlVmlkZW9TdHlsZSA9IHtcbiAgb2JqZWN0Rml0OiAnY29udGFpbicsXG4gIHdpZHRoOiAnMTAwJScsXG4gIG1heEhlaWdodDogJzEwMCUnLFxuICAnJjpmdWxsc2NyZWVuJzoge1xuICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgIHRvcDogMCxcbiAgICBsZWZ0OiAwLFxuICAgIGJvdHRvbTogMCxcbiAgICByaWdodDogMCxcbiAgfSxcbiAgJ34gLnNoYWthLXRleHQtY29udGFpbmVyJzoge1xuICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgIGhlaWdodDogJzEwMCUnLFxuICAgIHdpZHRoOiAnMTAwJScsXG4gIH0sXG59XG5cbmNvbnN0IGVtcHR5QXJyYXkgPSBbXVxuXG5jb25zdCBWaWRlbyA9ICh7XG4gIHNvdXJjZSxcbiAgcGxheWJhY2tTdGF0ZTogdGFyZ2V0U3RhdGUsXG4gIGN1cnJlbnRUaW1lOiB0YXJnZXRUaW1lLFxuICBwbGF5YmFja1JhdGUsXG4gIHZpZGVvUmVzb2x1dGlvbixcbiAgdGV4dFRyYWNrcyA9IGVtcHR5QXJyYXksXG4gIHRleHRUcmFjayxcbiAgYXVkaW8gPSB7fSxcbiAgbGl2ZVJlc3VtZSxcbiAgaU9TRnVsbHNjcmVlbkRldGVjdFRocmVzaG9sZCwgLy8gVE9ETyBvcmdhbml6ZSBwcm9wc1xuICBwbHVnaW5zID0gW10sXG4gIHNoYWthLFxuICBiaXRtb3ZpbixcbiAgbGljZW5zZSxcbiAgdmFsaWRhdGlvbkhvc3QsXG4gIHZpZGVvUmVmLFxuICBwbGF5ZXJSZWYsXG4gIG9uUGxheWVyTG9hZGVkLFxuICBvblBsYXliYWNrU3RhdGVDaGFuZ2UsXG4gIG9uQmxvY2tlZEF1dG9wbGF5LFxuICBvblBsYXlsb2dGaXJlZCxcbiAgLi4udmlkZW9BdHRyaWJ1dGVzXG59KSA9PiB7XG4gIGNvbnN0IGhhbmRsZXJzID0gdXNlUmVmKClcbiAgaGFuZGxlcnMuY3VycmVudCA9IHtvblBsYXliYWNrU3RhdGVDaGFuZ2UsIG9uQmxvY2tlZEF1dG9wbGF5fVxuICBjb25zdCB2aWRlb0NvbnRhaW5lciA9IHVzZVJlZigpXG4gIGNvbnN0IHZpZGVvRWxlbWVudCA9IHVzZVJlZigpXG4gIGNvbnN0IFtwbGF5YmFja1N0YXRlLCBzZXRQbGF5YmFja1N0YXRlXSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBbcGxheWVyLCBzZXRQbGF5ZXJdID0gdXNlU3RhdGUoKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgbG9hZFRhc2sgPSBsb2FkUGxheWVyKHZpZGVvRWxlbWVudC5jdXJyZW50LCB7XG4gICAgICBjb250YWluZXI6IHZpZGVvQ29udGFpbmVyLmN1cnJlbnQsXG4gICAgICBzb3VyY2UsXG4gICAgICBzaGFrYSxcbiAgICAgIGJpdG1vdmluLFxuICAgIH0pLnRoZW4oYmFzZVBsYXllciA9PiB7XG4gICAgICBzZXRQbGF5ZXIoYmFzZVBsYXllcilcbiAgICAgIG9uUGxheWVyTG9hZGVkPy4oYmFzZVBsYXllcilcbiAgICAgIGlmIChwbGF5ZXJSZWYpIHtcbiAgICAgICAgcGxheWVyUmVmLmN1cnJldCA9IGJhc2VQbGF5ZXJcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlUGxheWVyXG4gICAgfSlcbiAgICBjb25zdCBvZmZQbGF5YmFja1N0YXRlID0gc3Vic2NyaWJlUGxheWJhY2tTdGF0ZShcbiAgICAgIHZpZGVvRWxlbWVudC5jdXJyZW50LFxuICAgICAgKGV2ZW50LCBzdGF0ZSkgPT4ge1xuICAgICAgICBoYW5kbGVycy5jdXJyZW50Lm9uUGxheWJhY2tTdGF0ZUNoYW5nZT8uKGV2ZW50LCBzdGF0ZSlcbiAgICAgICAgLy8gZXh0ZXJuYWwgbG9naWMgbWF5IHdhbnQgdG8gY2hhbmdlIHRhcmdldFN0YXRlLCBob2xkIHBsYXliYWNrU3RhdGUgdXBkYXRlXG4gICAgICAgIC8vIHRvIHByZXZlbnQgdW53YW50ZWQgc3luY1BsYXliYWNrU3RhdGVcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHNldFBsYXliYWNrU3RhdGUoc3RhdGUpKVxuICAgICAgfSxcbiAgICAgIHtpT1NGdWxsc2NyZWVuRGV0ZWN0VGhyZXNob2xkfVxuICAgIClcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgb2ZmUGxheWJhY2tTdGF0ZSgpXG4gICAgICBsb2FkVGFzay50aGVuKGN1cnJlbnRQbGF5ZXIgPT4gY3VycmVudFBsYXllcj8uZGVzdHJveSgpKVxuICAgIH1cbiAgfSwgW10pXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKFxuICAgICAgc291cmNlICYmXG4gICAgICAoc291cmNlLmxlbmd0aCA+IDAgfHwgc291cmNlLnNyYyB8fCBzb3VyY2UuaGxzIHx8IHNvdXJjZS5kYXNoKSAmJlxuICAgICAgcGxheWVyPy5pc0FsaXZlKClcbiAgICApIHtcbiAgICAgIFByb21pc2UucmVzb2x2ZShmYWxzZSlcbiAgICAgICAgLnRoZW4oKCkgPT5cbiAgICAgICAgICBsb2FkKFxuICAgICAgICAgICAgdmlkZW9FbGVtZW50LmN1cnJlbnQsXG4gICAgICAgICAgICB7cGxheWVyLCBwbHVnaW5zLCBzdGFydFRpbWU6IHRhcmdldFRpbWV9LFxuICAgICAgICAgICAgc291cmNlXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICAgIC5jYXRjaChlcnJvciA9PiBjb25zb2xlLndhcm4oZXJyb3IpKVxuICAgIH1cbiAgICBpZiAoKCFzb3VyY2UgfHwgc291cmNlLmxlbmd0aCA9PT0gMCkgJiYgcGxheWVyKSB7XG4gICAgICBwbGF5ZXIudW5sb2FkKClcbiAgICAgIHBsYXllci5sYXN0U3JjID0gJydcbiAgICB9XG4gIH0sIFtwbGF5ZXIsIHNvdXJjZV0pXG5cbiAgLy8gdXNlRWZmZWN0IGlzIHRvbyBsYXRlIHRvIHVubG9jayBwbGF5IG9uIFNhZmFyaVxuICAvLyBUT0RPIGNoZWNrIGlmIHRoaXMgd29yayBhZnRlciB1cGdyYWRpbmcgUmVhY3QgMThcbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAocGxheWVyPy5pc0FsaXZlKCkpIHtcbiAgICAgIHN5bmNQbGF5YmFja1N0YXRlKFxuICAgICAgICB2aWRlb0VsZW1lbnQuY3VycmVudCxcbiAgICAgICAge3BsYXllciwgcGx1Z2lucywgbGl2ZVJlc3VtZX0sXG4gICAgICAgIHRhcmdldFN0YXRlXG4gICAgICApPy5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgIGhhbmRsZXJzLmN1cnJlbnQub25CbG9ja2VkQXV0b3BsYXk/LihlcnJvcilcbiAgICAgIH0pXG4gICAgfVxuICB9LCBbcGxheWVyICYmIHRhcmdldFN0YXRlXSlcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCB7Y3VycmVudFRpbWV9ID0gZ2V0TWVkaWFUaW1lKHZpZGVvRWxlbWVudC5jdXJyZW50LCB7cGxheWVyLCBwbHVnaW5zfSlcbiAgICBpZiAocGxheWVyPy5pc0FsaXZlKCkgJiYgTWF0aC5hYnMoY3VycmVudFRpbWUgLSB0YXJnZXRUaW1lKSA+IDAuNSkge1xuICAgICAgLy8gc2Vla2luZyB1bmF2YWlsYWJsZSBjYXNlcyBhcmUgaGFuZGxlZCBieSBzZWVrIGZ1bmN0aW9uXG4gICAgICBzZWVrKHZpZGVvRWxlbWVudC5jdXJyZW50LCB7cGxheWVyLCBwbHVnaW5zfSwgdGFyZ2V0VGltZSlcbiAgICB9XG4gIH0sIFtwbGF5ZXIgJiYgdGFyZ2V0VGltZV0pXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0UGxheWJhY2tSYXRlKHZpZGVvRWxlbWVudC5jdXJyZW50LCB7cGxheWVyfSwgcGxheWJhY2tSYXRlKVxuICB9LCBbcGxheWJhY2tSYXRlLCBwbGF5YmFja1N0YXRlID09PSAncGxheWluZyddKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChwbGF5ZXIpIHtcbiAgICAgIHNlbGVjdFZpZGVvUmVzb2x1dGlvbih2aWRlb0VsZW1lbnQuY3VycmVudCwge3BsYXllcn0sIHZpZGVvUmVzb2x1dGlvbilcbiAgICB9XG4gIH0sIFt2aWRlb1Jlc29sdXRpb24sIHBsYXllcl0pXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0QXVkaW9UcmFjayh2aWRlb0VsZW1lbnQuY3VycmVudCwge3BsYXllcn0sIGF1ZGlvKVxuICB9LCBbYXVkaW8/LmlkIHx8IGAke2F1ZGlvLmxhbmd1YWdlIHx8ICd1bmsnfToke2F1ZGlvLmxhYmVsIHx8ICcnfWAsIHBsYXllcl0pXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHRleHRUcmFja3M/Lmxlbmd0aCA+IDAgfHwgdGV4dFRyYWNrKSB7XG4gICAgICByZXR1cm4gc3luY1RleHRUcmFjayhcbiAgICAgICAgdmlkZW9FbGVtZW50LmN1cnJlbnQsXG4gICAgICAgIHtwbGF5ZXJ9LFxuICAgICAgICB0ZXh0VHJhY2tzPy5sZW5ndGggPiAwID8ge3RleHRUcmFja3N9IDogdGV4dFRyYWNrXG4gICAgICApXG4gICAgfVxuICB9LCBbdmlkZW9FbGVtZW50LmN1cnJlbnQ/LnJlYWR5U3RhdGUgPj0gMiAmJiB0ZXh0VHJhY2tzLCB0ZXh0VHJhY2tdKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiByZWY9e3ZpZGVvQ29udGFpbmVyfSBjc3M9e3t2aWRlbzogYmFzZVZpZGVvU3R5bGV9fT5cbiAgICAgIDx2aWRlbyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGpzeC1hMTF5L21lZGlhLWhhcy1jYXB0aW9uXG4gICAgICAgIHJlZj17bXVsdGlSZWYodmlkZW9SZWYsIHZpZGVvRWxlbWVudCl9XG4gICAgICAgIHBsYXlzSW5saW5lXG4gICAgICAgIHsuLi52aWRlb0F0dHJpYnV0ZXN9XG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IFZpZGVvXG4iXX0= */"),
7884
+ }, process.env.NODE_ENV === "production" ? "" : ";label:Video;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlZpZGVvLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1LOEIiLCJmaWxlIjoiVmlkZW8uanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1wYXJhbS1yZWFzc2lnbiAqL1xuLyogQGpzeEltcG9ydFNvdXJjZSBAZW1vdGlvbi9yZWFjdCAqL1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZUxheW91dEVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnXG5cbmltcG9ydCBtdWx0aVJlZiBmcm9tICd1dGlsL211bHRpUmVmJ1xuaW1wb3J0IGxvYWRQbGF5ZXIgZnJvbSAncGxheWVyQ29yZS9sb2FkUGxheWVyJ1xuaW1wb3J0IHtcbiAgZ2V0TWVkaWFUaW1lLFxuICBzdWJzY3JpYmVQbGF5YmFja1N0YXRlLFxuICBsb2FkLFxuICBzeW5jUGxheWJhY2tTdGF0ZSxcbiAgc2VlayxcbiAgc2V0UGxheWJhY2tSYXRlLFxuICBzZXRBdWRpb1RyYWNrLFxuICBzeW5jVGV4dFRyYWNrLFxufSBmcm9tICdwbGF5ZXJDb3JlL21lZGlhQmluZGluZ3MnXG5pbXBvcnQge3NlbGVjdFZpZGVvUmVzb2x1dGlvbn0gZnJvbSAncGxheWVyQ29yZS9hZGFwdGF0aW9uJ1xuXG5jb25zdCBiYXNlVmlkZW9TdHlsZSA9IHtcbiAgb2JqZWN0Rml0OiAnY29udGFpbicsXG4gIHdpZHRoOiAnMTAwJScsXG4gIG1heEhlaWdodDogJzEwMCUnLFxuICAnJjpmdWxsc2NyZWVuJzoge1xuICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgIHRvcDogMCxcbiAgICBsZWZ0OiAwLFxuICAgIGJvdHRvbTogMCxcbiAgICByaWdodDogMCxcbiAgfSxcbiAgJ34gLnNoYWthLXRleHQtY29udGFpbmVyJzoge1xuICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgIGhlaWdodDogJzEwMCUnLFxuICAgIHdpZHRoOiAnMTAwJScsXG4gIH0sXG59XG5cbmNvbnN0IGVtcHR5QXJyYXkgPSBbXVxuXG5jb25zdCBWaWRlbyA9ICh7XG4gIHNvdXJjZSxcbiAgcGxheWJhY2tTdGF0ZTogdGFyZ2V0U3RhdGUsXG4gIGN1cnJlbnRUaW1lOiB0YXJnZXRUaW1lLFxuICBwbGF5YmFja1JhdGUsXG4gIHZpZGVvUmVzb2x1dGlvbixcbiAgYXVkaW9UcmFjayA9IHt9LFxuICB0ZXh0VHJhY2tzID0gZW1wdHlBcnJheSxcbiAgdGV4dFRyYWNrLFxuICBsaXZlUmVzdW1lLFxuICBpT1NGdWxsc2NyZWVuRGV0ZWN0VGhyZXNob2xkLCAvLyBUT0RPIG9yZ2FuaXplIHByb3BzXG4gIHBsdWdpbnMgPSBbXSxcbiAgc2hha2EsXG4gIGJpdG1vdmluLFxuICBsaWNlbnNlLFxuICB2YWxpZGF0aW9uSG9zdCxcbiAgdmlkZW9SZWYsXG4gIHBsYXllclJlZixcbiAgb25QbGF5ZXJMb2FkZWQsXG4gIG9uUGxheWJhY2tTdGF0ZUNoYW5nZSxcbiAgb25CbG9ja2VkQXV0b3BsYXksXG4gIG9uUGxheWxvZ0ZpcmVkLFxuICAuLi52aWRlb0F0dHJpYnV0ZXNcbn0pID0+IHtcbiAgY29uc3QgaGFuZGxlcnMgPSB1c2VSZWYoKVxuICBoYW5kbGVycy5jdXJyZW50ID0ge29uUGxheWJhY2tTdGF0ZUNoYW5nZSwgb25CbG9ja2VkQXV0b3BsYXl9XG4gIGNvbnN0IHZpZGVvQ29udGFpbmVyID0gdXNlUmVmKClcbiAgY29uc3QgdmlkZW9FbGVtZW50ID0gdXNlUmVmKClcbiAgY29uc3QgW3BsYXliYWNrU3RhdGUsIHNldFBsYXliYWNrU3RhdGVdID0gdXNlU3RhdGUoJycpXG4gIGNvbnN0IFtwbGF5ZXIsIHNldFBsYXllcl0gPSB1c2VTdGF0ZSgpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBsb2FkVGFzayA9IGxvYWRQbGF5ZXIodmlkZW9FbGVtZW50LmN1cnJlbnQsIHtcbiAgICAgIGNvbnRhaW5lcjogdmlkZW9Db250YWluZXIuY3VycmVudCxcbiAgICAgIHNvdXJjZSxcbiAgICAgIHNoYWthLFxuICAgICAgYml0bW92aW4sXG4gICAgfSkudGhlbihiYXNlUGxheWVyID0+IHtcbiAgICAgIHNldFBsYXllcihiYXNlUGxheWVyKVxuICAgICAgb25QbGF5ZXJMb2FkZWQ/LihiYXNlUGxheWVyKVxuICAgICAgaWYgKHBsYXllclJlZikge1xuICAgICAgICBwbGF5ZXJSZWYuY3VycmV0ID0gYmFzZVBsYXllclxuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VQbGF5ZXJcbiAgICB9KVxuICAgIGNvbnN0IG9mZlBsYXliYWNrU3RhdGUgPSBzdWJzY3JpYmVQbGF5YmFja1N0YXRlKFxuICAgICAgdmlkZW9FbGVtZW50LmN1cnJlbnQsXG4gICAgICAoZXZlbnQsIHN0YXRlKSA9PiB7XG4gICAgICAgIGhhbmRsZXJzLmN1cnJlbnQub25QbGF5YmFja1N0YXRlQ2hhbmdlPy4oZXZlbnQsIHN0YXRlKVxuICAgICAgICAvLyBleHRlcm5hbCBsb2dpYyBtYXkgd2FudCB0byBjaGFuZ2UgdGFyZ2V0U3RhdGUsIGhvbGQgcGxheWJhY2tTdGF0ZSB1cGRhdGVcbiAgICAgICAgLy8gdG8gcHJldmVudCB1bndhbnRlZCBzeW5jUGxheWJhY2tTdGF0ZVxuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gc2V0UGxheWJhY2tTdGF0ZShzdGF0ZSkpXG4gICAgICB9LFxuICAgICAge2lPU0Z1bGxzY3JlZW5EZXRlY3RUaHJlc2hvbGR9XG4gICAgKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBvZmZQbGF5YmFja1N0YXRlKClcbiAgICAgIGxvYWRUYXNrLnRoZW4oY3VycmVudFBsYXllciA9PiBjdXJyZW50UGxheWVyPy5kZXN0cm95KCkpXG4gICAgfVxuICB9LCBbXSlcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoXG4gICAgICBzb3VyY2UgJiZcbiAgICAgIChzb3VyY2UubGVuZ3RoID4gMCB8fCBzb3VyY2Uuc3JjIHx8IHNvdXJjZS5obHMgfHwgc291cmNlLmRhc2gpICYmXG4gICAgICBwbGF5ZXI/LmlzQWxpdmUoKVxuICAgICkge1xuICAgICAgUHJvbWlzZS5yZXNvbHZlKGZhbHNlKVxuICAgICAgICAudGhlbigoKSA9PlxuICAgICAgICAgIGxvYWQoXG4gICAgICAgICAgICB2aWRlb0VsZW1lbnQuY3VycmVudCxcbiAgICAgICAgICAgIHtwbGF5ZXIsIHBsdWdpbnMsIHN0YXJ0VGltZTogdGFyZ2V0VGltZX0sXG4gICAgICAgICAgICBzb3VyY2VcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICAgLmNhdGNoKGVycm9yID0+IGNvbnNvbGUud2FybihlcnJvcikpXG4gICAgfVxuICAgIGlmICgoIXNvdXJjZSB8fCBzb3VyY2UubGVuZ3RoID09PSAwKSAmJiBwbGF5ZXIpIHtcbiAgICAgIHBsYXllci51bmxvYWQoKVxuICAgICAgcGxheWVyLmxhc3RTcmMgPSAnJ1xuICAgIH1cbiAgfSwgW3BsYXllciwgc291cmNlXSlcblxuICAvLyB1c2VFZmZlY3QgaXMgdG9vIGxhdGUgdG8gdW5sb2NrIHBsYXkgb24gU2FmYXJpXG4gIC8vIFRPRE8gY2hlY2sgaWYgdGhpcyB3b3JrIGFmdGVyIHVwZ3JhZGluZyBSZWFjdCAxOFxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChwbGF5ZXI/LmlzQWxpdmUoKSkge1xuICAgICAgc3luY1BsYXliYWNrU3RhdGUoXG4gICAgICAgIHZpZGVvRWxlbWVudC5jdXJyZW50LFxuICAgICAgICB7cGxheWVyLCBwbHVnaW5zLCBsaXZlUmVzdW1lfSxcbiAgICAgICAgdGFyZ2V0U3RhdGVcbiAgICAgICk/LmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgaGFuZGxlcnMuY3VycmVudC5vbkJsb2NrZWRBdXRvcGxheT8uKGVycm9yKVxuICAgICAgfSlcbiAgICB9XG4gIH0sIFtwbGF5ZXIgJiYgdGFyZ2V0U3RhdGVdKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHtjdXJyZW50VGltZX0gPSBnZXRNZWRpYVRpbWUodmlkZW9FbGVtZW50LmN1cnJlbnQsIHtwbGF5ZXIsIHBsdWdpbnN9KVxuICAgIGlmIChwbGF5ZXI/LmlzQWxpdmUoKSAmJiBNYXRoLmFicyhjdXJyZW50VGltZSAtIHRhcmdldFRpbWUpID4gMC41KSB7XG4gICAgICAvLyBzZWVraW5nIHVuYXZhaWxhYmxlIGNhc2VzIGFyZSBoYW5kbGVkIGJ5IHNlZWsgZnVuY3Rpb25cbiAgICAgIHNlZWsodmlkZW9FbGVtZW50LmN1cnJlbnQsIHtwbGF5ZXIsIHBsdWdpbnN9LCB0YXJnZXRUaW1lKVxuICAgIH1cbiAgfSwgW3BsYXllciAmJiB0YXJnZXRUaW1lXSlcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRQbGF5YmFja1JhdGUodmlkZW9FbGVtZW50LmN1cnJlbnQsIHtwbGF5ZXJ9LCBwbGF5YmFja1JhdGUpXG4gIH0sIFtwbGF5YmFja1JhdGUsIHBsYXliYWNrU3RhdGUgPT09ICdwbGF5aW5nJ10pXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHBsYXllcikge1xuICAgICAgc2VsZWN0VmlkZW9SZXNvbHV0aW9uKHZpZGVvRWxlbWVudC5jdXJyZW50LCB7cGxheWVyfSwgdmlkZW9SZXNvbHV0aW9uKVxuICAgIH1cbiAgfSwgW3ZpZGVvUmVzb2x1dGlvbiwgcGxheWVyXSlcbiAgdXNlRWZmZWN0KFxuICAgICgpID0+IHNldEF1ZGlvVHJhY2sodmlkZW9FbGVtZW50LmN1cnJlbnQsIHtwbGF5ZXJ9LCBhdWRpb1RyYWNrKSxcbiAgICBbdmlkZW9FbGVtZW50LmN1cnJlbnQ/LnJlYWR5U3RhdGUgPj0gMiAmJiAgYXVkaW9UcmFjay5sYWJlbCwgYXVkaW9UcmFjay5sYW5ndWFnZV1cbiAgKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0ZXh0VHJhY2tzPy5sZW5ndGggPiAwIHx8IHRleHRUcmFjaykge1xuICAgICAgcmV0dXJuIHN5bmNUZXh0VHJhY2soXG4gICAgICAgIHZpZGVvRWxlbWVudC5jdXJyZW50LFxuICAgICAgICB7cGxheWVyfSxcbiAgICAgICAgdGV4dFRyYWNrcz8ubGVuZ3RoID4gMCA/IHt0ZXh0VHJhY2tzfSA6IHRleHRUcmFja1xuICAgICAgKVxuICAgIH1cbiAgfSwgW3ZpZGVvRWxlbWVudC5jdXJyZW50Py5yZWFkeVN0YXRlID49IDIgJiYgdGV4dFRyYWNrcywgdGV4dFRyYWNrXSlcblxuICByZXR1cm4gKFxuICAgIDxkaXYgcmVmPXt2aWRlb0NvbnRhaW5lcn0gY3NzPXt7dmlkZW86IGJhc2VWaWRlb1N0eWxlfX0+XG4gICAgICA8dmlkZW8gLy8gZXNsaW50LWRpc2FibGUtbGluZSBqc3gtYTExeS9tZWRpYS1oYXMtY2FwdGlvblxuICAgICAgICByZWY9e211bHRpUmVmKHZpZGVvUmVmLCB2aWRlb0VsZW1lbnQpfVxuICAgICAgICBwbGF5c0lubGluZVxuICAgICAgICB7Li4udmlkZW9BdHRyaWJ1dGVzfVxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBWaWRlb1xuIl19 */"),
7963
7885
  children: jsx$1("video", {
7964
7886
  // eslint-disable-line jsx-a11y/media-has-caption
7965
7887
  ref: multiRef(videoRef, videoElement),
@@ -8152,8 +8074,8 @@ const shouldPause = ({
8152
8074
 
8153
8075
 
8154
8076
  const menuClasses = {
8155
- default: /*#__PURE__*/css$1(LanguageMenu.styles, process.env.NODE_ENV === "production" ? "" : ";label:default;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByZW1pdW1QbGF5ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBdUVXIiwiZmlsZSI6IlByZW1pdW1QbGF5ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtjc3N9IGZyb20gJ0BlbW90aW9uL2NzcydcbmltcG9ydCB1c2VEaW1lbnNpb25zIGZyb20gJ3JlYWN0LWNvb2wtZGltZW5zaW9ucydcbmltcG9ydCB7UmVzaXplT2JzZXJ2ZXJ9IGZyb20gJ0BqdWdnbGUvcmVzaXplLW9ic2VydmVyJ1xuXG5pbXBvcnQge2hhbmRsZUVycm9yfSBmcm9tICdwbGF5ZXJDb3JlL2Vycm9ycydcbmltcG9ydCB7b259IGZyb20gJ3V0aWwvZXZlbnRzJ1xuaW1wb3J0IHtoYXZlUG9pbnRlciwgaXNEZXNrdG9wfSBmcm9tICd1dGlsL2Vudmlyb25tZW50J1xuaW1wb3J0IG11bHRpUmVmIGZyb20gJ3V0aWwvbXVsdGlSZWYnXG5pbXBvcnQge29uVmlld01vZGVDaGFuZ2UsIHRvZ2dsZUZ1bGxzY3JlZW59IGZyb20gJ3V0aWwvdmlld01vZGVzJ1xuaW1wb3J0IHt1c2VBdXRvSGlkZX0gZnJvbSAnaG9va3MnXG5pbXBvcnQge0ludGxQcm92aWRlcn0gZnJvbSAnY29udGV4dC9JMThuJ1xuaW1wb3J0IHtnZXRNZWRpYVRpbWUsIGlzQnVmZmVyZWR9IGZyb20gJ3BsYXllckNvcmUvbWVkaWFCaW5kaW5ncydcbmltcG9ydCBFcnJvciBmcm9tICdwbGF5ZXJVaS9FcnJvcidcbmltcG9ydCBMYXlvdXQgZnJvbSAncGxheWVyVWkvRGVmYXVsdExheW91dCdcbmltcG9ydCB7XG4gIEJ1dHRvbixcbiAgTGl2ZUJ1dHRvbixcbiAgRnVsbHNjcmVlbkJ1dHRvbixcbiAgUGxheUJ1dHRvbixcbiAgRm9yd2FyZEJ1dHRvbixcbn0gZnJvbSAncGxheWVyVWkvYnV0dG9ucydcbmltcG9ydCBTZWVrYmFyIGZyb20gJ3BsYXllclVpL1NlZWtiYXInXG5pbXBvcnQgRGlzcGxheVRpbWUgZnJvbSAncGxheWVyVWkvRGlzcGxheVRpbWUnXG5pbXBvcnQgTG9hZGluZ1NwaW5uZXIgZnJvbSAncGxheWVyVWkvTG9hZGluZ1NwaW5uZXInXG5pbXBvcnQgQmFja2Ryb3AgZnJvbSAncGxheWVyVWkvQmFja2Ryb3AnXG5pbXBvcnQgU2V0dGluZ3MgZnJvbSAncGxheWVyVWkvU2V0dGluZ3MnXG5pbXBvcnQgT3ZlcmxheVBhbmVsIGZyb20gJ3BsYXllclVpL092ZXJsYXlQYW5lbCdcbmltcG9ydCBMYW5ndWFnZU1lbnUgZnJvbSAncGxheWVyVWkvTGFuZ3VhZ2VNZW51J1xuaW1wb3J0IFBsYXlQYW5lbCBmcm9tICdwbGF5ZXJVaS9QbGF5UGFuZSdcbmltcG9ydCBWb2x1bWVDb250cm9sIGZyb20gJ2NvbXBvbmVudC9Wb2x1bWVDb250cm9sJ1xuaW1wb3J0IENhc3RVaSBmcm9tICdjYXN0L0Nhc3RVaSdcbmltcG9ydCB7bGlua0Nhc3R9IGZyb20gJ2Nhc3QvZnJhbWV3b3JrJ1xuaW1wb3J0IHtDYXN0U3RhdGV9IGZyb20gJ0VudW0nXG5pbXBvcnQge2Rpc3BhdGNoQ2hhcHRlckV2ZW50c30gZnJvbSAnLi90aW1lbGluZSdcbmltcG9ydCBWaWRlbyBmcm9tICcuLi9WaWRlbydcbmltcG9ydCB7Z2V0TGFuZ3VhZ2VPcHRpb25zLCBnZXRRdWFsaXR5T3B0aW9ucywgZ2V0U2V0dGluZ3NEYXRhfSBmcm9tICcuL3NldHRpbmdzJ1xuaW1wb3J0IHtsaW5rTWVkaWFWb2x1bWUsIHN5bmNWb2x1bWV9IGZyb20gJy4vdm9sdW1lJ1xuaW1wb3J0IFNlZWtQcmV2aWV3IGZyb20gJy4vU2Vla1ByZXZpZXcnXG5cbmNvbnN0IHNpemVzID0ge1xuICAnc21hbGwtZW1iZWQnOiAyMDAsXG4gIGVtYmVkOiA0MDAsXG4gICd0YWJsZXQtcG9ydHJhaXQnOiA2MDAsXG4gICd0YWJsZXQtbGFuZHNjYXBlJzogOTAwLFxuICBkZXNrdG9wOiAxMjAwLFxufVxuXG5jb25zdCB1c2VMaW5rU3RhdGUgPSAocmVxdWVzdCwgZGVwZW5kZW5jaWVzID0gW10pID0+IHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSB1c2VTdGF0ZSgpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmVxdWVzdChzZXRTdGF0ZSlcbiAgfSwgZGVwZW5kZW5jaWVzKVxuICByZXR1cm4gc3RhdGVcbn1cblxuY29uc3QgZmxpcFN0YXRlID0gc3RhdGUgPT4gKHN0YXRlID09PSAncGxheWluZycgPyAncGF1c2VkJyA6ICdwbGF5aW5nJylcblxuLy8gRklYTUU6IHRvbyBmZXcgbGluZXMgdG8gc3BsaXQgYSBmaWxlLCBsb29raW5nIGEgYmV0dGVyIHBsYWNlXG5jb25zdCBnZXRUaHVtYm5haWxzVXJsID0gc291cmNlID0+XG4gIFtdLmNvbmNhdChzb3VyY2UpLmZpbmQoaXRlbSA9PiBpdGVtLnR5cGUgPT09ICd0aHVtYm5haWwnKT8uc3JjXG5cbmNvbnN0IGRlZmF1bHRTZXR0aW5ncyA9IHt9XG5cbmNvbnN0IHNob3VsZFBhdXNlID0gKHt1c2VyRm9jdXMsIHVpVHlwZX0pID0+XG4gICh1aVR5cGUgPT09ICdtb2JpbGUnICYmIC9zZXR0aW5nc3xjaGFwdGVyLWxpc3QvLnRlc3QodXNlckZvY3VzKSkgfHxcbiAgL2Jsb2NraW5nfHNlZWtiYXJ8c2hhcmUtaW5uZXIvLnRlc3QodXNlckZvY3VzKVxuXG4vLyBUT0RPIGV4dHJhY3QgdG8gc29tZXdoZXJlIGVsc2VcbmNvbnN0IG1lbnVDbGFzc2VzID0ge1xuICBkZWZhdWx0OiBjc3MoTGFuZ3VhZ2VNZW51LnN0eWxlcyksXG4gIGRlc2t0b3A6IGNzcyhMYW5ndWFnZU1lbnUuc3R5bGVzLCBMYW5ndWFnZU1lbnUuZGVza3RvcFN0eWxlcyksXG59XG5cbmNvbnN0IExhbmd1YWdlU2V0dGluZ3MgPSAoe1xuICB1aVR5cGUsXG4gIGF1ZGlvVHJhY2tzID0gW10sXG4gIHRleHRUcmFja3MgPSBbXSxcbiAgZ2V0UGxheWVyLFxuICBvbkNoYW5nZSxcbiAgc2xvdHMgPSB7TGFuZ3VhZ2VNZW51fSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZ2V0TGFuZ3VhZ2VPcHRpb25zKGdldFBsYXllcigpLCB7YXVkaW9UcmFja3MsIHRleHRUcmFja3N9KVxuICByZXR1cm4gKFxuICAgIGF1ZGlvVHJhY2tzLmxlbmd0aCA+IDAgJiZcbiAgICB0ZXh0VHJhY2tzLmxlbmd0aCA+IDAgJiYgKFxuICAgIDxPdmVybGF5UGFuZWwgYnV0dG9uSWNvbj1cInN1YnRpdGxlXCI+XG4gICAgICA8c2xvdHMuTGFuZ3VhZ2VNZW51XG4gICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICBjbGFzc2VzPXttZW51Q2xhc3Nlc31cbiAgICAgICAgc2VjdGlvbk9wdGlvbnM9e1tvcHRpb25zLmF1ZGlvVHJhY2tzLCBvcHRpb25zLnRleHRUcmFja3NdfVxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgIHsuLi5yZXN0fVxuICAgICAgLz5cbiAgICA8L092ZXJsYXlQYW5lbD5cbiAgICApXG4gIClcbn1cblxuY29uc3QgUHJlbWl1bVBsYXllciA9ICh7XG4gIHNvdXJjZSxcbiAgc3RhcnRUaW1lLFxuICBxdWFsaXR5ID0ge30sXG4gIHRpdGxlLFxuICBtZXRhZGF0YSxcbiAgY2hhbm5lbFRpdGxlLFxuICBjaGFwdGVycyxcbiAgcGxheWJhY2tTdGF0ZTogYXBwUGxheWJhY2tTdGF0ZSxcbiAgY3VycmVudFRpbWU6IGFwcEN1cnJlbnRUaW1lLFxuICBwbGF5YmFja1JhdGU6IGFwcFBsYXliYWNrUmF0ZSxcbiAgbG9vcCxcbiAgdm9sdW1lOiBhcHBWb2x1bWUsXG4gIHRodW1ibmFpbHNVcmwsXG4gIGNvbnRyb2xzID0ge2F1dG9oaWRlOiAzMDAwfSxcbiAgbWFya3MgPSBbXSxcbiAgLy8gVE9ETyBzZWN0aW9uSWRcbiAgaW50bCxcbiAgc2V0dGluZ3M6IGFwcFNldHRpbmdzID0gZGVmYXVsdFNldHRpbmdzLFxuICBibG9ja2luZyxcbiAgcGx1Z2lucyA9IFtdLFxuICBtb2R1bGVzQ29uZmlnLFxuXG4gIHVpVHlwZSA9IGlzRGVza3RvcCgpID8gJ2Rlc2t0b3AnIDogJ21vYmlsZScsXG4gIHN0eWxlLFxuICBjaGlsZHJlbixcbiAgdWlNb2RlID0gJ3N0YW5kYWxvbmUnLFxuICBjYXN0OiBjYXN0T3B0aW9ucyA9ICdjb21wYXRpYmxlJyxcbiAgc2xvdHMsXG4gIHNsb3RQcm9wcyA9IHt9LFxuICBvbkVycm9yLFxuICBvblBsYXliYWNrU3RhdGVDaGFuZ2UsXG4gIG9uQmFjayxcbiAgb25DYXN0LFxuICBvbkNoYW5nZU5leHQsXG4gIG9uQ2hhbmdlUHJldmlvdXMsXG4gIG9uT3BlblNldHRpbmdzLFxuICBvbkNoYW5nZVNldHRpbmdzLFxuICBvblBsYXllckxvYWRlZCxcbiAgb25CbG9ja2VkQXV0b3BsYXksXG4gIG9uUGxheWxvZ0ZpcmVkLFxuICAuLi52aWRlb1Byb3BzXG59KSA9PiB7XG4gIGNvbnN0IGNvbXBvbmVudHMgPSB7XG4gICAgVm9sdW1lQ29udHJvbCxcbiAgICBDYXN0VWksXG4gICAgRGlzcGxheVRpbWUsXG4gICAgTGl2ZUJ1dHRvbixcbiAgICBTZWVrYmFyLFxuICAgIFNldHRpbmdzLFxuICAgIC4uLnNsb3RzLFxuICB9XG4gIGNvbnN0IHZpZGVvUmVmID0gdXNlUmVmKClcbiAgY29uc3QgY29udGFpbmVyUmVmID0gdXNlUmVmKClcbiAgY29uc3QgcGxheWVyUmVmID0gdXNlUmVmKClcbiAgY29uc3QgYWRDb250YWluZXJSZWYgPSB1c2VSZWYoKVxuICBjb25zdCByZWZzID0gdXNlUmVmKHt9KVxuICAvLyBUT0RPIG1vdmUgUldEIHJlbGF0ZWQgdG8gTGF5b3V0XG4gIGNvbnN0IHtcbiAgICBjdXJyZW50QnJlYWtwb2ludDogc2l6ZSxcbiAgICB3aWR0aCxcbiAgICBvYnNlcnZlLFxuICB9ID0gdXNlRGltZW5zaW9ucyh7XG4gICAgcG9seWZpbGw6IFJlc2l6ZU9ic2VydmVyLFxuICAgIGJyZWFrcG9pbnRzOiBzaXplcyxcbiAgfSlcbiAgY29uc3QgW2lzVXNlckFjdGl2ZSwgc2V0SXNVc2VyQWN0aXZlXSA9IHVzZVN0YXRlKFxuICAgIHVpTW9kZSA9PT0gJ3N0YW5kYWxvbmUnID8gdHJ1ZSA6IHZpZGVvUHJvcHMuYXV0b3BsYXlcbiAgKVxuICBjb25zdCBbdXNlckZvY3VzLCBzZXRVc2VyRm9jdXNdID0gdXNlU3RhdGUoJycpXG4gIGNvbnN0IFt0YXJnZXRTdGF0ZSwgc2V0VGFyZ2V0U3RhdGVdID0gdXNlU3RhdGUoKCkgPT4gKHtcbiAgICBwbGF5YmFja1N0YXRlOlxuICAgICAgYXBwUGxheWJhY2tTdGF0ZSB8fCAodmlkZW9Qcm9wcy5hdXRvcGxheSA/ICdwbGF5aW5nJyA6ICdwYXVzZWQnKSxcbiAgICBjdXJyZW50VGltZTogc3RhcnRUaW1lLFxuICB9KSlcbiAgY29uc3QgW3BsYXliYWNrVGltZSwgc2V0UGxheWJhY2tUaW1lXSA9IHVzZVN0YXRlKHtcbiAgICBjdXJyZW50VGltZTogMCxcbiAgICBidWZmZXJUaW1lOiAwLFxuICB9KVxuICBjb25zdCB0b2dnbGVQbGF5ID0gKG92ZXJyaWRlU3RhdGUsIHt0cmlnZ2VyZWRCeX0gPSB7fSkgPT4ge1xuICAgIGlmICh0YXJnZXRTdGF0ZS5wbGF5YmFja1N0YXRlICE9PSBvdmVycmlkZVN0YXRlKSB7XG4gICAgICBzZXRUYXJnZXRTdGF0ZShzdGF0ZSA9PiAoe1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgcGxheWJhY2tTdGF0ZTogb3ZlcnJpZGVTdGF0ZSB8fCBmbGlwU3RhdGUoc3RhdGUucGxheWJhY2tTdGF0ZSksXG4gICAgICAgIGFuaW1hdGlvbjpcbiAgICAgICAgICB0cmlnZ2VyZWRCeSA9PT0gJ3VzZXItYWN0aW9uJyAmJiBmbGlwU3RhdGUoc3RhdGUucGxheWJhY2tTdGF0ZSksXG4gICAgICB9KSlcbiAgICB9XG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChhcHBQbGF5YmFja1N0YXRlKSB7XG4gICAgICB0b2dnbGVQbGF5KGFwcFBsYXliYWNrU3RhdGUpXG4gICAgfVxuICB9LCBbYXBwUGxheWJhY2tTdGF0ZV0pXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHVpVHlwZSA9PT0gJ21vYmlsZScpIHtcbiAgICAgIG9uKGRvY3VtZW50LCAndmlzaWJpbGl0eWNoYW5nZScsICgpID0+IHRvZ2dsZVBsYXkoJ3BhdXNlZCcpKVxuICAgIH1cbiAgfSwgW3VpVHlwZSwgdGFyZ2V0U3RhdGUucGxheWJhY2tTdGF0ZV0pXG4gIGNvbnN0IHVwZGF0ZVBsYXliYWNrVGltZSA9IGV2ZW50ID0+XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKFxuICAgICAgKCkgPT5cbiAgICAgICAgKGV2ZW50Py50eXBlICE9PSAndGltZXVwZGF0ZScgfHwgaXNCdWZmZXJlZCh2aWRlb1JlZi5jdXJyZW50KSkgJiZcbiAgICAgICAgc2V0UGxheWJhY2tUaW1lKHN0YXRlID0+ICh7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgLi4uZ2V0TWVkaWFUaW1lKHZpZGVvUmVmLmN1cnJlbnQsIHtcbiAgICAgICAgICAgIHBsYXllcjogcGxheWVyUmVmLmN1cnJlbnQsXG4gICAgICAgICAgICBwbHVnaW5zLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIC4uLihldmVudD8udHlwZSA9PT0gJ2R1cmF0aW9uY2hhbmdlJyAmJiB7XG4gICAgICAgICAgICBjdXJyZW50VGltZTogc3RhdGUuY3VycmVudFRpbWUsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0pKVxuICAgIClcbiAgY29uc3Qgc2V0VGFyZ2V0VGltZSA9IHRpbWUgPT4ge1xuICAgIGNvbnN0IHRyaW1tZWQgPSBNYXRoLm1pbihcbiAgICAgIHRpbWUsXG4gICAgICB2aWRlb1JlZi5jdXJyZW50Py5pbml0aWFsRHVyYXRpb24gfHwgSW5maW5pdHlcbiAgICApXG4gICAgc2V0VGFyZ2V0U3RhdGUoc3RhdGUgPT4gKHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgLy8gc2VlayB0byAwIHJlcGVhdGVkbHkgZWRnZSBjYXNlXG4gICAgICBjdXJyZW50VGltZTogc3RhdGUuY3VycmVudFRpbWUgIT09IHRyaW1tZWQgPyB0cmltbWVkIDogdHJpbW1lZCArIDAuMDEsXG4gICAgfSkpXG4gICAgdXBkYXRlUGxheWJhY2tUaW1lKClcbiAgfVxuICBjb25zdCBbcGxheWJhY2tTdGF0ZSwgc2V0UGxheWJhY2tTdGF0ZV0gPSB1c2VTdGF0ZSgnaW5pdCcpXG4gIGNvbnN0IFtjYXN0U3RhdGUsIHNldENhc3RTdGF0ZV0gPSB1c2VTdGF0ZSgnJylcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodHlwZW9mIGFwcEN1cnJlbnRUaW1lID09PSAnbnVtYmVyJykgc2V0VGFyZ2V0VGltZShhcHBDdXJyZW50VGltZSB8fCAwKVxuICAgIGlmICh0eXBlb2YgYXBwQ3VycmVudFRpbWUgPT09ICdvYmplY3QnKVxuICAgICAgc2V0VGFyZ2V0VGltZShhcHBDdXJyZW50VGltZT8udmFsdWUgfHwgMClcbiAgfSwgW2FwcEN1cnJlbnRUaW1lXSlcbiAgY29uc3QgW2Vycm9yRGF0YSwgc2V0RXJyb3JEYXRhXSA9IHVzZVN0YXRlKClcbiAgY29uc3QgZXJyb3JIYW5kbGVyID0gcmVhY3RFdmVudCA9PiB7XG4gICAgb25FcnJvcj8uKHJlYWN0RXZlbnQubmF0aXZlRXZlbnQpXG4gICAgaGFuZGxlRXJyb3IocmVhY3RFdmVudCwge1xuICAgICAgbWVkaWE6IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgICBkaXNwbGF5RXJyb3I6IGRhdGEgPT4ge1xuICAgICAgICBzZXRQbGF5YmFja1N0YXRlKCdlcnJvcicpXG4gICAgICAgIHNldEVycm9yRGF0YShjdXJyZW50ID0+IChjdXJyZW50Py5jb2RlID8gY3VycmVudCA6IGRhdGEpKVxuICAgICAgfSxcbiAgICB9KVxuICB9XG4gIGNvbnN0IGlzTGl2ZSA9IHBsYXliYWNrVGltZS5zdHJlYW1UeXBlID09PSAnbGl2ZSdcbiAgY29uc3QgW3NldHRpbmdzLCBzZXRTZXR0aW5nc10gPSB1c2VTdGF0ZSgoKSA9PiAoe1xuICAgIHNlY3Rpb25zOiBbXSxcbiAgICB2YWx1ZXM6IHtzcGVlZDogMX0sXG4gIH0pKVxuICBjb25zdCBmZXRjaFNldHRpbmdzID0gKCkgPT4ge1xuICAgIGlmICghcGxheWVyUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCBzcGVlZEl0ZW1zID0gYXBwU2V0dGluZ3Muc3BlZWRJdGVtcyB8fCAoaXNMaXZlID8gW10gOiB1bmRlZmluZWQpXG4gICAgc2V0U2V0dGluZ3MoY3VycmVudCA9PiB7XG4gICAgICBjb25zdCB7dmFsdWVzLCBzZWN0aW9uc30gPSBnZXRTZXR0aW5nc0RhdGEoe1xuICAgICAgICBtZWRpYTogdmlkZW9SZWYuY3VycmVudCxcbiAgICAgICAgcGxheWVyOiBwbGF5ZXJSZWYuY3VycmVudCxcbiAgICAgICAgc291cmNlLFxuICAgICAgICBxdWFsaXR5LFxuICAgICAgICBzcGVlZEl0ZW1zLFxuICAgICAgICBsb29wLFxuICAgICAgICBwcmVmZXJyZWQ6IGN1cnJlbnQucHJlZmVycmVkLFxuICAgICAgICBvdGhlclNlY3Rpb25zOiBhcHBTZXR0aW5ncy5zZWN0aW9ucyxcbiAgICAgIH0pXG4gICAgICByZXR1cm4ge3ByZWZlcnJlZDogY3VycmVudC5wcmVmZXJyZWQsIHZhbHVlcywgc2VjdGlvbnN9XG4gICAgfSlcbiAgfVxuICBjb25zdCBsYXN0U3RhdGUgPSB1c2VSZWYocGxheWJhY2tTdGF0ZSlcbiAgY29uc3QgaGFuZGxlUGxheWJhY2tTdGF0ZUNoYW5nZSA9IChldmVudCwgc3RhdGUpID0+IHtcbiAgICBpZiAobGFzdFN0YXRlLmN1cnJlbnQgPT09ICdlcnJvcicpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBvblBsYXliYWNrU3RhdGVDaGFuZ2U/LihldmVudCwgc3RhdGUpXG4gICAgLy8gcHJldmlvdXNseSBVSSBwbGF5YmFjayBzdGF0ZSB3YXMgc3luY2VkIG9ubHkgd2hlblxuICAgIC8vIGV4aXRpbmcgaU9TIHZpZGVvIG9ubHkgZnVsbHNjcmVlbih3ZWJraXRlbmRmdWxsc2NyZWVuKVxuICAgIGlmIChcbiAgICAgIC9wbGF5aW5nfHBhdXNlZC8udGVzdChzdGF0ZSkgJiZcbiAgICAgICEodWlUeXBlID09PSAnbW9iaWxlJyAmJiBibG9ja2luZykgJiZcbiAgICAgICFzaG91bGRQYXVzZSh7dXNlckZvY3VzLCB1aVR5cGV9KVxuICAgICkge1xuICAgICAgdG9nZ2xlUGxheShzdGF0ZSlcbiAgICB9XG4gICAgaWYgKHN0YXRlID09PSAnZW5kZWQnKSB7XG4gICAgICB0b2dnbGVQbGF5KCdwYXVzZWQnKVxuICAgIH1cbiAgICBpZiAoc3RhdGUgPT09ICdsb2FkaW5nJyAmJiBsYXN0U3RhdGUuY3VycmVudCAhPT0gJ2luaXQnKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRvZ2dsZVBsYXkoJ3BsYXlpbmcnKSwgMSlcbiAgICB9XG4gICAgaWYgKHN0YXRlID09PSAncGxheWluZycpIHtcbiAgICAgIHNldElzVXNlckFjdGl2ZSh0cnVlKVxuICAgIH1cbiAgICBpZiAobGFzdFN0YXRlLmN1cnJlbnQgPT09ICdsb2FkaW5nJykge1xuICAgICAgZmV0Y2hTZXR0aW5ncygpXG4gICAgfVxuICAgIGxhc3RTdGF0ZS5jdXJyZW50ID0gc3RhdGVcbiAgICBzZXRQbGF5YmFja1N0YXRlKHN0YXRlKVxuICB9XG5cbiAgY29uc3QgY2hhbmdlU2V0dGluZ3MgPSAobmFtZSwgdmFsdWUsIHtrZWVwT3Blbn0gPSB7fSkgPT4ge1xuICAgIC8vIFRPRE8gY29uc2lkZXIgbWVyZ2UgaW50byB1c2VSZWR1Y2VyP1xuICAgIG9uQ2hhbmdlU2V0dGluZ3M/Lih7bmFtZSwgdmFsdWV9KVxuICAgIHNldFRhcmdldFRpbWUocGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lKVxuICAgIHNldFNldHRpbmdzKGN1cnJlbnQgPT4gKHtcbiAgICAgIC4uLmN1cnJlbnQsXG4gICAgICB2YWx1ZXM6IHsuLi5jdXJyZW50LnZhbHVlcywgW25hbWVdOiB2YWx1ZX0sXG4gICAgICBwcmVmZXJyZWQ6IHsuLi5jdXJyZW50LnByZWZlcnJlZCwgW25hbWVdOiB2YWx1ZX0sXG4gICAgfSkpXG4gICAgaWYgKCFrZWVwT3Blbikge1xuICAgICAgc2V0VXNlckZvY3VzKCcnKVxuICAgIH1cbiAgfVxuICBjb25zdCBvcGVuU2V0dGluZ3MgPSBldmVudCA9PiB7XG4gICAgY29uc3QgYW5pbWF0aW9uRnJhbWUgPVxuICAgICAgdXNlckZvY3VzICE9PSAnc2V0dGluZ3MnICYmXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBvbk9wZW5TZXR0aW5ncz8uKGV2ZW50LCBzZXR0aW5ncylcbiAgICAgICAgLy8gSW4gaU9TIFNhZmFyaSwgd2UgbmVlZCB0byB1cGRhdGUgc2V0dGluZ3MgZGF0YVxuICAgICAgICBmZXRjaFNldHRpbmdzKClcbiAgICAgIH0pXG4gICAgc2V0VXNlckZvY3VzKGN1cnJlbnQgPT4gKGN1cnJlbnQgPT09ICdzZXR0aW5ncycgPyAnJyA6ICdzZXR0aW5ncycpKVxuICAgIHJldHVybiBhbmltYXRpb25GcmFtZVxuICB9XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGFwcFBsYXliYWNrUmF0ZSA+IDApIHtcbiAgICAgIHNldFNldHRpbmdzKGN1cnJlbnQgPT4gKHtcbiAgICAgICAgLi4uY3VycmVudCxcbiAgICAgICAgdmFsdWVzOiB7Li4uY3VycmVudC52YWx1ZXMsIHNwZWVkOiBhcHBQbGF5YmFja1JhdGV9LFxuICAgICAgfSkpXG4gICAgfVxuICB9LCBbYXBwUGxheWJhY2tSYXRlXSlcblxuICBjb25zdCBxdWFsaXR5T3B0aW9ucyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gZ2V0UXVhbGl0eU9wdGlvbnMoc2V0dGluZ3MpLFxuICAgIFtzZXR0aW5ncy52YWx1ZXMucXVhbGl0eV1cbiAgKVxuICBjb25zdCB2aWV3TW9kZSA9IHVzZUxpbmtTdGF0ZSh1cGRhdGUgPT5cbiAgICBvblZpZXdNb2RlQ2hhbmdlKHZpZGVvUmVmLmN1cnJlbnQsIHVwZGF0ZSlcbiAgKVxuICBjb25zdCBzb3VyY2VPdmVycmlkZSA9IHVzZUxpbmtTdGF0ZShcbiAgICBhc3luYyB1cGRhdGUgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID1cbiAgICAgICAgc291cmNlICYmIChhd2FpdCBxdWFsaXR5LnJld3JpdGVNYW5pZmVzdD8uKHNvdXJjZSwgcXVhbGl0eU9wdGlvbnMpKVxuICAgICAgdXBkYXRlKHJlc3VsdCB8fCBzb3VyY2UpXG4gICAgfSxcbiAgICBbc291cmNlLCBxdWFsaXR5T3B0aW9uc11cbiAgKVxuICBjb25zdCB3YWl0aW5nID0gL2VtcHRpZWR8bG9hZGluZ3xidWZmZXJpbmcvLnRlc3QocGxheWJhY2tTdGF0ZSlcbiAgY29uc3QgYWN0aXZlUGxheWJhY2sgPVxuICAgIHBsYXliYWNrU3RhdGUgPT09ICdwbGF5aW5nJyB8fCBwbGF5YmFja1N0YXRlID09PSAnd2FpdGluZydcbiAgY29uc3Qge1xuICAgIG1vZGU6IGF1dG9IaWRlTW9kZSxcbiAgICBvbkNsaWNrLFxuICAgIG9uTW91c2VNb3ZlLFxuICB9ID0gdXNlQXV0b0hpZGUoe1xuICAgIHBpbm5lZDogIWNvbnRyb2xzLmF1dG9oaWRlIHx8IHdhaXRpbmcgfHwgIWFjdGl2ZVBsYXliYWNrIHx8IHVzZXJGb2N1cyxcbiAgICB0YXBUb0hpZGU6IHVpVHlwZSA9PT0gJ21vYmlsZScsXG4gICAgaGlkZVRpbWVNczogY29udHJvbHMuYXV0b2hpZGUsXG4gIH0pXG4gIGNvbnN0IG1vZGUgPVxuICAgIHVzZXJGb2N1cyA9PT0gJ3NlZWtiYXInXG4gICAgICA/ICdoaWRkZW4nXG4gICAgICA6IGNvbnRyb2xzLmF1dG9oaWRlXG4gICAgICA/IGF1dG9IaWRlTW9kZVxuICAgICAgOiBjb250cm9sc1xuICAgICAgPyAnc2hvd24nXG4gICAgICA6ICdoaWRkZW4nXG4gIGNvbnN0IGNvbnRyb2xzRGlzcGxheSA9XG4gICAgdXNlckZvY3VzID09PSAnc2Vla2JhcidcbiAgICAgID8gJ3NlZWtiYXItb25seSdcbiAgICAgIDogY29udHJvbHMgPT09ICd0aXRsZS1vbmx5JyB8fCBwbGF5YmFja1N0YXRlID09PSAnZW1wdGllZCdcbiAgICAgID8gJ2hpZGRlbidcbiAgICAgIDogbW9kZVxuICBjb25zdCBzaG91bGRIaWRlUGFuZWxzID1cbiAgICAoY29udHJvbHMgPT09ICduby1wYW5lbCcgfHwgY29udHJvbHNEaXNwbGF5ID09PSAnaGlkZGVuJykgJiYgdXNlckZvY3VzXG4gIGNvbnN0IGhhdmVQbGF5UGFuZWwgPVxuICAgICFibG9ja2luZyAmJlxuICAgIGhhdmVQb2ludGVyKCkgJiZcbiAgICB1aVR5cGUgPT09ICdkZXNrdG9wJyAmJlxuICAgICF3YWl0aW5nICYmXG4gICAgIS92b2x1bWV8JycvLnRlc3QodXNlckZvY3VzKSAmJlxuICAgICEvdGl0bGUtb25seXxuby1wYW5lbC8udGVzdChjb250cm9scykgJiZcbiAgICAoY29udHJvbHMuYXV0b2hpZGUgfHwgbW9kZSA9PT0gJ3Nob3duJylcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzaG91bGRIaWRlUGFuZWxzKSB7XG4gICAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgfVxuICB9LCBbc2hvdWxkSGlkZVBhbmVsc10pXG4gIGNvbnN0IHtzdWJzY3JpYmUsIG9uQ2hhbmdlLCB0b2dnbGVNdXRlfSA9IGxpbmtNZWRpYVZvbHVtZSgoKSA9PiAoe1xuICAgIHZpZGVvOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgIGdldFBsYXllcjogKCkgPT4gcGxheWVyUmVmLmN1cnJlbnQsXG4gIH0pKVxuICBjb25zdCBjaGFuZ2VQcmV2aW91cyA9IGV2ZW50ID0+IHtcbiAgICBvbkNoYW5nZVByZXZpb3VzKGV2ZW50KVxuICAgIHRvZ2dsZVBsYXkoJ3BhdXNlZCcpXG4gICAgdmlkZW9SZWYuY3VycmVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnbG9hZHN0YXJ0JykpXG4gIH1cbiAgY29uc3QgY2hhbmdlTmV4dCA9IGV2ZW50ID0+IHtcbiAgICBvbkNoYW5nZU5leHQoZXZlbnQpXG4gICAgdG9nZ2xlUGxheSgncGF1c2VkJylcbiAgICB2aWRlb1JlZi5jdXJyZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdsb2Fkc3RhcnQnKSlcbiAgfVxuXG4gIHVzZUVmZmVjdChmZXRjaFNldHRpbmdzLCBbYXBwU2V0dGluZ3NdKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIFRoZSBhZENvbnRhaW5lciBzaG91bGQgYmUgc2V0IGJlZm9yZSBgbG9hZGAgYmVjYXVzZSBJbWFEYWkubG9hZCBuZWVkcyBpdC5cbiAgICBwbHVnaW5zLmZvckVhY2gocGx1Z2luID0+IHBsdWdpbi5zZXRBZENvbnRhaW5lcj8uKGFkQ29udGFpbmVyUmVmLmN1cnJlbnQpKVxuICB9LCBbXSlcblxuICB1c2VFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIGRpc3BhdGNoQ2hhcHRlckV2ZW50cyh7XG4gICAgICAgIG1lZGlhOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgICAgICBjaGFwdGVycyxcbiAgICAgICAgZ2V0VGltZTogKCkgPT4gdmlkZW9SZWYuY3VycmVudC5jdXJyZW50VGltZSxcbiAgICAgIH0pLFxuICAgIFtjaGFwdGVyc11cbiAgKVxuXG4gIGNvbnN0IGlzRW5kID0gcGxheWJhY2tTdGF0ZSA9PT0gJ2VuZGVkJ1xuICBjb25zdCBjYW5TZWVrID0gIWlzRW5kICYmIHBsYXliYWNrVGltZS5kdXJhdGlvbiA+IDBcbiAgY29uc3QgZGVyaXZlZFBsYXliYWNrU3RhdGUgPVxuICAgICh1aVR5cGUgPT09ICdtb2JpbGUnICYmIGJsb2NraW5nKSB8fCBzaG91bGRQYXVzZSh7dXNlckZvY3VzLCB1aVR5cGV9KVxuICAgICAgPyAncGF1c2VkJ1xuICAgICAgOiB0YXJnZXRTdGF0ZS5wbGF5YmFja1N0YXRlXG4gIGNvbnN0IGFjdGl2ZVRodW1ibmFpbHNVcmwgPVxuICAgICghdXNlckZvY3VzIHx8IHVzZXJGb2N1cyA9PT0gJ3NlZWtiYXInKSAmJlxuICAgIChnZXRUaHVtYm5haWxzVXJsKHNvdXJjZSkgfHwgdGh1bWJuYWlsc1VybClcbiAgY29uc3QgY3NzVmFyaWFibGVzID0ge1xuICAgICctLXBsYXlpbmcnOiBwbGF5YmFja1N0YXRlID09PSAncGxheWluZycgPyAnMScgOiAnMCcsXG4gIH1cbiAgY29uc3Qgb25SZXdpbmQgPVxuICAgICghaXNMaXZlIHx8IHBsYXliYWNrVGltZS5jdXJyZW50VGltZSA8IDApICYmXG4gICAgIWlzRW5kICYmXG4gICAgKCgpID0+IHNldFRhcmdldFRpbWUocGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lIC0gMTAsICdyZXdpbmQnKSlcbiAgY29uc3Qgb25Gb3J3YXJkID1cbiAgICAoIWlzTGl2ZSB8fCBwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgPCAwKSAmJlxuICAgIGNhblNlZWsgJiZcbiAgICAoKCkgPT4gc2V0VGFyZ2V0VGltZShwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgKyAxMCwgJ2ZvcndhcmQnKSlcbiAgY29uc3Qgb25DbGlja0JsYW5rID1cbiAgICBoYXZlUGxheVBhbmVsICYmICgoKSA9PiB0b2dnbGVQbGF5KCcnLCB7dHJpZ2dlcmVkQnk6ICd1c2VyLWFjdGlvbid9KSlcblxuICBjb25zdCB1aUhhbmRsZXJzID0ge1xuICAgIG9uUGxheTogKCkgPT4ge1xuICAgICAgdG9nZ2xlUGxheSgnJywge3RyaWdnZXJlZEJ5OiAndXNlci1hY3Rpb24nfSlcbiAgICAgIHNldElzVXNlckFjdGl2ZSh0cnVlKVxuICAgIH0sXG4gICAgb25DbGlja0xpdmU6IGlzTGl2ZSAmJiAoKCkgPT4gc2V0VGFyZ2V0VGltZSgwLCAnc2Vla1RvTGl2ZScpKSxcbiAgICBvbkNsaWNrU2Vla2JhcjogKCkgPT4ge1xuICAgICAgcmVmcy5jdXJyZW50LmRlZmVyZWRTZWVrRm9jdXMgPSBzZXRUaW1lb3V0KFxuICAgICAgICAoKSA9PiBzZXRVc2VyRm9jdXMoJ3NlZWtiYXInKSxcbiAgICAgICAgNjZcbiAgICAgIClcbiAgICB9LFxuICAgIG9uU2VlazogdGltZSA9PiB7XG4gICAgICBzZXRUYXJnZXRUaW1lKHRpbWUsICdzZWVrJylcbiAgICAgIGNsZWFyVGltZW91dChyZWZzLmN1cnJlbnQuZGVmZXJlZFNlZWtGb2N1cylcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gc2V0VXNlckZvY3VzKCcnKSwgNjYpXG4gICAgfSxcbiAgICBvbkNoYW5nZVNldHRpbmdzOiAoe25hbWUsIHZhbHVlLCBrZWVwT3Blbn0pID0+XG4gICAgICBjaGFuZ2VTZXR0aW5ncyhuYW1lLCB2YWx1ZSwge2tlZXBPcGVufSksXG4gICAgb25DbG9zZVNldHRpbmdzOiBldmVudCA9PiB7XG4gICAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgICBzbG90UHJvcHM/LnNldHRpbmdzPy5vbkNsb3NlPy4oZXZlbnQpXG4gICAgfSxcbiAgfVxuXG4gIGNvbnN0IHVpRWxlbWVudHMgPSB7XG4gICAgbGl2ZUJ1dHRvbjogdWlIYW5kbGVycy5vbkNsaWNrTGl2ZSAmJiAoXG4gICAgICA8Y29tcG9uZW50cy5MaXZlQnV0dG9uXG4gICAgICAgIHVzaW5nU3RhcnRPdmVyPXtwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgPCAwfVxuICAgICAgICBvbkNsaWNrPXt1aUhhbmRsZXJzLm9uQ2xpY2tMaXZlfVxuICAgICAgLz5cbiAgICApLFxuICAgIGNvbnRyb2xCdXR0b25zOiB7XG4gICAgICBwbGF5QnV0dG9uOiAoXG4gICAgICAgIDxQbGF5QnV0dG9uXG4gICAgICAgICAgcGxheWJhY2tTdGF0ZT17ZGVyaXZlZFBsYXliYWNrU3RhdGV9XG4gICAgICAgICAgZW5kZWQ9e2lzRW5kfVxuICAgICAgICAgIGhpZGRlbj17XG4gICAgICAgICAgICB1aVR5cGUgPT09ICdtb2JpbGUnICYmICh3YWl0aW5nIHx8IC9sb2FkaW5nLy50ZXN0KHBsYXliYWNrU3RhdGUpKVxuICAgICAgICAgIH1cbiAgICAgICAgICB2YXJpYW50PXshaXNVc2VyQWN0aXZlICYmICdmaXJzdHBsYXknfVxuICAgICAgICAgIG9uQ2xpY2s9e3VpSGFuZGxlcnMub25QbGF5fVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIHJld2luZEJ1dHRvbjogb25SZXdpbmQgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwicmV3aW5kMTBcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5SRVdJTkRcIlxuICAgICAgICAgIGRpc2FibGVkPXtpc0VuZH1cbiAgICAgICAgICBvbkNsaWNrPXtvblJld2luZH1cbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgICBmb3J3YXJkQnV0dG9uOiBvbkZvcndhcmQgJiYgKFxuICAgICAgICA8Rm9yd2FyZEJ1dHRvblxuICAgICAgICAgIHN0YXJ0SWNvbj1cImZvcndhcmQxMFwiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLkZPUldBUkRcIlxuICAgICAgICAgIGRpc2FibGVkPXshY2FuU2Vla31cbiAgICAgICAgICBvbkNsaWNrPXtvbkZvcndhcmR9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgICAgbmV4dEVwaXNvZGVCdXR0b246IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHN0YXJ0SWNvbj1cIm5leHRcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5ORVhUXCJcbiAgICAgICAgICBkaXNhYmxlZD17IW9uQ2hhbmdlTmV4dH1cbiAgICAgICAgICBvbkNsaWNrPXtjaGFuZ2VOZXh0fVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIHByZXZpb3VzRXBpc29kZUJ1dHRvbjogKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwicHJldmlvdXNcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5QUkVWSU9VU1wiXG4gICAgICAgICAgZGlzYWJsZWQ9eyFvbkNoYW5nZVByZXZpb3VzfVxuICAgICAgICAgIG9uQ2xpY2s9e2NoYW5nZVByZXZpb3VzfVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICB9LFxuICAgIHNlZWtiYXI6IChcbiAgICAgIDxjb21wb25lbnRzLlNlZWtiYXJcbiAgICAgICAgc3R5bGU9ey92b2x1bWUvLnRlc3QodXNlckZvY3VzKSAmJiB7b3BhY2l0eTogJzAnfX1cbiAgICAgICAgc3RhcnRUaW1lPXtwbGF5YmFja1RpbWUuc3RhcnRUaW1lfVxuICAgICAgICBjdXJyZW50VGltZT17cGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lfVxuICAgICAgICBidWZmZXJUaW1lPXtwbGF5YmFja1RpbWUuYnVmZmVyVGltZX1cbiAgICAgICAgZHVyYXRpb249e3BsYXliYWNrVGltZS5kdXJhdGlvbn1cbiAgICAgICAgY2hhcHRlcnM9e2NoYXB0ZXJzfVxuICAgICAgICBvbkNoYW5nZT17dWlIYW5kbGVycy5vbkNsaWNrU2Vla2Jhcn1cbiAgICAgICAgb25DaGFuZ2VDb21taXR0ZWQ9e3VpSGFuZGxlcnMub25TZWVrfVxuICAgICAgICBtYXJrcz17bWFya3N9XG4gICAgICAgIHBsdWdpbnM9e3BsdWdpbnN9XG4gICAgICAgIHsuLi5zbG90UHJvcHMuc2Vla2Jhcn1cbiAgICAgID5cbiAgICAgICAge2FjdGl2ZVRodW1ibmFpbHNVcmwgJiYgKFxuICAgICAgICAgIDxTZWVrUHJldmlld1xuICAgICAgICAgICAgdGh1bWJuYWlsc1VybD17YWN0aXZlVGh1bWJuYWlsc1VybH1cbiAgICAgICAgICAgIGR1cmF0aW9uPXtwbGF5YmFja1RpbWUuZHVyYXRpb259XG4gICAgICAgICAgICBjaGFwdGVycz17Y2hhcHRlcnN9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvY29tcG9uZW50cy5TZWVrYmFyPlxuICAgICksXG4gICAgZGlzcGxheVRpbWU6IDxjb21wb25lbnRzLkRpc3BsYXlUaW1lIHsuLi5wbGF5YmFja1RpbWV9IC8+LFxuICAgIGZ1bGxzY3JlZW5CdXR0b246IChcbiAgICAgIDxGdWxsc2NyZWVuQnV0dG9uXG4gICAgICAgIHZpZXdNb2RlPXt2aWV3TW9kZX1cbiAgICAgICAgb25DbGljaz17KCkgPT4gdG9nZ2xlRnVsbHNjcmVlbihjb250YWluZXJSZWYuY3VycmVudCl9XG4gICAgICAvPlxuICAgICksXG4gICAgdm9sdW1lQ29udHJvbDogd2lkdGggPj0gc2l6ZXNbJ3NtYWxsLWVtYmVkJ10gJiYgKFxuICAgICAgPGNvbXBvbmVudHMuVm9sdW1lQ29udHJvbFxuICAgICAgICB7Li4ue3N1YnNjcmliZSwgb25DaGFuZ2UsIHRvZ2dsZU11dGV9fVxuICAgICAgICBvbk1vdXNlT3Zlcj17KCkgPT4gc2V0VXNlckZvY3VzKCd2b2x1bWUnKX1cbiAgICAgICAgb25Nb3VzZU91dD17KCkgPT4gc2V0VXNlckZvY3VzKCcnKX1cbiAgICAgICAgey4uLnNsb3RQcm9wcz8udm9sdW1lQ29udHJvbH1cbiAgICAgIC8+XG4gICAgKSxcbiAgICBiYWNrSXRlbXM6IChcbiAgICAgIDxQbGF5UGFuZWwgYW5pbWF0aW9uPXt0YXJnZXRTdGF0ZS5hbmltYXRpb259IG9uQ2xpY2s9e29uQ2xpY2tCbGFua30gLz5cbiAgICApLFxuICB9XG4gIGNvbnN0IGNvbXBhdGliaWxpdHlDYXN0UHJvcHMgPSBjYXN0T3B0aW9ucyA9PT0gJ2NvbXBhdGlibGUnICYmIHtcbiAgICBzb3VyY2UsXG4gICAgdmFsdWVzOiB7dGl0bGUsIC4uLnNldHRpbmdzLnZhbHVlcywgLi4uaW50bCwgbW9kdWxlc0NvbmZpZ30sXG4gICAgb25Mb2FkOiBvbkNhc3QsXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjYXN0T3B0aW9ucyAmJiBjYXN0T3B0aW9ucyAhPT0gJ2NvbXBhdGlibGUnKSB7XG4gICAgICByZXR1cm4gbGlua0Nhc3Qoe3NvdXJjZSwgLi4uY2FzdE9wdGlvbnN9KVxuICAgIH0gLy8gVE9ETyBwbGF5bGlzdCwgYXVkaW8gLyBzdWJ0aXRsZSBzZXR0aW5nXG4gIH0sIFtzb3VyY2UsIGNhc3RPcHRpb25zLmNvbnRlbnRJZCwgY2FzdE9wdGlvbnMuY3VzdG9tRGF0YV0pXG5cbiAgcmV0dXJuIChcbiAgICA8SW50bFByb3ZpZGVyIHsuLi5pbnRsfT5cbiAgICAgIDxMYXlvdXRcbiAgICAgICAgc3R5bGU9e3suLi5zdHlsZSwgY3NzVmFyaWFibGVzfX1cbiAgICAgICAgdHlwZT17dWlUeXBlfVxuICAgICAgICBkaXNwbGF5PXttb2RlfVxuICAgICAgICBjb250cm9sc0Rpc3BsYXk9e2NvbnRyb2xzRGlzcGxheX1cbiAgICAgICAgc2l6ZT17c2l6ZX1cbiAgICAgICAgdmlkZW89e1xuICAgICAgICAgIDxWaWRlb1xuICAgICAgICAgICAgey4uLnZpZGVvUHJvcHN9XG4gICAgICAgICAgICB2aWRlb1JlZj17bXVsdGlSZWYodmlkZW9SZWYsIHZpZGVvUHJvcHMudmlkZW9SZWYpfVxuICAgICAgICAgICAgc291cmNlPXtcbiAgICAgICAgICAgICAgY2FzdFN0YXRlICE9PSBDYXN0U3RhdGUuQ09OTkVDVEVEICYmXG4gICAgICAgICAgICAgIHBsYXliYWNrU3RhdGUgIT09ICdlcnJvcicgJiZcbiAgICAgICAgICAgICAgc291cmNlT3ZlcnJpZGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBsYXliYWNrU3RhdGU9e2Rlcml2ZWRQbGF5YmFja1N0YXRlfVxuICAgICAgICAgICAgY3VycmVudFRpbWU9e3RhcmdldFN0YXRlLmN1cnJlbnRUaW1lfVxuICAgICAgICAgICAgey4uLihhcHBWb2x1bWUgPj0gMCAmJiB7dm9sdW1lOiBhcHBWb2x1bWUsIG11dGVkOiBhcHBWb2x1bWUgPD0gMH0pfVxuICAgICAgICAgICAgcGxheWJhY2tSYXRlPXtzZXR0aW5ncy52YWx1ZXMuc3BlZWR9XG4gICAgICAgICAgICB2aWRlb1Jlc29sdXRpb249e3F1YWxpdHlPcHRpb25zfVxuICAgICAgICAgICAgYXVkaW89e3NldHRpbmdzLnZhbHVlcy5hdWRpb31cbiAgICAgICAgICAgIHRleHRUcmFjaz17c2V0dGluZ3MudmFsdWVzLnN1YnRpdGxlc31cbiAgICAgICAgICAgIGxvb3A9e3NldHRpbmdzLnZhbHVlcy5sb29wfVxuICAgICAgICAgICAgcGx1Z2lucz17cGx1Z2luc31cbiAgICAgICAgICAgIG1vZHVsZXNDb25maWc9e21vZHVsZXNDb25maWd9XG4gICAgICAgICAgICBvblBsYXlsb2dGaXJlZD17b25QbGF5bG9nRmlyZWR9XG4gICAgICAgICAgICBvbkVycm9yPXtlcnJvckhhbmRsZXJ9XG4gICAgICAgICAgICBvblBsYXliYWNrU3RhdGVDaGFuZ2U9e2hhbmRsZVBsYXliYWNrU3RhdGVDaGFuZ2V9XG4gICAgICAgICAgICBvbkJsb2NrZWRBdXRvcGxheT17ZXJyb3IgPT4gb25CbG9ja2VkQXV0b3BsYXk/LihlcnJvcil9XG4gICAgICAgICAgICBvbkNhblBsYXk9e2V2ZW50ID0+IHtcbiAgICAgICAgICAgICAgdXBkYXRlUGxheWJhY2tUaW1lKGV2ZW50KVxuICAgICAgICAgICAgICB2aWRlb1Byb3BzLm9uQ2FuUGxheT8uKGV2ZW50KVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9uVGltZVVwZGF0ZT17dXBkYXRlUGxheWJhY2tUaW1lfVxuICAgICAgICAgICAgb25EdXJhdGlvbkNoYW5nZT17dXBkYXRlUGxheWJhY2tUaW1lfVxuICAgICAgICAgICAgb25QbGF5ZXJMb2FkZWQ9e3BsYXllciA9PiB7XG4gICAgICAgICAgICAgIHBsYXllclJlZi5jdXJyZW50ID0gcGxheWVyXG4gICAgICAgICAgICAgIG9uUGxheWVyTG9hZGVkPy4ocGxheWVyKVxuICAgICAgICAgICAgICBzeW5jVm9sdW1lKHZpZGVvUmVmLmN1cnJlbnQsIHZpZGVvUHJvcHMubXV0ZWQgPyAwIDogYXBwVm9sdW1lKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgICAgIGNvbnRhaW5lclJlZj17ZWxlbWVudCA9PiB7XG4gICAgICAgICAgY29udGFpbmVyUmVmLmN1cnJlbnQgPSBlbGVtZW50XG4gICAgICAgICAgb2JzZXJ2ZShlbGVtZW50KVxuICAgICAgICB9fVxuICAgICAgICBiYWNrUmVmPXthZENvbnRhaW5lclJlZn1cbiAgICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgICBjaGFubmVsVGl0bGU9e2NoYW5uZWxUaXRsZX1cbiAgICAgICAgYmFja0J1dHRvbj17b25CYWNrICYmIDxCdXR0b24gc3RhcnRJY29uPVwiYmFja1wiIG9uQ2xpY2s9e29uQmFja30gLz59XG4gICAgICAgIHsuLi4oaXNVc2VyQWN0aXZlICYmIHVpRWxlbWVudHMpfVxuICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgICBvbk1vdXNlTW92ZT17b25Nb3VzZU1vdmV9XG4gICAgICA+XG4gICAgICAgIDxMb2FkaW5nU3Bpbm5lciBhY3RpdmU9e3dhaXRpbmd9IC8+XG4gICAgICAgIHtlcnJvckRhdGEgJiYgPEVycm9yIGVycm9yPXtlcnJvckRhdGF9IG9uQmFjaz17b25CYWNrfSAvPn1cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgICB7LyogVE9ETyBzeW5jIENhc3QgbGFzdCBwbGF5ZWQgdGltZSBiYWNrICovfVxuICAgICAgICB7aXNVc2VyQWN0aXZlICYmIChcbiAgICAgICAgICA8Y29tcG9uZW50cy5DYXN0VWlcbiAgICAgICAgICAgIG9uQmFjaz17b25CYWNrfVxuICAgICAgICAgICAgb25TdGF0ZUNoYW5nZT17c2V0Q2FzdFN0YXRlfVxuICAgICAgICAgICAgb25Mb2FkPXtvbkNhc3R9XG4gICAgICAgICAgICB7Li4uY29tcGF0aWJpbGl0eUNhc3RQcm9wc31cbiAgICAgICAgICAgIHsuLi5zbG90UHJvcHMuY2FzdFVpfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHtpc1VzZXJBY3RpdmUgJiYgKCAvLyBUT0RPOiBEZXNpZ24gPEV4dGVuc3Rpb24gLz4gZmxhZ1xuICAgICAgICAgIDxjb21wb25lbnRzLlNldHRpbmdzXG4gICAgICAgICAgICB0eXBlPXt1aVR5cGV9XG4gICAgICAgICAgICBzZWN0aW9ucz17c2V0dGluZ3Muc2VjdGlvbnN9XG4gICAgICAgICAgICAvLyBUT0RPIGhhc0JvdHRvbVBhbmVsIGJvdHRvbTogOGVtXG4gICAgICAgICAgICBvcGVuPXt1c2VyRm9jdXMgPT09ICdzZXR0aW5ncyd9XG4gICAgICAgICAgICB2YWx1ZXM9e3NldHRpbmdzLnZhbHVlc31cbiAgICAgICAgICAgIG9uT3Blbj17b3BlblNldHRpbmdzfVxuICAgICAgICAgICAgb25DaGFuZ2U9e3VpSGFuZGxlcnMub25DaGFuZ2VTZXR0aW5nc31cbiAgICAgICAgICAgIHsuLi5zbG90UHJvcHM/LnNldHRpbmdzfVxuICAgICAgICAgICAgb25DbG9zZT17dWlIYW5kbGVycy5vbkNsb3NlU2V0dGluZ3N9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAgPExhbmd1YWdlU2V0dGluZ3NcbiAgICAgICAgICB1aVR5cGU9e3VpVHlwZX1cbiAgICAgICAgICBnZXRQbGF5ZXI9eygpID0+IHBsYXllclJlZi5jdXJyZW50fVxuICAgICAgICAgIG9uQ2hhbmdlPXsoX2V2ZW50LCBpdGVtKSA9PiBjaGFuZ2VTZXR0aW5ncyhpdGVtLnR5cGUsIGl0ZW0udmFsdWUpfVxuICAgICAgICAgIHsuLi5zbG90UHJvcHMubGFuZ3VhZ2VTZXR0aW5nc31cbiAgICAgICAgLz5cbiAgICAgICAgPEJhY2tkcm9wIG9wZW49eyFwbGF5YmFja1N0YXRlIHx8IHBsYXliYWNrU3RhdGUgPT09ICdsb2FkaW5nJ30+XG4gICAgICAgICAgPExvYWRpbmdTcGlubmVyIC8+XG4gICAgICAgIDwvQmFja2Ryb3A+XG4gICAgICA8L0xheW91dD5cbiAgICA8L0ludGxQcm92aWRlcj5cbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBQcmVtaXVtUGxheWVyXG4iXX0= */"),
8156
- desktop: /*#__PURE__*/css$1(LanguageMenu.styles, LanguageMenu.desktopStyles, process.env.NODE_ENV === "production" ? "" : ";label:desktop;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByZW1pdW1QbGF5ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd0VXIiwiZmlsZSI6IlByZW1pdW1QbGF5ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtjc3N9IGZyb20gJ0BlbW90aW9uL2NzcydcbmltcG9ydCB1c2VEaW1lbnNpb25zIGZyb20gJ3JlYWN0LWNvb2wtZGltZW5zaW9ucydcbmltcG9ydCB7UmVzaXplT2JzZXJ2ZXJ9IGZyb20gJ0BqdWdnbGUvcmVzaXplLW9ic2VydmVyJ1xuXG5pbXBvcnQge2hhbmRsZUVycm9yfSBmcm9tICdwbGF5ZXJDb3JlL2Vycm9ycydcbmltcG9ydCB7b259IGZyb20gJ3V0aWwvZXZlbnRzJ1xuaW1wb3J0IHtoYXZlUG9pbnRlciwgaXNEZXNrdG9wfSBmcm9tICd1dGlsL2Vudmlyb25tZW50J1xuaW1wb3J0IG11bHRpUmVmIGZyb20gJ3V0aWwvbXVsdGlSZWYnXG5pbXBvcnQge29uVmlld01vZGVDaGFuZ2UsIHRvZ2dsZUZ1bGxzY3JlZW59IGZyb20gJ3V0aWwvdmlld01vZGVzJ1xuaW1wb3J0IHt1c2VBdXRvSGlkZX0gZnJvbSAnaG9va3MnXG5pbXBvcnQge0ludGxQcm92aWRlcn0gZnJvbSAnY29udGV4dC9JMThuJ1xuaW1wb3J0IHtnZXRNZWRpYVRpbWUsIGlzQnVmZmVyZWR9IGZyb20gJ3BsYXllckNvcmUvbWVkaWFCaW5kaW5ncydcbmltcG9ydCBFcnJvciBmcm9tICdwbGF5ZXJVaS9FcnJvcidcbmltcG9ydCBMYXlvdXQgZnJvbSAncGxheWVyVWkvRGVmYXVsdExheW91dCdcbmltcG9ydCB7XG4gIEJ1dHRvbixcbiAgTGl2ZUJ1dHRvbixcbiAgRnVsbHNjcmVlbkJ1dHRvbixcbiAgUGxheUJ1dHRvbixcbiAgRm9yd2FyZEJ1dHRvbixcbn0gZnJvbSAncGxheWVyVWkvYnV0dG9ucydcbmltcG9ydCBTZWVrYmFyIGZyb20gJ3BsYXllclVpL1NlZWtiYXInXG5pbXBvcnQgRGlzcGxheVRpbWUgZnJvbSAncGxheWVyVWkvRGlzcGxheVRpbWUnXG5pbXBvcnQgTG9hZGluZ1NwaW5uZXIgZnJvbSAncGxheWVyVWkvTG9hZGluZ1NwaW5uZXInXG5pbXBvcnQgQmFja2Ryb3AgZnJvbSAncGxheWVyVWkvQmFja2Ryb3AnXG5pbXBvcnQgU2V0dGluZ3MgZnJvbSAncGxheWVyVWkvU2V0dGluZ3MnXG5pbXBvcnQgT3ZlcmxheVBhbmVsIGZyb20gJ3BsYXllclVpL092ZXJsYXlQYW5lbCdcbmltcG9ydCBMYW5ndWFnZU1lbnUgZnJvbSAncGxheWVyVWkvTGFuZ3VhZ2VNZW51J1xuaW1wb3J0IFBsYXlQYW5lbCBmcm9tICdwbGF5ZXJVaS9QbGF5UGFuZSdcbmltcG9ydCBWb2x1bWVDb250cm9sIGZyb20gJ2NvbXBvbmVudC9Wb2x1bWVDb250cm9sJ1xuaW1wb3J0IENhc3RVaSBmcm9tICdjYXN0L0Nhc3RVaSdcbmltcG9ydCB7bGlua0Nhc3R9IGZyb20gJ2Nhc3QvZnJhbWV3b3JrJ1xuaW1wb3J0IHtDYXN0U3RhdGV9IGZyb20gJ0VudW0nXG5pbXBvcnQge2Rpc3BhdGNoQ2hhcHRlckV2ZW50c30gZnJvbSAnLi90aW1lbGluZSdcbmltcG9ydCBWaWRlbyBmcm9tICcuLi9WaWRlbydcbmltcG9ydCB7Z2V0TGFuZ3VhZ2VPcHRpb25zLCBnZXRRdWFsaXR5T3B0aW9ucywgZ2V0U2V0dGluZ3NEYXRhfSBmcm9tICcuL3NldHRpbmdzJ1xuaW1wb3J0IHtsaW5rTWVkaWFWb2x1bWUsIHN5bmNWb2x1bWV9IGZyb20gJy4vdm9sdW1lJ1xuaW1wb3J0IFNlZWtQcmV2aWV3IGZyb20gJy4vU2Vla1ByZXZpZXcnXG5cbmNvbnN0IHNpemVzID0ge1xuICAnc21hbGwtZW1iZWQnOiAyMDAsXG4gIGVtYmVkOiA0MDAsXG4gICd0YWJsZXQtcG9ydHJhaXQnOiA2MDAsXG4gICd0YWJsZXQtbGFuZHNjYXBlJzogOTAwLFxuICBkZXNrdG9wOiAxMjAwLFxufVxuXG5jb25zdCB1c2VMaW5rU3RhdGUgPSAocmVxdWVzdCwgZGVwZW5kZW5jaWVzID0gW10pID0+IHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSB1c2VTdGF0ZSgpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmVxdWVzdChzZXRTdGF0ZSlcbiAgfSwgZGVwZW5kZW5jaWVzKVxuICByZXR1cm4gc3RhdGVcbn1cblxuY29uc3QgZmxpcFN0YXRlID0gc3RhdGUgPT4gKHN0YXRlID09PSAncGxheWluZycgPyAncGF1c2VkJyA6ICdwbGF5aW5nJylcblxuLy8gRklYTUU6IHRvbyBmZXcgbGluZXMgdG8gc3BsaXQgYSBmaWxlLCBsb29raW5nIGEgYmV0dGVyIHBsYWNlXG5jb25zdCBnZXRUaHVtYm5haWxzVXJsID0gc291cmNlID0+XG4gIFtdLmNvbmNhdChzb3VyY2UpLmZpbmQoaXRlbSA9PiBpdGVtLnR5cGUgPT09ICd0aHVtYm5haWwnKT8uc3JjXG5cbmNvbnN0IGRlZmF1bHRTZXR0aW5ncyA9IHt9XG5cbmNvbnN0IHNob3VsZFBhdXNlID0gKHt1c2VyRm9jdXMsIHVpVHlwZX0pID0+XG4gICh1aVR5cGUgPT09ICdtb2JpbGUnICYmIC9zZXR0aW5nc3xjaGFwdGVyLWxpc3QvLnRlc3QodXNlckZvY3VzKSkgfHxcbiAgL2Jsb2NraW5nfHNlZWtiYXJ8c2hhcmUtaW5uZXIvLnRlc3QodXNlckZvY3VzKVxuXG4vLyBUT0RPIGV4dHJhY3QgdG8gc29tZXdoZXJlIGVsc2VcbmNvbnN0IG1lbnVDbGFzc2VzID0ge1xuICBkZWZhdWx0OiBjc3MoTGFuZ3VhZ2VNZW51LnN0eWxlcyksXG4gIGRlc2t0b3A6IGNzcyhMYW5ndWFnZU1lbnUuc3R5bGVzLCBMYW5ndWFnZU1lbnUuZGVza3RvcFN0eWxlcyksXG59XG5cbmNvbnN0IExhbmd1YWdlU2V0dGluZ3MgPSAoe1xuICB1aVR5cGUsXG4gIGF1ZGlvVHJhY2tzID0gW10sXG4gIHRleHRUcmFja3MgPSBbXSxcbiAgZ2V0UGxheWVyLFxuICBvbkNoYW5nZSxcbiAgc2xvdHMgPSB7TGFuZ3VhZ2VNZW51fSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZ2V0TGFuZ3VhZ2VPcHRpb25zKGdldFBsYXllcigpLCB7YXVkaW9UcmFja3MsIHRleHRUcmFja3N9KVxuICByZXR1cm4gKFxuICAgIGF1ZGlvVHJhY2tzLmxlbmd0aCA+IDAgJiZcbiAgICB0ZXh0VHJhY2tzLmxlbmd0aCA+IDAgJiYgKFxuICAgIDxPdmVybGF5UGFuZWwgYnV0dG9uSWNvbj1cInN1YnRpdGxlXCI+XG4gICAgICA8c2xvdHMuTGFuZ3VhZ2VNZW51XG4gICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICBjbGFzc2VzPXttZW51Q2xhc3Nlc31cbiAgICAgICAgc2VjdGlvbk9wdGlvbnM9e1tvcHRpb25zLmF1ZGlvVHJhY2tzLCBvcHRpb25zLnRleHRUcmFja3NdfVxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgIHsuLi5yZXN0fVxuICAgICAgLz5cbiAgICA8L092ZXJsYXlQYW5lbD5cbiAgICApXG4gIClcbn1cblxuY29uc3QgUHJlbWl1bVBsYXllciA9ICh7XG4gIHNvdXJjZSxcbiAgc3RhcnRUaW1lLFxuICBxdWFsaXR5ID0ge30sXG4gIHRpdGxlLFxuICBtZXRhZGF0YSxcbiAgY2hhbm5lbFRpdGxlLFxuICBjaGFwdGVycyxcbiAgcGxheWJhY2tTdGF0ZTogYXBwUGxheWJhY2tTdGF0ZSxcbiAgY3VycmVudFRpbWU6IGFwcEN1cnJlbnRUaW1lLFxuICBwbGF5YmFja1JhdGU6IGFwcFBsYXliYWNrUmF0ZSxcbiAgbG9vcCxcbiAgdm9sdW1lOiBhcHBWb2x1bWUsXG4gIHRodW1ibmFpbHNVcmwsXG4gIGNvbnRyb2xzID0ge2F1dG9oaWRlOiAzMDAwfSxcbiAgbWFya3MgPSBbXSxcbiAgLy8gVE9ETyBzZWN0aW9uSWRcbiAgaW50bCxcbiAgc2V0dGluZ3M6IGFwcFNldHRpbmdzID0gZGVmYXVsdFNldHRpbmdzLFxuICBibG9ja2luZyxcbiAgcGx1Z2lucyA9IFtdLFxuICBtb2R1bGVzQ29uZmlnLFxuXG4gIHVpVHlwZSA9IGlzRGVza3RvcCgpID8gJ2Rlc2t0b3AnIDogJ21vYmlsZScsXG4gIHN0eWxlLFxuICBjaGlsZHJlbixcbiAgdWlNb2RlID0gJ3N0YW5kYWxvbmUnLFxuICBjYXN0OiBjYXN0T3B0aW9ucyA9ICdjb21wYXRpYmxlJyxcbiAgc2xvdHMsXG4gIHNsb3RQcm9wcyA9IHt9LFxuICBvbkVycm9yLFxuICBvblBsYXliYWNrU3RhdGVDaGFuZ2UsXG4gIG9uQmFjayxcbiAgb25DYXN0LFxuICBvbkNoYW5nZU5leHQsXG4gIG9uQ2hhbmdlUHJldmlvdXMsXG4gIG9uT3BlblNldHRpbmdzLFxuICBvbkNoYW5nZVNldHRpbmdzLFxuICBvblBsYXllckxvYWRlZCxcbiAgb25CbG9ja2VkQXV0b3BsYXksXG4gIG9uUGxheWxvZ0ZpcmVkLFxuICAuLi52aWRlb1Byb3BzXG59KSA9PiB7XG4gIGNvbnN0IGNvbXBvbmVudHMgPSB7XG4gICAgVm9sdW1lQ29udHJvbCxcbiAgICBDYXN0VWksXG4gICAgRGlzcGxheVRpbWUsXG4gICAgTGl2ZUJ1dHRvbixcbiAgICBTZWVrYmFyLFxuICAgIFNldHRpbmdzLFxuICAgIC4uLnNsb3RzLFxuICB9XG4gIGNvbnN0IHZpZGVvUmVmID0gdXNlUmVmKClcbiAgY29uc3QgY29udGFpbmVyUmVmID0gdXNlUmVmKClcbiAgY29uc3QgcGxheWVyUmVmID0gdXNlUmVmKClcbiAgY29uc3QgYWRDb250YWluZXJSZWYgPSB1c2VSZWYoKVxuICBjb25zdCByZWZzID0gdXNlUmVmKHt9KVxuICAvLyBUT0RPIG1vdmUgUldEIHJlbGF0ZWQgdG8gTGF5b3V0XG4gIGNvbnN0IHtcbiAgICBjdXJyZW50QnJlYWtwb2ludDogc2l6ZSxcbiAgICB3aWR0aCxcbiAgICBvYnNlcnZlLFxuICB9ID0gdXNlRGltZW5zaW9ucyh7XG4gICAgcG9seWZpbGw6IFJlc2l6ZU9ic2VydmVyLFxuICAgIGJyZWFrcG9pbnRzOiBzaXplcyxcbiAgfSlcbiAgY29uc3QgW2lzVXNlckFjdGl2ZSwgc2V0SXNVc2VyQWN0aXZlXSA9IHVzZVN0YXRlKFxuICAgIHVpTW9kZSA9PT0gJ3N0YW5kYWxvbmUnID8gdHJ1ZSA6IHZpZGVvUHJvcHMuYXV0b3BsYXlcbiAgKVxuICBjb25zdCBbdXNlckZvY3VzLCBzZXRVc2VyRm9jdXNdID0gdXNlU3RhdGUoJycpXG4gIGNvbnN0IFt0YXJnZXRTdGF0ZSwgc2V0VGFyZ2V0U3RhdGVdID0gdXNlU3RhdGUoKCkgPT4gKHtcbiAgICBwbGF5YmFja1N0YXRlOlxuICAgICAgYXBwUGxheWJhY2tTdGF0ZSB8fCAodmlkZW9Qcm9wcy5hdXRvcGxheSA/ICdwbGF5aW5nJyA6ICdwYXVzZWQnKSxcbiAgICBjdXJyZW50VGltZTogc3RhcnRUaW1lLFxuICB9KSlcbiAgY29uc3QgW3BsYXliYWNrVGltZSwgc2V0UGxheWJhY2tUaW1lXSA9IHVzZVN0YXRlKHtcbiAgICBjdXJyZW50VGltZTogMCxcbiAgICBidWZmZXJUaW1lOiAwLFxuICB9KVxuICBjb25zdCB0b2dnbGVQbGF5ID0gKG92ZXJyaWRlU3RhdGUsIHt0cmlnZ2VyZWRCeX0gPSB7fSkgPT4ge1xuICAgIGlmICh0YXJnZXRTdGF0ZS5wbGF5YmFja1N0YXRlICE9PSBvdmVycmlkZVN0YXRlKSB7XG4gICAgICBzZXRUYXJnZXRTdGF0ZShzdGF0ZSA9PiAoe1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgcGxheWJhY2tTdGF0ZTogb3ZlcnJpZGVTdGF0ZSB8fCBmbGlwU3RhdGUoc3RhdGUucGxheWJhY2tTdGF0ZSksXG4gICAgICAgIGFuaW1hdGlvbjpcbiAgICAgICAgICB0cmlnZ2VyZWRCeSA9PT0gJ3VzZXItYWN0aW9uJyAmJiBmbGlwU3RhdGUoc3RhdGUucGxheWJhY2tTdGF0ZSksXG4gICAgICB9KSlcbiAgICB9XG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChhcHBQbGF5YmFja1N0YXRlKSB7XG4gICAgICB0b2dnbGVQbGF5KGFwcFBsYXliYWNrU3RhdGUpXG4gICAgfVxuICB9LCBbYXBwUGxheWJhY2tTdGF0ZV0pXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHVpVHlwZSA9PT0gJ21vYmlsZScpIHtcbiAgICAgIG9uKGRvY3VtZW50LCAndmlzaWJpbGl0eWNoYW5nZScsICgpID0+IHRvZ2dsZVBsYXkoJ3BhdXNlZCcpKVxuICAgIH1cbiAgfSwgW3VpVHlwZSwgdGFyZ2V0U3RhdGUucGxheWJhY2tTdGF0ZV0pXG4gIGNvbnN0IHVwZGF0ZVBsYXliYWNrVGltZSA9IGV2ZW50ID0+XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKFxuICAgICAgKCkgPT5cbiAgICAgICAgKGV2ZW50Py50eXBlICE9PSAndGltZXVwZGF0ZScgfHwgaXNCdWZmZXJlZCh2aWRlb1JlZi5jdXJyZW50KSkgJiZcbiAgICAgICAgc2V0UGxheWJhY2tUaW1lKHN0YXRlID0+ICh7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgLi4uZ2V0TWVkaWFUaW1lKHZpZGVvUmVmLmN1cnJlbnQsIHtcbiAgICAgICAgICAgIHBsYXllcjogcGxheWVyUmVmLmN1cnJlbnQsXG4gICAgICAgICAgICBwbHVnaW5zLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIC4uLihldmVudD8udHlwZSA9PT0gJ2R1cmF0aW9uY2hhbmdlJyAmJiB7XG4gICAgICAgICAgICBjdXJyZW50VGltZTogc3RhdGUuY3VycmVudFRpbWUsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0pKVxuICAgIClcbiAgY29uc3Qgc2V0VGFyZ2V0VGltZSA9IHRpbWUgPT4ge1xuICAgIGNvbnN0IHRyaW1tZWQgPSBNYXRoLm1pbihcbiAgICAgIHRpbWUsXG4gICAgICB2aWRlb1JlZi5jdXJyZW50Py5pbml0aWFsRHVyYXRpb24gfHwgSW5maW5pdHlcbiAgICApXG4gICAgc2V0VGFyZ2V0U3RhdGUoc3RhdGUgPT4gKHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgLy8gc2VlayB0byAwIHJlcGVhdGVkbHkgZWRnZSBjYXNlXG4gICAgICBjdXJyZW50VGltZTogc3RhdGUuY3VycmVudFRpbWUgIT09IHRyaW1tZWQgPyB0cmltbWVkIDogdHJpbW1lZCArIDAuMDEsXG4gICAgfSkpXG4gICAgdXBkYXRlUGxheWJhY2tUaW1lKClcbiAgfVxuICBjb25zdCBbcGxheWJhY2tTdGF0ZSwgc2V0UGxheWJhY2tTdGF0ZV0gPSB1c2VTdGF0ZSgnaW5pdCcpXG4gIGNvbnN0IFtjYXN0U3RhdGUsIHNldENhc3RTdGF0ZV0gPSB1c2VTdGF0ZSgnJylcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodHlwZW9mIGFwcEN1cnJlbnRUaW1lID09PSAnbnVtYmVyJykgc2V0VGFyZ2V0VGltZShhcHBDdXJyZW50VGltZSB8fCAwKVxuICAgIGlmICh0eXBlb2YgYXBwQ3VycmVudFRpbWUgPT09ICdvYmplY3QnKVxuICAgICAgc2V0VGFyZ2V0VGltZShhcHBDdXJyZW50VGltZT8udmFsdWUgfHwgMClcbiAgfSwgW2FwcEN1cnJlbnRUaW1lXSlcbiAgY29uc3QgW2Vycm9yRGF0YSwgc2V0RXJyb3JEYXRhXSA9IHVzZVN0YXRlKClcbiAgY29uc3QgZXJyb3JIYW5kbGVyID0gcmVhY3RFdmVudCA9PiB7XG4gICAgb25FcnJvcj8uKHJlYWN0RXZlbnQubmF0aXZlRXZlbnQpXG4gICAgaGFuZGxlRXJyb3IocmVhY3RFdmVudCwge1xuICAgICAgbWVkaWE6IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgICBkaXNwbGF5RXJyb3I6IGRhdGEgPT4ge1xuICAgICAgICBzZXRQbGF5YmFja1N0YXRlKCdlcnJvcicpXG4gICAgICAgIHNldEVycm9yRGF0YShjdXJyZW50ID0+IChjdXJyZW50Py5jb2RlID8gY3VycmVudCA6IGRhdGEpKVxuICAgICAgfSxcbiAgICB9KVxuICB9XG4gIGNvbnN0IGlzTGl2ZSA9IHBsYXliYWNrVGltZS5zdHJlYW1UeXBlID09PSAnbGl2ZSdcbiAgY29uc3QgW3NldHRpbmdzLCBzZXRTZXR0aW5nc10gPSB1c2VTdGF0ZSgoKSA9PiAoe1xuICAgIHNlY3Rpb25zOiBbXSxcbiAgICB2YWx1ZXM6IHtzcGVlZDogMX0sXG4gIH0pKVxuICBjb25zdCBmZXRjaFNldHRpbmdzID0gKCkgPT4ge1xuICAgIGlmICghcGxheWVyUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCBzcGVlZEl0ZW1zID0gYXBwU2V0dGluZ3Muc3BlZWRJdGVtcyB8fCAoaXNMaXZlID8gW10gOiB1bmRlZmluZWQpXG4gICAgc2V0U2V0dGluZ3MoY3VycmVudCA9PiB7XG4gICAgICBjb25zdCB7dmFsdWVzLCBzZWN0aW9uc30gPSBnZXRTZXR0aW5nc0RhdGEoe1xuICAgICAgICBtZWRpYTogdmlkZW9SZWYuY3VycmVudCxcbiAgICAgICAgcGxheWVyOiBwbGF5ZXJSZWYuY3VycmVudCxcbiAgICAgICAgc291cmNlLFxuICAgICAgICBxdWFsaXR5LFxuICAgICAgICBzcGVlZEl0ZW1zLFxuICAgICAgICBsb29wLFxuICAgICAgICBwcmVmZXJyZWQ6IGN1cnJlbnQucHJlZmVycmVkLFxuICAgICAgICBvdGhlclNlY3Rpb25zOiBhcHBTZXR0aW5ncy5zZWN0aW9ucyxcbiAgICAgIH0pXG4gICAgICByZXR1cm4ge3ByZWZlcnJlZDogY3VycmVudC5wcmVmZXJyZWQsIHZhbHVlcywgc2VjdGlvbnN9XG4gICAgfSlcbiAgfVxuICBjb25zdCBsYXN0U3RhdGUgPSB1c2VSZWYocGxheWJhY2tTdGF0ZSlcbiAgY29uc3QgaGFuZGxlUGxheWJhY2tTdGF0ZUNoYW5nZSA9IChldmVudCwgc3RhdGUpID0+IHtcbiAgICBpZiAobGFzdFN0YXRlLmN1cnJlbnQgPT09ICdlcnJvcicpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBvblBsYXliYWNrU3RhdGVDaGFuZ2U/LihldmVudCwgc3RhdGUpXG4gICAgLy8gcHJldmlvdXNseSBVSSBwbGF5YmFjayBzdGF0ZSB3YXMgc3luY2VkIG9ubHkgd2hlblxuICAgIC8vIGV4aXRpbmcgaU9TIHZpZGVvIG9ubHkgZnVsbHNjcmVlbih3ZWJraXRlbmRmdWxsc2NyZWVuKVxuICAgIGlmIChcbiAgICAgIC9wbGF5aW5nfHBhdXNlZC8udGVzdChzdGF0ZSkgJiZcbiAgICAgICEodWlUeXBlID09PSAnbW9iaWxlJyAmJiBibG9ja2luZykgJiZcbiAgICAgICFzaG91bGRQYXVzZSh7dXNlckZvY3VzLCB1aVR5cGV9KVxuICAgICkge1xuICAgICAgdG9nZ2xlUGxheShzdGF0ZSlcbiAgICB9XG4gICAgaWYgKHN0YXRlID09PSAnZW5kZWQnKSB7XG4gICAgICB0b2dnbGVQbGF5KCdwYXVzZWQnKVxuICAgIH1cbiAgICBpZiAoc3RhdGUgPT09ICdsb2FkaW5nJyAmJiBsYXN0U3RhdGUuY3VycmVudCAhPT0gJ2luaXQnKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRvZ2dsZVBsYXkoJ3BsYXlpbmcnKSwgMSlcbiAgICB9XG4gICAgaWYgKHN0YXRlID09PSAncGxheWluZycpIHtcbiAgICAgIHNldElzVXNlckFjdGl2ZSh0cnVlKVxuICAgIH1cbiAgICBpZiAobGFzdFN0YXRlLmN1cnJlbnQgPT09ICdsb2FkaW5nJykge1xuICAgICAgZmV0Y2hTZXR0aW5ncygpXG4gICAgfVxuICAgIGxhc3RTdGF0ZS5jdXJyZW50ID0gc3RhdGVcbiAgICBzZXRQbGF5YmFja1N0YXRlKHN0YXRlKVxuICB9XG5cbiAgY29uc3QgY2hhbmdlU2V0dGluZ3MgPSAobmFtZSwgdmFsdWUsIHtrZWVwT3Blbn0gPSB7fSkgPT4ge1xuICAgIC8vIFRPRE8gY29uc2lkZXIgbWVyZ2UgaW50byB1c2VSZWR1Y2VyP1xuICAgIG9uQ2hhbmdlU2V0dGluZ3M/Lih7bmFtZSwgdmFsdWV9KVxuICAgIHNldFRhcmdldFRpbWUocGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lKVxuICAgIHNldFNldHRpbmdzKGN1cnJlbnQgPT4gKHtcbiAgICAgIC4uLmN1cnJlbnQsXG4gICAgICB2YWx1ZXM6IHsuLi5jdXJyZW50LnZhbHVlcywgW25hbWVdOiB2YWx1ZX0sXG4gICAgICBwcmVmZXJyZWQ6IHsuLi5jdXJyZW50LnByZWZlcnJlZCwgW25hbWVdOiB2YWx1ZX0sXG4gICAgfSkpXG4gICAgaWYgKCFrZWVwT3Blbikge1xuICAgICAgc2V0VXNlckZvY3VzKCcnKVxuICAgIH1cbiAgfVxuICBjb25zdCBvcGVuU2V0dGluZ3MgPSBldmVudCA9PiB7XG4gICAgY29uc3QgYW5pbWF0aW9uRnJhbWUgPVxuICAgICAgdXNlckZvY3VzICE9PSAnc2V0dGluZ3MnICYmXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBvbk9wZW5TZXR0aW5ncz8uKGV2ZW50LCBzZXR0aW5ncylcbiAgICAgICAgLy8gSW4gaU9TIFNhZmFyaSwgd2UgbmVlZCB0byB1cGRhdGUgc2V0dGluZ3MgZGF0YVxuICAgICAgICBmZXRjaFNldHRpbmdzKClcbiAgICAgIH0pXG4gICAgc2V0VXNlckZvY3VzKGN1cnJlbnQgPT4gKGN1cnJlbnQgPT09ICdzZXR0aW5ncycgPyAnJyA6ICdzZXR0aW5ncycpKVxuICAgIHJldHVybiBhbmltYXRpb25GcmFtZVxuICB9XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGFwcFBsYXliYWNrUmF0ZSA+IDApIHtcbiAgICAgIHNldFNldHRpbmdzKGN1cnJlbnQgPT4gKHtcbiAgICAgICAgLi4uY3VycmVudCxcbiAgICAgICAgdmFsdWVzOiB7Li4uY3VycmVudC52YWx1ZXMsIHNwZWVkOiBhcHBQbGF5YmFja1JhdGV9LFxuICAgICAgfSkpXG4gICAgfVxuICB9LCBbYXBwUGxheWJhY2tSYXRlXSlcblxuICBjb25zdCBxdWFsaXR5T3B0aW9ucyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gZ2V0UXVhbGl0eU9wdGlvbnMoc2V0dGluZ3MpLFxuICAgIFtzZXR0aW5ncy52YWx1ZXMucXVhbGl0eV1cbiAgKVxuICBjb25zdCB2aWV3TW9kZSA9IHVzZUxpbmtTdGF0ZSh1cGRhdGUgPT5cbiAgICBvblZpZXdNb2RlQ2hhbmdlKHZpZGVvUmVmLmN1cnJlbnQsIHVwZGF0ZSlcbiAgKVxuICBjb25zdCBzb3VyY2VPdmVycmlkZSA9IHVzZUxpbmtTdGF0ZShcbiAgICBhc3luYyB1cGRhdGUgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID1cbiAgICAgICAgc291cmNlICYmIChhd2FpdCBxdWFsaXR5LnJld3JpdGVNYW5pZmVzdD8uKHNvdXJjZSwgcXVhbGl0eU9wdGlvbnMpKVxuICAgICAgdXBkYXRlKHJlc3VsdCB8fCBzb3VyY2UpXG4gICAgfSxcbiAgICBbc291cmNlLCBxdWFsaXR5T3B0aW9uc11cbiAgKVxuICBjb25zdCB3YWl0aW5nID0gL2VtcHRpZWR8bG9hZGluZ3xidWZmZXJpbmcvLnRlc3QocGxheWJhY2tTdGF0ZSlcbiAgY29uc3QgYWN0aXZlUGxheWJhY2sgPVxuICAgIHBsYXliYWNrU3RhdGUgPT09ICdwbGF5aW5nJyB8fCBwbGF5YmFja1N0YXRlID09PSAnd2FpdGluZydcbiAgY29uc3Qge1xuICAgIG1vZGU6IGF1dG9IaWRlTW9kZSxcbiAgICBvbkNsaWNrLFxuICAgIG9uTW91c2VNb3ZlLFxuICB9ID0gdXNlQXV0b0hpZGUoe1xuICAgIHBpbm5lZDogIWNvbnRyb2xzLmF1dG9oaWRlIHx8IHdhaXRpbmcgfHwgIWFjdGl2ZVBsYXliYWNrIHx8IHVzZXJGb2N1cyxcbiAgICB0YXBUb0hpZGU6IHVpVHlwZSA9PT0gJ21vYmlsZScsXG4gICAgaGlkZVRpbWVNczogY29udHJvbHMuYXV0b2hpZGUsXG4gIH0pXG4gIGNvbnN0IG1vZGUgPVxuICAgIHVzZXJGb2N1cyA9PT0gJ3NlZWtiYXInXG4gICAgICA/ICdoaWRkZW4nXG4gICAgICA6IGNvbnRyb2xzLmF1dG9oaWRlXG4gICAgICA/IGF1dG9IaWRlTW9kZVxuICAgICAgOiBjb250cm9sc1xuICAgICAgPyAnc2hvd24nXG4gICAgICA6ICdoaWRkZW4nXG4gIGNvbnN0IGNvbnRyb2xzRGlzcGxheSA9XG4gICAgdXNlckZvY3VzID09PSAnc2Vla2JhcidcbiAgICAgID8gJ3NlZWtiYXItb25seSdcbiAgICAgIDogY29udHJvbHMgPT09ICd0aXRsZS1vbmx5JyB8fCBwbGF5YmFja1N0YXRlID09PSAnZW1wdGllZCdcbiAgICAgID8gJ2hpZGRlbidcbiAgICAgIDogbW9kZVxuICBjb25zdCBzaG91bGRIaWRlUGFuZWxzID1cbiAgICAoY29udHJvbHMgPT09ICduby1wYW5lbCcgfHwgY29udHJvbHNEaXNwbGF5ID09PSAnaGlkZGVuJykgJiYgdXNlckZvY3VzXG4gIGNvbnN0IGhhdmVQbGF5UGFuZWwgPVxuICAgICFibG9ja2luZyAmJlxuICAgIGhhdmVQb2ludGVyKCkgJiZcbiAgICB1aVR5cGUgPT09ICdkZXNrdG9wJyAmJlxuICAgICF3YWl0aW5nICYmXG4gICAgIS92b2x1bWV8JycvLnRlc3QodXNlckZvY3VzKSAmJlxuICAgICEvdGl0bGUtb25seXxuby1wYW5lbC8udGVzdChjb250cm9scykgJiZcbiAgICAoY29udHJvbHMuYXV0b2hpZGUgfHwgbW9kZSA9PT0gJ3Nob3duJylcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzaG91bGRIaWRlUGFuZWxzKSB7XG4gICAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgfVxuICB9LCBbc2hvdWxkSGlkZVBhbmVsc10pXG4gIGNvbnN0IHtzdWJzY3JpYmUsIG9uQ2hhbmdlLCB0b2dnbGVNdXRlfSA9IGxpbmtNZWRpYVZvbHVtZSgoKSA9PiAoe1xuICAgIHZpZGVvOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgIGdldFBsYXllcjogKCkgPT4gcGxheWVyUmVmLmN1cnJlbnQsXG4gIH0pKVxuICBjb25zdCBjaGFuZ2VQcmV2aW91cyA9IGV2ZW50ID0+IHtcbiAgICBvbkNoYW5nZVByZXZpb3VzKGV2ZW50KVxuICAgIHRvZ2dsZVBsYXkoJ3BhdXNlZCcpXG4gICAgdmlkZW9SZWYuY3VycmVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnbG9hZHN0YXJ0JykpXG4gIH1cbiAgY29uc3QgY2hhbmdlTmV4dCA9IGV2ZW50ID0+IHtcbiAgICBvbkNoYW5nZU5leHQoZXZlbnQpXG4gICAgdG9nZ2xlUGxheSgncGF1c2VkJylcbiAgICB2aWRlb1JlZi5jdXJyZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdsb2Fkc3RhcnQnKSlcbiAgfVxuXG4gIHVzZUVmZmVjdChmZXRjaFNldHRpbmdzLCBbYXBwU2V0dGluZ3NdKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIFRoZSBhZENvbnRhaW5lciBzaG91bGQgYmUgc2V0IGJlZm9yZSBgbG9hZGAgYmVjYXVzZSBJbWFEYWkubG9hZCBuZWVkcyBpdC5cbiAgICBwbHVnaW5zLmZvckVhY2gocGx1Z2luID0+IHBsdWdpbi5zZXRBZENvbnRhaW5lcj8uKGFkQ29udGFpbmVyUmVmLmN1cnJlbnQpKVxuICB9LCBbXSlcblxuICB1c2VFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIGRpc3BhdGNoQ2hhcHRlckV2ZW50cyh7XG4gICAgICAgIG1lZGlhOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgICAgICBjaGFwdGVycyxcbiAgICAgICAgZ2V0VGltZTogKCkgPT4gdmlkZW9SZWYuY3VycmVudC5jdXJyZW50VGltZSxcbiAgICAgIH0pLFxuICAgIFtjaGFwdGVyc11cbiAgKVxuXG4gIGNvbnN0IGlzRW5kID0gcGxheWJhY2tTdGF0ZSA9PT0gJ2VuZGVkJ1xuICBjb25zdCBjYW5TZWVrID0gIWlzRW5kICYmIHBsYXliYWNrVGltZS5kdXJhdGlvbiA+IDBcbiAgY29uc3QgZGVyaXZlZFBsYXliYWNrU3RhdGUgPVxuICAgICh1aVR5cGUgPT09ICdtb2JpbGUnICYmIGJsb2NraW5nKSB8fCBzaG91bGRQYXVzZSh7dXNlckZvY3VzLCB1aVR5cGV9KVxuICAgICAgPyAncGF1c2VkJ1xuICAgICAgOiB0YXJnZXRTdGF0ZS5wbGF5YmFja1N0YXRlXG4gIGNvbnN0IGFjdGl2ZVRodW1ibmFpbHNVcmwgPVxuICAgICghdXNlckZvY3VzIHx8IHVzZXJGb2N1cyA9PT0gJ3NlZWtiYXInKSAmJlxuICAgIChnZXRUaHVtYm5haWxzVXJsKHNvdXJjZSkgfHwgdGh1bWJuYWlsc1VybClcbiAgY29uc3QgY3NzVmFyaWFibGVzID0ge1xuICAgICctLXBsYXlpbmcnOiBwbGF5YmFja1N0YXRlID09PSAncGxheWluZycgPyAnMScgOiAnMCcsXG4gIH1cbiAgY29uc3Qgb25SZXdpbmQgPVxuICAgICghaXNMaXZlIHx8IHBsYXliYWNrVGltZS5jdXJyZW50VGltZSA8IDApICYmXG4gICAgIWlzRW5kICYmXG4gICAgKCgpID0+IHNldFRhcmdldFRpbWUocGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lIC0gMTAsICdyZXdpbmQnKSlcbiAgY29uc3Qgb25Gb3J3YXJkID1cbiAgICAoIWlzTGl2ZSB8fCBwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgPCAwKSAmJlxuICAgIGNhblNlZWsgJiZcbiAgICAoKCkgPT4gc2V0VGFyZ2V0VGltZShwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgKyAxMCwgJ2ZvcndhcmQnKSlcbiAgY29uc3Qgb25DbGlja0JsYW5rID1cbiAgICBoYXZlUGxheVBhbmVsICYmICgoKSA9PiB0b2dnbGVQbGF5KCcnLCB7dHJpZ2dlcmVkQnk6ICd1c2VyLWFjdGlvbid9KSlcblxuICBjb25zdCB1aUhhbmRsZXJzID0ge1xuICAgIG9uUGxheTogKCkgPT4ge1xuICAgICAgdG9nZ2xlUGxheSgnJywge3RyaWdnZXJlZEJ5OiAndXNlci1hY3Rpb24nfSlcbiAgICAgIHNldElzVXNlckFjdGl2ZSh0cnVlKVxuICAgIH0sXG4gICAgb25DbGlja0xpdmU6IGlzTGl2ZSAmJiAoKCkgPT4gc2V0VGFyZ2V0VGltZSgwLCAnc2Vla1RvTGl2ZScpKSxcbiAgICBvbkNsaWNrU2Vla2JhcjogKCkgPT4ge1xuICAgICAgcmVmcy5jdXJyZW50LmRlZmVyZWRTZWVrRm9jdXMgPSBzZXRUaW1lb3V0KFxuICAgICAgICAoKSA9PiBzZXRVc2VyRm9jdXMoJ3NlZWtiYXInKSxcbiAgICAgICAgNjZcbiAgICAgIClcbiAgICB9LFxuICAgIG9uU2VlazogdGltZSA9PiB7XG4gICAgICBzZXRUYXJnZXRUaW1lKHRpbWUsICdzZWVrJylcbiAgICAgIGNsZWFyVGltZW91dChyZWZzLmN1cnJlbnQuZGVmZXJlZFNlZWtGb2N1cylcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gc2V0VXNlckZvY3VzKCcnKSwgNjYpXG4gICAgfSxcbiAgICBvbkNoYW5nZVNldHRpbmdzOiAoe25hbWUsIHZhbHVlLCBrZWVwT3Blbn0pID0+XG4gICAgICBjaGFuZ2VTZXR0aW5ncyhuYW1lLCB2YWx1ZSwge2tlZXBPcGVufSksXG4gICAgb25DbG9zZVNldHRpbmdzOiBldmVudCA9PiB7XG4gICAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgICBzbG90UHJvcHM/LnNldHRpbmdzPy5vbkNsb3NlPy4oZXZlbnQpXG4gICAgfSxcbiAgfVxuXG4gIGNvbnN0IHVpRWxlbWVudHMgPSB7XG4gICAgbGl2ZUJ1dHRvbjogdWlIYW5kbGVycy5vbkNsaWNrTGl2ZSAmJiAoXG4gICAgICA8Y29tcG9uZW50cy5MaXZlQnV0dG9uXG4gICAgICAgIHVzaW5nU3RhcnRPdmVyPXtwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgPCAwfVxuICAgICAgICBvbkNsaWNrPXt1aUhhbmRsZXJzLm9uQ2xpY2tMaXZlfVxuICAgICAgLz5cbiAgICApLFxuICAgIGNvbnRyb2xCdXR0b25zOiB7XG4gICAgICBwbGF5QnV0dG9uOiAoXG4gICAgICAgIDxQbGF5QnV0dG9uXG4gICAgICAgICAgcGxheWJhY2tTdGF0ZT17ZGVyaXZlZFBsYXliYWNrU3RhdGV9XG4gICAgICAgICAgZW5kZWQ9e2lzRW5kfVxuICAgICAgICAgIGhpZGRlbj17XG4gICAgICAgICAgICB1aVR5cGUgPT09ICdtb2JpbGUnICYmICh3YWl0aW5nIHx8IC9sb2FkaW5nLy50ZXN0KHBsYXliYWNrU3RhdGUpKVxuICAgICAgICAgIH1cbiAgICAgICAgICB2YXJpYW50PXshaXNVc2VyQWN0aXZlICYmICdmaXJzdHBsYXknfVxuICAgICAgICAgIG9uQ2xpY2s9e3VpSGFuZGxlcnMub25QbGF5fVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIHJld2luZEJ1dHRvbjogb25SZXdpbmQgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwicmV3aW5kMTBcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5SRVdJTkRcIlxuICAgICAgICAgIGRpc2FibGVkPXtpc0VuZH1cbiAgICAgICAgICBvbkNsaWNrPXtvblJld2luZH1cbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgICBmb3J3YXJkQnV0dG9uOiBvbkZvcndhcmQgJiYgKFxuICAgICAgICA8Rm9yd2FyZEJ1dHRvblxuICAgICAgICAgIHN0YXJ0SWNvbj1cImZvcndhcmQxMFwiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLkZPUldBUkRcIlxuICAgICAgICAgIGRpc2FibGVkPXshY2FuU2Vla31cbiAgICAgICAgICBvbkNsaWNrPXtvbkZvcndhcmR9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgICAgbmV4dEVwaXNvZGVCdXR0b246IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHN0YXJ0SWNvbj1cIm5leHRcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5ORVhUXCJcbiAgICAgICAgICBkaXNhYmxlZD17IW9uQ2hhbmdlTmV4dH1cbiAgICAgICAgICBvbkNsaWNrPXtjaGFuZ2VOZXh0fVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIHByZXZpb3VzRXBpc29kZUJ1dHRvbjogKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwicHJldmlvdXNcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5QUkVWSU9VU1wiXG4gICAgICAgICAgZGlzYWJsZWQ9eyFvbkNoYW5nZVByZXZpb3VzfVxuICAgICAgICAgIG9uQ2xpY2s9e2NoYW5nZVByZXZpb3VzfVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICB9LFxuICAgIHNlZWtiYXI6IChcbiAgICAgIDxjb21wb25lbnRzLlNlZWtiYXJcbiAgICAgICAgc3R5bGU9ey92b2x1bWUvLnRlc3QodXNlckZvY3VzKSAmJiB7b3BhY2l0eTogJzAnfX1cbiAgICAgICAgc3RhcnRUaW1lPXtwbGF5YmFja1RpbWUuc3RhcnRUaW1lfVxuICAgICAgICBjdXJyZW50VGltZT17cGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lfVxuICAgICAgICBidWZmZXJUaW1lPXtwbGF5YmFja1RpbWUuYnVmZmVyVGltZX1cbiAgICAgICAgZHVyYXRpb249e3BsYXliYWNrVGltZS5kdXJhdGlvbn1cbiAgICAgICAgY2hhcHRlcnM9e2NoYXB0ZXJzfVxuICAgICAgICBvbkNoYW5nZT17dWlIYW5kbGVycy5vbkNsaWNrU2Vla2Jhcn1cbiAgICAgICAgb25DaGFuZ2VDb21taXR0ZWQ9e3VpSGFuZGxlcnMub25TZWVrfVxuICAgICAgICBtYXJrcz17bWFya3N9XG4gICAgICAgIHBsdWdpbnM9e3BsdWdpbnN9XG4gICAgICAgIHsuLi5zbG90UHJvcHMuc2Vla2Jhcn1cbiAgICAgID5cbiAgICAgICAge2FjdGl2ZVRodW1ibmFpbHNVcmwgJiYgKFxuICAgICAgICAgIDxTZWVrUHJldmlld1xuICAgICAgICAgICAgdGh1bWJuYWlsc1VybD17YWN0aXZlVGh1bWJuYWlsc1VybH1cbiAgICAgICAgICAgIGR1cmF0aW9uPXtwbGF5YmFja1RpbWUuZHVyYXRpb259XG4gICAgICAgICAgICBjaGFwdGVycz17Y2hhcHRlcnN9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvY29tcG9uZW50cy5TZWVrYmFyPlxuICAgICksXG4gICAgZGlzcGxheVRpbWU6IDxjb21wb25lbnRzLkRpc3BsYXlUaW1lIHsuLi5wbGF5YmFja1RpbWV9IC8+LFxuICAgIGZ1bGxzY3JlZW5CdXR0b246IChcbiAgICAgIDxGdWxsc2NyZWVuQnV0dG9uXG4gICAgICAgIHZpZXdNb2RlPXt2aWV3TW9kZX1cbiAgICAgICAgb25DbGljaz17KCkgPT4gdG9nZ2xlRnVsbHNjcmVlbihjb250YWluZXJSZWYuY3VycmVudCl9XG4gICAgICAvPlxuICAgICksXG4gICAgdm9sdW1lQ29udHJvbDogd2lkdGggPj0gc2l6ZXNbJ3NtYWxsLWVtYmVkJ10gJiYgKFxuICAgICAgPGNvbXBvbmVudHMuVm9sdW1lQ29udHJvbFxuICAgICAgICB7Li4ue3N1YnNjcmliZSwgb25DaGFuZ2UsIHRvZ2dsZU11dGV9fVxuICAgICAgICBvbk1vdXNlT3Zlcj17KCkgPT4gc2V0VXNlckZvY3VzKCd2b2x1bWUnKX1cbiAgICAgICAgb25Nb3VzZU91dD17KCkgPT4gc2V0VXNlckZvY3VzKCcnKX1cbiAgICAgICAgey4uLnNsb3RQcm9wcz8udm9sdW1lQ29udHJvbH1cbiAgICAgIC8+XG4gICAgKSxcbiAgICBiYWNrSXRlbXM6IChcbiAgICAgIDxQbGF5UGFuZWwgYW5pbWF0aW9uPXt0YXJnZXRTdGF0ZS5hbmltYXRpb259IG9uQ2xpY2s9e29uQ2xpY2tCbGFua30gLz5cbiAgICApLFxuICB9XG4gIGNvbnN0IGNvbXBhdGliaWxpdHlDYXN0UHJvcHMgPSBjYXN0T3B0aW9ucyA9PT0gJ2NvbXBhdGlibGUnICYmIHtcbiAgICBzb3VyY2UsXG4gICAgdmFsdWVzOiB7dGl0bGUsIC4uLnNldHRpbmdzLnZhbHVlcywgLi4uaW50bCwgbW9kdWxlc0NvbmZpZ30sXG4gICAgb25Mb2FkOiBvbkNhc3QsXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjYXN0T3B0aW9ucyAmJiBjYXN0T3B0aW9ucyAhPT0gJ2NvbXBhdGlibGUnKSB7XG4gICAgICByZXR1cm4gbGlua0Nhc3Qoe3NvdXJjZSwgLi4uY2FzdE9wdGlvbnN9KVxuICAgIH0gLy8gVE9ETyBwbGF5bGlzdCwgYXVkaW8gLyBzdWJ0aXRsZSBzZXR0aW5nXG4gIH0sIFtzb3VyY2UsIGNhc3RPcHRpb25zLmNvbnRlbnRJZCwgY2FzdE9wdGlvbnMuY3VzdG9tRGF0YV0pXG5cbiAgcmV0dXJuIChcbiAgICA8SW50bFByb3ZpZGVyIHsuLi5pbnRsfT5cbiAgICAgIDxMYXlvdXRcbiAgICAgICAgc3R5bGU9e3suLi5zdHlsZSwgY3NzVmFyaWFibGVzfX1cbiAgICAgICAgdHlwZT17dWlUeXBlfVxuICAgICAgICBkaXNwbGF5PXttb2RlfVxuICAgICAgICBjb250cm9sc0Rpc3BsYXk9e2NvbnRyb2xzRGlzcGxheX1cbiAgICAgICAgc2l6ZT17c2l6ZX1cbiAgICAgICAgdmlkZW89e1xuICAgICAgICAgIDxWaWRlb1xuICAgICAgICAgICAgey4uLnZpZGVvUHJvcHN9XG4gICAgICAgICAgICB2aWRlb1JlZj17bXVsdGlSZWYodmlkZW9SZWYsIHZpZGVvUHJvcHMudmlkZW9SZWYpfVxuICAgICAgICAgICAgc291cmNlPXtcbiAgICAgICAgICAgICAgY2FzdFN0YXRlICE9PSBDYXN0U3RhdGUuQ09OTkVDVEVEICYmXG4gICAgICAgICAgICAgIHBsYXliYWNrU3RhdGUgIT09ICdlcnJvcicgJiZcbiAgICAgICAgICAgICAgc291cmNlT3ZlcnJpZGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBsYXliYWNrU3RhdGU9e2Rlcml2ZWRQbGF5YmFja1N0YXRlfVxuICAgICAgICAgICAgY3VycmVudFRpbWU9e3RhcmdldFN0YXRlLmN1cnJlbnRUaW1lfVxuICAgICAgICAgICAgey4uLihhcHBWb2x1bWUgPj0gMCAmJiB7dm9sdW1lOiBhcHBWb2x1bWUsIG11dGVkOiBhcHBWb2x1bWUgPD0gMH0pfVxuICAgICAgICAgICAgcGxheWJhY2tSYXRlPXtzZXR0aW5ncy52YWx1ZXMuc3BlZWR9XG4gICAgICAgICAgICB2aWRlb1Jlc29sdXRpb249e3F1YWxpdHlPcHRpb25zfVxuICAgICAgICAgICAgYXVkaW89e3NldHRpbmdzLnZhbHVlcy5hdWRpb31cbiAgICAgICAgICAgIHRleHRUcmFjaz17c2V0dGluZ3MudmFsdWVzLnN1YnRpdGxlc31cbiAgICAgICAgICAgIGxvb3A9e3NldHRpbmdzLnZhbHVlcy5sb29wfVxuICAgICAgICAgICAgcGx1Z2lucz17cGx1Z2luc31cbiAgICAgICAgICAgIG1vZHVsZXNDb25maWc9e21vZHVsZXNDb25maWd9XG4gICAgICAgICAgICBvblBsYXlsb2dGaXJlZD17b25QbGF5bG9nRmlyZWR9XG4gICAgICAgICAgICBvbkVycm9yPXtlcnJvckhhbmRsZXJ9XG4gICAgICAgICAgICBvblBsYXliYWNrU3RhdGVDaGFuZ2U9e2hhbmRsZVBsYXliYWNrU3RhdGVDaGFuZ2V9XG4gICAgICAgICAgICBvbkJsb2NrZWRBdXRvcGxheT17ZXJyb3IgPT4gb25CbG9ja2VkQXV0b3BsYXk/LihlcnJvcil9XG4gICAgICAgICAgICBvbkNhblBsYXk9e2V2ZW50ID0+IHtcbiAgICAgICAgICAgICAgdXBkYXRlUGxheWJhY2tUaW1lKGV2ZW50KVxuICAgICAgICAgICAgICB2aWRlb1Byb3BzLm9uQ2FuUGxheT8uKGV2ZW50KVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9uVGltZVVwZGF0ZT17dXBkYXRlUGxheWJhY2tUaW1lfVxuICAgICAgICAgICAgb25EdXJhdGlvbkNoYW5nZT17dXBkYXRlUGxheWJhY2tUaW1lfVxuICAgICAgICAgICAgb25QbGF5ZXJMb2FkZWQ9e3BsYXllciA9PiB7XG4gICAgICAgICAgICAgIHBsYXllclJlZi5jdXJyZW50ID0gcGxheWVyXG4gICAgICAgICAgICAgIG9uUGxheWVyTG9hZGVkPy4ocGxheWVyKVxuICAgICAgICAgICAgICBzeW5jVm9sdW1lKHZpZGVvUmVmLmN1cnJlbnQsIHZpZGVvUHJvcHMubXV0ZWQgPyAwIDogYXBwVm9sdW1lKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgICAgIGNvbnRhaW5lclJlZj17ZWxlbWVudCA9PiB7XG4gICAgICAgICAgY29udGFpbmVyUmVmLmN1cnJlbnQgPSBlbGVtZW50XG4gICAgICAgICAgb2JzZXJ2ZShlbGVtZW50KVxuICAgICAgICB9fVxuICAgICAgICBiYWNrUmVmPXthZENvbnRhaW5lclJlZn1cbiAgICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgICBjaGFubmVsVGl0bGU9e2NoYW5uZWxUaXRsZX1cbiAgICAgICAgYmFja0J1dHRvbj17b25CYWNrICYmIDxCdXR0b24gc3RhcnRJY29uPVwiYmFja1wiIG9uQ2xpY2s9e29uQmFja30gLz59XG4gICAgICAgIHsuLi4oaXNVc2VyQWN0aXZlICYmIHVpRWxlbWVudHMpfVxuICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgICBvbk1vdXNlTW92ZT17b25Nb3VzZU1vdmV9XG4gICAgICA+XG4gICAgICAgIDxMb2FkaW5nU3Bpbm5lciBhY3RpdmU9e3dhaXRpbmd9IC8+XG4gICAgICAgIHtlcnJvckRhdGEgJiYgPEVycm9yIGVycm9yPXtlcnJvckRhdGF9IG9uQmFjaz17b25CYWNrfSAvPn1cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgICB7LyogVE9ETyBzeW5jIENhc3QgbGFzdCBwbGF5ZWQgdGltZSBiYWNrICovfVxuICAgICAgICB7aXNVc2VyQWN0aXZlICYmIChcbiAgICAgICAgICA8Y29tcG9uZW50cy5DYXN0VWlcbiAgICAgICAgICAgIG9uQmFjaz17b25CYWNrfVxuICAgICAgICAgICAgb25TdGF0ZUNoYW5nZT17c2V0Q2FzdFN0YXRlfVxuICAgICAgICAgICAgb25Mb2FkPXtvbkNhc3R9XG4gICAgICAgICAgICB7Li4uY29tcGF0aWJpbGl0eUNhc3RQcm9wc31cbiAgICAgICAgICAgIHsuLi5zbG90UHJvcHMuY2FzdFVpfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHtpc1VzZXJBY3RpdmUgJiYgKCAvLyBUT0RPOiBEZXNpZ24gPEV4dGVuc3Rpb24gLz4gZmxhZ1xuICAgICAgICAgIDxjb21wb25lbnRzLlNldHRpbmdzXG4gICAgICAgICAgICB0eXBlPXt1aVR5cGV9XG4gICAgICAgICAgICBzZWN0aW9ucz17c2V0dGluZ3Muc2VjdGlvbnN9XG4gICAgICAgICAgICAvLyBUT0RPIGhhc0JvdHRvbVBhbmVsIGJvdHRvbTogOGVtXG4gICAgICAgICAgICBvcGVuPXt1c2VyRm9jdXMgPT09ICdzZXR0aW5ncyd9XG4gICAgICAgICAgICB2YWx1ZXM9e3NldHRpbmdzLnZhbHVlc31cbiAgICAgICAgICAgIG9uT3Blbj17b3BlblNldHRpbmdzfVxuICAgICAgICAgICAgb25DaGFuZ2U9e3VpSGFuZGxlcnMub25DaGFuZ2VTZXR0aW5nc31cbiAgICAgICAgICAgIHsuLi5zbG90UHJvcHM/LnNldHRpbmdzfVxuICAgICAgICAgICAgb25DbG9zZT17dWlIYW5kbGVycy5vbkNsb3NlU2V0dGluZ3N9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAgPExhbmd1YWdlU2V0dGluZ3NcbiAgICAgICAgICB1aVR5cGU9e3VpVHlwZX1cbiAgICAgICAgICBnZXRQbGF5ZXI9eygpID0+IHBsYXllclJlZi5jdXJyZW50fVxuICAgICAgICAgIG9uQ2hhbmdlPXsoX2V2ZW50LCBpdGVtKSA9PiBjaGFuZ2VTZXR0aW5ncyhpdGVtLnR5cGUsIGl0ZW0udmFsdWUpfVxuICAgICAgICAgIHsuLi5zbG90UHJvcHMubGFuZ3VhZ2VTZXR0aW5nc31cbiAgICAgICAgLz5cbiAgICAgICAgPEJhY2tkcm9wIG9wZW49eyFwbGF5YmFja1N0YXRlIHx8IHBsYXliYWNrU3RhdGUgPT09ICdsb2FkaW5nJ30+XG4gICAgICAgICAgPExvYWRpbmdTcGlubmVyIC8+XG4gICAgICAgIDwvQmFja2Ryb3A+XG4gICAgICA8L0xheW91dD5cbiAgICA8L0ludGxQcm92aWRlcj5cbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBQcmVtaXVtUGxheWVyXG4iXX0= */")
8077
+ default: /*#__PURE__*/css$1(LanguageMenu.styles, process.env.NODE_ENV === "production" ? "" : ";label:default;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByZW1pdW1QbGF5ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBdUVXIiwiZmlsZSI6IlByZW1pdW1QbGF5ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtjc3N9IGZyb20gJ0BlbW90aW9uL2NzcydcbmltcG9ydCB1c2VEaW1lbnNpb25zIGZyb20gJ3JlYWN0LWNvb2wtZGltZW5zaW9ucydcbmltcG9ydCB7UmVzaXplT2JzZXJ2ZXJ9IGZyb20gJ0BqdWdnbGUvcmVzaXplLW9ic2VydmVyJ1xuXG5pbXBvcnQge2hhbmRsZUVycm9yfSBmcm9tICdwbGF5ZXJDb3JlL2Vycm9ycydcbmltcG9ydCB7b259IGZyb20gJ3V0aWwvZXZlbnRzJ1xuaW1wb3J0IHtoYXZlUG9pbnRlciwgaXNEZXNrdG9wfSBmcm9tICd1dGlsL2Vudmlyb25tZW50J1xuaW1wb3J0IG11bHRpUmVmIGZyb20gJ3V0aWwvbXVsdGlSZWYnXG5pbXBvcnQge29uVmlld01vZGVDaGFuZ2UsIHRvZ2dsZUZ1bGxzY3JlZW59IGZyb20gJ3V0aWwvdmlld01vZGVzJ1xuaW1wb3J0IHt1c2VBdXRvSGlkZX0gZnJvbSAnaG9va3MnXG5pbXBvcnQge0ludGxQcm92aWRlcn0gZnJvbSAnY29udGV4dC9JMThuJ1xuaW1wb3J0IHtnZXRNZWRpYVRpbWUsIGlzQnVmZmVyZWR9IGZyb20gJ3BsYXllckNvcmUvbWVkaWFCaW5kaW5ncydcbmltcG9ydCBFcnJvciBmcm9tICdwbGF5ZXJVaS9FcnJvcidcbmltcG9ydCBMYXlvdXQgZnJvbSAncGxheWVyVWkvRGVmYXVsdExheW91dCdcbmltcG9ydCB7XG4gIEJ1dHRvbixcbiAgTGl2ZUJ1dHRvbixcbiAgRnVsbHNjcmVlbkJ1dHRvbixcbiAgUGxheUJ1dHRvbixcbiAgRm9yd2FyZEJ1dHRvbixcbn0gZnJvbSAncGxheWVyVWkvYnV0dG9ucydcbmltcG9ydCBTZWVrYmFyIGZyb20gJ3BsYXllclVpL1NlZWtiYXInXG5pbXBvcnQgRGlzcGxheVRpbWUgZnJvbSAncGxheWVyVWkvRGlzcGxheVRpbWUnXG5pbXBvcnQgTG9hZGluZ1NwaW5uZXIgZnJvbSAncGxheWVyVWkvTG9hZGluZ1NwaW5uZXInXG5pbXBvcnQgQmFja2Ryb3AgZnJvbSAncGxheWVyVWkvQmFja2Ryb3AnXG5pbXBvcnQgU2V0dGluZ3MgZnJvbSAncGxheWVyVWkvU2V0dGluZ3MnXG5pbXBvcnQgT3ZlcmxheVBhbmVsIGZyb20gJ3BsYXllclVpL092ZXJsYXlQYW5lbCdcbmltcG9ydCBMYW5ndWFnZU1lbnUgZnJvbSAncGxheWVyVWkvTGFuZ3VhZ2VNZW51J1xuaW1wb3J0IFBsYXlQYW5lbCBmcm9tICdwbGF5ZXJVaS9QbGF5UGFuZSdcbmltcG9ydCBWb2x1bWVDb250cm9sIGZyb20gJ2NvbXBvbmVudC9Wb2x1bWVDb250cm9sJ1xuaW1wb3J0IENhc3RVaSBmcm9tICdjYXN0L0Nhc3RVaSdcbmltcG9ydCB7bGlua0Nhc3R9IGZyb20gJ2Nhc3QvZnJhbWV3b3JrJ1xuaW1wb3J0IHtDYXN0U3RhdGV9IGZyb20gJ0VudW0nXG5pbXBvcnQge2Rpc3BhdGNoQ2hhcHRlckV2ZW50c30gZnJvbSAnLi90aW1lbGluZSdcbmltcG9ydCBWaWRlbyBmcm9tICcuLi9WaWRlbydcbmltcG9ydCB7Z2V0TGFuZ3VhZ2VPcHRpb25zLCBnZXRRdWFsaXR5T3B0aW9ucywgZ2V0U2V0dGluZ3NEYXRhfSBmcm9tICcuL3NldHRpbmdzJ1xuaW1wb3J0IHtsaW5rTWVkaWFWb2x1bWUsIHN5bmNWb2x1bWV9IGZyb20gJy4vdm9sdW1lJ1xuaW1wb3J0IFNlZWtQcmV2aWV3IGZyb20gJy4vU2Vla1ByZXZpZXcnXG5cbmNvbnN0IHNpemVzID0ge1xuICAnc21hbGwtZW1iZWQnOiAyMDAsXG4gIGVtYmVkOiA0MDAsXG4gICd0YWJsZXQtcG9ydHJhaXQnOiA2MDAsXG4gICd0YWJsZXQtbGFuZHNjYXBlJzogOTAwLFxuICBkZXNrdG9wOiAxMjAwLFxufVxuXG5jb25zdCB1c2VMaW5rU3RhdGUgPSAocmVxdWVzdCwgZGVwZW5kZW5jaWVzID0gW10pID0+IHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSB1c2VTdGF0ZSgpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmVxdWVzdChzZXRTdGF0ZSlcbiAgfSwgZGVwZW5kZW5jaWVzKVxuICByZXR1cm4gc3RhdGVcbn1cblxuY29uc3QgZmxpcFN0YXRlID0gc3RhdGUgPT4gKHN0YXRlID09PSAncGxheWluZycgPyAncGF1c2VkJyA6ICdwbGF5aW5nJylcblxuLy8gRklYTUU6IHRvbyBmZXcgbGluZXMgdG8gc3BsaXQgYSBmaWxlLCBsb29raW5nIGEgYmV0dGVyIHBsYWNlXG5jb25zdCBnZXRUaHVtYm5haWxzVXJsID0gc291cmNlID0+XG4gIFtdLmNvbmNhdChzb3VyY2UpLmZpbmQoaXRlbSA9PiBpdGVtLnR5cGUgPT09ICd0aHVtYm5haWwnKT8uc3JjXG5cbmNvbnN0IGRlZmF1bHRTZXR0aW5ncyA9IHt9XG5cbmNvbnN0IHNob3VsZFBhdXNlID0gKHt1c2VyRm9jdXMsIHVpVHlwZX0pID0+XG4gICh1aVR5cGUgPT09ICdtb2JpbGUnICYmIC9zZXR0aW5nc3xjaGFwdGVyLWxpc3QvLnRlc3QodXNlckZvY3VzKSkgfHxcbiAgL2Jsb2NraW5nfHNlZWtiYXJ8c2hhcmUtaW5uZXIvLnRlc3QodXNlckZvY3VzKVxuXG4vLyBUT0RPIGV4dHJhY3QgdG8gc29tZXdoZXJlIGVsc2VcbmNvbnN0IG1lbnVDbGFzc2VzID0ge1xuICBkZWZhdWx0OiBjc3MoTGFuZ3VhZ2VNZW51LnN0eWxlcyksXG4gIGRlc2t0b3A6IGNzcyhMYW5ndWFnZU1lbnUuc3R5bGVzLCBMYW5ndWFnZU1lbnUuZGVza3RvcFN0eWxlcyksXG59XG5cbmNvbnN0IExhbmd1YWdlU2V0dGluZ3MgPSAoe1xuICB1aVR5cGUsXG4gIGF1ZGlvVHJhY2tzID0gW10sXG4gIHRleHRUcmFja3MgPSBbXSxcbiAgZ2V0UGxheWVyLFxuICBvbkNoYW5nZSxcbiAgc2xvdHMgPSB7TGFuZ3VhZ2VNZW51fSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZ2V0TGFuZ3VhZ2VPcHRpb25zKGdldFBsYXllcigpLCB7YXVkaW9UcmFja3MsIHRleHRUcmFja3N9KVxuICByZXR1cm4gKFxuICAgIGF1ZGlvVHJhY2tzLmxlbmd0aCA+IDAgJiZcbiAgICB0ZXh0VHJhY2tzLmxlbmd0aCA+IDAgJiYgKFxuICAgIDxPdmVybGF5UGFuZWwgYnV0dG9uSWNvbj1cInN1YnRpdGxlXCI+XG4gICAgICA8c2xvdHMuTGFuZ3VhZ2VNZW51XG4gICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICBjbGFzc2VzPXttZW51Q2xhc3Nlc31cbiAgICAgICAgc2VjdGlvbk9wdGlvbnM9e1tvcHRpb25zLmF1ZGlvVHJhY2tzLCBvcHRpb25zLnRleHRUcmFja3NdfVxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgIHsuLi5yZXN0fVxuICAgICAgLz5cbiAgICA8L092ZXJsYXlQYW5lbD5cbiAgICApXG4gIClcbn1cblxuY29uc3QgUHJlbWl1bVBsYXllciA9ICh7XG4gIHNvdXJjZSxcbiAgc3RhcnRUaW1lLFxuICBxdWFsaXR5ID0ge30sXG4gIHRpdGxlLFxuICBtZXRhZGF0YSxcbiAgY2hhbm5lbFRpdGxlLFxuICBjaGFwdGVycyxcbiAgcGxheWJhY2tTdGF0ZTogYXBwUGxheWJhY2tTdGF0ZSxcbiAgY3VycmVudFRpbWU6IGFwcEN1cnJlbnRUaW1lLFxuICBwbGF5YmFja1JhdGU6IGFwcFBsYXliYWNrUmF0ZSxcbiAgbG9vcCxcbiAgdm9sdW1lOiBhcHBWb2x1bWUsXG4gIGF1ZGlvVHJhY2s6IGFwcEF1ZGlvVHJhY2ssXG4gIHRleHRUcmFjazogYXBwVGV4dFRyYWNrLFxuICB0aHVtYm5haWxzVXJsLFxuICBjb250cm9scyA9IHthdXRvaGlkZTogMzAwMH0sXG4gIG1hcmtzID0gW10sXG4gIC8vIFRPRE8gc2VjdGlvbklkXG4gIGludGwsXG4gIHNldHRpbmdzOiBhcHBTZXR0aW5ncyA9IGRlZmF1bHRTZXR0aW5ncyxcbiAgYmxvY2tpbmcsXG4gIHBsdWdpbnMgPSBbXSxcbiAgbW9kdWxlc0NvbmZpZyxcblxuICB1aVR5cGUgPSBpc0Rlc2t0b3AoKSA/ICdkZXNrdG9wJyA6ICdtb2JpbGUnLFxuICBzdHlsZSxcbiAgY2hpbGRyZW4sXG4gIHVpTW9kZSA9ICdzdGFuZGFsb25lJyxcbiAgY2FzdDogY2FzdE9wdGlvbnMgPSAnY29tcGF0aWJsZScsXG4gIHNsb3RzLFxuICBzbG90UHJvcHMgPSB7fSxcbiAgb25FcnJvcixcbiAgb25QbGF5YmFja1N0YXRlQ2hhbmdlLFxuICBvbkJhY2ssXG4gIG9uQ2FzdCxcbiAgb25DaGFuZ2VOZXh0LFxuICBvbkNoYW5nZVByZXZpb3VzLFxuICBvbk9wZW5TZXR0aW5ncyxcbiAgb25DaGFuZ2VTZXR0aW5ncyxcbiAgb25QbGF5ZXJMb2FkZWQsXG4gIG9uQmxvY2tlZEF1dG9wbGF5LFxuICBvblBsYXlsb2dGaXJlZCxcbiAgLi4udmlkZW9Qcm9wc1xufSkgPT4ge1xuICBjb25zdCBjb21wb25lbnRzID0ge1xuICAgIFZvbHVtZUNvbnRyb2wsXG4gICAgQ2FzdFVpLFxuICAgIERpc3BsYXlUaW1lLFxuICAgIExpdmVCdXR0b24sXG4gICAgU2Vla2JhcixcbiAgICBTZXR0aW5ncyxcbiAgICAuLi5zbG90cyxcbiAgfVxuICBjb25zdCB2aWRlb1JlZiA9IHVzZVJlZigpXG4gIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZigpXG4gIGNvbnN0IHBsYXllclJlZiA9IHVzZVJlZigpXG4gIGNvbnN0IGFkQ29udGFpbmVyUmVmID0gdXNlUmVmKClcbiAgY29uc3QgcmVmcyA9IHVzZVJlZih7fSlcbiAgLy8gVE9ETyBtb3ZlIFJXRCByZWxhdGVkIHRvIExheW91dFxuICBjb25zdCB7XG4gICAgY3VycmVudEJyZWFrcG9pbnQ6IHNpemUsXG4gICAgd2lkdGgsXG4gICAgb2JzZXJ2ZSxcbiAgfSA9IHVzZURpbWVuc2lvbnMoe1xuICAgIHBvbHlmaWxsOiBSZXNpemVPYnNlcnZlcixcbiAgICBicmVha3BvaW50czogc2l6ZXMsXG4gIH0pXG4gIGNvbnN0IFtpc1VzZXJBY3RpdmUsIHNldElzVXNlckFjdGl2ZV0gPSB1c2VTdGF0ZShcbiAgICB1aU1vZGUgPT09ICdzdGFuZGFsb25lJyA/IHRydWUgOiB2aWRlb1Byb3BzLmF1dG9wbGF5XG4gIClcbiAgY29uc3QgW3VzZXJGb2N1cywgc2V0VXNlckZvY3VzXSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBbdGFyZ2V0U3RhdGUsIHNldFRhcmdldFN0YXRlXSA9IHVzZVN0YXRlKCgpID0+ICh7XG4gICAgcGxheWJhY2tTdGF0ZTpcbiAgICAgIGFwcFBsYXliYWNrU3RhdGUgfHwgKHZpZGVvUHJvcHMuYXV0b3BsYXkgPyAncGxheWluZycgOiAncGF1c2VkJyksXG4gICAgY3VycmVudFRpbWU6IHN0YXJ0VGltZSxcbiAgfSkpXG4gIGNvbnN0IFtwbGF5YmFja1RpbWUsIHNldFBsYXliYWNrVGltZV0gPSB1c2VTdGF0ZSh7XG4gICAgY3VycmVudFRpbWU6IDAsXG4gICAgYnVmZmVyVGltZTogMCxcbiAgfSlcbiAgY29uc3QgdG9nZ2xlUGxheSA9IChvdmVycmlkZVN0YXRlLCB7dHJpZ2dlcmVkQnl9ID0ge30pID0+IHtcbiAgICBpZiAodGFyZ2V0U3RhdGUucGxheWJhY2tTdGF0ZSAhPT0gb3ZlcnJpZGVTdGF0ZSkge1xuICAgICAgc2V0VGFyZ2V0U3RhdGUoc3RhdGUgPT4gKHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHBsYXliYWNrU3RhdGU6IG92ZXJyaWRlU3RhdGUgfHwgZmxpcFN0YXRlKHN0YXRlLnBsYXliYWNrU3RhdGUpLFxuICAgICAgICBhbmltYXRpb246XG4gICAgICAgICAgdHJpZ2dlcmVkQnkgPT09ICd1c2VyLWFjdGlvbicgJiYgZmxpcFN0YXRlKHN0YXRlLnBsYXliYWNrU3RhdGUpLFxuICAgICAgfSkpXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYXBwUGxheWJhY2tTdGF0ZSkge1xuICAgICAgdG9nZ2xlUGxheShhcHBQbGF5YmFja1N0YXRlKVxuICAgIH1cbiAgfSwgW2FwcFBsYXliYWNrU3RhdGVdKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh1aVR5cGUgPT09ICdtb2JpbGUnKSB7XG4gICAgICBvbihkb2N1bWVudCwgJ3Zpc2liaWxpdHljaGFuZ2UnLCAoKSA9PiB0b2dnbGVQbGF5KCdwYXVzZWQnKSlcbiAgICB9XG4gIH0sIFt1aVR5cGUsIHRhcmdldFN0YXRlLnBsYXliYWNrU3RhdGVdKVxuICBjb25zdCB1cGRhdGVQbGF5YmFja1RpbWUgPSBldmVudCA9PlxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShcbiAgICAgICgpID0+XG4gICAgICAgIChldmVudD8udHlwZSAhPT0gJ3RpbWV1cGRhdGUnIHx8IGlzQnVmZmVyZWQodmlkZW9SZWYuY3VycmVudCkpICYmXG4gICAgICAgIHNldFBsYXliYWNrVGltZShzdGF0ZSA9PiAoe1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIC4uLmdldE1lZGlhVGltZSh2aWRlb1JlZi5jdXJyZW50LCB7XG4gICAgICAgICAgICBwbGF5ZXI6IHBsYXllclJlZi5jdXJyZW50LFxuICAgICAgICAgICAgcGx1Z2lucyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAuLi4oZXZlbnQ/LnR5cGUgPT09ICdkdXJhdGlvbmNoYW5nZScgJiYge1xuICAgICAgICAgICAgY3VycmVudFRpbWU6IHN0YXRlLmN1cnJlbnRUaW1lLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9KSlcbiAgICApXG4gIGNvbnN0IHNldFRhcmdldFRpbWUgPSB0aW1lID0+IHtcbiAgICBjb25zdCB0cmltbWVkID0gTWF0aC5taW4oXG4gICAgICB0aW1lLFxuICAgICAgdmlkZW9SZWYuY3VycmVudD8uaW5pdGlhbER1cmF0aW9uIHx8IEluZmluaXR5XG4gICAgKVxuICAgIHNldFRhcmdldFN0YXRlKHN0YXRlID0+ICh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIC8vIHNlZWsgdG8gMCByZXBlYXRlZGx5IGVkZ2UgY2FzZVxuICAgICAgY3VycmVudFRpbWU6IHN0YXRlLmN1cnJlbnRUaW1lICE9PSB0cmltbWVkID8gdHJpbW1lZCA6IHRyaW1tZWQgKyAwLjAxLFxuICAgIH0pKVxuICAgIHVwZGF0ZVBsYXliYWNrVGltZSgpXG4gIH1cbiAgY29uc3QgW3BsYXliYWNrU3RhdGUsIHNldFBsYXliYWNrU3RhdGVdID0gdXNlU3RhdGUoJ2luaXQnKVxuICBjb25zdCBbY2FzdFN0YXRlLCBzZXRDYXN0U3RhdGVdID0gdXNlU3RhdGUoJycpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBhcHBDdXJyZW50VGltZSA9PT0gJ251bWJlcicpIHNldFRhcmdldFRpbWUoYXBwQ3VycmVudFRpbWUgfHwgMClcbiAgICBpZiAodHlwZW9mIGFwcEN1cnJlbnRUaW1lID09PSAnb2JqZWN0JylcbiAgICAgIHNldFRhcmdldFRpbWUoYXBwQ3VycmVudFRpbWU/LnZhbHVlIHx8IDApXG4gIH0sIFthcHBDdXJyZW50VGltZV0pXG4gIGNvbnN0IFtlcnJvckRhdGEsIHNldEVycm9yRGF0YV0gPSB1c2VTdGF0ZSgpXG4gIGNvbnN0IGVycm9ySGFuZGxlciA9IHJlYWN0RXZlbnQgPT4ge1xuICAgIG9uRXJyb3I/LihyZWFjdEV2ZW50Lm5hdGl2ZUV2ZW50KVxuICAgIGhhbmRsZUVycm9yKHJlYWN0RXZlbnQsIHtcbiAgICAgIG1lZGlhOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgICAgZGlzcGxheUVycm9yOiBkYXRhID0+IHtcbiAgICAgICAgc2V0UGxheWJhY2tTdGF0ZSgnZXJyb3InKVxuICAgICAgICBzZXRFcnJvckRhdGEoY3VycmVudCA9PiAoY3VycmVudD8uY29kZSA/IGN1cnJlbnQgOiBkYXRhKSlcbiAgICAgIH0sXG4gICAgfSlcbiAgfVxuICBjb25zdCBpc0xpdmUgPSBwbGF5YmFja1RpbWUuc3RyZWFtVHlwZSA9PT0gJ2xpdmUnXG4gIGNvbnN0IFtzZXR0aW5ncywgc2V0U2V0dGluZ3NdID0gdXNlU3RhdGUoKCkgPT4gKHtcbiAgICBzZWN0aW9uczogW10sXG4gICAgdmFsdWVzOiB7c3BlZWQ6IDF9LFxuICB9KSlcbiAgY29uc3QgZmV0Y2hTZXR0aW5ncyA9ICgpID0+IHtcbiAgICBpZiAoIXBsYXllclJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3Qgc3BlZWRJdGVtcyA9IGFwcFNldHRpbmdzLnNwZWVkSXRlbXMgfHwgKGlzTGl2ZSA/IFtdIDogdW5kZWZpbmVkKVxuICAgIHNldFNldHRpbmdzKGN1cnJlbnQgPT4ge1xuICAgICAgY29uc3Qge3ZhbHVlcywgc2VjdGlvbnN9ID0gZ2V0U2V0dGluZ3NEYXRhKHtcbiAgICAgICAgbWVkaWE6IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgICAgIHBsYXllcjogcGxheWVyUmVmLmN1cnJlbnQsXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgcXVhbGl0eSxcbiAgICAgICAgc3BlZWRJdGVtcyxcbiAgICAgICAgbG9vcCxcbiAgICAgICAgcHJlZmVycmVkOiBjdXJyZW50LnByZWZlcnJlZCxcbiAgICAgICAgb3RoZXJTZWN0aW9uczogYXBwU2V0dGluZ3Muc2VjdGlvbnMsXG4gICAgICB9KVxuICAgICAgcmV0dXJuIHtwcmVmZXJyZWQ6IGN1cnJlbnQucHJlZmVycmVkLCB2YWx1ZXMsIHNlY3Rpb25zfVxuICAgIH0pXG4gIH1cbiAgY29uc3QgbGFzdFN0YXRlID0gdXNlUmVmKHBsYXliYWNrU3RhdGUpXG4gIGNvbnN0IGhhbmRsZVBsYXliYWNrU3RhdGVDaGFuZ2UgPSAoZXZlbnQsIHN0YXRlKSA9PiB7XG4gICAgaWYgKGxhc3RTdGF0ZS5jdXJyZW50ID09PSAnZXJyb3InKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgb25QbGF5YmFja1N0YXRlQ2hhbmdlPy4oZXZlbnQsIHN0YXRlKVxuICAgIC8vIHByZXZpb3VzbHkgVUkgcGxheWJhY2sgc3RhdGUgd2FzIHN5bmNlZCBvbmx5IHdoZW5cbiAgICAvLyBleGl0aW5nIGlPUyB2aWRlbyBvbmx5IGZ1bGxzY3JlZW4od2Via2l0ZW5kZnVsbHNjcmVlbilcbiAgICBpZiAoXG4gICAgICAvcGxheWluZ3xwYXVzZWQvLnRlc3Qoc3RhdGUpICYmXG4gICAgICAhKHVpVHlwZSA9PT0gJ21vYmlsZScgJiYgYmxvY2tpbmcpICYmXG4gICAgICAhc2hvdWxkUGF1c2Uoe3VzZXJGb2N1cywgdWlUeXBlfSlcbiAgICApIHtcbiAgICAgIHRvZ2dsZVBsYXkoc3RhdGUpXG4gICAgfVxuICAgIGlmIChzdGF0ZSA9PT0gJ2VuZGVkJykge1xuICAgICAgdG9nZ2xlUGxheSgncGF1c2VkJylcbiAgICB9XG4gICAgaWYgKHN0YXRlID09PSAnbG9hZGluZycgJiYgbGFzdFN0YXRlLmN1cnJlbnQgIT09ICdpbml0Jykge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0b2dnbGVQbGF5KCdwbGF5aW5nJyksIDEpXG4gICAgfVxuICAgIGlmIChzdGF0ZSA9PT0gJ3BsYXlpbmcnKSB7XG4gICAgICBzZXRJc1VzZXJBY3RpdmUodHJ1ZSlcbiAgICB9XG4gICAgaWYgKGxhc3RTdGF0ZS5jdXJyZW50ID09PSAnbG9hZGluZycpIHtcbiAgICAgIGZldGNoU2V0dGluZ3MoKVxuICAgIH1cbiAgICBsYXN0U3RhdGUuY3VycmVudCA9IHN0YXRlXG4gICAgc2V0UGxheWJhY2tTdGF0ZShzdGF0ZSlcbiAgfVxuXG4gIGNvbnN0IGNoYW5nZVNldHRpbmdzID0gKG5hbWUsIHZhbHVlLCB7a2VlcE9wZW59ID0ge30pID0+IHtcbiAgICAvLyBUT0RPIGNvbnNpZGVyIG1lcmdlIGludG8gdXNlUmVkdWNlcj9cbiAgICBvbkNoYW5nZVNldHRpbmdzPy4oe25hbWUsIHZhbHVlfSlcbiAgICBzZXRUYXJnZXRUaW1lKHBsYXliYWNrVGltZS5jdXJyZW50VGltZSlcbiAgICBzZXRTZXR0aW5ncyhjdXJyZW50ID0+ICh7XG4gICAgICAuLi5jdXJyZW50LFxuICAgICAgdmFsdWVzOiB7Li4uY3VycmVudC52YWx1ZXMsIFtuYW1lXTogdmFsdWV9LFxuICAgICAgcHJlZmVycmVkOiB7Li4uY3VycmVudC5wcmVmZXJyZWQsIFtuYW1lXTogdmFsdWV9LFxuICAgIH0pKVxuICAgIGlmICgha2VlcE9wZW4pIHtcbiAgICAgIHNldFVzZXJGb2N1cygnJylcbiAgICB9XG4gIH1cbiAgY29uc3Qgb3BlblNldHRpbmdzID0gZXZlbnQgPT4ge1xuICAgIGNvbnN0IGFuaW1hdGlvbkZyYW1lID1cbiAgICAgIHVzZXJGb2N1cyAhPT0gJ3NldHRpbmdzJyAmJlxuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgb25PcGVuU2V0dGluZ3M/LihldmVudCwgc2V0dGluZ3MpXG4gICAgICAgIC8vIEluIGlPUyBTYWZhcmksIHdlIG5lZWQgdG8gdXBkYXRlIHNldHRpbmdzIGRhdGFcbiAgICAgICAgZmV0Y2hTZXR0aW5ncygpXG4gICAgICB9KVxuICAgIHNldFVzZXJGb2N1cyhjdXJyZW50ID0+IChjdXJyZW50ID09PSAnc2V0dGluZ3MnID8gJycgOiAnc2V0dGluZ3MnKSlcbiAgICByZXR1cm4gYW5pbWF0aW9uRnJhbWVcbiAgfVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChhcHBQbGF5YmFja1JhdGUgPiAwKSB7XG4gICAgICBzZXRTZXR0aW5ncyhjdXJyZW50ID0+ICh7XG4gICAgICAgIC4uLmN1cnJlbnQsXG4gICAgICAgIHZhbHVlczogey4uLmN1cnJlbnQudmFsdWVzLCBzcGVlZDogYXBwUGxheWJhY2tSYXRlfSxcbiAgICAgIH0pKVxuICAgIH1cbiAgfSwgW2FwcFBsYXliYWNrUmF0ZV0pXG5cbiAgY29uc3QgcXVhbGl0eU9wdGlvbnMgPSB1c2VNZW1vKFxuICAgICgpID0+IGdldFF1YWxpdHlPcHRpb25zKHNldHRpbmdzKSxcbiAgICBbc2V0dGluZ3MudmFsdWVzLnF1YWxpdHldXG4gIClcbiAgY29uc3Qgdmlld01vZGUgPSB1c2VMaW5rU3RhdGUodXBkYXRlID0+XG4gICAgb25WaWV3TW9kZUNoYW5nZSh2aWRlb1JlZi5jdXJyZW50LCB1cGRhdGUpXG4gIClcbiAgY29uc3Qgc291cmNlT3ZlcnJpZGUgPSB1c2VMaW5rU3RhdGUoXG4gICAgYXN5bmMgdXBkYXRlID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9XG4gICAgICAgIHNvdXJjZSAmJiAoYXdhaXQgcXVhbGl0eS5yZXdyaXRlTWFuaWZlc3Q/Lihzb3VyY2UsIHF1YWxpdHlPcHRpb25zKSlcbiAgICAgIHVwZGF0ZShyZXN1bHQgfHwgc291cmNlKVxuICAgIH0sXG4gICAgW3NvdXJjZSwgcXVhbGl0eU9wdGlvbnNdXG4gIClcbiAgY29uc3Qgd2FpdGluZyA9IC9lbXB0aWVkfGxvYWRpbmd8YnVmZmVyaW5nLy50ZXN0KHBsYXliYWNrU3RhdGUpXG4gIGNvbnN0IGFjdGl2ZVBsYXliYWNrID1cbiAgICBwbGF5YmFja1N0YXRlID09PSAncGxheWluZycgfHwgcGxheWJhY2tTdGF0ZSA9PT0gJ3dhaXRpbmcnXG4gIGNvbnN0IHtcbiAgICBtb2RlOiBhdXRvSGlkZU1vZGUsXG4gICAgb25DbGljayxcbiAgICBvbk1vdXNlTW92ZSxcbiAgfSA9IHVzZUF1dG9IaWRlKHtcbiAgICBwaW5uZWQ6ICFjb250cm9scy5hdXRvaGlkZSB8fCB3YWl0aW5nIHx8ICFhY3RpdmVQbGF5YmFjayB8fCB1c2VyRm9jdXMsXG4gICAgdGFwVG9IaWRlOiB1aVR5cGUgPT09ICdtb2JpbGUnLFxuICAgIGhpZGVUaW1lTXM6IGNvbnRyb2xzLmF1dG9oaWRlLFxuICB9KVxuICBjb25zdCBtb2RlID1cbiAgICB1c2VyRm9jdXMgPT09ICdzZWVrYmFyJ1xuICAgICAgPyAnaGlkZGVuJ1xuICAgICAgOiBjb250cm9scy5hdXRvaGlkZVxuICAgICAgPyBhdXRvSGlkZU1vZGVcbiAgICAgIDogY29udHJvbHNcbiAgICAgID8gJ3Nob3duJ1xuICAgICAgOiAnaGlkZGVuJ1xuICBjb25zdCBjb250cm9sc0Rpc3BsYXkgPVxuICAgIHVzZXJGb2N1cyA9PT0gJ3NlZWtiYXInXG4gICAgICA/ICdzZWVrYmFyLW9ubHknXG4gICAgICA6IGNvbnRyb2xzID09PSAndGl0bGUtb25seScgfHwgcGxheWJhY2tTdGF0ZSA9PT0gJ2VtcHRpZWQnXG4gICAgICA/ICdoaWRkZW4nXG4gICAgICA6IG1vZGVcbiAgY29uc3Qgc2hvdWxkSGlkZVBhbmVscyA9XG4gICAgKGNvbnRyb2xzID09PSAnbm8tcGFuZWwnIHx8IGNvbnRyb2xzRGlzcGxheSA9PT0gJ2hpZGRlbicpICYmIHVzZXJGb2N1c1xuICBjb25zdCBoYXZlUGxheVBhbmVsID1cbiAgICAhYmxvY2tpbmcgJiZcbiAgICBoYXZlUG9pbnRlcigpICYmXG4gICAgdWlUeXBlID09PSAnZGVza3RvcCcgJiZcbiAgICAhd2FpdGluZyAmJlxuICAgICEvdm9sdW1lfCcnLy50ZXN0KHVzZXJGb2N1cykgJiZcbiAgICAhL3RpdGxlLW9ubHl8bm8tcGFuZWwvLnRlc3QoY29udHJvbHMpICYmXG4gICAgKGNvbnRyb2xzLmF1dG9oaWRlIHx8IG1vZGUgPT09ICdzaG93bicpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoc2hvdWxkSGlkZVBhbmVscykge1xuICAgICAgc2V0VXNlckZvY3VzKCcnKVxuICAgIH1cbiAgfSwgW3Nob3VsZEhpZGVQYW5lbHNdKVxuICBjb25zdCB7c3Vic2NyaWJlLCBvbkNoYW5nZSwgdG9nZ2xlTXV0ZX0gPSBsaW5rTWVkaWFWb2x1bWUoKCkgPT4gKHtcbiAgICB2aWRlbzogdmlkZW9SZWYuY3VycmVudCxcbiAgICBnZXRQbGF5ZXI6ICgpID0+IHBsYXllclJlZi5jdXJyZW50LFxuICB9KSlcbiAgY29uc3QgY2hhbmdlUHJldmlvdXMgPSBldmVudCA9PiB7XG4gICAgb25DaGFuZ2VQcmV2aW91cyhldmVudClcbiAgICB0b2dnbGVQbGF5KCdwYXVzZWQnKVxuICAgIHZpZGVvUmVmLmN1cnJlbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2xvYWRzdGFydCcpKVxuICB9XG4gIGNvbnN0IGNoYW5nZU5leHQgPSBldmVudCA9PiB7XG4gICAgb25DaGFuZ2VOZXh0KGV2ZW50KVxuICAgIHRvZ2dsZVBsYXkoJ3BhdXNlZCcpXG4gICAgdmlkZW9SZWYuY3VycmVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnbG9hZHN0YXJ0JykpXG4gIH1cblxuICB1c2VFZmZlY3QoZmV0Y2hTZXR0aW5ncywgW2FwcFNldHRpbmdzXSlcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBUaGUgYWRDb250YWluZXIgc2hvdWxkIGJlIHNldCBiZWZvcmUgYGxvYWRgIGJlY2F1c2UgSW1hRGFpLmxvYWQgbmVlZHMgaXQuXG4gICAgcGx1Z2lucy5mb3JFYWNoKHBsdWdpbiA9PiBwbHVnaW4uc2V0QWRDb250YWluZXI/LihhZENvbnRhaW5lclJlZi5jdXJyZW50KSlcbiAgfSwgW10pXG5cbiAgdXNlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICBkaXNwYXRjaENoYXB0ZXJFdmVudHMoe1xuICAgICAgICBtZWRpYTogdmlkZW9SZWYuY3VycmVudCxcbiAgICAgICAgY2hhcHRlcnMsXG4gICAgICAgIGdldFRpbWU6ICgpID0+IHZpZGVvUmVmLmN1cnJlbnQuY3VycmVudFRpbWUsXG4gICAgICB9KSxcbiAgICBbY2hhcHRlcnNdXG4gIClcblxuICBjb25zdCBpc0VuZCA9IHBsYXliYWNrU3RhdGUgPT09ICdlbmRlZCdcbiAgY29uc3QgY2FuU2VlayA9ICFpc0VuZCAmJiBwbGF5YmFja1RpbWUuZHVyYXRpb24gPiAwXG4gIGNvbnN0IGRlcml2ZWRQbGF5YmFja1N0YXRlID1cbiAgICAodWlUeXBlID09PSAnbW9iaWxlJyAmJiBibG9ja2luZykgfHwgc2hvdWxkUGF1c2Uoe3VzZXJGb2N1cywgdWlUeXBlfSlcbiAgICAgID8gJ3BhdXNlZCdcbiAgICAgIDogdGFyZ2V0U3RhdGUucGxheWJhY2tTdGF0ZVxuICBjb25zdCBhY3RpdmVUaHVtYm5haWxzVXJsID1cbiAgICAoIXVzZXJGb2N1cyB8fCB1c2VyRm9jdXMgPT09ICdzZWVrYmFyJykgJiZcbiAgICAoZ2V0VGh1bWJuYWlsc1VybChzb3VyY2UpIHx8IHRodW1ibmFpbHNVcmwpXG4gIGNvbnN0IGNzc1ZhcmlhYmxlcyA9IHtcbiAgICAnLS1wbGF5aW5nJzogcGxheWJhY2tTdGF0ZSA9PT0gJ3BsYXlpbmcnID8gJzEnIDogJzAnLFxuICB9XG4gIGNvbnN0IG9uUmV3aW5kID1cbiAgICAoIWlzTGl2ZSB8fCBwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgPCAwKSAmJlxuICAgIGNhblNlZWsgJiZcbiAgICAoKCkgPT4gc2V0VGFyZ2V0VGltZShwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgLSAxMCwgJ3Jld2luZCcpKVxuICBjb25zdCBvbkZvcndhcmQgPVxuICAgICghaXNMaXZlIHx8IHBsYXliYWNrVGltZS5jdXJyZW50VGltZSA8IDApICYmXG4gICAgY2FuU2VlayAmJlxuICAgICgoKSA9PiBzZXRUYXJnZXRUaW1lKHBsYXliYWNrVGltZS5jdXJyZW50VGltZSArIDEwLCAnZm9yd2FyZCcpKVxuICBjb25zdCBvbkNsaWNrQmxhbmsgPVxuICAgIGhhdmVQbGF5UGFuZWwgJiYgKCgpID0+IHRvZ2dsZVBsYXkoJycsIHt0cmlnZ2VyZWRCeTogJ3VzZXItYWN0aW9uJ30pKVxuXG4gIGNvbnN0IHVpSGFuZGxlcnMgPSB7XG4gICAgb25QbGF5OiAoKSA9PiB7XG4gICAgICB0b2dnbGVQbGF5KCcnLCB7dHJpZ2dlcmVkQnk6ICd1c2VyLWFjdGlvbid9KVxuICAgICAgc2V0SXNVc2VyQWN0aXZlKHRydWUpXG4gICAgfSxcbiAgICBvbkNsaWNrTGl2ZTogaXNMaXZlICYmICgoKSA9PiBzZXRUYXJnZXRUaW1lKDAsICdzZWVrVG9MaXZlJykpLFxuICAgIG9uQ2xpY2tTZWVrYmFyOiAoKSA9PiB7XG4gICAgICByZWZzLmN1cnJlbnQuZGVmZXJlZFNlZWtGb2N1cyA9IHNldFRpbWVvdXQoXG4gICAgICAgICgpID0+IHNldFVzZXJGb2N1cygnc2Vla2JhcicpLFxuICAgICAgICA2NlxuICAgICAgKVxuICAgIH0sXG4gICAgb25TZWVrOiB0aW1lID0+IHtcbiAgICAgIHNldFRhcmdldFRpbWUodGltZSwgJ3NlZWsnKVxuICAgICAgY2xlYXJUaW1lb3V0KHJlZnMuY3VycmVudC5kZWZlcmVkU2Vla0ZvY3VzKVxuICAgICAgc2V0VGltZW91dCgoKSA9PiBzZXRVc2VyRm9jdXMoJycpLCA2NilcbiAgICB9LFxuICAgIG9uQ2hhbmdlU2V0dGluZ3M6ICh7bmFtZSwgdmFsdWUsIGtlZXBPcGVufSkgPT5cbiAgICAgIGNoYW5nZVNldHRpbmdzKG5hbWUsIHZhbHVlLCB7a2VlcE9wZW59KSxcbiAgICBvbkNsb3NlU2V0dGluZ3M6IGV2ZW50ID0+IHtcbiAgICAgIHNldFVzZXJGb2N1cygnJylcbiAgICAgIHNsb3RQcm9wcz8uc2V0dGluZ3M/Lm9uQ2xvc2U/LihldmVudClcbiAgICB9LFxuICB9XG5cbiAgY29uc3QgdWlFbGVtZW50cyA9IHtcbiAgICBsaXZlQnV0dG9uOiB1aUhhbmRsZXJzLm9uQ2xpY2tMaXZlICYmIChcbiAgICAgIDxjb21wb25lbnRzLkxpdmVCdXR0b25cbiAgICAgICAgdXNpbmdTdGFydE92ZXI9e3BsYXliYWNrVGltZS5jdXJyZW50VGltZSA8IDB9XG4gICAgICAgIG9uQ2xpY2s9e3VpSGFuZGxlcnMub25DbGlja0xpdmV9XG4gICAgICAvPlxuICAgICksXG4gICAgY29udHJvbEJ1dHRvbnM6IHtcbiAgICAgIHBsYXlCdXR0b246IChcbiAgICAgICAgPFBsYXlCdXR0b25cbiAgICAgICAgICBwbGF5YmFja1N0YXRlPXtkZXJpdmVkUGxheWJhY2tTdGF0ZX1cbiAgICAgICAgICBlbmRlZD17aXNFbmR9XG4gICAgICAgICAgaGlkZGVuPXtcbiAgICAgICAgICAgIHVpVHlwZSA9PT0gJ21vYmlsZScgJiYgKHdhaXRpbmcgfHwgL2xvYWRpbmcvLnRlc3QocGxheWJhY2tTdGF0ZSkpXG4gICAgICAgICAgfVxuICAgICAgICAgIHZhcmlhbnQ9eyFpc1VzZXJBY3RpdmUgJiYgJ2ZpcnN0cGxheSd9XG4gICAgICAgICAgb25DbGljaz17dWlIYW5kbGVycy5vblBsYXl9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgICAgcmV3aW5kQnV0dG9uOiBvblJld2luZCAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBzdGFydEljb249XCJyZXdpbmQxMFwiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLlJFV0lORFwiXG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRW5kfVxuICAgICAgICAgIG9uQ2xpY2s9e29uUmV3aW5kfVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIGZvcndhcmRCdXR0b246IG9uRm9yd2FyZCAmJiAoXG4gICAgICAgIDxGb3J3YXJkQnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwiZm9yd2FyZDEwXCJcbiAgICAgICAgICB0aXRsZT1cIktLUy5QTEFZRVIuRk9SV0FSRFwiXG4gICAgICAgICAgZGlzYWJsZWQ9eyFjYW5TZWVrfVxuICAgICAgICAgIG9uQ2xpY2s9e29uRm9yd2FyZH1cbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgICBuZXh0RXBpc29kZUJ1dHRvbjogKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwibmV4dFwiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLk5FWFRcIlxuICAgICAgICAgIGRpc2FibGVkPXshb25DaGFuZ2VOZXh0fVxuICAgICAgICAgIG9uQ2xpY2s9e2NoYW5nZU5leHR9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgICAgcHJldmlvdXNFcGlzb2RlQnV0dG9uOiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBzdGFydEljb249XCJwcmV2aW91c1wiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLlBSRVZJT1VTXCJcbiAgICAgICAgICBkaXNhYmxlZD17IW9uQ2hhbmdlUHJldmlvdXN9XG4gICAgICAgICAgb25DbGljaz17Y2hhbmdlUHJldmlvdXN9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgIH0sXG4gICAgc2Vla2JhcjogKFxuICAgICAgPGNvbXBvbmVudHMuU2Vla2JhclxuICAgICAgICBzdHlsZT17L3ZvbHVtZS8udGVzdCh1c2VyRm9jdXMpICYmIHtvcGFjaXR5OiAnMCd9fVxuICAgICAgICBzdGFydFRpbWU9e3BsYXliYWNrVGltZS5zdGFydFRpbWV9XG4gICAgICAgIGN1cnJlbnRUaW1lPXtwbGF5YmFja1RpbWUuY3VycmVudFRpbWV9XG4gICAgICAgIGJ1ZmZlclRpbWU9e3BsYXliYWNrVGltZS5idWZmZXJUaW1lfVxuICAgICAgICBkdXJhdGlvbj17cGxheWJhY2tUaW1lLmR1cmF0aW9ufVxuICAgICAgICBjaGFwdGVycz17Y2hhcHRlcnN9XG4gICAgICAgIG9uQ2hhbmdlPXt1aUhhbmRsZXJzLm9uQ2xpY2tTZWVrYmFyfVxuICAgICAgICBvbkNoYW5nZUNvbW1pdHRlZD17dWlIYW5kbGVycy5vblNlZWt9XG4gICAgICAgIG1hcmtzPXttYXJrc31cbiAgICAgICAgcGx1Z2lucz17cGx1Z2luc31cbiAgICAgICAgey4uLnNsb3RQcm9wcy5zZWVrYmFyfVxuICAgICAgPlxuICAgICAgICB7YWN0aXZlVGh1bWJuYWlsc1VybCAmJiAoXG4gICAgICAgICAgPFNlZWtQcmV2aWV3XG4gICAgICAgICAgICB0aHVtYm5haWxzVXJsPXthY3RpdmVUaHVtYm5haWxzVXJsfVxuICAgICAgICAgICAgZHVyYXRpb249e3BsYXliYWNrVGltZS5kdXJhdGlvbn1cbiAgICAgICAgICAgIGNoYXB0ZXJzPXtjaGFwdGVyc31cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9jb21wb25lbnRzLlNlZWtiYXI+XG4gICAgKSxcbiAgICBkaXNwbGF5VGltZTogPGNvbXBvbmVudHMuRGlzcGxheVRpbWUgey4uLnBsYXliYWNrVGltZX0gLz4sXG4gICAgZnVsbHNjcmVlbkJ1dHRvbjogKFxuICAgICAgPEZ1bGxzY3JlZW5CdXR0b25cbiAgICAgICAgdmlld01vZGU9e3ZpZXdNb2RlfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiB0b2dnbGVGdWxsc2NyZWVuKGNvbnRhaW5lclJlZi5jdXJyZW50KX1cbiAgICAgIC8+XG4gICAgKSxcbiAgICB2b2x1bWVDb250cm9sOiB3aWR0aCA+PSBzaXplc1snc21hbGwtZW1iZWQnXSAmJiAoXG4gICAgICA8Y29tcG9uZW50cy5Wb2x1bWVDb250cm9sXG4gICAgICAgIHsuLi57c3Vic2NyaWJlLCBvbkNoYW5nZSwgdG9nZ2xlTXV0ZX19XG4gICAgICAgIG9uTW91c2VPdmVyPXsoKSA9PiBzZXRVc2VyRm9jdXMoJ3ZvbHVtZScpfVxuICAgICAgICBvbk1vdXNlT3V0PXsoKSA9PiBzZXRVc2VyRm9jdXMoJycpfVxuICAgICAgICB7Li4uc2xvdFByb3BzPy52b2x1bWVDb250cm9sfVxuICAgICAgLz5cbiAgICApLFxuICAgIGJhY2tJdGVtczogKFxuICAgICAgPFBsYXlQYW5lbCBhbmltYXRpb249e3RhcmdldFN0YXRlLmFuaW1hdGlvbn0gb25DbGljaz17b25DbGlja0JsYW5rfSAvPlxuICAgICksXG4gIH1cbiAgY29uc3QgY29tcGF0aWJpbGl0eUNhc3RQcm9wcyA9IGNhc3RPcHRpb25zID09PSAnY29tcGF0aWJsZScgJiYge1xuICAgIHNvdXJjZSxcbiAgICB2YWx1ZXM6IHt0aXRsZSwgLi4uc2V0dGluZ3MudmFsdWVzLCAuLi5pbnRsLCBtb2R1bGVzQ29uZmlnfSxcbiAgICBvbkxvYWQ6IG9uQ2FzdCxcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGNhc3RPcHRpb25zICYmIGNhc3RPcHRpb25zICE9PSAnY29tcGF0aWJsZScpIHtcbiAgICAgIHJldHVybiBsaW5rQ2FzdCh7c291cmNlLCAuLi5jYXN0T3B0aW9uc30pXG4gICAgfSAvLyBUT0RPIHBsYXlsaXN0LCBhdWRpbyAvIHN1YnRpdGxlIHNldHRpbmdcbiAgfSwgW3NvdXJjZSwgY2FzdE9wdGlvbnMuY29udGVudElkLCBjYXN0T3B0aW9ucy5jdXN0b21EYXRhXSlcbiAgY29uc3Qgc2VsZWN0ZWRBdWRpb1RyYWNrID0gc2V0dGluZ3MucHJlZmVycmVkPy5hdWRpbyB8fCBhcHBBdWRpb1RyYWNrXG4gIGNvbnN0IHNlbGVjdGVkVGV4dFRyYWNrID0gc2V0dGluZ3MucHJlZmVycmVkPy5zdWJ0aXRsZXMgfHwgYXBwVGV4dFRyYWNrXG5cbiAgcmV0dXJuIChcbiAgICA8SW50bFByb3ZpZGVyIHsuLi5pbnRsfT5cbiAgICAgIDxMYXlvdXRcbiAgICAgICAgc3R5bGU9e3suLi5zdHlsZSwgY3NzVmFyaWFibGVzfX1cbiAgICAgICAgdHlwZT17dWlUeXBlfVxuICAgICAgICBkaXNwbGF5PXttb2RlfVxuICAgICAgICBjb250cm9sc0Rpc3BsYXk9e2NvbnRyb2xzRGlzcGxheX1cbiAgICAgICAgc2l6ZT17c2l6ZX1cbiAgICAgICAgdmlkZW89e1xuICAgICAgICAgIDxWaWRlb1xuICAgICAgICAgICAgey4uLnZpZGVvUHJvcHN9XG4gICAgICAgICAgICB2aWRlb1JlZj17bXVsdGlSZWYodmlkZW9SZWYsIHZpZGVvUHJvcHMudmlkZW9SZWYpfVxuICAgICAgICAgICAgc291cmNlPXtcbiAgICAgICAgICAgICAgY2FzdFN0YXRlICE9PSBDYXN0U3RhdGUuQ09OTkVDVEVEICYmXG4gICAgICAgICAgICAgIHBsYXliYWNrU3RhdGUgIT09ICdlcnJvcicgJiZcbiAgICAgICAgICAgICAgc291cmNlT3ZlcnJpZGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBsYXliYWNrU3RhdGU9e2Rlcml2ZWRQbGF5YmFja1N0YXRlfVxuICAgICAgICAgICAgY3VycmVudFRpbWU9e3RhcmdldFN0YXRlLmN1cnJlbnRUaW1lfVxuICAgICAgICAgICAgey4uLihhcHBWb2x1bWUgPj0gMCAmJiB7dm9sdW1lOiBhcHBWb2x1bWUsIG11dGVkOiBhcHBWb2x1bWUgPD0gMH0pfVxuICAgICAgICAgICAgcGxheWJhY2tSYXRlPXtzZXR0aW5ncy52YWx1ZXMuc3BlZWR9XG4gICAgICAgICAgICB2aWRlb1Jlc29sdXRpb249e3F1YWxpdHlPcHRpb25zfVxuICAgICAgICAgICAgYXVkaW9UcmFjaz17c2VsZWN0ZWRBdWRpb1RyYWNrfVxuICAgICAgICAgICAgdGV4dFRyYWNrPXtzZWxlY3RlZFRleHRUcmFja31cbiAgICAgICAgICAgIGxvb3A9e3NldHRpbmdzLnZhbHVlcy5sb29wfVxuICAgICAgICAgICAgcGx1Z2lucz17cGx1Z2luc31cbiAgICAgICAgICAgIG1vZHVsZXNDb25maWc9e21vZHVsZXNDb25maWd9XG4gICAgICAgICAgICBvblBsYXlsb2dGaXJlZD17b25QbGF5bG9nRmlyZWR9XG4gICAgICAgICAgICBvbkVycm9yPXtlcnJvckhhbmRsZXJ9XG4gICAgICAgICAgICBvblBsYXliYWNrU3RhdGVDaGFuZ2U9e2hhbmRsZVBsYXliYWNrU3RhdGVDaGFuZ2V9XG4gICAgICAgICAgICBvbkJsb2NrZWRBdXRvcGxheT17ZXJyb3IgPT4gb25CbG9ja2VkQXV0b3BsYXk/LihlcnJvcil9XG4gICAgICAgICAgICBvbkNhblBsYXk9e2V2ZW50ID0+IHtcbiAgICAgICAgICAgICAgdXBkYXRlUGxheWJhY2tUaW1lKGV2ZW50KVxuICAgICAgICAgICAgICB2aWRlb1Byb3BzLm9uQ2FuUGxheT8uKGV2ZW50KVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9uVGltZVVwZGF0ZT17dXBkYXRlUGxheWJhY2tUaW1lfVxuICAgICAgICAgICAgb25EdXJhdGlvbkNoYW5nZT17dXBkYXRlUGxheWJhY2tUaW1lfVxuICAgICAgICAgICAgb25QbGF5ZXJMb2FkZWQ9e3BsYXllciA9PiB7XG4gICAgICAgICAgICAgIHBsYXllclJlZi5jdXJyZW50ID0gcGxheWVyXG4gICAgICAgICAgICAgIG9uUGxheWVyTG9hZGVkPy4ocGxheWVyKVxuICAgICAgICAgICAgICBzeW5jVm9sdW1lKHZpZGVvUmVmLmN1cnJlbnQsIHZpZGVvUHJvcHMubXV0ZWQgPyAwIDogYXBwVm9sdW1lKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgICAgIGNvbnRhaW5lclJlZj17ZWxlbWVudCA9PiB7XG4gICAgICAgICAgY29udGFpbmVyUmVmLmN1cnJlbnQgPSBlbGVtZW50XG4gICAgICAgICAgb2JzZXJ2ZShlbGVtZW50KVxuICAgICAgICB9fVxuICAgICAgICBiYWNrUmVmPXthZENvbnRhaW5lclJlZn1cbiAgICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgICBjaGFubmVsVGl0bGU9e2NoYW5uZWxUaXRsZX1cbiAgICAgICAgYmFja0J1dHRvbj17b25CYWNrICYmIDxCdXR0b24gc3RhcnRJY29uPVwiYmFja1wiIG9uQ2xpY2s9e29uQmFja30gLz59XG4gICAgICAgIHsuLi4oaXNVc2VyQWN0aXZlICYmIHVpRWxlbWVudHMpfVxuICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgICBvbk1vdXNlTW92ZT17b25Nb3VzZU1vdmV9XG4gICAgICA+XG4gICAgICAgIDxMb2FkaW5nU3Bpbm5lciBhY3RpdmU9e3dhaXRpbmd9IC8+XG4gICAgICAgIHtlcnJvckRhdGEgJiYgPEVycm9yIGVycm9yPXtlcnJvckRhdGF9IG9uQmFjaz17b25CYWNrfSAvPn1cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgICB7LyogVE9ETyBzeW5jIENhc3QgbGFzdCBwbGF5ZWQgdGltZSBiYWNrICovfVxuICAgICAgICB7aXNVc2VyQWN0aXZlICYmIChcbiAgICAgICAgICA8Y29tcG9uZW50cy5DYXN0VWlcbiAgICAgICAgICAgIG9uQmFjaz17b25CYWNrfVxuICAgICAgICAgICAgb25TdGF0ZUNoYW5nZT17c2V0Q2FzdFN0YXRlfVxuICAgICAgICAgICAgb25Mb2FkPXtvbkNhc3R9XG4gICAgICAgICAgICB7Li4uY29tcGF0aWJpbGl0eUNhc3RQcm9wc31cbiAgICAgICAgICAgIHsuLi5zbG90UHJvcHMuY2FzdFVpfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHtpc1VzZXJBY3RpdmUgJiYgKCAvLyBUT0RPOiBEZXNpZ24gPEV4dGVuc3Rpb24gLz4gZmxhZ1xuICAgICAgICAgIDxjb21wb25lbnRzLlNldHRpbmdzXG4gICAgICAgICAgICB0eXBlPXt1aVR5cGV9XG4gICAgICAgICAgICBzZWN0aW9ucz17c2V0dGluZ3Muc2VjdGlvbnN9XG4gICAgICAgICAgICAvLyBUT0RPIGhhc0JvdHRvbVBhbmVsIGJvdHRvbTogOGVtXG4gICAgICAgICAgICBvcGVuPXt1c2VyRm9jdXMgPT09ICdzZXR0aW5ncyd9XG4gICAgICAgICAgICB2YWx1ZXM9e3NldHRpbmdzLnZhbHVlc31cbiAgICAgICAgICAgIG9uT3Blbj17b3BlblNldHRpbmdzfVxuICAgICAgICAgICAgb25DaGFuZ2U9e3VpSGFuZGxlcnMub25DaGFuZ2VTZXR0aW5nc31cbiAgICAgICAgICAgIHsuLi5zbG90UHJvcHM/LnNldHRpbmdzfVxuICAgICAgICAgICAgb25DbG9zZT17dWlIYW5kbGVycy5vbkNsb3NlU2V0dGluZ3N9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAgPExhbmd1YWdlU2V0dGluZ3NcbiAgICAgICAgICB1aVR5cGU9e3VpVHlwZX1cbiAgICAgICAgICBnZXRQbGF5ZXI9eygpID0+IHBsYXllclJlZi5jdXJyZW50fVxuICAgICAgICAgIG9uQ2hhbmdlPXsoX2V2ZW50LCBpdGVtKSA9PiBjaGFuZ2VTZXR0aW5ncyhpdGVtLnR5cGUsIGl0ZW0udmFsdWUpfVxuICAgICAgICAgIHsuLi5zbG90UHJvcHMubGFuZ3VhZ2VTZXR0aW5nc31cbiAgICAgICAgLz5cbiAgICAgICAgPEJhY2tkcm9wIG9wZW49eyFwbGF5YmFja1N0YXRlIHx8IHBsYXliYWNrU3RhdGUgPT09ICdsb2FkaW5nJ30+XG4gICAgICAgICAgPExvYWRpbmdTcGlubmVyIC8+XG4gICAgICAgIDwvQmFja2Ryb3A+XG4gICAgICA8L0xheW91dD5cbiAgICA8L0ludGxQcm92aWRlcj5cbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBQcmVtaXVtUGxheWVyXG4iXX0= */"),
8078
+ desktop: /*#__PURE__*/css$1(LanguageMenu.styles, LanguageMenu.desktopStyles, process.env.NODE_ENV === "production" ? "" : ";label:desktop;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByZW1pdW1QbGF5ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd0VXIiwiZmlsZSI6IlByZW1pdW1QbGF5ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtjc3N9IGZyb20gJ0BlbW90aW9uL2NzcydcbmltcG9ydCB1c2VEaW1lbnNpb25zIGZyb20gJ3JlYWN0LWNvb2wtZGltZW5zaW9ucydcbmltcG9ydCB7UmVzaXplT2JzZXJ2ZXJ9IGZyb20gJ0BqdWdnbGUvcmVzaXplLW9ic2VydmVyJ1xuXG5pbXBvcnQge2hhbmRsZUVycm9yfSBmcm9tICdwbGF5ZXJDb3JlL2Vycm9ycydcbmltcG9ydCB7b259IGZyb20gJ3V0aWwvZXZlbnRzJ1xuaW1wb3J0IHtoYXZlUG9pbnRlciwgaXNEZXNrdG9wfSBmcm9tICd1dGlsL2Vudmlyb25tZW50J1xuaW1wb3J0IG11bHRpUmVmIGZyb20gJ3V0aWwvbXVsdGlSZWYnXG5pbXBvcnQge29uVmlld01vZGVDaGFuZ2UsIHRvZ2dsZUZ1bGxzY3JlZW59IGZyb20gJ3V0aWwvdmlld01vZGVzJ1xuaW1wb3J0IHt1c2VBdXRvSGlkZX0gZnJvbSAnaG9va3MnXG5pbXBvcnQge0ludGxQcm92aWRlcn0gZnJvbSAnY29udGV4dC9JMThuJ1xuaW1wb3J0IHtnZXRNZWRpYVRpbWUsIGlzQnVmZmVyZWR9IGZyb20gJ3BsYXllckNvcmUvbWVkaWFCaW5kaW5ncydcbmltcG9ydCBFcnJvciBmcm9tICdwbGF5ZXJVaS9FcnJvcidcbmltcG9ydCBMYXlvdXQgZnJvbSAncGxheWVyVWkvRGVmYXVsdExheW91dCdcbmltcG9ydCB7XG4gIEJ1dHRvbixcbiAgTGl2ZUJ1dHRvbixcbiAgRnVsbHNjcmVlbkJ1dHRvbixcbiAgUGxheUJ1dHRvbixcbiAgRm9yd2FyZEJ1dHRvbixcbn0gZnJvbSAncGxheWVyVWkvYnV0dG9ucydcbmltcG9ydCBTZWVrYmFyIGZyb20gJ3BsYXllclVpL1NlZWtiYXInXG5pbXBvcnQgRGlzcGxheVRpbWUgZnJvbSAncGxheWVyVWkvRGlzcGxheVRpbWUnXG5pbXBvcnQgTG9hZGluZ1NwaW5uZXIgZnJvbSAncGxheWVyVWkvTG9hZGluZ1NwaW5uZXInXG5pbXBvcnQgQmFja2Ryb3AgZnJvbSAncGxheWVyVWkvQmFja2Ryb3AnXG5pbXBvcnQgU2V0dGluZ3MgZnJvbSAncGxheWVyVWkvU2V0dGluZ3MnXG5pbXBvcnQgT3ZlcmxheVBhbmVsIGZyb20gJ3BsYXllclVpL092ZXJsYXlQYW5lbCdcbmltcG9ydCBMYW5ndWFnZU1lbnUgZnJvbSAncGxheWVyVWkvTGFuZ3VhZ2VNZW51J1xuaW1wb3J0IFBsYXlQYW5lbCBmcm9tICdwbGF5ZXJVaS9QbGF5UGFuZSdcbmltcG9ydCBWb2x1bWVDb250cm9sIGZyb20gJ2NvbXBvbmVudC9Wb2x1bWVDb250cm9sJ1xuaW1wb3J0IENhc3RVaSBmcm9tICdjYXN0L0Nhc3RVaSdcbmltcG9ydCB7bGlua0Nhc3R9IGZyb20gJ2Nhc3QvZnJhbWV3b3JrJ1xuaW1wb3J0IHtDYXN0U3RhdGV9IGZyb20gJ0VudW0nXG5pbXBvcnQge2Rpc3BhdGNoQ2hhcHRlckV2ZW50c30gZnJvbSAnLi90aW1lbGluZSdcbmltcG9ydCBWaWRlbyBmcm9tICcuLi9WaWRlbydcbmltcG9ydCB7Z2V0TGFuZ3VhZ2VPcHRpb25zLCBnZXRRdWFsaXR5T3B0aW9ucywgZ2V0U2V0dGluZ3NEYXRhfSBmcm9tICcuL3NldHRpbmdzJ1xuaW1wb3J0IHtsaW5rTWVkaWFWb2x1bWUsIHN5bmNWb2x1bWV9IGZyb20gJy4vdm9sdW1lJ1xuaW1wb3J0IFNlZWtQcmV2aWV3IGZyb20gJy4vU2Vla1ByZXZpZXcnXG5cbmNvbnN0IHNpemVzID0ge1xuICAnc21hbGwtZW1iZWQnOiAyMDAsXG4gIGVtYmVkOiA0MDAsXG4gICd0YWJsZXQtcG9ydHJhaXQnOiA2MDAsXG4gICd0YWJsZXQtbGFuZHNjYXBlJzogOTAwLFxuICBkZXNrdG9wOiAxMjAwLFxufVxuXG5jb25zdCB1c2VMaW5rU3RhdGUgPSAocmVxdWVzdCwgZGVwZW5kZW5jaWVzID0gW10pID0+IHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSB1c2VTdGF0ZSgpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmVxdWVzdChzZXRTdGF0ZSlcbiAgfSwgZGVwZW5kZW5jaWVzKVxuICByZXR1cm4gc3RhdGVcbn1cblxuY29uc3QgZmxpcFN0YXRlID0gc3RhdGUgPT4gKHN0YXRlID09PSAncGxheWluZycgPyAncGF1c2VkJyA6ICdwbGF5aW5nJylcblxuLy8gRklYTUU6IHRvbyBmZXcgbGluZXMgdG8gc3BsaXQgYSBmaWxlLCBsb29raW5nIGEgYmV0dGVyIHBsYWNlXG5jb25zdCBnZXRUaHVtYm5haWxzVXJsID0gc291cmNlID0+XG4gIFtdLmNvbmNhdChzb3VyY2UpLmZpbmQoaXRlbSA9PiBpdGVtLnR5cGUgPT09ICd0aHVtYm5haWwnKT8uc3JjXG5cbmNvbnN0IGRlZmF1bHRTZXR0aW5ncyA9IHt9XG5cbmNvbnN0IHNob3VsZFBhdXNlID0gKHt1c2VyRm9jdXMsIHVpVHlwZX0pID0+XG4gICh1aVR5cGUgPT09ICdtb2JpbGUnICYmIC9zZXR0aW5nc3xjaGFwdGVyLWxpc3QvLnRlc3QodXNlckZvY3VzKSkgfHxcbiAgL2Jsb2NraW5nfHNlZWtiYXJ8c2hhcmUtaW5uZXIvLnRlc3QodXNlckZvY3VzKVxuXG4vLyBUT0RPIGV4dHJhY3QgdG8gc29tZXdoZXJlIGVsc2VcbmNvbnN0IG1lbnVDbGFzc2VzID0ge1xuICBkZWZhdWx0OiBjc3MoTGFuZ3VhZ2VNZW51LnN0eWxlcyksXG4gIGRlc2t0b3A6IGNzcyhMYW5ndWFnZU1lbnUuc3R5bGVzLCBMYW5ndWFnZU1lbnUuZGVza3RvcFN0eWxlcyksXG59XG5cbmNvbnN0IExhbmd1YWdlU2V0dGluZ3MgPSAoe1xuICB1aVR5cGUsXG4gIGF1ZGlvVHJhY2tzID0gW10sXG4gIHRleHRUcmFja3MgPSBbXSxcbiAgZ2V0UGxheWVyLFxuICBvbkNoYW5nZSxcbiAgc2xvdHMgPSB7TGFuZ3VhZ2VNZW51fSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZ2V0TGFuZ3VhZ2VPcHRpb25zKGdldFBsYXllcigpLCB7YXVkaW9UcmFja3MsIHRleHRUcmFja3N9KVxuICByZXR1cm4gKFxuICAgIGF1ZGlvVHJhY2tzLmxlbmd0aCA+IDAgJiZcbiAgICB0ZXh0VHJhY2tzLmxlbmd0aCA+IDAgJiYgKFxuICAgIDxPdmVybGF5UGFuZWwgYnV0dG9uSWNvbj1cInN1YnRpdGxlXCI+XG4gICAgICA8c2xvdHMuTGFuZ3VhZ2VNZW51XG4gICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICBjbGFzc2VzPXttZW51Q2xhc3Nlc31cbiAgICAgICAgc2VjdGlvbk9wdGlvbnM9e1tvcHRpb25zLmF1ZGlvVHJhY2tzLCBvcHRpb25zLnRleHRUcmFja3NdfVxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgIHsuLi5yZXN0fVxuICAgICAgLz5cbiAgICA8L092ZXJsYXlQYW5lbD5cbiAgICApXG4gIClcbn1cblxuY29uc3QgUHJlbWl1bVBsYXllciA9ICh7XG4gIHNvdXJjZSxcbiAgc3RhcnRUaW1lLFxuICBxdWFsaXR5ID0ge30sXG4gIHRpdGxlLFxuICBtZXRhZGF0YSxcbiAgY2hhbm5lbFRpdGxlLFxuICBjaGFwdGVycyxcbiAgcGxheWJhY2tTdGF0ZTogYXBwUGxheWJhY2tTdGF0ZSxcbiAgY3VycmVudFRpbWU6IGFwcEN1cnJlbnRUaW1lLFxuICBwbGF5YmFja1JhdGU6IGFwcFBsYXliYWNrUmF0ZSxcbiAgbG9vcCxcbiAgdm9sdW1lOiBhcHBWb2x1bWUsXG4gIGF1ZGlvVHJhY2s6IGFwcEF1ZGlvVHJhY2ssXG4gIHRleHRUcmFjazogYXBwVGV4dFRyYWNrLFxuICB0aHVtYm5haWxzVXJsLFxuICBjb250cm9scyA9IHthdXRvaGlkZTogMzAwMH0sXG4gIG1hcmtzID0gW10sXG4gIC8vIFRPRE8gc2VjdGlvbklkXG4gIGludGwsXG4gIHNldHRpbmdzOiBhcHBTZXR0aW5ncyA9IGRlZmF1bHRTZXR0aW5ncyxcbiAgYmxvY2tpbmcsXG4gIHBsdWdpbnMgPSBbXSxcbiAgbW9kdWxlc0NvbmZpZyxcblxuICB1aVR5cGUgPSBpc0Rlc2t0b3AoKSA/ICdkZXNrdG9wJyA6ICdtb2JpbGUnLFxuICBzdHlsZSxcbiAgY2hpbGRyZW4sXG4gIHVpTW9kZSA9ICdzdGFuZGFsb25lJyxcbiAgY2FzdDogY2FzdE9wdGlvbnMgPSAnY29tcGF0aWJsZScsXG4gIHNsb3RzLFxuICBzbG90UHJvcHMgPSB7fSxcbiAgb25FcnJvcixcbiAgb25QbGF5YmFja1N0YXRlQ2hhbmdlLFxuICBvbkJhY2ssXG4gIG9uQ2FzdCxcbiAgb25DaGFuZ2VOZXh0LFxuICBvbkNoYW5nZVByZXZpb3VzLFxuICBvbk9wZW5TZXR0aW5ncyxcbiAgb25DaGFuZ2VTZXR0aW5ncyxcbiAgb25QbGF5ZXJMb2FkZWQsXG4gIG9uQmxvY2tlZEF1dG9wbGF5LFxuICBvblBsYXlsb2dGaXJlZCxcbiAgLi4udmlkZW9Qcm9wc1xufSkgPT4ge1xuICBjb25zdCBjb21wb25lbnRzID0ge1xuICAgIFZvbHVtZUNvbnRyb2wsXG4gICAgQ2FzdFVpLFxuICAgIERpc3BsYXlUaW1lLFxuICAgIExpdmVCdXR0b24sXG4gICAgU2Vla2JhcixcbiAgICBTZXR0aW5ncyxcbiAgICAuLi5zbG90cyxcbiAgfVxuICBjb25zdCB2aWRlb1JlZiA9IHVzZVJlZigpXG4gIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZigpXG4gIGNvbnN0IHBsYXllclJlZiA9IHVzZVJlZigpXG4gIGNvbnN0IGFkQ29udGFpbmVyUmVmID0gdXNlUmVmKClcbiAgY29uc3QgcmVmcyA9IHVzZVJlZih7fSlcbiAgLy8gVE9ETyBtb3ZlIFJXRCByZWxhdGVkIHRvIExheW91dFxuICBjb25zdCB7XG4gICAgY3VycmVudEJyZWFrcG9pbnQ6IHNpemUsXG4gICAgd2lkdGgsXG4gICAgb2JzZXJ2ZSxcbiAgfSA9IHVzZURpbWVuc2lvbnMoe1xuICAgIHBvbHlmaWxsOiBSZXNpemVPYnNlcnZlcixcbiAgICBicmVha3BvaW50czogc2l6ZXMsXG4gIH0pXG4gIGNvbnN0IFtpc1VzZXJBY3RpdmUsIHNldElzVXNlckFjdGl2ZV0gPSB1c2VTdGF0ZShcbiAgICB1aU1vZGUgPT09ICdzdGFuZGFsb25lJyA/IHRydWUgOiB2aWRlb1Byb3BzLmF1dG9wbGF5XG4gIClcbiAgY29uc3QgW3VzZXJGb2N1cywgc2V0VXNlckZvY3VzXSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBbdGFyZ2V0U3RhdGUsIHNldFRhcmdldFN0YXRlXSA9IHVzZVN0YXRlKCgpID0+ICh7XG4gICAgcGxheWJhY2tTdGF0ZTpcbiAgICAgIGFwcFBsYXliYWNrU3RhdGUgfHwgKHZpZGVvUHJvcHMuYXV0b3BsYXkgPyAncGxheWluZycgOiAncGF1c2VkJyksXG4gICAgY3VycmVudFRpbWU6IHN0YXJ0VGltZSxcbiAgfSkpXG4gIGNvbnN0IFtwbGF5YmFja1RpbWUsIHNldFBsYXliYWNrVGltZV0gPSB1c2VTdGF0ZSh7XG4gICAgY3VycmVudFRpbWU6IDAsXG4gICAgYnVmZmVyVGltZTogMCxcbiAgfSlcbiAgY29uc3QgdG9nZ2xlUGxheSA9IChvdmVycmlkZVN0YXRlLCB7dHJpZ2dlcmVkQnl9ID0ge30pID0+IHtcbiAgICBpZiAodGFyZ2V0U3RhdGUucGxheWJhY2tTdGF0ZSAhPT0gb3ZlcnJpZGVTdGF0ZSkge1xuICAgICAgc2V0VGFyZ2V0U3RhdGUoc3RhdGUgPT4gKHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHBsYXliYWNrU3RhdGU6IG92ZXJyaWRlU3RhdGUgfHwgZmxpcFN0YXRlKHN0YXRlLnBsYXliYWNrU3RhdGUpLFxuICAgICAgICBhbmltYXRpb246XG4gICAgICAgICAgdHJpZ2dlcmVkQnkgPT09ICd1c2VyLWFjdGlvbicgJiYgZmxpcFN0YXRlKHN0YXRlLnBsYXliYWNrU3RhdGUpLFxuICAgICAgfSkpXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYXBwUGxheWJhY2tTdGF0ZSkge1xuICAgICAgdG9nZ2xlUGxheShhcHBQbGF5YmFja1N0YXRlKVxuICAgIH1cbiAgfSwgW2FwcFBsYXliYWNrU3RhdGVdKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh1aVR5cGUgPT09ICdtb2JpbGUnKSB7XG4gICAgICBvbihkb2N1bWVudCwgJ3Zpc2liaWxpdHljaGFuZ2UnLCAoKSA9PiB0b2dnbGVQbGF5KCdwYXVzZWQnKSlcbiAgICB9XG4gIH0sIFt1aVR5cGUsIHRhcmdldFN0YXRlLnBsYXliYWNrU3RhdGVdKVxuICBjb25zdCB1cGRhdGVQbGF5YmFja1RpbWUgPSBldmVudCA9PlxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShcbiAgICAgICgpID0+XG4gICAgICAgIChldmVudD8udHlwZSAhPT0gJ3RpbWV1cGRhdGUnIHx8IGlzQnVmZmVyZWQodmlkZW9SZWYuY3VycmVudCkpICYmXG4gICAgICAgIHNldFBsYXliYWNrVGltZShzdGF0ZSA9PiAoe1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIC4uLmdldE1lZGlhVGltZSh2aWRlb1JlZi5jdXJyZW50LCB7XG4gICAgICAgICAgICBwbGF5ZXI6IHBsYXllclJlZi5jdXJyZW50LFxuICAgICAgICAgICAgcGx1Z2lucyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAuLi4oZXZlbnQ/LnR5cGUgPT09ICdkdXJhdGlvbmNoYW5nZScgJiYge1xuICAgICAgICAgICAgY3VycmVudFRpbWU6IHN0YXRlLmN1cnJlbnRUaW1lLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9KSlcbiAgICApXG4gIGNvbnN0IHNldFRhcmdldFRpbWUgPSB0aW1lID0+IHtcbiAgICBjb25zdCB0cmltbWVkID0gTWF0aC5taW4oXG4gICAgICB0aW1lLFxuICAgICAgdmlkZW9SZWYuY3VycmVudD8uaW5pdGlhbER1cmF0aW9uIHx8IEluZmluaXR5XG4gICAgKVxuICAgIHNldFRhcmdldFN0YXRlKHN0YXRlID0+ICh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIC8vIHNlZWsgdG8gMCByZXBlYXRlZGx5IGVkZ2UgY2FzZVxuICAgICAgY3VycmVudFRpbWU6IHN0YXRlLmN1cnJlbnRUaW1lICE9PSB0cmltbWVkID8gdHJpbW1lZCA6IHRyaW1tZWQgKyAwLjAxLFxuICAgIH0pKVxuICAgIHVwZGF0ZVBsYXliYWNrVGltZSgpXG4gIH1cbiAgY29uc3QgW3BsYXliYWNrU3RhdGUsIHNldFBsYXliYWNrU3RhdGVdID0gdXNlU3RhdGUoJ2luaXQnKVxuICBjb25zdCBbY2FzdFN0YXRlLCBzZXRDYXN0U3RhdGVdID0gdXNlU3RhdGUoJycpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBhcHBDdXJyZW50VGltZSA9PT0gJ251bWJlcicpIHNldFRhcmdldFRpbWUoYXBwQ3VycmVudFRpbWUgfHwgMClcbiAgICBpZiAodHlwZW9mIGFwcEN1cnJlbnRUaW1lID09PSAnb2JqZWN0JylcbiAgICAgIHNldFRhcmdldFRpbWUoYXBwQ3VycmVudFRpbWU/LnZhbHVlIHx8IDApXG4gIH0sIFthcHBDdXJyZW50VGltZV0pXG4gIGNvbnN0IFtlcnJvckRhdGEsIHNldEVycm9yRGF0YV0gPSB1c2VTdGF0ZSgpXG4gIGNvbnN0IGVycm9ySGFuZGxlciA9IHJlYWN0RXZlbnQgPT4ge1xuICAgIG9uRXJyb3I/LihyZWFjdEV2ZW50Lm5hdGl2ZUV2ZW50KVxuICAgIGhhbmRsZUVycm9yKHJlYWN0RXZlbnQsIHtcbiAgICAgIG1lZGlhOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgICAgZGlzcGxheUVycm9yOiBkYXRhID0+IHtcbiAgICAgICAgc2V0UGxheWJhY2tTdGF0ZSgnZXJyb3InKVxuICAgICAgICBzZXRFcnJvckRhdGEoY3VycmVudCA9PiAoY3VycmVudD8uY29kZSA/IGN1cnJlbnQgOiBkYXRhKSlcbiAgICAgIH0sXG4gICAgfSlcbiAgfVxuICBjb25zdCBpc0xpdmUgPSBwbGF5YmFja1RpbWUuc3RyZWFtVHlwZSA9PT0gJ2xpdmUnXG4gIGNvbnN0IFtzZXR0aW5ncywgc2V0U2V0dGluZ3NdID0gdXNlU3RhdGUoKCkgPT4gKHtcbiAgICBzZWN0aW9uczogW10sXG4gICAgdmFsdWVzOiB7c3BlZWQ6IDF9LFxuICB9KSlcbiAgY29uc3QgZmV0Y2hTZXR0aW5ncyA9ICgpID0+IHtcbiAgICBpZiAoIXBsYXllclJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3Qgc3BlZWRJdGVtcyA9IGFwcFNldHRpbmdzLnNwZWVkSXRlbXMgfHwgKGlzTGl2ZSA/IFtdIDogdW5kZWZpbmVkKVxuICAgIHNldFNldHRpbmdzKGN1cnJlbnQgPT4ge1xuICAgICAgY29uc3Qge3ZhbHVlcywgc2VjdGlvbnN9ID0gZ2V0U2V0dGluZ3NEYXRhKHtcbiAgICAgICAgbWVkaWE6IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgICAgIHBsYXllcjogcGxheWVyUmVmLmN1cnJlbnQsXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgcXVhbGl0eSxcbiAgICAgICAgc3BlZWRJdGVtcyxcbiAgICAgICAgbG9vcCxcbiAgICAgICAgcHJlZmVycmVkOiBjdXJyZW50LnByZWZlcnJlZCxcbiAgICAgICAgb3RoZXJTZWN0aW9uczogYXBwU2V0dGluZ3Muc2VjdGlvbnMsXG4gICAgICB9KVxuICAgICAgcmV0dXJuIHtwcmVmZXJyZWQ6IGN1cnJlbnQucHJlZmVycmVkLCB2YWx1ZXMsIHNlY3Rpb25zfVxuICAgIH0pXG4gIH1cbiAgY29uc3QgbGFzdFN0YXRlID0gdXNlUmVmKHBsYXliYWNrU3RhdGUpXG4gIGNvbnN0IGhhbmRsZVBsYXliYWNrU3RhdGVDaGFuZ2UgPSAoZXZlbnQsIHN0YXRlKSA9PiB7XG4gICAgaWYgKGxhc3RTdGF0ZS5jdXJyZW50ID09PSAnZXJyb3InKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgb25QbGF5YmFja1N0YXRlQ2hhbmdlPy4oZXZlbnQsIHN0YXRlKVxuICAgIC8vIHByZXZpb3VzbHkgVUkgcGxheWJhY2sgc3RhdGUgd2FzIHN5bmNlZCBvbmx5IHdoZW5cbiAgICAvLyBleGl0aW5nIGlPUyB2aWRlbyBvbmx5IGZ1bGxzY3JlZW4od2Via2l0ZW5kZnVsbHNjcmVlbilcbiAgICBpZiAoXG4gICAgICAvcGxheWluZ3xwYXVzZWQvLnRlc3Qoc3RhdGUpICYmXG4gICAgICAhKHVpVHlwZSA9PT0gJ21vYmlsZScgJiYgYmxvY2tpbmcpICYmXG4gICAgICAhc2hvdWxkUGF1c2Uoe3VzZXJGb2N1cywgdWlUeXBlfSlcbiAgICApIHtcbiAgICAgIHRvZ2dsZVBsYXkoc3RhdGUpXG4gICAgfVxuICAgIGlmIChzdGF0ZSA9PT0gJ2VuZGVkJykge1xuICAgICAgdG9nZ2xlUGxheSgncGF1c2VkJylcbiAgICB9XG4gICAgaWYgKHN0YXRlID09PSAnbG9hZGluZycgJiYgbGFzdFN0YXRlLmN1cnJlbnQgIT09ICdpbml0Jykge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0b2dnbGVQbGF5KCdwbGF5aW5nJyksIDEpXG4gICAgfVxuICAgIGlmIChzdGF0ZSA9PT0gJ3BsYXlpbmcnKSB7XG4gICAgICBzZXRJc1VzZXJBY3RpdmUodHJ1ZSlcbiAgICB9XG4gICAgaWYgKGxhc3RTdGF0ZS5jdXJyZW50ID09PSAnbG9hZGluZycpIHtcbiAgICAgIGZldGNoU2V0dGluZ3MoKVxuICAgIH1cbiAgICBsYXN0U3RhdGUuY3VycmVudCA9IHN0YXRlXG4gICAgc2V0UGxheWJhY2tTdGF0ZShzdGF0ZSlcbiAgfVxuXG4gIGNvbnN0IGNoYW5nZVNldHRpbmdzID0gKG5hbWUsIHZhbHVlLCB7a2VlcE9wZW59ID0ge30pID0+IHtcbiAgICAvLyBUT0RPIGNvbnNpZGVyIG1lcmdlIGludG8gdXNlUmVkdWNlcj9cbiAgICBvbkNoYW5nZVNldHRpbmdzPy4oe25hbWUsIHZhbHVlfSlcbiAgICBzZXRUYXJnZXRUaW1lKHBsYXliYWNrVGltZS5jdXJyZW50VGltZSlcbiAgICBzZXRTZXR0aW5ncyhjdXJyZW50ID0+ICh7XG4gICAgICAuLi5jdXJyZW50LFxuICAgICAgdmFsdWVzOiB7Li4uY3VycmVudC52YWx1ZXMsIFtuYW1lXTogdmFsdWV9LFxuICAgICAgcHJlZmVycmVkOiB7Li4uY3VycmVudC5wcmVmZXJyZWQsIFtuYW1lXTogdmFsdWV9LFxuICAgIH0pKVxuICAgIGlmICgha2VlcE9wZW4pIHtcbiAgICAgIHNldFVzZXJGb2N1cygnJylcbiAgICB9XG4gIH1cbiAgY29uc3Qgb3BlblNldHRpbmdzID0gZXZlbnQgPT4ge1xuICAgIGNvbnN0IGFuaW1hdGlvbkZyYW1lID1cbiAgICAgIHVzZXJGb2N1cyAhPT0gJ3NldHRpbmdzJyAmJlxuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgb25PcGVuU2V0dGluZ3M/LihldmVudCwgc2V0dGluZ3MpXG4gICAgICAgIC8vIEluIGlPUyBTYWZhcmksIHdlIG5lZWQgdG8gdXBkYXRlIHNldHRpbmdzIGRhdGFcbiAgICAgICAgZmV0Y2hTZXR0aW5ncygpXG4gICAgICB9KVxuICAgIHNldFVzZXJGb2N1cyhjdXJyZW50ID0+IChjdXJyZW50ID09PSAnc2V0dGluZ3MnID8gJycgOiAnc2V0dGluZ3MnKSlcbiAgICByZXR1cm4gYW5pbWF0aW9uRnJhbWVcbiAgfVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChhcHBQbGF5YmFja1JhdGUgPiAwKSB7XG4gICAgICBzZXRTZXR0aW5ncyhjdXJyZW50ID0+ICh7XG4gICAgICAgIC4uLmN1cnJlbnQsXG4gICAgICAgIHZhbHVlczogey4uLmN1cnJlbnQudmFsdWVzLCBzcGVlZDogYXBwUGxheWJhY2tSYXRlfSxcbiAgICAgIH0pKVxuICAgIH1cbiAgfSwgW2FwcFBsYXliYWNrUmF0ZV0pXG5cbiAgY29uc3QgcXVhbGl0eU9wdGlvbnMgPSB1c2VNZW1vKFxuICAgICgpID0+IGdldFF1YWxpdHlPcHRpb25zKHNldHRpbmdzKSxcbiAgICBbc2V0dGluZ3MudmFsdWVzLnF1YWxpdHldXG4gIClcbiAgY29uc3Qgdmlld01vZGUgPSB1c2VMaW5rU3RhdGUodXBkYXRlID0+XG4gICAgb25WaWV3TW9kZUNoYW5nZSh2aWRlb1JlZi5jdXJyZW50LCB1cGRhdGUpXG4gIClcbiAgY29uc3Qgc291cmNlT3ZlcnJpZGUgPSB1c2VMaW5rU3RhdGUoXG4gICAgYXN5bmMgdXBkYXRlID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9XG4gICAgICAgIHNvdXJjZSAmJiAoYXdhaXQgcXVhbGl0eS5yZXdyaXRlTWFuaWZlc3Q/Lihzb3VyY2UsIHF1YWxpdHlPcHRpb25zKSlcbiAgICAgIHVwZGF0ZShyZXN1bHQgfHwgc291cmNlKVxuICAgIH0sXG4gICAgW3NvdXJjZSwgcXVhbGl0eU9wdGlvbnNdXG4gIClcbiAgY29uc3Qgd2FpdGluZyA9IC9lbXB0aWVkfGxvYWRpbmd8YnVmZmVyaW5nLy50ZXN0KHBsYXliYWNrU3RhdGUpXG4gIGNvbnN0IGFjdGl2ZVBsYXliYWNrID1cbiAgICBwbGF5YmFja1N0YXRlID09PSAncGxheWluZycgfHwgcGxheWJhY2tTdGF0ZSA9PT0gJ3dhaXRpbmcnXG4gIGNvbnN0IHtcbiAgICBtb2RlOiBhdXRvSGlkZU1vZGUsXG4gICAgb25DbGljayxcbiAgICBvbk1vdXNlTW92ZSxcbiAgfSA9IHVzZUF1dG9IaWRlKHtcbiAgICBwaW5uZWQ6ICFjb250cm9scy5hdXRvaGlkZSB8fCB3YWl0aW5nIHx8ICFhY3RpdmVQbGF5YmFjayB8fCB1c2VyRm9jdXMsXG4gICAgdGFwVG9IaWRlOiB1aVR5cGUgPT09ICdtb2JpbGUnLFxuICAgIGhpZGVUaW1lTXM6IGNvbnRyb2xzLmF1dG9oaWRlLFxuICB9KVxuICBjb25zdCBtb2RlID1cbiAgICB1c2VyRm9jdXMgPT09ICdzZWVrYmFyJ1xuICAgICAgPyAnaGlkZGVuJ1xuICAgICAgOiBjb250cm9scy5hdXRvaGlkZVxuICAgICAgPyBhdXRvSGlkZU1vZGVcbiAgICAgIDogY29udHJvbHNcbiAgICAgID8gJ3Nob3duJ1xuICAgICAgOiAnaGlkZGVuJ1xuICBjb25zdCBjb250cm9sc0Rpc3BsYXkgPVxuICAgIHVzZXJGb2N1cyA9PT0gJ3NlZWtiYXInXG4gICAgICA/ICdzZWVrYmFyLW9ubHknXG4gICAgICA6IGNvbnRyb2xzID09PSAndGl0bGUtb25seScgfHwgcGxheWJhY2tTdGF0ZSA9PT0gJ2VtcHRpZWQnXG4gICAgICA/ICdoaWRkZW4nXG4gICAgICA6IG1vZGVcbiAgY29uc3Qgc2hvdWxkSGlkZVBhbmVscyA9XG4gICAgKGNvbnRyb2xzID09PSAnbm8tcGFuZWwnIHx8IGNvbnRyb2xzRGlzcGxheSA9PT0gJ2hpZGRlbicpICYmIHVzZXJGb2N1c1xuICBjb25zdCBoYXZlUGxheVBhbmVsID1cbiAgICAhYmxvY2tpbmcgJiZcbiAgICBoYXZlUG9pbnRlcigpICYmXG4gICAgdWlUeXBlID09PSAnZGVza3RvcCcgJiZcbiAgICAhd2FpdGluZyAmJlxuICAgICEvdm9sdW1lfCcnLy50ZXN0KHVzZXJGb2N1cykgJiZcbiAgICAhL3RpdGxlLW9ubHl8bm8tcGFuZWwvLnRlc3QoY29udHJvbHMpICYmXG4gICAgKGNvbnRyb2xzLmF1dG9oaWRlIHx8IG1vZGUgPT09ICdzaG93bicpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoc2hvdWxkSGlkZVBhbmVscykge1xuICAgICAgc2V0VXNlckZvY3VzKCcnKVxuICAgIH1cbiAgfSwgW3Nob3VsZEhpZGVQYW5lbHNdKVxuICBjb25zdCB7c3Vic2NyaWJlLCBvbkNoYW5nZSwgdG9nZ2xlTXV0ZX0gPSBsaW5rTWVkaWFWb2x1bWUoKCkgPT4gKHtcbiAgICB2aWRlbzogdmlkZW9SZWYuY3VycmVudCxcbiAgICBnZXRQbGF5ZXI6ICgpID0+IHBsYXllclJlZi5jdXJyZW50LFxuICB9KSlcbiAgY29uc3QgY2hhbmdlUHJldmlvdXMgPSBldmVudCA9PiB7XG4gICAgb25DaGFuZ2VQcmV2aW91cyhldmVudClcbiAgICB0b2dnbGVQbGF5KCdwYXVzZWQnKVxuICAgIHZpZGVvUmVmLmN1cnJlbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2xvYWRzdGFydCcpKVxuICB9XG4gIGNvbnN0IGNoYW5nZU5leHQgPSBldmVudCA9PiB7XG4gICAgb25DaGFuZ2VOZXh0KGV2ZW50KVxuICAgIHRvZ2dsZVBsYXkoJ3BhdXNlZCcpXG4gICAgdmlkZW9SZWYuY3VycmVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnbG9hZHN0YXJ0JykpXG4gIH1cblxuICB1c2VFZmZlY3QoZmV0Y2hTZXR0aW5ncywgW2FwcFNldHRpbmdzXSlcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBUaGUgYWRDb250YWluZXIgc2hvdWxkIGJlIHNldCBiZWZvcmUgYGxvYWRgIGJlY2F1c2UgSW1hRGFpLmxvYWQgbmVlZHMgaXQuXG4gICAgcGx1Z2lucy5mb3JFYWNoKHBsdWdpbiA9PiBwbHVnaW4uc2V0QWRDb250YWluZXI/LihhZENvbnRhaW5lclJlZi5jdXJyZW50KSlcbiAgfSwgW10pXG5cbiAgdXNlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICBkaXNwYXRjaENoYXB0ZXJFdmVudHMoe1xuICAgICAgICBtZWRpYTogdmlkZW9SZWYuY3VycmVudCxcbiAgICAgICAgY2hhcHRlcnMsXG4gICAgICAgIGdldFRpbWU6ICgpID0+IHZpZGVvUmVmLmN1cnJlbnQuY3VycmVudFRpbWUsXG4gICAgICB9KSxcbiAgICBbY2hhcHRlcnNdXG4gIClcblxuICBjb25zdCBpc0VuZCA9IHBsYXliYWNrU3RhdGUgPT09ICdlbmRlZCdcbiAgY29uc3QgY2FuU2VlayA9ICFpc0VuZCAmJiBwbGF5YmFja1RpbWUuZHVyYXRpb24gPiAwXG4gIGNvbnN0IGRlcml2ZWRQbGF5YmFja1N0YXRlID1cbiAgICAodWlUeXBlID09PSAnbW9iaWxlJyAmJiBibG9ja2luZykgfHwgc2hvdWxkUGF1c2Uoe3VzZXJGb2N1cywgdWlUeXBlfSlcbiAgICAgID8gJ3BhdXNlZCdcbiAgICAgIDogdGFyZ2V0U3RhdGUucGxheWJhY2tTdGF0ZVxuICBjb25zdCBhY3RpdmVUaHVtYm5haWxzVXJsID1cbiAgICAoIXVzZXJGb2N1cyB8fCB1c2VyRm9jdXMgPT09ICdzZWVrYmFyJykgJiZcbiAgICAoZ2V0VGh1bWJuYWlsc1VybChzb3VyY2UpIHx8IHRodW1ibmFpbHNVcmwpXG4gIGNvbnN0IGNzc1ZhcmlhYmxlcyA9IHtcbiAgICAnLS1wbGF5aW5nJzogcGxheWJhY2tTdGF0ZSA9PT0gJ3BsYXlpbmcnID8gJzEnIDogJzAnLFxuICB9XG4gIGNvbnN0IG9uUmV3aW5kID1cbiAgICAoIWlzTGl2ZSB8fCBwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgPCAwKSAmJlxuICAgIGNhblNlZWsgJiZcbiAgICAoKCkgPT4gc2V0VGFyZ2V0VGltZShwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgLSAxMCwgJ3Jld2luZCcpKVxuICBjb25zdCBvbkZvcndhcmQgPVxuICAgICghaXNMaXZlIHx8IHBsYXliYWNrVGltZS5jdXJyZW50VGltZSA8IDApICYmXG4gICAgY2FuU2VlayAmJlxuICAgICgoKSA9PiBzZXRUYXJnZXRUaW1lKHBsYXliYWNrVGltZS5jdXJyZW50VGltZSArIDEwLCAnZm9yd2FyZCcpKVxuICBjb25zdCBvbkNsaWNrQmxhbmsgPVxuICAgIGhhdmVQbGF5UGFuZWwgJiYgKCgpID0+IHRvZ2dsZVBsYXkoJycsIHt0cmlnZ2VyZWRCeTogJ3VzZXItYWN0aW9uJ30pKVxuXG4gIGNvbnN0IHVpSGFuZGxlcnMgPSB7XG4gICAgb25QbGF5OiAoKSA9PiB7XG4gICAgICB0b2dnbGVQbGF5KCcnLCB7dHJpZ2dlcmVkQnk6ICd1c2VyLWFjdGlvbid9KVxuICAgICAgc2V0SXNVc2VyQWN0aXZlKHRydWUpXG4gICAgfSxcbiAgICBvbkNsaWNrTGl2ZTogaXNMaXZlICYmICgoKSA9PiBzZXRUYXJnZXRUaW1lKDAsICdzZWVrVG9MaXZlJykpLFxuICAgIG9uQ2xpY2tTZWVrYmFyOiAoKSA9PiB7XG4gICAgICByZWZzLmN1cnJlbnQuZGVmZXJlZFNlZWtGb2N1cyA9IHNldFRpbWVvdXQoXG4gICAgICAgICgpID0+IHNldFVzZXJGb2N1cygnc2Vla2JhcicpLFxuICAgICAgICA2NlxuICAgICAgKVxuICAgIH0sXG4gICAgb25TZWVrOiB0aW1lID0+IHtcbiAgICAgIHNldFRhcmdldFRpbWUodGltZSwgJ3NlZWsnKVxuICAgICAgY2xlYXJUaW1lb3V0KHJlZnMuY3VycmVudC5kZWZlcmVkU2Vla0ZvY3VzKVxuICAgICAgc2V0VGltZW91dCgoKSA9PiBzZXRVc2VyRm9jdXMoJycpLCA2NilcbiAgICB9LFxuICAgIG9uQ2hhbmdlU2V0dGluZ3M6ICh7bmFtZSwgdmFsdWUsIGtlZXBPcGVufSkgPT5cbiAgICAgIGNoYW5nZVNldHRpbmdzKG5hbWUsIHZhbHVlLCB7a2VlcE9wZW59KSxcbiAgICBvbkNsb3NlU2V0dGluZ3M6IGV2ZW50ID0+IHtcbiAgICAgIHNldFVzZXJGb2N1cygnJylcbiAgICAgIHNsb3RQcm9wcz8uc2V0dGluZ3M/Lm9uQ2xvc2U/LihldmVudClcbiAgICB9LFxuICB9XG5cbiAgY29uc3QgdWlFbGVtZW50cyA9IHtcbiAgICBsaXZlQnV0dG9uOiB1aUhhbmRsZXJzLm9uQ2xpY2tMaXZlICYmIChcbiAgICAgIDxjb21wb25lbnRzLkxpdmVCdXR0b25cbiAgICAgICAgdXNpbmdTdGFydE92ZXI9e3BsYXliYWNrVGltZS5jdXJyZW50VGltZSA8IDB9XG4gICAgICAgIG9uQ2xpY2s9e3VpSGFuZGxlcnMub25DbGlja0xpdmV9XG4gICAgICAvPlxuICAgICksXG4gICAgY29udHJvbEJ1dHRvbnM6IHtcbiAgICAgIHBsYXlCdXR0b246IChcbiAgICAgICAgPFBsYXlCdXR0b25cbiAgICAgICAgICBwbGF5YmFja1N0YXRlPXtkZXJpdmVkUGxheWJhY2tTdGF0ZX1cbiAgICAgICAgICBlbmRlZD17aXNFbmR9XG4gICAgICAgICAgaGlkZGVuPXtcbiAgICAgICAgICAgIHVpVHlwZSA9PT0gJ21vYmlsZScgJiYgKHdhaXRpbmcgfHwgL2xvYWRpbmcvLnRlc3QocGxheWJhY2tTdGF0ZSkpXG4gICAgICAgICAgfVxuICAgICAgICAgIHZhcmlhbnQ9eyFpc1VzZXJBY3RpdmUgJiYgJ2ZpcnN0cGxheSd9XG4gICAgICAgICAgb25DbGljaz17dWlIYW5kbGVycy5vblBsYXl9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgICAgcmV3aW5kQnV0dG9uOiBvblJld2luZCAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBzdGFydEljb249XCJyZXdpbmQxMFwiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLlJFV0lORFwiXG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRW5kfVxuICAgICAgICAgIG9uQ2xpY2s9e29uUmV3aW5kfVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIGZvcndhcmRCdXR0b246IG9uRm9yd2FyZCAmJiAoXG4gICAgICAgIDxGb3J3YXJkQnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwiZm9yd2FyZDEwXCJcbiAgICAgICAgICB0aXRsZT1cIktLUy5QTEFZRVIuRk9SV0FSRFwiXG4gICAgICAgICAgZGlzYWJsZWQ9eyFjYW5TZWVrfVxuICAgICAgICAgIG9uQ2xpY2s9e29uRm9yd2FyZH1cbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgICBuZXh0RXBpc29kZUJ1dHRvbjogKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwibmV4dFwiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLk5FWFRcIlxuICAgICAgICAgIGRpc2FibGVkPXshb25DaGFuZ2VOZXh0fVxuICAgICAgICAgIG9uQ2xpY2s9e2NoYW5nZU5leHR9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgICAgcHJldmlvdXNFcGlzb2RlQnV0dG9uOiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBzdGFydEljb249XCJwcmV2aW91c1wiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLlBSRVZJT1VTXCJcbiAgICAgICAgICBkaXNhYmxlZD17IW9uQ2hhbmdlUHJldmlvdXN9XG4gICAgICAgICAgb25DbGljaz17Y2hhbmdlUHJldmlvdXN9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgIH0sXG4gICAgc2Vla2JhcjogKFxuICAgICAgPGNvbXBvbmVudHMuU2Vla2JhclxuICAgICAgICBzdHlsZT17L3ZvbHVtZS8udGVzdCh1c2VyRm9jdXMpICYmIHtvcGFjaXR5OiAnMCd9fVxuICAgICAgICBzdGFydFRpbWU9e3BsYXliYWNrVGltZS5zdGFydFRpbWV9XG4gICAgICAgIGN1cnJlbnRUaW1lPXtwbGF5YmFja1RpbWUuY3VycmVudFRpbWV9XG4gICAgICAgIGJ1ZmZlclRpbWU9e3BsYXliYWNrVGltZS5idWZmZXJUaW1lfVxuICAgICAgICBkdXJhdGlvbj17cGxheWJhY2tUaW1lLmR1cmF0aW9ufVxuICAgICAgICBjaGFwdGVycz17Y2hhcHRlcnN9XG4gICAgICAgIG9uQ2hhbmdlPXt1aUhhbmRsZXJzLm9uQ2xpY2tTZWVrYmFyfVxuICAgICAgICBvbkNoYW5nZUNvbW1pdHRlZD17dWlIYW5kbGVycy5vblNlZWt9XG4gICAgICAgIG1hcmtzPXttYXJrc31cbiAgICAgICAgcGx1Z2lucz17cGx1Z2luc31cbiAgICAgICAgey4uLnNsb3RQcm9wcy5zZWVrYmFyfVxuICAgICAgPlxuICAgICAgICB7YWN0aXZlVGh1bWJuYWlsc1VybCAmJiAoXG4gICAgICAgICAgPFNlZWtQcmV2aWV3XG4gICAgICAgICAgICB0aHVtYm5haWxzVXJsPXthY3RpdmVUaHVtYm5haWxzVXJsfVxuICAgICAgICAgICAgZHVyYXRpb249e3BsYXliYWNrVGltZS5kdXJhdGlvbn1cbiAgICAgICAgICAgIGNoYXB0ZXJzPXtjaGFwdGVyc31cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9jb21wb25lbnRzLlNlZWtiYXI+XG4gICAgKSxcbiAgICBkaXNwbGF5VGltZTogPGNvbXBvbmVudHMuRGlzcGxheVRpbWUgey4uLnBsYXliYWNrVGltZX0gLz4sXG4gICAgZnVsbHNjcmVlbkJ1dHRvbjogKFxuICAgICAgPEZ1bGxzY3JlZW5CdXR0b25cbiAgICAgICAgdmlld01vZGU9e3ZpZXdNb2RlfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiB0b2dnbGVGdWxsc2NyZWVuKGNvbnRhaW5lclJlZi5jdXJyZW50KX1cbiAgICAgIC8+XG4gICAgKSxcbiAgICB2b2x1bWVDb250cm9sOiB3aWR0aCA+PSBzaXplc1snc21hbGwtZW1iZWQnXSAmJiAoXG4gICAgICA8Y29tcG9uZW50cy5Wb2x1bWVDb250cm9sXG4gICAgICAgIHsuLi57c3Vic2NyaWJlLCBvbkNoYW5nZSwgdG9nZ2xlTXV0ZX19XG4gICAgICAgIG9uTW91c2VPdmVyPXsoKSA9PiBzZXRVc2VyRm9jdXMoJ3ZvbHVtZScpfVxuICAgICAgICBvbk1vdXNlT3V0PXsoKSA9PiBzZXRVc2VyRm9jdXMoJycpfVxuICAgICAgICB7Li4uc2xvdFByb3BzPy52b2x1bWVDb250cm9sfVxuICAgICAgLz5cbiAgICApLFxuICAgIGJhY2tJdGVtczogKFxuICAgICAgPFBsYXlQYW5lbCBhbmltYXRpb249e3RhcmdldFN0YXRlLmFuaW1hdGlvbn0gb25DbGljaz17b25DbGlja0JsYW5rfSAvPlxuICAgICksXG4gIH1cbiAgY29uc3QgY29tcGF0aWJpbGl0eUNhc3RQcm9wcyA9IGNhc3RPcHRpb25zID09PSAnY29tcGF0aWJsZScgJiYge1xuICAgIHNvdXJjZSxcbiAgICB2YWx1ZXM6IHt0aXRsZSwgLi4uc2V0dGluZ3MudmFsdWVzLCAuLi5pbnRsLCBtb2R1bGVzQ29uZmlnfSxcbiAgICBvbkxvYWQ6IG9uQ2FzdCxcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGNhc3RPcHRpb25zICYmIGNhc3RPcHRpb25zICE9PSAnY29tcGF0aWJsZScpIHtcbiAgICAgIHJldHVybiBsaW5rQ2FzdCh7c291cmNlLCAuLi5jYXN0T3B0aW9uc30pXG4gICAgfSAvLyBUT0RPIHBsYXlsaXN0LCBhdWRpbyAvIHN1YnRpdGxlIHNldHRpbmdcbiAgfSwgW3NvdXJjZSwgY2FzdE9wdGlvbnMuY29udGVudElkLCBjYXN0T3B0aW9ucy5jdXN0b21EYXRhXSlcbiAgY29uc3Qgc2VsZWN0ZWRBdWRpb1RyYWNrID0gc2V0dGluZ3MucHJlZmVycmVkPy5hdWRpbyB8fCBhcHBBdWRpb1RyYWNrXG4gIGNvbnN0IHNlbGVjdGVkVGV4dFRyYWNrID0gc2V0dGluZ3MucHJlZmVycmVkPy5zdWJ0aXRsZXMgfHwgYXBwVGV4dFRyYWNrXG5cbiAgcmV0dXJuIChcbiAgICA8SW50bFByb3ZpZGVyIHsuLi5pbnRsfT5cbiAgICAgIDxMYXlvdXRcbiAgICAgICAgc3R5bGU9e3suLi5zdHlsZSwgY3NzVmFyaWFibGVzfX1cbiAgICAgICAgdHlwZT17dWlUeXBlfVxuICAgICAgICBkaXNwbGF5PXttb2RlfVxuICAgICAgICBjb250cm9sc0Rpc3BsYXk9e2NvbnRyb2xzRGlzcGxheX1cbiAgICAgICAgc2l6ZT17c2l6ZX1cbiAgICAgICAgdmlkZW89e1xuICAgICAgICAgIDxWaWRlb1xuICAgICAgICAgICAgey4uLnZpZGVvUHJvcHN9XG4gICAgICAgICAgICB2aWRlb1JlZj17bXVsdGlSZWYodmlkZW9SZWYsIHZpZGVvUHJvcHMudmlkZW9SZWYpfVxuICAgICAgICAgICAgc291cmNlPXtcbiAgICAgICAgICAgICAgY2FzdFN0YXRlICE9PSBDYXN0U3RhdGUuQ09OTkVDVEVEICYmXG4gICAgICAgICAgICAgIHBsYXliYWNrU3RhdGUgIT09ICdlcnJvcicgJiZcbiAgICAgICAgICAgICAgc291cmNlT3ZlcnJpZGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBsYXliYWNrU3RhdGU9e2Rlcml2ZWRQbGF5YmFja1N0YXRlfVxuICAgICAgICAgICAgY3VycmVudFRpbWU9e3RhcmdldFN0YXRlLmN1cnJlbnRUaW1lfVxuICAgICAgICAgICAgey4uLihhcHBWb2x1bWUgPj0gMCAmJiB7dm9sdW1lOiBhcHBWb2x1bWUsIG11dGVkOiBhcHBWb2x1bWUgPD0gMH0pfVxuICAgICAgICAgICAgcGxheWJhY2tSYXRlPXtzZXR0aW5ncy52YWx1ZXMuc3BlZWR9XG4gICAgICAgICAgICB2aWRlb1Jlc29sdXRpb249e3F1YWxpdHlPcHRpb25zfVxuICAgICAgICAgICAgYXVkaW9UcmFjaz17c2VsZWN0ZWRBdWRpb1RyYWNrfVxuICAgICAgICAgICAgdGV4dFRyYWNrPXtzZWxlY3RlZFRleHRUcmFja31cbiAgICAgICAgICAgIGxvb3A9e3NldHRpbmdzLnZhbHVlcy5sb29wfVxuICAgICAgICAgICAgcGx1Z2lucz17cGx1Z2luc31cbiAgICAgICAgICAgIG1vZHVsZXNDb25maWc9e21vZHVsZXNDb25maWd9XG4gICAgICAgICAgICBvblBsYXlsb2dGaXJlZD17b25QbGF5bG9nRmlyZWR9XG4gICAgICAgICAgICBvbkVycm9yPXtlcnJvckhhbmRsZXJ9XG4gICAgICAgICAgICBvblBsYXliYWNrU3RhdGVDaGFuZ2U9e2hhbmRsZVBsYXliYWNrU3RhdGVDaGFuZ2V9XG4gICAgICAgICAgICBvbkJsb2NrZWRBdXRvcGxheT17ZXJyb3IgPT4gb25CbG9ja2VkQXV0b3BsYXk/LihlcnJvcil9XG4gICAgICAgICAgICBvbkNhblBsYXk9e2V2ZW50ID0+IHtcbiAgICAgICAgICAgICAgdXBkYXRlUGxheWJhY2tUaW1lKGV2ZW50KVxuICAgICAgICAgICAgICB2aWRlb1Byb3BzLm9uQ2FuUGxheT8uKGV2ZW50KVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9uVGltZVVwZGF0ZT17dXBkYXRlUGxheWJhY2tUaW1lfVxuICAgICAgICAgICAgb25EdXJhdGlvbkNoYW5nZT17dXBkYXRlUGxheWJhY2tUaW1lfVxuICAgICAgICAgICAgb25QbGF5ZXJMb2FkZWQ9e3BsYXllciA9PiB7XG4gICAgICAgICAgICAgIHBsYXllclJlZi5jdXJyZW50ID0gcGxheWVyXG4gICAgICAgICAgICAgIG9uUGxheWVyTG9hZGVkPy4ocGxheWVyKVxuICAgICAgICAgICAgICBzeW5jVm9sdW1lKHZpZGVvUmVmLmN1cnJlbnQsIHZpZGVvUHJvcHMubXV0ZWQgPyAwIDogYXBwVm9sdW1lKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgICAgIGNvbnRhaW5lclJlZj17ZWxlbWVudCA9PiB7XG4gICAgICAgICAgY29udGFpbmVyUmVmLmN1cnJlbnQgPSBlbGVtZW50XG4gICAgICAgICAgb2JzZXJ2ZShlbGVtZW50KVxuICAgICAgICB9fVxuICAgICAgICBiYWNrUmVmPXthZENvbnRhaW5lclJlZn1cbiAgICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgICBjaGFubmVsVGl0bGU9e2NoYW5uZWxUaXRsZX1cbiAgICAgICAgYmFja0J1dHRvbj17b25CYWNrICYmIDxCdXR0b24gc3RhcnRJY29uPVwiYmFja1wiIG9uQ2xpY2s9e29uQmFja30gLz59XG4gICAgICAgIHsuLi4oaXNVc2VyQWN0aXZlICYmIHVpRWxlbWVudHMpfVxuICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgICBvbk1vdXNlTW92ZT17b25Nb3VzZU1vdmV9XG4gICAgICA+XG4gICAgICAgIDxMb2FkaW5nU3Bpbm5lciBhY3RpdmU9e3dhaXRpbmd9IC8+XG4gICAgICAgIHtlcnJvckRhdGEgJiYgPEVycm9yIGVycm9yPXtlcnJvckRhdGF9IG9uQmFjaz17b25CYWNrfSAvPn1cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgICB7LyogVE9ETyBzeW5jIENhc3QgbGFzdCBwbGF5ZWQgdGltZSBiYWNrICovfVxuICAgICAgICB7aXNVc2VyQWN0aXZlICYmIChcbiAgICAgICAgICA8Y29tcG9uZW50cy5DYXN0VWlcbiAgICAgICAgICAgIG9uQmFjaz17b25CYWNrfVxuICAgICAgICAgICAgb25TdGF0ZUNoYW5nZT17c2V0Q2FzdFN0YXRlfVxuICAgICAgICAgICAgb25Mb2FkPXtvbkNhc3R9XG4gICAgICAgICAgICB7Li4uY29tcGF0aWJpbGl0eUNhc3RQcm9wc31cbiAgICAgICAgICAgIHsuLi5zbG90UHJvcHMuY2FzdFVpfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHtpc1VzZXJBY3RpdmUgJiYgKCAvLyBUT0RPOiBEZXNpZ24gPEV4dGVuc3Rpb24gLz4gZmxhZ1xuICAgICAgICAgIDxjb21wb25lbnRzLlNldHRpbmdzXG4gICAgICAgICAgICB0eXBlPXt1aVR5cGV9XG4gICAgICAgICAgICBzZWN0aW9ucz17c2V0dGluZ3Muc2VjdGlvbnN9XG4gICAgICAgICAgICAvLyBUT0RPIGhhc0JvdHRvbVBhbmVsIGJvdHRvbTogOGVtXG4gICAgICAgICAgICBvcGVuPXt1c2VyRm9jdXMgPT09ICdzZXR0aW5ncyd9XG4gICAgICAgICAgICB2YWx1ZXM9e3NldHRpbmdzLnZhbHVlc31cbiAgICAgICAgICAgIG9uT3Blbj17b3BlblNldHRpbmdzfVxuICAgICAgICAgICAgb25DaGFuZ2U9e3VpSGFuZGxlcnMub25DaGFuZ2VTZXR0aW5nc31cbiAgICAgICAgICAgIHsuLi5zbG90UHJvcHM/LnNldHRpbmdzfVxuICAgICAgICAgICAgb25DbG9zZT17dWlIYW5kbGVycy5vbkNsb3NlU2V0dGluZ3N9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAgPExhbmd1YWdlU2V0dGluZ3NcbiAgICAgICAgICB1aVR5cGU9e3VpVHlwZX1cbiAgICAgICAgICBnZXRQbGF5ZXI9eygpID0+IHBsYXllclJlZi5jdXJyZW50fVxuICAgICAgICAgIG9uQ2hhbmdlPXsoX2V2ZW50LCBpdGVtKSA9PiBjaGFuZ2VTZXR0aW5ncyhpdGVtLnR5cGUsIGl0ZW0udmFsdWUpfVxuICAgICAgICAgIHsuLi5zbG90UHJvcHMubGFuZ3VhZ2VTZXR0aW5nc31cbiAgICAgICAgLz5cbiAgICAgICAgPEJhY2tkcm9wIG9wZW49eyFwbGF5YmFja1N0YXRlIHx8IHBsYXliYWNrU3RhdGUgPT09ICdsb2FkaW5nJ30+XG4gICAgICAgICAgPExvYWRpbmdTcGlubmVyIC8+XG4gICAgICAgIDwvQmFja2Ryb3A+XG4gICAgICA8L0xheW91dD5cbiAgICA8L0ludGxQcm92aWRlcj5cbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBQcmVtaXVtUGxheWVyXG4iXX0= */")
8157
8079
  };
8158
8080
 
8159
8081
  const LanguageSettings = ({
@@ -8196,6 +8118,8 @@ const PremiumPlayer = ({
8196
8118
  playbackRate: appPlaybackRate,
8197
8119
  loop,
8198
8120
  volume: appVolume,
8121
+ audioTrack: appAudioTrack,
8122
+ textTrack: appTextTrack,
8199
8123
  thumbnailsUrl,
8200
8124
  controls = {
8201
8125
  autohide: 3000
@@ -8227,6 +8151,8 @@ const PremiumPlayer = ({
8227
8151
  onPlaylogFired,
8228
8152
  ...videoProps
8229
8153
  }) => {
8154
+ var _settings$preferred, _settings$preferred2;
8155
+
8230
8156
  const components = {
8231
8157
  VolumeControl,
8232
8158
  CastUi,
@@ -8512,7 +8438,7 @@ const PremiumPlayer = ({
8512
8438
  '--playing': playbackState === 'playing' ? '1' : '0'
8513
8439
  };
8514
8440
 
8515
- const onRewind = (!isLive || playbackTime.currentTime < 0) && !isEnd && (() => setTargetTime(playbackTime.currentTime - 10));
8441
+ const onRewind = (!isLive || playbackTime.currentTime < 0) && canSeek && (() => setTargetTime(playbackTime.currentTime - 10));
8516
8442
 
8517
8443
  const onForward = (!isLive || playbackTime.currentTime < 0) && canSeek && (() => setTargetTime(playbackTime.currentTime + 10));
8518
8444
 
@@ -8646,6 +8572,8 @@ const PremiumPlayer = ({
8646
8572
  } // TODO playlist, audio / subtitle setting
8647
8573
 
8648
8574
  }, [source, castOptions.contentId, castOptions.customData]);
8575
+ const selectedAudioTrack = ((_settings$preferred = settings.preferred) === null || _settings$preferred === void 0 ? void 0 : _settings$preferred.audio) || appAudioTrack;
8576
+ const selectedTextTrack = ((_settings$preferred2 = settings.preferred) === null || _settings$preferred2 === void 0 ? void 0 : _settings$preferred2.subtitles) || appTextTrack;
8649
8577
  return /*#__PURE__*/jsx(IntlProvider, { ...intl,
8650
8578
  children: /*#__PURE__*/jsxs$1(DefaultLayout, {
8651
8579
  style: { ...style,
@@ -8666,8 +8594,8 @@ const PremiumPlayer = ({
8666
8594
  }),
8667
8595
  playbackRate: settings.values.speed,
8668
8596
  videoResolution: qualityOptions,
8669
- audio: settings.values.audio,
8670
- textTrack: settings.values.subtitles,
8597
+ audioTrack: selectedAudioTrack,
8598
+ textTrack: selectedTextTrack,
8671
8599
  loop: settings.values.loop,
8672
8600
  plugins: plugins,
8673
8601
  modulesConfig: modulesConfig,