| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193 |
- (function() {
- var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
- var __module = nodeEnv ? module : {exports:{}};
- var __filename = 'preview-scripts/assets/script/mk/utils/StringUtil.js';
- var __require = nodeEnv ? function (request) {
- return cc.require(request);
- } : function (request) {
- return __quick_compile_project__.require(request, __filename);
- };
- function __define (exports, require, module) {
- if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict";
- cc._RF.push(module, '4c029tekfZLEKj9xvuITEwf', 'StringUtil');
- // script/mk/utils/StringUtil.ts
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- /**
- * 字符串工具类
- * @author 薛鸿潇
- */
- var StringUtil = /** @class */ (function () {
- function StringUtil() {
- /**
- * 颜色表
- */
- this.str_color = {
- /** 红色1 */
- red1: '#be2c1d',
- /** 棕色1 */
- bro1: '#4E301B',
- };
- }
- /**
- * 将数据表里的字符串转成相对颜色
- * @param 需要转换的字符串 比如 "你好[red中国]" 其中“中国”为红色...你好[red{s40}中国]
- * @return 返回一个富文本字符串
- * @author xhx
- */
- StringUtil.prototype.getTextByStringInData = function (str) {
- var newStr = str;
- var i = 0;
- var begin;
- var end;
- var sub;
- var searchValue;
- var replaceValue;
- var color_key;
- // 解析颜色
- while (i < str.length) {
- begin = str.indexOf("[", i);
- end = str.indexOf("]", begin);
- if (begin != -1 && end != -1) //把[redXXX]转成富文本
- {
- searchValue = str.slice(begin, end + 1);
- // 颜色内容
- color_key = str.slice(begin + 1, begin + 5);
- var color_str = this.str_color[color_key];
- if (color_str) {
- sub = str.slice(begin + 6, end);
- replaceValue = this.getColorStringColor(sub, color_str);
- newStr = newStr.replace(searchValue, replaceValue);
- }
- i = end;
- }
- else {
- break;
- }
- }
- var size_index = 0;
- var size_begin = 0;
- var size_end = 0;
- var size_searchValue;
- // let size_sub: string
- // 解析尺寸{40=100%},100%是40尺寸.例子2:[bro对目标造成][red{40=104%}][bro攻击伤害]
- while (size_index < newStr.length) {
- size_begin = newStr.indexOf("{", size_index);
- size_end = newStr.indexOf("}", size_begin);
- if (size_begin != -1 && size_end != -1) {
- // 尺寸内容
- size_searchValue = newStr.slice(size_begin, size_end + 1);
- var size_value = newStr.slice(size_begin + 1, size_begin + 3);
- var size_sub = size_searchValue.slice(4, size_searchValue.length - 1);
- if (size_sub) {
- var new_value = '<size = ' + size_value + '>' + size_sub + '</color>';
- newStr = newStr.replace(size_searchValue, new_value);
- }
- size_index = size_end;
- }
- else {
- break;
- }
- }
- return newStr;
- };
- /**按品质转换字符串颜色 */
- StringUtil.prototype.getColorStringColor = function (str, color_str) {
- if (str === void 0) { str = '#FFFFFF'; }
- return '<color=' + color_str + '>' + str + '</color>';
- };
- /**
- * 阿拉伯数字 转 汉字
- * @param num 要转的数字
- * @returns 汉字数字
- * @author xhx
- */
- StringUtil.prototype.arabicToChinese = function (num) {
- var unit_section = ['', '万', '亿', '万亿', '亿亿'];
- var unit_chn = ['', '十', '百', '千'];
- var chars = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
- var unit_index = 0;
- var str_ins = '', zh_str = '';
- var need_zero = false;
- var SectionToChinese = function (section) {
- var _zh_str = '';
- var _unit_index = 0;
- var zero = true;
- while (section > 0) {
- var v = section % 10;
- var _str_ins = '';
- if (v === 0) {
- if (!zero) {
- zero = true;
- _zh_str = chars[v] + _zh_str;
- }
- }
- else {
- zero = false;
- if (_unit_index !== 1 || section > 1) {
- _str_ins = chars[v];
- }
- _str_ins += unit_chn[_unit_index];
- _zh_str = _str_ins + _zh_str;
- }
- ++_unit_index;
- section = Math.floor(section / 10);
- }
- return _zh_str;
- };
- if (num === 0) {
- return chars[0];
- }
- while (num > 0) {
- var section = num % 10000;
- if (need_zero) {
- zh_str = chars[0] + zh_str;
- }
- str_ins = SectionToChinese(section);
- str_ins += (section !== 0) ? unit_section[unit_index] : unit_section[0];
- zh_str = str_ins + zh_str;
- need_zero = (section < 1000) && (section > 0);
- num = Math.floor(num / 10000);
- ++unit_index;
- }
- return zh_str;
- };
- /**
- * 限制字符串长度,超出部分用...代替
- * @param str 要拆分的字符串
- * @param max_len 最大长度
- * @returns 被限制后的字符串
- * @author xhx
- */
- StringUtil.prototype.getNewLimitStr = function (str, max_len) {
- var arr_str = str.split("");
- var new_str = '';
- max_len = arr_str.length >= max_len ? max_len : arr_str.length; //字符串不能超出的长度,否则用...显示
- for (var i = 0; i < max_len; i++) {
- if (i == (max_len - 1)) {
- new_str += '...';
- }
- else {
- new_str += arr_str[i];
- }
- }
- return new_str;
- };
- return StringUtil;
- }());
- exports.default = StringUtil;
- cc._RF.pop();
- }
- if (nodeEnv) {
- __define(__module.exports, __require, __module);
- }
- else {
- __quick_compile_project__.registerModuleFunc(__filename, function () {
- __define(__module.exports, __require, __module);
- });
- }
- })();
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcc2NyaXB0XFxta1xcdXRpbHNcXFN0cmluZ1V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7O0dBR0c7QUFDSDtJQUFBO1FBRUk7O1dBRUc7UUFDSyxjQUFTLEdBQUc7WUFDaEIsVUFBVTtZQUNWLElBQUksRUFBRSxTQUFTO1lBQ2YsVUFBVTtZQUNWLElBQUksRUFBRSxTQUFTO1NBQ2xCLENBQUE7SUF3SkwsQ0FBQztJQXRKRzs7Ozs7T0FLRztJQUNJLDBDQUFxQixHQUE1QixVQUE2QixHQUFXO1FBQ3BDLElBQUksTUFBTSxHQUFXLEdBQUcsQ0FBQztRQUN6QixJQUFJLENBQUMsR0FBVyxDQUFDLENBQUM7UUFDbEIsSUFBSSxLQUFhLENBQUM7UUFDbEIsSUFBSSxHQUFXLENBQUM7UUFDaEIsSUFBSSxHQUFXLENBQUM7UUFDaEIsSUFBSSxXQUFtQixDQUFDO1FBQ3hCLElBQUksWUFBb0IsQ0FBQztRQUN6QixJQUFJLFNBQWlCLENBQUM7UUFFdEIsT0FBTztRQUNQLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUU7WUFDbkIsS0FBSyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzVCLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM5QixJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLEVBQUMsZ0JBQWdCO2FBQzdDO2dCQUNJLFdBQVcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hDLE9BQU87Z0JBQ1AsU0FBUyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQzVDLElBQUksU0FB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QUM7SUFDbkIsQ0FBQztJQUNMLGlCQUFDO0FBQUQsQ0FsS0EsQUFrS0MsSUFBQSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiDlrZfnrKbkuLLlt6XlhbfnsbtcclxuICogQGF1dGhvciDolpvpuL/mvYdcclxuICovXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN0cmluZ1V0aWwge1xyXG5cclxuICAgIC8qKiBcclxuICAgICAqIOminOiJsuihqFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHN0cl9jb2xvciA9IHtcclxuICAgICAgICAvKiog57qi6ImyMSAqL1xyXG4gICAgICAgIHJlZDE6ICcjYmUyYzFkJyxcclxuICAgICAgICAvKiog5qOV6ImyMSAqL1xyXG4gICAgICAgIGJybzE6ICcjNEUzMDFCJyxcclxuICAgIH1cclxuXHJcbiAgICAvKiogXHJcbiAgICAgKiDlsIbmlbDmja7ooajph4znmoTlrZfnrKbkuLLovazmiJDnm7jlr7npopzoibJcclxuICAgICAqIEBwYXJhbSDpnIDopoHovazmjaLnmoTlrZfnrKbkuLIg5q+U5aaCICBcIuS9oOWlvVtyZWTkuK3lm71dXCIg5YW25Lit4oCc5Lit5Zu94oCd5Li657qi6ImyLi4u5L2g5aW9W3JlZHtzNDB95Lit5Zu9XVxyXG4gICAgICogQHJldHVybiDov5Tlm57kuIDkuKrlr4zmlofmnKzlrZfnrKbkuLJcclxuICAgICAqIEBhdXRob3IgeGh4XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRUZXh0QnlTdHJpbmdJbkRhdGEoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHZhciBuZXdTdHI6IHN0cmluZyA9IHN0cjtcclxuICAgICAgICB2YXIgaTogbnVtYmVyID0gMDtcclxuICAgICAgICB2YXIgYmVnaW46IG51bWJlcjtcclxuICAgICAgICB2YXIgZW5kOiBudW1iZXI7XHJcbiAgICAgICAgdmFyIHN1Yjogc3RyaW5nO1xyXG4gICAgICAgIHZhciBzZWFyY2hWYWx1ZTogc3RyaW5nO1xyXG4gICAgICAgIHZhciByZXBsYWNlVmFsdWU6IHN0cmluZztcclxuICAgICAgICB2YXIgY29sb3Jfa2V5OiBzdHJpbmc7XHJcblxyXG4gICAgICAgIC8vIOino+aekOminOiJslxyXG4gICAgICAgIHdoaWxlIChpIDwgc3RyLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBiZWdpbiA9IHN0ci5pbmRleE9mKFwiW1wiLCBpKTtcclxuICAgICAgICAgICAgZW5kID0gc3RyLmluZGV4T2YoXCJdXCIsIGJlZ2luKTtcclxuICAgICAgICAgICAgaWYgKGJlZ2luICE9IC0xICYmIGVuZCAhPSAtMSkvL+aKiltyZWRYWFhd6L2s5oiQ5a+M5paH5pysXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHNlYXJjaFZhbHVlID0gc3RyLnNsaWNlKGJlZ2luLCBlbmQgKyAxKTtcclxuICAgICAgICAgICAgICAgIC8vIOminOiJsuWGheWuuVxyXG4gICAgICAgICAgICAgICAgY29sb3Jfa2V5ID0gc3RyLnNsaWNlKGJlZ2luICsgMSwgYmVnaW4gKyA1KTtcclxuICAgICAgICAgICAgICAgIGxldCBjb2xvcl9zdHIgPSB0aGlzLnN0cl9jb2xvcltjb2xvcl9rZXldXHJcbiAgICAgICAgICAgICAgICBpZiAoY29sb3Jfc3RyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3ViID0gc3RyLnNsaWNlKGJlZ2luICsgNiwgZW5kKTtcclxuICAgICAgICAgICAgICAgICAgICByZXBsYWNlVmFsdWUgPSB0aGlzLmdldENvbG9yU3RyaW5nQ29sb3Ioc3ViLCBjb2xvcl9zdHIpO1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld1N0ciA9IG5ld1N0ci5yZXBsYWNlKHNlYXJjaFZhbHVlLCByZXBsYWNlVmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaSA9IGVuZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBzaXplX2luZGV4OiBudW1iZXIgPSAwO1xyXG4gICAgICAgIGxldCBzaXplX2JlZ2luOiBudW1iZXIgPSAwO1xyXG4gICAgICAgIGxldCBzaXplX2VuZDogbnVtYmVyID0gMDtcclxuICAgICAgICBsZXQgc2l6ZV9zZWFyY2hWYWx1ZTogc3RyaW5nO1xyXG4gICAgICAgIC8vIGxldCBzaXplX3N1Yjogc3RyaW5nXHJcblxyXG4gICAgICAgIC8vIOino+aekOWwuuWvuHs0MD0xMDAlfSwxMDAl5pivNDDlsLrlr7gu5L6L5a2QMu+8mlticm/lr7nnm67moIfpgKDmiJBdW3JlZHs0MD0xMDQlfV1bYnJv5pS75Ye75Lyk5a6zXVxyXG4gICAgICAgIHdoaWxlIChzaXplX2luZGV4IDwgbmV3U3RyLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBzaXplX2JlZ2luID0gbmV3U3RyLmluZGV4T2YoXCJ7XCIsIHNpemVfaW5kZXgpO1xyXG4gICAgICAgICAgICBzaXplX2VuZCA9IG5ld1N0ci5pbmRleE9mKFwifVwiLCBzaXplX2JlZ2luKTtcclxuICAgICAgICAgICAgaWYgKHNpemVfYmVnaW4gIT0gLTEgJiYgc2l6ZV9lbmQgIT0gLTEpIHtcclxuICAgICAgICAgICAgICAgIC8vIOWwuuWvuOWGheWuuVxyXG4gICAgICAgICAgICAgICAgc2l6ZV9zZWFyY2hWYWx1ZSA9IG5ld1N0ci5zbGljZShzaXplX2JlZ2luLCBzaXplX2VuZCArIDEpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHNpemVfdmFsdWUgPSBuZXdTdHIuc2xpY2Uoc2l6ZV9iZWdpbiArIDEsIHNpemVfYmVnaW4gKyAzKTtcclxuICAgICAgICAgICAgICAgIGxldCBzaXplX3N1YiA9IHNpemVfc2VhcmNoVmFsdWUuc2xpY2UoNCwgc2l6ZV9zZWFyY2hWYWx1ZS5sZW5ndGggLSAxKTtcclxuICAgICAgICAgICAgICAgIGlmIChzaXplX3N1Yikge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBuZXdfdmFsdWUgPSAnPHNpemUgPSAnICsgc2l6ZV92YWx1ZSArICc+JyArIHNpemVfc3ViICsgJzwvY29sb3I+JztcclxuICAgICAgICAgICAgICAgICAgICBuZXdTdHIgPSBuZXdTdHIucmVwbGFjZShzaXplX3NlYXJjaFZhbHVlLCBuZXdfdmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHNpemVfaW5kZXggPSBzaXplX2VuZDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuZXdTdHI7XHJcbiAgICB9XHJcbiAgICAvKirmjInlk4HotKjovazmjaLlrZfnrKbkuLLpopzoibIgKi9cclxuICAgIHByaXZhdGUgZ2V0Q29sb3JTdHJpbmdDb2xvcihzdHI6IHN0cmluZyA9ICcjRkZGRkZGJywgY29sb3Jfc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiAnPGNvbG9yPScgKyBjb2xvcl9zdHIgKyAnPicgKyBzdHIgKyAnPC9jb2xvcj4nO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIOmYv+aLieS8r+aVsOWtlyDovawg5rGJ5a2XXHJcbiAgICAgKiBAcGFyYW0gbnVtIOimgei9rOeahOaVsOWtl1xyXG4gICAgICogQHJldHVybnMg5rGJ5a2X5pWw5a2XXHJcbiAgICAgKiBAYXV0aG9yIHhoeFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYXJhYmljVG9DaGluZXNlKG51bTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgICAgICBsZXQgdW5pdF9zZWN0aW9uID0gWycnLCAn5LiHJywgJ+S6vycsICfkuIfkur8nLCAn5Lq/5Lq/J107XHJcbiAgICAgICAgbGV0IHVuaXRfY2huID0gWycnLCAn5Y2BJywgJ+eZvicsICfljYMnXTtcclxuICAgICAgICBsZXQgY2hhcnMgPSBbJ+mbticsICfkuIAnLCAn5LqMJywgJ+S4iScsICflm5snLCAn5LqUJywgJ+WFrScsICfkuIMnLCAn5YWrJywgJ+S5nSddO1xyXG4gICAgICAgIGxldCB1bml0X2luZGV4ID0gMDtcclxuICAgICAgICBsZXQgc3RyX2lucyA9ICcnLCB6aF9zdHIgPSAnJztcclxuICAgICAgICBsZXQgbmVlZF96ZXJvID0gZmFsc2U7XHJcblxyXG4gICAgICAgIGxldCBTZWN0aW9uVG9DaGluZXNlID0gZnVuY3Rpb24gKHNlY3Rpb24pIHtcclxuICAgICAgICAgICAgbGV0IF96aF9zdHIgPSAnJztcclxuICAgICAgICAgICAgbGV0IF91bml0X2luZGV4ID0gMDtcclxuICAgICAgICAgICAgbGV0IHplcm8gPSB0cnVlO1xyXG4gICAgICAgICAgICB3aGlsZSAoc2VjdGlvbiA+IDApIHtcclxuICAgICAgICAgICAgICAgIGxldCB2ID0gc2VjdGlvbiAlIDEwO1xyXG4gICAgICAgICAgICAgICAgbGV0IF9zdHJfaW5zID0gJyc7XHJcbiAgICAgICAgICAgICAgICBpZiAodiA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghemVybykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB6ZXJvID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX3poX3N0ciA9IGNoYXJzW3ZdICsgX3poX3N0cjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHplcm8gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoX3VuaXRfaW5kZXggIT09IDEgfHwgc2VjdGlvbiA+IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX3N0cl9pbnMgPSBjaGFyc1t2XTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIF9zdHJfaW5zICs9IHVuaXRfY2huW191bml0X2luZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICBfemhfc3RyID0gX3N0cl9pbnMgKyBfemhfc3RyO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgKytfdW5pdF9pbmRleDtcclxuICAgICAgICAgICAgICAgIHNlY3Rpb24gPSBNYXRoLmZsb29yKHNlY3Rpb24gLyAxMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIF96aF9zdHI7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgaWYgKG51bSA9PT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gY2hhcnNbMF07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB3aGlsZSAobnVtID4gMCkge1xyXG4gICAgICAgICAgICBsZXQgc2VjdGlvbiA9IG51bSAlIDEwMDAwO1xyXG4gICAgICAgICAgICBpZiAobmVlZF96ZXJvKSB7XHJcbiAgICAgICAgICAgICAgICB6aF9zdHIgPSBjaGFyc1swXSArIHpoX3N0cjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBzdHJfaW5zID0gU2VjdGlvblRvQ2hpbmVzZShzZWN0aW9uKTtcclxuICAgICAgICAgICAgc3RyX2lucyArPSAoc2VjdGlvbiAhPT0gMCkgPyB1bml0X3NlY3Rpb25bdW5pdF9pbmRleF0gOiB1bml0X3NlY3Rpb25bMF07XHJcbiAgICAgICAgICAgIHpoX3N0ciA9IHN0cl9pbnMgKyB6aF9zdHI7XHJcbiAgICAgICAgICAgIG5lZWRfemVybyA9IChzZWN0aW9uIDwgMTAwMCkgJiYgKHNlY3Rpb24gPiAwKTtcclxuICAgICAgICAgICAgbnVtID0gTWF0aC5mbG9vcihudW0gLyAxMDAwMCk7XHJcbiAgICAgICAgICAgICsrdW5pdF9pbmRleDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB6aF9zdHI7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIOmZkOWItuWtl+espuS4sumVv+W6pu+8jOi2heWHuumDqOWIhueUqC4uLuS7o+abv1xyXG4gICAgICogQHBhcmFtIHN0ciDopoHmi4bliIbnmoTlrZfnrKbkuLJcclxuICAgICAqIEBwYXJhbSBtYXhfbGVuIOacgOWkp+mVv+W6plxyXG4gICAgICogQHJldHVybnMg6KKr6ZmQ5Yi25ZCO55qE5a2X56ym5LiyXHJcbiAgICAgKiBAYXV0aG9yIHhoeFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0TmV3TGltaXRTdHIoc3RyOiBzdHJpbmcsIG1heF9sZW46IG51bWJlcikge1xyXG4gICAgICAgIGxldCBhcnJfc3RyID0gc3RyLnNwbGl0KFwiXCIpO1xyXG4gICAgICAgIGxldCBuZXdfc3RyID0gJyc7XHJcbiAgICAgICAgbWF4X2xlbiA9IGFycl9zdHIubGVuZ3RoID49IG1heF9sZW4gPyBtYXhfbGVuIDogYXJyX3N0ci5sZW5ndGg7Ly/lrZfnrKbkuLLkuI3og73otoXlh7rnmoTplb/luqbvvIzlkKbliJnnlKguLi7mmL7npLpcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1heF9sZW47IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoaSA9PSAobWF4X2xlbiAtIDEpKSB7XHJcbiAgICAgICAgICAgICAgICBuZXdfc3RyICs9ICcuLi4nO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgbmV3X3N0ciArPSBhcnJfc3RyW2ldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuZXdfc3RyO1xyXG4gICAgfVxyXG59XHJcblxyXG5cclxuIl19
|