UNPKG

botframework-webchat-component

Version:
186 lines (149 loc) 20.9 kB
"use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _reactDictateButton = require("react-dictate-button"); var _botframeworkWebchatCore = require("botframework-webchat-core"); var _botframeworkWebchatApi = require("botframework-webchat-api"); var _propTypes = _interopRequireDefault(require("prop-types")); var _react = _interopRequireWildcard(require("react")); var _useSettableDictateAbortable = _interopRequireDefault(require("./hooks/internal/useSettableDictateAbortable")); var _useWebSpeechPonyfill4 = _interopRequireDefault(require("./hooks/useWebSpeechPonyfill")); var _useSetDictateState = _interopRequireDefault(require("botframework-webchat-api/lib/hooks/internal/useSetDictateState")); function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } 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) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_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 useActivities = _botframeworkWebchatApi.hooks.useActivities, useDictateInterims = _botframeworkWebchatApi.hooks.useDictateInterims, useDictateState = _botframeworkWebchatApi.hooks.useDictateState, useDisabled = _botframeworkWebchatApi.hooks.useDisabled, useEmitTypingIndicator = _botframeworkWebchatApi.hooks.useEmitTypingIndicator, useLanguage = _botframeworkWebchatApi.hooks.useLanguage, useSendBoxValue = _botframeworkWebchatApi.hooks.useSendBoxValue, useSendTypingIndicator = _botframeworkWebchatApi.hooks.useSendTypingIndicator, useShouldSpeakIncomingActivity = _botframeworkWebchatApi.hooks.useShouldSpeakIncomingActivity, useStopDictate = _botframeworkWebchatApi.hooks.useStopDictate, useSubmitSendBox = _botframeworkWebchatApi.hooks.useSubmitSendBox; var _Constants$DictateSta = _botframeworkWebchatCore.Constants.DictateState, DICTATING = _Constants$DictateSta.DICTATING, IDLE = _Constants$DictateSta.IDLE, STARTING = _Constants$DictateSta.STARTING; var Dictation = function Dictation(_ref) { var onError = _ref.onError; var _useSettableDictateAb = (0, _useSettableDictateAbortable.default)(), _useSettableDictateAb2 = _slicedToArray(_useSettableDictateAb, 2), setDictateAbortable = _useSettableDictateAb2[1]; var _useDictateInterims = useDictateInterims(), _useDictateInterims2 = _slicedToArray(_useDictateInterims, 2), setDictateInterims = _useDictateInterims2[1]; var _useSendBoxValue = useSendBoxValue(), _useSendBoxValue2 = _slicedToArray(_useSendBoxValue, 2), setSendBox = _useSendBoxValue2[1]; var _useShouldSpeakIncomi = useShouldSpeakIncomingActivity(), _useShouldSpeakIncomi2 = _slicedToArray(_useShouldSpeakIncomi, 2), setShouldSpeakIncomingActivity = _useShouldSpeakIncomi2[1]; var _useWebSpeechPonyfill = (0, _useWebSpeechPonyfill4.default)(), _useWebSpeechPonyfill2 = _slicedToArray(_useWebSpeechPonyfill, 1), _useWebSpeechPonyfill3 = _useWebSpeechPonyfill2[0]; _useWebSpeechPonyfill3 = _useWebSpeechPonyfill3 === void 0 ? {} : _useWebSpeechPonyfill3; var SpeechGrammarList = _useWebSpeechPonyfill3.SpeechGrammarList, SpeechRecognition = _useWebSpeechPonyfill3.SpeechRecognition; var _useActivities = useActivities(), _useActivities2 = _slicedToArray(_useActivities, 1), activities = _useActivities2[0]; var _useDictateState = useDictateState(), _useDictateState2 = _slicedToArray(_useDictateState, 1), dictateState = _useDictateState2[0]; var _useDisabled = useDisabled(), _useDisabled2 = _slicedToArray(_useDisabled, 1), disabled = _useDisabled2[0]; var _useSendTypingIndicat = useSendTypingIndicator(), _useSendTypingIndicat2 = _slicedToArray(_useSendTypingIndicat, 1), sendTypingIndicator = _useSendTypingIndicat2[0]; var _useLanguage = useLanguage('speech'), _useLanguage2 = _slicedToArray(_useLanguage, 1), speechLanguage = _useLanguage2[0]; var emitTypingIndicator = useEmitTypingIndicator(); var setDictateState = (0, _useSetDictateState.default)(); var stopDictate = useStopDictate(); var submitSendBox = useSubmitSendBox(); var numSpeakingActivities = (0, _react.useMemo)(function () { return activities.filter(function (_ref2) { var _ref2$channelData = _ref2.channelData; _ref2$channelData = _ref2$channelData === void 0 ? {} : _ref2$channelData; var speak = _ref2$channelData.speak; return speak; }).length; }, [activities]); var handleDictate = (0, _react.useCallback)(function (_ref3) { var _ref3$result = _ref3.result; _ref3$result = _ref3$result === void 0 ? {} : _ref3$result; var confidence = _ref3$result.confidence, transcript = _ref3$result.transcript; if (dictateState === DICTATING || dictateState === STARTING) { setDictateInterims([]); setDictateState(IDLE); stopDictate(); if (transcript) { setSendBox(transcript); submitSendBox('speech', { channelData: { speech: { alternatives: [{ confidence: confidence, transcript: transcript }] } } }); setShouldSpeakIncomingActivity(true); } } }, [dictateState, setDictateInterims, setDictateState, stopDictate, setSendBox, submitSendBox, setShouldSpeakIncomingActivity]); var handleDictating = (0, _react.useCallback)(function (_ref4) { var abortable = _ref4.abortable, _ref4$results = _ref4.results, results = _ref4$results === void 0 ? [] : _ref4$results; if (dictateState === DICTATING || dictateState === STARTING) { var interims = results.map(function (_ref5) { var transcript = _ref5.transcript; return transcript; }); setDictateAbortable(abortable); setDictateInterims(interims); setDictateState(DICTATING); sendTypingIndicator && emitTypingIndicator(); } }, [dictateState, emitTypingIndicator, sendTypingIndicator, setDictateAbortable, setDictateInterims, setDictateState]); var handleError = (0, _react.useCallback)(function (event) { dictateState !== IDLE && setDictateState(IDLE); (dictateState === DICTATING || dictateState === STARTING) && stopDictate(); onError && onError(event); }, [dictateState, onError, setDictateState, stopDictate]); return /*#__PURE__*/_react.default.createElement(_reactDictateButton.Composer, { lang: speechLanguage, onDictate: handleDictate, onError: handleError, onProgress: handleDictating, speechGrammarList: SpeechGrammarList, speechRecognition: SpeechRecognition, started: !disabled && (dictateState === STARTING || dictateState === DICTATING) && !numSpeakingActivities }); }; Dictation.defaultProps = { onError: undefined }; Dictation.propTypes = { onError: _propTypes.default.func }; var _default = Dictation; exports.default = _default; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9EaWN0YXRpb24uanMiXSwibmFtZXMiOlsidXNlQWN0aXZpdGllcyIsImhvb2tzIiwidXNlRGljdGF0ZUludGVyaW1zIiwidXNlRGljdGF0ZVN0YXRlIiwidXNlRGlzYWJsZWQiLCJ1c2VFbWl0VHlwaW5nSW5kaWNhdG9yIiwidXNlTGFuZ3VhZ2UiLCJ1c2VTZW5kQm94VmFsdWUiLCJ1c2VTZW5kVHlwaW5nSW5kaWNhdG9yIiwidXNlU2hvdWxkU3BlYWtJbmNvbWluZ0FjdGl2aXR5IiwidXNlU3RvcERpY3RhdGUiLCJ1c2VTdWJtaXRTZW5kQm94IiwiQ29uc3RhbnRzIiwiRGljdGF0ZVN0YXRlIiwiRElDVEFUSU5HIiwiSURMRSIsIlNUQVJUSU5HIiwiRGljdGF0aW9uIiwib25FcnJvciIsInNldERpY3RhdGVBYm9ydGFibGUiLCJzZXREaWN0YXRlSW50ZXJpbXMiLCJzZXRTZW5kQm94Iiwic2V0U2hvdWxkU3BlYWtJbmNvbWluZ0FjdGl2aXR5IiwiU3BlZWNoR3JhbW1hckxpc3QiLCJTcGVlY2hSZWNvZ25pdGlvbiIsImFjdGl2aXRpZXMiLCJkaWN0YXRlU3RhdGUiLCJkaXNhYmxlZCIsInNlbmRUeXBpbmdJbmRpY2F0b3IiLCJzcGVlY2hMYW5ndWFnZSIsImVtaXRUeXBpbmdJbmRpY2F0b3IiLCJzZXREaWN0YXRlU3RhdGUiLCJzdG9wRGljdGF0ZSIsInN1Ym1pdFNlbmRCb3giLCJudW1TcGVha2luZ0FjdGl2aXRpZXMiLCJmaWx0ZXIiLCJjaGFubmVsRGF0YSIsInNwZWFrIiwibGVuZ3RoIiwiaGFuZGxlRGljdGF0ZSIsInJlc3VsdCIsImNvbmZpZGVuY2UiLCJ0cmFuc2NyaXB0Iiwic3BlZWNoIiwiYWx0ZXJuYXRpdmVzIiwiaGFuZGxlRGljdGF0aW5nIiwiYWJvcnRhYmxlIiwicmVzdWx0cyIsImludGVyaW1zIiwibWFwIiwiaGFuZGxlRXJyb3IiLCJldmVudCIsImRlZmF1bHRQcm9wcyIsInVuZGVmaW5lZCIsInByb3BUeXBlcyIsIlBy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QyxLQUFLLEVBQUk7QUFDUHpCLElBQUFBLFlBQVksS0FBS1gsSUFBakIsSUFBeUJnQixlQUFlLENBQUNoQixJQUFELENBQXhDO0FBQ0EsS0FBQ1csWUFBWSxLQUFLWixTQUFqQixJQUE4QlksWUFBWSxLQUFLVixRQUFoRCxLQUE2RGdCLFdBQVcsRUFBeEU7QUFFQWQsSUFBQUEsT0FBTyxJQUFJQSxPQUFPLENBQUNpQyxLQUFELENBQWxCO0FBQ0QsR0FOaUIsRUFPbEIsQ0FBQ3pCLFlBQUQsRUFBZVIsT0FBZixFQUF3QmEsZUFBeEIsRUFBeUNDLFdBQXpDLENBUGtCLENBQXBCO0FBVUEsc0JBQ0UsNkJBQUMsNEJBQUQ7QUFDRSxJQUFBLElBQUksRUFBRUgsY0FEUjtBQUVFLElBQUEsU0FBUyxFQUFFVSxhQUZiO0FBR0UsSUFBQSxPQUFPLEVBQUVXLFdBSFg7QUFJRSxJQUFBLFVBQVUsRUFBRUwsZUFKZDtBQUtFLElBQUEsaUJBQWlCLEVBQUV0QixpQkFMckI7QUFNRSxJQUFBLGlCQUFpQixFQUFFQyxpQkFOckI7QUFPRSxJQUFBLE9BQU8sRUFBRSxDQUFDRyxRQUFELEtBQWNELFlBQVksS0FBS1YsUUFBakIsSUFBNkJVLFlBQVksS0FBS1osU0FBNUQsS0FBMEUsQ0FBQ29CO0FBUHRGLElBREY7QUFXRCxDQWhGRDs7QUFrRkFqQixTQUFTLENBQUNtQyxZQUFWLEdBQXlCO0FBQ3ZCbEMsRUFBQUEsT0FBTyxFQUFFbUM7QUFEYyxDQUF6QjtBQUlBcEMsU0FBUyxDQUFDcUMsU0FBVixHQUFzQjtBQUNwQnBDLEVBQUFBLE9BQU8sRUFBRXFDLG1CQUFVQztBQURDLENBQXRCO2VBSWV2QyxTIiwic291cmNlUm9vdCI6ImNvbXBvbmVudDovLy8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb3NlciBhcyBEaWN0YXRlQ29tcG9zZXIgfSBmcm9tICdyZWFjdC1kaWN0YXRlLWJ1dHRvbic7XG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tICdib3RmcmFtZXdvcmstd2ViY2hhdC1jb3JlJztcbmltcG9ydCB7IGhvb2tzIH0gZnJvbSAnYm90ZnJhbWV3b3JrLXdlYmNoYXQtYXBpJztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2ssIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB1c2VTZXR0YWJsZURpY3RhdGVBYm9ydGFibGUgZnJvbSAnLi9ob29rcy9pbnRlcm5hbC91c2VTZXR0YWJsZURpY3RhdGVBYm9ydGFibGUnO1xuaW1wb3J0IHVzZVdlYlNwZWVjaFBvbnlmaWxsIGZyb20gJy4vaG9va3MvdXNlV2ViU3BlZWNoUG9ueWZpbGwnO1xuXG4vLyBUT0RPOiBbUDFdICMzMzUwIE5vIC9saWIvLCB3ZSBuZWVkIHRvIG1vdmUgc2V0RGljdGF0ZVN0YXRlIGZyb20gYmYtd2MtY29yZSAoUmVkdXgpIHRvIFJlYWN0IENvbnRleHQuXG5pbXBvcnQgdXNlU2V0RGljdGF0ZVN0YXRlIGZyb20gJ2JvdGZyYW1ld29yay13ZWJjaGF0LWFwaS9saWIvaG9va3MvaW50ZXJuYWwvdXNlU2V0RGljdGF0ZVN0YXRlJztcblxuY29uc3Qge1xuICB1c2VBY3Rpdml0aWVzLFxuICB1c2VEaWN0YXRlSW50ZXJpbXMsXG4gIHVzZURpY3RhdGVTdGF0ZSxcbiAgdXNlRGlzYWJsZWQsXG4gIHVzZUVtaXRUeXBpbmdJbmRpY2F0b3IsXG4gIHVzZUxhbmd1YWdlLFxuICB1c2VTZW5kQm94VmFsdWUsXG4gIHVzZVNlbmRUeXBpbmdJbmRpY2F0b3IsXG4gIHVzZVNob3VsZFNwZWFrSW5jb21pbmdBY3Rpdml0eSxcbiAgdXNlU3RvcERpY3RhdGUsXG4gIHVzZVN1Ym1pdFNlbmRCb3hcbn0gPSBob29rcztcblxuY29uc3Qge1xuICBEaWN0YXRlU3RhdGU6IHsgRElDVEFUSU5HLCBJRExFLCBTVEFSVElORyB9XG59ID0gQ29uc3RhbnRzO1xuXG5jb25zdCBEaWN0YXRpb24gPSAoeyBvbkVycm9yIH0pID0+IHtcbiAgY29uc3QgWywgc2V0RGljdGF0ZUFib3J0YWJsZV0gPSB1c2VTZXR0YWJsZURpY3RhdGVBYm9ydGFibGUoKTtcbiAgY29uc3QgWywgc2V0RGljdGF0ZUludGVyaW1zXSA9IHVzZURpY3RhdGVJbnRlcmltcygpO1xuICBjb25zdCBbLCBzZXRTZW5kQm94XSA9IHVzZVNlbmRCb3hWYWx1ZSgpO1xuICBjb25zdCBbLCBzZXRTaG91bGRTcGVha0luY29taW5nQWN0aXZpdHldID0gdXNlU2hvdWxkU3BlYWtJbmNvbWluZ0FjdGl2aXR5KCk7XG4gIGNvbnN0IFt7IFNwZWVjaEdyYW1tYXJMaXN0LCBTcGVlY2hSZWNvZ25pdGlvbiB9ID0ge31dID0gdXNlV2ViU3BlZWNoUG9ueWZpbGwoKTtcbiAgY29uc3QgW2FjdGl2aXRpZXNdID0gdXNlQWN0aXZpdGllcygpO1xuICBjb25zdCBbZGljdGF0ZVN0YXRlXSA9IHVzZURpY3RhdGVTdGF0ZSgpO1xuICBjb25zdCBbZGlzYWJsZWRdID0gdXNlRGlzYWJsZWQoKTtcbiAgY29uc3QgW3NlbmRUeXBpbmdJbmRpY2F0b3JdID0gdXNlU2VuZFR5cGluZ0luZGljYXRvcigpO1xuICBjb25zdCBbc3BlZWNoTGFuZ3VhZ2VdID0gdXNlTGFuZ3VhZ2UoJ3NwZWVjaCcpO1xuICBjb25zdCBlbWl0VHlwaW5nSW5kaWNhdG9yID0gdXNlRW1pdFR5cGluZ0luZGljYXRvcigpO1xuICBjb25zdCBzZXREaWN0YXRlU3RhdGUgPSB1c2VTZXREaWN0YXRlU3RhdGUoKTtcbiAgY29uc3Qgc3RvcERpY3RhdGUgPSB1c2VTdG9wRGljdGF0ZSgpO1xuICBjb25zdCBzdWJtaXRTZW5kQm94ID0gdXNlU3VibWl0U2VuZEJveCgpO1xuXG4gIGNvbnN0IG51bVNwZWFraW5nQWN0aXZpdGllcyA9IHVzZU1lbW8oKCkgPT4gYWN0aXZpdGllcy5maWx0ZXIoKHsgY2hhbm5lbERhdGE6IHsgc3BlYWsgfSA9IHt9IH0pID0+IHNwZWFrKS5sZW5ndGgsIFtcbiAgICBhY3Rpdml0aWVzXG4gIF0pO1xuXG4gIGNvbnN0IGhhbmRsZURpY3RhdGUgPSB1c2VDYWxsYmFjayhcbiAgICAoeyByZXN1bHQ6IHsgY29uZmlkZW5jZSwgdHJhbnNjcmlwdCB9ID0ge30gfSkgPT4ge1xuICAgICAgaWYgKGRpY3RhdGVTdGF0ZSA9PT0gRElDVEFUSU5HIHx8IGRpY3RhdGVTdGF0ZSA9PT0gU1RBUlRJTkcpIHtcbiAgICAgICAgc2V0RGljdGF0ZUludGVyaW1zKFtdKTtcbiAgICAgICAgc2V0RGljdGF0ZVN0YXRlKElETEUpO1xuICAgICAgICBzdG9wRGljdGF0ZSgpO1xuXG4gICAgICAgIGlmICh0cmFuc2NyaXB0KSB7XG4gICAgICAgICAgc2V0U2VuZEJveCh0cmFuc2NyaXB0KTtcbiAgICAgICAgICBzdWJtaXRTZW5kQm94KCdzcGVlY2gnLCB7IGNoYW5uZWxEYXRhOiB7IHNwZWVjaDogeyBhbHRlcm5hdGl2ZXM6IFt7IGNvbmZpZGVuY2UsIHRyYW5zY3JpcHQgfV0gfSB9IH0pO1xuICAgICAgICAgIHNldFNob3VsZFNwZWFrSW5jb21pbmdBY3Rpdml0eSh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgZGljdGF0ZVN0YXRlLFxuICAgICAgc2V0RGljdGF0ZUludGVyaW1zLFxuICAgICAgc2V0RGljdGF0ZVN0YXRlLFxuICAgICAgc3RvcERpY3RhdGUsXG4gICAgICBzZXRTZW5kQm94LFxuICAgICAgc3VibWl0U2VuZEJveCxcbiAgICAgIHNldFNob3VsZFNwZWFrSW5jb21pbmdBY3Rpdml0eVxuICAgIF1cbiAgKTtcblxuICBjb25zdCBoYW5kbGVEaWN0YXRpbmcgPSB1c2VDYWxsYmFjayhcbiAgICAoeyBhYm9ydGFibGUsIHJlc3VsdHMgPSBbXSB9KSA9PiB7XG4gICAgICBpZiAoZGljdGF0ZVN0YXRlID09PSBESUNUQVRJTkcgfHwgZGljdGF0ZVN0YXRlID09PSBTVEFSVElORykge1xuICAgICAgICBjb25zdCBpbnRlcmltcyA9IHJlc3VsdHMubWFwKCh7IHRyYW5zY3JpcHQgfSkgPT4gdHJhbnNjcmlwdCk7XG5cbiAgICAgICAgc2V0RGljdGF0ZUFib3J0YWJsZShhYm9ydGFibGUpO1xuICAgICAgICBzZXREaWN0YXRlSW50ZXJpbXMoaW50ZXJpbXMpO1xuICAgICAgICBzZXREaWN0YXRlU3RhdGUoRElDVEFUSU5HKTtcbiAgICAgICAgc2VuZFR5cGluZ0luZGljYXRvciAmJiBlbWl0VHlwaW5nSW5kaWNhdG9yKCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbZGljdGF0ZVN0YXRlLCBlbWl0VHlwaW5nSW5kaWNhdG9yLCBzZW5kVHlwaW5nSW5kaWNhdG9yLCBzZXREaWN0YXRlQWJvcnRhYmxlLCBzZXREaWN0YXRlSW50ZXJpbXMsIHNldERpY3RhdGVTdGF0ZV1cbiAgKTtcblxuICBjb25zdCBoYW5kbGVFcnJvciA9IHVzZUNhbGxiYWNrKFxuICAgIGV2ZW50ID0+IHtcbiAgICAgIGRpY3RhdGVTdGF0ZSAhPT0gSURMRSAmJiBzZXREaWN0YXRlU3RhdGUoSURMRSk7XG4gICAgICAoZGljdGF0ZVN0YXRlID09PSBESUNUQVRJTkcgfHwgZGljdGF0ZVN0YXRlID09PSBTVEFSVElORykgJiYgc3RvcERpY3RhdGUoKTtcblxuICAgICAgb25FcnJvciAmJiBvbkVycm9yKGV2ZW50KTtcbiAgICB9LFxuICAgIFtkaWN0YXRlU3RhdGUsIG9uRXJyb3IsIHNldERpY3RhdGVTdGF0ZSwgc3RvcERpY3RhdGVdXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8RGljdGF0ZUNvbXBvc2VyXG4gICAgICBsYW5nPXtzcGVlY2hMYW5ndWFnZX1cbiAgICAgIG9uRGljdGF0ZT17aGFuZGxlRGljdGF0ZX1cbiAgICAgIG9uRXJyb3I9e2hhbmRsZUVycm9yfVxuICAgICAgb25Qcm9ncmVzcz17aGFuZGxlRGljdGF0aW5nfVxuICAgICAgc3BlZWNoR3JhbW1hckxpc3Q9e1NwZWVjaEdyYW1tYXJMaXN0fVxuICAgICAgc3BlZWNoUmVjb2duaXRpb249e1NwZWVjaFJlY29nbml0aW9ufVxuICAgICAgc3RhcnRlZD17IWRpc2FibGVkICYmIChkaWN0YXRlU3RhdGUgPT09IFNUQVJUSU5HIHx8IGRpY3RhdGVTdGF0ZSA9PT0gRElDVEFUSU5HKSAmJiAhbnVtU3BlYWtpbmdBY3Rpdml0aWVzfVxuICAgIC8+XG4gICk7XG59O1xuXG5EaWN0YXRpb24uZGVmYXVsdFByb3BzID0ge1xuICBvbkVycm9yOiB1bmRlZmluZWRcbn07XG5cbkRpY3RhdGlvbi5wcm9wVHlwZXMgPSB7XG4gIG9uRXJyb3I6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBEaWN0YXRpb247XG4iXX0=