UNPKG

com.phloxui

Version:

PhloxUI Ng2+ Framework

224 lines (223 loc) 28 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import * as tslib_1 from "tslib"; import { DefaultMenu } from '../DefaultMenu.component'; import { MenuModel } from '../model/MenuModel'; import { CheckMenuItemModel } from '../model/CheckMenuItemModel'; var DataLanguageMenuFactory = /** @class */ (function () { function DataLanguageMenuFactory() { } /** * @param {?} objArray * @return {?} */ DataLanguageMenuFactory.prototype.sortLanguageList = /** * @param {?} objArray * @return {?} */ function (objArray) { if (objArray === null || typeof objArray === 'undefined') { return; } objArray.sort(function (obj1, obj2) { if ((obj1 === null || typeof obj1 === 'undefined') && (obj2 !== null && typeof obj2 !== 'undefined')) { return 1; } else if ((obj1 !== null && typeof obj1 !== 'undefined') && (obj2 === null || typeof obj2 === 'undefined')) { return -1; } else if ((obj1 === null || typeof obj1 === 'undefined') && (obj2 === null || typeof obj2 === 'undefined')) { return 0; } var /** @type {?} */ code1 = obj1.code; var /** @type {?} */ code2 = obj2.code; if ((code1 === null || typeof code1 === 'undefined') && (code2 !== null && typeof code2 !== 'undefined')) { return 1; } else if ((code1 !== null && typeof code1 !== 'undefined') && (code2 === null || typeof code2 === 'undefined')) { return -1; } else if ((code1 === null || typeof code1 === 'undefined') && (code2 === null || typeof code2 === 'undefined')) { return 0; } if (code1 < code2) { return -1; } else if (code1 > code2) { return 1; } return 0; }); }; /** * @param {?} context * @return {?} */ DataLanguageMenuFactory.prototype.createMenuModel = /** * @param {?} context * @return {?} */ function (context) { var /** @type {?} */ menuItemModelArray = []; if (context === null || typeof context === 'undefined') { return null; } var /** @type {?} */ anyContext = context; var /** @type {?} */ contentInstance = null; if (anyContext.constructor.name === 'Tab') { var /** @type {?} */ tab = /** @type {?} */ (anyContext); contentInstance = tab.getTabBody(); } if (typeof anyContext.getData !== 'function') { return null; } var /** @type {?} */ anyData = anyContext.getData(); if (anyData === null || typeof anyData === 'undefined') { return null; } var /** @type {?} */ editor = anyData.editor; if (editor === null || typeof editor === 'undefined') { return null; } if (editor !== null) { var /** @type {?} */ langFieldName = editor.getLanguageField(); var /** @type {?} */ dataObjects = anyData.objects; var /** @type {?} */ defLangObj = null; var /** @type {?} */ langContainedList = []; if (dataObjects !== null && typeof dataObjects !== 'undefined') { try { for (var dataObjects_1 = tslib_1.__values(dataObjects), dataObjects_1_1 = dataObjects_1.next(); !dataObjects_1_1.done; dataObjects_1_1 = dataObjects_1.next()) { var obj = dataObjects_1_1.value; var /** @type {?} */ langCode = obj[langFieldName]; if (langCode !== null && typeof langCode !== 'undefined') { if (langContainedList.indexOf(langCode) <= -1) { langContainedList.push(langCode); } } } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (dataObjects_1_1 && !dataObjects_1_1.done && (_a = dataObjects_1.return)) _a.call(dataObjects_1); } finally { if (e_1) throw e_1.error; } } } var /** @type {?} */ langI18n = editor.getI18NObject('LANG'); var /** @type {?} */ allLangList = []; var /** @type {?} */ addedLangList = []; var /** @type {?} */ setting = editor.getAppSetting(); if (setting !== null && typeof setting !== 'undefined') { var /** @type {?} */ defaultLangs = setting.DEFAULT_DATA_LANGUAGES; if (defaultLangs !== null && typeof defaultLangs !== 'undefined' && Array.isArray(defaultLangs)) { try { // merge all data and default lang for (var defaultLangs_1 = tslib_1.__values(defaultLangs), defaultLangs_1_1 = defaultLangs_1.next(); !defaultLangs_1_1.done; defaultLangs_1_1 = defaultLangs_1.next()) { var dfLang = defaultLangs_1_1.value; allLangList.push(dfLang); addedLangList.push(dfLang.code); } } catch (e_2_1) { e_2 = { error: e_2_1 }; } finally { try { if (defaultLangs_1_1 && !defaultLangs_1_1.done && (_b = defaultLangs_1.return)) _b.call(defaultLangs_1); } finally { if (e_2) throw e_2.error; } } } } try { for (var langContainedList_1 = tslib_1.__values(langContainedList), langContainedList_1_1 = langContainedList_1.next(); !langContainedList_1_1.done; langContainedList_1_1 = langContainedList_1.next()) { var dLang = langContainedList_1_1.value; if (addedLangList.indexOf(dLang) <= -1) { var /** @type {?} */ langLabel = ""; if (langI18n !== null && typeof langI18n !== 'undefined' && langI18n[dLang] !== null && typeof langI18n[dLang] !== 'undefined') { langLabel = langI18n[dLang].name; } allLangList.push({ code: dLang, label: langLabel }); addedLangList.push(dLang); } } } catch (e_3_1) { e_3 = { error: e_3_1 }; } finally { try { if (langContainedList_1_1 && !langContainedList_1_1.done && (_c = langContainedList_1.return)) _c.call(langContainedList_1); } finally { if (e_3) throw e_3.error; } } this.sortLanguageList(allLangList); var _loop_1 = function (lang) { var /** @type {?} */ menuItem = new CheckMenuItemModel(lang.label, lang.code, lang.iconURL, true, function (actionEvent) { if (contentInstance !== null && typeof contentInstance !== 'undefined') { var /** @type {?} */ hasData = false; if (typeof contentInstance.languageHasData === 'function') { hasData = contentInstance.languageHasData(lang.code); } if (hasData) { // remove if (typeof contentInstance.removeLangWithConfirmDialog === 'function') { contentInstance.removeLangWithConfirmDialog(lang.code).then(function (result) { if (result !== null) { //! editor remove lang editor.deleteData(result); } }); } } else { // create if (typeof contentInstance.createNewLangWithConfirmDialog === 'function') { contentInstance.createNewLangWithConfirmDialog(lang.code); } } } }); menuItemModelArray.push(menuItem); }; try { for (var allLangList_1 = tslib_1.__values(allLangList), allLangList_1_1 = allLangList_1.next(); !allLangList_1_1.done; allLangList_1_1 = allLangList_1.next()) { var lang = allLangList_1_1.value; _loop_1(lang); } } catch (e_4_1) { e_4 = { error: e_4_1 }; } finally { try { if (allLangList_1_1 && !allLangList_1_1.done && (_d = allLangList_1.return)) _d.call(allLangList_1); } finally { if (e_4) throw e_4.error; } } try { for (var menuItemModelArray_1 = tslib_1.__values(menuItemModelArray), menuItemModelArray_1_1 = menuItemModelArray_1.next(); !menuItemModelArray_1_1.done; menuItemModelArray_1_1 = menuItemModelArray_1.next()) { var item = menuItemModelArray_1_1.value; var /** @type {?} */ lItem = /** @type {?} */ (item); if (langContainedList.indexOf(lItem.prefixLabel) >= 0) { lItem.checked = true; } } } catch (e_5_1) { e_5 = { error: e_5_1 }; } finally { try { if (menuItemModelArray_1_1 && !menuItemModelArray_1_1.done && (_e = menuItemModelArray_1.return)) _e.call(menuItemModelArray_1); } finally { if (e_5) throw e_5.error; } } } var /** @type {?} */ model = null; if (menuItemModelArray.length >= 1) { model = new MenuModel(DefaultMenu, 'Language Data', menuItemModelArray); } return model; var e_1, _a, e_2, _b, e_3, _c, e_4, _d, e_5, _e; }; return DataLanguageMenuFactory; }()); export { DataLanguageMenuFactory }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0YUxhbmd1YWdlTWVudUZhY3RvcnkuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9jb20ucGhsb3h1aS8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnQvZWRpdG9yL0RhdGFMYW5ndWFnZU1lbnVGYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBR0EsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUcvQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUVqRSxJQUFBOzs7Ozs7O0lBRVksa0RBQWdCOzs7O2NBQUMsUUFBZTtRQUNwQyxFQUFFLENBQUMsQ0FBQyxRQUFRLEtBQUssSUFBSSxJQUFJLE9BQU8sUUFBUSxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDdkQsTUFBTSxDQUFDO1NBQ1Y7UUFFRCxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVMsSUFBSSxFQUFFLElBQUk7WUFDN0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksSUFBSSxPQUFPLElBQUksS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ25HLE1BQU0sQ0FBQyxDQUFDLENBQUM7YUFDWjtZQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLElBQUksT0FBTyxJQUFJLEtBQUssV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDMUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2I7WUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJ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LElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzs7O2dCQTFCdEMsR0FBRyxDQUFDLENBQWEsSUFBQSxnQkFBQSxpQkFBQSxXQUFXLENBQUEsd0NBQUE7b0JBQXZCLElBQUksSUFBSSx3QkFBQTs0QkFBSixJQUFJO2lCQTJCWjs7Ozs7Ozs7OztnQkFFRCxHQUFHLENBQUMsQ0FBYSxJQUFBLHVCQUFBLGlCQUFBLGtCQUFrQixDQUFBLHNEQUFBO29CQUE5QixJQUFJLElBQUksK0JBQUE7b0JBQ1QscUJBQUksS0FBSyxxQkFBRyxJQUEwQixDQUFBLENBQUM7b0JBQ3ZDLEVBQUUsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDcEQsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7cUJBQ3hCO2lCQUNKOzs7Ozs7Ozs7U0FDSjtRQUVELHFCQUFJLEtBQUssR0FBYyxJQUFJLENBQUM7UUFDNUIsRUFBRSxDQUFBLENBQUMsa0JBQWtCLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFBLENBQUM7WUFDL0IsS0FBSyxHQUFHLElBQUksU0FBUyxDQUFDLFdBQVcsRUFBRSxlQUFlLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztTQUMzRTtRQUVELE1BQU0sQ0FBQyxLQUFLLENBQUM7OztrQ0F0S3JCO0lBd0tDLENBQUE7QUE3SkQsbUNBNkpDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSU1lbnVNb2RlbEZhY3RvcnkgfSBmcm9tICcuLi9JTWVudU1vZGVsRmFjdG9yeSc7XG5pbXBvcnQgeyBJQ29udGV4dCB9IGZyb20gJy4uL0lDb250ZXh0JztcbmltcG9ydCB7IENvbXBvbmVudE1lbnVJdGVtIH0gZnJvbSAnLi4vQ29tcG9uZW50TWVudUl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IERlZmF1bHRNZW51IH0gZnJvbSAnLi4vRGVmYXVsdE1lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYiB9IGZyb20gJy4uL2RhdGF2aWV3L1RhYlBhbmUuY29tcG9uZW50JztcbmltcG9ydCB7IE1lbnVJdGVtTW9kZWwgfSBmcm9tICcuLi9tb2RlbC9NZW51SXRlbU1vZGVsJztcbmltcG9ydCB7IE1lbnVNb2RlbCB9IGZyb20gJy4uL21vZGVsL01lbnVNb2RlbCc7XG5pbXBvcnQgeyBBY3Rpb25Nb2RlbCB9IGZyb20gJy4uL21vZGVsL0FjdGlvbk1vZGVsJztcbmltcG9ydCB7IEFjdGlvbk1vZGVsTWVudSB9IGZyb20gJy4uL21vZGVsL0FjdGlvbk1vZGVsTWVudSc7XG5pbXBvcnQgeyBDaGVja01lbnVJdGVtTW9kZWwgfSBmcm9tICcuLi9tb2RlbC9DaGVja01lbnVJdGVtTW9kZWwnO1xuXG5leHBvcnQgY2xhc3MgRGF0YUxhbmd1YWdlTWVudUZhY3RvcnkgaW1wbGVtZW50cyBJTWVudU1vZGVsRmFjdG9yeSB7XG5cbiAgICBwcml2YXRlIHNvcnRMYW5ndWFnZUxpc3Qob2JqQXJyYXk6IGFueVtdKTogdm9pZCB7XG4gICAgICAgIGlmIChvYmpBcnJheSA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqQXJyYXkgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBvYmpBcnJheS5zb3J0KGZ1bmN0aW9uKG9iajEsIG9iajIpIHtcbiAgICAgICAgICAgIGlmICgob2JqMSA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqMSA9PT0gJ3VuZGVmaW5lZCcpICYmIChvYmoyICE9PSBudWxsICYmIHR5cGVvZiBvYmoyICE9PSAndW5kZWZpbmVkJykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoKG9iajEgIT09IG51bGwgJiYgdHlwZW9mIG9iajEgIT09ICd1bmRlZmluZWQnKSAmJiAob2JqMiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqMiA9PT0gJ3VuZGVmaW5lZCcpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgfSBlbHNlIGlmICgob2JqMSA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqMSA9PT0gJ3VuZGVmaW5lZCcpICYmIChvYmoyID09PSBudWxsIHx8IHR5cGVvZiBvYmoyID09PSAndW5kZWZpbmVkJykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGNvZGUxOiBzdHJpbmcgPSBvYmoxLmNvZGU7XG4gICAgICAgICAgICBsZXQgY29kZTI6IHN0cmluZyA9IG9iajIuY29kZTtcblxuICAgICAgICAgICAgaWYgKChjb2RlMSA9PT0gbnVsbCB8fCB0eXBlb2YgY29kZTEgPT09ICd1bmRlZmluZWQnKSAmJiAoY29kZTIgIT09IG51bGwgJiYgdHlwZW9mIGNvZGUyICE9PSAndW5kZWZpbmVkJykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoKGNvZGUxICE9PSBudWxsICYmIHR5cGVvZiBjb2RlMSAhPT0gJ3VuZGVmaW5lZCcpICYmIChjb2RlMiA9PT0gbnVsbCB8fCB0eXBlb2YgY29kZTIgPT09ICd1bmRlZmluZWQnKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoKGNvZGUxID09PSBudWxsIHx8IHR5cGVvZiBjb2RlMSA9PT0gJ3VuZGVmaW5lZCcpICYmIChjb2RlMiA9PT0gbnVsbCB8fCB0eXBlb2YgY29kZTIgPT09ICd1bmRlZmluZWQnKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY29kZTEgPCBjb2RlMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29kZTEgPiBjb2RlMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZU1lbnVNb2RlbChjb250ZXh0OiBJQ29udGV4dCk6IE1lbnVNb2RlbCB7XG4gICAgICAgIGxldCBtZW51SXRlbU1vZGVsQXJyYXk6IE1lbnVJdGVtTW9kZWxbXSA9IFtdO1xuXG4gICAgICAgIGlmIChjb250ZXh0ID09PSBudWxsIHx8IHR5cGVvZiBjb250ZXh0ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgYW55Q29udGV4dDogYW55ID0gY29udGV4dDtcbiAgICAgICAgbGV0IGNvbnRlbnRJbnN0YW5jZTogYW55ID0gbnVsbDtcbiAgICAgICAgaWYoYW55Q29udGV4dC5jb25zdHJ1Y3Rvci5uYW1lID09PSAnVGFiJyl7XG4gICAgICAgICAgICBsZXQgdGFiID0gYW55Q29udGV4dCBhcyBUYWI7XG4gICAgICAgICAgICBjb250ZW50SW5zdGFuY2UgPSB0YWIuZ2V0VGFiQm9keSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBhbnlDb250ZXh0LmdldERhdGEgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGFueURhdGE6IGFueSA9IGFueUNvbnRleHQuZ2V0RGF0YSgpO1xuICAgICAgICBpZiAoYW55RGF0YSA9PT0gbnVsbCB8fCB0eXBlb2YgYW55RGF0YSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGVkaXRvciA9IGFueURhdGEuZWRpdG9yO1xuICAgICAgICBpZiAoZWRpdG9yID09PSBudWxsIHx8IHR5cGVvZiBlZGl0b3IgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlZGl0b3IgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGxldCBsYW5nRmllbGROYW1lID0gZWRpdG9yLmdldExhbmd1YWdlRmllbGQoKTtcblxuICAgICAgICAgICAgbGV0IGRhdGFPYmplY3RzID0gYW55RGF0YS5vYmplY3RzO1xuICAgICAgICAgICAgbGV0IGRlZkxhbmdPYmogPSBudWxsO1xuICAgICAgICAgICAgbGV0IGxhbmdDb250YWluZWRMaXN0OiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICAgICAgaWYgKGRhdGFPYmplY3RzICE9PSBudWxsICYmIHR5cGVvZiBkYXRhT2JqZWN0cyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBvYmogb2YgZGF0YU9iamVjdHMpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGxhbmdDb2RlID0gb2JqW2xhbmdGaWVsZE5hbWVdO1xuICAgICAgICAgICAgICAgICAgICBpZiAobGFuZ0NvZGUgIT09IG51bGwgJiYgdHlwZW9mIGxhbmdDb2RlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYobGFuZ0NvbnRhaW5lZExpc3QuaW5kZXhPZihsYW5nQ29kZSkgPD0gLTEpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmdDb250YWluZWRMaXN0LnB1c2gobGFuZ0NvZGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgbGFuZ0kxOG4gPSBlZGl0b3IuZ2V0STE4Tk9iamVjdCgnTEFORycpO1xuXG4gICAgICAgICAgICBsZXQgYWxsTGFuZ0xpc3Q6IGFueVtdID0gW107XG4gICAgICAgICAgICBsZXQgYWRkZWRMYW5nTGlzdDogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgICAgIGxldCBzZXR0aW5nID0gZWRpdG9yLmdldEFwcFNldHRpbmcoKTtcbiAgICAgICAgICAgIGlmIChzZXR0aW5nICE9PSBudWxsICYmIHR5cGVvZiBzZXR0aW5nICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIGxldCBkZWZhdWx0TGFuZ3MgPSBzZXR0aW5nLkRFRkFVTFRfREFUQV9MQU5HVUFHRVM7XG5cbiAgICAgICAgICAgICAgICBpZiAoZGVmYXVsdExhbmdzICE9PSBudWxsICYmIHR5cGVvZiBkZWZhdWx0TGFuZ3MgIT09ICd1bmRlZmluZWQnICYmIEFycmF5LmlzQXJyYXkoZGVmYXVsdExhbmdzKSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBtZXJnZSBhbGwgZGF0YSBhbmQgZGVmYXVsdCBsYW5nXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGRmTGFuZyBvZiBkZWZhdWx0TGFuZ3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsbExhbmdMaXN0LnB1c2goZGZMYW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZGVkTGFuZ0xpc3QucHVzaChkZkxhbmcuY29kZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAobGV0IGRMYW5nIG9mIGxhbmdDb250YWluZWRMaXN0KSB7XG4gICAgICAgICAgICAgICAgaWYgKGFkZGVkTGFuZ0xpc3QuaW5kZXhPZihkTGFuZykgPD0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGxhbmdMYWJlbCA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsYW5nSTE4biAhPT0gbnVsbCAmJiB0eXBlb2YgbGFuZ0kxOG4gIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBsYW5nSTE4bltkTGFuZ10gIT09IG51bGwgJiYgdHlwZW9mIGxhbmdJMThuW2RMYW5nXSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhbmdMYWJlbCA9IGxhbmdJMThuW2RMYW5nXS5uYW1lO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGFsbExhbmdMaXN0LnB1c2goeyBjb2RlOiBkTGFuZywgbGFiZWw6IGxhbmdMYWJlbCB9KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkZWRMYW5nTGlzdC5wdXNoKGRMYW5nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc29ydExhbmd1YWdlTGlzdChhbGxMYW5nTGlzdCk7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGxhbmcgb2YgYWxsTGFuZ0xpc3QpIHtcbiAgICAgICAgICAgICAgICBsZXQgbWVudUl0ZW0gPSBuZXcgQ2hlY2tNZW51SXRlbU1vZGVsKGxhbmcubGFiZWwsIGxhbmcuY29kZSwgbGFuZy5pY29uVVJMLCB0cnVlLCAoYWN0aW9uRXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY29udGVudEluc3RhbmNlICE9PSBudWxsICYmIHR5cGVvZiBjb250ZW50SW5zdGFuY2UgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaGFzRGF0YTogYm9vbGVhbiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjb250ZW50SW5zdGFuY2UubGFuZ3VhZ2VIYXNEYXRhID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzRGF0YSA9IGNvbnRlbnRJbnN0YW5jZS5sYW5ndWFnZUhhc0RhdGEobGFuZy5jb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc0RhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZW1vdmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNvbnRlbnRJbnN0YW5jZS5yZW1vdmVMYW5nV2l0aENvbmZpcm1EaWFsb2cgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudEluc3RhbmNlLnJlbW92ZUxhbmdXaXRoQ29uZmlybURpYWxvZyhsYW5nLmNvZGUpLnRoZW4oKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8hIGVkaXRvciByZW1vdmUgbGFuZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRvci5kZWxldGVEYXRhKHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY3JlYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjb250ZW50SW5zdGFuY2UuY3JlYXRlTmV3TGFuZ1dpdGhDb25maXJtRGlhbG9nID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRJbnN0YW5jZS5jcmVhdGVOZXdMYW5nV2l0aENvbmZpcm1EaWFsb2cobGFuZy5jb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBtZW51SXRlbU1vZGVsQXJyYXkucHVzaChtZW51SXRlbSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgbWVudUl0ZW1Nb2RlbEFycmF5KSB7XG4gICAgICAgICAgICAgICAgbGV0IGxJdGVtID0gaXRlbSBhcyBDaGVja01lbnVJdGVtTW9kZWw7XG4gICAgICAgICAgICAgICAgaWYgKGxhbmdDb250YWluZWRMaXN0LmluZGV4T2YobEl0ZW0ucHJlZml4TGFiZWwpID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgbEl0ZW0uY2hlY2tlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IG1vZGVsOiBNZW51TW9kZWwgPSBudWxsO1xuICAgICAgICBpZihtZW51SXRlbU1vZGVsQXJyYXkubGVuZ3RoID49IDEpe1xuICAgICAgICAgICAgbW9kZWwgPSBuZXcgTWVudU1vZGVsKERlZmF1bHRNZW51LCAnTGFuZ3VhZ2UgRGF0YScsIG1lbnVJdGVtTW9kZWxBcnJheSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbW9kZWw7XG4gICAgfVxufVxuIl19