@dcl/asset-packs 2.6.2-20251023210549.commit-e8fcfcd → 2.6.2-20251105195527.commit-22f9a80
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/bin/index.js +14941 -2524
- package/catalog.json +14886 -7913
- package/dist/admin-toolkit-ui/VideoControl/LiveStream/ShowStreamKey.js +52 -27
- package/dist/bin/index.js +14941 -2524
- package/package.json +6 -6
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { Color4 } from '@dcl/sdk/math';
|
|
2
2
|
import ReactEcs, { UiEntity, Label } from '@dcl/react-ecs';
|
|
3
|
+
import { copyToClipboard } from '~system/RestrictedActions';
|
|
3
4
|
import { COLORS } from '..';
|
|
4
|
-
import { createVideoPlayerControls
|
|
5
|
+
import { createVideoPlayerControls } from '../utils';
|
|
5
6
|
import { VideoControlVolume } from '../VolumeControl';
|
|
6
7
|
import { Button } from '../../Button';
|
|
7
8
|
import { LIVEKIT_STREAM_SRC } from '../../../definitions';
|
|
@@ -9,7 +10,7 @@ import { ERROR_ICON } from '../../Error';
|
|
|
9
10
|
import { CONTENT_URL } from '../../constants';
|
|
10
11
|
import { getStreamKey } from '../api';
|
|
11
12
|
import { LoadingDots } from '../../Loading';
|
|
12
|
-
import { startTimeout, stopTimeout, startInterval, stopInterval } from '../../../timer';
|
|
13
|
+
import { startTimeout, stopTimeout, startInterval, stopInterval, } from '../../../timer';
|
|
13
14
|
import { state } from '../..';
|
|
14
15
|
const STREAM_ICONS = {
|
|
15
16
|
eyeShow: `${CONTENT_URL}/admin_toolkit/assets/icons/eye.png`,
|
|
@@ -18,6 +19,7 @@ const STREAM_ICONS = {
|
|
|
18
19
|
const AUTO_HIDE_DURATION_SECONDS = 30;
|
|
19
20
|
const STREAM_KEY_TIMEOUT_ACTION = 'video_control_stream_key_timeout';
|
|
20
21
|
const STREAM_KEY_INTERVAL_ACTION = 'video_control_stream_key_interval';
|
|
22
|
+
const RTMP_SERVER_URL = 'rtmps://dcl.rtmp.livekit.cloud/x';
|
|
21
23
|
export function ShowStreamKey({ scaleFactor, engine, video, entity, onReset, endsAt, }) {
|
|
22
24
|
const controls = createVideoPlayerControls(entity, engine);
|
|
23
25
|
const [showStreamkey, setShowStreamkey] = ReactEcs.useState(false);
|
|
@@ -45,7 +47,7 @@ export function ShowStreamKey({ scaleFactor, engine, video, entity, onReset, end
|
|
|
45
47
|
}
|
|
46
48
|
}, [streamKey]);
|
|
47
49
|
return (ReactEcs.createElement(UiEntity, { uiTransform: { flexDirection: 'column' } },
|
|
48
|
-
ReactEcs.createElement(Label, { value: "<b>
|
|
50
|
+
ReactEcs.createElement(Label, { value: "<b>RTMP Server</b>", color: Color4.White(), fontSize: 16 * scaleFactor, uiTransform: {
|
|
49
51
|
margin: { top: 16 * scaleFactor, bottom: 8 * scaleFactor },
|
|
50
52
|
} }),
|
|
51
53
|
ReactEcs.createElement(UiEntity, { uiTransform: {
|
|
@@ -53,8 +55,17 @@ export function ShowStreamKey({ scaleFactor, engine, video, entity, onReset, end
|
|
|
53
55
|
margin: { bottom: 8 * scaleFactor, top: 8 * scaleFactor },
|
|
54
56
|
height: 42 * scaleFactor,
|
|
55
57
|
borderRadius: 12 * scaleFactor,
|
|
58
|
+
flexDirection: 'row',
|
|
59
|
+
justifyContent: 'space-between',
|
|
60
|
+
alignItems: 'center',
|
|
56
61
|
}, uiBackground: { color: Color4.White() } },
|
|
57
|
-
ReactEcs.createElement(Label, { uiTransform: { margin: { left: 16 * scaleFactor } }, fontSize: 16 * scaleFactor, value:
|
|
62
|
+
ReactEcs.createElement(Label, { uiTransform: { margin: { left: 16 * scaleFactor } }, fontSize: 16 * scaleFactor, value: `<b>${RTMP_SERVER_URL}</b>`, color: Color4.fromHexString('#A09BA8') }),
|
|
63
|
+
ReactEcs.createElement(Button, { id: "video_control_copy_rtmp_server", value: "<b>Copy</b>", variant: "primary", fontSize: 16 * scaleFactor, uiTransform: {
|
|
64
|
+
margin: { right: 8 * scaleFactor },
|
|
65
|
+
padding: { left: 8 * scaleFactor, right: 8 * scaleFactor },
|
|
66
|
+
}, onMouseDown: async () => {
|
|
67
|
+
copyToClipboard({ text: RTMP_SERVER_URL });
|
|
68
|
+
} })),
|
|
58
69
|
ReactEcs.createElement(Label, { value: "<b>Stream Key<b>", color: Color4.White(), fontSize: 16 * scaleFactor, uiTransform: {
|
|
59
70
|
margin: { top: 16 * scaleFactor, bottom: 8 * scaleFactor },
|
|
60
71
|
} }),
|
|
@@ -76,29 +87,43 @@ export function ShowStreamKey({ scaleFactor, engine, video, entity, onReset, end
|
|
|
76
87
|
}, uiBackground: { color: Color4.White() } },
|
|
77
88
|
ReactEcs.createElement(Label, { uiTransform: { margin: { left: 16 * scaleFactor } }, fontSize: 16 * scaleFactor, value: `<b>${showStreamkey && streamKey ? streamKey : '*********************************'}</b>`, color: Color4.fromHexString('#A09BA8') }),
|
|
78
89
|
ReactEcs.createElement(UiEntity, { uiTransform: {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
},
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
90
|
+
flexDirection: 'row',
|
|
91
|
+
alignItems: 'center',
|
|
92
|
+
} },
|
|
93
|
+
ReactEcs.createElement(UiEntity, { uiTransform: {
|
|
94
|
+
width: 25 * scaleFactor,
|
|
95
|
+
height: 25 * scaleFactor,
|
|
96
|
+
margin: { right: 10 * scaleFactor },
|
|
97
|
+
}, uiBackground: {
|
|
98
|
+
textureMode: 'stretch',
|
|
99
|
+
texture: {
|
|
100
|
+
src: showStreamkey && streamKey
|
|
101
|
+
? STREAM_ICONS.eyeHide
|
|
102
|
+
: STREAM_ICONS.eyeShow,
|
|
103
|
+
},
|
|
104
|
+
color: Color4.Black(),
|
|
105
|
+
}, onMouseDown: async () => {
|
|
106
|
+
if (!streamKey) {
|
|
107
|
+
setLoading(true);
|
|
108
|
+
const [error, data] = await getStreamKey();
|
|
109
|
+
setLoading(false);
|
|
110
|
+
if (!error && data?.streamingKey) {
|
|
111
|
+
setStreamKey(data.streamingKey);
|
|
112
|
+
setShowStreamkey(true);
|
|
113
|
+
}
|
|
96
114
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
}
|
|
101
|
-
|
|
115
|
+
else {
|
|
116
|
+
setShowStreamkey(!showStreamkey);
|
|
117
|
+
}
|
|
118
|
+
} }),
|
|
119
|
+
ReactEcs.createElement(Button, { id: "video_control_copy_stream_key", value: "<b>Copy</b>", variant: "primary", fontSize: 16 * scaleFactor, uiTransform: {
|
|
120
|
+
margin: { right: 8 * scaleFactor },
|
|
121
|
+
padding: { left: 8 * scaleFactor, right: 8 * scaleFactor },
|
|
122
|
+
}, onMouseDown: async () => {
|
|
123
|
+
if (streamKey) {
|
|
124
|
+
copyToClipboard({ text: streamKey });
|
|
125
|
+
}
|
|
126
|
+
}, disabled: !streamKey })))),
|
|
102
127
|
ReactEcs.createElement(UiEntity, { uiTransform: {
|
|
103
128
|
width: '100%',
|
|
104
129
|
height: 4 * scaleFactor,
|
|
@@ -169,4 +194,4 @@ function formatTimeRemaining(endsAt) {
|
|
|
169
194
|
return `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;
|
|
170
195
|
}
|
|
171
196
|
}
|
|
172
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2hvd1N0cmVhbUtleS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hZG1pbi10b29sa2l0LXVpL1ZpZGVvQ29udHJvbC9MaXZlU3RyZWFtL1Nob3dTdHJlYW1LZXkudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFdEMsT0FBTyxRQUFRLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDMUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLElBQUksQ0FBQTtBQUMzQixPQUFPLEVBQ0wseUJBQXlCLEdBQzFCLE1BQU0sVUFBVSxDQUFBO0FBQ2pCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDckMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUNyQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUN2RixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sT0FBTyxDQUFBO0FBRTdCLE1BQU0sWUFBWSxHQUFHO0lBQ25CLE9BQU8sRUFBRSxHQUFHLFdBQVcscUNBQXFDO0lBQzVELE9BQU8sRUFBRSxHQUFHLFdBQVcseUNBQXlDO0NBQ2pFLENBQUE7QUFFRCxNQUFNLDBCQUEwQixHQUFHLEVBQUUsQ0FBQTtBQUNy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RS9DLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxHQUFHLENBQUMsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUU5RCxJQUFJLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNkLE9BQU8sR0FBRyxJQUFJLElBQUksSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQTtJQUNqRCxDQUFDO1NBQU0sQ0FBQztRQUNOLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxHQUFHLENBQUMsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQzFELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUM1RSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsYUFBYSxHQUFHLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUE7UUFDaEUsT0FBTyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUE7SUFDN0gsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2xvcjQgfSBmcm9tICdAZGNsL3Nkay9tYXRoJ1xuaW1wb3J0IHsgRGVlcFJlYWRvbmx5T2JqZWN0LCBFbnRpdHksIElFbmdpbmUsIFBCVmlkZW9QbGF5ZXIgfSBmcm9tICdAZGNsL2VjcydcbmltcG9ydCBSZWFjdEVjcywgeyBVaUVudGl0eSwgTGFiZWwgfSBmcm9tICdAZGNsL3JlYWN0LWVjcydcbmltcG9ydCB7IENPTE9SUyB9IGZyb20gJy4uJ1xuaW1wb3J0IHtcbiAgY3JlYXRlVmlkZW9QbGF5ZXJDb250cm9scyxcbn0gZnJvbSAnLi4vdXRpbHMnXG5pbXBvcnQgeyBWaWRlb0NvbnRyb2xWb2x1bWUgfSBmcm9tICcuLi9Wb2x1bWVDb250cm9sJ1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSAnLi4vLi4vQnV0dG9uJ1xuaW1wb3J0IHsgTElWRUtJVF9TVFJFQU1fU1JDIH0gZnJvbSAnLi4vLi4vLi4vZGVmaW5pdGlvbnMnXG5pbXBvcnQgeyBFUlJPUl9JQ09OIH0gZnJvbSAnLi4vLi4vRXJyb3InXG5pbXBvcnQgeyBDT05URU5UX1VSTCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cydcbmltcG9ydCB7IGdldFN0cmVhbUtleSB9IGZyb20gJy4uL2FwaSdcbmltcG9ydCB7IExvYWRpbmdEb3RzIH0gZnJvbSAnLi4vLi4vTG9hZGluZydcbmltcG9ydCB7IHN0YXJ0VGltZW91dCwgc3RvcFRpbWVvdXQsIHN0YXJ0SW50ZXJ2YWwsIHN0b3BJbnRlcnZhbCB9IGZyb20gJy4uLy4uLy4uL3RpbWVyJ1xuaW1wb3J0IHsgc3RhdGUgfSBmcm9tICcuLi8uLidcblxuY29uc3QgU1RSRUFNX0lDT05TID0ge1xuICBleWVTaG93OiBgJHtDT05URU5UX1VSTH0vYWRtaW5fdG9vbGtpdC9hc3NldHMvaWNvbnMvZXllLnBuZ2AsXG4gIGV5ZUhpZGU6IGAke0NPTlRFTlRfVVJMfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9pY29ucy9leWUtb2ZmLnBuZ2AsXG59XG5cbmNvbnN0IEFVVE9fSElERV9EVVJBVElPTl9TRUNPTkRTID0gMzBcbmNvbnN0IFNUUkVBTV9LRVlfVElNRU9VVF9BQ1RJT04gPSAndmlkZW9fY29udHJvbF9zdHJlYW1fa2V5X3RpbWVvdXQnXG5jb25zdCBTVFJFQU1fS0VZX0lOVEVSVkFMX0FDVElPTiA9ICd2aWRlb19jb250cm9sX3N0cmVhbV9rZXlfaW50ZXJ2YWwnXG5cbmV4cG9ydCBmdW5jdGlvbiBTaG93U3RyZWFtS2V5KHtcbiAgc2NhbGVGYWN0b3IsXG4gIGVuZ2luZSxcbiAgdmlkZW8sXG4gIGVudGl0eSxcbiAgb25SZXNldCxcbiAgZW5kc0F0LFxufToge1xuICBlbmRzQXQ6IG51bWJlcixcbiAgc2NhbGVGYWN0b3I6IG51bWJlclxuICBlbmdpbmU6IElFbmdpbmVcbiAgZW50aXR5OiBFbnRpdHlcbiAgdmlkZW86IERlZXBSZWFkb25seU9iamVjdDxQQlZpZGVvUGxheWVyPiB8IHVuZGVmaW5lZFxuICBvblJlc2V0KCk6IHZvaWRcbn0pIHtcbiAgY29uc3QgY29udHJvbHMgPSBjcmVhdGVWaWRlb1BsYXllckNvbnRyb2xzKGVudGl0eSwgZW5naW5lKVxuICBjb25zdCBbc2hvd1N0cmVhbWtleSwgc2V0U2hvd1N0cmVhbWtleV0gPSBSZWFjdEVjcy51c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gUmVhY3RFY3MudXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtzdHJlYW1LZXksIHNldFN0cmVhbUtleV0gPSBSZWFjdEVjcy51c2VTdGF0ZTxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZClcbiAgY29uc3QgW3RpbWVSZW1haW5pbmcsIHNldFRpbWVSZW1haW5pbmddID0gUmVhY3RFY3MudXNlU3RhdGUoQVVUT19ISURFX0RVUkFUSU9OX1NFQ09ORFMpXG5cbiAgLy8gYXV0by1oaWRlIHN0cmVhbSBrZXkgYWZ0ZXIgc3BlY2lmaWVkIGR1cmF0aW9uXG4gIFJlYWN0RWNzLnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHN0cmVhbUtleSkge1xuICAgICAgc2V0VGltZVJlbWFpbmluZyhBVVRPX0hJREVfRFVSQVRJT05fU0VDT05EUylcblxuICAgICAgc3RhcnRUaW1lb3V0KHN0YXRlLmFkbWluVG9vbGtpdFVpRW50aXR5LCBTVFJFQU1fS0VZX1RJTUVPVVRfQUNUSU9OLCBBVVRPX0hJREVfRFVSQVRJT05fU0VDT05EUywgKCkgPT4ge1xuICAgICAgICBzZXRTdHJlYW1LZXkodW5kZWZpbmVkKVxuICAgICAgICBzZXRTaG93U3RyZWFta2V5KGZhbHNlKVxuICAgICAgICBzZXRUaW1lUmVtYWluaW5nKDApXG4gICAgICB9KVxuXG4gICAgICBzdGFydEludGVydmFsKHN0YXRlLmFkbWluVG9vbGtpdFVpRW50aXR5LCBTVFJFQU1fS0VZX0lOVEVSVkFMX0FDVElPTiwgMC4xLCAoKSA9PiB7XG4gICAgICAgIHNldFRpbWVSZW1haW5pbmcoKHByZXYpID0+IE1hdGgubWF4KDAsIHByZXYgLSAwLjEpKVxuICAgICAgfSlcblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgc3RvcFRpbWVvdXQoc3RhdGUuYWRtaW5Ub29sa2l0VWlFbnRpdHksIFNUUkVBTV9LRVlfVElNRU9VVF9BQ1RJT04pXG4gICAgICAgIHN0b3BJbnRlcnZhbChzdGF0ZS5hZG1pblRvb2xraXRVaUVudGl0eSwgU1RSRUFNX0tFWV9JTlRFUlZBTF9BQ1RJT04pXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldFRpbWVSZW1haW5pbmcoMClcbiAgICB9XG4gIH0sIFtzdHJlYW1LZXldKVxuXG4gIHJldHVybiAoXG4gICAgPFVpRW50aXR5IHVpVHJhbnNmb3JtPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nIH19PlxuICAgICAgPExhYmVsXG4gICAgICAgIHZhbHVlPVwiPGI+Uk1UUCBTZXJ2ZXI8Yj5cIlxuICAgICAgICBjb2xvcj17Q29sb3I0LldoaXRlKCl9XG4gICAgICAgIGZvbnRTaXplPXsxNiAqIHNjYWxlRmFjdG9yfVxuICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgIG1hcmdpbjogeyB0b3A6IDE2ICogc2NhbGVGYWN0b3IsIGJvdHRvbTogOCAqIHNjYWxlRmFjdG9yIH0sXG4gICAgICAgIH19XG4gICAgICAvPlxuICAgICAgPFVpRW50aXR5XG4gICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICBtYXJnaW46IHsgYm90dG9tOiA4ICogc2NhbGVGYWN0b3IsIHRvcDogOCAqIHNjYWxlRmFjdG9yIH0sXG4gICAgICAgICAgaGVpZ2h0OiA0MiAqIHNjYWxlRmFjdG9yLFxuICAgICAgICAgIGJvcmRlclJhZGl1czogMTIgKiBzY2FsZUZhY3RvcixcbiAgICAgICAgfX1cbiAgICAgICAgdWlCYWNrZ3JvdW5kPXt7IGNvbG9yOiBDb2xvcjQuV2hpdGUoKSB9fVxuICAgICAgPlxuICAgICAgICA8TGFiZWxcbiAgICAgICAgICB1aVRyYW5zZm9ybT17eyBtYXJnaW46IHsgbGVmdDogMTYgKiBzY2FsZUZhY3RvciB9IH19XG4gICAgICAgICAgZm9udFNpemU9ezE2ICogc2NhbGVGYWN0b3J9XG4gICAgICAgICAgdmFsdWU9XCI8Yj5ydG1wczovL2RjbC5ydG1wLmxpdmVraXQuY2xvdWQveDwvYj5cIlxuICAgICAgICAgIGNvbG9yPXtDb2xvcjQuZnJvbUhleFN0cmluZygnI0EwOUJBOCcpfVxuICAgICAgICAvPlxuICAgICAgPC9VaUVudGl0eT5cbiAgICAgIDxMYWJlbFxuICAgICAgICB2YWx1ZT1cIjxiPlN0cmVhbSBLZXk8Yj5cIlxuICAgICAgICBjb2xvcj17Q29sb3I0LldoaXRlKCl9XG4gICAgICAgIGZvbnRTaXplPXsxNiAqIHNjYWxlRmFjdG9yfVxuICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgIG1hcmdpbjogeyB0b3A6IDE2ICogc2NhbGVGYWN0b3IsIGJvdHRvbTogOCAqIHNjYWxlRmFjdG9yIH0sXG4gICAgICAgIH19XG4gICAgICAvPlxuICAgICAge2xvYWRpbmcgPyAoXG4gICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgbWFyZ2luOiB7IGJvdHRvbTogOCAqIHNjYWxlRmFjdG9yLCB0b3A6IDggKiBzY2FsZUZhY3RvciB9LFxuICAgICAgICAgICAgaGVpZ2h0OiA0MiAqIHNjYWxlRmFjdG9yLFxuICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxMb2FkaW5nRG90cyBzY2FsZUZhY3Rvcj17c2NhbGVGYWN0b3J9IGVuZ2luZT17ZW5naW5lfSAvPlxuICAgICAgICA8L1VpRW50aXR5PlxuICAgICAgKSA6IChcbiAgICAgICAgPFVpRW50aXR5XG4gICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICBtYXJnaW46IHsgYm90dG9tOiA4ICogc2NhbGVGYWN0b3IsIHRvcDogOCAqIHNjYWxlRmFjdG9yIH0sXG4gICAgICAgICAgICBoZWlnaHQ6IDQyICogc2NhbGVGYWN0b3IsXG4gICAgICAgICAgICBib3JkZXJSYWRpdXM6IDEyICogc2NhbGVGYWN0b3IsXG4gICAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAncm93JyxcbiAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnc3BhY2UtYmV0d2VlbicsXG4gICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICB9fVxuICAgICAgICAgIHVpQmFja2dyb3VuZD17eyBjb2xvcjogQ29sb3I0LldoaXRlKCkgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxMYWJlbFxuICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3sgbWFyZ2luOiB7IGxlZnQ6IDE2ICogc2NhbGVGYWN0b3IgfSB9fVxuICAgICAgICAgICAgZm9udFNpemU9ezE2ICogc2NhbGVGYWN0b3J9XG4gICAgICAgICAgICB2YWx1ZT17YDxiPiR7c2hvd1N0cmVhbWtleSAmJiBzdHJlYW1LZXkgPyBzdHJlYW1LZXkgOiAnKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqJ308L2I+YH1cbiAgICAgICAgICAgIGNvbG9yPXtDb2xvcjQuZnJvbUhleFN0cmluZygnI0EwOUJBOCcpfVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPFVpRW50aXR5XG4gICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICB3aWR0aDogMjUgKiBzY2FsZUZhY3RvcixcbiAgICAgICAgICAgICAgaGVpZ2h0OiAyNSAqIHNjYWxlRmFjdG9yLFxuICAgICAgICAgICAgICBtYXJnaW46IHsgcmlnaHQ6IDEwICogc2NhbGVGYWN0b3IgfSxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICB1aUJhY2tncm91bmQ9e3tcbiAgICAgICAgICAgICAgdGV4dHVyZU1vZGU6ICdzdHJldGNoJyxcbiAgICAgICAgICAgICAgdGV4dHVyZToge1xuICAgICAgICAgICAgICAgIHNyYzogc2hvd1N0cmVhbWtleSAmJiBzdHJlYW1LZXkgPyBTVFJFQU1fSUNPTlMuZXllSGlkZSA6IFNUUkVBTV9JQ09OUy5leWVTaG93LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBjb2xvcjogQ29sb3I0LkJsYWNrKCksXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgb25Nb3VzZURvd249e2FzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFzdHJlYW1LZXkpIHtcbiAgICAgICAgICAgICAgICBzZXRMb2FkaW5nKHRydWUpXG4gICAgICAgICAgICAgICAgY29uc3QgW2Vycm9yLCBkYXRhXSA9IGF3YWl0IGdldFN0cmVhbUtleSgpXG4gICAgICAgICAgICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgICAgICAgICAgICBpZiAoIWVycm9yICYmIGRhdGE/LnN0cmVhbWluZ0tleSkge1xuICAgICAgICAgICAgICAgICAgc2V0U3RyZWFtS2V5KGRhdGEuc3RyZWFtaW5nS2V5KVxuICAgICAgICAgICAgICAgICAgc2V0U2hvd1N0cmVhbWtleSh0cnVlKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzZXRTaG93U3RyZWFta2V5KCFzaG93U3RyZWFta2V5KVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICApfVxuICAgICAgPFVpRW50aXR5XG4gICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICBoZWlnaHQ6IDQgKiBzY2FsZUZhY3RvcixcbiAgICAgICAgICBtYXJnaW46IHsgdG9wOiA4ICogc2NhbGVGYWN0b3IgfSxcbiAgICAgICAgICBkaXNwbGF5OiBzdHJlYW1LZXkgJiYgdGltZVJlbWFpbmluZyA+IDAgJiYgc2hvd1N0cmVhbWtleSA/ICdmbGV4JyA6ICdub25lJyxcbiAgICAgICAgfX1cbiAgICAgICAgdWlCYWNrZ3JvdW5kPXt7IGNvbG9yOiBDb2xvcjQuZnJvbUhleFN0cmluZygnI0ZGRkZGRjFBJykgfX1cbiAgICAgID5cbiAgICAgICAgPFVpRW50aXR5XG4gICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgIHdpZHRoOiBgJHsodGltZVJlbWFpbmluZyAvIEFVVE9fSElERV9EVVJBVElPTl9TRUNPTkRTKSAqIDEwMH0lYCxcbiAgICAgICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICAgIH19XG4gICAgICAgICAgdWlCYWNrZ3JvdW5kPXt7IGNvbG9yOiBDb2xvcjQuZnJvbUhleFN0cmluZygnIzAwRDNGRicpIH19XG4gICAgICAgIC8+XG4gICAgICA8L1VpRW50aXR5PlxuXG4gICAgICA8VWlFbnRpdHlcbiAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgIGhlaWdodDogNDAgKiBzY2FsZUZhY3RvcixcbiAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAncm93JyxcbiAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nLFxuICAgICAgICAgIG1hcmdpbjogeyB0b3A6IDEwICogc2NhbGVGYWN0b3IsIGJvdHRvbTogMTYgKiBzY2FsZUZhY3RvciB9LFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICB7ZW5kc0F0ID4gRGF0ZS5ub3coKSA/IChcbiAgICAgICAgICA8VWlFbnRpdHkgdWlUcmFuc2Zvcm09e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicgfX0+XG4gICAgICAgICAgICA8TGFiZWxcbiAgICAgICAgICAgICAgdmFsdWU9XCJTdHJlYW0gZXhwaXJlcyBpbjpcIlxuICAgICAgICAgICAgICBjb2xvcj17Q29sb3I0LmZyb21IZXhTdHJpbmcoJyNGRkZGRkZCMicpfVxuICAgICAgICAgICAgICBmb250U2l6ZT17MTQgKiBzY2FsZUZhY3Rvcn1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8TGFiZWxcbiAgICAgICAgICAgICAgdmFsdWU9e2Zvcm1hdFRpbWVSZW1haW5pbmcoZW5kc0F0KX1cbiAgICAgICAgICAgICAgY29sb3I9e0NvbG9yNC5mcm9tSGV4U3RyaW5nKCcjRkZGRkZGQjInKX1cbiAgICAgICAgICAgICAgZm9udFNpemU9ezE0ICogc2NhbGVGYWN0b3J9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPFVpRW50aXR5XG4gICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAncm93JyxcbiAgICAgICAgICAgICAgbWFyZ2luOiB7IHJpZ2h0OiAxMCAqIHNjYWxlRmFjdG9yIH0sXG4gICAgICAgICAgICAgIGJvcmRlcldpZHRoOiAyLFxuICAgICAgICAgICAgICBib3JkZXJDb2xvcjogQ29sb3I0LkdyZWVuKCksXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxNSAqIHNjYWxlRmFjdG9yLFxuICAgICAgICAgICAgICAgIGhlaWdodDogMTUgKiBzY2FsZUZhY3RvcixcbiAgICAgICAgICAgICAgICBtYXJnaW46IHsgcmlnaHQ6IDQgKiBzY2FsZUZhY3RvciwgdG9wOiA0ICogc2NhbGVGYWN0b3IgfSxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgdWlCYWNrZ3JvdW5kPXt7XG4gICAgICAgICAgICAgICAgdGV4dHVyZU1vZGU6ICdzdHJldGNoJyxcbiAgICAgICAgICAgICAgICB0ZXh0dXJlOiB7XG4gICAgICAgICAgICAgICAgICBzcmM6IEVSUk9SX0lDT04sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8TGFiZWxcbiAgICAgICAgICAgICAgZm9udFNpemU9ezE0ICogc2NhbGVGYWN0b3J9XG4gICAgICAgICAgICAgIHRleHRBbGlnbj1cIm1pZGRsZS1sZWZ0XCJcbiAgICAgICAgICAgICAgY29sb3I9e0NvbG9yNC5mcm9tSGV4U3RyaW5nKCcjRkYwMDAwJyl9XG4gICAgICAgICAgICAgIHZhbHVlPVwiU3RyZWFtIHRpbWVkIG91dC4gUGxlYXNlIHJlc3RhcnQgc3RyZWFtIGluIGJyb2FkY2FzdGluZyBzb2Z0d2FyZS5cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1VpRW50aXR5PlxuICAgICAgICApfVxuICAgICAgICB7dmlkZW8/LnNyYyA9PT0gTElWRUtJVF9TVFJFQU1fU1JDID8gKFxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIGlkPVwidmlkZW9fY29udHJvbF9zaGFyZV9zY3JlZW5fY2xlYXJcIlxuICAgICAgICAgICAgdmFsdWU9XCI8Yj5EZWFjdGl2YXRlPC9iPlwiXG4gICAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgICBmb250U2l6ZT17MTYgKiBzY2FsZUZhY3Rvcn1cbiAgICAgICAgICAgIGNvbG9yPXtDb2xvcjQuV2hpdGUoKX1cbiAgICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICAgIG1pbldpZHRoOiAxMjAgKiBzY2FsZUZhY3RvcixcbiAgICAgICAgICAgICAgbWFyZ2luOiB7IHJpZ2h0OiA4ICogc2NhbGVGYWN0b3IgfSxcbiAgICAgICAgICAgICAgcGFkZGluZzogeyBsZWZ0OiA4ICogc2NhbGVGYWN0b3IsIHJpZ2h0OiA4ICogc2NhbGVGYWN0b3IgfSxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBvbk1vdXNlRG93bj17KCkgPT4ge1xuICAgICAgICAgICAgICBjb250cm9scy5zZXRTb3VyY2UoJycpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIC8+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgaWQ9XCJ2aWRlb19jb250cm9sX3NoYXJlX3NjcmVlbl9zaGFyZVwiXG4gICAgICAgICAgICB2YWx1ZT1cIjxiPkFjdGl2YXRlPC9iPlwiXG4gICAgICAgICAgICBsYWJlbFRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICBtYXJnaW46IHsgbGVmdDogMjAgKiBzY2FsZUZhY3RvciwgcmlnaHQ6IDIwICogc2NhbGVGYWN0b3IgfSxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICBtaW5XaWR0aDogMTIwICogc2NhbGVGYWN0b3IsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgZm9udFNpemU9ezE2ICogc2NhbGVGYWN0b3J9XG4gICAgICAgICAgICB1aUJhY2tncm91bmQ9e3sgY29sb3I6IENPTE9SUy5TVUNDRVNTIH19XG4gICAgICAgICAgICBjb2xvcj17Q29sb3I0LkJsYWNrKCl9XG4gICAgICAgICAgICBvbk1vdXNlRG93bj17KCkgPT4ge1xuICAgICAgICAgICAgICBjb250cm9scy5zZXRTb3VyY2UoTElWRUtJVF9TVFJFQU1fU1JDKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9VaUVudGl0eT5cbiAgICAgIDxWaWRlb0NvbnRyb2xWb2x1bWVcbiAgICAgICAgZW5naW5lPXtlbmdpbmV9XG4gICAgICAgIGxhYmVsPVwiPGI+U3RyZWFtIFZvbHVtZTwvYj5cIlxuICAgICAgICBlbnRpdHk9e2VudGl0eX1cbiAgICAgICAgdmlkZW89e3ZpZGVvfVxuICAgICAgLz5cbiAgICAgIDxVaUVudGl0eT5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGlkPVwidmlkZW9fY29udHJvbF9yZXNldF9zdHJlYW1fa2V5XCJcbiAgICAgICAgICB2YWx1ZT1cIjxiPlJlc2V0IFN0cmVhbSBLZXk8L2I+XCJcbiAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgZm9udFNpemU9ezE2ICogc2NhbGVGYWN0b3J9XG4gICAgICAgICAgY29sb3I9e0NvbG9yNC5mcm9tSGV4U3RyaW5nKCcjRkIzQjNCJyl9XG4gICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgIG1hcmdpbjogeyByaWdodDogOCAqIHNjYWxlRmFjdG9yLCB0b3A6IDIwICogc2NhbGVGYWN0b3IgfSxcbiAgICAgICAgICAgIHBhZGRpbmc6IHsgbGVmdDogOCAqIHNjYWxlRmFjdG9yLCByaWdodDogOCAqIHNjYWxlRmFjdG9yIH0sXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbk1vdXNlRG93bj17KCkgPT4gb25SZXNldCgpfVxuICAgICAgICAvPlxuICAgICAgPC9VaUVudGl0eT5cbiAgICA8L1VpRW50aXR5PlxuICApXG59XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byBmb3JtYXQgdGltZSByZW1haW5pbmcgLSBzaG93cyBkYXlzIGlmID4gMSBkYXksIG90aGVyd2lzZSBzaG93cyBoaDptbTpzc1xuZnVuY3Rpb24gZm9ybWF0VGltZVJlbWFpbmluZyhlbmRzQXQ6IG51bWJlcik6IHN0cmluZyB7XG4gIGNvbnN0IG5vdyA9IERhdGUubm93KClcbiAgY29uc3QgdGltZVJlbWFpbmluZyA9IE1hdGgubWF4KDAsIGVuZHNBdCAtIG5vdylcblxuICBjb25zdCBkYXlzID0gTWF0aC5mbG9vcih0aW1lUmVtYWluaW5nIC8gKDEwMDAgKiA2MCAqIDYwICogMjQpKVxuXG4gIGlmIChkYXlzID49IDEpIHtcbiAgICByZXR1cm4gYCR7ZGF5c30gJHtkYXlzID09PSAxID8gJ2RheScgOiAnZGF5cyd9YFxuICB9IGVsc2Uge1xuICAgIGNvbnN0IGhvdXJzID0gTWF0aC5mbG9vcih0aW1lUmVtYWluaW5nIC8gKDEwMDAgKiA2MCAqIDYwKSlcbiAgICBjb25zdCBtaW51dGVzID0gTWF0aC5mbG9vcigodGltZVJlbWFpbmluZyAlICgxMDAwICogNjAgKiA2MCkpIC8gKDEwMDAgKiA2MCkpXG4gICAgY29uc3Qgc2Vjb25kcyA9IE1hdGguZmxvb3IoKHRpbWVSZW1haW5pbmcgJSAoMTAwMCAqIDYwKSkgLyAxMDAwKVxuICAgIHJldHVybiBgJHtob3Vycy50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9OiR7bWludXRlcy50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9OiR7c2Vjb25kcy50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9YFxuICB9XG59XG4iXX0=
|
|
197
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2hvd1N0cmVhbUtleS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hZG1pbi10b29sa2l0LXVpL1ZpZGVvQ29udHJvbC9MaXZlU3RyZWFtL1Nob3dTdHJlYW1LZXkudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFdEMsT0FBTyxRQUFRLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQzNELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUE7QUFDM0IsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQ3BELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDckMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUNyQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzNDLE9BQU8sRUFDTCxZQUFZLEVBQ1osV0FBVyxFQUNYLGFBQWEsRUFDYixZQUFZLEdBQ2IsTUFBTSxnQkFBZ0IsQ0FBQTtBQUN2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sT0FBTyxDQUFBO0FBRTdCLE1BQU0sWUFBWSxHQUFHO0lBQ25CLE9BQU8sRUFBRSxHQUFHLFdBQVcscUNBQXFDO0lBQzVELE9BQU8sRUFBRSxHQUFHLFdBQVcseUNBQXlDO0NBQ2pFLENBQUE7QUFFRCxNQUFNLDBCQUEwQixHQUFHLEVBQUUsQ0FBQTtBQUNyQyxNQUFNLHlCQUF5QixHQUFHLGtDQUFrQyxDQUFBO0FBQ3BFLE1BQU0sMEJBQTBCLEdBQUcsbUNBQW1DLENBQUE7QUFDdEUsTUFBTSxlQUFlLEdBQUcsa0NBQWtDLENBQUE7QUFFMUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxFQUM1QixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sT0FBTyxFQUNQLE1BQU0sR0FRUDtJQUNDLE1BQU0sUUFBUSxHQUFHLHlCQUF5QixDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQTtJQUMxRCxNQUFNLENBQUMsYUFBYSxFQUFFLGdCQUFnQixDQUFDLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNsRSxNQUFNLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDdEQsTUFBTSxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUNqRCxTQUFTLENBQ1YsQ0FBQTtJQUNELE1BQU0sQ0FBQyxhQUFhLEVBQUUsZ0JBQWdCLENBQUMsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUN6RCwwQkFBMEIsQ0FDM0IsQ0FBQTtJQUdELFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ3RCLElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxnQkFBZ0IsQ0FBQywwQkFBMEIsQ0FBQyxDQUFBO1lBRTVDLFlBQVksQ0FDVixLQUFLLENBQUMsb0JBQW9CLEVBQzFCLHlCQUF5QixFQUN6QiwwQkFBMEIsRUFDMUIsR0FBRyxFQUFFO2dCQUNILFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQTtnQkFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUE7Z0JBQ3ZCLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ3JCLENBQUMsQ0FDRixDQUFBO1lBRUQsYUFBYSxDQUNYLEtBQUssQ0FBQyxvQkFBb0IsRUFDMUIsMEJBQTBCLEVBQzFCLEdBQUcsRUFDSCxHQUFHLEVBQUU7Z0JBQ0gsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFBO1lBQ3JELENBQUMsQ0FDRixDQUFBO1lBRUQsT0FBTyxHQUFHLEVBQUU7Z0JBQ1YsV0FBVyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsRUFBRSx5QkFBeUIsQ0FBQyxDQUFBO2dCQUNsRSxZQUFZLENBQUMsS0FBSyxDQUFDLG9CQUFvQixFQUFFLDBCQUEwQixDQUFDLENBQUE7WUFDdEUsQ0FBQyxDQUFBO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNyQixDQUFDO0lBQ0gsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQTtJQUVmLE9BQU8sQ0FDTCx1QkFBQyxRQUFRLElBQUMsV0FBVyxFQUFFLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRTtRQUNoRCx1QkFBQyxLQUFLLElBQ0osS0FBSyxFQUFDLG9CQUFvQixFQUMxQixLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUNyQixRQUFRLEVBQUUsRUFBRSxHQUFHLFdBQVcsRUFDMUIsV0FBVyxFQUFFO2dCQUNYLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEdBQUcsV0FBVyxFQUFFLE1BQU0sRUFBRSxDQUFDLEdBQUcsV0FBVyxFQUFFO2FBQzNELEdBQ0Q7UUFDRix1QkFBQyxRQUFRLElBQ1AsV0FBVyxFQUFFO2dCQUNYLEtBQUssRUFBRSxNQUFNO2dCQUNiLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLEdBQUcsV0FBVyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsV0FBVyxFQUFFO2dCQUN6RCxNQUFNLEVBQUUsRUFBRSxHQUFHLFdBQVc7Z0JBQ3hCLFlBQVksRUFBRSxFQUFFLEdBQUcsV0FBVztnQkFDOUIsYUFBYSxFQUFFLEtBQUs7Z0JBQ3BCLGNBQWMsRUFBRSxlQUFlO2dCQUMvQixVQUFVLEVBQUUsUUFBUTthQUNyQixFQUNELFlBQVksRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFFdkMsdUJBQUMsS0FBSyxJQUNKLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsV0FBVyxFQUFFLEVBQUUsRUFDbkQsUUFBUSxFQUFFLEVBQUUsR0FBRyxXQUFXLEVBQzFCLEtBQUssRUFBRSxNQUFNLGVBQWUsTUFBTSxFQUNsQyxLQUFLLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FDdEM7WUFDRix1QkFBQyxNQUFNLElBQ0wsRUFBRSxFQUFDLGdDQUFnQyxFQUNuQyxLQUFLLEVBQUMsYUFBYSxFQUNuQixPQUFPLEVBQUMsU0FBUyxFQUNqQixRQUFRLEVBQUUsRUFBRSxHQUFHLFdBQVcsRUFDMUIsV0FBVyxFQUFFO29CQUNYLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQUcsV0FBVyxFQUFFO29CQUNsQyxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxHQUFHLFdBQVcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLFdBQVcsRUFBRTtpQkFDM0QsRUFDRCxXQUFXLEVBQUUsS0FBSyxJQUFJLEVBQUU7b0JBQ3RCLGVBQWUsQ0FBQyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFBO2dCQUM1QyxDQUFDLEdBQ0QsQ0FDTztRQUNYLHVCQUFDLEtBQUssSUFDSixLQUFLLEVBQUMsa0JBQWtCLEVBQ3hCLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQ3JCLFFBQVEsRUFBRSxFQUFFLEdBQUcsV0FBVyxFQUMxQixXQUFXLEVBQUU7Z0JBQ1gsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxXQUFXLEVBQUUsTUFBTSxFQUFFLENBQUMsR0FBRyxXQUFXLEVBQUU7YUFDM0QsR0FDRDtRQUNELE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FDVCx1QkFBQyxRQUFRLElBQ1AsV0FBVyxFQUFFO2dCQUNYLEtBQUssRUFBRSxNQUFNO2dCQUNiLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLEdBQUcsV0FBVyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsV0FBVyxFQUFFO2dCQUN6RCxNQUFNLEVBQUUsRUFBRSxHQUFHLFdBQVc7Z0JBQ3hCLGNBQWMsRUFBRSxRQUFRO2dCQUN4QixVQUFVLEVBQUUsUUFBUTthQUNyQjtZQUVELHVCQUFDLFdBQVcsSUFBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLEdBQUksQ0FDaEQsQ0FDWixDQUFDLENBQUMsQ0FBQyxDQUNGLHVCQUFDLFFBQVEsSUFDUCxXQUFXLEVBQUU7Z0JBQ1gsS0FBSyxFQUFFLE1BQU07Z0JBQ2IsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsR0FBRyxXQUFXLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxXQUFXLEVBQUU7Z0JBQ3pELE1BQU0sRUFBRSxFQUFFLEdBQUcsV0FBVztnQkFDeEIsWUFBWSxFQUFFLEVBQUUsR0FBRyxXQUFXO2dCQUM5QixhQUFhLEVBQUUsS0FBSztnQkFDcEIsY0FBYyxFQUFFLGVBQWU7Z0JBQy9CLFVBQVUsRUFBRSxRQUFRO2FBQ3JCLEVBQ0QsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUV2Qyx1QkFBQyxLQUFLLElBQ0osV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxXQUFXLEVBQUUsRUFBRSxFQUNuRCxRQUFRLEVBQUUsRUFBRSxHQUFHLFdBQVcsRUFDMUIsS0FBSyxFQUFFLE1BQU0sYUFBYSxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxtQ0FBbUMsTUFBTSxFQUMvRixLQUFLLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FDdEM7WUFDRix1QkFBQyxRQUFRLElBQ1AsV0FBVyxFQUFFO29CQUNYLGFBQWEsRUFBRSxLQUFLO29CQUNwQixVQUFVLEVBQUUsUUFBUTtpQkFDckI7Z0JBRUQsdUJBQUMsUUFBUSxJQUNQLFdBQVcsRUFBRTt3QkFDWCxLQUFLLEVBQUUsRUFBRSxHQUFHLFdBQVc7d0JBQ3ZCLE1BQU0sRUFBRSxFQUFFLEdBQUcsV0FBVzt3QkFDeEIsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxXQUFXLEVBQUU7cUJBQ3BDLEVBQ0QsWUFBWSxFQUFFO3dCQUNaLFdBQVcsRUFBRSxTQUFTO3dCQUN0QixPQUFPLEVBQUU7NEJBQ1AsR0FBRyxFQUNELGFBQWEsSUFBSSxTQUFTO2dDQUN4QixDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU87Z0NBQ3RCLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTzt5QkFDM0I7d0JBQ0QsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUU7cUJBQ3RCLEVBQ0QsV0FBVyxFQUFFLEtBQUssSUFBSSxFQUFFO3dCQUN0QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7NEJBQ2YsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFBOzRCQUNoQixNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLE1BQU0sWUFBWSxFQUFFLENBQUE7NEJBQzFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQTs0QkFDakIsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLEVBQUUsWUFBWSxFQUFFLENBQUM7Z0NBQ2pDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUE7Z0NBQy9CLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFBOzRCQUN4QixDQUFDO3dCQUNILENBQUM7NkJBQU0sQ0FBQzs0QkFDTixnQkFBZ0IsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFBO3dCQUNsQyxDQUFDO29CQUNILENBQUMsR0FDRDtnQkFDRix1QkFBQyxNQUFNLElBQ0wsRUFBRSxFQUFDLCtCQUErQixFQUNsQyxLQUFLLEVBQUMsYUFBYSxFQUNuQixPQUFPLEVBQUMsU0FBUyxFQUNqQixRQUFRLEVBQUUsRUFBRSxHQUFHLFdBQVcsRUFDMUIsV0FBVyxFQUFFO3dCQUNYLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQUcsV0FBVyxFQUFFO3dCQUNsQyxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxHQUFHLFdBQVcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLFdBQVcsRUFBRTtxQkFDM0QsRUFDRCxXQUFXLEVBQUUsS0FBSyxJQUFJLEVBQUU7d0JBQ3RCLElBQUksU0FBUyxFQUFFLENBQUM7NEJBQ2QsZUFBZSxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUE7d0JBQ3RDLENBQUM7b0JBQ0gsQ0FBQyxFQUNELFFBQVEsRUFBRSxDQUFDLFNBQVMsR0FDcEIsQ0FDTyxDQUNGLENBQ1o7UUFDRCx1QkFBQyxRQUFRLElBQ1AsV0FBVyxFQUFFO2dCQUNYLEtBQUssRUFBRSxNQUFNO2dCQUNiLE1BQU0sRUFBRSxDQUFDLEdBQUcsV0FBVztnQkFDdkIsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxXQUFXLEVBQUU7Z0JBQ2hDLE9BQU8sRUFDTCxTQUFTLElBQUksYUFBYSxHQUFHLENBQUMsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTTthQUNwRSxFQUNELFlBQVksRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBRTFELHVCQUFDLFFBQVEsSUFDUCxXQUFXLEVBQUU7b0JBQ1gsS0FBSyxFQUFFLEdBQUcsQ0FBQyxhQUFhLEdBQUcsMEJBQTBCLENBQUMsR0FBRyxHQUFHLEdBQUc7b0JBQy9ELE1BQU0sRUFBRSxNQUFNO2lCQUNmLEVBQ0QsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FDeEQsQ0FDTztRQUVYLHVCQUFDLFFBQVEsSUFDUCxXQUFXLEVBQUU7Z0JBQ1gsS0FBSyxFQUFFLE1BQU07Z0JBQ2IsTUFBTSxFQUFFLEVBQUUsR0FBRyxXQUFXO2dCQUN4QixhQUFhLEVBQUUsS0FBSztnQkFDcEIsY0FBYyxFQUFFLGVBQWU7Z0JBQy9CLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEdBQUcsV0FBVyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsV0FBVyxFQUFFO2FBQzVEO1lBRUEsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FDckIsdUJBQUMsUUFBUSxJQUFDLFdBQVcsRUFBRSxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUU7Z0JBQ2hELHVCQUFDLEtBQUssSUFDSixLQUFLLEVBQUMsb0JBQW9CLEVBQzFCLEtBQUssRUFBRSxNQUFNLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxFQUN4QyxRQUFRLEVBQUUsRUFBRSxHQUFHLFdBQVcsR0FDMUI7Z0JBQ0YsdUJBQUMsS0FBSyxJQUNKLEtBQUssRUFBRSxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsRUFDbEMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLEVBQ3hDLFFBQVEsRUFBRSxFQUFFLEdBQUcsV0FBVyxHQUMxQixDQUNPLENBQ1osQ0FBQyxDQUFDLENBQUMsQ0FDRix1QkFBQyxRQUFRLElBQ1AsV0FBVyxFQUFFO29CQUNYLGFBQWEsRUFBRSxLQUFLO29CQUNwQixNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLFdBQVcsRUFBRTtvQkFDbkMsV0FBVyxFQUFFLENBQUM7b0JBQ2QsV0FBVyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUU7aUJBQzVCO2dCQUVELHVCQUFDLFFBQVEsSUFDUCxXQUFXLEVBQUU7d0JBQ1gsS0FBSyxFQUFFLEVBQUUsR0FBRyxXQUFXO3dCQUN2QixNQUFNLEVBQUUsRUFBRSxHQUFHLFdBQVc7d0JBQ3hCLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQUcsV0FBVyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsV0FBVyxFQUFFO3FCQUN6RCxFQUNELFlBQVksRUFBRTt3QkFDWixXQUFXLEVBQUUsU0FBUzt3QkFDdEIsT0FBTyxFQUFFOzRCQUNQLEdBQUcsRUFBRSxVQUFVO3lCQUNoQjtxQkFDRixHQUNEO2dCQUNGLHVCQUFDLEtBQUssSUFDSixRQUFRLEVBQUUsRUFBRSxHQUFHLFdBQVcsRUFDMUIsU0FBUyxFQUFDLGFBQWEsRUFDdkIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEVBQ3RDLEtBQUssRUFBQyxtRUFBbUUsR0FDekUsQ0FDTyxDQUNaO1lBQ0EsS0FBSyxFQUFFLEdBQUcsS0FBSyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FDbkMsdUJBQUMsTUFBTSxJQUNMLEVBQUUsRUFBQyxrQ0FBa0MsRUFDckMsS0FBSyxFQUFDLG1CQUFtQixFQUN6QixPQUFPLEVBQUMsTUFBTSxFQUNkLFFBQVEsRUFBRSxFQUFFLEdBQUcsV0FBVyxFQUMxQixLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUNyQixXQUFXLEVBQUU7b0JBQ1gsUUFBUSxFQUFFLEdBQUcsR0FBRyxXQUFXO29CQUMzQixNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLFdBQVcsRUFBRTtvQkFDbEMsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsR0FBRyxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBRyxXQUFXLEVBQUU7aUJBQzNELEVBQ0QsV0FBVyxFQUFFLEdBQUcsRUFBRTtvQkFDaEIsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtnQkFDeEIsQ0FBQyxHQUNELENBQ0gsQ0FBQyxDQUFDLENBQUMsQ0FDRix1QkFBQyxNQUFNLElBQ0wsRUFBRSxFQUFDLGtDQUFrQyxFQUNyQyxLQUFLLEVBQUMsaUJBQWlCLEVBQ3ZCLGNBQWMsRUFBRTtvQkFDZCxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLFdBQVcsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLFdBQVcsRUFBRTtpQkFDNUQsRUFDRCxXQUFXLEVBQUU7b0JBQ1gsUUFBUSxFQUFFLEdBQUcsR0FBRyxXQUFXO2lCQUM1QixFQUNELFFBQVEsRUFBRSxFQUFFLEdBQUcsV0FBVyxFQUMxQixZQUFZLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRSxFQUN2QyxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUNyQixXQUFXLEVBQUUsR0FBRyxFQUFFO29CQUNoQixRQUFRLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLENBQUE7Z0JBQ3hDLENBQUMsR0FDRCxDQUNILENBQ1E7UUFDWCx1QkFBQyxrQkFBa0IsSUFDakIsTUFBTSxFQUFFLE1BQU0sRUFDZCxLQUFLLEVBQUMsc0JBQXNCLEVBQzVCLE1BQU0sRUFBRSxNQUFNLEVBQ2QsS0FBSyxFQUFFLEtBQUssR0FDWjtRQUNGLHVCQUFDLFFBQVE7WUFDUCx1QkFBQyxNQUFNLElBQ0wsRUFBRSxFQUFDLGdDQUFnQyxFQUNuQyxLQUFLLEVBQUMseUJBQXlCLEVBQy9CLE9BQU8sRUFBQyxNQUFNLEVBQ2QsUUFBUSxFQUFFLEVBQUUsR0FBRyxXQUFXLEVBQzFCLEtBQUssRUFBRSxNQUFNLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxFQUN0QyxXQUFXLEVBQUU7b0JBQ1gsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBRyxXQUFXLEVBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxXQUFXLEVBQUU7b0JBQ3pELE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEdBQUcsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQUcsV0FBVyxFQUFFO2lCQUMzRCxFQUNELFdBQVcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FDNUIsQ0FDTyxDQUNGLENBQ1osQ0FBQTtBQUNILENBQUM7QUFHRCxTQUFTLG1CQUFtQixDQUFDLE1BQWM7SUFDekMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFBO0lBQ3RCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQTtJQUUvQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsR0FBRyxDQUFDLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFFOUQsSUFBSSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDZCxPQUFPLEdBQUcsSUFBSSxJQUFJLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUE7SUFDakQsQ0FBQztTQUFNLENBQUM7UUFDTixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsR0FBRyxDQUFDLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUMxRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsYUFBYSxHQUFHLENBQUMsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDNUUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLGFBQWEsR0FBRyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFBO1FBQ2hFLE9BQU8sR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFBO0lBQzdILENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29sb3I0IH0gZnJvbSAnQGRjbC9zZGsvbWF0aCdcbmltcG9ydCB7IERlZXBSZWFkb25seU9iamVjdCwgRW50aXR5LCBJRW5naW5lLCBQQlZpZGVvUGxheWVyIH0gZnJvbSAnQGRjbC9lY3MnXG5pbXBvcnQgUmVhY3RFY3MsIHsgVWlFbnRpdHksIExhYmVsIH0gZnJvbSAnQGRjbC9yZWFjdC1lY3MnXG5pbXBvcnQgeyBjb3B5VG9DbGlwYm9hcmQgfSBmcm9tICd+c3lzdGVtL1Jlc3RyaWN0ZWRBY3Rpb25zJ1xuaW1wb3J0IHsgQ09MT1JTIH0gZnJvbSAnLi4nXG5pbXBvcnQgeyBjcmVhdGVWaWRlb1BsYXllckNvbnRyb2xzIH0gZnJvbSAnLi4vdXRpbHMnXG5pbXBvcnQgeyBWaWRlb0NvbnRyb2xWb2x1bWUgfSBmcm9tICcuLi9Wb2x1bWVDb250cm9sJ1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSAnLi4vLi4vQnV0dG9uJ1xuaW1wb3J0IHsgTElWRUtJVF9TVFJFQU1fU1JDIH0gZnJvbSAnLi4vLi4vLi4vZGVmaW5pdGlvbnMnXG5pbXBvcnQgeyBFUlJPUl9JQ09OIH0gZnJvbSAnLi4vLi4vRXJyb3InXG5pbXBvcnQgeyBDT05URU5UX1VSTCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cydcbmltcG9ydCB7IGdldFN0cmVhbUtleSB9IGZyb20gJy4uL2FwaSdcbmltcG9ydCB7IExvYWRpbmdEb3RzIH0gZnJvbSAnLi4vLi4vTG9hZGluZydcbmltcG9ydCB7XG4gIHN0YXJ0VGltZW91dCxcbiAgc3RvcFRpbWVvdXQsXG4gIHN0YXJ0SW50ZXJ2YWwsXG4gIHN0b3BJbnRlcnZhbCxcbn0gZnJvbSAnLi4vLi4vLi4vdGltZXInXG5pbXBvcnQgeyBzdGF0ZSB9IGZyb20gJy4uLy4uJ1xuXG5jb25zdCBTVFJFQU1fSUNPTlMgPSB7XG4gIGV5ZVNob3c6IGAke0NPTlRFTlRfVVJMfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9pY29ucy9leWUucG5nYCxcbiAgZXllSGlkZTogYCR7Q09OVEVOVF9VUkx9L2FkbWluX3Rvb2xraXQvYXNzZXRzL2ljb25zL2V5ZS1vZmYucG5nYCxcbn1cblxuY29uc3QgQVVUT19ISURFX0RVUkFUSU9OX1NFQ09ORFMgPSAzMFxuY29uc3QgU1RSRUFNX0tFWV9USU1FT1VUX0FDVElPTiA9ICd2aWRlb19jb250cm9sX3N0cmVhbV9rZXlfdGltZW91dCdcbmNvbnN0IFNUUkVBTV9LRVlfSU5URVJWQUxfQUNUSU9OID0gJ3ZpZGVvX2NvbnRyb2xfc3RyZWFtX2tleV9pbnRlcnZhbCdcbmNvbnN0IFJUTVBfU0VSVkVSX1VSTCA9ICdydG1wczovL2RjbC5ydG1wLmxpdmVraXQuY2xvdWQveCdcblxuZXhwb3J0IGZ1bmN0aW9uIFNob3dTdHJlYW1LZXkoe1xuICBzY2FsZUZhY3RvcixcbiAgZW5naW5lLFxuICB2aWRlbyxcbiAgZW50aXR5LFxuICBvblJlc2V0LFxuICBlbmRzQXQsXG59OiB7XG4gIGVuZHNBdDogbnVtYmVyXG4gIHNjYWxlRmFjdG9yOiBudW1iZXJcbiAgZW5naW5lOiBJRW5naW5lXG4gIGVudGl0eTogRW50aXR5XG4gIHZpZGVvOiBEZWVwUmVhZG9ubHlPYmplY3Q8UEJWaWRlb1BsYXllcj4gfCB1bmRlZmluZWRcbiAgb25SZXNldCgpOiB2b2lkXG59KSB7XG4gIGNvbnN0IGNvbnRyb2xzID0gY3JlYXRlVmlkZW9QbGF5ZXJDb250cm9scyhlbnRpdHksIGVuZ2luZSlcbiAgY29uc3QgW3Nob3dTdHJlYW1rZXksIHNldFNob3dTdHJlYW1rZXldID0gUmVhY3RFY3MudXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtsb2FkaW5nLCBzZXRMb2FkaW5nXSA9IFJlYWN0RWNzLnVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbc3RyZWFtS2V5LCBzZXRTdHJlYW1LZXldID0gUmVhY3RFY3MudXNlU3RhdGU8c3RyaW5nIHwgdW5kZWZpbmVkPihcbiAgICB1bmRlZmluZWQsXG4gIClcbiAgY29uc3QgW3RpbWVSZW1haW5pbmcsIHNldFRpbWVSZW1haW5pbmddID0gUmVhY3RFY3MudXNlU3RhdGUoXG4gICAgQVVUT19ISURFX0RVUkFUSU9OX1NFQ09ORFMsXG4gIClcblxuICAvLyBhdXRvLWhpZGUgc3RyZWFtIGtleSBhZnRlciBzcGVjaWZpZWQgZHVyYXRpb25cbiAgUmVhY3RFY3MudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoc3RyZWFtS2V5KSB7XG4gICAgICBzZXRUaW1lUmVtYWluaW5nKEFVVE9fSElERV9EVVJBVElPTl9TRUNPTkRTKVxuXG4gICAgICBzdGFydFRpbWVvdXQoXG4gICAgICAgIHN0YXRlLmFkbWluVG9vbGtpdFVpRW50aXR5LFxuICAgICAgICBTVFJFQU1fS0VZX1RJTUVPVVRfQUNUSU9OLFxuICAgICAgICBBVVRPX0hJREVfRFVSQVRJT05fU0VDT05EUyxcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHNldFN0cmVhbUtleSh1bmRlZmluZWQpXG4gICAgICAgICAgc2V0U2hvd1N0cmVhbWtleShmYWxzZSlcbiAgICAgICAgICBzZXRUaW1lUmVtYWluaW5nKDApXG4gICAgICAgIH0sXG4gICAgICApXG5cbiAgICAgIHN0YXJ0SW50ZXJ2YWwoXG4gICAgICAgIHN0YXRlLmFkbWluVG9vbGtpdFVpRW50aXR5LFxuICAgICAgICBTVFJFQU1fS0VZX0lOVEVSVkFMX0FDVElPTixcbiAgICAgICAgMC4xLFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgc2V0VGltZVJlbWFpbmluZygocHJldikgPT4gTWF0aC5tYXgoMCwgcHJldiAtIDAuMSkpXG4gICAgICAgIH0sXG4gICAgICApXG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHN0b3BUaW1lb3V0KHN0YXRlLmFkbWluVG9vbGtpdFVpRW50aXR5LCBTVFJFQU1fS0VZX1RJTUVPVVRfQUNUSU9OKVxuICAgICAgICBzdG9wSW50ZXJ2YWwoc3RhdGUuYWRtaW5Ub29sa2l0VWlFbnRpdHksIFNUUkVBTV9LRVlfSU5URVJWQUxfQUNUSU9OKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXRUaW1lUmVtYWluaW5nKDApXG4gICAgfVxuICB9LCBbc3RyZWFtS2V5XSlcblxuICByZXR1cm4gKFxuICAgIDxVaUVudGl0eSB1aVRyYW5zZm9ybT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyB9fT5cbiAgICAgIDxMYWJlbFxuICAgICAgICB2YWx1ZT1cIjxiPlJUTVAgU2VydmVyPC9iPlwiXG4gICAgICAgIGNvbG9yPXtDb2xvcjQuV2hpdGUoKX1cbiAgICAgICAgZm9udFNpemU9ezE2ICogc2NhbGVGYWN0b3J9XG4gICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgbWFyZ2luOiB7IHRvcDogMTYgKiBzY2FsZUZhY3RvciwgYm90dG9tOiA4ICogc2NhbGVGYWN0b3IgfSxcbiAgICAgICAgfX1cbiAgICAgIC8+XG4gICAgICA8VWlFbnRpdHlcbiAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgIG1hcmdpbjogeyBib3R0b206IDggKiBzY2FsZUZhY3RvciwgdG9wOiA4ICogc2NhbGVGYWN0b3IgfSxcbiAgICAgICAgICBoZWlnaHQ6IDQyICogc2NhbGVGYWN0b3IsXG4gICAgICAgICAgYm9yZGVyUmFkaXVzOiAxMiAqIHNjYWxlRmFjdG9yLFxuICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdyb3cnLFxuICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnc3BhY2UtYmV0d2VlbicsXG4gICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgIH19XG4gICAgICAgIHVpQmFja2dyb3VuZD17eyBjb2xvcjogQ29sb3I0LldoaXRlKCkgfX1cbiAgICAgID5cbiAgICAgICAgPExhYmVsXG4gICAgICAgICAgdWlUcmFuc2Zvcm09e3sgbWFyZ2luOiB7IGxlZnQ6IDE2ICogc2NhbGVGYWN0b3IgfSB9fVxuICAgICAgICAgIGZvbnRTaXplPXsxNiAqIHNjYWxlRmFjdG9yfVxuICAgICAgICAgIHZhbHVlPXtgPGI+JHtSVE1QX1NFUlZFUl9VUkx9PC9iPmB9XG4gICAgICAgICAgY29sb3I9e0NvbG9yNC5mcm9tSGV4U3RyaW5nKCcjQTA5QkE4Jyl9XG4gICAgICAgIC8+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBpZD1cInZpZGVvX2NvbnRyb2xfY29weV9ydG1wX3NlcnZlclwiXG4gICAgICAgICAgdmFsdWU9XCI8Yj5Db3B5PC9iPlwiXG4gICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgIGZvbnRTaXplPXsxNiAqIHNjYWxlRmFjdG9yfVxuICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICBtYXJnaW46IHsgcmlnaHQ6IDggKiBzY2FsZUZhY3RvciB9LFxuICAgICAgICAgICAgcGFkZGluZzogeyBsZWZ0OiA4ICogc2NhbGVGYWN0b3IsIHJpZ2h0OiA4ICogc2NhbGVGYWN0b3IgfSxcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uTW91c2VEb3duPXthc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBjb3B5VG9DbGlwYm9hcmQoeyB0ZXh0OiBSVE1QX1NFUlZFUl9VUkwgfSlcbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgPC9VaUVudGl0eT5cbiAgICAgIDxMYWJlbFxuICAgICAgICB2YWx1ZT1cIjxiPlN0cmVhbSBLZXk8Yj5cIlxuICAgICAgICBjb2xvcj17Q29sb3I0LldoaXRlKCl9XG4gICAgICAgIGZvbnRTaXplPXsxNiAqIHNjYWxlRmFjdG9yfVxuICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgIG1hcmdpbjogeyB0b3A6IDE2ICogc2NhbGVGYWN0b3IsIGJvdHRvbTogOCAqIHNjYWxlRmFjdG9yIH0sXG4gICAgICAgIH19XG4gICAgICAvPlxuICAgICAge2xvYWRpbmcgPyAoXG4gICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgbWFyZ2luOiB7IGJvdHRvbTogOCAqIHNjYWxlRmFjdG9yLCB0b3A6IDggKiBzY2FsZUZhY3RvciB9LFxuICAgICAgICAgICAgaGVpZ2h0OiA0MiAqIHNjYWxlRmFjdG9yLFxuICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxMb2FkaW5nRG90cyBzY2FsZUZhY3Rvcj17c2NhbGVGYWN0b3J9IGVuZ2luZT17ZW5naW5lfSAvPlxuICAgICAgICA8L1VpRW50aXR5PlxuICAgICAgKSA6IChcbiAgICAgICAgPFVpRW50aXR5XG4gICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICBtYXJnaW46IHsgYm90dG9tOiA4ICogc2NhbGVGYWN0b3IsIHRvcDogOCAqIHNjYWxlRmFjdG9yIH0sXG4gICAgICAgICAgICBoZWlnaHQ6IDQyICogc2NhbGVGYWN0b3IsXG4gICAgICAgICAgICBib3JkZXJSYWRpdXM6IDEyICogc2NhbGVGYWN0b3IsXG4gICAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAncm93JyxcbiAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnc3BhY2UtYmV0d2VlbicsXG4gICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICB9fVxuICAgICAgICAgIHVpQmFja2dyb3VuZD17eyBjb2xvcjogQ29sb3I0LldoaXRlKCkgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxMYWJlbFxuICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3sgbWFyZ2luOiB7IGxlZnQ6IDE2ICogc2NhbGVGYWN0b3IgfSB9fVxuICAgICAgICAgICAgZm9udFNpemU9ezE2ICogc2NhbGVGYWN0b3J9XG4gICAgICAgICAgICB2YWx1ZT17YDxiPiR7c2hvd1N0cmVhbWtleSAmJiBzdHJlYW1LZXkgPyBzdHJlYW1LZXkgOiAnKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqJ308L2I+YH1cbiAgICAgICAgICAgIGNvbG9yPXtDb2xvcjQuZnJvbUhleFN0cmluZygnI0EwOUJBOCcpfVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPFVpRW50aXR5XG4gICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAncm93JyxcbiAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICAgIHdpZHRoOiAyNSAqIHNjYWxlRmFjdG9yLFxuICAgICAgICAgICAgICAgIGhlaWdodDogMjUgKiBzY2FsZUZhY3RvcixcbiAgICAgICAgICAgICAgICBtYXJnaW46IHsgcmlnaHQ6IDEwICogc2NhbGVGYWN0b3IgfSxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgdWlCYWNrZ3JvdW5kPXt7XG4gICAgICAgICAgICAgICAgdGV4dHVyZU1vZGU6ICdzdHJldGNoJyxcbiAgICAgICAgICAgICAgICB0ZXh0dXJlOiB7XG4gICAgICAgICAgICAgICAgICBzcmM6XG4gICAgICAgICAgICAgICAgICAgIHNob3dTdHJlYW1rZXkgJiYgc3RyZWFtS2V5XG4gICAgICAgICAgICAgICAgICAgICAgPyBTVFJFQU1fSUNPTlMuZXllSGlkZVxuICAgICAgICAgICAgICAgICAgICAgIDogU1RSRUFNX0lDT05TLmV5ZVNob3csXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBjb2xvcjogQ29sb3I0LkJsYWNrKCksXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIG9uTW91c2VEb3duPXthc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFzdHJlYW1LZXkpIHtcbiAgICAgICAgICAgICAgICAgIHNldExvYWRpbmcodHJ1ZSlcbiAgICAgICAgICAgICAgICAgIGNvbnN0IFtlcnJvciwgZGF0YV0gPSBhd2FpdCBnZXRTdHJlYW1LZXkoKVxuICAgICAgICAgICAgICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgICAgICAgICAgICAgIGlmICghZXJyb3IgJiYgZGF0YT8uc3RyZWFtaW5nS2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFN0cmVhbUtleShkYXRhLnN0cmVhbWluZ0tleSlcbiAgICAgICAgICAgICAgICAgICAgc2V0U2hvd1N0cmVhbWtleSh0cnVlKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBzZXRTaG93U3RyZWFta2V5KCFzaG93U3RyZWFta2V5KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIGlkPVwidmlkZW9fY29udHJvbF9jb3B5X3N0cmVhbV9rZXlcIlxuICAgICAgICAgICAgICB2YWx1ZT1cIjxiPkNvcHk8L2I+XCJcbiAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICBmb250U2l6ZT17MTYgKiBzY2FsZUZhY3Rvcn1cbiAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgICBtYXJnaW46IHsgcmlnaHQ6IDggKiBzY2FsZUZhY3RvciB9LFxuICAgICAgICAgICAgICAgIHBhZGRpbmc6IHsgbGVmdDogOCAqIHNjYWxlRmFjdG9yLCByaWdodDogOCAqIHNjYWxlRmFjdG9yIH0sXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIG9uTW91c2VEb3duPXthc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHN0cmVhbUtleSkge1xuICAgICAgICAgICAgICAgICAgY29weVRvQ2xpcGJvYXJkKHsgdGV4dDogc3RyZWFtS2V5IH0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBkaXNhYmxlZD17IXN0cmVhbUtleX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9VaUVudGl0eT5cbiAgICAgICAgPC9VaUVudGl0eT5cbiAgICAgICl9XG4gICAgICA8VWlFbnRpdHlcbiAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgIGhlaWdodDogNCAqIHNjYWxlRmFjdG9yLFxuICAgICAgICAgIG1hcmdpbjogeyB0b3A6IDggKiBzY2FsZUZhY3RvciB9LFxuICAgICAgICAgIGRpc3BsYXk6XG4gICAgICAgICAgICBzdHJlYW1LZXkgJiYgdGltZVJlbWFpbmluZyA+IDAgJiYgc2hvd1N0cmVhbWtleSA/ICdmbGV4JyA6ICdub25lJyxcbiAgICAgICAgfX1cbiAgICAgICAgdWlCYWNrZ3JvdW5kPXt7IGNvbG9yOiBDb2xvcjQuZnJvbUhleFN0cmluZygnI0ZGRkZGRjFBJykgfX1cbiAgICAgID5cbiAgICAgICAgPFVpRW50aXR5XG4gICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgIHdpZHRoOiBgJHsodGltZVJlbWFpbmluZyAvIEFVVE9fSElERV9EVVJBVElPTl9TRUNPTkRTKSAqIDEwMH0lYCxcbiAgICAgICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICAgIH19XG4gICAgICAgICAgdWlCYWNrZ3JvdW5kPXt7IGNvbG9yOiBDb2xvcjQuZnJvbUhleFN0cmluZygnIzAwRDNGRicpIH19XG4gICAgICAgIC8+XG4gICAgICA8L1VpRW50aXR5PlxuXG4gICAgICA8VWlFbnRpdHlcbiAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgIGhlaWdodDogNDAgKiBzY2FsZUZhY3RvcixcbiAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAncm93JyxcbiAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nLFxuICAgICAgICAgIG1hcmdpbjogeyB0b3A6IDEwICogc2NhbGVGYWN0b3IsIGJvdHRvbTogMTYgKiBzY2FsZUZhY3RvciB9LFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICB7ZW5kc0F0ID4gRGF0ZS5ub3coKSA/IChcbiAgICAgICAgICA8VWlFbnRpdHkgdWlUcmFuc2Zvcm09e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicgfX0+XG4gICAgICAgICAgICA8TGFiZWxcbiAgICAgICAgICAgICAgdmFsdWU9XCJTdHJlYW0gZXhwaXJlcyBpbjpcIlxuICAgICAgICAgICAgICBjb2xvcj17Q29sb3I0LmZyb21IZXhTdHJpbmcoJyNGRkZGRkZCMicpfVxuICAgICAgICAgICAgICBmb250U2l6ZT17MTQgKiBzY2FsZUZhY3Rvcn1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8TGFiZWxcbiAgICAgICAgICAgICAgdmFsdWU9e2Zvcm1hdFRpbWVSZW1haW5pbmcoZW5kc0F0KX1cbiAgICAgICAgICAgICAgY29sb3I9e0NvbG9yNC5mcm9tSGV4U3RyaW5nKCcjRkZGRkZGQjInKX1cbiAgICAgICAgICAgICAgZm9udFNpemU9ezE0ICogc2NhbGVGYWN0b3J9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPFVpRW50aXR5XG4gICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAncm93JyxcbiAgICAgICAgICAgICAgbWFyZ2luOiB7IHJpZ2h0OiAxMCAqIHNjYWxlRmFjdG9yIH0sXG4gICAgICAgICAgICAgIGJvcmRlcldpZHRoOiAyLFxuICAgICAgICAgICAgICBib3JkZXJDb2xvcjogQ29sb3I0LkdyZWVuKCksXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxNSAqIHNjYWxlRmFjdG9yLFxuICAgICAgICAgICAgICAgIGhlaWdodDogMTUgKiBzY2FsZUZhY3RvcixcbiAgICAgICAgICAgICAgICBtYXJnaW46IHsgcmlnaHQ6IDQgKiBzY2FsZUZhY3RvciwgdG9wOiA0ICogc2NhbGVGYWN0b3IgfSxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgdWlCYWNrZ3JvdW5kPXt7XG4gICAgICAgICAgICAgICAgdGV4dHVyZU1vZGU6ICdzdHJldGNoJyxcbiAgICAgICAgICAgICAgICB0ZXh0dXJlOiB7XG4gICAgICAgICAgICAgICAgICBzcmM6IEVSUk9SX0lDT04sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8TGFiZWxcbiAgICAgICAgICAgICAgZm9udFNpemU9ezE0ICogc2NhbGVGYWN0b3J9XG4gICAgICAgICAgICAgIHRleHRBbGlnbj1cIm1pZGRsZS1sZWZ0XCJcbiAgICAgICAgICAgICAgY29sb3I9e0NvbG9yNC5mcm9tSGV4U3RyaW5nKCcjRkYwMDAwJyl9XG4gICAgICAgICAgICAgIHZhbHVlPVwiU3RyZWFtIHRpbWVkIG91dC4gUGxlYXNlIHJlc3RhcnQgc3RyZWFtIGluIGJyb2FkY2FzdGluZyBzb2Z0d2FyZS5cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1VpRW50aXR5PlxuICAgICAgICApfVxuICAgICAgICB7dmlkZW8/LnNyYyA9PT0gTElWRUtJVF9TVFJFQU1fU1JDID8gKFxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIGlkPVwidmlkZW9fY29udHJvbF9zaGFyZV9zY3JlZW5fY2xlYXJcIlxuICAgICAgICAgICAgdmFsdWU9XCI8Yj5EZWFjdGl2YXRlPC9iPlwiXG4gICAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgICBmb250U2l6ZT17MTYgKiBzY2FsZUZhY3Rvcn1cbiAgICAgICAgICAgIGNvbG9yPXtDb2xvcjQuV2hpdGUoKX1cbiAgICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICAgIG1pbldpZHRoOiAxMjAgKiBzY2FsZUZhY3RvcixcbiAgICAgICAgICAgICAgbWFyZ2luOiB7IHJpZ2h0OiA4ICogc2NhbGVGYWN0b3IgfSxcbiAgICAgICAgICAgICAgcGFkZGluZzogeyBsZWZ0OiA4ICogc2NhbGVGYWN0b3IsIHJpZ2h0OiA4ICogc2NhbGVGYWN0b3IgfSxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBvbk1vdXNlRG93bj17KCkgPT4ge1xuICAgICAgICAgICAgICBjb250cm9scy5zZXRTb3VyY2UoJycpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIC8+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgaWQ9XCJ2aWRlb19jb250cm9sX3NoYXJlX3NjcmVlbl9zaGFyZVwiXG4gICAgICAgICAgICB2YWx1ZT1cIjxiPkFjdGl2YXRlPC9iPlwiXG4gICAgICAgICAgICBsYWJlbFRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICBtYXJnaW46IHsgbGVmdDogMjAgKiBzY2FsZUZhY3RvciwgcmlnaHQ6IDIwICogc2NhbGVGYWN0b3IgfSxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICBtaW5XaWR0aDogMTIwICogc2NhbGVGYWN0b3IsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgZm9udFNpemU9ezE2ICogc2NhbGVGYWN0b3J9XG4gICAgICAgICAgICB1aUJhY2tncm91bmQ9e3sgY29sb3I6IENPTE9SUy5TVUNDRVNTIH19XG4gICAgICAgICAgICBjb2xvcj17Q29sb3I0LkJsYWNrKCl9XG4gICAgICAgICAgICBvbk1vdXNlRG93bj17KCkgPT4ge1xuICAgICAgICAgICAgICBjb250cm9scy5zZXRTb3VyY2UoTElWRUtJVF9TVFJFQU1fU1JDKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9VaUVudGl0eT5cbiAgICAgIDxWaWRlb0NvbnRyb2xWb2x1bWVcbiAgICAgICAgZW5naW5lPXtlbmdpbmV9XG4gICAgICAgIGxhYmVsPVwiPGI+U3RyZWFtIFZvbHVtZTwvYj5cIlxuICAgICAgICBlbnRpdHk9e2VudGl0eX1cbiAgICAgICAgdmlkZW89e3ZpZGVvfVxuICAgICAgLz5cbiAgICAgIDxVaUVudGl0eT5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGlkPVwidmlkZW9fY29udHJvbF9yZXNldF9zdHJlYW1fa2V5XCJcbiAgICAgICAgICB2YWx1ZT1cIjxiPlJlc2V0IFN0cmVhbSBLZXk8L2I+XCJcbiAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgZm9udFNpemU9ezE2ICogc2NhbGVGYWN0b3J9XG4gICAgICAgICAgY29sb3I9e0NvbG9yNC5mcm9tSGV4U3RyaW5nKCcjRkIzQjNCJyl9XG4gICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgIG1hcmdpbjogeyByaWdodDogOCAqIHNjYWxlRmFjdG9yLCB0b3A6IDIwICogc2NhbGVGYWN0b3IgfSxcbiAgICAgICAgICAgIHBhZGRpbmc6IHsgbGVmdDogOCAqIHNjYWxlRmFjdG9yLCByaWdodDogOCAqIHNjYWxlRmFjdG9yIH0sXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbk1vdXNlRG93bj17KCkgPT4gb25SZXNldCgpfVxuICAgICAgICAvPlxuICAgICAgPC9VaUVudGl0eT5cbiAgICA8L1VpRW50aXR5PlxuICApXG59XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byBmb3JtYXQgdGltZSByZW1haW5pbmcgLSBzaG93cyBkYXlzIGlmID4gMSBkYXksIG90aGVyd2lzZSBzaG93cyBoaDptbTpzc1xuZnVuY3Rpb24gZm9ybWF0VGltZVJlbWFpbmluZyhlbmRzQXQ6IG51bWJlcik6IHN0cmluZyB7XG4gIGNvbnN0IG5vdyA9IERhdGUubm93KClcbiAgY29uc3QgdGltZVJlbWFpbmluZyA9IE1hdGgubWF4KDAsIGVuZHNBdCAtIG5vdylcblxuICBjb25zdCBkYXlzID0gTWF0aC5mbG9vcih0aW1lUmVtYWluaW5nIC8gKDEwMDAgKiA2MCAqIDYwICogMjQpKVxuXG4gIGlmIChkYXlzID49IDEpIHtcbiAgICByZXR1cm4gYCR7ZGF5c30gJHtkYXlzID09PSAxID8gJ2RheScgOiAnZGF5cyd9YFxuICB9IGVsc2Uge1xuICAgIGNvbnN0IGhvdXJzID0gTWF0aC5mbG9vcih0aW1lUmVtYWluaW5nIC8gKDEwMDAgKiA2MCAqIDYwKSlcbiAgICBjb25zdCBtaW51dGVzID0gTWF0aC5mbG9vcigodGltZVJlbWFpbmluZyAlICgxMDAwICogNjAgKiA2MCkpIC8gKDEwMDAgKiA2MCkpXG4gICAgY29uc3Qgc2Vjb25kcyA9IE1hdGguZmxvb3IoKHRpbWVSZW1haW5pbmcgJSAoMTAwMCAqIDYwKSkgLyAxMDAwKVxuICAgIHJldHVybiBgJHtob3Vycy50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9OiR7bWludXRlcy50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9OiR7c2Vjb25kcy50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9YFxuICB9XG59XG4iXX0=
|