diff --git a/hwe/js/select_npc.js b/hwe/js/select_npc.js
index 02bad7f0..7e3b42f3 100644
--- a/hwe/js/select_npc.js
+++ b/hwe/js/select_npc.js
@@ -1,353 +1,2 @@
-var templateGeneralCard =
- '
\
-
<%name%>
\
-

\
-
<%leadership%> / <%strength%> / <%intel%>
\
- <%nation%>
\
- <%personalText%>
\
- <%specialText%> / <%special2Text%>
\
-
\
-
\
-
';
-
-var templateSpecial =
- '<%text%>\
- \
- <%info%>\
- \
-\
-';
-
-var templateGeneralRow =
- '\
-  | \
- <%name%><%nameAux%> | \
- <%age%>세 | \
- <%personalWithTooltip%> | \
- <%specialDomesticWithTooltip%> / <%speicalWarWithTooltip%> | \
- Lv <%explevel%> | \
- <%nation%> | \
- <%experience%> | \
- <%dedication%> | \
- <%officerLevel%> | \
- <%total%> | \
- <%leadership%> | \
- <%strength%> | \
- <%intel%> | \
- <%killturn%> | \
-
';
-
-function pickGeneral() {
- $btn = $(this);
-
- if (!confirm('빙의할까요? : {0}'.format($btn.data('name')))) {
- return false;
- }
-
- $.post({
- url: 'j_select_npc.php',
- dataType: 'json',
- data: {
- pick: $btn.val()
- }
- }).then(function(result) {
- if (!result.result) {
- alert(result.reason);
- location.refresh();
- }
-
- alert('빙의에 성공했습니다.');
- location.href = './';
- });
- return false;
-}
-
-function updateOutdateTimer() {
- var $validUntilText = $('#valid_until_text');
- var now = Date.now();
- var validUntil = $validUntilText.data('until');
- if (validUntil <= 0) {
- return;
- } else if (validUntil < now) {
- $validUntilText.data('until', 0);
- $('#valid_until').hide();
- $('#outdate_token').show();
- return;
- } else if (validUntil - now <= 30000) {
- $validUntilText.css('color', "rgb(255, {0}, {0})".format(255 * (validUntil - now) / 30000));
- }
-
- setTimeout(updateOutdateTimer, 1000);
-}
-
-function updatePickMoreTimer() {
- var $btn = $('#btn_pick_more');
-
- var now = Date.now();
- var remain = ($btn.data('available') - now) / 1000;
- if (remain <= 0) {
- $btn.prop('disabled', false)
- $btn.html('다른 장수 보기');
- return;
- }
-
- $btn.html('다른 장수 보기({0}초)'.format(Math.ceil(remain)));
-
- setTimeout(updatePickMoreTimer, 250);
-}
-
-function printGenerals(value) {
- $('.card_holder').empty();
- $('#valid_until').show();
- $('#valid_until_text').html(value.validUntil).data('until', (new Date(value.validUntil)).getTime()).css('color', 'white');
- $('#outdate_token').hide();
- var time = Date.now() + value.pickMoreSeconds * 1000;
- $('#btn_pick_more').data('available', time).prop('disabled', true);
-
- var pick = $.map(value.pick, function(value, key) {
- return value;
- });
-
- pick.sort(function(lhs, rhs) {
- var lsum = lhs.leadership + lhs.strength + lhs.intel;
- var rsum = rhs.leadership + rhs.strength + rhs.intel;
- return lsum - rsum;
- });
-
- $.each(pick, function(idx, cardData) {
- cardData.iconPath = getIconPath(cardData.imgsvr, cardData.picture);
- if (cardData.special in specialInfo) {
- cardData.specialText = TemplateEngine(templateSpecial, {
- text: cardData.special,
- info: specialInfo[cardData.special]
- });
- } else {
- cardData.specialText = cardData.special;
- }
-
- if (cardData.special2 in specialInfo) {
- cardData.special2Text = TemplateEngine(templateSpecial, {
- text: cardData.special2,
- info: specialInfo[cardData.special2]
- });
- } else {
- cardData.special2Text = cardData.special2;
- }
-
- if (cardData.personal in characterInfo) {
- cardData.personalText = TemplateEngine(templateSpecial, {
- text: cardData.personal,
- info: characterInfo[cardData.personal]
- });
- } else {
- cardData.personalText = cardData.personal;
- }
-
-
- var $card = $(TemplateEngine(templateGeneralCard, cardData));
-
- $('.card_holder').append($card);
- $card.find('.select_btn').click(pickGeneral);
- $card.find('.obj_tooltip').tooltip({
- title: function() {
- return $.trim($(this).find('.tooltiptext').html());
- },
- html: true
- });
- });
-
- updatePickMoreTimer();
- updateOutdateTimer();
-}
-
-function printGeneralList(value) {
- var tokenList = value.token;
- var generalList = $.map(value.list, function(general) {
- general = {
- no: general[0],
- picture: general[1],
- imgsvr: general[2],
- npc: general[3],
- age: general[4],
- nation: general[5],
- special: general[6],
- special2: general[7],
- personal: general[8],
- name: general[9],
- ownerName: general[10],
- injury: general[11],
- leadership: general[12],
- lbonus: general[13],
- strength: general[14],
- intel: general[15],
- explevel: general[16],
- experience: general[17],
- dedication: general[18],
- officerLevel: general[19],
- killturn: general[20],
- connect: general[21],
- reserved: 0
- };
- if (general.npc < 2) {
- general.reserved = 2;
- }
- if (general.no in tokenList) {
- general.reserved = 1;
- }
-
- general.userCSS = "";
- general.nameAux = "";
-
- if (general.reserved == 1) {
- general.userCSS = 'color:violet';
- } else if (general.npc >= 2) {
- general.userCSS = 'color:cyan';
- } else if (general.npc == 1) {
- general.userCSS = 'color:skyblue';
- }
-
- if (general.ownerName) {
- general.nameAux += '
({0})'.format(general.ownerName);
- }
-
- if (general.reserved == 1) {
- general.nameAux += '
({0}회)'.format(tokenList[general.no]);
- }
-
-
- general.total = general.leadership + general.strength + general.intel;
- general.iconPath = getIconPath(general.imgsvr, general.picture);
-
- general.specialDomesticWithTooltip = TemplateEngine(templateSpecial, {
- text: general.special,
- info: specialInfo[general.special]
- });
-
- general.speicalWarWithTooltip = TemplateEngine(templateSpecial, {
- text: general.special2,
- info: specialInfo[general.special2]
- });
-
- general.personalWithTooltip = TemplateEngine(templateSpecial, {
- text: general.personal,
- info: characterInfo[general.personal]
- });
-
- return general;
- });
-
- generalList.sort(function(lhs, rhs) {
- if (lhs.reserved > rhs.reserved) {
- return -1;
- }
- if (lhs.reserved < rhs.reserved) {
- return 1;
- }
- if (lhs.total != rhs.total) {
- return rhs.total - lhs.total;
- }
- if (lhs.leadership != rhs.leadership) {
- return rhs.leadership - lhs.total;
- }
-
- if (lhs.name < rhs.name) {
- return -1;
- }
- if (lhs.name > rhs.name) {
- return 1;
- }
- return 0;
- });
-
- window.generalList = generalList;
- _printGeneralList(true);
-}
-
-function _printGeneralList(clear) {
- var $generalTable = $('#general_list');
- if (clear) {
- $generalTable.empty();
- $generalTable.data('lastIdx', 0);
- $('#row_print_more').show();
- }
-
- generalList = window.generalList;
-
- var idxFrom = $generalTable.data('lastIdx');
- var idxTo = Math.min(idxFrom + 50, generalList.length);
- $generalTable.data('lastIdx', idxTo);
-
- for (var idx = idxFrom; idx < idxFrom + 50; idx++) {
- var general = generalList[idx];
- $generalTable.append(TemplateEngine(templateGeneralRow, general));
- }
-
- if (idxTo == generalList.length) {
- $('#row_print_more').hide();
- }
-
- $generalTable.find('.obj_tooltip').tooltip({
- title: function() {
- return $.trim($(this).find('.tooltiptext').html());
- },
- html: true
- });
- $('#tb_general_list').show();
-}
-
-$(function($) {
- window.generalList = [];
-
- $.post('j_get_select_npc_token.php').then(function(value) {
- if (!value.result) {
- alert(value.reason);
- return;
- }
-
- console.log(value);
- printGenerals(value);
- });
-
- $('#btn_pick_more').click(function() {
- var generals = $.map($('.keep_select:checked'), function(value) {
- return $(value).val();
- });
- console.log(generals);
- $.post({
- url: 'j_get_select_npc_token.php',
- dataType: 'json',
- data: {
- refresh: true,
- keep: generals
- }
- }).then(function(result) {
- if (!result.result) {
- alert(result.reason);
- location.refresh();
- }
- console.log(result);
- printGenerals(result);
- });
- });
-
- $('#btn_load_general_list').click(function() {
- $.post({
- url: 'j_get_general_list.php',
- dataType: 'json',
- data: {
- with_token: true
- }
- }).then(function(result) {
- if (!result.result) {
- alert(result.reason);
- return false;
- }
- printGeneralList(result);
- });
- });
-
- $('#btn_print_more').click(function() {
- _printGeneralList();
- })
-
-});
\ No newline at end of file
+(()=>{"use strict";var t,e={138:(t,e,n)=>{n(5666),n(2222),n(1249),n(2707),n(9826),n(3210),n(1539),n(8674);var r=n(9669),o=n.n(r);function a(t){return(a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function l(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:"";return i(this,o),m(p(t=r.call(this,e)),"name","RuntimeError"),t.message=e,t}return e=o,(n=[{key:"toString",value:function(){return this.message?this.name+": "+this.message:this.name}}])&&l(e.prototype,n),o}(f(Error)));n(9755),n(3734),o().defaults.headers.common["X-Requested-With"]="XMLHttpRequest";var g,w=(g={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/","`":"`","=":"="},function(t){return String(t).replace(/[&<>"'`=/]/g,(function(t){return g[t]}))});function _(t){return window.linkifyStr(t,{})}function x(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=/<%(.+?)%>/g,r=/(^( )?(var|if|for|else|switch|case|break|{|}|;))(.*)?/g,o=["with(obj) { var r=[];\n"],a=0,i=function t(e,n){return n?o.push(e.match(r)?e+"\n":"r.push("+e+");\n"):o.push(""!=e?'r.push("'+e.replace(/"/g,'\\"')+'");\n':""),t};for(e.e=w,e.linkifyStr=_;;){var l=n.exec(t);if(!l)break;i(t.slice(a,l.index))(l[1],!0),a=l.index+l[0].length}i(t.substr(a,t.length-a)),o.push('return r.join(""); }');var c=o.join("").replace(/[\r\t\n]/g," ");try{return new Function("obj",c).apply(e,[e])}catch(t){throw console.error("'"+t.message+"'"," in \n\nCode:\n",o,"\n"),t}}function k(t,e){return t?window.pathConfig.root+"/d_pic/"+e:window.pathConfig.sharedIcon+"/"+e}function j(){alert("작업을 실패했습니다.")}String.prototype.format=function(){for(var t=arguments.length,e=new Array(t),n=0;n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,l=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return i=t.done,t},e:function(t){l=!0,a=t},f:function(){try{i||null==n.return||n.return()}finally{if(l)throw a}}}}function D(t,e){if(t){if("string"==typeof t)return M(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?M(t,e):void 0}}function M(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n <%name%>

<%leadership%> / <%strength%> / <%intel%>
<%nation%>
<%personalText%>
<%specialText%> / <%special2Text%>
',e));$(".card_holder").append(n),n.find(".select_btn").on("click",U),n.find(".obj_tooltip").tooltip({title:function(){return $.trim($(this).find(".tooltiptext").html())},html:!0})})),H(),X()}function G(t){var e=$("#general_list");t&&(e.empty(),e.data("lastIdx",0),$("#row_print_more").show());var n=window.generalList,r=e.data("lastIdx"),o=Math.min(r+50,n.length);e.data("lastIdx",o);for(var a=r;a  | <%name%><%nameAux%> | <%age%>세 | <%personalWithTooltip%> | <%specialDomesticWithTooltip%> / <%specialWarWithTooltip%> | Lv <%explevel%> | <%nation%> | <%experience%> | <%dedication%> | <%officerLevel%> | <%total%> | <%leadership%> | <%strength%> | <%intel%> | <%killturn%> | ',i))}o==n.length&&$("#row_print_more").hide(),e.find(".obj_tooltip").tooltip({title:function(){return $.trim($(this).find(".tooltiptext").html())},html:!0}),$("#tb_general_list").show()}$((function(t){window.generalList=[],t.post("j_get_select_npc_token.php").then((function(t){t.result?(console.log(t),z(t)):alert(t.reason)}),j),t("#btn_pick_more").click((function(){var e=t(".keep_select:checked").map((function(){return L(t(this).val())})).toArray();console.log(e),t.post({url:"j_get_select_npc_token.php",dataType:"json",data:{refresh:!0,keep:e}}).then((function(t){t.result||(alert(t.reason),location.reload()),console.log(t),z(t)}),j)})),t("#btn_load_general_list").click((function(){t.post({url:"j_get_general_list.php",dataType:"json",data:{with_token:!0}}).then((function(t){if(!t.result)return alert(t.reason),!1;var e,n,r;n=(e=t).token,(r=e.list.map((function(t){var e={no:t[0],picture:t[1],imgsvr:t[2],npc:t[3],age:t[4],nation:t[5],special:t[6],special2:t[7],personal:t[8],name:t[9],ownerName:t[10],injury:t[11],leadership:t[12],lbonus:t[13],strength:t[14],intel:t[15],explevel:t[16],experience:t[17],dedication:t[18],officerLevel:t[19],killturn:t[20],connect:t[21],reserved:0};return e.npc<2&&(e.reserved=2),e.no in n&&(e.reserved=1),e.userCSS="",e.nameAux="",1==e.reserved?e.userCSS="color:violet":e.npc>=2?e.userCSS="color:cyan":1==e.npc&&(e.userCSS="color:skyblue"),e.ownerName&&(e.nameAux+="
(".concat(e.ownerName,")")),1==e.reserved&&(e.nameAux+="
(".concat(n[e.no],"회)")),e.total=e.leadership+e.strength+e.intel,e.iconPath=k(e.imgsvr,e.picture),e.specialDomesticWithTooltip=x(q,{text:e.special,info:specialInfo[e.special]}),e.specialWarWithTooltip=x(q,{text:e.special2,info:specialInfo[e.special2]}),e.personalWithTooltip=x(q,{text:e.personal,info:characterInfo[e.personal]}),e}))).sort((function(t,e){return t.reserved>e.reserved?-1:t.reservede.name?1:0})),window.generalList=r,G(!0)}),j)})),t("#btn_print_more").click((function(){G()}))}))}},n={};function r(t){var o=n[t];if(void 0!==o)return o.exports;var a=n[t]={id:t,loaded:!1,exports:{}};return e[t].call(a.exports,a,a.exports,r),a.loaded=!0,a.exports}r.m=e,t=[],r.O=(e,n,o,a)=>{if(!n){var i=1/0;for(s=0;s=a)&&Object.keys(r.O).every((t=>r.O[t](n[c])))?n.splice(c--,1):(l=!1,a0&&t[s-1][2]>a;s--)t[s]=t[s-1];t[s]=[n,o,a]},r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),r.j=520,(()=>{var t={520:0};r.O.j=e=>0===t[e];var e=(e,n)=>{var o,a,[i,l,c]=n,u=0;for(o in l)r.o(l,o)&&(r.m[o]=l[o]);if(c)var s=c(r);for(e&&e(n);ur(138)));o=r.O(o)})();
+//# sourceMappingURL=select_npc.js.map
\ No newline at end of file
diff --git a/hwe/js/select_npc.js.map b/hwe/js/select_npc.js.map
new file mode 100644
index 00000000..24645292
--- /dev/null
+++ b/hwe/js/select_npc.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"select_npc.js","mappings":"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","sources":["webpack://hidche_lib/webpack/runtime/chunk loaded","webpack://hidche_lib/./hwe/ts/util.ts","webpack://hidche_lib/./hwe/ts/common_legacy.ts","webpack://hidche_lib/./hwe/ts/util/convertFormData.ts","webpack://hidche_lib/./hwe/ts/util/unwrap_any.ts","webpack://hidche_lib/./hwe/ts/select_npc.ts","webpack://hidche_lib/webpack/bootstrap","webpack://hidche_lib/webpack/runtime/compat get default export","webpack://hidche_lib/webpack/runtime/define property getters","webpack://hidche_lib/webpack/runtime/global","webpack://hidche_lib/webpack/runtime/hasOwnProperty shorthand","webpack://hidche_lib/webpack/runtime/make namespace object","webpack://hidche_lib/webpack/runtime/node module decorator","webpack://hidche_lib/webpack/runtime/runtimeId","webpack://hidche_lib/webpack/runtime/jsonp chunk loading","webpack://hidche_lib/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","type ErrType = { new(msg?: string): T }\nexport type Nullable = T | null | undefined\n\nexport class RuntimeError extends Error {\n public name = 'RuntimeError';\n constructor(public message: string = '') {\n super(message);\n }\n toString(): string {\n if (this.message) {\n return this.name + ': ' + this.message;\n }\n else {\n return this.name;\n }\n }\n}\n\nexport class NotNullExpected extends RuntimeError {\n public name = 'NotNullExpected';\n}\n\nexport function unwrap(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result;\n}\n\nexport function unwrap_err(result: Nullable, errType: ErrType, errMsg?: string): T {\n if (result === null || result === undefined) {\n throw new errType(errMsg);\n }\n return result;\n}","import { unwrap } from \"./util\";\n\nimport jQuery from \"jquery\";\nimport 'bootstrap';\n\nimport axios from \"axios\";\n\naxios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\n//TODO: X-Requested-With 믿지 말자.\n\n/** \n * <>& 등을 html에서도 그대로 보이도록 escape주는 함수\n * @see https://stackoverflow.com/questions/24816/escaping-html-strings-with-jquery\n */\nexport const escapeHtml = (() => {\n const entityMap: { [v: string]: string } = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n return function (string: string) {\n return String(string).replace(/[&<>\"'`=/]/g, function (s: string) {\n return entityMap[s];\n });\n }\n})();\n\n/**\n * 변수가 정수인지 확인하는 함수\n * @param {*} n 정수인지 확인하기 위한 인자\n * @return {boolean} 정수인지 여부\n */\nexport function isInt(n: unknown): n is number {\n const v = n as number;\n return +v === v && !(v % 1);\n}\n\n\n//https://gist.github.com/demouth/3217440\n/**\n * mb_strwidth\n * @see http://php.net/manual/function.mb-strwidth.php\n */\nexport function mb_strwidth(str: string): number {\n const l = str.length;\n let length = 0;\n for (let i = 0; i < l; i++) {\n const c = str.charCodeAt(i);\n if (0x0000 <= c && c <= 0x0019) {\n length += 0;\n } else if (0x0020 <= c && c <= 0x1FFF) {\n length += 1;\n } else if (0x2000 <= c && c <= 0xFF60) {\n length += 2;\n } else if (0xFF61 <= c && c <= 0xFF9F) {\n length += 1;\n } else if (0xFFA0 <= c) {\n length += 2;\n }\n }\n return length;\n}\n\n\n/**\n * mb_strimwidth\n * @param String\n * @param int\n * @param int\n * @param String\n * @return String\n * @see http://www.php.net/manual/function.mb-strimwidth.php\n */\nexport function mb_strimwidth(str: string, start: number, width: number, trimmarker = ''): string {\n const trimmakerWidth = mb_strwidth(trimmarker);\n const l = str.length;\n let trimmedLength = 0;\n const trimmedStr: string[] = [];\n for (let i = start; i < l; i++) {\n const c = str.charAt(i);\n const charWidth = mb_strwidth(c);\n const next = str.charAt(i + 1);\n const nextWidth = mb_strwidth(next);\n\n trimmedLength += charWidth;\n trimmedStr.push(c);\n if (trimmedLength + trimmakerWidth + nextWidth > width) {\n trimmedStr.push(trimmarker);\n break;\n }\n }\n return trimmedStr.join('');\n}\n\n/**\n * object의 array를 id를 key로 삼는 object로 재 변환\n */\nexport function convertDictById(arr: ArrayLike): Record {\n const result: Record = {};\n for (const v of Object.values(arr)) {\n result[v.id] = v;\n }\n return result;\n}\n\n/**\n * array를 set 형태의 object로 변환\n */\nexport function convertSet(arr: ArrayLike): Record {\n const result: Record = {};\n for (const v of Object.values(arr)) {\n result[v] = true;\n }\n return result;\n}\n\n\n/** \n * {0}, {1}, {2}형태로 포맷해주는 함수\n */\n\ndeclare global {\n interface String {\n format(...args: (string | number)[]): string;\n }\n}\nString.prototype.format = function (...args: (string | number)[]) {\n return this.replace(/{(\\d+)}/g, function (match, number) {\n return (typeof args[number] != 'undefined') ? args[number].toString() : match;\n });\n};\n\n\nexport function hexToRgb(hex: string): { r: number, g: number, b: number } | null {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n}\n\nexport function isBrightColor(color: string): boolean {\n const cv = unwrap(hexToRgb(color));\n if ((cv.r * 0.299 + cv.g * 0.587 + cv.b * 0.114) > 140) {\n return true;\n } else {\n return false;\n }\n}\n\n/**\n * 게임내에서 지원하는 color type만 선택할 수 있도록 해주는 함수\n * @param {string} color #AAAAAA 또는 AAAAAA 형태로 작성된 RGB hex color string\n * @returns {string}\n */\nexport function convColorValue(color: string): string {\n if (color.charAt(0) == '#') {\n color = color.substr(1);\n }\n color = color.toUpperCase();\n\n const colorBase = new Set([\n '000080', '0000FF', '008000', '008080', '00BFFF', '00FF00', '00FFFF', '20B2AA',\n '2E8B57', '483D8B', '6495ED', '7B68EE', '7CFC00', '7FFFD4', '800000', '800080',\n '808000', '87CEEB', 'A0522D', 'A9A9A9', 'AFEEEE', 'BA55D3', 'E0FFFF', 'F5F5DC',\n 'FF0000', 'FF00FF', 'FF6347', 'FFA500', 'FFC0CB', 'FFD700', 'FFDAB9', 'FFFF00',\n 'FFFFFF'\n ]);\n\n if (!colorBase.has(color)) {\n return '000000';\n }\n\n return color;\n}\n\n\nexport function numberWithCommas(x: number): string {\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n}\n\n//linkify가 불러와 있어야함\ndeclare global {\n interface Window {\n linkifyStr: (v: string, k?: Record) => string;\n }\n}\nexport function linkifyStrWithOpt(text: string): string {\n return window.linkifyStr(text, {});\n}\n\n/**\n * 단순한 Template 함수. <%변수명%>으로 template 가능\n * @see https://github.com/krasimir/absurd/blob/master/lib/processors/html/helpers/TemplateEngine.js\n * @param {string} html \n * @param {object} options \n * @returns {string}\n */\nexport function TemplateEngine(html: string, options: Record = {}): string {\n const re = /<%(.+?)%>/g;\n const reExp = /(^( )?(var|if|for|else|switch|case|break|{|}|;))(.*)?/g;\n const code = ['with(obj) { var r=[];\\n'];\n let cursor = 0;\n const add = function (line: string, js?: boolean) {\n js ? code.push(line.match(reExp) ? line + '\\n' : 'r.push(' + line + ');\\n') :\n code.push(line != '' ? 'r.push(\"' + line.replace(/\"/g, '\\\\\"') + '\");\\n' : '');\n return add;\n }\n options.e = escapeHtml;\n options.linkifyStr = linkifyStrWithOpt;\n for (; ;) {\n const match = re.exec(html);\n if (!match) {\n break;\n }\n add(html.slice(cursor, match.index))(match[1], true);\n cursor = match.index + match[0].length;\n }\n add(html.substr(cursor, html.length - cursor));\n\n code.push('return r.join(\"\"); }');\n const compiledCode = code.join('').replace(/[\\r\\t\\n]/g, ' ');\n try {\n return new Function('obj', compiledCode).apply(options, [options]);\n } catch (err) {\n console.error(\"'\" + err.message + \"'\", \" in \\n\\nCode:\\n\", code, \"\\n\");\n throw err;\n }\n}\n\nexport function getIconPath(imgsvr: boolean | 1 | 0, picture: string): string {\n // ../d_shared/common_path.js 필요\n if (!imgsvr) {\n return window.pathConfig.sharedIcon + '/' + picture;\n } else {\n return window.pathConfig.root + '/d_pic/' + picture;\n }\n}\n\nexport function activeFlip($obj?: JQuery): void {\n let $result: JQuery;\n if ($obj === undefined) {\n $result = $('img[data-flip]');\n } else {\n $result = $obj.find('img[data-flip]');\n }\n\n $result.each(function () {\n activeFlipItem($(this));\n });\n\n}\n\nexport function combineObject(item: V[], columnList: K[]): Record {\n const newItem: Record = {};\n for (const columnIdx in columnList) {\n const columnName = columnList[columnIdx];\n newItem[columnName] = item[columnIdx];\n }\n return newItem;\n}\n\nexport function combineArray(array: V[][], columnList: K[]): Record[] {\n const result: Record[] = [];\n for (const key of array.keys()) {\n const item = array[key];\n result[key] = combineObject(item, columnList);\n }\n return result;\n}\n\nexport function activeFlipItem($img: JQuery): void {\n const imageList = [];\n imageList.push($img.attr('src'));\n $.each($img.data('flip').split(','), function (idx, value) {\n value = $.trim(value);\n if (!value) {\n return true;\n }\n imageList.push(value);\n });\n if (imageList.length <= 1) {\n return;\n }\n $img.data('computed_flip_array', imageList);\n $img.data('computed_flip_idx', 0);\n\n $img.click(function () {\n const arr = $img.data('computed_flip_array');\n let idx = $img.data('computed_flip_idx');\n idx = (idx + 1) % (arr.length);\n $img.attr('src', arr[idx]);\n $img.data('computed_flip_idx', idx);\n });\n $img.css('cursor', 'pointer');\n}\n\n\n\nexport function errUnknown(): void {\n alert('작업을 실패했습니다.');\n}\n\n\n\nexport function errUnknownToast(): void {\n jQuery.toast({\n title: '에러!',\n content: '작업을 실패했습니다.',\n type: 'danger',\n delay: 5000\n });\n}\n\nexport function quickReject(errMsg: string): JQuery.Promise {\n if (errMsg === undefined) {\n errMsg = '작업을 실패했습니다.';\n }\n const deferred = $.Deferred();\n void deferred.reject(errMsg);\n return deferred.promise();\n}\n\nexport function nl2br(text: string): string {\n return text.replace(/\\n/g, \"
\");\n}\n/*\nfunction br2nl (text) { \n return text.replace(/<\\s*\\/?br\\s*[\\/]?>/gi, '\\n');\n}\n*/\n\nexport function getNpcColor(npcType: number): 'cyan' | 'skyblue' | null {\n if (npcType >= 2) {\n return 'cyan';\n }\n if (npcType == 1) {\n return 'skyblue';\n }\n return null;\n}\n\nexport function initTooltip($obj?: JQuery): void {\n if ($obj === undefined) {\n $obj = $('.obj_tooltip');\n } else if (!$obj.hasClass('obj_tooltip')) {\n $obj = $obj.find('.obj_tooltip');\n }\n console.log($obj);\n\n $obj.each(function () {\n const $target = $(this);\n\n if ($target.data('installHandler')) {\n return;\n }\n $target.data('installHandler', true);\n\n $target.mouseover(function () {\n const $objTooltip = $(this);\n if ($objTooltip.data('setObjTooltip')) {\n return;\n }\n\n let tooltipClassText = $objTooltip.data('tooltip-class');\n if (!tooltipClassText) {\n tooltipClassText = '';\n }\n const template = ''\n .format(tooltipClassText);\n\n $objTooltip.tooltip({\n title: function () {\n return $.trim($(this).find('.tooltiptext').html());\n },\n template: template,\n html: true\n }).tooltip('show');\n\n $objTooltip.data('setObjTooltip', true);\n });\n });\n}","import { isArray, isString, isNumber, isBoolean } from \"lodash\";\n\nexport function convertFormData(values: Record): FormData{\n const formData = new FormData();\n\n const simpleConv = (v: unknown):string=>{\n if(isString(v)){\n return v;\n }\n if(isNumber(v)){\n return v.toString();\n }\n if(isBoolean(v)){\n return v?'true':'false';\n }\n throw new TypeError('지원하지 않는 formData Type');\n }\n\n for(const [key, value] of Object.entries(values)){\n if(isArray(value)){\n const arrKey = `${key}[]`;\n for(const subValue of value){\n formData.append(arrKey, simpleConv(subValue));\n }\n continue;\n }\n\n formData.append(key, simpleConv(value));\n }\n\n return formData;\n}","import { Nullable, NotNullExpected } from \"../util\";\n\n\nexport function unwrap_any(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result as T;\n}\n","import axios from 'axios';\r\nimport { errUnknown, getIconPath, TemplateEngine } from './common_legacy';\r\nimport { GeneralListResponse, InvalidResponse } from './defs';\r\nimport { convertFormData } from './util/convertFormData';\r\nimport { unwrap_any } from './util/unwrap_any';\r\n\r\ndeclare const specialInfo: Record;\r\ndeclare const characterInfo: Record;\r\n\r\ndeclare global {\r\n interface Window {\r\n generalList: NPCPickPrintable[],\r\n }\r\n}\r\n\r\ntype NPCPick = {\r\n no: number,\r\n name: string,\r\n leadership: number,\r\n strength: number,\r\n intel: number,\r\n nation: string,\r\n imgsvr: 0 | 1,\r\n picture: string,\r\n personal: string,\r\n special: string,\r\n special2: string,\r\n\r\n iconPath?: string,\r\n specialText?: string,\r\n special2Text?: string,\r\n personalText?: string,\r\n}\r\n\r\ntype NPCPickPrintableR = {\r\n no: number,\r\n picture: string,\r\n imgsvr: 0 | 1,\r\n npc: number,\r\n age: number,\r\n nation: string,\r\n special: string,\r\n special2: string,\r\n personal: string,\r\n name: string,\r\n ownerName: string | null,\r\n injury: number,\r\n leadership: number,\r\n lbonus: number,\r\n strength: number,\r\n intel: number,\r\n explevel: number,\r\n experience: string,\r\n dedication: string,\r\n officerLevel: string,\r\n killturn: number,\r\n connect: number,\r\n reserved: number,\r\n\r\n userCSS?: string,\r\n nameAux?: string,\r\n total?: number,\r\n iconPath?: string,\r\n specialDomesticWithTooltip?: string,\r\n specialWarWithTooltip?: string,\r\n personalWithTooltip?: string,\r\n}\r\n\r\ntype NPCPickPrintable = NPCPickPrintableR & {\r\n userCSS: string,\r\n nameAux: string,\r\n total: number,\r\n iconPath: string,\r\n specialDomesticWithTooltip: string,\r\n specialWarWithTooltip: string,\r\n personalWithTooltip: string,\r\n}\r\n\r\ntype NPCToken = {\r\n result: true,\r\n pick: Record,\r\n pickMoreFrom: string,\r\n pickMoreSeconds: number,\r\n validUntil: string,\r\n}\r\n\r\nconst templateGeneralCard =\r\n '\\\r\n
<%name%>
\\\r\n
\" height=64 width=64>
\\\r\n
<%leadership%> / <%strength%> / <%intel%>
\\\r\n <%nation%>
\\\r\n <%personalText%>
\\\r\n <%specialText%> / <%special2Text%>
\\\r\n
\\\r\n
\\\r\n
';\r\n\r\nconst templateSpecial =\r\n '<%text%>\\\r\n \\\r\n <%info%>\\\r\n \\\r\n\\\r\n';\r\n\r\nconst templateGeneralRow =\r\n '\\\r\n \"> | \\\r\n \"><%name%><%nameAux%> | \\\r\n <%age%>세 | \\\r\n <%personalWithTooltip%> | \\\r\n <%specialDomesticWithTooltip%> / <%specialWarWithTooltip%> | \\\r\n Lv <%explevel%> | \\\r\n <%nation%> | \\\r\n <%experience%> | \\\r\n <%dedication%> | \\\r\n <%officerLevel%> | \\\r\n <%total%> | \\\r\n <%leadership%> | \\\r\n <%strength%> | \\\r\n <%intel%> | \\\r\n <%killturn%> | \\\r\n
';\r\n\r\nasync function pickGeneral(this: HTMLElement, e: JQuery.Event) {\r\n e.preventDefault();\r\n const $btn = $(this);\r\n\r\n if (!confirm(`빙의할까요? : ${$btn.data('name')}`)) {\r\n return;\r\n }\r\n\r\n let result: InvalidResponse;\r\n try {\r\n const response = await axios({\r\n url: 'j_select_npc.php',\r\n responseType: 'json',\r\n method: 'post',\r\n data: convertFormData({\r\n pick: unwrap_any($btn.val()),\r\n })\r\n });\r\n result = response.data;\r\n }\r\n catch (e) {\r\n alert(`알 수 없는 에러: ${e}`);\r\n return;\r\n }\r\n\r\n if (!result.result) {\r\n alert(result.reason);\r\n location.reload();\r\n return;\r\n }\r\n\r\n alert('빙의에 성공했습니다.');\r\n location.href = './';\r\n}\r\n\r\nfunction updateOutdateTimer() {\r\n const $validUntilText = $('#valid_until_text');\r\n const now = Date.now();\r\n const validUntil = $validUntilText.data('until');\r\n if (validUntil <= 0) {\r\n return;\r\n } else if (validUntil < now) {\r\n $validUntilText.data('until', 0);\r\n $('#valid_until').hide();\r\n $('#outdate_token').show();\r\n return;\r\n } else if (validUntil - now <= 30000) {\r\n const remainColor = 255 * (validUntil - now) / 30000;\r\n $validUntilText.css('color', `rgb(255, ${remainColor}, ${remainColor})`);\r\n }\r\n\r\n setTimeout(updateOutdateTimer, 1000);\r\n}\r\n\r\nfunction updatePickMoreTimer() {\r\n const $btn = $('#btn_pick_more');\r\n\r\n const now = Date.now();\r\n const remain = ($btn.data('available') - now) / 1000;\r\n if (remain <= 0) {\r\n $btn.prop('disabled', false)\r\n $btn.html('다른 장수 보기');\r\n return;\r\n }\r\n\r\n $btn.html(`다른 장수 보기(${Math.ceil(remain)}초)`);\r\n\r\n setTimeout(updatePickMoreTimer, 250);\r\n}\r\n\r\nfunction printGenerals(value: NPCToken) {\r\n $('.card_holder').empty();\r\n $('#valid_until').show();\r\n $('#valid_until_text').html(value.validUntil).data('until', (new Date(value.validUntil)).getTime()).css('color', 'white');\r\n $('#outdate_token').hide();\r\n const time = Date.now() + value.pickMoreSeconds * 1000;\r\n $('#btn_pick_more').data('available', time).prop('disabled', true);\r\n\r\n const pick = $.map(value.pick, function (value, key) {\r\n return value;\r\n });\r\n\r\n pick.sort(function (lhs, rhs) {\r\n const lsum = lhs.leadership + lhs.strength + lhs.intel;\r\n const rsum = rhs.leadership + rhs.strength + rhs.intel;\r\n return lsum - rsum;\r\n });\r\n\r\n $.each(pick, function (idx, cardData: NPCPick) {\r\n cardData.iconPath = getIconPath(cardData.imgsvr, cardData.picture);\r\n if (cardData.special in specialInfo) {\r\n cardData.specialText = TemplateEngine(templateSpecial, {\r\n text: cardData.special,\r\n info: specialInfo[cardData.special]\r\n });\r\n } else {\r\n cardData.specialText = cardData.special;\r\n }\r\n\r\n if (cardData.special2 in specialInfo) {\r\n cardData.special2Text = TemplateEngine(templateSpecial, {\r\n text: cardData.special2,\r\n info: specialInfo[cardData.special2]\r\n });\r\n } else {\r\n cardData.special2Text = cardData.special2;\r\n }\r\n\r\n if (cardData.personal in characterInfo) {\r\n cardData.personalText = TemplateEngine(templateSpecial, {\r\n text: cardData.personal,\r\n info: characterInfo[cardData.personal]\r\n });\r\n } else {\r\n cardData.personalText = cardData.personal;\r\n }\r\n\r\n\r\n const $card = $(TemplateEngine(templateGeneralCard, cardData));\r\n\r\n $('.card_holder').append($card);\r\n $card.find('.select_btn').on('click', pickGeneral);\r\n $card.find('.obj_tooltip').tooltip({\r\n title: function () {\r\n return $.trim($(this).find('.tooltiptext').html());\r\n },\r\n html: true\r\n });\r\n });\r\n\r\n updatePickMoreTimer();\r\n updateOutdateTimer();\r\n}\r\n\r\nfunction printGeneralList(value: GeneralListResponse) {\r\n const tokenList = value.token;\r\n const generalList:NPCPickPrintable[] = value.list.map((rawGeneral) => {\r\n const general: NPCPickPrintableR = {\r\n no: rawGeneral[0],\r\n picture: rawGeneral[1],\r\n imgsvr: rawGeneral[2],\r\n npc: rawGeneral[3],\r\n age: rawGeneral[4],\r\n nation: rawGeneral[5],\r\n special: rawGeneral[6],\r\n special2: rawGeneral[7],\r\n personal: rawGeneral[8],\r\n name: rawGeneral[9],\r\n ownerName: rawGeneral[10],\r\n injury: rawGeneral[11],\r\n leadership: rawGeneral[12],\r\n lbonus: rawGeneral[13],\r\n strength: rawGeneral[14],\r\n intel: rawGeneral[15],\r\n explevel: rawGeneral[16],\r\n experience: rawGeneral[17],\r\n dedication: rawGeneral[18],\r\n officerLevel: rawGeneral[19],\r\n killturn: rawGeneral[20],\r\n connect: rawGeneral[21],\r\n reserved: 0\r\n };\r\n if (general.npc < 2) {\r\n general.reserved = 2;\r\n }\r\n if (general.no in tokenList) {\r\n general.reserved = 1;\r\n }\r\n\r\n general.userCSS = \"\";\r\n general.nameAux = \"\";\r\n\r\n if (general.reserved == 1) {\r\n general.userCSS = 'color:violet';\r\n } else if (general.npc >= 2) {\r\n general.userCSS = 'color:cyan';\r\n } else if (general.npc == 1) {\r\n general.userCSS = 'color:skyblue';\r\n }\r\n\r\n if (general.ownerName) {\r\n general.nameAux += `
(${general.ownerName})`;\r\n }\r\n\r\n if (general.reserved == 1) {\r\n general.nameAux += `
(${tokenList[general.no]}회)`;\r\n }\r\n\r\n\r\n general.total = general.leadership + general.strength + general.intel;\r\n general.iconPath = getIconPath(general.imgsvr, general.picture);\r\n\r\n general.specialDomesticWithTooltip = TemplateEngine(templateSpecial, {\r\n text: general.special,\r\n info: specialInfo[general.special]\r\n });\r\n\r\n general.specialWarWithTooltip = TemplateEngine(templateSpecial, {\r\n text: general.special2,\r\n info: specialInfo[general.special2]\r\n });\r\n\r\n general.personalWithTooltip = TemplateEngine(templateSpecial, {\r\n text: general.personal,\r\n info: characterInfo[general.personal]\r\n });\r\n\r\n return general as NPCPickPrintable;\r\n });\r\n\r\n generalList.sort(function (lhs, rhs) {\r\n if (lhs.reserved > rhs.reserved) {\r\n return -1;\r\n }\r\n if (lhs.reserved < rhs.reserved) {\r\n return 1;\r\n }\r\n if (lhs.total != rhs.total) {\r\n return rhs.total - lhs.total;\r\n }\r\n if (lhs.leadership != rhs.leadership) {\r\n return rhs.leadership - lhs.total;\r\n }\r\n\r\n if (lhs.name < rhs.name) {\r\n return -1;\r\n }\r\n if (lhs.name > rhs.name) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n\r\n window.generalList = generalList;\r\n _printGeneralList(true);\r\n}\r\n\r\nfunction _printGeneralList(clear?:boolean) {\r\n const $generalTable = $('#general_list');\r\n if (clear) {\r\n $generalTable.empty();\r\n $generalTable.data('lastIdx', 0);\r\n $('#row_print_more').show();\r\n }\r\n\r\n const generalList = window.generalList;\r\n\r\n const idxFrom = $generalTable.data('lastIdx');\r\n const idxTo = Math.min(idxFrom + 50, generalList.length);\r\n $generalTable.data('lastIdx', idxTo);\r\n\r\n for (let idx = idxFrom; idx < idxFrom + 50; idx++) {\r\n const general = generalList[idx];\r\n $generalTable.append(TemplateEngine(templateGeneralRow, general));\r\n }\r\n\r\n if (idxTo == generalList.length) {\r\n $('#row_print_more').hide();\r\n }\r\n\r\n $generalTable.find('.obj_tooltip').tooltip({\r\n title: function () {\r\n return $.trim($(this).find('.tooltiptext').html());\r\n },\r\n html: true\r\n });\r\n $('#tb_general_list').show();\r\n}\r\n\r\n$(function ($) {\r\n window.generalList = [];\r\n\r\n $.post('j_get_select_npc_token.php').then(function (value) {\r\n if (!value.result) {\r\n alert(value.reason);\r\n return;\r\n }\r\n\r\n console.log(value);\r\n printGenerals(value);\r\n }, errUnknown);\r\n\r\n $('#btn_pick_more').click(function () {\r\n const generals = $('.keep_select:checked').map(function () {\r\n return unwrap_any($(this).val());\r\n }).toArray();\r\n console.log(generals);\r\n $.post({\r\n url: 'j_get_select_npc_token.php',\r\n dataType: 'json',\r\n data: {\r\n refresh: true,\r\n keep: generals\r\n }\r\n }).then(function (result) {\r\n if (!result.result) {\r\n alert(result.reason);\r\n location.reload();\r\n }\r\n console.log(result);\r\n printGenerals(result);\r\n }, errUnknown);\r\n });\r\n\r\n $('#btn_load_general_list').click(function () {\r\n $.post({\r\n url: 'j_get_general_list.php',\r\n dataType: 'json',\r\n data: {\r\n with_token: true\r\n }\r\n }).then(function (result) {\r\n if (!result.result) {\r\n alert(result.reason);\r\n return false;\r\n }\r\n printGeneralList(result);\r\n }, errUnknown);\r\n });\r\n\r\n $('#btn_print_more').click(function () {\r\n _printGeneralList();\r\n })\r\n\r\n});","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 520;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t520: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) var result = runtime(__webpack_require__);\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkhidche_lib\"] = self[\"webpackChunkhidche_lib\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [216], () => (__webpack_require__(138)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","NotNullExpected","message","this","name","Error","entityMap","escapeHtml","string","String","replace","s","linkifyStrWithOpt","text","window","linkifyStr","TemplateEngine","html","options","re","reExp","code","cursor","add","line","js","push","match","e","exec","slice","index","length","substr","compiledCode","join","Function","apply","err","console","error","getIconPath","imgsvr","picture","pathConfig","root","sharedIcon","errUnknown","alert","prototype","format","args","number","toString","convertFormData","values","formData","FormData","simpleConv","v","TypeError","Object","entries","key","value","arrKey","subValue","append","unwrap_any","result","templateSpecial","pickGeneral","preventDefault","$btn","$","confirm","data","url","responseType","method","pick","val","response","reason","location","reload","href","updateOutdateTimer","$validUntilText","now","Date","validUntil","hide","show","remainColor","css","setTimeout","updatePickMoreTimer","remain","prop","Math","ceil","printGenerals","empty","getTime","time","pickMoreSeconds","map","sort","lhs","rhs","leadership","strength","intel","each","idx","cardData","iconPath","special","specialInfo","specialText","info","special2","special2Text","personal","characterInfo","personalText","$card","find","on","tooltip","title","trim","_printGeneralList","clear","$generalTable","generalList","idxFrom","idxTo","min","general","post","then","log","click","generals","toArray","dataType","refresh","keep","with_token","tokenList","token","list","rawGeneral","no","npc","age","nation","ownerName","injury","lbonus","explevel","experience","dedication","officerLevel","killturn","connect","reserved","userCSS","nameAux","total","specialDomesticWithTooltip","specialWarWithTooltip","personalWithTooltip","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","id","loaded","__webpack_modules__","call","m","O","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","obj","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","forEach","bind","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file