@dcl/asset-packs 2.16.1 → 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/catalog.json +92 -0
- 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
|
@@ -7,6 +7,7 @@ import { FeedbackButton } from '../../FeedbackButton';
|
|
|
7
7
|
import { LIVEKIT_STREAM_SRC } from '../LiveStream';
|
|
8
8
|
import { VideoControlVolume } from '../VolumeControl';
|
|
9
9
|
import { createVideoPlayerControls, isDclCast } from '../utils';
|
|
10
|
+
import { setStream } from '../../actions';
|
|
10
11
|
import { getDclCastStyles, getDclCastColors, getDclCastBackgrounds } from './styles';
|
|
11
12
|
const ICONS = {
|
|
12
13
|
get COPY_TO_CLIPBOARD_ICON() {
|
|
@@ -30,10 +31,10 @@ const DclCastInfo = ({ state, engine, onResetRoomId, onShowShowcaseModal, onShar
|
|
|
30
31
|
ReactEcs.createElement(Label, { value: `Expires in ${state.videoControl.dclCast?.expiresInDays} days`, fontSize: 14, color: colors.gray, uiTransform: styles.marginTopSmall })),
|
|
31
32
|
video?.src && isDclCast(video.src) ? (ReactEcs.createElement(Button, { id: "dcl_cast_deactivate", value: "<b>Deactivate</b>", variant: "text", fontSize: 16, color: colors.white, uiTransform: styles.activateButton, onMouseDown: () => {
|
|
32
33
|
controls.setSource('');
|
|
33
|
-
|
|
34
|
+
setStream(undefined);
|
|
34
35
|
} })) : (ReactEcs.createElement(Button, { id: "dcl_cast_activate", value: "<b>Activate</b>", labelTransform: styles.activateButtonLabel, uiTransform: styles.activateButton, fontSize: 16, uiBackground: backgrounds.success, color: colors.black, onMouseDown: () => {
|
|
35
36
|
controls.setSource(LIVEKIT_STREAM_SRC);
|
|
36
|
-
|
|
37
|
+
setStream('dcl-cast');
|
|
37
38
|
} }))),
|
|
38
39
|
ReactEcs.createElement(UiEntity, { uiTransform: styles.columnContainer },
|
|
39
40
|
ReactEcs.createElement(UiEntity, { uiTransform: styles.rowCenterSpaceBetween },
|
|
@@ -84,4 +85,4 @@ const DclCastInfo = ({ state, engine, onResetRoomId, onShowShowcaseModal, onShar
|
|
|
84
85
|
ReactEcs.createElement(Button, { id: "dcl_cast_reset_room_id", value: "<b>Reset Room</b>", variant: "text", fontSize: 16, color: colors.danger, uiTransform: styles.resetButton, onMouseDown: onResetRoomId }))))));
|
|
85
86
|
};
|
|
86
87
|
export default DclCastInfo;
|
|
87
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGNsQ2FzdEluZm8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYWRtaW4tdG9vbGtpdC11aS9WaWRlb0NvbnRyb2wvRGNsQ2FzdC9EY2xDYXN0SW5mby50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxRQUFRLEVBQUUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXRELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsU0FBUyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVyRixNQUFNLEtBQUssR0FBRztJQUNaLElBQUksc0JBQXNCO1FBQ3hCLE9BQU8sR0FBRyxhQUFhLEVBQUUsbURBQW1ELENBQUM7SUFDL0UsQ0FBQztJQUNELElBQUksSUFBSTtRQUNOLE9BQU8sR0FBRyxhQUFhLEVBQUUsc0NBQXNDLENBQUM7SUFDbEUsQ0FBQztDQUNGLENBQUM7QUFFRixNQUFNLFdBQVcsR0FBRyxDQUFDLEVBQ25CLEtBQUssRUFDTCxNQUFNLEVBQ04sYUFBYSxFQUNiLG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIsTUFBTSxFQUNOLEtB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QUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFDbkIsV0FBVyxFQUFFLE1BQU0sQ0FBQyxjQUFjLEVBQ2xDLFdBQVcsRUFBRSxtQkFBbUIsR0FDaEMsQ0FDSCxDQUNRO2dCQUNYLHVCQUFDLFFBQVEsSUFBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLGVBQWU7b0JBQzNDLHVCQUFDLE1BQU0sSUFDTCxFQUFFLEVBQUMsZ0NBQWdDLEVBQ25DLEtBQUssRUFDSCxLQUFLLENBQUMsWUFBWSxDQUFDLGlCQUFpQjs0QkFDbEMsQ0FBQyxDQUFDLDZCQUE2Qjs0QkFDL0IsQ0FBQyxDQUFDLDJCQUEyQixFQUVqQyxPQUFPLEVBQUMsTUFBTSxFQUNkLFFBQVEsRUFBRSxFQUFFLEVBQ1osS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQ25CLFdBQVcsRUFBRTs0QkFDWCxHQUFHLE1BQU0sQ0FBQyxXQUFXOzRCQUNyQixPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU07eUJBQzlELEVBQ0QsV0FBVyxFQUFFLG1CQUFtQixHQUNoQztvQkFDRix1QkFBQyxNQUFNLElBQ0wsRUFBRSxFQUFDLHdCQUF3QixFQUMzQixLQUFLLEVBQUMsbUJBQW1CLEVBQ3pCLE9BQU8sRUFBQyxNQUFNLEVBQ2QsUUFBUSxFQUFFLEVBQUUsRUFDWixLQUFLLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFDcEIsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXLEVBQy9CLFdBQVcsRUFBRSxhQUFhLEdBQzFCLENBQ08sQ0FDRixDQUNGLENBQ0YsQ0FDWixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsZUFBZSxXQUFXLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEVudGl0eSwgSUVuZ2luZSB9IGZyb20gJ0BkY2wvZWNzJztcbmltcG9ydCB0eXBlIHsgRGVlcFJlYWRvbmx5T2JqZWN0LCBQQlZpZGVvUGxheWVyIH0gZnJvbSAnQGRjbC9lY3MnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAtLSBSZWFjdEVjcyBpcyByZXF1aXJlZCBmb3IgSlNYIGZhY3RvcnlcbmltcG9ydCBSZWFjdEVjcywgeyBMYWJlbCwgVWlFbnRpdHkgfSBmcm9tICdAZGNsL3JlYWN0LWVjcyc7XG5pbXBvcnQgeyBDb2xvcjQgfSBmcm9tICdAZGNsL3Nkay9tYXRoJztcbmltcG9ydCB7IGNvcHlUb0NsaXBib2FyZCB9IGZyb20gJ35zeXN0ZW0vUmVzdHJpY3RlZEFjdGlvbnMnO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSAnLi4vLi4vQnV0dG9uJztcbmltcG9ydCB7IGdldENvbnRlbnRVcmwgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgRmVlZGJhY2tCdXR0b24gfSBmcm9tICcuLi8uLi9GZWVkYmFja0J1dHRvbic7XG5pbXBvcnQgdHlwZSB7IFN0YXRlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgTElWRUtJVF9TVFJFQU1fU1JDIH0gZnJvbSAnLi4vTGl2ZVN0cmVhbSc7XG5pbXBvcnQgeyBWaWRlb0NvbnRyb2xWb2x1bWUgfSBmcm9tICcuLi9Wb2x1bWVDb250cm9sJztcbmltcG9ydCB7IGNyZWF0ZVZpZGVvUGxheWVyQ29udHJvbHMsIGlzRGNsQ2FzdCB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IGdldERjbENhc3RTdHlsZXMsIGdldERjbENhc3RDb2xvcnMsIGdldERjbENhc3RCYWNrZ3JvdW5kcyB9IGZyb20gJy4vc3R5bGVzJztcblxuY29uc3QgSUNPTlMgPSB7XG4gIGdldCBDT1BZX1RPX0NMSVBCT0FSRF9JQ09OKCkge1xuICAgIHJldHVybiBgJHtnZXRDb250ZW50VXJsKCl9L2FkbWluX3Rvb2xraXQvYXNzZXRzL2ljb25zL2NvcHktdG8tY2xpcGJvYXJkLnBuZ2A7XG4gIH0sXG4gIGdldCBTVEFSKCkge1xuICAgIHJldHVybiBgJHtnZXRDb250ZW50VXJsKCl9L2FkbWluX3Rvb2xraXQvYXNzZXRzL2ljb25zL3N0YXIucG5nYDtcbiAgfSxcbn07XG5cbmNvbnN0IERjbENhc3RJbmZvID0gKHtcbiAgc3RhdGUsXG4gIGVuZ2luZSxcbiAgb25SZXNldFJvb21JZCxcbiAgb25TaG93U2hvd2Nhc2VNb2RhbCxcbiAgb25TaGFyZVByZXNlbnRhdGlvbixcbiAgZW50aXR5LFxuICB2aWRlbyxcbn06IHtcbiAgc3RhdGU6IFN0YXRlO1xuICBlbmdpbmU6IElFbmdpbmU7XG4gIG9uUmVzZXRSb29tSWQ6ICgpID0+IFByb21pc2U8dm9pZD47XG4gIG9uU2hvd1Nob3djYXNlTW9kYWw6ICgpID0+IFByb21pc2U8dm9pZD47XG4gIG9uU2hhcmVQcmVzZW50YXRpb246ICgpID0+IHZvaWQ7XG4gIGVudGl0eTogRW50aXR5O1xuICB2aWRlbzogRGVlcFJlYWRvbmx5T2JqZWN0PFBCVmlkZW9QbGF5ZXI+IHwgdW5kZWZpbmVkO1xufSkgPT4ge1xuICBjb25zdCBjb250cm9scyA9IGNyZWF0ZVZpZGVvUGxheWVyQ29udHJvbHMoZW50aXR5LCBlbmdpbmUpO1xuICBjb25zdCBzdHlsZXMgPSBnZXREY2xDYXN0U3R5bGVzKCk7XG4gIGNvbnN0IGNvbG9ycyA9IGdldERjbENhc3RDb2xvcnMoKTtcbiAgY29uc3QgYmFja2dyb3VuZHMgPSBnZXREY2xDYXN0QmFja2dyb3VuZHMoKTtcbiAgcmV0dXJuIChcbiAgICA8VWlFbnRpdHkgdWlUcmFuc2Zvcm09e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicgfX0+XG4gICAgICA8VWlFbnRpdHkgdWlUcmFuc2Zvcm09e3N0eWxlcy5mdWxsQ29udGFpbmVyfT5cbiAgICAgICAgPFVpRW50aXR5IHVpVHJhbnNmb3JtPXtzdHlsZXMubWFpbkJvcmRlcmVkQ29udGFpbmVyfT5cbiAgICAgICAgICA8VWlFbnRpdHkgdWlUcmFuc2Zvcm09e3N0eWxlcy5oZWFkZXJSb3d9PlxuICAgICAgICAgICAgPFVpRW50aXR5IHVpVHJhbnNmb3JtPXtzdHlsZXMuY29sdW1uRmxleFN0YXJ0fT5cbiAgICAgICAgICAgICAgPExhYmVsXG4gICAgICAgICAgICAgICAgdmFsdWU9eyc8Yj5Sb29tIElEPC9iPid9XG4gICAgICAgICAgICAgICAgZm9udFNpemU9ezI0fVxuICAgICAgICAgICAgICAgIGNvbG9yPXtDb2xvcjQuV2hpdGUoKX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPExhYmVsXG4gICAgICAgICAgICAgICAgdmFsdWU9e2BFeHBpcmVzIGluICR7c3RhdGUudmlkZW9Db250cm9sLmRjbENhc3Q/LmV4cGlyZXNJbkRheXN9IGRheXNgfVxuICAgICAgICAgICAgICAgIGZvbnRTaXplPXsxNH1cbiAgICAgICAgICAgICAgICBjb2xvcj17Y29sb3JzLmdyYXl9XG4gICAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3N0eWxlcy5tYXJnaW5Ub3BTbWFsbH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICAgICAgICB7dmlkZW8/LnNyYyAmJiBpc0RjbENhc3QodmlkZW8uc3JjKSA/IChcbiAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgIGlkPVwiZGNsX2Nhc3RfZGVhY3RpdmF0ZVwiXG4gICAgICAgICAgICAgICAgdmFsdWU9XCI8Yj5EZWFjdGl2YXRlPC9iPlwiXG4gICAgICAgICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgICAgICAgIGZvbnRTaXplPXsxNn1cbiAgICAgICAgICAgICAgICBjb2xvcj17Y29sb3JzLndoaXRlfVxuICAgICAgICAgICAgICAgIHVpVHJhbnNmb3JtPXtzdHlsZXMuYWN0aXZhdGVCdXR0b259XG4gICAgICAgICAgICAgICAgb25Nb3VzZURvd249eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xzLnNldFNvdXJjZSgnJyk7XG4gICAgICAgICAgICAgICAgICBzdGF0ZS52aWRlb0NvbnRyb2wuc2VsZWN0ZWRTdHJlYW0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICBpZD1cImRjbF9jYXN0X2FjdGl2YXRlXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT1cIjxiPkFjdGl2YXRlPC9iPlwiXG4gICAgICAgICAgICAgICAgbGFiZWxUcmFuc2Zvcm09e3N0eWxlcy5hY3RpdmF0ZUJ1dHRvbkxhYmVsfVxuICAgICAgICAgICAgICAgIHVpVHJhbnNmb3JtPXtzdHlsZXMuYWN0aXZhdGVCdXR0b259XG4gICAgICAgICAgICAgICAgZm9udFNpemU9ezE2fVxuICAgICAgICAgICAgICAgIHVpQmFja2dyb3VuZD17YmFja2dyb3VuZHMuc3VjY2Vzc31cbiAgICAgICAgICAgICAgICBjb2xvcj17Y29sb3JzLmJsYWNrfVxuICAgICAgICAgICAgICAgIG9uTW91c2VEb3duPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb250cm9scy5zZXRTb3VyY2UoTElWRUtJVF9TVFJFQU1fU1JDKTtcbiAgICAgICAgICAgICAgICAgIHN0YXRlLnZpZGVvQ29udHJvbC5zZWxlY3RlZFN0cmVhbSA9ICdkY2wtY2FzdCc7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9VaUVudGl0eT5cbiAgICAgICAgICA8VWlFbnRpdHkgdWlUcmFuc2Zvcm09e3N0eWxlcy5jb2x1bW5Db250YWluZXJ9PlxuICAgICAgICAgICAgPFVpRW50aXR5IHVpVHJhbnNmb3JtPXtzdHlsZXMucm93Q2VudGVyU3BhY2VCZXR3ZWVufT5cbiAgICAgICAgICAgICAgPFVpRW50aXR5XG4gICAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8TGFiZWxcbiAgICAgICAgICAgICAgICAgIHZhbHVlPXsnPGI+Q2FzdCBzcGVha2VyczwvYj4nfVxuICAgICAgICAgICAgICAgICAgZm9udFNpemU9ezE4fVxuICAgICAgICAgICAgICAgICAgY29sb3I9e2NvbG9ycy53aGl0ZX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgICAgICAgICAgdWlUZXh0PXt7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiAnVGhpcyBsaW5rIGdyYW50cyBzdHJlYW1pbmcgYWNjZXNzLicsXG4gICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiAxNCxcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6IGNvbG9ycy5ncmF5LFxuICAgICAgICAgICAgICAgICAgICB0ZXh0QWxpZ246ICd0b3AtbGVmdCcsXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICAgICAgICAgIDxGZWVkYmFja0J1dHRvblxuICAgICAgICAgICAgICAgIGlkPVwiZGNsX2Nhc3RfY29weV9zdHJlYW1fbGlua1wiXG4gICAgICAgICAgICAgICAgdmFsdWU9XCI8Yj5Db3B5IExpbms8L2I+XCJcbiAgICAgICAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgICAgICAgZm9udFNpemU9ezE4fVxuICAgICAgICAgICAgICAgIGNvbG9yPXtjb2xvcnMud2hpdGV9XG4gICAgICAgICAgICAgICAgaWNvblJpZ2h0PXtJQ09OUy5DT1BZX1RPX0NMSVBCT0FSRF9JQ09OfVxuICAgICAgICAgICAgICAgIGljb25SaWdodFRyYW5zZm9ybT17c3R5bGVzLmljb25TbWFsbH1cbiAgICAgICAgICAgICAgICBsYWJlbFRyYW5zZm9ybT17c3R5bGVzLm1hcmdpblJpZ2h0U21hbGx9XG4gICAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3N0eWxlcy5jb3B5TGlua0J1dHRvbn1cbiAgICAgICAgICAgICAgICBvbk1vdXNlRG93bj17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgc3RhdGUudmlkZW9Db250cm9sLmRjbENhc3Q/LnN0cmVhbUxpbmsgJiZcbiAgICAgICAgICAgICAgICAgICAgY29weVRvQ2xpcGJvYXJkKHtcbiAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBzdGF0ZS52aWRlb0NvbnRyb2wuZGNsQ2FzdC5zdHJlYW1MaW5rLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9VaUVudGl0eT5cbiAgICAgICAgICAgIDxVaUVudGl0eSB1aVRyYW5zZm9ybT17c3R5bGVzLnNlcGFyYXRvckxpbmV9IC8+XG4gICAgICAgICAgICA8VWlFbnRpdHkgdWlUcmFuc2Zvcm09e3N0eWxlcy5yb3dDZW50ZXJTcGFjZUJldHdlZW59PlxuICAgICAgICAgICAgICA8VWlFbnRpdHkgdWlUcmFuc2Zvcm09e3N0eWxlcy50ZXh0SW5mb0NvbnRhaW5lcn0+XG4gICAgICAgICAgICAgICAgPExhYmVsXG4gICAgICAgICAgICAgICAgICB2YWx1ZT17JzxiPlZpZXdlcnM8L2I+J31cbiAgICAgICAgICAgICAgICAgIGZvbnRTaXplPXsxOH1cbiAgICAgICAgICAgICAgICAgIGNvbG9yPXtjb2xvcnMud2hpdGV9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8VWlFbnRpdHlcbiAgICAgICAgICAgICAgICAgIHVpVGV4dD17e1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJ1RoaXMgbGluayBncmFudHMgdmlld2luZyBhY2Nlc3MuJyxcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IDE0LFxuICAgICAgICAgICAgICAgICAgICBjb2xvcjogY29sb3JzLmdyYXksXG4gICAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjogJ3RvcC1sZWZ0JyxcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9VaUVudGl0eT5cbiAgICAgICAgICAgICAgPEZlZWRiYWNrQnV0dG9uXG4gICAgICAgICAgICAgICAgaWQ9XCJkY2xfY2FzdF9jb3B5X3dhdGNoZXJfbGlua1wiXG4gICAgICAgICAgICAgICAgdmFsdWU9XCI8Yj5Db3B5IExpbms8L2I+XCJcbiAgICAgICAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgICAgICAgZm9udFNpemU9ezE4fVxuICAgICAgICAgICAgICAgIGNvbG9yPXtjb2xvcnMud2hpdGV9XG4gICAgICAgICAgICAgICAgaWNvblJpZ2h0PXtJQ09OUy5DT1BZX1RPX0NMSVBCT0FSRF9JQ09OfVxuICAgICAgICAgICAgICAgIGljb25SaWdodFRyYW5zZm9ybT17c3R5bGVzLmljb25TbWFsbH1cbiAgICAgICAgICAgICAgICBsYWJlbFRyYW5zZm9ybT17c3R5bGVzLm1hcmdpblJpZ2h0U21hbGx9XG4gICAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3N0eWxlcy5jb3B5TGlua0J1dHRvbn1cbiAgICAgICAgICAgICAgICBvbk1vdXNlRG93bj17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgc3RhdGUudmlkZW9Db250cm9sLmRjbENhc3Q/LndhdGNoZXJMaW5rICYmXG4gICAgICAgICAgICAgICAgICAgIGNvcHlUb0NsaXBib2FyZCh7XG4gICAgICAgICAgICAgICAgICAgICAgdGV4dDogc3RhdGUudmlkZW9Db250cm9sLmRjbENhc3Qud2F0Y2hlckxpbmssXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L1VpRW50aXR5PlxuICAgICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICAgIDxVaUVudGl0eSB1aVRyYW5zZm9ybT17c3R5bGVzLmNvbHVtbldpdGhNYXJnaW5Ub3B9PlxuICAgICAgICAgIDxVaUVudGl0eSB1aVRyYW5zZm9ybT17c3R5bGVzLnZvbHVtZVNob3djYXNlUm93fT5cbiAgICAgICAgICAgIDxWaWRlb0NvbnRyb2xWb2x1bWVcbiAgICAgICAgICAgICAgZW5naW5lPXtlbmdpbmV9XG4gICAgICAgICAgICAgIGVudGl0eT17ZW50aXR5fVxuICAgICAgICAgICAgICB2aWRlbz17dmlkZW99XG4gICAgICAgICAgICAgIGxhYmVsPVwiPGI+Q2FzdCBjb250cm9sczwvYj5cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIHt2aWRlbz8uc3JjICYmIGlzRGNsQ2FzdCh2aWRlby5zcmMpICYmIChcbiAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgIGlkPVwiZGNsX2Nhc3Rfc2hvd2Nhc2VfbGlzdFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9XCI8Yj5TcGVha2VyczwvYj5cIlxuICAgICAgICAgICAgICAgIGljb249e0lDT05TLlNUQVJ9XG4gICAgICAgICAgICAgICAgaWNvblRyYW5zZm9ybT17c3R5bGVzLnN0YXJJY29ufVxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgIGZvbnRTaXplPXsxNn1cbiAgICAgICAgICAgICAgICBjb2xvcj17Y29sb3JzLndoaXRlfVxuICAgICAgICAgICAgICAgIHVpVHJhbnNmb3JtPXtzdHlsZXMuc2hvd2Nhc2VCdXR0b259XG4gICAgICAgICAgICAgICAgb25Nb3VzZURvd249e29uU2hvd1Nob3djYXNlTW9kYWx9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICAgICAgPFVpRW50aXR5IHVpVHJhbnNmb3JtPXtzdHlsZXMuY2FzdENvbnRyb2xzUm93fT5cbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgaWQ9XCJkY2xfY2FzdF9zaGFyZV9wcmVzZW50YXRpb25faWRcIlxuICAgICAgICAgICAgICB2YWx1ZT17XG4gICAgICAgICAgICAgICAgc3RhdGUudmlkZW9Db250cm9sLnByZXNlbnRhdGlvblN0YXRlXG4gICAgICAgICAgICAgICAgICA/ICc8Yj5SZXBsYWNlIFByZXNlbnRhdGlvbjwvYj4nXG4gICAgICAgICAgICAgICAgICA6ICc8Yj5TaGFyZSBQcmVzZW50YXRpb248L2I+J1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgZm9udFNpemU9ezE2fVxuICAgICAgICAgICAgICBjb2xvcj17Y29sb3JzLndoaXRlfVxuICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICAgIC4uLnN0eWxlcy5yZXNldEJ1dHRvbixcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiB2aWRlbz8uc3JjICYmIGlzRGNsQ2FzdCh2aWRlby5zcmMpID8gJ2ZsZXgnIDogJ25vbmUnLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBvbk1vdXNlRG93bj17b25TaGFyZVByZXNlbnRhdGlvbn1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIGlkPVwiZGNsX2Nhc3RfcmVzZXRfcm9vbV9pZFwiXG4gICAgICAgICAgICAgIHZhbHVlPVwiPGI+UmVzZXQgUm9vbTwvYj5cIlxuICAgICAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgICAgIGZvbnRTaXplPXsxNn1cbiAgICAgICAgICAgICAgY29sb3I9e2NvbG9ycy5kYW5nZXJ9XG4gICAgICAgICAgICAgIHVpVHJhbnNmb3JtPXtzdHlsZXMucmVzZXRCdXR0b259XG4gICAgICAgICAgICAgIG9uTW91c2VEb3duPXtvblJlc2V0Um9vbUlkfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1VpRW50aXR5PlxuICAgICAgICA8L1VpRW50aXR5PlxuICAgICAgPC9VaUVudGl0eT5cbiAgICA8L1VpRW50aXR5PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRGNsQ2FzdEluZm87XG4iXX0=
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGNsQ2FzdEluZm8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYWRtaW4tdG9vbGtpdC11aS9WaWRlb0NvbnRyb2wvRGNsQ2FzdC9EY2xDYXN0SW5mby50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxRQUFRLEVBQUUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXRELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsU0FBUyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXJGLE1BQU0sS0FBSyxHQUFHO0lBQ1osSUFBSSxzQkFBc0I7UUFDeEIsT0FBTyxHQUFHLGFBQWEsRUFBRSxtREFBbUQsQ0FBQztJQUMvRSxDQUFDO0lBQ0QsSUFBSSxJQUFJO1FBQ04sT0FBTyxHQUFHLGFBQWEsRUFBRSxzQ0FBc0MsQ0FBQztJQUNsRSxDQUFDO0NBQ0YsQ0FBQztBQUVGLE1BQU0sV0FBVyxHQUFHLENBQUMsRUFDbkIsS0FBSyxFQUNMLE1BQU0sRUFDTixhQUFhLEVB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RUFBRSxFQUNaLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxFQUNuQixXQUFXLEVBQUUsTUFBTSxDQUFDLGNBQWMsRUFDbEMsV0FBVyxFQUFFLG1CQUFtQixHQUNoQyxDQUNILENBQ1E7Z0JBQ1gsdUJBQUMsUUFBUSxJQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsZUFBZTtvQkFDM0MsdUJBQUMsTUFBTSxJQUNMLEVBQUUsRUFBQyxnQ0FBZ0MsRUFDbkMsS0FBSyxFQUNILEtBQUssQ0FBQyxZQUFZLENBQUMsaUJBQWlCOzRCQUNsQyxDQUFDLENBQUMsNkJBQTZCOzRCQUMvQixDQUFDLENBQUMsMkJBQTJCLEVBRWpDLE9BQU8sRUFBQyxNQUFNLEVBQ2QsUUFBUSxFQUFFLEVBQUUsRUFDWixLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFDbkIsV0FBVyxFQUFFOzRCQUNYLEdBQUcsTUFBTSxDQUFDLFdBQVc7NEJBQ3JCLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTTt5QkFDOUQsRUFDRCxXQUFXLEVBQUUsbUJBQW1CLEdBQ2hDO29CQUNGLHVCQUFDLE1BQU0sSUFDTCxFQUFFLEVBQUMsd0JBQXdCLEVBQzNCLEtBQUssRUFBQyxtQkFBbUIsRUFDekIsT0FBTyxFQUFDLE1BQU0sRUFDZCxRQUFRLEVBQUUsRUFBRSxFQUNaLEtBQUssRUFBRSxNQUFNLENBQUMsTUFBTSxFQUNwQixXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVcsRUFDL0IsV0FBVyxFQUFFLGFBQWEsR0FDMUIsQ0FDTyxDQUNGLENBQ0YsQ0FDRixDQUNaLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixlQUFlLFdBQVcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW50aXR5LCBJRW5naW5lIH0gZnJvbSAnQGRjbC9lY3MnO1xuaW1wb3J0IHR5cGUgeyBEZWVwUmVhZG9ubHlPYmplY3QsIFBCVmlkZW9QbGF5ZXIgfSBmcm9tICdAZGNsL2Vjcyc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzIC0tIFJlYWN0RWNzIGlzIHJlcXVpcmVkIGZvciBKU1ggZmFjdG9yeVxuaW1wb3J0IFJlYWN0RWNzLCB7IExhYmVsLCBVaUVudGl0eSB9IGZyb20gJ0BkY2wvcmVhY3QtZWNzJztcbmltcG9ydCB7IENvbG9yNCB9IGZyb20gJ0BkY2wvc2RrL21hdGgnO1xuaW1wb3J0IHsgY29weVRvQ2xpcGJvYXJkIH0gZnJvbSAnfnN5c3RlbS9SZXN0cmljdGVkQWN0aW9ucyc7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tICcuLi8uLi9CdXR0b24nO1xuaW1wb3J0IHsgZ2V0Q29udGVudFVybCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBGZWVkYmFja0J1dHRvbiB9IGZyb20gJy4uLy4uL0ZlZWRiYWNrQnV0dG9uJztcbmltcG9ydCB0eXBlIHsgU3RhdGUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBMSVZFS0lUX1NUUkVBTV9TUkMgfSBmcm9tICcuLi9MaXZlU3RyZWFtJztcbmltcG9ydCB7IFZpZGVvQ29udHJvbFZvbHVtZSB9IGZyb20gJy4uL1ZvbHVtZUNvbnRyb2wnO1xuaW1wb3J0IHsgY3JlYXRlVmlkZW9QbGF5ZXJDb250cm9scywgaXNEY2xDYXN0IH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgc2V0U3RyZWFtIH0gZnJvbSAnLi4vLi4vYWN0aW9ucyc7XG5pbXBvcnQgeyBnZXREY2xDYXN0U3R5bGVzLCBnZXREY2xDYXN0Q29sb3JzLCBnZXREY2xDYXN0QmFja2dyb3VuZHMgfSBmcm9tICcuL3N0eWxlcyc7XG5cbmNvbnN0IElDT05TID0ge1xuICBnZXQgQ09QWV9UT19DTElQQk9BUkRfSUNPTigpIHtcbiAgICByZXR1cm4gYCR7Z2V0Q29udGVudFVybCgpfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9pY29ucy9jb3B5LXRvLWNsaXBib2FyZC5wbmdgO1xuICB9LFxuICBnZXQgU1RBUigpIHtcbiAgICByZXR1cm4gYCR7Z2V0Q29udGVudFVybCgpfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9pY29ucy9zdGFyLnBuZ2A7XG4gIH0sXG59O1xuXG5jb25zdCBEY2xDYXN0SW5mbyA9ICh7XG4gIHN0YXRlLFxuICBlbmdpbmUsXG4gIG9uUmVzZXRSb29tSWQsXG4gIG9uU2hvd1Nob3djYXNlTW9kYWwsXG4gIG9uU2hhcmVQcmVzZW50YXRpb24sXG4gIGVudGl0eSxcbiAgdmlkZW8sXG59OiB7XG4gIHN0YXRlOiBTdGF0ZTtcbiAgZW5naW5lOiBJRW5naW5lO1xuICBvblJlc2V0Um9vbUlkOiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBvblNob3dTaG93Y2FzZU1vZGFsOiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBvblNoYXJlUHJlc2VudGF0aW9uOiAoKSA9PiB2b2lkO1xuICBlbnRpdHk6IEVudGl0eTtcbiAgdmlkZW86IERlZXBSZWFkb25seU9iamVjdDxQQlZpZGVvUGxheWVyPiB8IHVuZGVmaW5lZDtcbn0pID0+IHtcbiAgY29uc3QgY29udHJvbHMgPSBjcmVhdGVWaWRlb1BsYXllckNvbnRyb2xzKGVudGl0eSwgZW5naW5lKTtcbiAgY29uc3Qgc3R5bGVzID0gZ2V0RGNsQ2FzdFN0eWxlcygpO1xuICBjb25zdCBjb2xvcnMgPSBnZXREY2xDYXN0Q29sb3JzKCk7XG4gIGNvbnN0IGJhY2tncm91bmRzID0gZ2V0RGNsQ2FzdEJhY2tncm91bmRzKCk7XG4gIHJldHVybiAoXG4gICAgPFVpRW50aXR5IHVpVHJhbnNmb3JtPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nIH19PlxuICAgICAgPFVpRW50aXR5IHVpVHJhbnNmb3JtPXtzdHlsZXMuZnVsbENvbnRhaW5lcn0+XG4gICAgICAgIDxVaUVudGl0eSB1aVRyYW5zZm9ybT17c3R5bGVzLm1haW5Cb3JkZXJlZENvbnRhaW5lcn0+XG4gICAgICAgICAgPFVpRW50aXR5IHVpVHJhbnNmb3JtPXtzdHlsZXMuaGVhZGVyUm93fT5cbiAgICAgICAgICAgIDxVaUVudGl0eSB1aVRyYW5zZm9ybT17c3R5bGVzLmNvbHVtbkZsZXhTdGFydH0+XG4gICAgICAgICAgICAgIDxMYWJlbFxuICAgICAgICAgICAgICAgIHZhbHVlPXsnPGI+Um9vbSBJRDwvYj4nfVxuICAgICAgICAgICAgICAgIGZvbnRTaXplPXsyNH1cbiAgICAgICAgICAgICAgICBjb2xvcj17Q29sb3I0LldoaXRlKCl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxMYWJlbFxuICAgICAgICAgICAgICAgIHZhbHVlPXtgRXhwaXJlcyBpbiAke3N0YXRlLnZpZGVvQ29udHJvbC5kY2xDYXN0Py5leHBpcmVzSW5EYXlzfSBkYXlzYH1cbiAgICAgICAgICAgICAgICBmb250U2l6ZT17MTR9XG4gICAgICAgICAgICAgICAgY29sb3I9e2NvbG9ycy5ncmF5fVxuICAgICAgICAgICAgICAgIHVpVHJhbnNmb3JtPXtzdHlsZXMubWFyZ2luVG9wU21hbGx9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L1VpRW50aXR5PlxuICAgICAgICAgICAge3ZpZGVvPy5zcmMgJiYgaXNEY2xDYXN0KHZpZGVvLnNyYykgPyAoXG4gICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICBpZD1cImRjbF9jYXN0X2RlYWN0aXZhdGVcIlxuICAgICAgICAgICAgICAgIHZhbHVlPVwiPGI+RGVhY3RpdmF0ZTwvYj5cIlxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBmb250U2l6ZT17MTZ9XG4gICAgICAgICAgICAgICAgY29sb3I9e2NvbG9ycy53aGl0ZX1cbiAgICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17c3R5bGVzLmFjdGl2YXRlQnV0dG9ufVxuICAgICAgICAgICAgICAgIG9uTW91c2VEb3duPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb250cm9scy5zZXRTb3VyY2UoJycpO1xuICAgICAgICAgICAgICAgICAgc2V0U3RyZWFtKHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICBpZD1cImRjbF9jYXN0X2FjdGl2YXRlXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT1cIjxiPkFjdGl2YXRlPC9iPlwiXG4gICAgICAgICAgICAgICAgbGFiZWxUcmFuc2Zvcm09e3N0eWxlcy5hY3RpdmF0ZUJ1dHRvbkxhYmVsfVxuICAgICAgICAgICAgICAgIHVpVHJhbnNmb3JtPXtzdHlsZXMuYWN0aXZhdGVCdXR0b259XG4gICAgICAgICAgICAgICAgZm9udFNpemU9ezE2fVxuICAgICAgICAgICAgICAgIHVpQmFja2dyb3VuZD17YmFja2dyb3VuZHMuc3VjY2Vzc31cbiAgICAgICAgICAgICAgICBjb2xvcj17Y29sb3JzLmJsYWNrfVxuICAgICAgICAgICAgICAgIG9uTW91c2VEb3duPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb250cm9scy5zZXRTb3VyY2UoTElWRUtJVF9TVFJFQU1fU1JDKTtcbiAgICAgICAgICAgICAgICAgIHNldFN0cmVhbSgnZGNsLWNhc3QnKTtcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L1VpRW50aXR5PlxuICAgICAgICAgIDxVaUVudGl0eSB1aVRyYW5zZm9ybT17c3R5bGVzLmNvbHVtbkNvbnRhaW5lcn0+XG4gICAgICAgICAgICA8VWlFbnRpdHkgdWlUcmFuc2Zvcm09e3N0eWxlcy5yb3dDZW50ZXJTcGFjZUJldHdlZW59PlxuICAgICAgICAgICAgICA8VWlFbnRpdHlcbiAgICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxMYWJlbFxuICAgICAgICAgICAgICAgICAgdmFsdWU9eyc8Yj5DYXN0IHNwZWFrZXJzPC9iPid9XG4gICAgICAgICAgICAgICAgICBmb250U2l6ZT17MTh9XG4gICAgICAgICAgICAgICAgICBjb2xvcj17Y29sb3JzLndoaXRlfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPFVpRW50aXR5XG4gICAgICAgICAgICAgICAgICB1aVRleHQ9e3tcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICdUaGlzIGxpbmsgZ3JhbnRzIHN0cmVhbWluZyBhY2Nlc3MuJyxcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IDE0LFxuICAgICAgICAgICAgICAgICAgICBjb2xvcjogY29sb3JzLmdyYXksXG4gICAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjogJ3RvcC1sZWZ0JyxcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9VaUVudGl0eT5cbiAgICAgICAgICAgICAgPEZlZWRiYWNrQnV0dG9uXG4gICAgICAgICAgICAgICAgaWQ9XCJkY2xfY2FzdF9jb3B5X3N0cmVhbV9saW5rXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT1cIjxiPkNvcHkgTGluazwvYj5cIlxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBmb250U2l6ZT17MTh9XG4gICAgICAgICAgICAgICAgY29sb3I9e2NvbG9ycy53aGl0ZX1cbiAgICAgICAgICAgICAgICBpY29uUmlnaHQ9e0lDT05TLkNPUFlfVE9fQ0xJUEJPQVJEX0lDT059XG4gICAgICAgICAgICAgICAgaWNvblJpZ2h0VHJhbnNmb3JtPXtzdHlsZXMuaWNvblNtYWxsfVxuICAgICAgICAgICAgICAgIGxhYmVsVHJhbnNmb3JtPXtzdHlsZXMubWFyZ2luUmlnaHRTbWFsbH1cbiAgICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17c3R5bGVzLmNvcHlMaW5rQnV0dG9ufVxuICAgICAgICAgICAgICAgIG9uTW91c2VEb3duPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBzdGF0ZS52aWRlb0NvbnRyb2wuZGNsQ2FzdD8uc3RyZWFtTGluayAmJlxuICAgICAgICAgICAgICAgICAgICBjb3B5VG9DbGlwYm9hcmQoe1xuICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IHN0YXRlLnZpZGVvQ29udHJvbC5kY2xDYXN0LnN0cmVhbUxpbmssXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L1VpRW50aXR5PlxuICAgICAgICAgICAgPFVpRW50aXR5IHVpVHJhbnNmb3JtPXtzdHlsZXMuc2VwYXJhdG9yTGluZX0gLz5cbiAgICAgICAgICAgIDxVaUVudGl0eSB1aVRyYW5zZm9ybT17c3R5bGVzLnJvd0NlbnRlclNwYWNlQmV0d2Vlbn0+XG4gICAgICAgICAgICAgIDxVaUVudGl0eSB1aVRyYW5zZm9ybT17c3R5bGVzLnRleHRJbmZvQ29udGFpbmVyfT5cbiAgICAgICAgICAgICAgICA8TGFiZWxcbiAgICAgICAgICAgICAgICAgIHZhbHVlPXsnPGI+Vmlld2VyczwvYj4nfVxuICAgICAgICAgICAgICAgICAgZm9udFNpemU9ezE4fVxuICAgICAgICAgICAgICAgICAgY29sb3I9e2NvbG9ycy53aGl0ZX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgICAgICAgICAgdWlUZXh0PXt7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiAnVGhpcyBsaW5rIGdyYW50cyB2aWV3aW5nIGFjY2Vzcy4nLFxuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogMTQsXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiBjb2xvcnMuZ3JheSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dEFsaWduOiAndG9wLWxlZnQnLFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L1VpRW50aXR5PlxuICAgICAgICAgICAgICA8RmVlZGJhY2tCdXR0b25cbiAgICAgICAgICAgICAgICBpZD1cImRjbF9jYXN0X2NvcHlfd2F0Y2hlcl9saW5rXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT1cIjxiPkNvcHkgTGluazwvYj5cIlxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBmb250U2l6ZT17MTh9XG4gICAgICAgICAgICAgICAgY29sb3I9e2NvbG9ycy53aGl0ZX1cbiAgICAgICAgICAgICAgICBpY29uUmlnaHQ9e0lDT05TLkNPUFlfVE9fQ0xJUEJPQVJEX0lDT059XG4gICAgICAgICAgICAgICAgaWNvblJpZ2h0VHJhbnNmb3JtPXtzdHlsZXMuaWNvblNtYWxsfVxuICAgICAgICAgICAgICAgIGxhYmVsVHJhbnNmb3JtPXtzdHlsZXMubWFyZ2luUmlnaHRTbWFsbH1cbiAgICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17c3R5bGVzLmNvcHlMaW5rQnV0dG9ufVxuICAgICAgICAgICAgICAgIG9uTW91c2VEb3duPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBzdGF0ZS52aWRlb0NvbnRyb2wuZGNsQ2FzdD8ud2F0Y2hlckxpbmsgJiZcbiAgICAgICAgICAgICAgICAgICAgY29weVRvQ2xpcGJvYXJkKHtcbiAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBzdGF0ZS52aWRlb0NvbnRyb2wuZGNsQ2FzdC53YXRjaGVyTGluayxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICAgICAgPC9VaUVudGl0eT5cbiAgICAgICAgPC9VaUVudGl0eT5cbiAgICAgICAgPFVpRW50aXR5IHVpVHJhbnNmb3JtPXtzdHlsZXMuY29sdW1uV2l0aE1hcmdpblRvcH0+XG4gICAgICAgICAgPFVpRW50aXR5IHVpVHJhbnNmb3JtPXtzdHlsZXMudm9sdW1lU2hvd2Nhc2VSb3d9PlxuICAgICAgICAgICAgPFZpZGVvQ29udHJvbFZvbHVtZVxuICAgICAgICAgICAgICBlbmdpbmU9e2VuZ2luZX1cbiAgICAgICAgICAgICAgZW50aXR5PXtlbnRpdHl9XG4gICAgICAgICAgICAgIHZpZGVvPXt2aWRlb31cbiAgICAgICAgICAgICAgbGFiZWw9XCI8Yj5DYXN0IGNvbnRyb2xzPC9iPlwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAge3ZpZGVvPy5zcmMgJiYgaXNEY2xDYXN0KHZpZGVvLnNyYykgJiYgKFxuICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgaWQ9XCJkY2xfY2FzdF9zaG93Y2FzZV9saXN0XCJcbiAgICAgICAgICAgICAgICB2YWx1ZT1cIjxiPlNwZWFrZXJzPC9iPlwiXG4gICAgICAgICAgICAgICAgaWNvbj17SUNPTlMuU1RBUn1cbiAgICAgICAgICAgICAgICBpY29uVHJhbnNmb3JtPXtzdHlsZXMuc3Rhckljb259XG4gICAgICAgICAgICAgICAgdmFyaWFudD1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgZm9udFNpemU9ezE2fVxuICAgICAgICAgICAgICAgIGNvbG9yPXtjb2xvcnMud2hpdGV9XG4gICAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3N0eWxlcy5zaG93Y2FzZUJ1dHRvbn1cbiAgICAgICAgICAgICAgICBvbk1vdXNlRG93bj17b25TaG93U2hvd2Nhc2VNb2RhbH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9VaUVudGl0eT5cbiAgICAgICAgICA8VWlFbnRpdHkgdWlUcmFuc2Zvcm09e3N0eWxlcy5jYXN0Q29udHJvbHNSb3d9PlxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICBpZD1cImRjbF9jYXN0X3NoYXJlX3ByZXNlbnRhdGlvbl9pZFwiXG4gICAgICAgICAgICAgIHZhbHVlPXtcbiAgICAgICAgICAgICAgICBzdGF0ZS52aWRlb0NvbnRyb2wucHJlc2VudGF0aW9uU3RhdGVcbiAgICAgICAgICAgICAgICAgID8gJzxiPlJlcGxhY2UgUHJlc2VudGF0aW9uPC9iPidcbiAgICAgICAgICAgICAgICAgIDogJzxiPlNoYXJlIFByZXNlbnRhdGlvbjwvYj4nXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgICAgICBmb250U2l6ZT17MTZ9XG4gICAgICAgICAgICAgIGNvbG9yPXtjb2xvcnMud2hpdGV9XG4gICAgICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICAgICAgLi4uc3R5bGVzLnJlc2V0QnV0dG9uLFxuICAgICAgICAgICAgICAgIGRpc3BsYXk6IHZpZGVvPy5zcmMgJiYgaXNEY2xDYXN0KHZpZGVvLnNyYykgPyAnZmxleCcgOiAnbm9uZScsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIG9uTW91c2VEb3duPXtvblNoYXJlUHJlc2VudGF0aW9ufVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgaWQ9XCJkY2xfY2FzdF9yZXNldF9yb29tX2lkXCJcbiAgICAgICAgICAgICAgdmFsdWU9XCI8Yj5SZXNldCBSb29tPC9iPlwiXG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgZm9udFNpemU9ezE2fVxuICAgICAgICAgICAgICBjb2xvcj17Y29sb3JzLmRhbmdlcn1cbiAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3N0eWxlcy5yZXNldEJ1dHRvbn1cbiAgICAgICAgICAgICAgb25Nb3VzZURvd249e29uUmVzZXRSb29tSWR9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICA8L1VpRW50aXR5PlxuICAgIDwvVWlFbnRpdHk+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBEY2xDYXN0SW5mbztcbiJdfQ==
|
|
@@ -1,20 +1,6 @@
|
|
|
1
1
|
import ReactEcs from '@dcl/react-ecs';
|
|
2
2
|
import type { DeepReadonlyObject, Entity, IEngine, PBVideoPlayer } from '@dcl/ecs';
|
|
3
3
|
import type { State } from '../../types';
|
|
4
|
-
import { type FlattenedTrack, type Participant } from '../api';
|
|
5
|
-
export declare const showcaseState: {
|
|
6
|
-
show: boolean;
|
|
7
|
-
participants: Participant[];
|
|
8
|
-
activeTrackSid: string | undefined;
|
|
9
|
-
onSelectTrack: ((track: FlattenedTrack) => void) | undefined;
|
|
10
|
-
onSetDefault: (() => void) | undefined;
|
|
11
|
-
onClose: (() => void) | undefined;
|
|
12
|
-
};
|
|
13
|
-
export declare const sharePresentationState: {
|
|
14
|
-
show: boolean;
|
|
15
|
-
onClose: (() => void) | undefined;
|
|
16
|
-
};
|
|
17
|
-
export declare function handleGetDclCastInfo(state: State): Promise<import("../api").DclCastResponse | null | undefined>;
|
|
18
4
|
declare const DclCast: ({ engine, state, entity, video, playerAddress, }: {
|
|
19
5
|
engine: IEngine;
|
|
20
6
|
state: State;
|
|
@@ -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
|