botframework-webchat-component
Version:
React component of botframework-webchat
251 lines (212 loc) • 16.8 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.SpeechSynthesisVoice = exports.SpeechSynthesisUtterance = exports.SpeechSynthesisEvent = exports.speechSynthesis = void 0;
var _eventTargetShimEs = _interopRequireWildcard(require("event-target-shim-es5"));
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 _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); }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
var SpeechSynthesisEvent = /*#__PURE__*/function () {
function SpeechSynthesisEvent(type, utterance) {
_classCallCheck(this, SpeechSynthesisEvent);
this._type = type;
this._utterance = utterance;
}
_createClass(SpeechSynthesisEvent, [{
key: "charIndex",
get: function get() {
return 0;
}
}, {
key: "elapsedTime",
get: function get() {
return 0;
}
}, {
key: "name",
get: function get() {}
}, {
key: "type",
get: function get() {
return this._type;
}
}, {
key: "utterance",
get: function get() {
return this._utterance;
}
}]);
return SpeechSynthesisEvent;
}();
exports.SpeechSynthesisEvent = SpeechSynthesisEvent;
var SpeechSynthesisUtterance = /*#__PURE__*/function (_EventTarget) {
_inherits(SpeechSynthesisUtterance, _EventTarget);
var _super = _createSuper(SpeechSynthesisUtterance);
function SpeechSynthesisUtterance(text) {
var _this;
_classCallCheck(this, SpeechSynthesisUtterance);
_this = _super.call(this);
_this._lang = 'en-US';
_this._pitch = 1;
_this._rate = 1;
_this._text = text;
_this._voice = null;
_this._volume = 1;
return _this;
}
_createClass(SpeechSynthesisUtterance, [{
key: "lang",
get: function get() {
return this._lang;
},
set: function set(value) {
this._lang = value;
}
}, {
key: "pitch",
get: function get() {
return this._pitch;
},
set: function set(value) {
this._pitch = value;
}
}, {
key: "rate",
get: function get() {
return this._rate;
},
set: function set(value) {
this._rate = value;
}
}, {
key: "text",
get: function get() {
return this._text;
},
set: function set(value) {
this._text = value;
}
}, {
key: "voice",
get: function get() {
return this._voice;
},
set: function set(value) {
this._voice = value;
}
}, {
key: "volume",
get: function get() {
return this._volume;
},
set: function set(value) {
this._volume = value;
}
}]);
return SpeechSynthesisUtterance;
}(_eventTargetShimEs.default);
exports.SpeechSynthesisUtterance = SpeechSynthesisUtterance;
(0, _eventTargetShimEs.defineEventAttribute)(SpeechSynthesisUtterance.prototype, 'boundary');
(0, _eventTargetShimEs.defineEventAttribute)(SpeechSynthesisUtterance.prototype, 'end');
(0, _eventTargetShimEs.defineEventAttribute)(SpeechSynthesisUtterance.prototype, 'error');
(0, _eventTargetShimEs.defineEventAttribute)(SpeechSynthesisUtterance.prototype, 'mark');
(0, _eventTargetShimEs.defineEventAttribute)(SpeechSynthesisUtterance.prototype, 'pause');
(0, _eventTargetShimEs.defineEventAttribute)(SpeechSynthesisUtterance.prototype, 'resume');
(0, _eventTargetShimEs.defineEventAttribute)(SpeechSynthesisUtterance.prototype, 'start');
var SpeechSynthesisVoice = /*#__PURE__*/function () {
function SpeechSynthesisVoice() {
_classCallCheck(this, SpeechSynthesisVoice);
}
_createClass(SpeechSynthesisVoice, [{
key: "default",
get: function get() {
return true;
}
}, {
key: "lang",
get: function get() {
return 'en-US';
}
}, {
key: "localService",
get: function get() {
return true;
}
}, {
key: "name",
get: function get() {
return 'English (US)';
}
}, {
key: "voiceURI",
get: function get() {
return 'English (US)';
}
}]);
return SpeechSynthesisVoice;
}();
exports.SpeechSynthesisVoice = SpeechSynthesisVoice;
var SpeechSynthesis = /*#__PURE__*/function (_EventTarget2) {
_inherits(SpeechSynthesis, _EventTarget2);
var _super2 = _createSuper(SpeechSynthesis);
function SpeechSynthesis() {
_classCallCheck(this, SpeechSynthesis);
return _super2.apply(this, arguments);
}
_createClass(SpeechSynthesis, [{
key: "cancel",
value: function cancel() {}
}, {
key: "getVoices",
value: function getVoices() {
return [new SpeechSynthesisVoice()];
}
}, {
key: "pause",
value: function pause() {
throw new Error('pause is not implemented.');
}
}, {
key: "resume",
value: function resume() {
throw new Error('resume is not implemented.');
}
}, {
key: "speak",
value: function speak(utterance) {
utterance.dispatchEvent(new SpeechSynthesisEvent('start', utterance));
utterance.dispatchEvent(new SpeechSynthesisEvent('end', utterance));
}
}, {
key: "paused",
get: function get() {
return false;
}
}, {
key: "pending",
get: function get() {
return false;
}
}, {
key: "speaking",
get: function get() {
return false;
}
}]);
return SpeechSynthesis;
}(_eventTargetShimEs.default);
(0, _eventTargetShimEs.defineEventAttribute)(SpeechSynthesis.prototype, 'voiceschanged');
var speechSynthesis = new SpeechSynthesis();
exports.speechSynthesis = speechSynthesis;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ob29rcy9pbnRlcm5hbC9CeXBhc3NTcGVlY2hTeW50aGVzaXNQb255ZmlsbC5qcyJdLCJuYW1lcyI6WyJTcGVlY2hTeW50aGVzaXNFdmVudCIsInR5cGUiLCJ1dHRlcmFuY2UiLCJfdHlwZSIsIl91dHRlcmFuY2UiLCJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UiLCJ0ZXh0IiwiX2xhbmciLCJfcGl0Y2giLCJfcmF0ZSIsIl90ZXh0IiwiX3ZvaWNlIiwiX3ZvbHVtZSIsInZhbHVlIiwiRXZlbnRUYXJnZXQiLCJwcm90b3R5cGUiLCJTcGVlY2hTeW50aGVzaXNWb2ljZSIsIlNwZWVjaFN5bnRoZXNpcyIsIkVycm9yIiwiZGlzcGF0Y2hFdmVudCIsInNwZWVjaFN5bnRoZXNpcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQVFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRU1BLG9CO0FBQ0osZ0NBQVlDLElBQVosRUFBa0JDLFNBQWxCLEVBQTZCO0FBQUE7O0FBQzNCLFNBQUtDLEtBQUwsR0FBYUYsSUFBYjtBQUNBLFNBQUtHLFVBQUwsR0FBa0JGLFNBQWxCO0FBQ0Q7Ozs7d0JBRWU7QUFDZCxhQUFPLENBQVA7QUFDRDs7O3dCQUVpQjtBQUNoQixhQUFPLENBQVA7QUFDRDs7O3dCQUVVLENBQUU7Ozt3QkFFRjtBQUNULGFBQU8sS0FBS0MsS0FBWjtBQUNEOzs7d0JBRWU7QUFDZCxhQUFPLEtBQUtDLFVBQVo7QUFDRDs7Ozs7Ozs7SUFHR0Msd0I7Ozs7O0FBQ0osb0NBQVlDLElBQVosRUFBa0I7QUFBQTs7QUFBQTs7QUFDaEI7QUFFQSxVQUFLQyxLQUFMLEdBQWEsT0FBYjtBQUNBLFVBQUtDLE1BQUwsR0FBYyxDQUFkO0FBQ0EsVUFBS0MsS0FBTCxHQUFhLENBQWI7QUFDQSxVQUFLQyxLQUFMLEdBQWFKLElBQWI7QUFDQSxVQUFLSyxNQUFMLEdBQWMsSUFBZDtBQUNBLFVBQUtDLE9BQUwsR0FBZSxDQUFmO0FBUmdCO0FBU2pCOzs7O3dCQUVVO0FBQ1QsYUFBTyxLQUFLTCxLQUFaO0FBQ0QsSztzQkFFUU0sSyxFQUFPO0FBQ2QsV0FBS04sS0FBTCxHQUFhTSxLQUFiO0FBQ0Q7Ozt3QkFFVztBQUNWLGFBQU8sS0FBS0wsTUFBWjtBQUNELEs7c0JBRVNLLEssRUFBTztBQUNmLFdBQUtMLE1BQUwsR0FBY0ssS0FBZDtBQUNEOzs7d0JBRVU7QUFDVCxhQUFPLEtBQUtKLEtBQVo7QUFDRCxLO3NCQUVRSSxLLEVBQU87QUFDZCxXQUFLSixLQUFMLEdBQWFJLEtBQWI7QUFDRDs7O3dCQUVVO0FBQ1QsYUFBTyxLQUFLSCxLQUFaO0FBQ0QsSztzQkFFUUcsSyxFQUFPO0FBQ2QsV0FBS0gsS0FBTCxHQUFhRyxLQUFiO0FBQ0Q7Ozt3QkFFVztBQUNWLGFBQU8sS0FBS0YsTUFBWjtBQUNELEs7c0JBRVNFLEssRUFBTztBQUNmLFdBQUtGLE1BQUwsR0FBY0UsS0FBZDtBQUNEOzs7d0JBRVk7QUFDWCxhQUFPLEtBQUtELE9BQVo7QUFDRCxLO3NCQUVVQyxLLEVBQU87QUFDaEIsV0FBS0QsT0FBTCxHQUFlQyxLQUFmO0FBQ0Q7Ozs7RUExRG9DQywwQjs7O0FBNkR2Qyw2Q0FBcUJULHdCQUF3QixDQUFDVSxTQUE5QyxFQUF5RCxVQUF6RDtBQUNBLDZDQUFxQlYsd0JBQXdCLENBQUNVLFNBQTlDLEVBQXlELEtBQXpEO0FBQ0EsNkNBQXFCVix3QkFBd0IsQ0FBQ1UsU0FBOUMsRUFBeUQsT0FBekQ7QUFDQSw2Q0FBcUJWLHdCQUF3QixDQUFDVSxTQUE5QyxFQUF5RCxNQUF6RDtBQUNBLDZDQUFxQlYsd0JBQXdCLENBQUNVLFNBQTlDLEVBQXlELE9BQXpEO0FBQ0EsNkNBQXFCVix3QkFBd0IsQ0FBQ1UsU0FBOUMsRUFBeUQsUUFBekQ7QUFDQSw2Q0FBcUJWLHdCQUF3QixDQUFDVSxTQUE5QyxFQUF5RCxPQUF6RDs7SUFFTUMsb0I7Ozs7Ozs7d0JBQ1U7QUFDWixhQUFPLElBQVA7QUFDRDs7O3dCQUVVO0FBQ1QsYUFBTyxPQUFQO0FBQ0Q7Ozt3QkFFa0I7QUFDakIsYUFBTyxJQUFQO0FBQ0Q7Ozt3QkFFVTtBQUNULGFBQU8sY0FBUDtBQUNEOzs7d0JBRWM7QUFDYixhQUFPLGNBQVA7QUFDRDs7Ozs7Ozs7SUFHR0MsZTs7Ozs7Ozs7Ozs7Ozs2QkFhSyxDQUFFOzs7Z0NBRUM7QUFDVixhQUFPLENBQUMsSUFBSUQsb0JBQUosRUFBRCxDQUFQO0FBQ0Q7Ozs0QkFFTztBQUNOLFlBQU0sSUFBSUUsS0FBSixDQUFVLDJCQUFWLENBQU47QUFDRDs7OzZCQUVRO0FBQ1AsWUFBTSxJQUFJQSxLQUFKLENBQVUsNEJBQVYsQ0FBTjtBQUNEOzs7MEJBRUtoQixTLEVBQVc7QUFDZkEsTUFBQUEsU0FBUyxDQUFDaUIsYUFBVixDQUF3QixJQUFJbkIsb0JBQUosQ0FBeUIsT0FBekIsRUFBa0NFLFNBQWxDLENBQXhCO0FBQ0FBLE1BQUFBLFNBQVMsQ0FBQ2lCLGFBQVYsQ0FBd0IsSUFBSW5CLG9CQUFKLENBQXlCLEtBQXpCLEVBQWdDRSxTQUFoQyxDQUF4QjtBQUNEOzs7d0JBN0JZO0FBQ1gsYUFBTyxLQUFQO0FBQ0Q7Ozt3QkFFYTtBQUNaLGFBQU8sS0FBUDtBQUNEOzs7d0JBRWM7QUFDYixhQUFPLEtBQVA7QUFDRDs7OztFQVgyQlksMEI7O0FBaUM5Qiw2Q0FBcUJHLGVBQWUsQ0FBQ0YsU0FBckMsRUFBZ0QsZUFBaEQ7QUFFQSxJQUFNSyxlQUFlLEdBQUcsSUFBSUgsZUFBSixFQUF4QiIsInNvdXJjZVJvb3QiOiJjb21wb25lbnQ6Ly8vIiwic291cmNlc0NvbnRlbnQiOlsiLy8gU2luY2UgdGhpcyBpcyBhIGJ5cGFzcywgd2Ugd2lsbCByZWxheCBzb21lIEVTTGludCBydWxlcy5cbi8vIEFsbCBjbGFzc2VzL3Byb3BlcnRpZXMgZGVmaW5lZCBoZXJlIGFyZSBpbiBXM0MgV2ViIFNwZWVjaCBBUEkuXG5cbi8qIGVzbGludCBjbGFzcy1tZXRob2RzLXVzZS10aGlzOiBcIm9mZlwiICovXG4vKiBlc2xpbnQgZ2V0dGVyLXJldHVybjogXCJvZmZcIiAqL1xuLyogZXNsaW50IG1heC1jbGFzc2VzLXBlci1maWxlOiBbXCJlcnJvclwiLCA0XSAqL1xuLyogZXNsaW50IG5vLWVtcHR5LWZ1bmN0aW9uOiBcIm9mZlwiICovXG5cbmltcG9ydCBFdmVudFRhcmdldCwgeyBkZWZpbmVFdmVudEF0dHJpYnV0ZSB9IGZyb20gJ2V2ZW50LXRhcmdldC1zaGltLWVzNSc7XG5cbmNsYXNzIFNwZWVjaFN5bnRoZXNpc0V2ZW50IHtcbiAgY29uc3RydWN0b3IodHlwZSwgdXR0ZXJhbmNlKSB7XG4gICAgdGhpcy5fdHlwZSA9IHR5cGU7XG4gICAgdGhpcy5fdXR0ZXJhbmNlID0gdXR0ZXJhbmNlO1xuICB9XG5cbiAgZ2V0IGNoYXJJbmRleCgpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIGdldCBlbGFwc2VkVGltZSgpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIGdldCBuYW1lKCkge31cblxuICBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdHlwZTtcbiAgfVxuXG4gIGdldCB1dHRlcmFuY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3V0dGVyYW5jZTtcbiAgfVxufVxuXG5jbGFzcyBTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UgZXh0ZW5kcyBFdmVudFRhcmdldCB7XG4gIGNvbnN0cnVjdG9yKHRleHQpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5fbGFuZyA9ICdlbi1VUyc7XG4gICAgdGhpcy5fcGl0Y2ggPSAxO1xuICAgIHRoaXMuX3JhdGUgPSAxO1xuICAgIHRoaXMuX3RleHQgPSB0ZXh0O1xuICAgIHRoaXMuX3ZvaWNlID0gbnVsbDtcbiAgICB0aGlzLl92b2x1bWUgPSAxO1xuICB9XG5cbiAgZ2V0IGxhbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xhbmc7XG4gIH1cblxuICBzZXQgbGFuZyh2YWx1ZSkge1xuICAgIHRoaXMuX2xhbmcgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBwaXRjaCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcGl0Y2g7XG4gIH1cblxuICBzZXQgcGl0Y2godmFsdWUpIHtcbiAgICB0aGlzLl9waXRjaCA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IHJhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JhdGU7XG4gIH1cblxuICBzZXQgcmF0ZSh2YWx1ZSkge1xuICAgIHRoaXMuX3JhdGUgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCB0ZXh0KCkge1xuICAgIHJldHVybiB0aGlzLl90ZXh0O1xuICB9XG5cbiAgc2V0IHRleHQodmFsdWUpIHtcbiAgICB0aGlzLl90ZXh0ID0gdmFsdWU7XG4gIH1cblxuICBnZXQgdm9pY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZvaWNlO1xuICB9XG5cbiAgc2V0IHZvaWNlKHZhbHVlKSB7XG4gICAgdGhpcy5fdm9pY2UgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCB2b2x1bWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZvbHVtZTtcbiAgfVxuXG4gIHNldCB2b2x1bWUodmFsdWUpIHtcbiAgICB0aGlzLl92b2x1bWUgPSB2YWx1ZTtcbiAgfVxufVxuXG5kZWZpbmVFdmVudEF0dHJpYnV0ZShTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UucHJvdG90eXBlLCAnYm91bmRhcnknKTtcbmRlZmluZUV2ZW50QXR0cmlidXRlKFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5wcm90b3R5cGUsICdlbmQnKTtcbmRlZmluZUV2ZW50QXR0cmlidXRlKFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5wcm90b3R5cGUsICdlcnJvcicpO1xuZGVmaW5lRXZlbnRBdHRyaWJ1dGUoU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLnByb3RvdHlwZSwgJ21hcmsnKTtcbmRlZmluZUV2ZW50QXR0cmlidXRlKFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5wcm90b3R5cGUsICdwYXVzZScpO1xuZGVmaW5lRXZlbnRBdHRyaWJ1dGUoU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLnByb3RvdHlwZSwgJ3Jlc3VtZScpO1xuZGVmaW5lRXZlbnRBdHRyaWJ1dGUoU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLnByb3RvdHlwZSwgJ3N0YXJ0Jyk7XG5cbmNsYXNzIFNwZWVjaFN5bnRoZXNpc1ZvaWNlIHtcbiAgZ2V0IGRlZmF1bHQoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBnZXQgbGFuZygpIHtcbiAgICByZXR1cm4gJ2VuLVVTJztcbiAgfVxuXG4gIGdldCBsb2NhbFNlcnZpY2UoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBnZXQgbmFtZSgpIHtcbiAgICByZXR1cm4gJ0VuZ2xpc2ggKFVTKSc7XG4gIH1cblxuICBnZXQgdm9pY2VVUkkoKSB7XG4gICAgcmV0dXJuICdFbmdsaXNoIChVUyknO1xuICB9XG59XG5cbmNsYXNzIFNwZWVjaFN5bnRoZXNpcyBleHRlbmRzIEV2ZW50VGFyZ2V0IHtcbiAgZ2V0IHBhdXNlZCgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXQgcGVuZGluZygpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXQgc3BlYWtpbmcoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY2FuY2VsKCkge31cblxuICBnZXRWb2ljZXMoKSB7XG4gICAgcmV0dXJuIFtuZXcgU3BlZWNoU3ludGhlc2lzVm9pY2UoKV07XG4gIH1cblxuICBwYXVzZSgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3BhdXNlIGlzIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIHJlc3VtZSgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Jlc3VtZSBpcyBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICBzcGVhayh1dHRlcmFuY2UpIHtcbiAgICB1dHRlcmFuY2UuZGlzcGF0Y2hFdmVudChuZXcgU3BlZWNoU3ludGhlc2lzRXZlbnQoJ3N0YXJ0JywgdXR0ZXJhbmNlKSk7XG4gICAgdXR0ZXJhbmNlLmRpc3BhdGNoRXZlbnQobmV3IFNwZWVjaFN5bnRoZXNpc0V2ZW50KCdlbmQnLCB1dHRlcmFuY2UpKTtcbiAgfVxufVxuXG5kZWZpbmVFdmVudEF0dHJpYnV0ZShTcGVlY2hTeW50aGVzaXMucHJvdG90eXBlLCAndm9pY2VzY2hhbmdlZCcpO1xuXG5jb25zdCBzcGVlY2hTeW50aGVzaXMgPSBuZXcgU3BlZWNoU3ludGhlc2lzKCk7XG5cbmV4cG9ydCB7IHNwZWVjaFN5bnRoZXNpcywgU3BlZWNoU3ludGhlc2lzRXZlbnQsIFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSwgU3BlZWNoU3ludGhlc2lzVm9pY2UgfTtcbiJdfQ==
;