botframework-webchat-component
Version:
React component of botframework-webchat
123 lines (121 loc) • 22.6 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
exports.useSendBoxSpeechInterimsVisible = useSendBoxSpeechInterimsVisible;
var _botframeworkWebchatApi = require("botframework-webchat-api");
var _botframeworkWebchatCore = require("botframework-webchat-core");
var _classnames = _interopRequireDefault(require("classnames"));
var _react = _interopRequireDefault(require("react"));
var _useStyleToEmotionObject = _interopRequireDefault(require("../hooks/internal/useStyleToEmotionObject"));
var _useStyleSet3 = _interopRequireDefault(require("../hooks/useStyleSet"));
var _useWebSpeechPonyfill5 = _interopRequireDefault(require("../hooks/useWebSpeechPonyfill"));
var _useErrorMessageId3 = _interopRequireDefault(require("../providers/internal/SendBox/useErrorMessageId"));
var _DictationInterims = _interopRequireDefault(require("./DictationInterims"));
var _MicrophoneButton = _interopRequireDefault(require("./MicrophoneButton"));
var _SendButton = _interopRequireDefault(require("./SendButton"));
var _SuggestedActions = _interopRequireDefault(require("./SuggestedActions"));
var _TextBox = _interopRequireDefault(require("./TextBox"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
var _Constants$DictateSta = _botframeworkWebchatCore.Constants.DictateState,
DICTATING = _Constants$DictateSta.DICTATING,
STARTING = _Constants$DictateSta.STARTING;
var useActivities = _botframeworkWebchatApi.hooks.useActivities,
useDirection = _botframeworkWebchatApi.hooks.useDirection,
useDictateState = _botframeworkWebchatApi.hooks.useDictateState,
useStyleOptions = _botframeworkWebchatApi.hooks.useStyleOptions;
var ROOT_STYLE = {
'&.webchat__send-box': {
'& .webchat__send-box__button': {
flexShrink: 0
},
'& .webchat__send-box__dictation-interims': {
flex: 10000
},
'& .webchat__send-box__main': {
display: 'flex'
},
'& .webchat__send-box__microphone-button': {
flex: 1
},
'& .webchat__send-box__text-box': {
flex: 10000
}
}
};
// TODO: [P3] We should consider exposing core/src/definitions and use it instead
function activityIsSpeakingOrQueuedToSpeak(activity) {
var _activity$channelData;
return activity.type === 'message' && ((_activity$channelData = activity.channelData) === null || _activity$channelData === void 0 ? void 0 : _activity$channelData.speak);
}
function useSendBoxSpeechInterimsVisible() {
var _useActivities = useActivities(),
_useActivities2 = _slicedToArray(_useActivities, 1),
activities = _useActivities2[0];
var _useDictateState = useDictateState(),
_useDictateState2 = _slicedToArray(_useDictateState, 1),
dictateState = _useDictateState2[0];
return [(dictateState === STARTING || dictateState === DICTATING) && !activities.filter(activityIsSpeakingOrQueuedToSpeak).length];
}
var BasicSendBox = function BasicSendBox(_ref) {
var className = _ref.className;
var _useStyleOptions = useStyleOptions(),
_useStyleOptions2 = _slicedToArray(_useStyleOptions, 1),
sendBoxButtonAlignment = _useStyleOptions2[0].sendBoxButtonAlignment;
var _useStyleSet = (0, _useStyleSet3.default)(),
_useStyleSet2 = _slicedToArray(_useStyleSet, 1),
sendBoxStyleSet = _useStyleSet2[0].sendBox;
var _useWebSpeechPonyfill = (0, _useWebSpeechPonyfill5.default)(),
_useWebSpeechPonyfill2 = _slicedToArray(_useWebSpeechPonyfill, 1),
_useWebSpeechPonyfill3 = _useWebSpeechPonyfill2[0];
_useWebSpeechPonyfill3 = _useWebSpeechPonyfill3 === void 0 ? {} : _useWebSpeechPonyfill3;
var _useWebSpeechPonyfill4 = _useWebSpeechPonyfill3.SpeechRecognition,
SpeechRecognition = _useWebSpeechPonyfill4 === void 0 ? undefined : _useWebSpeechPonyfill4;
var _useDirection = useDirection(),
_useDirection2 = _slicedToArray(_useDirection, 1),
direction = _useDirection2[0];
var _useErrorMessageId = (0, _useErrorMessageId3.default)(),
_useErrorMessageId2 = _slicedToArray(_useErrorMessageId, 1),
errorMessageId = _useErrorMessageId2[0];
var _useSendBoxSpeechInte = useSendBoxSpeechInterimsVisible(),
_useSendBoxSpeechInte2 = _slicedToArray(_useSendBoxSpeechInte, 1),
speechInterimsVisible = _useSendBoxSpeechInte2[0];
var styleToEmotionObject = (0, _useStyleToEmotionObject.default)();
var rootClassName = styleToEmotionObject(ROOT_STYLE) + '';
var supportSpeechRecognition = !!SpeechRecognition;
var buttonClassName = (0, _classnames.default)('webchat__send-box__button', {
'webchat__send-box__button--align-bottom': sendBoxButtonAlignment === 'bottom',
'webchat__send-box__button--align-stretch': sendBoxButtonAlignment !== 'bottom' && sendBoxButtonAlignment !== 'top',
'webchat__send-box__button--align-top': sendBoxButtonAlignment === 'top'
});
return /*#__PURE__*/_react.default.createElement("div", {
"aria-errormessage": errorMessageId,
"aria-invalid": !!errorMessageId,
className: (0, _classnames.default)('webchat__send-box', sendBoxStyleSet + '', rootClassName + '', (className || '') + ''),
dir: direction,
role: "form"
}, /*#__PURE__*/_react.default.createElement(_SuggestedActions.default, null), /*#__PURE__*/_react.default.createElement("div", {
className: "webchat__send-box__main"
}, /*#__PURE__*/_react.default.createElement(_botframeworkWebchatApi.SendBoxToolbarMiddlewareProxy, {
className: buttonClassName,
request: undefined
}), speechInterimsVisible ? /*#__PURE__*/_react.default.createElement(_DictationInterims.default, {
className: "webchat__send-box__dictation-interims"
}) : /*#__PURE__*/_react.default.createElement(_TextBox.default, {
className: "webchat__send-box__text-box"
}), supportSpeechRecognition ? /*#__PURE__*/_react.default.createElement(_MicrophoneButton.default, {
className: (0, _classnames.default)(buttonClassName, 'webchat__send-box__microphone-button')
}) : /*#__PURE__*/_react.default.createElement(_SendButton.default, {
className: buttonClassName
})));
};
var _default = BasicSendBox;
exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYm90ZnJhbWV3b3JrV2ViY2hhdEFwaSIsInJlcXVpcmUiLCJfYm90ZnJhbWV3b3JrV2ViY2hhdENvcmUiLCJfY2xhc3NuYW1lcyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfcmVhY3QiLCJfdXNlU3R5bGVUb0Vtb3Rpb25PYmplY3QiLCJfdXNlU3R5bGVTZXQzIiwiX3VzZVdlYlNwZWVjaFBvbnlmaWxsNSIsIl91c2VFcnJvck1lc3NhZ2VJZDMiLCJfRGljdGF0aW9uSW50ZXJpbXMiLCJfTWljcm9waG9uZUJ1dHRvbiIsIl9TZW5kQnV0dG9uIiwiX1N1Z2dlc3RlZEFjdGlvbnMiLCJfVGV4dEJveCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiX3NsaWNlZFRvQXJyYXkiLCJhcnIiLCJpIiwiX2FycmF5V2l0aEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlUmVzdCIsIlR5cGVFcnJvciIsIm8iLCJtaW5MZW4iLCJfYXJyYXlMaWtlVG9BcnJheSIsIm4iLCJPYmplY3QiLCJwcm90b3R5cGUiLCJ0b1N0cmluZyIsImNhbGwiLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsIkFycmF5IiwiZnJvbSIsInRlc3QiLCJsZW4iLCJsZW5ndGgiLCJhcnIyIiwiX2kiLCJTeW1ib2wiLCJpdGVyYXRvciIsIl9hcnIiLCJfbiIsIl9kIiwiX3MiLCJfZSIsIm5leHQiLCJkb25lIiwicHVzaCIsInZhbHVlIiwiZXJyIiwiaXNBcnJheSIsIl9Db25zdGFudHMkRGljdGF0ZVN0YSIsIkNvbnN0YW50cyIsIkRpY3RhdGVTdGF0ZSIsIkRJQ1RBVElORyIsIlNUQVJUSU5HIiwidXNlQWN0aXZpdGllcyIsImhvb2tzIiwidXNlRGlyZWN0aW9uIiwidXNlRGljdGF0ZVN0YXRlIiwidXNlU3R5bGVPcHRpb25zIiwiUk9PVF9TVFlMRSIsImZsZXhTaHJpbmsiLCJmbGV4IiwiZGlzcGxheSIsImFjdGl2aXR5SXNTcGVha2luZ09yUXVldWVkVG9TcGVhayIsImFjdGl2aXR5IiwiX2FjdGl2aXR5JGNoYW5uZWxEYXRhIiwidHlwZSIsImNoYW5uZWxEYXRhIiwic3BlYWsiLCJ1c2VTZW5kQm94U3BlZWNoSW50ZXJpbXNWaXNpYmxlIiwiX3VzZUFjdGl2aXRpZXMiLCJfdXNlQWN0aXZpdGllczIiLCJhY3Rpdml0aWVzIiwiX3VzZURpY3RhdGVTdGF0ZSIsIl91c2VEaWN0YXRlU3RhdGUyIiwiZGljdGF0ZVN0YXRlIiwiZmlsdGVyIiwiQmFzaWNTZW5kQm94IiwiX3JlZiIsImNsYXNzTmFtZSIsIl91c2VTdHlsZU9wdGlvbnMiLCJfdXNlU3R5bGVPcHRpb25zMiIsInNlbmRCb3hCdXR0b25BbGlnbm1lbnQiLCJfdXNlU3R5bGVTZXQiLCJ1c2VTdHlsZVNldCIsIl91c2VTdHlsZVNldDIiLCJzZW5kQm94U3R5bGVTZXQiLCJzZW5kQm94IiwiX3VzZVdlYlNwZWVjaFBvbnlmaWxsIiwidXNlV2ViU3BlZWNoUG9ueWZpbGwiLCJfdXNlV2ViU3BlZWNoUG9ueWZpbGwyIiwiX3VzZVdlYlNwZWVjaFBvbnlmaWxsMyIsIl91c2VXZWJTcGVlY2hQb255ZmlsbDQiLCJTcGVlY2hSZWNvZ25pdGlvbiIsInVuZGVmaW5lZCIsIl91c2VEaXJlY3Rpb24iLCJfdXNlRGlyZWN0aW9uMiIsImRpcmVjdGlvbiIsIl91c2VFcnJvck1lc3NhZ2VJZCIsInVzZUVycm9yTWVzc2FnZUlkIiwiX3VzZUVycm9yTWVzc2FnZUlkMiIsImVycm9yTWVzc2FnZUlkIiwiX3VzZVNlbmRCb3hTcGVlY2hJbnRlIiwiX3VzZVNlbmRCb3hTcGVlY2hJbnRlMiIsInNwZWVjaEludGVyaW1zVmlzaWJsZSIsInN0eWxlVG9FbW90aW9uT2JqZWN0IiwidXNlU3R5bGVUb0Vtb3Rpb25PYmplY3QiLCJyb290Q2xhc3NOYW1lIiwic3VwcG9ydFNwZWVjaFJlY29nbml0aW9uIiwiYnV0dG9uQ2xhc3NOYW1lIiwiY2xhc3NOYW1lcyIsImNyZWF0ZUVsZW1lbnQiLCJkaXIiLCJyb2xlIiwiU2VuZEJveFRvb2xiYXJNaWRkbGV3YXJlUHJveHkiLCJyZXF1ZXN0IiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZVJvb3QiOiJjb21wb25lbnQ6Ly8vIiwic291cmNlcyI6WyIuLi8uLi9zcmMvU2VuZEJveC9CYXNpY1NlbmRCb3gudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlbmRCb3hUb29sYmFyTWlkZGxld2FyZVByb3h5LCBob29rcyB9IGZyb20gJ2JvdGZyYW1ld29yay13ZWJjaGF0LWFwaSc7XG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tICdib3RmcmFtZXdvcmstd2ViY2hhdC1jb3JlJztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IFJlYWN0LCB7IEZDIH0gZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgdXNlU3R5bGVUb0Vtb3Rpb25PYmplY3QgZnJvbSAnLi4vaG9va3MvaW50ZXJuYWwvdXNlU3R5bGVUb0Vtb3Rpb25PYmplY3QnO1xuaW1wb3J0IHVzZVN0eWxlU2V0IGZyb20gJy4uL2hvb2tzL3VzZVN0eWxlU2V0JztcbmltcG9ydCB1c2VXZWJTcGVlY2hQb255ZmlsbCBmcm9tICcuLi9ob29rcy91c2VXZWJTcGVlY2hQb255ZmlsbCc7XG5pbXBvcnQgdXNlRXJyb3JNZXNzYWdlSWQgZnJvbSAnLi4vcHJvdmlkZXJzL2ludGVybmFsL1NlbmRCb3gvdXNlRXJyb3JNZXNzYWdlSWQnO1xuaW1wb3J0IERpY3RhdGlvbkludGVyaW1zIGZyb20gJy4vRGljdGF0aW9uSW50ZXJpbXMnO1xuaW1wb3J0IE1pY3JvcGhvbmVCdXR0b24gZnJvbSAnLi9NaWNyb3Bob25lQnV0dG9uJztcbmltcG9ydCBTZW5kQnV0dG9uIGZyb20gJy4vU2VuZEJ1dHRvbic7XG5pbXBvcnQgU3VnZ2VzdGVkQWN0aW9ucyBmcm9tICcuL1N1Z2dlc3RlZEFjdGlvbnMnO1xuaW1wb3J0IFRleHRCb3ggZnJvbSAnLi9UZXh0Qm94JztcblxuaW1wb3J0IHR5cGUgeyBXZWJDaGF0QWN0aXZpdHkgfSBmcm9tICdib3RmcmFtZXdvcmstd2ViY2hhdC1jb3JlJztcblxuY29uc3Qge1xuICBEaWN0YXRlU3RhdGU6IHsgRElDVEFUSU5HLCBTVEFSVElORyB9XG59ID0gQ29uc3RhbnRzO1xuXG5jb25zdCB7IHVzZUFjdGl2aXRpZXMsIHVzZURpcmVjdGlvbiwgdXNlRGljdGF0ZVN0YXRlLCB1c2VTdHlsZU9wdGlvbnMgfSA9IGhvb2tzO1xuXG5jb25zdCBST09UX1NUWUxFID0ge1xuICAnJi53ZWJjaGF0X19zZW5kLWJveCc6IHtcbiAgICAnJiAud2ViY2hhdF9fc2VuZC1ib3hfX2J1dHRvbic6IHsgZmxleFNocmluazogMCB9LFxuICAgICcmIC53ZWJjaGF0X19zZW5kLWJveF9fZGljdGF0aW9uLWludGVyaW1zJzogeyBmbGV4OiAxMDAwMCB9LFxuICAgICcmIC53ZWJjaGF0X19zZW5kLWJveF9fbWFpbic6IHsgZGlzcGxheTogJ2ZsZXgnIH0sXG4gICAgJyYgLndlYmNoYXRfX3NlbmQtYm94X19taWNyb3Bob25lLWJ1dHRvbic6IHsgZmxleDogMSB9LFxuICAgICcmIC53ZWJjaGF0X19zZW5kLWJveF9fdGV4dC1ib3gnOiB7IGZsZXg6IDEwMDAwIH1cbiAgfVxufTtcblxuLy8gVE9ETzogW1AzXSBXZSBzaG91bGQgY29uc2lkZXIgZXhwb3NpbmcgY29yZS9zcmMvZGVmaW5pdGlvbnMgYW5kIHVzZSBpdCBpbnN0ZWFkXG5mdW5jdGlvbiBhY3Rpdml0eUlzU3BlYWtpbmdPclF1ZXVlZFRvU3BlYWsoYWN0aXZpdHk6IFdlYkNoYXRBY3Rpdml0eSkge1xuICByZXR1cm4gYWN0aXZpdHkudHlwZSA9PT0gJ21lc3NhZ2UnICYmIGFjdGl2aXR5LmNoYW5uZWxEYXRhPy5zcGVhaztcbn1cblxuZnVuY3Rpb24gdXNlU2VuZEJveFNwZWVjaEludGVyaW1zVmlzaWJsZSgpOiBbYm9vbGVhbl0ge1xuICBjb25zdCBbYWN0aXZpdGllc10gPSB1c2VBY3Rpdml0aWVzKCk7XG4gIGNvbnN0IFtkaWN0YXRlU3RhdGVdID0gdXNlRGljdGF0ZVN0YXRlKCk7XG5cbiAgcmV0dXJuIFtcbiAgICAoZGljdGF0ZVN0YXRlID09PSBTVEFSVElORyB8fCBkaWN0YXRlU3RhdGUgPT09IERJQ1RBVElORykgJiZcbiAgICAgICFhY3Rpdml0aWVzLmZpbHRlcihhY3Rpdml0eUlzU3BlYWtpbmdPclF1ZXVlZFRvU3BlYWspLmxlbmd0aFxuICBdO1xufVxuXG50eXBlIEJhc2ljU2VuZEJveFByb3BzID0gUmVhZG9ubHk8e1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59PjtcblxuY29uc3QgQmFzaWNTZW5kQm94OiBGQzxCYXNpY1NlbmRCb3hQcm9wcz4gPSAoeyBjbGFzc05hbWUgfSkgPT4ge1xuICBjb25zdCBbeyBzZW5kQm94QnV0dG9uQWxpZ25tZW50IH1dID0gdXNlU3R5bGVPcHRpb25zKCk7XG4gIGNvbnN0IFt7IHNlbmRCb3g6IHNlbmRCb3hTdHlsZVNldCB9XSA9IHVzZVN0eWxlU2V0KCk7XG4gIGNvbnN0IFt7IFNwZWVjaFJlY29nbml0aW9uID0gdW5kZWZpbmVkIH0gPSB7fV0gPSB1c2VXZWJTcGVlY2hQb255ZmlsbCgpO1xuICBjb25zdCBbZGlyZWN0aW9uXSA9IHVzZURpcmVjdGlvbigpO1xuICBjb25zdCBbZXJyb3JNZXNzYWdlSWRdID0gdXNlRXJyb3JNZXNzYWdlSWQoKTtcbiAgY29uc3QgW3NwZWVjaEludGVyaW1zVmlzaWJsZV0gPSB1c2VTZW5kQm94U3BlZWNoSW50ZXJpbXNWaXNpYmxlKCk7XG4gIGNvbnN0IHN0eWxlVG9FbW90aW9uT2JqZWN0ID0gdXNlU3R5bGVUb0Vtb3Rpb25PYmplY3QoKTtcblxuICBjb25zdCByb290Q2xhc3NOYW1lID0gc3R5bGVUb0Vtb3Rpb25PYmplY3QoUk9PVF9TVFlMRSkgKyAnJztcblxuICBjb25zdCBzdXBwb3J0U3BlZWNoUmVjb2duaXRpb24gPSAhIVNwZWVjaFJlY29nbml0aW9uO1xuXG4gIGNvbnN0IGJ1dHRvbkNsYXNzTmFtZSA9IGNsYXNzTmFtZXMoJ3dlYmNoYXRfX3NlbmQtYm94X19idXR0b24nLCB7XG4gICAgJ3dlYmNoYXRfX3NlbmQtYm94X19idXR0b24tLWFsaWduLWJvdHRvbSc6IHNlbmRCb3hCdXR0b25BbGlnbm1lbnQgPT09ICdib3R0b20nLFxuICAgICd3ZWJjaGF0X19zZW5kLWJveF9fYnV0dG9uLS1hbGlnbi1zdHJldGNoJzogc2VuZEJveEJ1dHRvbkFsaWdubWVudCAhPT0gJ2JvdHRvbScgJiYgc2VuZEJveEJ1dHRvbkFsaWdubWVudCAhPT0gJ3RvcCcsXG4gICAgJ3dlYmNoYXRfX3NlbmQtYm94X19idXR0b24tLWFsaWduLXRvcCc6IHNlbmRCb3hCdXR0b25BbGlnbm1lbnQgPT09ICd0b3AnXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgYXJpYS1lcnJvcm1lc3NhZ2U9e2Vycm9yTWVzc2FnZUlkfVxuICAgICAgYXJpYS1pbnZhbGlkPXshIWVycm9yTWVzc2FnZUlkfVxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKCd3ZWJjaGF0X19zZW5kLWJveCcsIHNlbmRCb3hTdHlsZVNldCArICcnLCByb290Q2xhc3NOYW1lICsgJycsIChjbGFzc05hbWUgfHwgJycpICsgJycpfVxuICAgICAgZGlyPXtkaXJlY3Rpb259XG4gICAgICByb2xlPVwiZm9ybVwiXG4gICAgPlxuICAgICAgPFN1Z2dlc3RlZEFjdGlvbnMgLz5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwid2ViY2hhdF9fc2VuZC1ib3hfX21haW5cIj5cbiAgICAgICAgPFNlbmRCb3hUb29sYmFyTWlkZGxld2FyZVByb3h5IGNsYXNzTmFtZT17YnV0dG9uQ2xhc3NOYW1lfSByZXF1ZXN0PXt1bmRlZmluZWR9IC8+XG4gICAgICAgIHtzcGVlY2hJbnRlcmltc1Zpc2libGUgPyAoXG4gICAgICAgICAgPERpY3RhdGlvbkludGVyaW1zIGNsYXNzTmFtZT1cIndlYmNoYXRfX3NlbmQtYm94X19kaWN0YXRpb24taW50ZXJpbXNcIiAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxUZXh0Qm94IGNsYXNzTmFtZT1cIndlYmNoYXRfX3NlbmQtYm94X190ZXh0LWJveFwiIC8+XG4gICAgICAgICl9XG4gICAgICAgIHtzdXBwb3J0U3BlZWNoUmVjb2duaXRpb24gPyAoXG4gICAgICAgICAgPE1pY3JvcGhvbmVCdXR0b24gY2xhc3NOYW1lPXtjbGFzc05hbWVzKGJ1dHRvbkNsYXNzTmFtZSwgJ3dlYmNoYXRfX3NlbmQtYm94X19taWNyb3Bob25lLWJ1dHRvbicpfSAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxTZW5kQnV0dG9uIGNsYXNzTmFtZT17YnV0dG9uQ2xhc3NOYW1lfSAvPlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBCYXNpY1NlbmRCb3g7XG5cbmV4cG9ydCB7IHVzZVNlbmRCb3hTcGVlY2hJbnRlcmltc1Zpc2libGUgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLHVCQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyx3QkFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsV0FBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUksTUFBQSxHQUFBRCxzQkFBQSxDQUFBSCxPQUFBO0FBRUEsSUFBQUssd0JBQUEsR0FBQUYsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFNLGFBQUEsR0FBQUgsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFPLHNCQUFBLEdBQUFKLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBUSxtQkFBQSxHQUFBTCxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQVMsa0JBQUEsR0FBQU4sc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFVLGlCQUFBLEdBQUFQLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBVyxXQUFBLEdBQUFSLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFB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