@dcl/asset-packs 2.16.2 → 2.16.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/index.js +445 -325
- package/dist/admin-toolkit-ui/Active.d.ts +3 -2
- package/dist/admin-toolkit-ui/Active.js +1 -1
- package/dist/admin-toolkit-ui/Card.d.ts +2 -1
- package/dist/admin-toolkit-ui/Card.js +1 -1
- package/dist/admin-toolkit-ui/FeedbackButton.js +2 -2
- package/dist/admin-toolkit-ui/Loading.d.ts +3 -2
- package/dist/admin-toolkit-ui/Loading.js +1 -1
- package/dist/admin-toolkit-ui/ModerationControl/AddUserInput.d.ts +1 -1
- package/dist/admin-toolkit-ui/ModerationControl/AddUserInput.js +1 -1
- package/dist/admin-toolkit-ui/ModerationControl/BanUserDescription.js +1 -1
- package/dist/admin-toolkit-ui/ModerationControl/RemoveAdminConfirmation.js +4 -4
- package/dist/admin-toolkit-ui/ModerationControl/UsersList.js +16 -14
- package/dist/admin-toolkit-ui/ModerationControl/index.d.ts +0 -7
- package/dist/admin-toolkit-ui/ModerationControl/index.js +4 -9
- package/dist/admin-toolkit-ui/SmartItemsControl.js +15 -33
- package/dist/admin-toolkit-ui/TextAnnouncementsControl.js +14 -12
- package/dist/admin-toolkit-ui/VideoControl/DclCast/CompactDclCast.js +7 -9
- package/dist/admin-toolkit-ui/VideoControl/DclCast/DclCastInfo.js +4 -3
- package/dist/admin-toolkit-ui/VideoControl/DclCast/index.d.ts +0 -14
- package/dist/admin-toolkit-ui/VideoControl/DclCast/index.js +32 -136
- package/dist/admin-toolkit-ui/VideoControl/DclCast/presentation-detector.d.ts +2 -0
- package/dist/admin-toolkit-ui/VideoControl/DclCast/presentation-detector.js +116 -0
- package/dist/admin-toolkit-ui/VideoControl/LiveStream/DeleteStreamKey.d.ts +1 -1
- package/dist/admin-toolkit-ui/VideoControl/LiveStream/DeleteStreamKey.js +2 -2
- package/dist/admin-toolkit-ui/VideoControl/LiveStream/GenerateStreamKey.d.ts +1 -1
- package/dist/admin-toolkit-ui/VideoControl/LiveStream/GenerateStreamKey.js +2 -2
- package/dist/admin-toolkit-ui/VideoControl/LiveStream/ShowStreamKey.js +5 -4
- package/dist/admin-toolkit-ui/VideoControl/LiveStream/index.js +2 -2
- package/dist/admin-toolkit-ui/VideoControl/api.d.ts +5 -2
- package/dist/admin-toolkit-ui/VideoControl/api.js +22 -12
- package/dist/admin-toolkit-ui/VideoControl/index.js +14 -15
- package/dist/admin-toolkit-ui/VideoControl/utils.d.ts +2 -0
- package/dist/admin-toolkit-ui/VideoControl/utils.js +15 -3
- package/dist/admin-toolkit-ui/actions.d.ts +42 -0
- package/dist/admin-toolkit-ui/actions.js +138 -0
- package/dist/admin-toolkit-ui/admin-message-bus.js +17 -2
- package/dist/admin-toolkit-ui/index.d.ts +0 -3
- package/dist/admin-toolkit-ui/index.js +20 -93
- package/dist/admin-toolkit-ui/store.d.ts +2 -0
- package/dist/admin-toolkit-ui/store.js +45 -0
- package/dist/admin-toolkit-ui/types.d.ts +22 -5
- package/dist/admin-toolkit-ui/types.js +1 -2
- package/dist/bin/index.js +445 -325
- package/package.json +1 -1
- package/dist/admin-toolkit-ui/RewardsControl.d.ts +0 -7
- package/dist/admin-toolkit-ui/RewardsControl.js +0 -95
|
@@ -2,13 +2,12 @@ import ReactEcs, { UiEntity } from '@dcl/react-ecs';
|
|
|
2
2
|
import { Color4 } from '@dcl/sdk/math';
|
|
3
3
|
import { getComponents } from '../../../definitions';
|
|
4
4
|
import { getContentUrl } from '../../constants';
|
|
5
|
-
import { setInterval, clearInterval } from '../../utils';
|
|
6
5
|
import { Button } from '../../Button';
|
|
7
6
|
import { LoadingDots } from '../../Loading';
|
|
8
|
-
import { nextTickFunctions } from '../..';
|
|
9
7
|
import { LIVEKIT_STREAM_SRC } from '../LiveStream';
|
|
10
|
-
import { getDclCastInfo, getActiveStreams, groupTracksByParticipant, resetStreamKey,
|
|
11
|
-
import {
|
|
8
|
+
import { getDclCastInfo, getActiveStreams, groupTracksByParticipant, resetStreamKey, ensurePresenterRole, } from '../api';
|
|
9
|
+
import { CAST_SRC_PREFIX, createVideoPlayerControls } from '../utils';
|
|
10
|
+
import { openShowcase, closeShowcase, setShowcaseActiveTrack, openSharePresentation, closeSharePresentation, setStream, setParticipants, setDclCastInfo, minimizeCast, } from '../../actions';
|
|
12
11
|
import DclCastInfo from './DclCastInfo';
|
|
13
12
|
import CompactDclCast from './CompactDclCast';
|
|
14
13
|
import { getDclCastStyles, getDclCastColors } from './styles';
|
|
@@ -20,23 +19,7 @@ const ICONS = {
|
|
|
20
19
|
return `${getContentUrl()}/admin_toolkit/assets/icons/chevron-up.png`;
|
|
21
20
|
},
|
|
22
21
|
};
|
|
23
|
-
|
|
24
|
-
show: false,
|
|
25
|
-
participants: [],
|
|
26
|
-
activeTrackSid: undefined,
|
|
27
|
-
onSelectTrack: undefined,
|
|
28
|
-
onSetDefault: undefined,
|
|
29
|
-
onClose: undefined,
|
|
30
|
-
};
|
|
31
|
-
export const sharePresentationState = {
|
|
32
|
-
show: false,
|
|
33
|
-
onClose: undefined,
|
|
34
|
-
};
|
|
35
|
-
let presentationSubscribed = false;
|
|
36
|
-
let consuming = false;
|
|
37
|
-
let presentationSystem = null;
|
|
38
|
-
let participantPollingSystem = null;
|
|
39
|
-
export async function handleGetDclCastInfo(state) {
|
|
22
|
+
async function handleGetDclCastInfo() {
|
|
40
23
|
const [error, data] = await getDclCastInfo();
|
|
41
24
|
if (error) {
|
|
42
25
|
console.error(error);
|
|
@@ -44,73 +27,11 @@ export async function handleGetDclCastInfo(state) {
|
|
|
44
27
|
}
|
|
45
28
|
else {
|
|
46
29
|
if (data) {
|
|
47
|
-
|
|
30
|
+
setDclCastInfo(data);
|
|
48
31
|
return data;
|
|
49
32
|
}
|
|
50
33
|
}
|
|
51
34
|
}
|
|
52
|
-
function startPresentationSystem(engine, state) {
|
|
53
|
-
if (presentationSystem)
|
|
54
|
-
return;
|
|
55
|
-
presentationSubscribed = true;
|
|
56
|
-
subscribeToPresentationTopic();
|
|
57
|
-
const system = () => {
|
|
58
|
-
if (consuming)
|
|
59
|
-
return;
|
|
60
|
-
consuming = true;
|
|
61
|
-
consumePresentationMessages()
|
|
62
|
-
.then(latestState => {
|
|
63
|
-
if (latestState === 'stopped') {
|
|
64
|
-
state.videoControl.presentationState = undefined;
|
|
65
|
-
}
|
|
66
|
-
else if (latestState) {
|
|
67
|
-
state.videoControl.presentationState = latestState;
|
|
68
|
-
}
|
|
69
|
-
})
|
|
70
|
-
.catch(() => {
|
|
71
|
-
console.log('[DclCast] Failed to consume presentation messages');
|
|
72
|
-
})
|
|
73
|
-
.finally(() => {
|
|
74
|
-
consuming = false;
|
|
75
|
-
});
|
|
76
|
-
};
|
|
77
|
-
engine.addSystem(system);
|
|
78
|
-
presentationSystem = system;
|
|
79
|
-
}
|
|
80
|
-
function stopPresentationSystem(engine, state) {
|
|
81
|
-
if (presentationSystem) {
|
|
82
|
-
engine.removeSystem(presentationSystem);
|
|
83
|
-
presentationSystem = null;
|
|
84
|
-
}
|
|
85
|
-
state.videoControl.presentationState = undefined;
|
|
86
|
-
presentationSubscribed = false;
|
|
87
|
-
}
|
|
88
|
-
function startParticipantPolling(engine, state) {
|
|
89
|
-
if (participantPollingSystem)
|
|
90
|
-
return;
|
|
91
|
-
const poll = async () => {
|
|
92
|
-
const tracks = await getActiveStreams();
|
|
93
|
-
if (!tracks)
|
|
94
|
-
return;
|
|
95
|
-
showcaseState.participants = groupTracksByParticipant(tracks);
|
|
96
|
-
const hasPresentation = hasPresentationTrack(tracks);
|
|
97
|
-
if (hasPresentation && !presentationSubscribed) {
|
|
98
|
-
startPresentationSystem(engine, state);
|
|
99
|
-
}
|
|
100
|
-
else if (!hasPresentation && presentationSubscribed) {
|
|
101
|
-
stopPresentationSystem(engine, state);
|
|
102
|
-
}
|
|
103
|
-
};
|
|
104
|
-
poll();
|
|
105
|
-
participantPollingSystem = setInterval(engine, poll, 5000);
|
|
106
|
-
}
|
|
107
|
-
function stopParticipantPolling(engine, state) {
|
|
108
|
-
if (participantPollingSystem) {
|
|
109
|
-
clearInterval(engine, participantPollingSystem);
|
|
110
|
-
participantPollingSystem = null;
|
|
111
|
-
}
|
|
112
|
-
stopPresentationSystem(engine, state);
|
|
113
|
-
}
|
|
114
35
|
const DclCast = ({ engine, state, entity, video, playerAddress, }) => {
|
|
115
36
|
const { VideoControlState } = getComponents(engine);
|
|
116
37
|
const controls = createVideoPlayerControls(entity, engine);
|
|
@@ -122,45 +43,35 @@ const DclCast = ({ engine, state, entity, video, playerAddress, }) => {
|
|
|
122
43
|
const latestTracks = await getActiveStreams();
|
|
123
44
|
if (!latestTracks)
|
|
124
45
|
return;
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
state.videoControl.selectedStream = 'dcl-cast';
|
|
139
|
-
};
|
|
140
|
-
showcaseState.onClose = closeModal;
|
|
141
|
-
nextTickFunctions.push(() => {
|
|
142
|
-
showcaseState.show = true;
|
|
46
|
+
setParticipants(groupTracksByParticipant(latestTracks));
|
|
47
|
+
openShowcase({
|
|
48
|
+
onSelectTrack: (track) => {
|
|
49
|
+
controls.setSource(track.sid);
|
|
50
|
+
setShowcaseActiveTrack(track.sid);
|
|
51
|
+
setStream('dcl-cast');
|
|
52
|
+
},
|
|
53
|
+
onSetDefault: () => {
|
|
54
|
+
controls.setSource(LIVEKIT_STREAM_SRC);
|
|
55
|
+
setShowcaseActiveTrack(undefined);
|
|
56
|
+
setStream('dcl-cast');
|
|
57
|
+
},
|
|
58
|
+
onClose: () => closeShowcase(),
|
|
143
59
|
});
|
|
144
60
|
};
|
|
145
61
|
const fetchDclCastInfo = async () => {
|
|
146
62
|
setIsLoading(true);
|
|
147
63
|
setError(false);
|
|
148
|
-
const result = await handleGetDclCastInfo(
|
|
64
|
+
const result = await handleGetDclCastInfo();
|
|
149
65
|
if (!result) {
|
|
150
66
|
setError(true);
|
|
151
67
|
}
|
|
152
|
-
else if (video?.src?.startsWith(
|
|
153
|
-
|
|
68
|
+
else if (video?.src?.startsWith(CAST_SRC_PREFIX) && !state.videoControl.selectedStream) {
|
|
69
|
+
setStream('dcl-cast');
|
|
154
70
|
}
|
|
155
71
|
setIsLoading(false);
|
|
156
72
|
};
|
|
157
73
|
const onSharePresentation = () => {
|
|
158
|
-
|
|
159
|
-
sharePresentationState.show = false;
|
|
160
|
-
};
|
|
161
|
-
nextTickFunctions.push(() => {
|
|
162
|
-
sharePresentationState.show = true;
|
|
163
|
-
});
|
|
74
|
+
openSharePresentation(() => closeSharePresentation());
|
|
164
75
|
};
|
|
165
76
|
const handleResetRoomId = async () => {
|
|
166
77
|
setIsLoading(true);
|
|
@@ -176,31 +87,18 @@ const DclCast = ({ engine, state, entity, video, playerAddress, }) => {
|
|
|
176
87
|
}
|
|
177
88
|
};
|
|
178
89
|
ReactEcs.useEffect(() => {
|
|
179
|
-
fetchDclCastInfo()
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
90
|
+
fetchDclCastInfo().then(() => {
|
|
91
|
+
if (playerAddress) {
|
|
92
|
+
ensurePresenterRole(playerAddress);
|
|
93
|
+
}
|
|
94
|
+
});
|
|
183
95
|
}, []);
|
|
184
96
|
const videoSrc = video?.src;
|
|
185
97
|
ReactEcs.useEffect(() => {
|
|
186
|
-
if (videoSrc?.startsWith(
|
|
187
|
-
|
|
98
|
+
if (videoSrc?.startsWith(CAST_SRC_PREFIX) && !state.videoControl.selectedStream) {
|
|
99
|
+
setStream('dcl-cast');
|
|
188
100
|
}
|
|
189
101
|
}, [videoSrc]);
|
|
190
|
-
const isCastActive = !!(video?.src && isDclCast(video.src));
|
|
191
|
-
ReactEcs.useEffect(() => {
|
|
192
|
-
if (isCastActive) {
|
|
193
|
-
startParticipantPolling(engine, state);
|
|
194
|
-
}
|
|
195
|
-
else {
|
|
196
|
-
stopParticipantPolling(engine, state);
|
|
197
|
-
}
|
|
198
|
-
}, [isCastActive]);
|
|
199
|
-
ReactEcs.useEffect(() => {
|
|
200
|
-
if (state.videoControl.presentationState) {
|
|
201
|
-
state.videoControl.isMinimized = true;
|
|
202
|
-
}
|
|
203
|
-
}, [!!state.videoControl.presentationState]);
|
|
204
102
|
const isMinimized = state.videoControl.isMinimized;
|
|
205
103
|
return (ReactEcs.createElement(UiEntity, { uiTransform: styles.fullContainer },
|
|
206
104
|
ReactEcs.createElement(UiEntity, { uiTransform: { display: isMinimized ? 'flex' : 'none', width: '100%' } },
|
|
@@ -222,9 +120,7 @@ const DclCast = ({ engine, state, entity, video, playerAddress, }) => {
|
|
|
222
120
|
color: Color4.White(),
|
|
223
121
|
textAlign: 'middle-left',
|
|
224
122
|
}, uiTransform: { margin: { left: 10 } } })),
|
|
225
|
-
ReactEcs.createElement(UiEntity, { onMouseDown: () => {
|
|
226
|
-
state.videoControl.isMinimized = true;
|
|
227
|
-
}, uiTransform: styles.chevronButton, uiBackground: {
|
|
123
|
+
ReactEcs.createElement(UiEntity, { onMouseDown: () => minimizeCast(), uiTransform: styles.chevronButton, uiBackground: {
|
|
228
124
|
textureMode: 'stretch',
|
|
229
125
|
color: Color4.White(),
|
|
230
126
|
texture: {
|
|
@@ -252,9 +148,9 @@ const DclCast = ({ engine, state, entity, video, playerAddress, }) => {
|
|
|
252
148
|
color: Color4.Gray(),
|
|
253
149
|
} }),
|
|
254
150
|
ReactEcs.createElement(Button, { id: "dcl_cast_retry", value: "<b>Retry</b>", variant: "secondary", fontSize: 16, color: colors.white, onMouseDown: () => {
|
|
255
|
-
|
|
151
|
+
fetchDclCastInfo();
|
|
256
152
|
}, uiTransform: styles.retryButton }))),
|
|
257
153
|
!isLoading && !error && (ReactEcs.createElement(DclCastInfo, { state: state, entity: entity, engine: engine, video: video, onResetRoomId: handleResetRoomId, onShowShowcaseModal: onShowShowcaseModal, onSharePresentation: onSharePresentation })))));
|
|
258
154
|
};
|
|
259
155
|
export default DclCast;
|
|
260
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYWRtaW4tdG9vbGtpdC11aS9WaWRlb0NvbnRyb2wvRGNsQ2FzdC9pbmRleC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxRQUFRLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUMxQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUNMLGNBQWMsRUFDZCxnQkFBZ0IsRUFDaEIsd0JBQXdCLEVBQ3hCLGNBQWMsRUFDZCxvQkFBb0IsRUFDcEIsNEJBQTRCLEVBQzVCLDJCQUEyQixFQUMzQixtQkFBbUIsR0FHcEIsTUFBTSxRQUFRLENBQUM7QUFDaEIsT0FBTyxFQUFFLHlCQUF5QixFQUFFLFNBQVMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNoRSxPQUFPLFdBQVcsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxjQUFjLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRTlELE1BQU0sS0FBSyxHQUFHO0lBQ1osSUFBSSxhQUFhO1FBQ2YsT0FBTyxHQUFHLGFB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QUUsTUFBTSxFQUNkLE1BQU0sRUFBRSxNQUFNLEVBQ2QsS0FBSyxFQUFFLEtBQUssRUFDWixhQUFhLEVBQUUsaUJBQWlCLEVBQ2hDLG1CQUFtQixFQUFFLG1CQUFtQixFQUN4QyxtQkFBbUIsRUFBRSxtQkFBbUIsR0FDeEMsQ0FDSCxDQUNRLENBQ0YsQ0FDWixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsZUFBZSxPQUFPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3RFY3MsIHsgVWlFbnRpdHkgfSBmcm9tICdAZGNsL3JlYWN0LWVjcyc7XG5pbXBvcnQgdHlwZSB7IERlZXBSZWFkb25seU9iamVjdCwgRW50aXR5LCBJRW5naW5lLCBQQlZpZGVvUGxheWVyIH0gZnJvbSAnQGRjbC9lY3MnO1xuaW1wb3J0IHsgQ29sb3I0IH0gZnJvbSAnQGRjbC9zZGsvbWF0aCc7XG5pbXBvcnQgeyBnZXRDb21wb25lbnRzIH0gZnJvbSAnLi4vLi4vLi4vZGVmaW5pdGlvbnMnO1xuaW1wb3J0IHsgZ2V0Q29udGVudFVybCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgdHlwZSB7IFN0YXRlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgc2V0SW50ZXJ2YWwsIGNsZWFySW50ZXJ2YWwgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tICcuLi8uLi9CdXR0b24nO1xuaW1wb3J0IHsgTG9hZGluZ0RvdHMgfSBmcm9tICcuLi8uLi9Mb2FkaW5nJztcbmltcG9ydCB7IG5leHRUaWNrRnVuY3Rpb25zIH0gZnJvbSAnLi4vLi4nO1xuaW1wb3J0IHsgTElWRUtJVF9TVFJFQU1fU1JDIH0gZnJvbSAnLi4vTGl2ZVN0cmVhbSc7XG5pbXBvcnQge1xuICBnZXREY2xDYXN0SW5mbyxcbiAgZ2V0QWN0aXZlU3RyZWFtcyxcbiAgZ3JvdXBUcmFja3NCeVBhcnRpY2lwYW50LFxuICByZXNldFN0cmVhbUtleSxcbiAgaGFzUHJlc2VudGF0aW9uVHJhY2ssXG4gIHN1YnNjcmliZVRvUHJlc2VudGF0aW9uVG9waWMsXG4gIGNvbnN1bWVQcmVzZW50YXRpb25NZXNzYWdlcyxcbiAgZW5zdXJlUHJlc2VudGVyUm9sZSxcbiAgdHlwZSBGbGF0dGVuZWRUcmFjayxcbiAgdHlwZSBQYXJ0aWNpcGFudCxcbn0gZnJvbSAnLi4vYXBpJztcbmltcG9ydCB7IGNyZWF0ZVZpZGVvUGxheWVyQ29udHJvbHMsIGlzRGNsQ2FzdCB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCBEY2xDYXN0SW5mbyBmcm9tICcuL0RjbENhc3RJbmZvJztcbmltcG9ydCBDb21wYWN0RGNsQ2FzdCBmcm9tICcuL0NvbXBhY3REY2xDYXN0JztcbmltcG9ydCB7IGdldERjbENhc3RTdHlsZXMsIGdldERjbENhc3RDb2xvcnMgfSBmcm9tICcuL3N0eWxlcyc7XG5cbmNvbnN0IElDT05TID0ge1xuICBnZXQgRENMX0NBU1RfSUNPTigpIHtcbiAgICByZXR1cm4gYCR7Z2V0Q29udGVudFVybCgpfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9pY29ucy92aWRlby1jb250cm9sLWRjbC1jYXN0LnBuZ2A7XG4gIH0sXG4gIGdldCBDSEVWUk9OX1VQKCkge1xuICAgIHJldHVybiBgJHtnZXRDb250ZW50VXJsKCl9L2FkbWluX3Rvb2xraXQvYXNzZXRzL2ljb25zL2NoZXZyb24tdXAucG5nYDtcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBzaG93Y2FzZVN0YXRlOiB7XG4gIHNob3c6IGJvb2xlYW47XG4gIHBhcnRpY2lwYW50czogUGFydGljaXBhbnRbXTtcbiAgYWN0aXZlVHJhY2tTaWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgb25TZWxlY3RUcmFjazogKCh0cmFjazogRmxhdHRlbmVkVHJhY2spID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuICBvblNldERlZmF1bHQ6ICgoKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcbiAgb25DbG9zZTogKCgpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xufSA9IHtcbiAgc2hvdzogZmFsc2UsXG4gIHBhcnRpY2lwYW50czogW10sXG4gIGFjdGl2ZVRyYWNrU2lkOiB1bmRlZmluZWQsXG4gIG9uU2VsZWN0VHJhY2s6IHVuZGVmaW5lZCxcbiAgb25TZXREZWZhdWx0OiB1bmRlZmluZWQsXG4gIG9uQ2xvc2U6IHVuZGVmaW5lZCxcbn07XG5cbmV4cG9ydCBjb25zdCBzaGFyZVByZXNlbnRhdGlvblN0YXRlOiB7XG4gIHNob3c6IGJvb2xlYW47XG4gIG9uQ2xvc2U6ICgoKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcbn0gPSB7XG4gIHNob3c6IGZhbHNlLFxuICBvbkNsb3NlOiB1bmRlZmluZWQsXG59O1xuXG5sZXQgcHJlc2VudGF0aW9uU3Vic2NyaWJlZCA9IGZhbHNlO1xubGV0IGNvbnN1bWluZyA9IGZhbHNlO1xubGV0IHByZXNlbnRhdGlvblN5c3RlbTogKCgpID0+IHZvaWQpIHwgbnVsbCA9IG51bGw7XG5sZXQgcGFydGljaXBhbnRQb2xsaW5nU3lzdGVtOiAoKGR0OiBudW1iZXIpID0+IHZvaWQpIHwgbnVsbCA9IG51bGw7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYW5kbGVHZXREY2xDYXN0SW5mbyhzdGF0ZTogU3RhdGUpIHtcbiAgY29uc3QgW2Vycm9yLCBkYXRhXSA9IGF3YWl0IGdldERjbENhc3RJbmZvKCk7XG4gIGlmIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIHJldHVybiBudWxsO1xuICB9IGVsc2Uge1xuICAgIGlmIChkYXRhKSB7XG4gICAgICBzdGF0ZS52aWRlb0NvbnRyb2wuZGNsQ2FzdCA9IGRhdGE7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gc3RhcnRQcmVzZW50YXRpb25TeXN0ZW0oZW5naW5lOiBJRW5naW5lLCBzdGF0ZTogU3RhdGUpOiB2b2lkIHtcbiAgaWYgKHByZXNlbnRhdGlvblN5c3RlbSkgcmV0dXJuOyAvLyBBbHJlYWR5IHJ1bm5pbmdcbiAgcHJlc2VudGF0aW9uU3Vic2NyaWJlZCA9IHRydWU7XG4gIHN1YnNjcmliZVRvUHJlc2VudGF0aW9uVG9waWMoKTtcblxuICBjb25zdCBzeXN0ZW0gPSAoKSA9PiB7XG4gICAgaWYgKGNvbnN1bWluZykgcmV0dXJuOyAvLyBQcmV2ZW50IGNvbmN1cnJlbnQgcmVxdWVzdHNcbiAgICBjb25zdW1pbmcgPSB0cnVlO1xuICAgIGNvbnN1bWVQcmVzZW50YXRpb25NZXNzYWdlcygpXG4gICAgICAudGhlbihsYXRlc3RTdGF0ZSA9PiB7XG4gICAgICAgIGlmIChsYXRlc3RTdGF0ZSA9PT0gJ3N0b3BwZWQnKSB7XG4gICAgICAgICAgc3RhdGUudmlkZW9Db250cm9sLnByZXNlbnRhdGlvblN0YXRlID0gdW5kZWZpbmVkO1xuICAgICAgICB9IGVsc2UgaWYgKGxhdGVzdFN0YXRlKSB7XG4gICAgICAgICAgc3RhdGUudmlkZW9Db250cm9sLnByZXNlbnRhdGlvblN0YXRlID0gbGF0ZXN0U3RhdGU7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAvLyBTaWxlbnRseSBpZ25vcmUg4oCUIHdpbGwgcmV0cnkgbmV4dCBmcmFtZVxuICAgICAgICBjb25zb2xlLmxvZygnW0RjbENhc3RdIEZhaWxlZCB0byBjb25zdW1lIHByZXNlbnRhdGlvbiBtZXNzYWdlcycpO1xuICAgICAgfSlcbiAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgY29uc3VtaW5nID0gZmFsc2U7XG4gICAgICB9KTtcbiAgfTtcblxuICBlbmdpbmUuYWRkU3lzdGVtKHN5c3RlbSk7XG4gIHByZXNlbnRhdGlvblN5c3RlbSA9IHN5c3RlbTtcbn1cblxuZnVuY3Rpb24gc3RvcFByZXNlbnRhdGlvblN5c3RlbShlbmdpbmU6IElFbmdpbmUsIHN0YXRlOiBTdGF0ZSk6IHZvaWQge1xuICBpZiAocHJlc2VudGF0aW9uU3lzdGVtKSB7XG4gICAgZW5naW5lLnJlbW92ZVN5c3RlbShwcmVzZW50YXRpb25TeXN0ZW0pO1xuICAgIHByZXNlbnRhdGlvblN5c3RlbSA9IG51bGw7XG4gIH1cbiAgc3RhdGUudmlkZW9Db250cm9sLnByZXNlbnRhdGlvblN0YXRlID0gdW5kZWZpbmVkO1xuICBwcmVzZW50YXRpb25TdWJzY3JpYmVkID0gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIHN0YXJ0UGFydGljaXBhbnRQb2xsaW5nKGVuZ2luZTogSUVuZ2luZSwgc3RhdGU6IFN0YXRlKTogdm9pZCB7XG4gIGlmIChwYXJ0aWNpcGFudFBvbGxpbmdTeXN0ZW0pIHJldHVybjsgLy8gQWxyZWFkeSBwb2xsaW5nXG5cbiAgY29uc3QgcG9sbCA9IGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB0cmFja3MgPSBhd2FpdCBnZXRBY3RpdmVTdHJlYW1zKCk7XG4gICAgaWYgKCF0cmFja3MpIHJldHVybjtcblxuICAgIC8vIERlYnVnOiBsb2cgdHJhY2tzIG9uIGVhY2ggcG9sbCB0byByZXZpZXcgcHJlc2VudGF0aW9uIGJvdCBtZXRhZGF0YVxuICAgIC8vIGNvbnNvbGUubG9nKCdbRGNsQ2FzdF0gUG9sbCB0cmFja3M6JywgSlNPTi5zdHJpbmdpZnkodHJhY2tzLCBudWxsLCAyKSk7XG5cbiAgICAvLyBLZWVwIHNob3djYXNlIG1vZGFsIGRhdGEgZnJlc2hcbiAgICBzaG93Y2FzZVN0YXRlLnBhcnRpY2lwYW50cyA9IGdyb3VwVHJhY2tzQnlQYXJ0aWNpcGFudCh0cmFja3MpO1xuXG4gICAgLy8gQ2hlY2sgZm9yIHByZXNlbnRhdGlvbiB0cmFja1xuICAgIGNvbnN0IGhhc1ByZXNlbnRhdGlvbiA9IGhhc1ByZXNlbnRhdGlvblRyYWNrKHRyYWNrcyk7XG5cbiAgICAvLyBjb25zb2xlLmxvZyhgW0RjbENhc3RdIFByZXNlbnRhdGlvbiB0cmFjayAke2hhc1ByZXNlbnRhdGlvbiA/ICdmb3VuZCcgOiAnbm90IGZvdW5kJ30gaW4gcG9sbGApO1xuXG4gICAgaWYgKGhhc1ByZXNlbnRhdGlvbiAmJiAhcHJlc2VudGF0aW9uU3Vic2NyaWJlZCkge1xuICAgICAgc3RhcnRQcmVzZW50YXRpb25TeXN0ZW0oZW5naW5lLCBzdGF0ZSk7XG4gICAgfSBlbHNlIGlmICghaGFzUHJlc2VudGF0aW9uICYmIHByZXNlbnRhdGlvblN1YnNjcmliZWQpIHtcbiAgICAgIHN0b3BQcmVzZW50YXRpb25TeXN0ZW0oZW5naW5lLCBzdGF0ZSk7XG4gICAgfVxuICB9O1xuXG4gIC8vIFBvbGwgaW1tZWRpYXRlbHksIHRoZW4gZXZlcnkgNSBzZWNvbmRzXG4gIHBvbGwoKTtcbiAgcGFydGljaXBhbnRQb2xsaW5nU3lzdGVtID0gc2V0SW50ZXJ2YWwoZW5naW5lLCBwb2xsLCA1MDAwKTtcbn1cblxuZnVuY3Rpb24gc3RvcFBhcnRpY2lwYW50UG9sbGluZyhlbmdpbmU6IElFbmdpbmUsIHN0YXRlOiBTdGF0ZSk6IHZvaWQge1xuICBpZiAocGFydGljaXBhbnRQb2xsaW5nU3lzdGVtKSB7XG4gICAgY2xlYXJJbnRlcnZhbChlbmdpbmUsIHBhcnRpY2lwYW50UG9sbGluZ1N5c3RlbSk7XG4gICAgcGFydGljaXBhbnRQb2xsaW5nU3lzdGVtID0gbnVsbDtcbiAgfVxuICBzdG9wUHJlc2VudGF0aW9uU3lzdGVtKGVuZ2luZSwgc3RhdGUpO1xufVxuXG5jb25zdCBEY2xDYXN0ID0gKHtcbiAgZW5naW5lLFxuICBzdGF0ZSxcbiAgZW50aXR5LFxuICB2aWRlbyxcbiAgcGxheWVyQWRkcmVzcyxcbn06IHtcbiAgZW5naW5lOiBJRW5naW5lO1xuICBzdGF0ZTogU3RhdGU7XG4gIGVudGl0eTogRW50aXR5O1xuICB2aWRlbzogRGVlcFJlYWRvbmx5T2JqZWN0PFBCVmlkZW9QbGF5ZXI+IHwgdW5kZWZpbmVkO1xuICBwbGF5ZXJBZGRyZXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59KSA9PiB7XG4gIGNvbnN0IHsgVmlkZW9Db250cm9sU3RhdGUgfSA9IGdldENvbXBvbmVudHMoZW5naW5lKTtcbiAgY29uc3QgY29udHJvbHMgPSBjcmVhdGVWaWRlb1BsYXllckNvbnRyb2xzKGVudGl0eSwgZW5naW5lKTtcbiAgY29uc3Qgc3R5bGVzID0gZ2V0RGNsQ2FzdFN0eWxlcygpO1xuICBjb25zdCBjb2xvcnMgPSBnZXREY2xDYXN0Q29sb3JzKCk7XG4gIGNvbnN0IFtpc0xvYWRpbmcsIHNldElzTG9hZGluZ10gPSBSZWFjdEVjcy51c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtlcnJvciwgc2V0RXJyb3JdID0gUmVhY3RFY3MudXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IG9uU2hvd1Nob3djYXNlTW9kYWwgPSBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgbGF0ZXN0VHJhY2tzID0gYXdhaXQgZ2V0QWN0aXZlU3RyZWFtcygpO1xuICAgIGlmICghbGF0ZXN0VHJhY2tzKSByZXR1cm47XG5cbiAgICAvLyBEZWJ1ZzogbG9nIGFsbCB0cmFjayBkYXRhIHRvIHJldmlldyBwcmVzZW50YXRpb24gYm90IG1ldGFkYXRhXG4gICAgY29uc29sZS5sb2coJ1tEY2xDYXN0XSBBY3RpdmUgdHJhY2tzOicsIEpTT04uc3RyaW5naWZ5KGxhdGVzdFRyYWNrcywgbnVsbCwgMikpO1xuXG4gICAgY29uc3QgY2xvc2VNb2RhbCA9ICgpID0+IHtcbiAgICAgIHNob3djYXNlU3RhdGUuc2hvdyA9IGZhbHNlO1xuICAgIH07XG5cbiAgICBzaG93Y2FzZVN0YXRlLnBhcnRpY2lwYW50cyA9IGdyb3VwVHJhY2tzQnlQYXJ0aWNpcGFudChsYXRlc3RUcmFja3MpO1xuXG4gICAgc2hvd2Nhc2VTdGF0ZS5vblNlbGVjdFRyYWNrID0gKHRyYWNrOiBGbGF0dGVuZWRUcmFjaykgPT4ge1xuICAgICAgY29udHJvbHMuc2V0U291cmNlKHRyYWNrLnNpZCk7XG4gICAgICBzaG93Y2FzZVN0YXRlLmFjdGl2ZVRyYWNrU2lkID0gdHJhY2suc2lkO1xuICAgICAgc3RhdGUudmlkZW9Db250cm9sLnNlbGVjdGVkU3RyZWFtID0gJ2RjbC1jYXN0JztcbiAgICB9O1xuXG4gICAgc2hvd2Nhc2VTdGF0ZS5vblNldERlZmF1bHQgPSAoKSA9PiB7XG4gICAgICBjb250cm9scy5zZXRTb3VyY2UoTElWRUtJVF9TVFJFQU1fU1JDKTtcbiAgICAgIHNob3djYXNlU3RhdGUuYWN0aXZlVHJhY2tTaWQgPSB1bmRlZmluZWQ7XG4gICAgICBzdGF0ZS52aWRlb0NvbnRyb2wuc2VsZWN0ZWRTdHJlYW0gPSAnZGNsLWNhc3QnO1xuICAgIH07XG5cbiAgICBzaG93Y2FzZVN0YXRlLm9uQ2xvc2UgPSBjbG9zZU1vZGFsO1xuXG4gICAgbmV4dFRpY2tGdW5jdGlvbnMucHVzaCgoKSA9PiB7XG4gICAgICBzaG93Y2FzZVN0YXRlLnNob3cgPSB0cnVlO1xuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IGZldGNoRGNsQ2FzdEluZm8gPSBhc3luYyAoKSA9PiB7XG4gICAgc2V0SXNMb2FkaW5nKHRydWUpO1xuICAgIHNldEVycm9yKGZhbHNlKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGhhbmRsZUdldERjbENhc3RJbmZvKHN0YXRlKTtcblxuICAgIGlmICghcmVzdWx0KSB7XG4gICAgICBzZXRFcnJvcih0cnVlKTtcbiAgICB9IGVsc2UgaWYgKHZpZGVvPy5zcmM/LnN0YXJ0c1dpdGgoJ2xpdmVraXQtdmlkZW86Ly8nKSAmJiAhc3RhdGUudmlkZW9Db250cm9sLnNlbGVjdGVkU3RyZWFtKSB7XG4gICAgICBzdGF0ZS52aWRlb0NvbnRyb2wuc2VsZWN0ZWRTdHJlYW0gPSAnZGNsLWNhc3QnO1xuICAgIH1cblxuICAgIHNldElzTG9hZGluZyhmYWxzZSk7XG4gIH07XG5cbiAgY29uc3Qgb25TaGFyZVByZXNlbnRhdGlvbiA9ICgpID0+IHtcbiAgICBzaGFyZVByZXNlbnRhdGlvblN0YXRlLm9uQ2xvc2UgPSAoKSA9PiB7XG4gICAgICBzaGFyZVByZXNlbnRhdGlvblN0YXRlLnNob3cgPSBmYWxzZTtcbiAgICB9O1xuICAgIG5leHRUaWNrRnVuY3Rpb25zLnB1c2goKCkgPT4ge1xuICAgICAgc2hhcmVQcmVzZW50YXRpb25TdGF0ZS5zaG93ID0gdHJ1ZTtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVSZXNldFJvb21JZCA9IGFzeW5jICgpID0+IHtcbiAgICBzZXRJc0xvYWRpbmcodHJ1ZSk7XG4gICAgY29uc3QgW2Vycm9yLCBkYXRhXSA9IGF3YWl0IHJlc2V0U3RyZWFtS2V5KCk7XG4gICAgaWYgKGVycm9yKSB7XG4gICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpO1xuICAgICAgc2V0RXJyb3IodHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHZpZGVvQ29udHJvbCA9IFZpZGVvQ29udHJvbFN0YXRlLmdldE11dGFibGUoc3RhdGUuYWRtaW5Ub29sa2l0VWlFbnRpdHkpO1xuICAgICAgdmlkZW9Db250cm9sLmVuZHNBdCA9IGRhdGE/LmVuZHNBdDtcbiAgICAgIGZldGNoRGNsQ2FzdEluZm8oKTtcbiAgICB9XG4gIH07XG5cbiAgUmVhY3RFY3MudXNlRWZmZWN0KCgpID0+IHtcbiAgICBmZXRjaERjbENhc3RJbmZvKCk7XG4gICAgaWYgKHBsYXllckFkZHJlc3MpIHtcbiAgICAgIGVuc3VyZVByZXNlbnRlclJvbGUocGxheWVyQWRkcmVzcyk7XG4gICAgfVxuICB9LCBbXSk7XG5cbiAgLy8gU3luYyBzZWxlY3RlZFN0cmVhbSB3aGVuIHZpZGVvLnNyYyBhcnJpdmVzIGFmdGVyIG1vdW50IChsYXRlLWpvaW5lciBmaXgpXG4gIGNvbnN0IHZpZGVvU3JjID0gdmlkZW8/LnNyYztcbiAgUmVhY3RFY3MudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodmlkZW9TcmM/LnN0YXJ0c1dpdGgoJ2xpdmVraXQtdmlkZW86Ly8nKSAmJiAhc3RhdGUudmlkZW9Db250cm9sLnNlbGVjdGVkU3RyZWFtKSB7XG4gICAgICBzdGF0ZS52aWRlb0NvbnRyb2wuc2VsZWN0ZWRTdHJlYW0gPSAnZGNsLWNhc3QnO1xuICAgIH1cbiAgfSwgW3ZpZGVvU3JjXSk7XG5cbiAgY29uc3QgaXNDYXN0QWN0aXZlID0gISEodmlkZW8/LnNyYyAmJiBpc0RjbENhc3QodmlkZW8uc3JjKSk7XG5cbiAgUmVhY3RFY3MudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNDYXN0QWN0aXZlKSB7XG4gICAgICBzdGFydFBhcnRpY2lwYW50UG9sbGluZyhlbmdpbmUsIHN0YXRlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RvcFBhcnRpY2lwYW50UG9sbGluZyhlbmdpbmUsIHN0YXRlKTtcbiAgICB9XG4gIH0sIFtpc0Nhc3RBY3RpdmVdKTtcblxuICAvLyBBdXRvLW1pbmltaXplIHdoZW4gYSBwcmVzZW50YXRpb24gc3RhcnRzIHNvIHRoZSBjb21wYWN0IHZpZXdcbiAgLy8gKHdpdGggcHJlc2VudGF0aW9uIGNvbnRyb2xzKSBpcyBpbW1lZGlhdGVseSB2aXNpYmxlXG4gIFJlYWN0RWNzLnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHN0YXRlLnZpZGVvQ29udHJvbC5wcmVzZW50YXRpb25TdGF0ZSkge1xuICAgICAgc3RhdGUudmlkZW9Db250cm9sLmlzTWluaW1pemVkID0gdHJ1ZTtcbiAgICB9XG4gIH0sIFshIXN0YXRlLnZpZGVvQ29udHJvbC5wcmVzZW50YXRpb25TdGF0ZV0pO1xuXG4gIGNvbnN0IGlzTWluaW1pemVkID0gc3RhdGUudmlkZW9Db250cm9sLmlzTWluaW1pemVkO1xuXG4gIHJldHVybiAoXG4gICAgPFVpRW50aXR5IHVpVHJhbnNmb3JtPXtzdHlsZXMuZnVsbENvbnRhaW5lcn0+XG4gICAgICB7LyogQ29tcGFjdCBiYXIg4oCUIGFsd2F5cyByZW5kZXJlZCwgdG9nZ2xlZCB2aWEgZGlzcGxheSAqL31cbiAgICAgIDxVaUVudGl0eSB1aVRyYW5zZm9ybT17eyBkaXNwbGF5OiBpc01pbmltaXplZCA/ICdmbGV4JyA6ICdub25lJywgd2lkdGg6ICcxMDAlJyB9fT5cbiAgICAgICAgPENvbXBhY3REY2xDYXN0XG4gICAgICAgICAgZW5naW5lPXtlbmdpbmV9XG4gICAgICAgICAgc3RhdGU9e3N0YXRlfVxuICAgICAgICAgIGVudGl0eT17ZW50aXR5fVxuICAgICAgICAgIHZpZGVvPXt2aWRlb31cbiAgICAgICAgICBvblNob3dTaG93Y2FzZU1vZGFsPXtvblNob3dTaG93Y2FzZU1vZGFsfVxuICAgICAgICAvPlxuICAgICAgPC9VaUVudGl0eT5cblxuICAgICAgey8qIEZ1bGwgcGFuZWwg4oCUIGFsd2F5cyByZW5kZXJlZCwgdG9nZ2xlZCB2aWEgZGlzcGxheSAqL31cbiAgICAgIDxVaUVudGl0eVxuICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgIGRpc3BsYXk6IGlzTWluaW1pemVkID8gJ25vbmUnIDogJ2ZsZXgnLFxuICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxVaUVudGl0eSB1aVRyYW5zZm9ybT17c3R5bGVzLnJvd0NlbnRlclNwYWNlQmV0d2Vlbn0+XG4gICAgICAgICAgPFVpRW50aXR5IHVpVHJhbnNmb3JtPXtzdHlsZXMucm93Q2VudGVyfT5cbiAgICAgICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17c3R5bGVzLmhlYWRlckljb259XG4gICAgICAgICAgICAgIHVpQmFja2dyb3VuZD17e1xuICAgICAgICAgICAgICAgIHRleHR1cmVNb2RlOiAnc3RyZXRjaCcsXG4gICAgICAgICAgICAgICAgdGV4dHVyZTogeyBzcmM6IElDT05TLkRDTF9DQVNUX0lDT04gfSxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8VWlFbnRpdHlcbiAgICAgICAgICAgICAgdWlUZXh0PXt7XG4gICAgICAgICAgICAgICAgdmFsdWU6ICc8Yj5EQ0wgQ2FzdDwvYj4nLFxuICAgICAgICAgICAgICAgIGZvbnRTaXplOiAyNCxcbiAgICAgICAgICAgICAgICBjb2xvcjogQ29sb3I0LldoaXRlKCksXG4gICAgICAgICAgICAgICAgdGV4dEFsaWduOiAnbWlkZGxlLWxlZnQnLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17eyBtYXJnaW46IHsgbGVmdDogMTAgfSB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1VpRW50aXR5PlxuICAgICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgICAgb25Nb3VzZURvd249eygpID0+IHtcbiAgICAgICAgICAgICAgc3RhdGUudmlkZW9Db250cm9sLmlzTWluaW1pemVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICB1aVRyYW5zZm9ybT17c3R5bGVzLmNoZXZyb25CdXR0b259XG4gICAgICAgICAgICB1aUJhY2tncm91bmQ9e3tcbiAgICAgICAgICAgICAgdGV4dHVyZU1vZGU6ICdzdHJldGNoJyxcbiAgICAgICAgICAgICAgY29sb3I6IENvbG9yNC5XaGl0ZSgpLFxuICAgICAgICAgICAgICB0ZXh0dXJlOiB7XG4gICAgICAgICAgICAgICAgc3JjOiBJQ09OUy5DSEVWUk9OX1VQLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1VpRW50aXR5PlxuICAgICAgICA8VWlFbnRpdHkgdWlUcmFuc2Zvcm09e3N0eWxlcy5mdWxsV2lkdGhXaXRoQm90dG9tTWFyZ2lufT5cbiAgICAgICAgICA8VWlFbnRpdHlcbiAgICAgICAgICAgIHVpVGV4dD17e1xuICAgICAgICAgICAgICB2YWx1ZTpcbiAgICAgICAgICAgICAgICAnVXNlIGEgYnJvd3Nlci1iYXNlZCBEQ0wgQ2FzdCByb29tIHRvIGVhc2lseSBzdHJlYW0gY2FtZXJhIGFuZCBzY3JlZW4gZmVlZCB0byBhIHNjcmVlbiBpbiB5b3VyIHNjZW5lLicsXG4gICAgICAgICAgICAgIGZvbnRTaXplOiAxNixcbiAgICAgICAgICAgICAgY29sb3I6IENvbG9yNC5mcm9tSGV4U3RyaW5nKCcjQTA5QkE4JyksXG5cbiAgICAgICAgICAgICAgdGV4dEFsaWduOiAndG9wLWxlZnQnLFxuICAgICAgICAgICAgICB0ZXh0V3JhcDogJ3dyYXAnLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHVpVHJhbnNmb3JtPXtzdHlsZXMubWFyZ2luQm90dG9tU21hbGx9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9VaUVudGl0eT5cbiAgICAgICAge2lzTG9hZGluZyAmJiAoXG4gICAgICAgICAgPExvYWRpbmdEb3RzXG4gICAgICAgICAgICB1aVRyYW5zZm9ybT17c3R5bGVzLmxvYWRpbmdDb250YWluZXJ9XG4gICAgICAgICAgICBlbmdpbmU9e2VuZ2luZX1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICB7ZXJyb3IgJiYgKFxuICAgICAgICAgIDxVaUVudGl0eSB1aVRyYW5zZm9ybT17c3R5bGVzLmNvbHVtbkNlbnRlcmVkfT5cbiAgICAgICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgICAgICB1aVRleHQ9e3tcbiAgICAgICAgICAgICAgICB2YWx1ZTogJzxiPkZhaWxlZCB0byBmZXRjaCBEQ0wgQ2FzdCBpbmZvPC9iPicsXG4gICAgICAgICAgICAgICAgZm9udFNpemU6IDE2LFxuICAgICAgICAgICAgICAgIGNvbG9yOiBDb2xvcjQuV2hpdGUoKSxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3N0eWxlcy5tYXJnaW5Cb3R0b21TbWFsbH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8VWlFbnRpdHlcbiAgICAgICAgICAgICAgdWlUZXh0PXt7XG4gICAgICAgICAgICAgICAgdmFsdWU6ICdQbGVhc2UgcmV0cnkuJyxcbiAgICAgICAgICAgICAgICBmb250U2l6ZTogMTYsXG4gICAgICAgICAgICAgICAgY29sb3I6IENvbG9yNC5HcmF5KCksXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICBpZD1cImRjbF9jYXN0X3JldHJ5XCJcbiAgICAgICAgICAgICAgdmFsdWU9XCI8Yj5SZXRyeTwvYj5cIlxuICAgICAgICAgICAgICB2YXJpYW50PVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgZm9udFNpemU9ezE2fVxuICAgICAgICAgICAgICBjb2xvcj17Y29sb3JzLndoaXRlfVxuICAgICAgICAgICAgICBvbk1vdXNlRG93bj17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGhhbmRsZUdldERjbENhc3RJbmZvKHN0YXRlKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3N0eWxlcy5yZXRyeUJ1dHRvbn1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9VaUVudGl0eT5cbiAgICAgICAgKX1cblxuICAgICAgICB7IWlzTG9hZGluZyAmJiAhZXJyb3IgJiYgKFxuICAgICAgICAgIDxEY2xDYXN0SW5mb1xuICAgICAgICAgICAgc3RhdGU9e3N0YXRlfVxuICAgICAgICAgICAgZW50aXR5PXtlbnRpdHl9XG4gICAgICAgICAgICBlbmdpbmU9e2VuZ2luZX1cbiAgICAgICAgICAgIHZpZGVvPXt2aWRlb31cbiAgICAgICAgICAgIG9uUmVzZXRSb29tSWQ9e2hhbmRsZVJlc2V0Um9vbUlkfVxuICAgICAgICAgICAgb25TaG93U2hvd2Nhc2VNb2RhbD17b25TaG93U2hvd2Nhc2VNb2RhbH1cbiAgICAgICAgICAgIG9uU2hhcmVQcmVzZW50YXRpb249e29uU2hhcmVQcmVzZW50YXRpb259XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvVWlFbnRpdHk+XG4gICAgPC9VaUVudGl0eT5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERjbENhc3Q7XG4iXX0=
|
|
156
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYWRtaW4tdG9vbGtpdC11aS9WaWRlb0NvbnRyb2wvRGNsQ2FzdC9pbmRleC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxRQUFRLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFaEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQ0wsY0FBYyxFQUNkLGdCQUFnQixFQUNoQix3QkFBd0IsRUFDeEIsY0FBYyxFQUNkLG1CQUFtQixHQUVwQixNQUFNLFFBQVEsQ0FBQztBQUNoQixPQUFPLEVBQUUsZUFBZSxFQUFFLHlCQUF5QixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3RFLE9BQU8sRUFDTCxZQUFZLEVBQ1osYUFBYSxFQUNiLHNCQUFzQixFQUN0QixxQkFBcUIsRUFDckIsc0JBQXNCLEVBQ3RCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsY0FBYyxFQUNkLFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLFdBQVcsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxjQUFjLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRTlELE1BQU0sS0FBSyxHQUFHO0lBQ1osSUFBSSxhQUFhO1FBQ2YsT0FBTyxHQUFHLGFBQWEs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QWlCLEdBQ3JDO2dCQUNGLHVCQUFDLFFBQVEsSUFDUCxNQUFNLEVBQUU7d0JBQ04sS0FBSyxFQUFFLGVBQWU7d0JBQ3RCLFFBQVEsRUFBRSxFQUFFO3dCQUNaLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFO3FCQUNyQixHQUNEO2dCQUNGLHVCQUFDLE1BQU0sSUFDTCxFQUFFLEVBQUMsZ0JBQWdCLEVBQ25CLEtBQUssRUFBQyxjQUFjLEVBQ3BCLE9BQU8sRUFBQyxXQUFXLEVBQ25CLFFBQVEsRUFBRSxFQUFFLEVBQ1osS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQ25CLFdBQVcsRUFBRSxHQUFHLEVBQUU7d0JBQ2hCLGdCQUFnQixFQUFFLENBQUM7b0JBQ3JCLENBQUMsRUFDRCxXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVcsR0FDL0IsQ0FDTyxDQUNaO1lBRUEsQ0FBQyxTQUFTLElBQUksQ0FBQyxLQUFLLElBQUksQ0FDdkIsdUJBQUMsV0FBVyxJQUNWLEtBQUssRUFBRSxLQUFLLEVBQ1osTUFBTSxFQUFFLE1BQU0sRUFDZCxNQUFNLEVBQUUsTUFBTSxFQUNkLEtBQUssRUFBRSxLQUFLLEVBQ1osYUFBYSxFQUFFLGlCQUFpQixFQUNoQyxtQkFBbUIsRUFBRSxtQkFBbUIsRUFDeEMsbUJBQW1CLEVBQUUsbUJBQW1CLEdBQ3hDLENBQ0gsQ0FDUSxDQUNGLENBQ1osQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLGVBQWUsT0FBTyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0RWNzLCB7IFVpRW50aXR5IH0gZnJvbSAnQGRjbC9yZWFjdC1lY3MnO1xuaW1wb3J0IHR5cGUgeyBEZWVwUmVhZG9ubHlPYmplY3QsIEVudGl0eSwgSUVuZ2luZSwgUEJWaWRlb1BsYXllciB9IGZyb20gJ0BkY2wvZWNzJztcbmltcG9ydCB7IENvbG9yNCB9IGZyb20gJ0BkY2wvc2RrL21hdGgnO1xuaW1wb3J0IHsgZ2V0Q29tcG9uZW50cyB9IGZyb20gJy4uLy4uLy4uL2RlZmluaXRpb25zJztcbmltcG9ydCB7IGdldENvbnRlbnRVcmwgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHR5cGUgeyBTdGF0ZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJy4uLy4uL0J1dHRvbic7XG5pbXBvcnQgeyBMb2FkaW5nRG90cyB9IGZyb20gJy4uLy4uL0xvYWRpbmcnO1xuaW1wb3J0IHsgTElWRUtJVF9TVFJFQU1fU1JDIH0gZnJvbSAnLi4vTGl2ZVN0cmVhbSc7XG5pbXBvcnQge1xuICBnZXREY2xDYXN0SW5mbyxcbiAgZ2V0QWN0aXZlU3RyZWFtcyxcbiAgZ3JvdXBUcmFja3NCeVBhcnRpY2lwYW50LFxuICByZXNldFN0cmVhbUtleSxcbiAgZW5zdXJlUHJlc2VudGVyUm9sZSxcbiAgdHlwZSBGbGF0dGVuZWRUcmFjayxcbn0gZnJvbSAnLi4vYXBpJztcbmltcG9ydCB7IENBU1RfU1JDX1BSRUZJWCwgY3JlYXRlVmlkZW9QbGF5ZXJDb250cm9scyB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7XG4gIG9wZW5TaG93Y2FzZSxcbiAgY2xvc2VTaG93Y2FzZSxcbiAgc2V0U2hvd2Nhc2VBY3RpdmVUcmFjayxcbiAgb3BlblNoYXJlUHJlc2VudGF0aW9uLFxuICBjbG9zZVNoYXJlUHJlc2VudGF0aW9uLFxuICBzZXRTdHJlYW0sXG4gIHNldFBhcnRpY2lwYW50cyxcbiAgc2V0RGNsQ2FzdEluZm8sXG4gIG1pbmltaXplQ2FzdCxcbn0gZnJvbSAnLi4vLi4vYWN0aW9ucyc7XG5pbXBvcnQgRGNsQ2FzdEluZm8gZnJvbSAnLi9EY2xDYXN0SW5mbyc7XG5pbXBvcnQgQ29tcGFjdERjbENhc3QgZnJvbSAnLi9Db21wYWN0RGNsQ2FzdCc7XG5pbXBvcnQgeyBnZXREY2xDYXN0U3R5bGVzLCBnZXREY2xDYXN0Q29sb3JzIH0gZnJvbSAnLi9zdHlsZXMnO1xuXG5jb25zdCBJQ09OUyA9IHtcbiAgZ2V0IERDTF9DQVNUX0lDT04oKSB7XG4gICAgcmV0dXJuIGAke2dldENvbnRlbnRVcmwoKX0vYWRtaW5fdG9vbGtpdC9hc3NldHMvaWNvbnMvdmlkZW8tY29udHJvbC1kY2wtY2FzdC5wbmdgO1xuICB9LFxuICBnZXQgQ0hFVlJPTl9VUCgpIHtcbiAgICByZXR1cm4gYCR7Z2V0Q29udGVudFVybCgpfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9pY29ucy9jaGV2cm9uLXVwLnBuZ2A7XG4gIH0sXG59O1xuXG5hc3luYyBmdW5jdGlvbiBoYW5kbGVHZXREY2xDYXN0SW5mbygpIHtcbiAgY29uc3QgW2Vycm9yLCBkYXRhXSA9IGF3YWl0IGdldERjbENhc3RJbmZvKCk7XG4gIGlmIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIHJldHVybiBudWxsO1xuICB9IGVsc2Uge1xuICAgIGlmIChkYXRhKSB7XG4gICAgICBzZXREY2xDYXN0SW5mbyhkYXRhKTtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgfVxufVxuXG5jb25zdCBEY2xDYXN0ID0gKHtcbiAgZW5naW5lLFxuICBzdGF0ZSxcbiAgZW50aXR5LFxuICB2aWRlbyxcbiAgcGxheWVyQWRkcmVzcyxcbn06IHtcbiAgZW5naW5lOiBJRW5naW5lO1xuICBzdGF0ZTogU3RhdGU7XG4gIGVudGl0eTogRW50aXR5O1xuICB2aWRlbzogRGVlcFJlYWRvbmx5T2JqZWN0PFBCVmlkZW9QbGF5ZXI+IHwgdW5kZWZpbmVkO1xuICBwbGF5ZXJBZGRyZXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59KSA9PiB7XG4gIGNvbnN0IHsgVmlkZW9Db250cm9sU3RhdGUgfSA9IGdldENvbXBvbmVudHMoZW5naW5lKTtcbiAgY29uc3QgY29udHJvbHMgPSBjcmVhdGVWaWRlb1BsYXllckNvbnRyb2xzKGVudGl0eSwgZW5naW5lKTtcbiAgY29uc3Qgc3R5bGVzID0gZ2V0RGNsQ2FzdFN0eWxlcygpO1xuICBjb25zdCBjb2xvcnMgPSBnZXREY2xDYXN0Q29sb3JzKCk7XG4gIGNvbnN0IFtpc0xvYWRpbmcsIHNldElzTG9hZGluZ10gPSBSZWFjdEVjcy51c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtlcnJvciwgc2V0RXJyb3JdID0gUmVhY3RFY3MudXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IG9uU2hvd1Nob3djYXNlTW9kYWwgPSBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgbGF0ZXN0VHJhY2tzID0gYXdhaXQgZ2V0QWN0aXZlU3RyZWFtcygpO1xuICAgIGlmICghbGF0ZXN0VHJhY2tzKSByZXR1cm47XG5cbiAgICBzZXRQYXJ0aWNpcGFudHMoZ3JvdXBUcmFja3NCeVBhcnRpY2lwYW50KGxhdGVzdFRyYWNrcykpO1xuICAgIG9wZW5TaG93Y2FzZSh7XG4gICAgICBvblNlbGVjdFRyYWNrOiAodHJhY2s6IEZsYXR0ZW5lZFRyYWNrKSA9PiB7XG4gICAgICAgIGNvbnRyb2xzLnNldFNvdXJjZSh0cmFjay5zaWQpO1xuICAgICAgICBzZXRTaG93Y2FzZUFjdGl2ZVRyYWNrKHRyYWNrLnNpZCk7XG4gICAgICAgIHNldFN0cmVhbSgnZGNsLWNhc3QnKTtcbiAgICAgIH0sXG4gICAgICBvblNldERlZmF1bHQ6ICgpID0+IHtcbiAgICAgICAgY29udHJvbHMuc2V0U291cmNlKExJVkVLSVRfU1RSRUFNX1NSQyk7XG4gICAgICAgIHNldFNob3djYXNlQWN0aXZlVHJhY2sodW5kZWZpbmVkKTtcbiAgICAgICAgc2V0U3RyZWFtKCdkY2wtY2FzdCcpO1xuICAgICAgfSxcbiAgICAgIG9uQ2xvc2U6ICgpID0+IGNsb3NlU2hvd2Nhc2UoKSxcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBmZXRjaERjbENhc3RJbmZvID0gYXN5bmMgKCkgPT4ge1xuICAgIHNldElzTG9hZGluZyh0cnVlKTtcbiAgICBzZXRFcnJvcihmYWxzZSk7XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBoYW5kbGVHZXREY2xDYXN0SW5mbygpO1xuXG4gICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgIHNldEVycm9yKHRydWUpO1xuICAgIH0gZWxzZSBpZiAodmlkZW8/LnNyYz8uc3RhcnRzV2l0aChDQVNUX1NSQ19QUkVGSVgpICYmICFzdGF0ZS52aWRlb0NvbnRyb2wuc2VsZWN0ZWRTdHJlYW0pIHtcbiAgICAgIHNldFN0cmVhbSgnZGNsLWNhc3QnKTtcbiAgICB9XG5cbiAgICBzZXRJc0xvYWRpbmcoZmFsc2UpO1xuICB9O1xuXG4gIGNvbnN0IG9uU2hhcmVQcmVzZW50YXRpb24gPSAoKSA9PiB7XG4gICAgb3BlblNoYXJlUHJlc2VudGF0aW9uKCgpID0+IGNsb3NlU2hhcmVQcmVzZW50YXRpb24oKSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlUmVzZXRSb29tSWQgPSBhc3luYyAoKSA9PiB7XG4gICAgc2V0SXNMb2FkaW5nKHRydWUpO1xuICAgIGNvbnN0IFtlcnJvciwgZGF0YV0gPSBhd2FpdCByZXNldFN0cmVhbUtleSgpO1xuICAgIGlmIChlcnJvcikge1xuICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKTtcbiAgICAgIHNldEVycm9yKHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB2aWRlb0NvbnRyb2wgPSBWaWRlb0NvbnRyb2xTdGF0ZS5nZXRNdXRhYmxlKHN0YXRlLmFkbWluVG9vbGtpdFVpRW50aXR5KTtcbiAgICAgIHZpZGVvQ29udHJvbC5lbmRzQXQgPSBkYXRhPy5lbmRzQXQ7XG4gICAgICBmZXRjaERjbENhc3RJbmZvKCk7XG4gICAgfVxuICB9O1xuXG4gIFJlYWN0RWNzLnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gZW5zdXJlUHJlc2VudGVyUm9sZSByZXF1aXJlcyB0aGUgc3RyZWFtL3Jvb20gdGhhdCBmZXRjaERjbENhc3RJbmZvIGNyZWF0ZXMsXG4gICAgLy8gc28gaXQgbXVzdCBydW4gYWZ0ZXIgdGhhdCBjYWxsIHJlc29sdmVzLCBub3QgaW4gcGFyYWxsZWwgd2l0aCBpdCAoUFIgIzEzNTYpLlxuICAgIGZldGNoRGNsQ2FzdEluZm8oKS50aGVuKCgpID0+IHtcbiAgICAgIGlmIChwbGF5ZXJBZGRyZXNzKSB7XG4gICAgICAgIGVuc3VyZVByZXNlbnRlclJvbGUocGxheWVyQWRkcmVzcyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0sIFtdKTtcblxuICAvLyBTeW5jIHNlbGVjdGVkU3RyZWFtIHdoZW4gdmlkZW8uc3JjIGFycml2ZXMgYWZ0ZXIgbW91bnQgKGxhdGUtam9pbmVyIGZpeClcbiAgY29uc3QgdmlkZW9TcmMgPSB2aWRlbz8uc3JjO1xuICBSZWFjdEVjcy51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh2aWRlb1NyYz8uc3RhcnRzV2l0aChDQVNUX1NSQ19QUkVGSVgpICYmICFzdGF0ZS52aWRlb0NvbnRyb2wuc2VsZWN0ZWRTdHJlYW0pIHtcbiAgICAgIHNldFN0cmVhbSgnZGNsLWNhc3QnKTtcbiAgICB9XG4gIH0sIFt2aWRlb1NyY10pO1xuXG4gIGNvbnN0IGlzTWluaW1pemVkID0gc3RhdGUudmlkZW9Db250cm9sLmlzTWluaW1pemVkO1xuXG4gIHJldHVybiAoXG4gICAgPFVpRW50aXR5IHVpVHJhbnNmb3JtPXtzdHlsZXMuZnVsbENvbnRhaW5lcn0+XG4gICAgICB7LyogQ29tcGFjdCBiYXIg4oCUIGFsd2F5cyByZW5kZXJlZCwgdG9nZ2xlZCB2aWEgZGlzcGxheSAqL31cbiAgICAgIDxVaUVudGl0eSB1aVRyYW5zZm9ybT17eyBkaXNwbGF5OiBpc01pbmltaXplZCA/ICdmbGV4JyA6ICdub25lJywgd2lkdGg6ICcxMDAlJyB9fT5cbiAgICAgICAgPENvbXBhY3REY2xDYXN0XG4gICAgICAgICAgZW5naW5lPXtlbmdpbmV9XG4gICAgICAgICAgc3RhdGU9e3N0YXRlfVxuICAgICAgICAgIGVudGl0eT17ZW50aXR5fVxuICAgICAgICAgIHZpZGVvPXt2aWRlb31cbiAgICAgICAgICBvblNob3dTaG93Y2FzZU1vZGFsPXtvblNob3dTaG93Y2FzZU1vZGFsfVxuICAgICAgICAvPlxuICAgICAgPC9VaUVudGl0eT5cblxuICAgICAgey8qIEZ1bGwgcGFuZWwg4oCUIGFsd2F5cyByZW5kZXJlZCwgdG9nZ2xlZCB2aWEgZGlzcGxheSAqL31cbiAgICAgIDxVaUVudGl0eVxuICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgIGRpc3BsYXk6IGlzTWluaW1pemVkID8gJ25vbmUnIDogJ2ZsZXgnLFxuICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxVaUVudGl0eSB1aVRyYW5zZm9ybT17c3R5bGVzLnJvd0NlbnRlclNwYWNlQmV0d2Vlbn0+XG4gICAgICAgICAgPFVpRW50aXR5IHVpVHJhbnNmb3JtPXtzdHlsZXMucm93Q2VudGVyfT5cbiAgICAgICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17c3R5bGVzLmhlYWRlckljb259XG4gICAgICAgICAgICAgIHVpQmFja2dyb3VuZD17e1xuICAgICAgICAgICAgICAgIHRleHR1cmVNb2RlOiAnc3RyZXRjaCcsXG4gICAgICAgICAgICAgICAgdGV4dHVyZTogeyBzcmM6IElDT05TLkRDTF9DQVNUX0lDT04gfSxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8VWlFbnRpdHlcbiAgICAgICAgICAgICAgdWlUZXh0PXt7XG4gICAgICAgICAgICAgICAgdmFsdWU6ICc8Yj5EQ0wgQ2FzdDwvYj4nLFxuICAgICAgICAgICAgICAgIGZvbnRTaXplOiAyNCxcbiAgICAgICAgICAgICAgICBjb2xvcjogQ29sb3I0LldoaXRlKCksXG4gICAgICAgICAgICAgICAgdGV4dEFsaWduOiAnbWlkZGxlLWxlZnQnLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17eyBtYXJnaW46IHsgbGVmdDogMTAgfSB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1VpRW50aXR5PlxuICAgICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgICAgb25Nb3VzZURvd249eygpID0+IG1pbmltaXplQ2FzdCgpfVxuICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3N0eWxlcy5jaGV2cm9uQnV0dG9ufVxuICAgICAgICAgICAgdWlCYWNrZ3JvdW5kPXt7XG4gICAgICAgICAgICAgIHRleHR1cmVNb2RlOiAnc3RyZXRjaCcsXG4gICAgICAgICAgICAgIGNvbG9yOiBDb2xvcjQuV2hpdGUoKSxcbiAgICAgICAgICAgICAgdGV4dHVyZToge1xuICAgICAgICAgICAgICAgIHNyYzogSUNPTlMuQ0hFVlJPTl9VUCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9VaUVudGl0eT5cbiAgICAgICAgPFVpRW50aXR5IHVpVHJhbnNmb3JtPXtzdHlsZXMuZnVsbFdpZHRoV2l0aEJvdHRvbU1hcmdpbn0+XG4gICAgICAgICAgPFVpRW50aXR5XG4gICAgICAgICAgICB1aVRleHQ9e3tcbiAgICAgICAgICAgICAgdmFsdWU6XG4gICAgICAgICAgICAgICAgJ1VzZSBhIGJyb3dzZXItYmFzZWQgRENMIENhc3Qgcm9vbSB0byBlYXNpbHkgc3RyZWFtIGNhbWVyYSBhbmQgc2NyZWVuIGZlZWQgdG8gYSBzY3JlZW4gaW4geW91ciBzY2VuZS4nLFxuICAgICAgICAgICAgICBmb250U2l6ZTogMTYsXG4gICAgICAgICAgICAgIGNvbG9yOiBDb2xvcjQuZnJvbUhleFN0cmluZygnI0EwOUJBOCcpLFxuXG4gICAgICAgICAgICAgIHRleHRBbGlnbjogJ3RvcC1sZWZ0JyxcbiAgICAgICAgICAgICAgdGV4dFdyYXA6ICd3cmFwJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICB1aVRyYW5zZm9ybT17c3R5bGVzLm1hcmdpbkJvdHRvbVNtYWxsfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICAgIHtpc0xvYWRpbmcgJiYgKFxuICAgICAgICAgIDxMb2FkaW5nRG90c1xuICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3N0eWxlcy5sb2FkaW5nQ29udGFpbmVyfVxuICAgICAgICAgICAgZW5naW5lPXtlbmdpbmV9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAge2Vycm9yICYmIChcbiAgICAgICAgICA8VWlFbnRpdHkgdWlUcmFuc2Zvcm09e3N0eWxlcy5jb2x1bW5DZW50ZXJlZH0+XG4gICAgICAgICAgICA8VWlFbnRpdHlcbiAgICAgICAgICAgICAgdWlUZXh0PXt7XG4gICAgICAgICAgICAgICAgdmFsdWU6ICc8Yj5GYWlsZWQgdG8gZmV0Y2ggRENMIENhc3QgaW5mbzwvYj4nLFxuICAgICAgICAgICAgICAgIGZvbnRTaXplOiAxNixcbiAgICAgICAgICAgICAgICBjb2xvcjogQ29sb3I0LldoaXRlKCksXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIHVpVHJhbnNmb3JtPXtzdHlsZXMubWFyZ2luQm90dG9tU21hbGx9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPFVpRW50aXR5XG4gICAgICAgICAgICAgIHVpVGV4dD17e1xuICAgICAgICAgICAgICAgIHZhbHVlOiAnUGxlYXNlIHJldHJ5LicsXG4gICAgICAgICAgICAgICAgZm9udFNpemU6IDE2LFxuICAgICAgICAgICAgICAgIGNvbG9yOiBDb2xvcjQuR3JheSgpLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgaWQ9XCJkY2xfY2FzdF9yZXRyeVwiXG4gICAgICAgICAgICAgIHZhbHVlPVwiPGI+UmV0cnk8L2I+XCJcbiAgICAgICAgICAgICAgdmFyaWFudD1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgIGZvbnRTaXplPXsxNn1cbiAgICAgICAgICAgICAgY29sb3I9e2NvbG9ycy53aGl0ZX1cbiAgICAgICAgICAgICAgb25Nb3VzZURvd249eygpID0+IHtcbiAgICAgICAgICAgICAgICBmZXRjaERjbENhc3RJbmZvKCk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIHVpVHJhbnNmb3JtPXtzdHlsZXMucmV0cnlCdXR0b259XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICAgICl9XG5cbiAgICAgICAgeyFpc0xvYWRpbmcgJiYgIWVycm9yICYmIChcbiAgICAgICAgICA8RGNsQ2FzdEluZm9cbiAgICAgICAgICAgIHN0YXRlPXtzdGF0ZX1cbiAgICAgICAgICAgIGVudGl0eT17ZW50aXR5fVxuICAgICAgICAgICAgZW5naW5lPXtlbmdpbmV9XG4gICAgICAgICAgICB2aWRlbz17dmlkZW99XG4gICAgICAgICAgICBvblJlc2V0Um9vbUlkPXtoYW5kbGVSZXNldFJvb21JZH1cbiAgICAgICAgICAgIG9uU2hvd1Nob3djYXNlTW9kYWw9e29uU2hvd1Nob3djYXNlTW9kYWx9XG4gICAgICAgICAgICBvblNoYXJlUHJlc2VudGF0aW9uPXtvblNoYXJlUHJlc2VudGF0aW9ufVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L1VpRW50aXR5PlxuICAgIDwvVWlFbnRpdHk+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBEY2xDYXN0O1xuIl19
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { clearInterval, setInterval } from '../../utils';
|
|
2
|
+
import { getAdminToolkitVideoControl, getVideoPlayers } from '../utils';
|
|
3
|
+
import { consumePresentationMessages, ensurePresenterRole, getActiveStreams, getDclCastInfo, groupTracksByParticipant, hasPresentationTrack, subscribeToPresentationTopic, } from '../api';
|
|
4
|
+
import { setParticipants, setDclCastInfo, setPresentationState, clearPresentationState, } from '../../actions';
|
|
5
|
+
const POLL_INTERVAL_MS = 1000;
|
|
6
|
+
const CONSUME_INTERVAL_MS = 250;
|
|
7
|
+
let detectionStarted = false;
|
|
8
|
+
let presentationActive = false;
|
|
9
|
+
let presentationEnded = false;
|
|
10
|
+
let startingSystem = false;
|
|
11
|
+
let presentationSystem = null;
|
|
12
|
+
let polling = false;
|
|
13
|
+
let consuming = false;
|
|
14
|
+
function signalPresentationEnded(onPresentationEnded) {
|
|
15
|
+
if (presentationEnded)
|
|
16
|
+
return;
|
|
17
|
+
presentationEnded = true;
|
|
18
|
+
onPresentationEnded();
|
|
19
|
+
}
|
|
20
|
+
async function startPresentationSystem(engine, getPlayerAddress, onPresentationEnded) {
|
|
21
|
+
if (presentationSystem || startingSystem)
|
|
22
|
+
return;
|
|
23
|
+
startingSystem = true;
|
|
24
|
+
try {
|
|
25
|
+
const [, castData] = await getDclCastInfo();
|
|
26
|
+
if (castData)
|
|
27
|
+
setDclCastInfo(castData);
|
|
28
|
+
const address = getPlayerAddress();
|
|
29
|
+
if (!address || !(await ensurePresenterRole(address)))
|
|
30
|
+
return;
|
|
31
|
+
if (!presentationActive)
|
|
32
|
+
return;
|
|
33
|
+
subscribeToPresentationTopic();
|
|
34
|
+
const consume = () => {
|
|
35
|
+
if (consuming)
|
|
36
|
+
return;
|
|
37
|
+
consuming = true;
|
|
38
|
+
consumePresentationMessages()
|
|
39
|
+
.then(latestState => {
|
|
40
|
+
if (!presentationActive)
|
|
41
|
+
return;
|
|
42
|
+
if (latestState === 'stopped') {
|
|
43
|
+
signalPresentationEnded(onPresentationEnded);
|
|
44
|
+
}
|
|
45
|
+
else if (latestState) {
|
|
46
|
+
setPresentationState(latestState);
|
|
47
|
+
}
|
|
48
|
+
})
|
|
49
|
+
.catch(error => {
|
|
50
|
+
console.error('[DclCast] Failed to consume presentation messages', error);
|
|
51
|
+
})
|
|
52
|
+
.finally(() => {
|
|
53
|
+
consuming = false;
|
|
54
|
+
});
|
|
55
|
+
};
|
|
56
|
+
presentationSystem = setInterval(engine, consume, CONSUME_INTERVAL_MS);
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
console.error('[DclCast] Failed to start presentation system, will retry', error);
|
|
60
|
+
}
|
|
61
|
+
finally {
|
|
62
|
+
startingSystem = false;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
function stopPresentationSystem(engine) {
|
|
66
|
+
if (presentationSystem) {
|
|
67
|
+
clearInterval(engine, presentationSystem);
|
|
68
|
+
presentationSystem = null;
|
|
69
|
+
}
|
|
70
|
+
clearPresentationState();
|
|
71
|
+
}
|
|
72
|
+
function isCastCapableScene(engine) {
|
|
73
|
+
const videoControl = getAdminToolkitVideoControl(engine);
|
|
74
|
+
return !!videoControl?.isEnabled && getVideoPlayers(engine).length > 0;
|
|
75
|
+
}
|
|
76
|
+
export function startPresentationDetection(engine, getIsAdmin, getPlayerAddress, onPresentationStarted, onPresentationEnded) {
|
|
77
|
+
if (detectionStarted)
|
|
78
|
+
return;
|
|
79
|
+
detectionStarted = true;
|
|
80
|
+
const poll = async () => {
|
|
81
|
+
if (!getIsAdmin() || !isCastCapableScene(engine))
|
|
82
|
+
return;
|
|
83
|
+
if (polling)
|
|
84
|
+
return;
|
|
85
|
+
polling = true;
|
|
86
|
+
try {
|
|
87
|
+
const tracks = await getActiveStreams();
|
|
88
|
+
if (!tracks)
|
|
89
|
+
return;
|
|
90
|
+
setParticipants(groupTracksByParticipant(tracks));
|
|
91
|
+
const hasPresentation = hasPresentationTrack(tracks);
|
|
92
|
+
if (hasPresentation) {
|
|
93
|
+
if (!presentationActive) {
|
|
94
|
+
presentationActive = true;
|
|
95
|
+
presentationEnded = false;
|
|
96
|
+
onPresentationStarted();
|
|
97
|
+
}
|
|
98
|
+
await startPresentationSystem(engine, getPlayerAddress, onPresentationEnded);
|
|
99
|
+
}
|
|
100
|
+
else if (presentationActive) {
|
|
101
|
+
presentationActive = false;
|
|
102
|
+
signalPresentationEnded(onPresentationEnded);
|
|
103
|
+
stopPresentationSystem(engine);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
console.error('[DclCast] Presentation detection poll failed, will retry', error);
|
|
108
|
+
}
|
|
109
|
+
finally {
|
|
110
|
+
polling = false;
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
poll();
|
|
114
|
+
setInterval(engine, poll, POLL_INTERVAL_MS);
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2VudGF0aW9uLWRldGVjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FkbWluLXRvb2xraXQtdWkvVmlkZW9Db250cm9sL0RjbENhc3QvcHJlc2VudGF0aW9uLWRldGVjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxlQUFlLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDeEUsT0FBTyxFQUNMLDJCQUEyQixFQUMzQixtQkFBbUIsRUFDbkIsZ0JBQWdCLEVBQ2hCLGNBQWMsRUFDZCx3QkFBd0IsRUFDeEIsb0JBQW9CLEVBQ3BCLDRCQUE0QixHQUM3QixNQUFNLFFBQVEsQ0FBQztBQUNoQixPQUFPLEVBQ0wsZUFBZSxFQUNmLGNBQWMsRUFDZCxvQkFBb0IsRUFDcEIsc0JBQXNCLEdBQ3ZCLE1BQU0sZUFBZSxDQUFDO0FBdUJ2QixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQztBQUc5QixNQUFNLG1CQUFtQixHQUFHLEdBQUcsQ0FBQztBQUloQyxJQUFJLGdCQUFnQixHQUFHLEtBQUssQ0FBQztBQVU3QixJQUFJLGtCQUFrQixHQUFHLEtBQUssQ0FBQztBQUMvQixJQUFJLGlCQUFpQixHQUFHLEtBQUssQ0FBQztBQUM5QixJQUFJLGNBQWMsR0FBRyxLQUFLLENBQUM7QUFDM0IsSUFBSSxrQkFBa0IsR0FBa0MsSUFBSSxDQUFDO0FBQzdELElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztBQUNwQixJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUM7QUFNdEIsU0FBUyx1QkFBdUIsQ0FBQyxtQkFBK0I7SUFDOUQsSUFBSSxpQkFBaUI7UUFBRSxPQUFPO0lBQzlCLGlCQUFpQixHQUFHLElBQUksQ0FBQztJQUN6QixtQkFBbUIsRUFBRSxDQUFDO0FBQ3hCLENBQUM7QUFFRCxLQUFL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QztZQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztZQUN4QyxJQUFJLENBQUMsTUFBTTtnQkFBRSxPQUFPO1lBSXBCLGVBQWUsQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBRWxELE1BQU0sZUFBZSxHQUFHLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3JELElBQUksZUFBZSxFQUFFLENBQUM7Z0JBSXBCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO29CQUN4QixrQkFBa0IsR0FBRyxJQUFJLENBQUM7b0JBQzFCLGlCQUFpQixHQUFHLEtBQUssQ0FBQztvQkFDMUIscUJBQXFCLEVBQUUsQ0FBQztnQkFDMUIsQ0FBQztnQkFHRCxNQUFNLHVCQUF1QixDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1lBQy9FLENBQUM7aUJBQU0sSUFBSSxrQkFBa0IsRUFBRSxDQUFDO2dCQUM5QixrQkFBa0IsR0FBRyxLQUFLLENBQUM7Z0JBQzNCLHVCQUF1QixDQUFDLG1CQUFtQixDQUFDLENBQUM7Z0JBQzdDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2pDLENBQUM7UUFDSCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUdmLE9BQU8sQ0FBQyxLQUFLLENBQUMsMERBQTBELEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbkYsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNsQixDQUFDO0lBQ0gsQ0FBQyxDQUFDO0lBSUYsSUFBSSxFQUFFLENBQUM7SUFDUCxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0FBQzlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IElFbmdpbmUgfSBmcm9tICdAZGNsL2Vjcyc7XG5pbXBvcnQgeyBjbGVhckludGVydmFsLCBzZXRJbnRlcnZhbCB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IGdldEFkbWluVG9vbGtpdFZpZGVvQ29udHJvbCwgZ2V0VmlkZW9QbGF5ZXJzIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHtcbiAgY29uc3VtZVByZXNlbnRhdGlvbk1lc3NhZ2VzLFxuICBlbnN1cmVQcmVzZW50ZXJSb2xlLFxuICBnZXRBY3RpdmVTdHJlYW1zLFxuICBnZXREY2xDYXN0SW5mbyxcbiAgZ3JvdXBUcmFja3NCeVBhcnRpY2lwYW50LFxuICBoYXNQcmVzZW50YXRpb25UcmFjayxcbiAgc3Vic2NyaWJlVG9QcmVzZW50YXRpb25Ub3BpYyxcbn0gZnJvbSAnLi4vYXBpJztcbmltcG9ydCB7XG4gIHNldFBhcnRpY2lwYW50cyxcbiAgc2V0RGNsQ2FzdEluZm8sXG4gIHNldFByZXNlbnRhdGlvblN0YXRlLFxuICBjbGVhclByZXNlbnRhdGlvblN0YXRlLFxufSBmcm9tICcuLi8uLi9hY3Rpb25zJztcblxuLy8gQmFja2dyb3VuZCBwcmVzZW50YXRpb24gZGV0ZWN0aW9uLlxuLy9cbi8vIFJ1bnMgYXMgYSBib290LXRpbWUgZW5naW5lIHNlcnZpY2UgKGZvciBhZG1pbnMpIGluc3RlYWQgb2YgYXMgYSBzaWRlIGVmZmVjdCBvZlxuLy8gdGhlIERjbENhc3QgY29tcG9uZW50IG1vdW50aW5nLCBzbyB0aGUgcGFuZWwgY2FuIGF1dG8tb3BlbiByZWdhcmRsZXNzIG9mIHdoaWNoXG4vLyB0YWIgKGlmIGFueSkgdGhlIGFkbWluIGlzIHZpZXdpbmcuIERhdGEgZmxvd3Mgb25lIHdheTpcbi8vICAgZGV0ZWN0b3IgLT4gKGFjdGlvbnMpIC0+IHN0YXRlLnZpZGVvQ29udHJvbCAtPiB2aWV3IGNvbXBvbmVudHMuXG4vLyBJdCBuZXZlciByZWFkcyBvciBhc3NpZ25zIGBzdGF0ZWAgZGlyZWN0bHkg4oCUIGFsbCB3cml0ZXMgZ28gdGhyb3VnaCBhY3Rpb25zLFxuLy8gd2hpY2ggb3duIHRoZSBzdG9yZSBzaW5nbGV0b24uXG4vL1xuLy8gQXV0by1vcGVuIGlzIHRyaWdnZXJlZCBieSB0aGUgcHJlc2VudGF0aW9uIGJvdCdzIExpdmVLaXQgVFJBQ0sgYXBwZWFyaW5nXG4vLyAoaGFzUHJlc2VudGF0aW9uVHJhY2sgb3ZlciBnZXRBY3RpdmVTdHJlYW1zKSDigJQgYSBzaWduYWwgYXZhaWxhYmxlIHRvIGV2ZXJ5IHNjZW5lXG4vLyBwYXJ0aWNpcGFudC4gU2xpZGUtbGV2ZWwgc3RhdGUgKHBhZ2UgY291bnQsIGN1cnJlbnQgc2xpZGUsIHZpZGVvcykgYXJyaXZlc1xuLy8gc2VwYXJhdGVseSBvdmVyIHRoZSAncHJlc2VudGF0aW9uJyBjb21tcyB0b3BpYywgd2hpY2ggdGhlIGJvdCBvbmx5IHNlcnZlcyB0b1xuLy8gcHJlc2VudGVycyDigJQgaGVuY2Ugd2UgcHJvbW90ZSB0aGUgYWRtaW4gYmVmb3JlIHN1YnNjcmliaW5nIChnZXREY2xDYXN0SW5mbyBsYXppbHlcbi8vIGNyZWF0ZXMgdGhlIHJvb20gZW5zdXJlUHJlc2VudGVyUm9sZSBkZXBlbmRzIG9uLCBzbyB0aGUgdHdvIG11c3QgYmUgc2VxdWVuY2VkKS5cblxuLy8gRGV0ZWN0aW9uIHBvbGwgY2FkZW5jZS4gVGhlIHBvbGwgcnVucyBjb250aW51b3VzbHkg4oCUIGl0IG5ldmVyIHN0b3BzIG9uIGRldGVjdCDigJRcbi8vIGJlY2F1c2UgaXQgaXMgdGhlIGF1dGhvcml0YXRpdmUgdGVhcmRvd24vcmUtYXJtIHBhdGggYW5kIHRoZSBvbmx5IGJhY2tzdG9wIGZvciBhblxuLy8gdW5ncmFjZWZ1bCBib3QgZXhpdCB0aGF0IHNlbmRzIG5vIGBwcmVzZW50YXRpb246c3RvcHBlZGAuIEl0cyBjb3N0IChvbmUgcnVudGltZVxuLy8gY2FsbCBwZXIgc2Vjb25kKSBpcyBkd2FyZmVkIGJ5IHRoZSBjb25zdW1lIHN5c3RlbSBiZWxvdywgc28ga2VlcCBpdCBjb250aW51b3VzO1xuLy8gZG8gbm90IFwib3B0aW1pemVcIiBpdCBpbnRvIGEgc3RvcC1vbi1kZXRlY3QsIHdoaWNoIHdvdWxkIHdlZGdlIGRldGVjdGlvbi5cbmNvbnN0IFBPTExfSU5URVJWQUxfTVMgPSAxMDAwO1xuLy8gU3RhdHVzIGNvbnN1bWUgY2FkZW5jZS4gfjRIeiBpcyB2aXN1YWxseSBpbnN0YW50IGZvciBhIHNsaWRlIGNvdW50ZXIgLyB2aWRlbyBzdGF0ZVxuLy8gYW5kIGZhciBjaGVhcGVyIHRoYW4gZHJhaW5pbmcgdGhlIGNvbW1zIHRvcGljIGV2ZXJ5IGZyYW1lLlxuY29uc3QgQ09OU1VNRV9JTlRFUlZBTF9NUyA9IDI1MDtcblxuLy8gQm9vdC1vbmNlIGd1YXJkOiB0aGUgcG9sbCBpcyByZWdpc3RlcmVkIGV4YWN0bHkgb25jZSBwZXIgc2Vzc2lvbiBhbmQgcnVucyBmb3IgdGhlXG4vLyBzY2VuZSdzIGxpZmV0aW1lIChzZWUgdGhlIFBPTExfSU5URVJWQUxfTVMgbm90ZSBhYm92ZSkuXG5sZXQgZGV0ZWN0aW9uU3RhcnRlZCA9IGZhbHNlO1xuXG4vLyBQcmVzZW50YXRpb24gbGlmZWN5Y2xlLiBwcmVzZW50YXRpb25BY3RpdmUgaXMgYW4gZWRnZSB0cmFja2VyIGZvciB0aGUgYm90XG4vLyB0cmFjayAoZHJpdmVzIHRoZSBvbmUtc2hvdCBhdXRvLW9wZW4pOyBwcmVzZW50YXRpb25FbmRlZCBsYXRjaGVzIHRoZSBlbmRcbi8vIGNhbGxiYWNrIHNvIGl0IGZpcmVzIG9uY2UgcGVyIHByZXNlbnRhdGlvbiBldmVuIHRob3VnaCB0d28gcGF0aHMgY2FuIHNpZ25hbFxuLy8gdGhlIGVuZCAoc2VlIHNpZ25hbFByZXNlbnRhdGlvbkVuZGVkKS4gcHJlc2VudGF0aW9uU3lzdGVtIGlzIHRoZSBydW5uaW5nXG4vLyBjb25zdW1lIHN5c3RlbSAobnVsbCA9IG5vdCBydW5uaW5nKSBhbmQgaXMgb25seSBhc3NpZ25lZCBvbiBzdWNjZXNzZnVsIHNldHVwLFxuLy8gc28gYSBmYWlsZWQgc2V0dXAgbmF0dXJhbGx5IHJldHJpZXMgb24gdGhlIG5leHQgcG9sbCB0aWNrLiBzdGFydGluZ1N5c3RlbVxuLy8gZ3VhcmRzIGFnYWluc3QgY29uY3VycmVudCBzZXR1cCB3aGlsZSBhbiBpbi1mbGlnaHQgYXR0ZW1wdCBpcyBhd2FpdGluZywgYW5kXG4vLyBwb2xsaW5nIC8gY29uc3VtaW5nIGd1YXJkIGFnYWluc3QgYSBzbG93IHRpY2sgb3ZlcmxhcHBpbmcgdGhlIG5leHQgb25lLlxubGV0IHByZXNlbnRhdGlvbkFjdGl2ZSA9IGZhbHNlO1xubGV0IHByZXNlbnRhdGlvbkVuZGVkID0gZmFsc2U7XG5sZXQgc3RhcnRpbmdTeXN0ZW0gPSBmYWxzZTtcbmxldCBwcmVzZW50YXRpb25TeXN0ZW06ICgoZHQ6IG51bWJlcikgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcbmxldCBwb2xsaW5nID0gZmFsc2U7XG5sZXQgY29uc3VtaW5nID0gZmFsc2U7XG5cbi8vIEZpcmUgdGhlIGVuZCBjYWxsYmFjayBleGFjdGx5IG9uY2UgcGVyIHByZXNlbnRhdGlvbi4gQm90aCB0aGUgYm90J3MgY29tbXNcbi8vIGBwcmVzZW50YXRpb246c3RvcHBlZGAgbWVzc2FnZSAoY29uc3VtZSkgYW5kIHRoZSB0cmFjay1nb25lIHBvbGwgZWRnZSBzaWduYWxcbi8vIHRoZSBlbmQ7IHdpdGhvdXQgdGhpcyBsYXRjaCBkaXNtaXNzUHJlc2VudGF0aW9uIHJ1bnMgdHdpY2Ugb24gYSBncmFjZWZ1bCBzdG9wLlxuLy8gUmVzZXQgb24gdGhlIHN0YXJ0IGVkZ2Ugc28gdGhlIG5leHQgcHJlc2VudGF0aW9uIGNhbiBlbmQgYWdhaW4uXG5mdW5jdGlvbiBzaWduYWxQcmVzZW50YXRpb25FbmRlZChvblByZXNlbnRhdGlvbkVuZGVkOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gIGlmIChwcmVzZW50YXRpb25FbmRlZCkgcmV0dXJuO1xuICBwcmVzZW50YXRpb25FbmRlZCA9IHRydWU7XG4gIG9uUHJlc2VudGF0aW9uRW5kZWQoKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc3RhcnRQcmVzZW50YXRpb25TeXN0ZW0oXG4gIGVuZ2luZTogSUVuZ2luZSxcbiAgZ2V0UGxheWVyQWRkcmVzczogKCkgPT4gc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBvblByZXNlbnRhdGlvbkVuZGVkOiAoKSA9PiB2b2lkLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmIChwcmVzZW50YXRpb25TeXN0ZW0gfHwgc3RhcnRpbmdTeXN0ZW0pIHJldHVybjtcbiAgc3RhcnRpbmdTeXN0ZW0gPSB0cnVlO1xuXG4gIHRyeSB7XG4gICAgLy8gVGhlIGJvdCBvbmx5IHNlcnZlcyBwcmVzZW50YXRpb246c3RhdGUgdG8gcHJlc2VudGVycywgc28gcHJvbW90ZSB0aGlzIGFkbWluXG4gICAgLy8gZmlyc3QuIGdldERjbENhc3RJbmZvIGxhemlseSBjcmVhdGVzIHRoZSByb29tIGVuc3VyZVByZXNlbnRlclJvbGUgZGVwZW5kcyBvbixcbiAgICAvLyBzbyBpdCBtdXN0IHJlc29sdmUgYmVmb3JlIGVuc3VyZVByZXNlbnRlclJvbGUgKHNlZSBQUiAjMTM1NikuXG4gICAgY29uc3QgWywgY2FzdERhdGFdID0gYXdhaXQgZ2V0RGNsQ2FzdEluZm8oKTtcbiAgICBpZiAoY2FzdERhdGEpIHNldERjbENhc3RJbmZvKGNhc3REYXRhKTtcblxuICAgIC8vIEJhaWwgKGxlYXZpbmcgcHJlc2VudGF0aW9uU3lzdGVtIG51bGwpIGlmIHdlIGNvdWxkbid0IGNvbmZpcm0gcHJlc2VudGVyXG4gICAgLy8gc3RhdHVzIOKAlCB0aGUgY29uc3VtZSBsb29wIHdvdWxkIG90aGVyd2lzZSBydW4gZm9yZXZlciByZWNlaXZpbmcgbm90aGluZyxcbiAgICAvLyB3aXRoIG5vIHJldHJ5LiBUaGUgbmV4dCBwb2xsIHRpY2sgcmUtYXR0ZW1wdHMgdGhlIHdob2xlIHNldHVwLlxuICAgIGNvbnN0IGFkZHJlc3MgPSBnZXRQbGF5ZXJBZGRyZXNzKCk7XG4gICAgaWYgKCFhZGRyZXNzIHx8ICEoYXdhaXQgZW5zdXJlUHJlc2VudGVyUm9sZShhZGRyZXNzKSkpIHJldHVybjtcblxuICAgIC8vIFRoZSBwcmVzZW50YXRpb24gbWF5IGhhdmUgZW5kZWQgd2hpbGUgd2Ugd2VyZSBzZXR0aW5nIHVwIOKAlCBiYWlsIHNvIHdlIGRvbid0XG4gICAgLy8gbGVhdmUgYW4gb3JwaGFuZWQgc3lzdGVtIHJ1bm5pbmcgZm9yIGEgcHJlc2VudGF0aW9uIHRoYXQncyBhbHJlYWR5IGdvbmUuXG4gICAgaWYgKCFwcmVzZW50YXRpb25BY3RpdmUpIHJldHVybjtcblxuICAgIHN1YnNjcmliZVRvUHJlc2VudGF0aW9uVG9waWMoKTtcblxuICAgIC8vIEtlZXAgcHJlc2VudGF0aW9uU3RhdGUgKHNsaWRlIGNvdW50ZXIsIHZpZGVvIHN0YXRlKSBpbiBzeW5jIHdpdGggdGhlIHRvcGljLFxuICAgIC8vIHRocm90dGxlZCB0byBDT05TVU1FX0lOVEVSVkFMX01TIOKAlCBkcmFpbmluZyBldmVyeSBmcmFtZSBpcyBmYXIgbW9yZSB0aGFuIGFcbiAgICAvLyBzbGlkZSBjb3VudGVyIG5lZWRzLiBUaGUgYGNvbnN1bWluZ2AgZ3VhcmQgcHJldmVudHMgb3ZlcmxhcCBpZiBhIGRyYWluXG4gICAgLy8gb3V0bGFzdHMgb25lIGludGVydmFsOyBlYWNoIGRyYWluIHJldHVybnMgdGhlIGxhdGVzdCBzdGF0ZSwgc28gdGhyb3R0bGluZ1xuICAgIC8vIG5ldmVyIGRyb3BzIHRoZSBmaW5hbCBtZXNzYWdlIChpbmNsdWRpbmcgYHByZXNlbnRhdGlvbjpzdG9wcGVkYCkuXG4gICAgY29uc3QgY29uc3VtZSA9ICgpID0+IHtcbiAgICAgIGlmIChjb25zdW1pbmcpIHJldHVybjtcbiAgICAgIGNvbnN1bWluZyA9IHRydWU7XG4gICAgICBjb25zdW1lUHJlc2VudGF0aW9uTWVzc2FnZXMoKVxuICAgICAgICAudGhlbihsYXRlc3RTdGF0ZSA9PiB7XG4gICAgICAgICAgLy8gVGhpcyBwcm9taXNlIGNhbiByZXNvbHZlIGFmdGVyIGEgZmFsbGluZy1lZGdlIHRlYXJkb3duIGNsZWFyZWQgdGhlXG4gICAgICAgICAgLy8gc3RhdGUgKHN0b3BQcmVzZW50YXRpb25TeXN0ZW0pLiBCYWlsIGlmIHRoZSBwcmVzZW50YXRpb24gaXMgbm8gbG9uZ2VyXG4gICAgICAgICAgLy8gYWN0aXZlIHNvIGEgbGF0ZSBkcmFpbiBjYW4ndCByZXBvcHVsYXRlIHN0YWxlIHNsaWRlIGNvbnRyb2xzIHRoYXRcbiAgICAgICAgICAvLyBub3RoaW5nIHdvdWxkIHRoZW4gY2xlYXIuXG4gICAgICAgICAgaWYgKCFwcmVzZW50YXRpb25BY3RpdmUpIHJldHVybjtcbiAgICAgICAgICBpZiAobGF0ZXN0U3RhdGUgPT09ICdzdG9wcGVkJykge1xuICAgICAgICAgICAgc2lnbmFsUHJlc2VudGF0aW9uRW5kZWQob25QcmVzZW50YXRpb25FbmRlZCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChsYXRlc3RTdGF0ZSkge1xuICAgICAgICAgICAgc2V0UHJlc2VudGF0aW9uU3RhdGUobGF0ZXN0U3RhdGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICAvLyBjb25zdW1lUHJlc2VudGF0aW9uTWVzc2FnZXMgc3dhbGxvd3MgaXRzIG93biBlcnJvcnMgYW5kIHJlc29sdmVzIHRvXG4gICAgICAgICAgLy8gdW5kZWZpbmVkLCBzbyB0aGlzIG9ubHkgZmlyZXMgb24gYW4gdW5leHBlY3RlZCByZWplY3Rpb24g4oCUIGxvZyBpdFxuICAgICAgICAgIC8vIHJhdGhlciB0aGFuIGRyb3BwaW5nIGl0IHNpbGVudGx5LCB0aGVuIHJldHJ5IG9uIHRoZSBuZXh0IHRpY2suXG4gICAgICAgICAgY29uc29sZS5lcnJvcignW0RjbENhc3RdIEZhaWxlZCB0byBjb25zdW1lIHByZXNlbnRhdGlvbiBtZXNzYWdlcycsIGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIGNvbnN1bWluZyA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgcHJlc2VudGF0aW9uU3lzdGVtID0gc2V0SW50ZXJ2YWwoZW5naW5lLCBjb25zdW1lLCBDT05TVU1FX0lOVEVSVkFMX01TKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAvLyBTZXR1cCBmYWlsZWQgKGUuZy4gYSBuZXR3b3JrIGNhbGwgcmVqZWN0ZWQpLiBMZWF2ZSBwcmVzZW50YXRpb25TeXN0ZW0gbnVsbFxuICAgIC8vIHNvIHRoZSBuZXh0IHBvbGwgdGljayByZXRyaWVzIGluc3RlYWQgb2Ygd2VkZ2luZyBkZXRlY3Rpb24gcGVybWFuZW50bHkuXG4gICAgY29uc29sZS5lcnJvcignW0RjbENhc3RdIEZhaWxlZCB0byBzdGFydCBwcmVzZW50YXRpb24gc3lzdGVtLCB3aWxsIHJldHJ5JywgZXJyb3IpO1xuICB9IGZpbmFsbHkge1xuICAgIHN0YXJ0aW5nU3lzdGVtID0gZmFsc2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gc3RvcFByZXNlbnRhdGlvblN5c3RlbShlbmdpbmU6IElFbmdpbmUpOiB2b2lkIHtcbiAgaWYgKHByZXNlbnRhdGlvblN5c3RlbSkge1xuICAgIGNsZWFySW50ZXJ2YWwoZW5naW5lLCBwcmVzZW50YXRpb25TeXN0ZW0pO1xuICAgIHByZXNlbnRhdGlvblN5c3RlbSA9IG51bGw7XG4gIH1cbiAgY2xlYXJQcmVzZW50YXRpb25TdGF0ZSgpO1xufVxuXG5mdW5jdGlvbiBpc0Nhc3RDYXBhYmxlU2NlbmUoZW5naW5lOiBJRW5naW5lKTogYm9vbGVhbiB7XG4gIGNvbnN0IHZpZGVvQ29udHJvbCA9IGdldEFkbWluVG9vbGtpdFZpZGVvQ29udHJvbChlbmdpbmUpO1xuICByZXR1cm4gISF2aWRlb0NvbnRyb2w/LmlzRW5hYmxlZCAmJiBnZXRWaWRlb1BsYXllcnMoZW5naW5lKS5sZW5ndGggPiAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RhcnRQcmVzZW50YXRpb25EZXRlY3Rpb24oXG4gIGVuZ2luZTogSUVuZ2luZSxcbiAgZ2V0SXNBZG1pbjogKCkgPT4gYm9vbGVhbixcbiAgZ2V0UGxheWVyQWRkcmVzczogKCkgPT4gc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBvblByZXNlbnRhdGlvblN0YXJ0ZWQ6ICgpID0+IHZvaWQsXG4gIG9uUHJlc2VudGF0aW9uRW5kZWQ6ICgpID0+IHZvaWQsXG4pOiB2b2lkIHtcbiAgaWYgKGRldGVjdGlvblN0YXJ0ZWQpIHJldHVybjtcbiAgZGV0ZWN0aW9uU3RhcnRlZCA9IHRydWU7XG5cbiAgY29uc3QgcG9sbCA9IGFzeW5jICgpID0+IHtcbiAgICAvLyBBZG1pbnMgb25seSwgYW5kIG9ubHkgaW4gc2NlbmVzIHdpdGggY2FzdCBzY3JlZW5zLiBSZS1jaGVja2VkIGVhY2ggdGljayBzb1xuICAgIC8vIGRldGVjdGlvbiBiZWdpbnMgYXMgc29vbiBhcyB0aGUgcGxheWVyL2FkbWluIGxpc3QgcmVzb2x2ZXMuXG4gICAgaWYgKCFnZXRJc0FkbWluKCkgfHwgIWlzQ2FzdENhcGFibGVTY2VuZShlbmdpbmUpKSByZXR1cm47XG5cbiAgICAvLyBTa2lwIGlmIGEgcHJldmlvdXMgdGljayBpcyBzdGlsbCBpbiBmbGlnaHQg4oCUIGdldEFjdGl2ZVN0cmVhbXMgYW5kIHRoZSBzeXN0ZW1cbiAgICAvLyBzZXR1cCBpdCB0cmlnZ2VycyBjYW4gb3V0bGFzdCBQT0xMX0lOVEVSVkFMX01TLiBNaXJyb3JzIHRoZSBgY29uc3VtaW5nYCBndWFyZC5cbiAgICBpZiAocG9sbGluZykgcmV0dXJuO1xuICAgIHBvbGxpbmcgPSB0cnVlO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB0cmFja3MgPSBhd2FpdCBnZXRBY3RpdmVTdHJlYW1zKCk7XG4gICAgICBpZiAoIXRyYWNrcykgcmV0dXJuO1xuXG4gICAgICAvLyBLZWVwIHRoZSBTcGVha2VyIFNob3djYXNlIGxpc3QgZnJlc2ggKGFsc28gZHJpdmVzIHRoZSBjb21wYWN0IHZpZXcnc1xuICAgICAgLy8gcHJlc2VudGF0aW9uIGNvbnRyb2xzIHZpYSBwcmVzZW50YXRpb25Cb3RJblJvb20pLlxuICAgICAgc2V0UGFydGljaXBhbnRzKGdyb3VwVHJhY2tzQnlQYXJ0aWNpcGFudCh0cmFja3MpKTtcblxuICAgICAgY29uc3QgaGFzUHJlc2VudGF0aW9uID0gaGFzUHJlc2VudGF0aW9uVHJhY2sodHJhY2tzKTtcbiAgICAgIGlmIChoYXNQcmVzZW50YXRpb24pIHtcbiAgICAgICAgLy8gQXV0by1vcGVuIG9uY2UsIG9uIHRoZSB0cmFjay1hcHBlYXJlZCBlZGdlIOKAlCBpbmRlcGVuZGVudCBvZiB3aGV0aGVyIHRoZVxuICAgICAgICAvLyBjb25zdW1lIHN5c3RlbSBoYXMgZmluaXNoZWQgKG9yIGZhaWxlZCkgaXRzIHNldHVwLCBzbyBhIHNldHVwIHJldHJ5IG5ldmVyXG4gICAgICAgIC8vIHJlLW9wZW5zIHRoZSBwYW5lbCB0aGUgYWRtaW4gbWF5IGhhdmUgc2luY2UgY2xvc2VkLlxuICAgICAgICBpZiAoIXByZXNlbnRhdGlvbkFjdGl2ZSkge1xuICAgICAgICAgIHByZXNlbnRhdGlvbkFjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgcHJlc2VudGF0aW9uRW5kZWQgPSBmYWxzZTtcbiAgICAgICAgICBvblByZXNlbnRhdGlvblN0YXJ0ZWQoKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBFbnN1cmUgdGhlIGNvbnN1bWUgc3lzdGVtIGlzIHJ1bm5pbmcuIFJldHJpZXMgYSBwcmV2aW91c2x5IGZhaWxlZCBzZXR1cFxuICAgICAgICAvLyBiZWNhdXNlIHByZXNlbnRhdGlvblN5c3RlbSBpcyBvbmx5IGFzc2lnbmVkIG9uIHN1Y2Nlc3MuXG4gICAgICAgIGF3YWl0IHN0YXJ0UHJlc2VudGF0aW9uU3lzdGVtKGVuZ2luZSwgZ2V0UGxheWVyQWRkcmVzcywgb25QcmVzZW50YXRpb25FbmRlZCk7XG4gICAgICB9IGVsc2UgaWYgKHByZXNlbnRhdGlvbkFjdGl2ZSkge1xuICAgICAgICBwcmVzZW50YXRpb25BY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgc2lnbmFsUHJlc2VudGF0aW9uRW5kZWQob25QcmVzZW50YXRpb25FbmRlZCk7XG4gICAgICAgIHN0b3BQcmVzZW50YXRpb25TeXN0ZW0oZW5naW5lKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gQSByZWplY3RlZCBuZXR3b3JrIGNhbGwgKGdldEFjdGl2ZVN0cmVhbXMpIG9yIHNldHVwIHN0ZXAgd291bGQgb3RoZXJ3aXNlXG4gICAgICAvLyBzdXJmYWNlIGFzIGFuIHVuaGFuZGxlZCByZWplY3Rpb247IGxvZyBhbmQgcmV0cnkgb24gdGhlIG5leHQgdGljay5cbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tEY2xDYXN0XSBQcmVzZW50YXRpb24gZGV0ZWN0aW9uIHBvbGwgZmFpbGVkLCB3aWxsIHJldHJ5JywgZXJyb3IpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBwb2xsaW5nID0gZmFsc2U7XG4gICAgfVxuICB9O1xuXG4gIC8vIFBvbGwgaW1tZWRpYXRlbHksIHRoZW4gZXZlcnkgc2Vjb25kLiBUaGUgaGFuZGxlIGlzIGludGVudGlvbmFsbHkgZGlzY2FyZGVkOlxuICAvLyBkZXRlY3Rpb24gcnVucyBmb3IgdGhlIHNjZW5lJ3MgbGlmZXRpbWUgYW5kIGlzIG5ldmVyIHRvcm4gZG93bi5cbiAgcG9sbCgpO1xuICBzZXRJbnRlcnZhbChlbmdpbmUsIHBvbGwsIFBPTExfSU5URVJWQUxfTVMpO1xufVxuIl19
|
|
@@ -5,7 +5,7 @@ import { LoadingDots } from '../../Loading';
|
|
|
5
5
|
import { Error } from '../../Error';
|
|
6
6
|
import { resetStreamKey } from '../api';
|
|
7
7
|
import { getComponents } from '../../../definitions';
|
|
8
|
-
import { state } from '
|
|
8
|
+
import { state } from '../../store';
|
|
9
9
|
export function DeleteStreamKeyConfirmation({ engine, onCancel, onReset, }) {
|
|
10
10
|
const [isLoading, setIsLoading] = ReactEcs.useState(false);
|
|
11
11
|
const [error, setError] = ReactEcs.useState('');
|
|
@@ -59,4 +59,4 @@ export function DeleteStreamKeyConfirmation({ engine, onCancel, onReset, }) {
|
|
|
59
59
|
isLoading && ReactEcs.createElement(LoadingDots, { engine: engine }),
|
|
60
60
|
error && ReactEcs.createElement(Error, { text: error })));
|
|
61
61
|
}
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVsZXRlU3RyZWFtS2V5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FkbWluLXRvb2xraXQtdWkvVmlkZW9Db250cm9sL0xpdmVTdHJlYW0vRGVsZXRlU3RyZWFtS2V5LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sUUFBUSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDeEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFcEMsTUFBTSxVQUFVLDJCQUEyQixDQUFDLEVBQzFDLE1BQU0sRUFDTixRQUFRLEVBQ1IsT0FBTyxHQUtSO0lBQ0MsTUFBTSxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNELE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoRCxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFcEQsT0FBTyxDQUNMLHVCQUFDLFFBQVEsSUFDUCxXQUFXLEVBQUU7WUFDWCxTQUFTLEVBQUUsR0FBRztZQUNkLE9BQU8sRUFBRSxNQUFNO1lBQ2YsYUFBYSxFQUFFLFFBQVE7WUFD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QUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgSUVuZ2luZSB9IGZyb20gJ0BkY2wvZWNzJztcbmltcG9ydCB7IENvbG9yNCB9IGZyb20gJ0BkY2wvZWNzLW1hdGgnO1xuaW1wb3J0IFJlYWN0RWNzLCB7IFVpRW50aXR5LCBMYWJlbCB9IGZyb20gJ0BkY2wvcmVhY3QtZWNzJztcblxuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSAnLi4vLi4vQnV0dG9uJztcbmltcG9ydCB7IExvYWRpbmdEb3RzIH0gZnJvbSAnLi4vLi4vTG9hZGluZyc7XG5pbXBvcnQgeyBFcnJvciB9IGZyb20gJy4uLy4uL0Vycm9yJztcbmltcG9ydCB7IHJlc2V0U3RyZWFtS2V5IH0gZnJvbSAnLi4vYXBpJztcbmltcG9ydCB7IGdldENvbXBvbmVudHMgfSBmcm9tICcuLi8uLi8uLi9kZWZpbml0aW9ucyc7XG5pbXBvcnQgeyBzdGF0ZSB9IGZyb20gJy4uLy4uL3N0b3JlJztcblxuZXhwb3J0IGZ1bmN0aW9uIERlbGV0ZVN0cmVhbUtleUNvbmZpcm1hdGlvbih7XG4gIGVuZ2luZSxcbiAgb25DYW5jZWwsXG4gIG9uUmVzZXQsXG59OiB7XG4gIGVuZ2luZTogSUVuZ2luZTtcbiAgb25DYW5jZWwoKTogdm9pZDtcbiAgb25SZXNldCgpOiB2b2lkO1xufSkge1xuICBjb25zdCBbaXNMb2FkaW5nLCBzZXRJc0xvYWRpbmddID0gUmVhY3RFY3MudXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbZXJyb3IsIHNldEVycm9yXSA9IFJlYWN0RWNzLnVzZVN0YXRlKCcnKTtcbiAgY29uc3QgeyBWaWRlb0NvbnRyb2xTdGF0ZSB9ID0gZ2V0Q29tcG9uZW50cyhlbmdpbmUpO1xuXG4gIHJldHVybiAoXG4gICAgPFVpRW50aXR5XG4gICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICBtaW5IZWlnaHQ6IDQ3OSxcbiAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgYm9yZGVyUmFkaXVzOiAxMixcbiAgICAgIH19XG4gICAgPlxuICAgICAgPExhYmVsXG4gICAgICAgIHZhbHVlPVwiPGI+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlc2V0IHlvdXIgU3RyZWFtIEtleT88L2I+XCJcbiAgICAgICAgZm9udFNpemU9ezE2fVxuICAgICAgICBjb2xvcj17Q29sb3I0LmZyb21IZXhTdHJpbmcoJyNGQ0ZDRkMnKX1cbiAgICAgIC8+XG5cbiAgICAgIDxMYWJlbFxuICAgICAgICB2YWx1ZT1cIkFjdGl2ZSBzdHJlYW1zIHVzaW5nIHRoaXMgc3RyZWFtIGtleSB3aWxsIGJlIGRpc2Nvbm5lY3RlZC5cIlxuICAgICAgICBmb250U2l6ZT17MTR9XG4gICAgICAgIGNvbG9yPXtDb2xvcjQuZnJvbUhleFN0cmluZygnI0ZGRkZGRkIyJyl9XG4gICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgbWFyZ2luOiB7IHRvcDogNiwgYm90dG9tOiAyNCB9LFxuICAgICAgICB9fVxuICAgICAgLz5cblxuICAgICAgPFVpRW50aXR5XG4gICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdyb3cnLFxuICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICB7IWlzTG9hZGluZyAmJiAoXG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgaWQ9XCJzdHJlYW1fa2V5X2NhbmNlbF9yZW1vdmVcIlxuICAgICAgICAgICAgdmFsdWU9XCI8Yj5DYW5jZWw8L2I+XCJcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgIGZvbnRTaXplPXsxOH1cbiAgICAgICAgICAgIGNvbG9yPXtDb2xvcjQuQmxhY2soKX1cbiAgICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICAgIHdpZHRoOiA5MCxcbiAgICAgICAgICAgICAgaGVpZ2h0OiA0MCxcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgICBtYXJnaW46IHsgcmlnaHQ6IDMwLCBsZWZ0OiAzMCB9LFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9uTW91c2VEb3duPXsoKSA9PiBvbkNhbmNlbCgpfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHshaXNMb2FkaW5nICYmIChcbiAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICBpZD1cInN0cmVhbV9rZXlfY29uZmlybV9yZW1vdmVcIlxuICAgICAgICAgICAgdmFsdWU9eyc8Yj5SZXNldDwvYj4nfVxuICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgZm9udFNpemU9ezE4fVxuICAgICAgICAgICAgY29sb3I9e0NvbG9yNC5XaGl0ZSgpfVxuICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgcGFkZGluZzogOCxcbiAgICAgICAgICAgICAgaGVpZ2h0OiA0MCxcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICB1aUJhY2tncm91bmQ9e3sgY29sb3I6IENvbG9yNC5mcm9tSGV4U3RyaW5nKCcjRkIzQjNCJykgfX1cbiAgICAgICAgICAgIG9uTW91c2VEb3duPXthc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgIHNldElzTG9hZGluZyh0cnVlKTtcbiAgICAgICAgICAgICAgY29uc3QgW2Vycm9yLCBkYXRhXSA9IGF3YWl0IHJlc2V0U3RyZWFtS2V5KCk7XG4gICAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHNldEVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZpZGVvQ29udHJvbCA9IFZpZGVvQ29udHJvbFN0YXRlLmdldE11dGFibGUoc3RhdGUuYWRtaW5Ub29sa2l0VWlFbnRpdHkpO1xuICAgICAgICAgICAgICAgIHZpZGVvQ29udHJvbC5lbmRzQXQgPSBkYXRhPy5lbmRzQXQ7XG4gICAgICAgICAgICAgICAgb25SZXNldCgpO1xuICAgICAgICAgICAgICAgIHNldElzTG9hZGluZyhmYWxzZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvVWlFbnRpdHk+XG4gICAgICB7aXNMb2FkaW5nICYmIDxMb2FkaW5nRG90cyBlbmdpbmU9e2VuZ2luZX0gLz59XG4gICAgICB7ZXJyb3IgJiYgPEVycm9yIHRleHQ9e2Vycm9yfSAvPn1cbiAgICA8L1VpRW50aXR5PlxuICApO1xufVxuIl19
|
|
@@ -5,7 +5,7 @@ import { Error } from '../../Error';
|
|
|
5
5
|
import { generateStreamKey } from '../api';
|
|
6
6
|
import { LoadingDots } from '../../Loading';
|
|
7
7
|
import { getComponents } from '../../../definitions';
|
|
8
|
-
import { state } from '
|
|
8
|
+
import { state } from '../../store';
|
|
9
9
|
export function GenerateStreamKey({ engine, onGenerate, }) {
|
|
10
10
|
const [loading, setLoading] = ReactEcs.useState(false);
|
|
11
11
|
const [error, setError] = ReactEcs.useState('');
|
|
@@ -38,4 +38,4 @@ export function GenerateStreamKey({ engine, onGenerate, }) {
|
|
|
38
38
|
} })),
|
|
39
39
|
error && (ReactEcs.createElement(Error, { text: error, uiTransform: { margin: { top: 16 } } }))))));
|
|
40
40
|
}
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2VuZXJhdGVTdHJlYW1LZXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYWRtaW4tdG9vbGtpdC11aS9WaWRlb0NvbnRyb2wvTGl2ZVN0cmVhbS9HZW5lcmF0ZVN0cmVhbUtleS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2QyxPQUFPLFFBQVEsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFcEMsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEVBQ2hDLE1BQU0sRUFDTixVQUFVLEdBSVg7SUFDQyxNQUFNLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDaEUsTUFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVwRCxPQUFPLENBQ0wsdUJBQUMsUUFBUSxJQUNQLFdBQVcsRUFBRTtZQUNYLEtBQUssRUFBRSxNQUFNO1lBQ2IsTUFBTSxFQUFFLEdBQUc7WUFDWCxjQUFjLEVBQUUsUUFBUTtZQUN4QixVQUFVLEVBQUUsUUFBUTtTQUNyQixJQUVBLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FDVCx1QkFBQyxRQUFRLElBQUMsV0FBVyxFQUFFLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRTtRQUNoRCx1QkFBQyxXQUFXLElBQUMsTUFBTSxFQUFFLE1BQU0sR0FBSTtRQUMvQix1QkFBQyxLQUFLLElBQ0osS0FBSyxFQUFDLDRCQUE0QixFQUNsQyxLQUFLLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsRUFDdEMsUUFBUSxFQUFFLEVBQUUsRUFDWixXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FDcEMsQ0FDTyxDQUNaLENBQUMsQ0FBQyxDQUFDLENBQ0YsdUJBQUMsUUFBUSxJQUFDLFdBQVcsRUFBRSxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUU7UUFDaEQsdUJBQUMsUUFBUSxJQUFDLFdBQVcsRUFBRSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtZQUNoRSx1QkFBQyxNQUFNLElBQ0wsRUFBRSxFQUFDLGlDQUFpQyxFQUNwQyxLQUFLLEVBQUMsdUJBQXVCLEVBQzdCLFFBQVEsRUFBRSxFQUFFLEVBQ1osV0FBVyxFQUFFO29CQUNYLE1BQU0sRUFBRSxFQUFFO29CQUNWLE9BQU8sRUFBRSxFQUFFO29CQUNYLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUU7aUJBQ3ZCLEVBQ0QsV0FBVyxFQUFFLEtBQUssSUFBSSxFQUFFO29CQUN0QixVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2pCLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsTUFBTSxpQkFBaUIsRUFBRSxDQUFDO29CQUNoRCxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ2xCLElBQUksS0FBSyxFQUFFLENBQUM7d0JBQ1YsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNsQixDQUFDO3lCQUFNLElBQUksSUFBSSxFQUFFLENBQUM7d0JBQ2hCLE1BQU0sWUFBWSxHQUFHLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQzt3QkFDOUUsWUFBWSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO3dCQUNsQyxVQUFVLEVBQUUsQ0FBQztvQkFDZixDQUFDO2dCQUNILENBQUMsR0FDRCxDQUNPO1FBQ1YsS0FBSyxJQUFJLENBQ1IsdUJBQUMsS0FBSyxJQUNKLElBQUksRUFBRSxLQUFLLEVBQ1gsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQ3BDLENBQ0gsQ0FDUSxDQUNaLENBQ1EsQ0FDWixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbG9yNCB9IGZyb20gJ0BkY2wvc2RrL21hdGgnO1xuaW1wb3J0IHR5cGUgeyBJRW5naW5lIH0gZnJvbSAnQGRjbC9lY3MnO1xuaW1wb3J0IFJlYWN0RWNzLCB7IFVpRW50aXR5LCBMYWJlbCB9IGZyb20gJ0BkY2wvcmVhY3QtZWNzJztcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJy4uLy4uL0J1dHRvbic7XG5pbXBvcnQgeyBFcnJvciB9IGZyb20gJy4uLy4uL0Vycm9yJztcbmltcG9ydCB7IGdlbmVyYXRlU3RyZWFtS2V5IH0gZnJvbSAnLi4vYXBpJztcbmltcG9ydCB7IExvYWRpbmdEb3RzIH0gZnJvbSAnLi4vLi4vTG9hZGluZyc7XG5pbXBvcnQgeyBnZXRDb21wb25lbnRzIH0gZnJvbSAnLi4vLi4vLi4vZGVmaW5pdGlvbnMnO1xuaW1wb3J0IHsgc3RhdGUgfSBmcm9tICcuLi8uLi9zdG9yZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBHZW5lcmF0ZVN0cmVhbUtleSh7XG4gIGVuZ2luZSxcbiAgb25HZW5lcmF0ZSxcbn06IHtcbiAgZW5naW5lOiBJRW5naW5lO1xuICBvbkdlbmVyYXRlOiAoKSA9PiB2b2lkO1xufSkge1xuICBjb25zdCBbbG9hZGluZywgc2V0TG9hZGluZ10gPSBSZWFjdEVjcy51c2VTdGF0ZTxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IFtlcnJvciwgc2V0RXJyb3JdID0gUmVhY3RFY3MudXNlU3RhdGU8c3RyaW5nPignJyk7XG4gIGNvbnN0IHsgVmlkZW9Db250cm9sU3RhdGUgfSA9IGdldENvbXBvbmVudHMoZW5naW5lKTtcblxuICByZXR1cm4gKFxuICAgIDxVaUVudGl0eVxuICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgaGVpZ2h0OiA0NjAsXG4gICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICB9fVxuICAgID5cbiAgICAgIHtsb2FkaW5nID8gKFxuICAgICAgICA8VWlFbnRpdHkgdWlUcmFuc2Zvcm09e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicgfX0+XG4gICAgICAgICAgPExvYWRpbmdEb3RzIGVuZ2luZT17ZW5naW5lfSAvPlxuICAgICAgICAgIDxMYWJlbFxuICAgICAgICAgICAgdmFsdWU9XCJHZW5lcmF0aW5nIHlvdXIgU3RyZWFtIEtleVwiXG4gICAgICAgICAgICBjb2xvcj17Q29sb3I0LmZyb21IZXhTdHJpbmcoJyNBMDlCQTgnKX1cbiAgICAgICAgICAgIGZvbnRTaXplPXsxNn1cbiAgICAgICAgICAgIHVpVHJhbnNmb3JtPXt7IG1hcmdpbjogeyB0b3A6IDE2IH0gfX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1VpRW50aXR5PlxuICAgICAgKSA6IChcbiAgICAgICAgPFVpRW50aXR5IHVpVHJhbnNmb3JtPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nIH19PlxuICAgICAgICAgIDxVaUVudGl0eSB1aVRyYW5zZm9ybT17eyBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsIHdpZHRoOiAnMTAwJScgfX0+XG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIGlkPVwidmlkZW9fY29udHJvbF9saXZlX2dlbmVyYXRlX2tleVwiXG4gICAgICAgICAgICAgIHZhbHVlPVwiPGI+R2V0IFN0cmVhbSBLZXk8L2I+XCJcbiAgICAgICAgICAgICAgZm9udFNpemU9ezE4fVxuICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICAgIGhlaWdodDogNTIsXG4gICAgICAgICAgICAgICAgcGFkZGluZzogMTYsXG4gICAgICAgICAgICAgICAgbWFyZ2luOiB7IGJvdHRvbTogMTYgfSxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgb25Nb3VzZURvd249e2FzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICBzZXRMb2FkaW5nKHRydWUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IFtlcnJvciwgZGF0YV0gPSBhd2FpdCBnZW5lcmF0ZVN0cmVhbUtleSgpO1xuICAgICAgICAgICAgICAgIHNldExvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgc2V0RXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YSkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgdmlkZW9Db250cm9sID0gVmlkZW9Db250cm9sU3RhdGUuZ2V0TXV0YWJsZShzdGF0ZS5hZG1pblRvb2xraXRVaUVudGl0eSk7XG4gICAgICAgICAgICAgICAgICB2aWRlb0NvbnRyb2wuZW5kc0F0ID0gZGF0YS5lbmRzQXQ7XG4gICAgICAgICAgICAgICAgICBvbkdlbmVyYXRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1VpRW50aXR5PlxuICAgICAgICAgIHtlcnJvciAmJiAoXG4gICAgICAgICAgICA8RXJyb3JcbiAgICAgICAgICAgICAgdGV4dD17ZXJyb3J9XG4gICAgICAgICAgICAgIHVpVHJhbnNmb3JtPXt7IG1hcmdpbjogeyB0b3A6IDE2IH0gfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9VaUVudGl0eT5cbiAgICAgICl9XG4gICAgPC9VaUVudGl0eT5cbiAgKTtcbn1cbiJdfQ==
|