“User:Irukaza/js/Live2dGirl.js”与“User:Irukaza/js/editConflict.js”:页面之间的差异

H萌娘,万物皆可H的百科全书!
< User:Irukaza(页面间差异)
跳到导航 跳到搜索
imported>=海豚=
无编辑摘要
 
imported>=海豚=
无编辑摘要
 
第1行: 第1行:
/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */
(async () => {
!
    if (!["edit", "submit"].includes(mw.config.get("wgAction"))) {
function(e, t) {
      return;
    "use strict";
   "object" == typeof module && "object" == typeof module.exports ? module.exports = e.document ? t(e, !0) : function(e) {
     if (!e.document) throw new Error("jQuery requires a window with a document");
     return t(e)
   }: t(e)
} ("undefined" != typeof window ? window: this,
function(C, e) {
   "use strict";
   var t = [],
   r = Object.getPrototypeOf,
   s = t.slice,
   g = t.flat ?
   function(e) {
     return t.flat.call(e)
   }: function(e) {
     return t.concat.apply([], e)
   },
   u = t.push,
   i = t.indexOf,
   n = {},
   o = n.toString,
   v = n.hasOwnProperty,
   a = v.toString,
   l = a.call(Object),
   y = {},
   m = function(e) {
     return "function" == typeof e && "number" != typeof e.nodeType
   },
   x = function(e) {
     return null != e && e === e.window
   },
   E = C.document,
   c = {
     type: !0,
     src: !0,
     nonce: !0,
     noModule: !0
   };
   function b(e, t, n) {
     var r, i, o = (n = n || E).createElement("script");
     if (o.text = e, t) for (r in c)(i = t[r] || t.getAttribute && t.getAttribute(r)) && o.setAttribute(r, i);
     n.head.appendChild(o).parentNode.removeChild(o)
   }
   function w(e) {
      return null == e ? e + "": "object" == typeof e || "function" == typeof e ? n[o.call(e)] || "object": typeof e
    }
    }
    var f = "3.5.1",
    await mw.loader.using("mw.Api");
    S = function(e, t) {
   mw.loader.using('mediawiki.notification');
      return new S.fn.init(e, t)
   const wgPageName = mw.config.get("wgPageName");
   const wgCurRevisionId = mw.config.get("wgCurRevisionId");
   let needCheckFlag = true;
   const api = new mw.Api({ timeout: 5000 });
   const wpSave = $("#wpSave");
   const editform = $("#editform");
   const conflictAlert = " 请备份您的编辑后刷新页面再进行相关操作!";
   const SYMBOL_UNDEFINED = Symbol("SYMBOL_UNDEFINED");
    wpSave.val = (value = SYMBOL_UNDEFINED) => {
      const val = $.fn.val.bind(wpSave);
     return value === SYMBOL_UNDEFINED ? val() : val(value).attr("title", value);
    };
    };
    function p(e) {
    const disable = ($buttons) => {
      var t = !!e && "length" in e && e.length,
      return $buttons.css("font-weight", "normal").parent().removeClass("oo-ui-widget-enabled oo-ui-flaggedElement-primary oo-ui-flaggedElement-progressive").addClass("oo-ui-widget-disabled");
     n = w(e);
     return ! m(e) && !x(e) && ("array" === n || 0 === t || "number" == typeof t && 0 < t && t - 1 in e)
    }
    }
   S.fn = S.prototype = {
   wpSave.on("click", () => {
     jquery: f,
     var div =  document.querySelector("#wpTextbox1");
     constructor: S,
     div.innerHTML = div.innerHTML
     length: 0,
     .replace(/㑯/g,'㑔')
     toArray: function() {
     .replace(/㑳/g,'㑇')
       return s.call(this)
     .replace(/㑶/g,'㐹')
     },
     .replace(/㒓/g,'𠉂')
     get: function(e) {
     .replace(/㒺/g,'罔')
       return null == e ? s.call(this) : e < 0 ? this[e + this.length] : this[e]
     .replace(/㓂/g,'寇')
     },
     .replace(/㓨/g,'刾')
     pushStack: function(e) {
     .replace(/㕁/g,'却')
       var t = S.merge(this.constructor(), e);
     .replace(/㕑/g,'厨')
       return t.prevObject = this,
     .replace(/㕘/g,'参')
       t
     .replace(/㕥/g,'以')
     },
     .replace(/㗲/g,'𠵾')
     each: function(e) {
     .replace(/㘚/g,'㘎')
       return S.each(this, e)
     .replace(/㘭/g,'坳')
     },
     .replace(/㜄/g,'㚯')
     map: function(n) {
     .replace(/㜏/g,'㛣')
       return this.pushStack(S.map(this,
     .replace(/㜢/g,'𡞱')
       function(e, t) {
     .replace(/㜷/g,'𡝠')
         return n.call(e, t, e)
     .replace(/㝛/g,'宿')
       }))
     .replace(/㝠/g,'冥')
     },
     .replace(/㞞/g,'𪨊')
     slice: function() {
     .replace(/㠀/g,'岛')
       return this.pushStack(s.apply(this, arguments))
     .replace(/㠏/g,'㟆')
     },
     .replace(/㠣/g,'𫵷')
     .replace(/㠯/g,'以')
     .replace(/㠶/g,'帆')
     .replace(/㡌/g,'帽')
     .replace(/㢘/g,'廉')
     .replace(/㢝/g,'𢋈')
     .replace(/㤙/g,'恩')
     .replace(/㥦/g,'惬')
     .replace(/㥮/g,'㤘')
     .replace(/㦎/g,'𢛯')
     .replace(/㨗/g,'捷')
     .replace(/㨪/g,'晃')
     .replace(/㨿/g,'据')
     .replace(/㩗/g,'携')
     .replace(/㩜/g,'㨫')
     .replace(/㩦/g,'携')
     .replace(/㩳/g,'㧐')
     .replace(/㪚/g,'散')
     .replace(/㪟/g,'敦')
     .replace(/㬉/g,'暖')
     .replace(/㬪/g,'叠')
     .replace(/㯭/g,'橹')
     .replace(/㱃/g,'饮')
     .replace(/㳒/g,'法')
     .replace(/㴱/g,'深')
     .replace(/㷿/g,'𤈷')
     .replace(/㺏/g,'𤠋')
     .replace(/㼝/g,'碗')
     .replace(/㽞/g,'留')
     .replace(/㿜/g,'瘪')
     .replace(/㿧/g,'𤽯')
     .replace(/䀹/g,'𥅴')
     .replace(/䁪/g,'𥇢')
     .replace(/䁻/g,'䀥')
     .replace(/䃮/g,'鿎')
     .replace(/䈰/g,'筲')
     .replace(/䉙/g,'𥬀')
     .replace(/䉬/g,'𫂈')
     .replace(/䉲/g,'𥮜')
     .replace(/䊀/g,'糊')
     .replace(/䊭/g,'𥺅')
     .replace(/䊷/g,'䌶')
     .replace(/䋙/g,'䌺')
     .replace(/䋚/g,'䌻')
     .replace(/䋹/g,'䌿')
     .replace(/䋻/g,'䌾')
     .replace(/䋿/g,'𦈓')
     .replace(/䌈/g,'𦈖')
     .replace(/䌋/g,'𦈘')
     .replace(/䌖/g,'𦈜')
     .replace(/䌝/g,'𦈟')
     .replace(/䌟/g,'𦈞')
     .replace(/䌥/g,'𦈠')
     .replace(/䌰/g,'𦈙')
     .replace(/䎱/g,'䎬')
     .replace(/䓣/g,'𬜯')
     .replace(/䕳/g,'𦰴')
     .replace(/䗬/g,'蜂')
     .replace(/䗿/g,'𧉞')
     .replace(/䘏/g,'恤')
     .replace(/䘑/g,'脉')
     .replace(/䘚/g,'卒')
     .replace(/䙡/g,'䙌')
     .replace(/䛐/g,'词')
     .replace(/䛡/g,'话')
     .replace(/䜀/g,'䜧')
     .replace(/䝔/g,'獾')
     .replace(/䝻/g,'𧹕')
     .replace(/䝼/g,'䞍')
     .replace(/䞈/g,'𧹑')
     .replace(/䠀/g,'蹚')
     .replace(/䠶/g,'射')
     .replace(/䡵/g,'𫟦')
     .replace(/䢨/g,'𨑹')
     .replace(/䥇/g,'䦂')
     .replace(/䥑/g,'鿏')
     .replace(/䥕/g,'𬭯')
     .replace(/䥥/g,'镰')
     .replace(/䥩/g,'𨱖')
     .replace(/䥱/g,'䥾')
     .replace(/䦘/g,'𨸄')
     .replace(/䦛/g,'䦶')
     .replace(/䦟/g,'䦷')
     .replace(/䦳/g,'𨷿')
     .replace(/䧢/g,'𨸟')
     .replace(/䪏/g,'𩏼')
     .replace(/䪗/g,'𩐀')
     .replace(/䪘/g,'𩏿')
     .replace(/䫴/g,'𩖗')
     .replace(/䬃/g,'飒')
     .replace(/䬘/g,'𩙮')
     .replace(/䬝/g,'𩙯')
     .replace(/䬞/g,'𩙧')
     .replace(/䭀/g,'𩠇')
     .replace(/䭃/g,'𩠈')
     .replace(/䭾/g,'驮')
     .replace(/䭿/g,'𩧭')
     .replace(/䮄/g,'𫠊')
     .replace(/䮝/g,'𩧰')
     .replace(/䮞/g,'𩨁')
     .replace(/䮠/g,'𩧿')
     .replace(/䮫/g,'𩨇')
     .replace(/䮳/g,'𩨏')
     .replace(/䮾/g,'𩧪')
     .replace(/䯀/g,'䯅')
     .replace(/䰟/g,'魂')
     .replace(/䰾/g,'鲃')
     .replace(/䱙/g,'𩾈')
     .replace(/䱬/g,'𩾊')
     .replace(/䱰/g,'𩾋')
     .replace(/䱷/g,'䲣')
     .replace(/䱽/g,'䲝')
     .replace(/䲁/g,'鳚')
     .replace(/䲖/g,'𩾂')
     .replace(/䲘/g,'鳤')
     .replace(/䲰/g,'𪉂')
     .replace(/䳘/g,'鹅')
     .replace(/䴉/g,'鹮')
     .replace(/䴬/g,'𪎈')
     .replace(/䴴/g,'𪎋')
     .replace(/䶊/g,'衄')
     .replace(/丟/g,'丢')
     .replace(/丣/g,'卯')
     .replace(/並/g,'并')
     .replace(/乗/g,'乘')
     .replace(/乹/g,'干')
     .replace(/乾/g,'干')
     .replace(/亁/g,'干')
     .replace(/亂/g,'乱')
     .replace(/亙/g,'亘')
     .replace(/亝/g,'斋')
     .replace(/亞/g,'亚')
     .replace(/亱/g,'夜')
     .replace(/亷/g,'廉')
     .replace(/亾/g,'亡')
     .replace(/佇/g,'伫')
     .replace(/佈/g,'布')
     .replace(/佔/g,'占')
     .replace(/併/g,'并')
     .replace(/來/g,'来')
     .replace(/侖/g,'仑')
     .replace(/侶/g,'侣')
     .replace(/俁/g,'俣')
     .replace(/係/g,'系')
     .replace(/俔/g,'伣')
     .replace(/俠/g,'侠')
     .replace(/俥/g,'伡')
     .replace(/俻/g,'备')
     .replace(/倀/g,'伥')
     .replace(/倆/g,'俩')
     .replace(/倈/g,'俫')
     .replace(/倉/g,'仓')
     .replace(/個/g,'个')
     .replace(/倐/g,'倏')
     .replace(/們/g,'们')
     .replace(/倖/g,'幸')
     .replace(/倣/g,'仿')
     .replace(/倫/g,'伦')
     .replace(/倲/g,'㑈')
     .replace(/倸/g,'睬')
     .replace(/偉/g,'伟')
     .replace(/偑/g,'㐽')
     .replace(/側/g,'侧')
     .replace(/偵/g,'侦')
     .replace(/偽/g,'伪')
     .replace(/傌/g,'㐷')
     .replace(/傑/g,'杰')
     .replace(/傖/g,'伧')
     .replace(/傘/g,'伞')
     .replace(/備/g,'备')
     .replace(/傚/g,'效')
     .replace(/傢/g,'家')
     .replace(/傭/g,'佣')
     .replace(/傯/g,'偬')
     .replace(/傳/g,'传')
     .replace(/傴/g,'伛')
     .replace(/債/g,'债')
     .replace(/傷/g,'伤')
     .replace(/傾/g,'倾')
     .replace(/僂/g,'偻')
     .replace(/僅/g,'仅')
     .replace(/僉/g,'佥')
     .replace(/僊/g,'仙')
     .replace(/働/g,'动')
     .replace(/僑/g,'侨')
     .replace(/僕/g,'仆')
     .replace(/僞/g,'伪')
     .replace(/僤/g,'𫢸')
     .replace(/僥/g,'侥')
     .replace(/僨/g,'偾')
     .replace(/僱/g,'雇')
     .replace(/價/g,'价')
     .replace(/儀/g,'仪')
     .replace(/儂/g,'侬')
     .replace(/億/g,'亿')
     .replace(/儈/g,'侩')
     .replace(/儉/g,'俭')
     .replace(/儌/g,'侥')
     .replace(/儐/g,'傧')
     .replace(/儔/g,'俦')
     .replace(/儕/g,'侪')
     .replace(/儘/g,'尽')
     .replace(/償/g,'偿')
     .replace(/儣/g,'𠆲')
     .replace(/優/g,'优')
     .replace(/儲/g,'储')
     .replace(/儷/g,'俪')
     .replace(/儸/g,'㑩')
     .replace(/儺/g,'傩')
     .replace(/儻/g,'傥')
     .replace(/儼/g,'俨')
     .replace(/兇/g,'凶')
     .replace(/兌/g,'兑')
     .replace(/兎/g,'兔')
     .replace(/兒/g,'儿')
     .replace(/兗/g,'兖')
     .replace(/兠/g,'兜')
     .replace(/內/g,'内')
     .replace(/兩/g,'两')
     .replace(/冄/g,'冉')
     .replace(/冊/g,'册')
     .replace(/冐/g,'冒')
     .replace(/冑/g,'胄')
     .replace(/冪/g,'幂')
     .replace(/冺/g,'泯')
     .replace(/凈/g,'净')
     .replace(/凍/g,'冻')
     .replace(/凙/g,'𪞝')
     .replace(/凜/g,'凛')
     .replace(/凢/g,'凡')
     .replace(/凱/g,'凯')
     .replace(/凴/g,'凭')
     .replace(/別/g,'别')
     .replace(/刦/g,'劫')
     .replace(/刧/g,'劫')
     .replace(/刪/g,'删')
     .replace(/刼/g,'劫')
     .replace(/剄/g,'刭')
     .replace(/則/g,'则')
     .replace(/剉/g,'锉')
     .replace(/剋/g,'克')
     .replace(/剎/g,'刹')
     .replace(/剏/g,'创')
     .replace(/剗/g,'刬')
     .replace(/剙/g,'创')
     .replace(/剛/g,'刚')
     .replace(/剝/g,'剥')
     .replace(/剮/g,'剐')
     .replace(/剳/g,'札')
     .replace(/剴/g,'剀')
     .replace(/創/g,'创')
     .replace(/剷/g,'铲')
     .replace(/剹/g,'戮')
     .replace(/剾/g,'𠛅')
     .replace(/劃/g,'划')
     .replace(/劄/g,'札')
     .replace(/劇/g,'剧')
     .replace(/劉/g,'刘')
            try {
            try {
              return H.apply(n, f.querySelectorAll(c)),
              const result = await api.post({
             n
               action: "query",
           } catch(e) {
               prop: "revisions",
             N(t, !0)
               rvprop: "ids",
           } finally {
               rvlimit: 1,
             s === S && e.removeAttribute("id")
               titles: wgPageName,
           }
             });
         }
             const pageid = Object.keys(result.query.pages)[0];
       }
             if (pageid > 0 && result.query.pages[pageid].revisions[0].revid > wgCurRevisionId) {
       return g(t.replace($, "$1"), e, n, r)
               wpSave.val(" 提交失败,存在编辑冲突!");
     }
               $("body").append(`<div style="background: #3366CC; color: white; text-align: center; padding: .5rem; position: fixed; top: 0; left: 0; right: 0; z-index: 9999;"><p> 本页面已被他人更改。请复制您的编辑到剪贴板,然后刷新页面,重新开始编辑,以避免编辑冲突。</p><p><span id="copyCurrentRawCode" class="mw-ui-button"> 复制当前编辑内容</span> <span id="showNewestRevisionDiff" class="mw-ui-button">查看最新版本差异</span> <span id="refreshPage" class="mw-ui-button mw-ui-destructive"> 刷新页面</span></p></div>`);
     function ue() {
               const pre = $("<pre/>", {
       var r = [];
                 css: {
       return function e(t, n) {
                   position: "absolute",
         return r.push(t + " ") > b.cacheLength && delete e[r.shift()],
                   left: "-99999px",
         e[t + " "] = n
                   "z-index": "-99999",
       }
     }
     function le(e) {
       return e[S] = !0,
       e
     }
     function ce(e) {
       var t = C.createElement("fieldset");
       try {
         return !! e(t)
       } catch(e) {
         return ! 1
       } finally {
         t.parentNode && t.parentNode.removeChild(t),
         t = null
       }
     }
     function fe(e, t) {
       var n = e.split("|"),
       r = n.length;
       while (r--) b.attrHandle[n[r]] = t
     }
     function pe(e, t) {
       var n = t && e,
       r = n && 1 === e.nodeType && 1 === t.nodeType && e.sourceIndex - t.sourceIndex;
       if (r) return r;
       if (n) while (n = n.nextSibling) if (n === t) return - 1;
       return e ? 1 : -1
     }
     function de(t) {
       return function(e) {
         return "input" === e.nodeName.toLowerCase() && e.type === t
       }
     }
     function he(n) {
       return function(e) {
         var t = e.nodeName.toLowerCase();
         return ("input" === t || "button" === t) && e.type === n
       }
     }
     function ge(t) {
       return function(e) {
         return "form" in e ? e.parentNode && !1 === e.disabled ? "label" in e ? "label" in e.parentNode ? e.parentNode.disabled === t: e.disabled === t: e.isDisabled === t || e.isDisabled !== !t && ae(e) === t: e.disabled === t: "label" in e && e.disabled === t
       }
     }
     function ve(a) {
       return le(function(o) {
         return o = +o,
         le(function(e, t) {
           var n, r = a([], e.length, o),
           i = r.length;
           while (i--) e[n = r[i]] && (e[n] = !(t[n] = e[n]))
         })
       })
     }
     function ye(e) {
       return e && "undefined" != typeof e.getElementsByTagName && e
     }
     for (e in d = se.support = {},
     i = se.isXML = function(e) {
       var t = e.namespaceURI,
       n = (e.ownerDocument || e).documentElement;
       return ! Y.test(t || n && n.nodeName || "HTML")
     },
     T = se.setDocument = function(e) {
       var t, n, r = e ? e.ownerDocument || e: p;
       return r != C && 9 === r.nodeType && r.documentElement && (a = (C = r).documentElement, E = !i(C), p != C && (n = C.defaultView) && n.top !== n && (n.addEventListener ? n.addEventListener("unload", oe, !1) : n.attachEvent && n.attachEvent("onunload", oe)), d.scope = ce(function(e) {
         return a.appendChild(e).appendChild(C.createElement("div")),
         "undefined" != typeof e.querySelectorAll && !e.querySelectorAll(":scope fieldset div").length
       }), d.attributes = ce(function(e) {
         return e.className = "i",
         !e.getAttribute("className")
       }), d.getElementsByTagName = ce(function(e) {
         return e.appendChild(C.createComment("")),
         !e.getElementsByTagName("*").length
       }), d.getElementsByClassName = K.test(C.getElementsByClassName), d.getById = ce(function(e) {
         return a.appendChild(e).id = S,
         !C.getElementsByName || !C.getElementsByName(S).length
       }), d.getById ? (b.filter.ID = function(e) {
         var t = e.replace(te, ne);
         return function(e) {
           return e.getAttribute("id") === t
         }
       },
       b.find.ID = function(e, t) {
         if ("undefined" != typeof t.getElementById && E) {
           var n = t.getElementById(e);
           return n ? [n] : []
         }
       }) : (b.filter.ID = function(e) {
         var n = e.replace(te, ne);
         return function(e) {
           var t = "undefined" != typeof e.getAttributeNode && e.getAttributeNode("id");
           return t && t.value === n
         }
       },
       b.find.ID = function(e, t) {
         if ("undefined" != typeof t.getElementById && E) {
           var n, r, i, o = t.getElementById(e);
           if (o) {
             if ((n = o.getAttributeNode("id")) && n.value === e) return [o];
             i = t.getElementsByName(e),
             r = 0;
             while (o = i[r++]) if ((n = o.getAttributeNode("id")) && n.value === e) return [o]
           }
           return []
         }
       }), b.find.TAG = d.getElementsByTagName ?
       function(e, t) {
         return "undefined" != typeof t.getElementsByTagName ? t.getElementsByTagName(e) : d.qsa ? t.querySelectorAll(e) : void 0
       }: function(e, t) {
         var n, r = [],
         i = 0,
         o = t.getElementsByTagName(e);
         if ("*" === e) {
           while (n = o[i++]) 1 === n.nodeType && r.push(n);
           return r
         }
         return o
       },
       b.find.CLASS = d.getElementsByClassName &&
       function(e, t) {
         if ("undefined" != typeof t.getElementsByClassName && E) return t.getElementsByClassName(e)
       },
       s = [], v = [], (d.qsa = K.test(C.querySelectorAll)) && (ce(function(e) {
         var t;
         a.appendChild(e).innerHTML = "<a id='" + S + "'></a><select id='" + S + "-\r\\' msallowcapture=''><option selected=''></option></select>",
         e.querySelectorAll("[msallowcapture^='']").length && v.push("[*^$]=" + M + "*(?:''|\"\")"),
         e.querySelectorAll("[selected]").length || v.push("\\[" + M + "*(?:value|" + R + ")"),
         e.querySelectorAll("[id~=" + S + "-]").length || v.push("~="),
         (t = C.createElement("input")).setAttribute("name", ""),
         e.appendChild(t),
         e.querySelectorAll("[name='']").length || v.push("\\[" + M + "*name" + M + "*=" + M + "*(?:''|\"\")"),
         e.querySelectorAll(":checked").length || v.push(":checked"),
         e.querySelectorAll("a#" + S + "+*").length || v.push(".#.+[+~]"),
         e.querySelectorAll("\\\f"),
         v.push("[\\r\\n\\f]")
       }), ce(function(e) {
         e.innerHTML = "<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";
         var t = C.createElement("input");
         t.setAttribute("type", "hidden"),
         e.appendChild(t).setAttribute("name", "D"),
         e.querySelectorAll("[name=d]").length && v.push("name" + M + "*[*^$|!~]?="),
         2 !== e.querySelectorAll(":enabled").length && v.push(":enabled", ":disabled"),
         a.appendChild(e).disabled = !0,
         2 !== e.querySelectorAll(":disabled").length && v.push(":enabled", ":disabled"),
         e.querySelectorAll("*,:x"),
         v.push(",.*:")
       })), (d.matchesSelector = K.test(c = a.matches || a.webkitMatchesSelector || a.mozMatchesSelector || a.oMatchesSelector || a.msMatchesSelector)) && ce(function(e) {
         d.disconnectedMatch = c.call(e, "*"),
         c.call(e, "[s!='']:x"),
         s.push("!=", F)
       }), v = v.length && new RegExp(v.join("|")), s = s.length && new RegExp(s.join("|")), t = K.test(a.compareDocumentPosition), y = t || K.test(a.contains) ?
       function(e, t) {
         var n = 9 === e.nodeType ? e.documentElement: e,
         r = t && t.parentNode;
         return e === r || !(!r || 1 !== r.nodeType || !(n.contains ? n.contains(r) : e.compareDocumentPosition && 16 & e.compareDocumentPosition(r)))
       }: function(e, t) {
         if (t) while (t = t.parentNode) if (t === e) return ! 0;
         return ! 1
       },
       D = t ?
       function(e, t) {
         if (e === t) return l = !0,
         0;
         var n = !e.compareDocumentPosition - !t.compareDocumentPosition;
         return n || (1 & (n = (e.ownerDocument || e) == (t.ownerDocument || t) ? e.compareDocumentPosition(t) : 1) || !d.sortDetached && t.compareDocumentPosition(e) === n ? e == C || e.ownerDocument == p && y(p, e) ? -1 : t == C || t.ownerDocument == p && y(p, t) ? 1 : u ? P(u, e) - P(u, t) : 0 : 4 & n ? -1 : 1)
       }: function(e, t) {
         if (e === t) return l = !0,
         0;
         var n, r = 0,
         i = e.parentNode,
         o = t.parentNode,
         a = [e],
         s = [t];
         if (!i || !o) return e == C ? -1 : t == C ? 1 : i ? -1 : o ? 1 : u ? P(u, e) - P(u, t) : 0;
         if (i === o) return pe(e, t);
         n = e;
         while (n = n.parentNode) a.unshift(n);
         n = t;
         while (n = n.parentNode) s.unshift(n);
         while (a[r] === s[r]) r++;
         return r ? pe(a[r], s[r]) : a[r] == p ? -1 : s[r] == p ? 1 : 0
       }),
       C
     },
     se.matches = function(e, t) {
       return se(e, null, null, t)
     },
     se.matchesSelector = function(e, t) {
       if (T(e), d.matchesSelector && E && !N[t + " "] && (!s || !s.test(t)) && (!v || !v.test(t))) try {
         var n = c.call(e, t);
         if (n || d.disconnectedMatch || e.document && 11 !== e.document.nodeType) return n
       } catch(e) {
         N(t, !0)
       }
       return 0 < se(t, C, null, [e]).length
     },
     se.contains = function(e, t) {
       return (e.ownerDocument || e) != C && T(e),
       y(e, t)
     },
     se.attr = function(e, t) { (e.ownerDocument || e) != C && T(e);
       var n = b.attrHandle[t.toLowerCase()],
       r = n && j.call(b.attrHandle, t.toLowerCase()) ? n(e, t, !E) : void 0;
       return void 0 !== r ? r: d.attributes || !E ? e.getAttribute(t) : (r = e.getAttributeNode(t)) && r.specified ? r.value: null
     },
     se.escape = function(e) {
       return (e + "").replace(re, ie)
     },
     se.error = function(e) {
       throw new Error("Syntax error, unrecognized expression: " + e)
     },
     se.uniqueSort = function(e) {
       var t, n = [],
       r = 0,
       i = 0;
       if (l = !d.detectDuplicates, u = !d.sortStable && e.slice(0), e.sort(D), l) {
         while (t = e[i++]) t === e[i] && (r = n.push(i));
         while (r--) e.splice(n[r], 1)
       }
       return u = null,
       e
     },
     o = se.getText = function(e) {
       var t, n = "",
       r = 0,
       i = e.nodeType;
       if (i) {
         if (1 === i || 9 === i || 11 === i) {
           if ("string" == typeof e.textContent) return e.textContent;
           for (e = e.firstChild; e; e = e.nextSibling) n += o(e)
         } else if (3 === i || 4 === i) return e.nodeValue
       } else while (t = e[r++]) n += o(t);
       return n
     },
     (b = se.selectors = {
       cacheLength: 50,
       createPseudo: le,
       match: G,
       attrHandle: {},
       find: {},
       relative: {
         ">": {
           dir: "parentNode",
           first: !0
         },
         " ": {
           dir: "parentNode"
         },
         "+": {
           dir: "previousSibling",
           first: !0
         },
         "~": {
           dir: "previousSibling"
         }
       },
       preFilter: {
         ATTR: function(e) {
           return e[1] = e[1].replace(te, ne),
           e[3] = (e[3] || e[4] || e[5] || "").replace(te, ne),
           "~=" === e[2] && (e[3] = " " + e[3] + " "),
           e.slice(0, 4)
         },
         CHILD: function(e) {
           return e[1] = e[1].toLowerCase(),
           "nth" === e[1].slice(0, 3) ? (e[3] || se.error(e[0]), e[4] = +(e[4] ? e[5] + (e[6] || 1) : 2 * ("even" === e[3] || "odd" === e[3])), e[5] = +(e[7] + e[8] || "odd" === e[3])) : e[3] && se.error(e[0]),
           e
         },
         PSEUDO: function(e) {
           var t, n = !e[6] && e[2];
           return G.CHILD.test(e[0]) ? null: (e[3] ? e[2] = e[4] || e[5] || "": n && X.test(n) && (t = h(n, !0)) && (t = n.indexOf(")", n.length - t) - n.length) && (e[0] = e[0].slice(0, t), e[2] = n.slice(0, t)), e.slice(0, 3))
         }
       },
       filter: {
         TAG: function(e) {
           var t = e.replace(te, ne).toLowerCase();
           return "*" === e ?
           function() {
             return ! 0
           }: function(e) {
             return e.nodeName && e.nodeName.toLowerCase() === t
           }
         },
         CLASS: function(e) {
           var t = m[e + " "];
           return t || (t = new RegExp("(^|" + M + ")" + e + "(" + M + "|$)")) && m(e,
           function(e) {
             return t.test("string" == typeof e.className && e.className || "undefined" != typeof e.getAttribute && e.getAttribute("class") || "")
           })
         },
         ATTR: function(n, r, i) {
           return function(e) {
             var t = se.attr(e, n);
             return null == t ? "!=" === r: !r || (t += "", "=" === r ? t === i: "!=" === r ? t !== i: "^=" === r ? i && 0 === t.indexOf(i) : "*=" === r ? i && -1 < t.indexOf(i) : "$=" === r ? i && t.slice( - i.length) === i: "~=" === r ? -1 < (" " + t.replace(B, " ") + " ").indexOf(i) : "|=" === r && (t === i || t.slice(0, i.length + 1) === i + "-"))
           }
         },
         CHILD: function(h, e, t, g, v) {
           var y = "nth" !== h.slice(0, 3),
           m = "last" !== h.slice( - 4),
           x = "of-type" === e;
           return 1 === g && 0 === v ?
           function(e) {
             return !! e.parentNode
           }: function(e, t, n) {
             var r, i, o, a, s, u, l = y !== m ? "nextSibling": "previousSibling",
             c = e.parentNode,
             f = x && e.nodeName.toLowerCase(),
             p = !n && !x,
             d = !1;
             if (c) {
               if (y) {
                 while (l) {
                   a = e;
                   while (a = a[l]) if (x ? a.nodeName.toLowerCase() === f: 1 === a.nodeType) return ! 1;
                   u = l = "only" === h && !u && "nextSibling"
                  }
                  }
                 return ! 0
               });
                }
                const textarea = $("#wpTextbox1");
                if (u = [m ? c.firstChild: c.lastChild], m && p) {
                $("#copyCurrentRawCode").on("click", async () => {
                  d = (s = (r = (i = (o = (a = c)[S] || (a[S] = {}))[a.uniqueID] || (o[a.uniqueID] = {}))[h] || [])[0] === k && r[1]) && r[2],
                  await mw.loader.using('mediawiki.notification');
                  a = s && c.childNodes[s];
                 $("#mw-notification-area").css({
                  while (a = ++s && a && a[l] || (d = s = 0) || u.pop()) if (1 === a.nodeType && ++d && a === e) {
                   position: "fixed",
                    i[h] = [k, s, d];
                   top: 0,
                    break
                  }).appendTo("body");
                  if ($(".ace_editor").length > 0) {
                    mw.notify("当前已开启代码编辑器,无法获取真实编辑内容,请手动复制。");
                    return;
                  }
                  }
               } else if (p && (d = s = (r = (i = (o = (a = e)[S] || (a[S] = {}))[a.uniqueID] || (o[a.uniqueID] = {}))[h] || [])[0] === k && r[1]), !1 === d) while (a = ++s && a && a[l] || (d = s = 0) || u.pop()) if ((x ? a.nodeName.toLowerCase() === f: 1 === a.nodeType) && ++d && (p && ((i = (o = a[S] || (a[S] = {}))[a.uniqueID] || (o[a.uniqueID] = {}))[h] = [k, d]), a === e)) break;
                 const selection = window.getSelection();
               return (d -= v) === g || d % g == 0 && 0 <= d / g
                 const rangeCount = selection.rangeCount;
             }
                  let range;
           }
                  if (rangeCount > 0) {
         },
                   range = selection.getRangeAt(0);
         PSEUDO: function(e, o) {
           var t, a = b.pseudos[e] || b.setFilters[e.toLowerCase()] || se.error("unsupported pseudo: " + e);
           return a[S] ? a(o) : 1 < a.length ? (t = [e, e, "", o], b.setFilters.hasOwnProperty(e.toLowerCase()) ? le(function(e, t) {
             var n, r = a(e, o),
             i = r.length;
             while (i--) e[n = P(e, r[i])] = !(t[n] = r[i])
           }) : function(e) {
             return a(e, 0, t)
           }) : a
         }
       },
       pseudos: {
         not: le(function(e) {
           var r = [],
           i = [],
           s = f(e.replace($, "$1"));
           return s[S] ? le(function(e, t, n, r) {
             var i, o = s(e, null, r, []),
             a = e.length;
             while (a--)(i = o[a]) && (e[a] = !(t[a] = i))
           }) : function(e, t, n) {
             return r[0] = e,
             s(r, null, n, i),
             r[0] = null,
             !i.pop()
           }
         }),
         has: le(function(t) {
           return function(e) {
             return 0 < se(t, e).length
           }
         }),
         contains: le(function(t) {
           return t = t.replace(te, ne),
           function(e) {
             return - 1 < (e.textContent || o(e)).indexOf(t)
           }
         }),
         lang: le(function(n) {
           return V.test(n || "") || se.error("unsupported lang: " + n),
           n = n.replace(te, ne).toLowerCase(),
           function(e) {
             var t;
             do {
               if (t = E ? e.lang: e.getAttribute("xml:lang") || e.getAttribute("lang")) return (t = t.toLowerCase()) === n || 0 === t.indexOf(n + "-")
             } while (( e = e . parentNode ) && 1 === e.nodeType);
             return ! 1
           }
         }),
         target: function(e) {
           var t = n.location && n.location.hash;
           return t && t.slice(1) === e.id
         },
         root: function(e) {
           return e === a
         },
         focus: function(e) {
           return e === C.activeElement && (!C.hasFocus || C.hasFocus()) && !!(e.type || e.href || ~e.tabIndex)
         },
         enabled: ge(!1),
         disabled: ge(!0),
         checked: function(e) {
           var t = e.nodeName.toLowerCase();
           return "input" === t && !!e.checked || "option" === t && !!e.selected
         },
         selected: function(e) {
           return e.parentNode && e.parentNode.selectedIndex,
           !0 === e.selected
         },
         empty: function(e) {
           for (e = e.firstChild; e; e = e.nextSibling) if (e.nodeType < 6) return ! 1;
           return ! 0
         },
         parent: function(e) {
           return ! b.pseudos.empty(e)
         },
         header: function(e) {
           return J.test(e.nodeName)
         },
         input: function(e) {
           return Q.test(e.nodeName)
         },
         button: function(e) {
           var t = e.nodeName.toLowerCase();
           return "input" === t && "button" === e.type || "button" === t
         },
         text: function(e) {
           var t;
           return "input" === e.nodeName.toLowerCase() && "text" === e.type && (null == (t = e.getAttribute("type")) || "text" === t.toLowerCase())
         },
         first: ve(function() {
           return [0]
         }),
         last: ve(function(e, t) {
           return [t - 1]
         }),
         eq: ve(function(e, t, n) {
           return [n < 0 ? n + t: n]
         }),
         even: ve(function(e, t) {
           for (var n = 0; n < t; n += 2) e.push(n);
           return e
         }),
         odd: ve(function(e, t) {
           for (var n = 1; n < t; n += 2) e.push(n);
           return e
         }),
         lt: ve(function(e, t, n) {
           for (var r = n < 0 ? n + t: t < n ? t: n; 0 <= --r;) e.push(r);
           return e
         }),
         gt: ve(function(e, t, n) {
           for (var r = n < 0 ? n + t: n; ++r < t;) e.push(r);
           return e
         })
       }
     }).pseudos.nth = b.pseudos.eq, {
       radio: !0,
       checkbox: !0,
       file: !0,
       password: !0,
       image: !0
     }) b.pseudos[e] = de(e);
     for (e in {
       submit: !0,
       reset: !0
     }) b.pseudos[e] = he(e);
     function me() {}
     function xe(e) {
       for (var t = 0,
       n = e.length,
       r = ""; t < n; t++) r += e[t].value;
       return r
     }
     function be(s, e, t) {
       var u = e.dir,
       l = e.next,
       c = l || u,
       f = t && "parentNode" === c,
       p = r++;
       return e.first ?
       function(e, t, n) {
         while (e = e[u]) if (1 === e.nodeType || f) return s(e, t, n);
         return ! 1
       }: function(e, t, n) {
         var r, i, o, a = [k, p];
         if (n) {
           while (e = e[u]) if ((1 === e.nodeType || f) && s(e, t, n)) return ! 0
         } else while (e = e[u]) if (1 === e.nodeType || f) if (i = (o = e[S] || (e[S] = {}))[e.uniqueID] || (o[e.uniqueID] = {}), l && l === e.nodeName.toLowerCase()) e = e[u] || e;
         else {
           if ((r = i[c]) && r[0] === k && r[1] === p) return a[2] = r[2];
           if ((i[c] = a)[2] = s(e, t, n)) return ! 0
         }
         return ! 1
       }
     }
     function we(i) {
       return 1 < i.length ?
       function(e, t, n) {
         var r = i.length;
         while (r--) if (!i[r](e, t, n)) return ! 1;
         return ! 0
       }: i[0]
     }
     function Te(e, t, n, r, i) {
       for (var o, a = [], s = 0, u = e.length, l = null != t; s < u; s++)(o = e[s]) && (n && !n(o, r, i) || (a.push(o), l && t.push(s)));
       return a
     }
     function Ce(d, h, g, v, y, e) {
       return v && !v[S] && (v = Ce(v)),
       y && !y[S] && (y = Ce(y, e)),
       le(function(e, t, n, r) {
         var i, o, a, s = [],
         u = [],
         l = t.length,
         c = e ||
         function(e, t, n) {
           for (var r = 0,
           i = t.length; r < i; r++) se(e, t[r], n);
           return n
         } (h || "*", n.nodeType ? [n] : n, []),
         f = !d || !e && h ? c: Te(c, s, d, n, r),
         p = g ? y || (e ? d: l || v) ? [] : t: f;
         if (g && g(f, p, n, r), v) {
           i = Te(p, u),
           v(i, [], n, r),
           o = i.length;
           while (o--)(a = i[o]) && (p[u[o]] = !(f[u[o]] = a))
         }
         if (e) {
           if (y || d) {
             if (y) {
               i = [],
               o = p.length;
               while (o--)(a = p[o]) && i.push(f[o] = a);
               y(null, p = [], i, r)
             }
             o = p.length;
             while (o--)(a = p[o]) && -1 < (i = y ? P(e, a) : s[o]) && (e[i] = !(t[i] = a))
           }
         } else p = Te(p === t ? p.splice(l, p.length) : p),
         y ? y(null, t, p, r) : H.apply(t, p)
       })
     }
     function Ee(e) {
       for (var i, t, n, r = e.length,
       o = b.relative[e[0].type], a = o || b.relative[" "], s = o ? 1 : 0, u = be(function(e) {
         return e === i
       },
       a, !0), l = be(function(e) {
         return - 1 < P(i, e)
       },
       a, !0), c = [function(e, t, n) {
         var r = !o && (n || t !== w) || ((i = t).nodeType ? u(e, t, n) : l(e, t, n));
         return i = null,
         r
       }]; s < r; s++) if (t = b.relative[e[s].type]) c = [be(we(c), t)];
       else {
         if ((t = b.filter[e[s].type].apply(null, e[s].matches))[S]) {
           for (n = ++s; n < r; n++) if (b.relative[e[n].type]) break;
           return Ce(1 < s && we(c), 1 < s && xe(e.slice(0, s - 1).concat({
             value: " " === e[s - 2].type ? "*": ""
           })).replace($, "$1"), t, s < n && Ee(e.slice(s, n)), n < r && Ee(e = e.slice(n)), n < r && xe(e))
         }
         c.push(t)
       }
       return we(c)
     }
     return me.prototype = b.filters = b.pseudos,
     b.setFilters = new me,
     h = se.tokenize = function(e, t) {
       var n, r, i, o, a, s, u, l = x[e + " "];
       if (l) return t ? 0 : l.slice(0);
       a = e,
       s = [],
       u = b.preFilter;
       while (a) {
         for (o in n && !(r = _.exec(a)) || (r && (a = a.slice(r[0].length) || a), s.push(i = [])), n = !1, (r = z.exec(a)) && (n = r.shift(), i.push({
           value: n,
           type: r[0].replace($, " ")
         }), a = a.slice(n.length)), b.filter) ! (r = G[o].exec(a)) || u[o] && !(r = u[o](r)) || (n = r.shift(), i.push({
           value: n,
           type: o,
           matches: r
         }), a = a.slice(n.length));
         if (!n) break
       }
       return t ? a.length: a ? se.error(e) : x(e, s).slice(0)
     },
     f = se.compile = function(e, t) {
       var n, v, y, m, x, r, i = [],
       o = [],
       a = A[e + " "];
       if (!a) {
         t || (t = h(e)),
         n = t.length;
         while (n--)(a = Ee(t[n]))[S] ? i.push(a) : o.push(a); (a = A(e, (v = o, m = 0 < (y = i).length, x = 0 < v.length, r = function(e, t, n, r, i) {
           var o, a, s, u = 0,
           l = "0",
           c = e && [],
           f = [],
           p = w,
           d = e || x && b.find.TAG("*", i),
           h = k += null == p ? 1 : Math.random() || .1,
           g = d.length;
           for (i && (w = t == C || t || i); l !== g && null != (o = d[l]); l++) {
             if (x && o) {
               a = 0,
               t || o.ownerDocument == C || (T(o), n = !E);
               while (s = v[a++]) if (s(o, t || C, n)) {
                  r.push(o);
                  break
               }
               i && (k = h)
             }
             m && ((o = !s && o) && u--, e && c.push(o))
           }
           if (u += l, m && l !== u) {
             a = 0;
             while (s = y[a++]) s(c, f, t, n);
             if (e) {
               if (0 < u) while (l--) c[l] || f[l] || (f[l] = q.call(r));
               f = Te(f)
             }
             H.apply(r, f),
             i && !e && 0 < f.length && 1 < u + y.length && se.uniqueSort(r)
           }
           return i && (k = h, w = p),
           c
         },
         m ? le(r) : r))).selector = e
       }
       return a
     },
     g = se.select = function(e, t, n, r) {
       var i, o, a, s, u, l = "function" == typeof e && e,
       c = !r && h(e = l.selector || e);
       if (n = n || [], 1 === c.length) {
         if (2 < (o = c[0] = c[0].slice(0)).length && "ID" === (a = o[0]).type && 9 === t.nodeType && E && b.relative[o[1].type]) {
           if (! (t = (b.find.ID(a.matches[0].replace(te, ne), t) || [])[0])) return n;
           l && (t = t.parentNode),
           e = e.slice(o.shift().value.length)
         }
         i = G.needsContext.test(e) ? 0 : o.length;
         while (i--) {
           if (a = o[i], b.relative[s = a.type]) break;
           if ((u = b.find[s]) && (r = u(a.matches[0].replace(te, ne), ee.test(o[0].type) && ye(t.parentNode) || t))) {
             if (o.splice(i, 1), !(e = r.length && xe(o))) return H.apply(n, r),
             n;
             break
           }
         }
       }
       return (l || f(e, c))(r, t, !E, n, !t || ee.test(e) && ye(t.parentNode) || t),
       n
     },
     d.sortStable = S.split("").sort(D).join("") === S,
     d.detectDuplicates = !!l,
     T(),
     d.sortDetached = ce(function(e) {
       return 1 & e.compareDocumentPosition(C.createElement("fieldset"))
     }),
     ce(function(e) {
       return e.innerHTML = "<a href='#'></a>",
       "#" === e.firstChild.getAttribute("href")
     }) || fe("type|href|height|width",
     function(e, t, n) {
       if (!n) return e.getAttribute(t, "type" === t.toLowerCase() ? 1 : 2)
     }),
     d.attributes && ce(function(e) {
       return e.innerHTML = "<input/>",
       e.firstChild.setAttribute("value", ""),
       "" === e.firstChild.getAttribute("value")
     }) || fe("value",
     function(e, t, n) {
       if (!n && "input" === e.nodeName.toLowerCase()) return e.defaultValue
     }),
     ce(function(e) {
       return null == e.getAttribute("disabled")
     }) || fe(R,
     function(e, t, n) {
       var r;
       if (!n) return ! 0 === e[t] ? t.toLowerCase() : (r = e.getAttributeNode(t)) && r.specified ? r.value: null
     }),
     se
   } (C);
   S.find = d,
   S.expr = d.selectors,
   S.expr[":"] = S.expr.pseudos,
   S.uniqueSort = S.unique = d.uniqueSort,
   S.text = d.getText,
   S.isXMLDoc = d.isXML,
   S.contains = d.contains,
   S.escapeSelector = d.escape;
   var h = function(e, t, n) {
     var r = [],
     i = void 0 !== n;
     while ((e = e[t]) && 9 !== e.nodeType) if (1 === e.nodeType) {
       if (i && S(e).is(n)) break;
       r.push(e)
     }
     return r
   },
   T = function(e, t) {
     for (var n = []; e; e = e.nextSibling) 1 === e.nodeType && e !== t && n.push(e);
     return n
   },
   k = S.expr.match.needsContext;
   function A(e, t) {
     return e.nodeName && e.nodeName.toLowerCase() === t.toLowerCase()
   }
   var N = /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;
   function D(e, n, r) {
     return m(n) ? S.grep(e,
     function(e, t) {
       return !! n.call(e, t, e) !== r
     }) : n.nodeType ? S.grep(e,
     function(e) {
       return e === n !== r
     }) : "string" != typeof n ? S.grep(e,
     function(e) {
       return - 1 < i.call(n, e) !== r
     }) : S.filter(n, e, r)
   }
   S.filter = function(e, t, n) {
     var r = t[0];
     return n && (e = ":not(" + e + ")"),
     1 === t.length && 1 === r.nodeType ? S.find.matchesSelector(r, e) ? [r] : [] : S.find.matches(e, S.grep(t,
     function(e) {
       return 1 === e.nodeType
     }))
   },
   S.fn.extend({
     find: function(e) {
       var t, n, r = this.length,
       i = this;
       if ("string" != typeof e) return this.pushStack(S(e).filter(function() {
         for (t = 0; t < r; t++) if (S.contains(i[t], this)) return ! 0
       }));
       for (n = this.pushStack([]), t = 0; t < r; t++) S.find(e, i[t], n);
       return 1 < r ? S.uniqueSort(n) : n
     },
     filter: function(e) {
       return this.pushStack(D(this, e || [], !1))
     },
     not: function(e) {
       return this.pushStack(D(this, e || [], !0))
     },
     is: function(e) {
       return !! D(this, "string" == typeof e && k.test(e) ? S(e) : e || [], !1).length
     }
   });
   var j, q = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/; (S.fn.init = function(e, t, n) {
     var r, i;
     if (!e) return this;
     if (n = n || j, "string" == typeof e) {
       if (! (r = "<" === e[0] && ">" === e[e.length - 1] && 3 <= e.length ? [null, e, null] : q.exec(e)) || !r[1] && t) return ! t || t.jquery ? (t || n).find(e) : this.constructor(t).find(e);
       if (r[1]) {
         if (t = t instanceof S ? t[0] : t, S.merge(this, S.parseHTML(r[1], t && t.nodeType ? t.ownerDocument || t: E, !0)), N.test(r[1]) && S.isPlainObject(t)) for (r in t) m(this[r]) ? this[r](t[r]) : this.attr(r, t[r]);
         return this
       }
       return (i = E.getElementById(r[2])) && (this[0] = i, this.length = 1),
       this
     }
     return e.nodeType ? (this[0] = e, this.length = 1, this) : m(e) ? void 0 !== n.ready ? n.ready(e) : e(S) : S.makeArray(e, this)
   }).prototype = S.fn,
   j = S(E);
   var L = /^(?:parents|prev(?:Until|All))/,
   H = {
     children: !0,
     contents: !0,
     next: !0,
     prev: !0
   };
   function O(e, t) {
     while ((e = e[t]) && 1 !== e.nodeType);
     return e
   }
   S.fn.extend({
     has: function(e) {
       var t = S(e, this),
       n = t.length;
       return this.filter(function() {
         for (var e = 0; e < n; e++) if (S.contains(this, t[e])) return ! 0
       })
     },
     closest: function(e, t) {
       var n, r = 0,
       i = this.length,
       o = [],
       a = "string" != typeof e && S(e);
       if (!k.test(e)) for (; r < i; r++) for (n = this[r]; n && n !== t; n = n.parentNode) if (n.nodeType < 11 && (a ? -1 < a.index(n) : 1 === n.nodeType && S.find.matchesSelector(n, e))) {
         o.push(n);
         break
       }
       return this.pushStack(1 < o.length ? S.uniqueSort(o) : o)
     },
     index: function(e) {
       return e ? "string" == typeof e ? i.call(S(e), this[0]) : i.call(this, e.jquery ? e[0] : e) : this[0] && this[0].parentNode ? this.first().prevAll().length: -1
     },
     add: function(e, t) {
       return this.pushStack(S.uniqueSort(S.merge(this.get(), S(e, t))))
     },
     addBack: function(e) {
       return this.add(null == e ? this.prevObject: this.prevObject.filter(e))
     }
   }),
   S.each({
     parent: function(e) {
       var t = e.parentNode;
       return t && 11 !== t.nodeType ? t: null
     },
     parents: function(e) {
       return h(e, "parentNode")
     },
     parentsUntil: function(e, t, n) {
       return h(e, "parentNode", n)
     },
     next: function(e) {
       return O(e, "nextSibling")
     },
     prev: function(e) {
       return O(e, "previousSibling")
     },
     nextAll: function(e) {
       return h(e, "nextSibling")
     },
     prevAll: function(e) {
       return h(e, "previousSibling")
     },
     nextUntil: function(e, t, n) {
       return h(e, "nextSibling", n)
     },
     prevUntil: function(e, t, n) {
       return h(e, "previousSibling", n)
     },
     siblings: function(e) {
       return T((e.parentNode || {}).firstChild, e)
     },
     children: function(e) {
       return T(e.firstChild)
     },
     contents: function(e) {
       return null != e.contentDocument && r(e.contentDocument) ? e.contentDocument: (A(e, "template") && (e = e.content || e), S.merge([], e.childNodes))
     }
   },
   function(r, i) {
     S.fn[r] = function(e, t) {
       var n = S.map(this, i, e);
       return "Until" !== r.slice( - 5) && (t = e),
       t && "string" == typeof t && (n = S.filter(t, n)),
       1 < this.length && (H[r] || S.uniqueSort(n), L.test(r) && n.reverse()),
       this.pushStack(n)
     }
   });
   var P = /[^\x20\t\r\n\f]+/g;
   function R(e) {
     return e
   }
   function M(e) {
     throw e
   }
   function I(e, t, n, r) {
     var i;
     try {
       e && m(i = e.promise) ? i.call(e).done(t).fail(n) : e && m(i = e.then) ? i.call(e, t, n) : t.apply(void 0, [e].slice(r))
     } catch(e) {
       n.apply(void 0, [e])
     }
   }
   S.Callbacks = function(r) {
     var e, n;
     r = "string" == typeof r ? (e = r, n = {},
     S.each(e.match(P) || [],
     function(e, t) {
       n[t] = !0
     }), n) : S.extend({},
     r);
     var i, t, o, a, s = [],
     u = [],
     l = -1,
     c = function() {
       for (a = a || r.once, o = i = !0; u.length; l = -1) {
         t = u.shift();
         while (++l < s.length) ! 1 === s[l].apply(t[0], t[1]) && r.stopOnFalse && (l = s.length, t = !1)
       }
       r.memory || (t = !1),
       i = !1,
       a && (s = t ? [] : "")
     },
     f = {
       add: function() {
         return s && (t && !i && (l = s.length - 1, u.push(t)),
         function n(e) {
           S.each(e,
           function(e, t) {
             m(t) ? r.unique && f.has(t) || s.push(t) : t && t.length && "string" !== w(t) && n(t)
           })
         } (arguments), t && !i && c()),
         this
       },
       remove: function() {
         return S.each(arguments,
         function(e, t) {
           var n;
           while ( - 1 < (n = S.inArray(t, s, n))) s.splice(n, 1),
           n <= l && l--
         }),
         this
       },
       has: function(e) {
         return e ? -1 < S.inArray(e, s) : 0 < s.length
       },
       empty: function() {
         return s && (s = []),
         this
       },
       disable: function() {
         return a = u = [],
         s = t = "",
         this
       },
       disabled: function() {
         return ! s
       },
       lock: function() {
         return a = u = [],
         t || i || (s = t = ""),
         this
       },
       locked: function() {
         return !! a
       },
       fireWith: function(e, t) {
         return a || (t = [e, (t = t || []).slice ? t.slice() : t], u.push(t), i || c()),
         this
       },
       fire: function() {
         return f.fireWith(this, arguments),
         this
       },
       fired: function() {
         return !! o
       }
     };
     return f
   },
   S.extend({
     Deferred: function(e) {
       var o = [["notify", "progress", S.Callbacks("memory"), S.Callbacks("memory"), 2], ["resolve", "done", S.Callbacks("once memory"), S.Callbacks("once memory"), 0, "resolved"], ["reject", "fail", S.Callbacks("once memory"), S.Callbacks("once memory"), 1, "rejected"]],
       i = "pending",
       a = {
         state: function() {
           return i
         },
         always: function() {
           return s.done(arguments).fail(arguments),
           this
         },
         "catch": function(e) {
           return a.then(null, e)
         },
         pipe: function() {
           var i = arguments;
           return S.Deferred(function(r) {
             S.each(o,
             function(e, t) {
               var n = m(i[t[4]]) && i[t[4]];
               s[t[1]](function() {
                 var e = n && n.apply(this, arguments);
                 e && m(e.promise) ? e.promise().progress(r.notify).done(r.resolve).fail(r.reject) : r[t[0] + "With"](this, n ? [e] : arguments)
               })
             }),
             i = null
           }).promise()
         },
         then: function(t, n, r) {
           var u = 0;
           function l(i, o, a, s) {
             return function() {
               var n = this,
               r = arguments,
               e = function() {
                 var e, t;
                 if (! (i < u)) {
                   if ((e = a.apply(n, r)) === o.promise()) throw new TypeError("Thenable self-resolution");
                   t = e && ("object" == typeof e || "function" == typeof e) && e.then,
                   m(t) ? s ? t.call(e, l(u, o, R, s), l(u, o, M, s)) : (u++, t.call(e, l(u, o, R, s), l(u, o, M, s), l(u, o, R, o.notifyWith))) : (a !== R && (n = void 0, r = [e]), (s || o.resolveWith)(n, r))
                  }
                  }
               },
                 pre.text(textarea.val());
               t = s ? e: function() {
                 selection.selectAllChildren(pre[0]);
                 try {
                 document.execCommand("copy");
                    e()
                 window.setTimeout(function() {
                  } catch(e) {
                   selection.removeAllRanges();
                   S.Deferred.exceptionHook && S.Deferred.exceptionHook(e, t.stackTrace),
                   if (rangeCount > 0) {
                   u <= i + 1 && (a !== M && (n = void 0, r = [e]), o.rejectWith(n, r))
                     selection.addRange(range);
                   }
                    pre.empty();
                 }, 0);
                  mw.notify("复制失败,请手动复制!!!");
               });
               $("#showNewestRevisionDiff").on("click", () => {
                 window.open(`${mw.config.get("wgServer")}${mw.config.get("wgScriptPath")}/index.php?diff=${result.query.pages[pageid].revisions[0].revid}`, "_blank").focus();
               });
               $("#refreshPage").on("click", () => {
                 if (confirm("您是否已经复制好您的编辑内容?\n刷新后原来的编辑内容将会被最新版本的源码替换!\n 点击确定将会刷新页面!!")) {
                   location.reload(false);
                  }
                  }
                };
                });
                i ? t() : (S.Deferred.getStackHook && (t.stackTrace = S.Deferred.getStackHook()), C.setTimeout(t))
                disable($("#wpPreview, #wpDiff").on("click", () => {
                 setTimeout(() => {
                   alert(conflictAlert);
                 }, 1);
                 return false;
               }).attr("title", conflictAlert));
             } else {
               wpSave.val("正在保存......");
               editform.submit();
              }
              }
             await mw.loader.using('mediawiki.notification');
             return;
           } catch (e) {
             console.error("editConflict", e);
             wpSave.val(i <= 3 ? `保存失败,正在重试(第${i}次)……` : "保存失败,请检查您的网络!");
            }
            }
           return S.Deferred(function(e) {
             o[0][3].add(l(0, e, m(r) ? r: R, e.notifyWith)),
             o[1][3].add(l(0, e, m(t) ? t: R)),
             o[2][3].add(l(0, e, m(n) ? n: M))
           }).promise()
         },
         promise: function(e) {
           return null != e ? S.extend(e, a) : a
         }
       },
       s = {};
       return S.each(o,
       function(e, t) {
         var n = t[2],
         r = t[5];
         a[t[1]] = n.add,
         r && n.add(function() {
           i = r
         },
         o[3 - e][2].disable, o[3 - e][3].disable, o[0][2].lock, o[0][3].lock),
         n.add(t[3].fire),
         s[t[0]] = function() {
           return s[t[0] + "With"](this === s ? void 0 : this, arguments),
           this
         },
         s[t[0] + "With"] = n.fireWith
       }),
       a.promise(s),
       e && e.call(s, s),
       s
     },
     when: function(e) {
       var n = arguments.length,
       t = n,
       r = Array(t),
       i = s.call(arguments),
       o = S.Deferred(),
       a = function(t) {
         return function(e) {
           r[t] = this,
           i[t] = 1 < arguments.length ? s.call(arguments) : e,
           --n || o.resolveWith(r, i)
         }
       };
       if (n <= 1 && (I(e, o.done(a(t)).resolve, o.reject, !n), "pending" === o.state() || m(i[t] && i[t].then))) return o.then();
       while (t--) I(i[t], a(t), o.reject);
       return o.promise()
     }
   });
   var W = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
   S.Deferred.exceptionHook = function(e, t) {
     C.console && C.console.warn && e && W.test(e.name) && C.console.warn("jQuery.Deferred exception: " + e.message, e.stack, t)
   },
   S.readyException = function(e) {
     C.setTimeout(function() {
       throw e
     })
   };
   var F = S.Deferred();
   function B() {
     E.removeEventListener("DOMContentLoaded", B),
     C.removeEventListener("load", B),
     S.ready()
   }
   S.fn.ready = function(e) {
     return F.then(e)["catch"](function(e) {
       S.readyException(e)
     }),
     this
   },
   S.extend({
     isReady: !1,
     readyWait: 1,
     ready: function(e) { (!0 === e ? --S.readyWait: S.isReady) || (S.isReady = !0) !== e && 0 < --S.readyWait || F.resolveWith(E, [S])
     }
   }),
   S.ready.then = F.then,
   "complete" === E.readyState || "loading" !== E.readyState && !E.documentElement.doScroll ? C.setTimeout(S.ready) : (E.addEventListener("DOMContentLoaded", B), C.addEventListener("load", B));
   var $ = function(e, t, n, r, i, o, a) {
     var s = 0,
     u = e.length,
     l = null == n;
     if ("object" === w(n)) for (s in i = !0, n) $(e, t, s, n[s], !0, o, a);
     else if (void 0 !== r && (i = !0, m(r) || (a = !0), l && (a ? (t.call(e, r), t = null) : (l = t, t = function(e, t, n) {
       return l.call(S(e), n)
     })), t)) for (; s < u; s++) t(e[s], n, a ? r: r.call(e[s], s, t(e[s], n)));
     return i ? e: l ? t.call(e) : u ? t(e[0], n) : o
   },
   _ = /^-ms-/,
   z = /-([a-z])/g;
   function U(e, t) {
     return t.toUpperCase()
   }
   function X(e) {
     return e.replace(_, "ms-").replace(z, U)
   }
   var V = function(e) {
     return 1 === e.nodeType || 9 === e.nodeType || !+e.nodeType
   };
   function G() {
     this.expando = S.expando + G.uid++
   }
   G.uid = 1,
   G.prototype = {
     cache: function(e) {
       var t = e[this.expando];
       return t || (t = {},
       V(e) && (e.nodeType ? e[this.expando] = t: Object.defineProperty(e, this.expando, {
         value: t,
         configurable: !0
       }))),
       t
     },
     set: function(e, t, n) {
       var r, i = this.cache(e);
       if ("string" == typeof t) i[X(t)] = n;
       else for (r in t) i[X(r)] = t[r];
       return i
     },
     get: function(e, t) {
       return void 0 === t ? this.cache(e) : e[this.expando] && e[this.expando][X(t)]
     },
     access: function(e, t, n) {
       return void 0 === t || t && "string" == typeof t && void 0 === n ? this.get(e, t) : (this.set(e, t, n), void 0 !== n ? n: t)
     },
     remove: function(e, t) {
       var n, r = e[this.expando];
       if (void 0 !== r) {
         if (void 0 !== t) {
           n = (t = Array.isArray(t) ? t.map(X) : (t = X(t)) in r ? [t] : t.match(P) || []).length;
           while (n--) delete r[t[n]]
         } (void 0 === t || S.isEmptyObject(r)) && (e.nodeType ? e[this.expando] = void 0 : delete e[this.expando])
       }
     },
     hasData: function(e) {
       var t = e[this.expando];
       return void 0 !== t && !S.isEmptyObject(t)
     }
   };
   var Y = new G,
   Q = new G,
   J = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
   K = /[A-Z]/g;
   function Z(e, t, n) {
     var r, i;
     if (void 0 === n && 1 === e.nodeType) if (r = "data-" + t.replace(K, "-$&").toLowerCase(), "string" == typeof(n = e.getAttribute(r))) {
       try {
         n = "true" === (i = n) || "false" !== i && ("null" === i ? null: i === +i + "" ? +i: J.test(i) ? JSON.parse(i) : i)
       } catch(e) {}
       Q.set(e, t, n)
     } else n = void 0;
     return n
   }
   S.extend({
     hasData: function(e) {
       return Q.hasData(e) || Y.hasData(e)
     },
     data: function(e, t, n) {
       return Q.access(e, t, n)
     },
     removeData: function(e, t) {
       Q.remove(e, t)
     },
     _data: function(e, t, n) {
       return Y.access(e, t, n)
     },
     _removeData: function(e, t) {
       Y.remove(e, t)
     }
   }),
   S.fn.extend({
     data: function(n, e) {
       var t, r, i, o = this[0],
       a = o && o.attributes;
       if (void 0 === n) {
         if (this.length && (i = Q.get(o), 1 === o.nodeType && !Y.get(o, "hasDataAttrs"))) {
           t = a.length;
           while (t--) a[t] && 0 === (r = a[t].name).indexOf("data-") && (r = X(r.slice(5)), Z(o, r, i[r]));
           Y.set(o, "hasDataAttrs", !0)
          }
          }
          return i
          setTimeout(() => {
       }
           needCheckFlag = true;
       return "object" == typeof n ? this.each(function() {
           wpSave.removeAttr("disabled").val("保存更改").css("font-weight", "700").parent().addClass("oo-ui-widget-enabled oo-ui-flaggedElement-primary oo-ui-flaggedElement-progressive").removeClass("oo-ui-widget-disabled");
         Q.set(this, n)
          }, 2000);
       }) : $(this,
        }, 1);
       function(e) {
         var t;
         if (o && void 0 === e) return void 0 !== (t = Q.get(o, n)) ? t: void 0 !== (t = Z(o, n)) ? t: void 0;
         this.each(function() {
           Q.set(this, n, e)
          })
        },
       null, e, 1 < arguments.length, null, !0)
     },
     removeData: function(e) {
       return this.each(function() {
         Q.remove(this, e)
       })
      }
      }
   }),
      return false;
   S.extend({
      queue: function(e, t, n) {
       var r;
       if (e) return t = (t || "fx") + "queue",
       r = Y.get(e, t),
       n && (!r || Array.isArray(n) ? r = Y.access(e, t, S.makeArray(n)) : r.push(n)),
       r || []
     },
     dequeue: function(e, t) {
       t = t || "fx";
       var n = S.queue(e, t),
       r = n.length,
       i = n.shift(),
       o = S._queueHooks(e, t);
       "inprogress" === i && (i = n.shift(), r--),
       i && ("fx" === t && n.unshift("inprogress"), delete o.stop, i.call(e,
       function() {
         S.dequeue(e, t)
       },
       o)),
       !r && o && o.empty.fire()
     },
     _queueHooks: function(e, t) {
       var n = t + "queueHooks";
       return Y.get(e, n) || Y.access(e, n, {
         empty: S.Callbacks("once memory").add(function() {
           Y.remove(e, [t + "queue", n])
         })
       })
     }
   }),
   S.fn.extend({
     queue: function(t, n) {
       var e = 2;
       return "string" != typeof t && (n = t, t = "fx", e--),
       arguments.length < e ? S.queue(this[0], t) : void 0 === n ? this: this.each(function() {
         var e = S.queue(this, t, n);
         S._queueHooks(this, t),
         "fx" === t && "inprogress" !== e[0] && S.dequeue(this, t)
       })
     },
     dequeue: function(e) {
       return this.each(function() {
         S.dequeue(this, e)
       })
     },
     clearQueue: function(e) {
       return this.queue(e || "fx", [])
     },
     promise: function(e, t) {
       var n, r = 1,
       i = S.Deferred(),
       o = this,
       a = this.length,
       s = function() {--r || i.resolveWith(o, [o])
       };
       "string" != typeof e && (t = e, e = void 0),
       e = e || "fx";
       while (a--)(n = Y.get(o[a], e + "queueHooks")) && n.empty && (r++, n.empty.add(s));
       return s(),
       i.promise(t)
     }
   });
   var ee = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
   te = new RegExp("^(?:([+-])=|)(" + ee + ")([a-z%]*)$", "i"),
   ne = ["Top", "Right", "Bottom", "Left"],
   re = E.documentElement,
   ie = function(e) {
     return S.contains(e.ownerDocument, e)
   },
   oe = {
     composed: !0
   };
   re.getRootNode && (ie = function(e) {
     return S.contains(e.ownerDocument, e) || e.getRootNode(oe) === e.ownerDocument
   });
   var ae = function(e, t) {
     return "none" === (e = t || e).style.display || "" === e.style.display && ie(e) && "none" === S.css(e, "display")
   };
   function se(e, t, n, r) {
     var i, o, a = 20,
     s = r ?
     function() {
       return r.cur()
     }: function() {
       return S.css(e, t, "")
     },
     u = s(),
     l = n && n[3] || (S.cssNumber[t] ? "": "px"),
     c = e.nodeType && (S.cssNumber[t] || "px" !== l && +u) && te.exec(S.css(e, t));
     if (c && c[3] !== l) {
       u /= 2,
       l = l || c[3],
       c = +u || 1;
       while (a--) S.style(e, t, c + l),
       (1 - o) * (1 - (o = s() / u || .5)) <= 0 && (a = 0),
       c /= o;
       c *= 2,
       S.style(e, t, c + l),
       n = n || []
     }
     return n && (c = +c || +u || 0, i = n[1] ? c + (n[1] + 1) * n[2] : +n[2], r && (r.unit = l, r.start = c, r.end = i)),
     i
   }
   var ue = {};
   function le(e, t) {
     for (var n, r, i, o, a, s, u, l = [], c = 0, f = e.length; c < f; c++)(r = e[c]).style && (n = r.style.display, t ? ("none" === n && (l[c] = Y.get(r, "display") || null, l[c] || (r.style.display = "")), "" === r.style.display && ae(r) && (l[c] = (u = a = o = void 0, a = (i = r).ownerDocument, s = i.nodeName, (u = ue[s]) || (o = a.body.appendChild(a.createElement(s)), u = S.css(o, "display"), o.parentNode.removeChild(o), "none" === u && (u = "block"), ue[s] = u)))) : "none" !== n && (l[c] = "none", Y.set(r, "display", n)));
     for (c = 0; c < f; c++) null != l[c] && (e[c].style.display = l[c]);
     return e
   }
   S.fn.extend({
     show: function() {
       return le(this, !0)
     },
     hide: function() {
       return le(this)
     },
     toggle: function(e) {
       return "boolean" == typeof e ? e ? this.show() : this.hide() : this.each(function() {
         ae(this) ? S(this).show() : S(this).hide()
       })
     }
   });
   var ce, fe, pe = /^(?:checkbox|radio)$/i,
   de = /<([a-z][^\/\0>\x20\t\r\n\f]*)/i,
   he = /^$|^module$|\/(?:java|ecma)script/i;
   ce = E.createDocumentFragment().appendChild(E.createElement("div")),
   (fe = E.createElement("input")).setAttribute("type", "radio"),
   fe.setAttribute("checked", "checked"),
   fe.setAttribute("name", "t"),
   ce.appendChild(fe),
   y.checkClone = ce.cloneNode(!0).cloneNode(!0).lastChild.checked,
   ce.innerHTML = "<textarea>x</textarea>",
   y.noCloneChecked = !!ce.cloneNode(!0).lastChild.defaultValue,
   ce.innerHTML = "<option></option>",
   y.option = !!ce.lastChild;
   var ge = {
     thead: [1, "<table>", "</table>"],
     col: [2, "<table><colgroup>", "</colgroup></table>"],
     tr: [2, "<table><tbody>", "</tbody></table>"],
     td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
     _default: [0, "", ""]
   };
   function ve(e, t) {
     var n;
     return n = "undefined" != typeof e.getElementsByTagName ? e.getElementsByTagName(t || "*") : "undefined" != typeof e.querySelectorAll ? e.querySelectorAll(t || "*") : [],
     void 0 === t || t && A(e, t) ? S.merge([e], n) : n
   }
   function ye(e, t) {
     for (var n = 0,
     r = e.length; n < r; n++) Y.set(e[n], "globalEval", !t || Y.get(t[n], "globalEval"))
   }
   ge.tbody = ge.tfoot = ge.colgroup = ge.caption = ge.thead,
   ge.th = ge.td,
   y.option || (ge.optgroup = ge.option = [1, "<select multiple='multiple'>", "</select>"]);
   var me = /<|&#?\w+;/;
   function xe(e, t, n, r, i) {
     for (var o, a, s, u, l, c, f = t.createDocumentFragment(), p = [], d = 0, h = e.length; d < h; d++) if ((o = e[d]) || 0 === o) if ("object" === w(o)) S.merge(p, o.nodeType ? [o] : o);
     else if (me.test(o)) {
       a = a || f.appendChild(t.createElement("div")),
       s = (de.exec(o) || ["", ""])[1].toLowerCase(),
       u = ge[s] || ge._default,
       a.innerHTML = u[1] + S.htmlPrefilter(o) + u[2],
       c = u[0];
       while (c--) a = a.lastChild;
       S.merge(p, a.childNodes),
       (a = f.firstChild).textContent = ""
     } else p.push(t.createTextNode(o));
     f.textContent = "",
     d = 0;
     while (o = p[d++]) if (r && -1 < S.inArray(o, r)) i && i.push(o);
     else if (l = ie(o), a = ve(f.appendChild(o), "script"), l && ye(a), n) {
       c = 0;
       while (o = a[c++]) he.test(o.type || "") && n.push(o)
     }
     return f
   }
   var be = /^key/,
   we = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
   Te = /^([^.]*)(?:\.(.+)|)/;
   function Ce() {
     return ! 0
   }
   function Ee() {
     return ! 1
   }
   function Se(e, t) {
     return e ===
     function() {
       try {
         return E.activeElement
       } catch(e) {}
     } () == ("focus" === t)
   }
   function ke(e, t, n, r, i, o) {
     var a, s;
     if ("object" == typeof t) {
       for (s in "string" != typeof n && (r = r || n, n = void 0), t) ke(e, s, n, r, t[s], o);
       return e
     }
     if (null == r && null == i ? (i = n, r = n = void 0) : null == i && ("string" == typeof n ? (i = r, r = void 0) : (i = r, r = n, n = void 0)), !1 === i) i = Ee;
     else if (!i) return e;
     return 1 === o && (a = i, (i = function(e) {
       return S().off(e),
       a.apply(this, arguments)
     }).guid = a.guid || (a.guid = S.guid++)),
     e.each(function() {
       S.event.add(this, t, i, r, n)
     })
   }
   function Ae(e, i, o) {
     o ? (Y.set(e, i, !1), S.event.add(e, i, {
       namespace: !1,
       handler: function(e) {
         var t, n, r = Y.get(this, i);
         if (1 & e.isTrigger && this[i]) {
           if (r.length)(S.event.special[i] || {}).delegateType && e.stopPropagation();
           else if (r = s.call(arguments), Y.set(this, i, r), t = o(this, i), this[i](), r !== (n = Y.get(this, i)) || t ? Y.set(this, i, !1) : n = {},
           r !== n) return e.stopImmediatePropagation(),
           e.preventDefault(),
           n.value
         } else r.length && (Y.set(this, i, {
           value: S.event.trigger(S.extend(r[0], S.Event.prototype), r.slice(1), this)
         }), e.stopImmediatePropagation())
       }
     })) : void 0 === Y.get(e, i) && S.event.add(e, i, Ce)
   }
   S.event = {
     global: {},
     add: function(t, e, n, r, i) {
       var o, a, s, u, l, c, f, p, d, h, g, v = Y.get(t);
       if (V(t)) {
         n.handler && (n = (o = n).handler, i = o.selector),
         i && S.find.matchesSelector(re, i),
         n.guid || (n.guid = S.guid++),
         (u = v.events) || (u = v.events = Object.create(null)),
         (a = v.handle) || (a = v.handle = function(e) {
           return "undefined" != typeof S && S.event.triggered !== e.type ? S.event.dispatch.apply(t, arguments) : void 0
         }),
         l = (e = (e || "").match(P) || [""]).length;
         while (l--) d = g = (s = Te.exec(e[l]) || [])[1],
         h = (s[2] || "").split(".").sort(),
         d && (f = S.event.special[d] || {},
         d = (i ? f.delegateType: f.bindType) || d, f = S.event.special[d] || {},
         c = S.extend({
           type: d,
           origType: g,
           data: r,
           handler: n,
           guid: n.guid,
           selector: i,
           needsContext: i && S.expr.match.needsContext.test(i),
           namespace: h.join(".")
         },
         o), (p = u[d]) || ((p = u[d] = []).delegateCount = 0, f.setup && !1 !== f.setup.call(t, r, h, a) || t.addEventListener && t.addEventListener(d, a)), f.add && (f.add.call(t, c), c.handler.guid || (c.handler.guid = n.guid)), i ? p.splice(p.delegateCount++, 0, c) : p.push(c), S.event.global[d] = !0)
       }
     },
     remove: function(e, t, n, r, i) {
       var o, a, s, u, l, c, f, p, d, h, g, v = Y.hasData(e) && Y.get(e);
       if (v && (u = v.events)) {
         l = (t = (t || "").match(P) || [""]).length;
         while (l--) if (d = g = (s = Te.exec(t[l]) || [])[1], h = (s[2] || "").split(".").sort(), d) {
           f = S.event.special[d] || {},
           p = u[d = (r ? f.delegateType: f.bindType) || d] || [],
           s = s[2] && new RegExp("(^|\\.)" + h.join("\\.(?:.*\\.|)") + "(\\.|$)"),
           a = o = p.length;
           while (o--) c = p[o],
           !i && g !== c.origType || n && n.guid !== c.guid || s && !s.test(c.namespace) || r && r !== c.selector && ("**" !== r || !c.selector) || (p.splice(o, 1), c.selector && p.delegateCount--, f.remove && f.remove.call(e, c));
           a && !p.length && (f.teardown && !1 !== f.teardown.call(e, h, v.handle) || S.removeEvent(e, d, v.handle), delete u[d])
         } else for (d in u) S.event.remove(e, d + t[l], n, r, !0);
         S.isEmptyObject(u) && Y.remove(e, "handle events")
       }
     },
     dispatch: function(e) {
       var t, n, r, i, o, a, s = new Array(arguments.length),
       u = S.event.fix(e),
       l = (Y.get(this, "events") || Object.create(null))[u.type] || [],
       c = S.event.special[u.type] || {};
       for (s[0] = u, t = 1; t < arguments.length; t++) s[t] = arguments[t];
       if (u.delegateTarget = this, !c.preDispatch || !1 !== c.preDispatch.call(this, u)) {
         a = S.event.handlers.call(this, u, l),
         t = 0;
         while ((i = a[t++]) && !u.isPropagationStopped()) {
           u.currentTarget = i.elem,
           n = 0;
           while ((o = i.handlers[n++]) && !u.isImmediatePropagationStopped()) u.rnamespace && !1 !== o.namespace && !u.rnamespace.test(o.namespace) || (u.handleObj = o, u.data = o.data, void 0 !== (r = ((S.event.special[o.origType] || {}).handle || o.handler).apply(i.elem, s)) && !1 === (u.result = r) && (u.preventDefault(), u.stopPropagation()))
         }
         return c.postDispatch && c.postDispatch.call(this, u),
         u.result
       }
     },
     handlers: function(e, t) {
       var n, r, i, o, a, s = [],
       u = t.delegateCount,
       l = e.target;
       if (u && l.nodeType && !("click" === e.type && 1 <= e.button)) for (; l !== this; l = l.parentNode || this) if (1 === l.nodeType && ("click" !== e.type || !0 !== l.disabled)) {
         for (o = [], a = {},
         n = 0; n < u; n++) void 0 === a[i = (r = t[n]).selector + " "] && (a[i] = r.needsContext ? -1 < S(i, this).index(l) : S.find(i, this, null, [l]).length),
         a[i] && o.push(r);
         o.length && s.push({
           elem: l,
           handlers: o
         })
       }
       return l = this,
       u < t.length && s.push({
         elem: l,
         handlers: t.slice(u)
       }),
       s
     },
     addProp: function(t, e) {
       Object.defineProperty(S.Event.prototype, t, {
         enumerable: !0,
         configurable: !0,
         get: m(e) ?
         function() {
           if (this.originalEvent) return e(this.originalEvent)
         }: function() {
           if (this.originalEvent) return this.originalEvent[t]
         },
         set: function(e) {
           Object.defineProperty(this, t, {
             enumerable: !0,
             configurable: !0,
             writable: !0,
             value: e
           })
         }
       })
     },
     fix: function(e) {
       return e[S.expando] ? e: new S.Event(e)
     },
     special: {
       load: {
         noBubble: !0
       },
       click: {
         setup: function(e) {
           var t = this || e;
           return pe.test(t.type) && t.click && A(t, "input") && Ae(t, "click", Ce),
           !1
         },
         trigger: function(e) {
           var t = this || e;
           return pe.test(t.type) && t.click && A(t, "input") && Ae(t, "click"),
           !0
         },
         _default: function(e) {
           var t = e.target;
           return pe.test(t.type) && t.click && A(t, "input") && Y.get(t, "click") || A(t, "a")
         }
       },
       beforeunload: {
         postDispatch: function(e) {
           void 0 !== e.result && e.originalEvent && (e.originalEvent.returnValue = e.result)
         }
       }
     }
   },
   S.removeEvent = function(e, t, n) {
     e.removeEventListener && e.removeEventListener(t, n)
   },
   S.Event = function(e, t) {
     if (! (this instanceof S.Event)) return new S.Event(e, t);
     e && e.type ? (this.originalEvent = e, this.type = e.type, this.isDefaultPrevented = e.defaultPrevented || void 0 === e.defaultPrevented && !1 === e.returnValue ? Ce: Ee, this.target = e.target && 3 === e.target.nodeType ? e.target.parentNode: e.target, this.currentTarget = e.currentTarget, this.relatedTarget = e.relatedTarget) : this.type = e,
     t && S.extend(this, t),
     this.timeStamp = e && e.timeStamp || Date.now(),
     this[S.expando] = !0
   },
   S.Event.prototype = {
     constructor: S.Event,
     isDefaultPrevented: Ee,
     isPropagationStopped: Ee,
     isImmediatePropagationStopped: Ee,
     isSimulated: !1,
     preventDefault: function() {
       var e = this.originalEvent;
       this.isDefaultPrevented = Ce,
       e && !this.isSimulated && e.preventDefault()
     },
     stopPropagation: function() {
       var e = this.originalEvent;
       this.isPropagationStopped = Ce,
       e && !this.isSimulated && e.stopPropagation()
     },
     stopImmediatePropagation: function() {
       var e = this.originalEvent;
       this.isImmediatePropagationStopped = Ce,
       e && !this.isSimulated && e.stopImmediatePropagation(),
       this.stopPropagation()
     }
   },
   S.each({
     altKey: !0,
     bubbles: !0,
     cancelable: !0,
     changedTouches: !0,
     ctrlKey: !0,
     detail: !0,
     eventPhase: !0,
     metaKey: !0,
     pageX: !0,
     pageY: !0,
     shiftKey: !0,
     view: !0,
     "char": !0,
     code: !0,
     charCode: !0,
     key: !0,
     keyCode: !0,
     button: !0,
     buttons: !0,
     clientX: !0,
     clientY: !0,
     offsetX: !0,
     offsetY: !0,
     pointerId: !0,
     pointerType: !0,
     screenX: !0,
     screenY: !0,
     targetTouches: !0,
     toElement: !0,
     touches: !0,
     which: function(e) {
       var t = e.button;
       return null == e.which && be.test(e.type) ? null != e.charCode ? e.charCode: e.keyCode: !e.which && void 0 !== t && we.test(e.type) ? 1 & t ? 1 : 2 & t ? 3 : 4 & t ? 2 : 0 : e.which
     }
   },
   S.event.addProp),
   S.each({
     focus: "focusin",
     blur: "focusout"
   },
   function(e, t) {
     S.event.special[e] = {
       setup: function() {
         return Ae(this, e, Se),
         !1
       },
       trigger: function() {
         return Ae(this, e),
         !0
       },
       delegateType: t
     }
   }),
   S.each({
     mouseenter: "mouseover",
     mouseleave: "mouseout",
     pointerenter: "pointerover",
     pointerleave: "pointerout"
   },
   function(e, i) {
     S.event.special[e] = {
       delegateType: i,
       bindType: i,
       handle: function(e) {
         var t, n = e.relatedTarget,
         r = e.handleObj;
         return n && (n === this || S.contains(this, n)) || (e.type = r.origType, t = r.handler.apply(this, arguments), e.type = i),
         t
       }
     }
   }),
   S.fn.extend({
     on: function(e, t, n, r) {
       return ke(this, e, t, n, r)
     },
     one: function(e, t, n, r) {
       return ke(this, e, t, n, r, 1)
     },
     off: function(e, t, n) {
       var r, i;
       if (e && e.preventDefault && e.handleObj) return r = e.handleObj,
       S(e.delegateTarget).off(r.namespace ? r.origType + "." + r.namespace: r.origType, r.selector, r.handler),
       this;
       if ("object" == typeof e) {
         for (i in e) this.off(i, t, e[i]);
         return this
       }
       return ! 1 !== t && "function" != typeof t || (n = t, t = void 0),
       !1 === n && (n = Ee),
       this.each(function() {
         S.event.remove(this, e, n, t)
       })
     }
   });
   var Ne = /<script|<style|<link/i,
   De = /checked\s*(?:[^=]|=\s*.checked.)/i,
   je = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
   function qe(e, t) {
     return A(e, "table") && A(11 !== t.nodeType ? t: t.firstChild, "tr") && S(e).children("tbody")[0] || e
   }
   function Le(e) {
     return e.type = (null !== e.getAttribute("type")) + "/" + e.type,
     e
   }
   function He(e) {
     return "true/" === (e.type || "").slice(0, 5) ? e.type = e.type.slice(5) : e.removeAttribute("type"),
     e
   }
   function Oe(e, t) {
     var n, r, i, o, a, s;
     if (1 === t.nodeType) {
       if (Y.hasData(e) && (s = Y.get(e).events)) for (i in Y.remove(t, "handle events"), s) for (n = 0, r = s[i].length; n < r; n++) S.event.add(t, i, s[i][n]);
       Q.hasData(e) && (o = Q.access(e), a = S.extend({},
       o), Q.set(t, a))
     }
   }
   function Pe(n, r, i, o) {
     r = g(r);
     var e, t, a, s, u, l, c = 0,
     f = n.length,
     p = f - 1,
     d = r[0],
     h = m(d);
     if (h || 1 < f && "string" == typeof d && !y.checkClone && De.test(d)) return n.each(function(e) {
       var t = n.eq(e);
       h && (r[0] = d.call(this, e, t.html())),
       Pe(t, r, i, o)
     });
     if (f && (t = (e = xe(r, n[0].ownerDocument, !1, n, o)).firstChild, 1 === e.childNodes.length && (e = t), t || o)) {
       for (s = (a = S.map(ve(e, "script"), Le)).length; c < f; c++) u = e,
       c !== p && (u = S.clone(u, !0, !0), s && S.merge(a, ve(u, "script"))),
       i.call(n[c], u, c);
       if (s) for (l = a[a.length - 1].ownerDocument, S.map(a, He), c = 0; c < s; c++) u = a[c],
       he.test(u.type || "") && !Y.access(u, "globalEval") && S.contains(l, u) && (u.src && "module" !== (u.type || "").toLowerCase() ? S._evalUrl && !u.noModule && S._evalUrl(u.src, {
         nonce: u.nonce || u.getAttribute("nonce")
       },
       l) : b(u.textContent.replace(je, ""), u, l))
     }
     return n
   }
   function Re(e, t, n) {
     for (var r, i = t ? S.filter(t, e) : e, o = 0; null != (r = i[o]); o++) n || 1 !== r.nodeType || S.cleanData(ve(r)),
     r.parentNode && (n && ie(r) && ye(ve(r, "script")), r.parentNode.removeChild(r));
     return e
   }
   S.extend({
     htmlPrefilter: function(e) {
       return e
     },
     clone: function(e, t, n) {
       var r, i, o, a, s, u, l, c = e.cloneNode(!0),
       f = ie(e);
       if (! (y.noCloneChecked || 1 !== e.nodeType && 11 !== e.nodeType || S.isXMLDoc(e))) for (a = ve(c), r = 0, i = (o = ve(e)).length; r < i; r++) s = o[r],
       u = a[r],
       void 0,
       "input" === (l = u.nodeName.toLowerCase()) && pe.test(s.type) ? u.checked = s.checked: "input" !== l && "textarea" !== l || (u.defaultValue = s.defaultValue);
       if (t) if (n) for (o = o || ve(e), a = a || ve(c), r = 0, i = o.length; r < i; r++) Oe(o[r], a[r]);
       else Oe(e, c);
       return 0 < (a = ve(c, "script")).length && ye(a, !f && ve(e, "script")),
       c
     },
     cleanData: function(e) {
       for (var t, n, r, i = S.event.special,
       o = 0; void 0 !== (n = e[o]); o++) if (V(n)) {
         if (t = n[Y.expando]) {
           if (t.events) for (r in t.events) i[r] ? S.event.remove(n, r) : S.removeEvent(n, r, t.handle);
           n[Y.expando] = void 0
         }
         n[Q.expando] && (n[Q.expando] = void 0)
       }
     }
   }),
   S.fn.extend({
     detach: function(e) {
       return Re(this, e, !0)
     },
     remove: function(e) {
       return Re(this, e)
     },
     text: function(e) {
       return $(this,
       function(e) {
         return void 0 === e ? S.text(this) : this.empty().each(function() {
           1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || (this.textContent = e)
         })
       },
       null, e, arguments.length)
     },
     append: function() {
       return Pe(this, arguments,
       function(e) {
         1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || qe(this, e).appendChild(e)
       })
     },
     prepend: function() {
       return Pe(this, arguments,
       function(e) {
         if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
           var t = qe(this, e);
           t.insertBefore(e, t.firstChild)
         }
       })
     },
     before: function() {
       return Pe(this, arguments,
       function(e) {
         this.parentNode && this.parentNode.insertBefore(e, this)
       })
     },
     after: function() {
       return Pe(this, arguments,
       function(e) {
         this.parentNode && this.parentNode.insertBefore(e, this.nextSibling)
       })
     },
     empty: function() {
       for (var e, t = 0; null != (e = this[t]); t++) 1 === e.nodeType && (S.cleanData(ve(e, !1)), e.textContent = "");
       return this
     },
     clone: function(e, t) {
       return e = null != e && e,
       t = null == t ? e: t,
       this.map(function() {
         return S.clone(this, e, t)
       })
     },
     html: function(e) {
       return $(this,
       function(e) {
         var t = this[0] || {},
         n = 0,
         r = this.length;
         if (void 0 === e && 1 === t.nodeType) return t.innerHTML;
         if ("string" == typeof e && !Ne.test(e) && !ge[(de.exec(e) || ["", ""])[1].toLowerCase()]) {
           e = S.htmlPrefilter(e);
           try {
             for (; n < r; n++) 1 === (t = this[n] || {}).nodeType && (S.cleanData(ve(t, !1)), t.innerHTML = e);
             t = 0
           } catch(e) {}
         }
         t && this.empty().append(e)
       },
       null, e, arguments.length)
     },
     replaceWith: function() {
       var n = [];
       return Pe(this, arguments,
       function(e) {
         var t = this.parentNode;
         S.inArray(this, n) < 0 && (S.cleanData(ve(this)), t && t.replaceChild(e, this))
       },
       n)
     }
   }),
   S.each({
     appendTo: "append",
     prependTo: "prepend",
     insertBefore: "before",
     insertAfter: "after",
     replaceAll: "replaceWith"
   },
   function(e, a) {
     S.fn[e] = function(e) {
       for (var t, n = [], r = S(e), i = r.length - 1, o = 0; o <= i; o++) t = o === i ? this: this.clone(!0),
       S(r[o])[a](t),
       u.apply(n, t.get());
       return this.pushStack(n)
     }
   });
   var Me = new RegExp("^(" + ee + ")(?!px)[a-z%]+$", "i"),
   Ie = function(e) {
     var t = e.ownerDocument.defaultView;
     return t && t.opener || (t = C),
     t.getComputedStyle(e)
   },
   We = function(e, t, n) {
     var r, i, o = {};
     for (i in t) o[i] = e.style[i],
     e.style[i] = t[i];
     for (i in r = n.call(e), t) e.style[i] = o[i];
     return r
   },
   Fe = new RegExp(ne.join("|"), "i");
   function Be(e, t, n) {
     var r, i, o, a, s = e.style;
     return (n = n || Ie(e)) && ("" !== (a = n.getPropertyValue(t) || n[t]) || ie(e) || (a = S.style(e, t)), !y.pixelBoxStyles() && Me.test(a) && Fe.test(t) && (r = s.width, i = s.minWidth, o = s.maxWidth, s.minWidth = s.maxWidth = s.width = a, a = n.width, s.width = r, s.minWidth = i, s.maxWidth = o)),
     void 0 !== a ? a + "": a
   }
   function $e(e, t) {
     return {
       get: function() {
         if (!e()) return (this.get = t).apply(this, arguments);
         delete this.get
       }
     }
   } !
   function() {
     function e() {
       if (l) {
         u.style.cssText = "position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",
         l.style.cssText = "position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",
         re.appendChild(u).appendChild(l);
         var e = C.getComputedStyle(l);
         n = "1%" !== e.top,
         s = 12 === t(e.marginLeft),
         l.style.right = "60%",
         o = 36 === t(e.right),
         r = 36 === t(e.width),
         l.style.position = "absolute",
         i = 12 === t(l.offsetWidth / 3),
         re.removeChild(u),
         l = null
       }
     }
     function t(e) {
       return Math.round(parseFloat(e))
     }
     var n, r, i, o, a, s, u = E.createElement("div"),
     l = E.createElement("div");
     l.style && (l.style.backgroundClip = "content-box", l.cloneNode(!0).style.backgroundClip = "", y.clearCloneStyle = "content-box" === l.style.backgroundClip, S.extend(y, {
       boxSizingReliable: function() {
         return e(),
         r
       },
       pixelBoxStyles: function() {
         return e(),
         o
       },
       pixelPosition: function() {
         return e(),
         n
       },
       reliableMarginLeft: function() {
         return e(),
         s
       },
       scrollboxSize: function() {
         return e(),
         i
       },
       reliableTrDimensions: function() {
         var e, t, n, r;
         return null == a && (e = E.createElement("table"), t = E.createElement("tr"), n = E.createElement("div"), e.style.cssText = "position:absolute;left:-11111px", t.style.height = "1px", n.style.height = "9px", re.appendChild(e).appendChild(t).appendChild(n), r = C.getComputedStyle(t), a = 3 < parseInt(r.height), re.removeChild(e)),
         a
       }
     }))
   } ();
   var _e = ["Webkit", "Moz", "ms"],
   ze = E.createElement("div").style,
   Ue = {};
   function Xe(e) {
     var t = S.cssProps[e] || Ue[e];
     return t || (e in ze ? e: Ue[e] = function(e) {
       var t = e[0].toUpperCase() + e.slice(1),
       n = _e.length;
       while (n--) if ((e = _e[n] + t) in ze) return e
     } (e) || e)
   }
   var Ve = /^(none|table(?!-c[ea]).+)/,
   Ge = /^--/,
   Ye = {
     position: "absolute",
     visibility: "hidden",
     display: "block"
   },
   Qe = {
     letterSpacing: "0",
     fontWeight: "400"
   };
   function Je(e, t, n) {
     var r = te.exec(t);
     return r ? Math.max(0, r[2] - (n || 0)) + (r[3] || "px") : t
   }
   function Ke(e, t, n, r, i, o) {
     var a = "width" === t ? 1 : 0,
     s = 0,
     u = 0;
     if (n === (r ? "border": "content")) return 0;
     for (; a < 4; a += 2)"margin" === n && (u += S.css(e, n + ne[a], !0, i)),
     r ? ("content" === n && (u -= S.css(e, "padding" + ne[a], !0, i)), "margin" !== n && (u -= S.css(e, "border" + ne[a] + "Width", !0, i))) : (u += S.css(e, "padding" + ne[a], !0, i), "padding" !== n ? u += S.css(e, "border" + ne[a] + "Width", !0, i) : s += S.css(e, "border" + ne[a] + "Width", !0, i));
     return ! r && 0 <= o && (u += Math.max(0, Math.ceil(e["offset" + t[0].toUpperCase() + t.slice(1)] - o - u - s - .5)) || 0),
     u
   }
   function Ze(e, t, n) {
     var r = Ie(e),
     i = (!y.boxSizingReliable() || n) && "border-box" === S.css(e, "boxSizing", !1, r),
     o = i,
     a = Be(e, t, r),
     s = "offset" + t[0].toUpperCase() + t.slice(1);
     if (Me.test(a)) {
       if (!n) return a;
       a = "auto"
     }
     return (!y.boxSizingReliable() && i || !y.reliableTrDimensions() && A(e, "tr") || "auto" === a || !parseFloat(a) && "inline" === S.css(e, "display", !1, r)) && e.getClientRects().length && (i = "border-box" === S.css(e, "boxSizing", !1, r), (o = s in e) && (a = e[s])),
     (a = parseFloat(a) || 0) + Ke(e, t, n || (i ? "border": "content"), o, r, a) + "px"
   }
   function et(e, t, n, r, i) {
     return new et.prototype.init(e, t, n, r, i)
   }
   S.extend({
     cssHooks: {
       opacity: {
         get: function(e, t) {
           if (t) {
             var n = Be(e, "opacity");
             return "" === n ? "1": n
           }
         }
       }
     },
     cssNumber: {
       animationIterationCount: !0,
       columnCount: !0,
       fillOpacity: !0,
       flexGrow: !0,
       flexShrink: !0,
       fontWeight: !0,
       gridArea: !0,
       gridColumn: !0,
       gridColumnEnd: !0,
       gridColumnStart: !0,
       gridRow: !0,
       gridRowEnd: !0,
       gridRowStart: !0,
       lineHeight: !0,
       opacity: !0,
       order: !0,
       orphans: !0,
       widows: !0,
       zIndex: !0,
       zoom: !0
     },
     cssProps: {},
     style: function(e, t, n, r) {
       if (e && 3 !== e.nodeType && 8 !== e.nodeType && e.style) {
         var i, o, a, s = X(t),
         u = Ge.test(t),
         l = e.style;
         if (u || (t = Xe(s)), a = S.cssHooks[t] || S.cssHooks[s], void 0 === n) return a && "get" in a && void 0 !== (i = a.get(e, !1, r)) ? i: l[t];
         "string" === (o = typeof n) && (i = te.exec(n)) && i[1] && (n = se(e, t, i), o = "number"),
         null != n && n == n && ("number" !== o || u || (n += i && i[3] || (S.cssNumber[s] ? "": "px")), y.clearCloneStyle || "" !== n || 0 !== t.indexOf("background") || (l[t] = "inherit"), a && "set" in a && void 0 === (n = a.set(e, n, r)) || (u ? l.setProperty(t, n) : l[t] = n))
       }
     },
     css: function(e, t, n, r) {
       var i, o, a, s = X(t);
       return Ge.test(t) || (t = Xe(s)),
       (a = S.cssHooks[t] || S.cssHooks[s]) && "get" in a && (i = a.get(e, !0, n)),
       void 0 === i && (i = Be(e, t, r)),
       "normal" === i && t in Qe && (i = Qe[t]),
       "" === n || n ? (o = parseFloat(i), !0 === n || isFinite(o) ? o || 0 : i) : i
     }
   }),
   S.each(["height", "width"],
   function(e, u) {
     S.cssHooks[u] = {
       get: function(e, t, n) {
         if (t) return ! Ve.test(S.css(e, "display")) || e.getClientRects().length && e.getBoundingClientRect().width ? Ze(e, u, n) : We(e, Ye,
         function() {
           return Ze(e, u, n)
         })
       },
       set: function(e, t, n) {
         var r, i = Ie(e),
         o = !y.scrollboxSize() && "absolute" === i.position,
         a = (o || n) && "border-box" === S.css(e, "boxSizing", !1, i),
         s = n ? Ke(e, u, n, a, i) : 0;
         return a && o && (s -= Math.ceil(e["offset" + u[0].toUpperCase() + u.slice(1)] - parseFloat(i[u]) - Ke(e, u, "border", !1, i) - .5)),
         s && (r = te.exec(t)) && "px" !== (r[3] || "px") && (e.style[u] = t, t = S.css(e, u)),
         Je(0, t, s)
       }
     }
   }),
   S.cssHooks.marginLeft = $e(y.reliableMarginLeft,
   function(e, t) {
     if (t) return (parseFloat(Be(e, "marginLeft")) || e.getBoundingClientRect().left - We(e, {
       marginLeft: 0
     },
     function() {
       return e.getBoundingClientRect().left
     })) + "px"
   }),
   S.each({
     margin: "",
     padding: "",
     border: "Width"
   },
   function(i, o) {
     S.cssHooks[i + o] = {
       expand: function(e) {
         for (var t = 0,
         n = {},
         r = "string" == typeof e ? e.split(" ") : [e]; t < 4; t++) n[i + ne[t] + o] = r[t] || r[t - 2] || r[0];
         return n
       }
     },
     "margin" !== i && (S.cssHooks[i + o].set = Je)
   }),
   S.fn.extend({
     css: function(e, t) {
       return $(this,
       function(e, t, n) {
         var r, i, o = {},
         a = 0;
         if (Array.isArray(t)) {
           for (r = Ie(e), i = t.length; a < i; a++) o[t[a]] = S.css(e, t[a], !1, r);
           return o
         }
         return void 0 !== n ? S.style(e, t, n) : S.css(e, t)
       },
       e, t, 1 < arguments.length)
     }
   }),
   ((S.Tween = et).prototype = {
     constructor: et,
     init: function(e, t, n, r, i, o) {
       this.elem = e,
       this.prop = n,
       this.easing = i || S.easing._default,
       this.options = t,
       this.start = this.now = this.cur(),
       this.end = r,
       this.unit = o || (S.cssNumber[n] ? "": "px")
     },
     cur: function() {
       var e = et.propHooks[this.prop];
       return e && e.get ? e.get(this) : et.propHooks._default.get(this)
     },
     run: function(e) {
       var t, n = et.propHooks[this.prop];
       return this.options.duration ? this.pos = t = S.easing[this.easing](e, this.options.duration * e, 0, 1, this.options.duration) : this.pos = t = e,
       this.now = (this.end - this.start) * t + this.start,
       this.options.step && this.options.step.call(this.elem, this.now, this),
       n && n.set ? n.set(this) : et.propHooks._default.set(this),
       this
     }
   }).init.prototype = et.prototype,
   (et.propHooks = {
     _default: {
       get: function(e) {
         var t;
         return 1 !== e.elem.nodeType || null != e.elem[e.prop] && null == e.elem.style[e.prop] ? e.elem[e.prop] : (t = S.css(e.elem, e.prop, "")) && "auto" !== t ? t: 0
       },
       set: function(e) {
         S.fx.step[e.prop] ? S.fx.step[e.prop](e) : 1 !== e.elem.nodeType || !S.cssHooks[e.prop] && null == e.elem.style[Xe(e.prop)] ? e.elem[e.prop] = e.now: S.style(e.elem, e.prop, e.now + e.unit)
       }
     }
   }).scrollTop = et.propHooks.scrollLeft = {
     set: function(e) {
       e.elem.nodeType && e.elem.parentNode && (e.elem[e.prop] = e.now)
     }
   },
   S.easing = {
     linear: function(e) {
       return e
     },
     swing: function(e) {
       return.5 - Math.cos(e * Math.PI) / 2
     },
     _default: "swing"
   },
   S.fx = et.prototype.init,
   S.fx.step = {};
   var tt, nt, rt, it, ot = /^(?:toggle|show|hide)$/,
   at = /queueHooks$/;
   function st() {
     nt && (!1 === E.hidden && C.requestAnimationFrame ? C.requestAnimationFrame(st) : C.setTimeout(st, S.fx.interval), S.fx.tick())
   }
   function ut() {
     return C.setTimeout(function() {
       tt = void 0
     }),
     tt = Date.now()
   }
   function lt(e, t) {
     var n, r = 0,
     i = {
       height: e
     };
     for (t = t ? 1 : 0; r < 4; r += 2 - t) i["margin" + (n = ne[r])] = i["padding" + n] = e;
     return t && (i.opacity = i.width = e),
     i
   }
   function ct(e, t, n) {
     for (var r, i = (ft.tweeners[t] || []).concat(ft.tweeners["*"]), o = 0, a = i.length; o < a; o++) if (r = i[o].call(n, t, e)) return r
   }
   function ft(o, e, t) {
     var n, a, r = 0,
     i = ft.prefilters.length,
     s = S.Deferred().always(function() {
       delete u.elem
     }),
     u = function() {
       if (a) return ! 1;
       for (var e = tt || ut(), t = Math.max(0, l.startTime + l.duration - e), n = 1 - (t / l.duration || 0), r = 0, i = l.tweens.length; r < i; r++) l.tweens[r].run(n);
       return s.notifyWith(o, [l, n, t]),
       n < 1 && i ? t: (i || s.notifyWith(o, [l, 1, 0]), s.resolveWith(o, [l]), !1)
     },
     l = s.promise({
       elem: o,
       props: S.extend({},
       e),
       opts: S.extend(!0, {
         specialEasing: {},
         easing: S.easing._default
       },
       t),
       originalProperties: e,
       originalOptions: t,
       startTime: tt || ut(),
       duration: t.duration,
       tweens: [],
       createTween: function(e, t) {
         var n = S.Tween(o, l.opts, e, t, l.opts.specialEasing[e] || l.opts.easing);
         return l.tweens.push(n),
         n
       },
       stop: function(e) {
         var t = 0,
         n = e ? l.tweens.length: 0;
         if (a) return this;
         for (a = !0; t < n; t++) l.tweens[t].run(1);
         return e ? (s.notifyWith(o, [l, 1, 0]), s.resolveWith(o, [l, e])) : s.rejectWith(o, [l, e]),
         this
       }
     }),
     c = l.props;
     for (!
     function(e, t) {
       var n, r, i, o, a;
       for (n in e) if (i = t[r = X(n)], o = e[n], Array.isArray(o) && (i = o[1], o = e[n] = o[0]), n !== r && (e[r] = o, delete e[n]), (a = S.cssHooks[r]) && "expand" in a) for (n in o = a.expand(o), delete e[r], o) n in e || (e[n] = o[n], t[n] = i);
       else t[r] = i
     } (c, l.opts.specialEasing); r < i; r++) if (n = ft.prefilters[r].call(l, o, c, l.opts)) return m(n.stop) && (S._queueHooks(l.elem, l.opts.queue).stop = n.stop.bind(n)),
     n;
     return S.map(c, ct, l),
     m(l.opts.start) && l.opts.start.call(o, l),
     l.progress(l.opts.progress).done(l.opts.done, l.opts.complete).fail(l.opts.fail).always(l.opts.always),
     S.fx.timer(S.extend(u, {
       elem: o,
       anim: l,
       queue: l.opts.queue
     })),
     l
   }
   S.Animation = S.extend(ft, {
     tweeners: {
       "*": [function(e, t) {
         var n = this.createTween(e, t);
         return se(n.elem, e, te.exec(t), n),
         n
       }]
     },
     tweener: function(e, t) {
       m(e) ? (t = e, e = ["*"]) : e = e.match(P);
       for (var n, r = 0,
       i = e.length; r < i; r++) n = e[r],
       ft.tweeners[n] = ft.tweeners[n] || [],
       ft.tweeners[n].unshift(t)
     },
     prefilters: [function(e, t, n) {
       var r, i, o, a, s, u, l, c, f = "width" in t || "height" in t,
       p = this,
       d = {},
       h = e.style,
       g = e.nodeType && ae(e),
       v = Y.get(e, "fxshow");
       for (r in n.queue || (null == (a = S._queueHooks(e, "fx")).unqueued && (a.unqueued = 0, s = a.empty.fire, a.empty.fire = function() {
         a.unqueued || s()
       }), a.unqueued++, p.always(function() {
         p.always(function() {
           a.unqueued--,
           S.queue(e, "fx").length || a.empty.fire()
         })
       })), t) if (i = t[r], ot.test(i)) {
         if (delete t[r], o = o || "toggle" === i, i === (g ? "hide": "show")) {
           if ("show" !== i || !v || void 0 === v[r]) continue;
           g = !0
         }
         d[r] = v && v[r] || S.style(e, r)
       }
       if ((u = !S.isEmptyObject(t)) || !S.isEmptyObject(d)) for (r in f && 1 === e.nodeType && (n.overflow = [h.overflow, h.overflowX, h.overflowY], null == (l = v && v.display) && (l = Y.get(e, "display")), "none" === (c = S.css(e, "display")) && (l ? c = l: (le([e], !0), l = e.style.display || l, c = S.css(e, "display"), le([e]))), ("inline" === c || "inline-block" === c && null != l) && "none" === S.css(e, "float") && (u || (p.done(function() {
         h.display = l
       }), null == l && (c = h.display, l = "none" === c ? "": c)), h.display = "inline-block")), n.overflow && (h.overflow = "hidden", p.always(function() {
         h.overflow = n.overflow[0],
         h.overflowX = n.overflow[1],
         h.overflowY = n.overflow[2]
       })), u = !1, d) u || (v ? "hidden" in v && (g = v.hidden) : v = Y.access(e, "fxshow", {
         display: l
       }), o && (v.hidden = !g), g && le([e], !0), p.done(function() {
         for (r in g || le([e]), Y.remove(e, "fxshow"), d) S.style(e, r, d[r])
       })),
       u = ct(g ? v[r] : 0, r, p),
       r in v || (v[r] = u.start, g && (u.end = u.start, u.start = 0))
     }],
     prefilter: function(e, t) {
       t ? ft.prefilters.unshift(e) : ft.prefilters.push(e)
     }
   }),
   S.speed = function(e, t, n) {
     var r = e && "object" == typeof e ? S.extend({},
     e) : {
       complete: n || !n && t || m(e) && e,
       duration: e,
       easing: n && t || t && !m(t) && t
     };
     return S.fx.off ? r.duration = 0 : "number" != typeof r.duration && (r.duration in S.fx.speeds ? r.duration = S.fx.speeds[r.duration] : r.duration = S.fx.speeds._default),
     null != r.queue && !0 !== r.queue || (r.queue = "fx"),
     r.old = r.complete,
     r.complete = function() {
       m(r.old) && r.old.call(this),
       r.queue && S.dequeue(this, r.queue)
     },
     r
   },
   S.fn.extend({
     fadeTo: function(e, t, n, r) {
       return this.filter(ae).css("opacity", 0).show().end().animate({
         opacity: t
       },
       e, n, r)
     },
     animate: function(t, e, n, r) {
       var i = S.isEmptyObject(t),
       o = S.speed(e, n, r),
       a = function() {
         var e = ft(this, S.extend({},
         t), o); (i || Y.get(this, "finish")) && e.stop(!0)
       };
       return a.finish = a,
       i || !1 === o.queue ? this.each(a) : this.queue(o.queue, a)
     },
     stop: function(i, e, o) {
       var a = function(e) {
         var t = e.stop;
         delete e.stop,
         t(o)
       };
       return "string" != typeof i && (o = e, e = i, i = void 0),
       e && this.queue(i || "fx", []),
       this.each(function() {
         var e = !0,
         t = null != i && i + "queueHooks",
         n = S.timers,
         r = Y.get(this);
         if (t) r[t] && r[t].stop && a(r[t]);
         else for (t in r) r[t] && r[t].stop && at.test(t) && a(r[t]);
         for (t = n.length; t--;) n[t].elem !== this || null != i && n[t].queue !== i || (n[t].anim.stop(o), e = !1, n.splice(t, 1)); ! e && o || S.dequeue(this, i)
       })
     },
     finish: function(a) {
       return ! 1 !== a && (a = a || "fx"),
       this.each(function() {
         var e, t = Y.get(this),
         n = t[a + "queue"],
         r = t[a + "queueHooks"],
         i = S.timers,
         o = n ? n.length: 0;
         for (t.finish = !0, S.queue(this, a, []), r && r.stop && r.stop.call(this, !0), e = i.length; e--;) i[e].elem === this && i[e].queue === a && (i[e].anim.stop(!0), i.splice(e, 1));
         for (e = 0; e < o; e++) n[e] && n[e].finish && n[e].finish.call(this);
         delete t.finish
       })
     }
   }),
   S.each(["toggle", "show", "hide"],
   function(e, r) {
     var i = S.fn[r];
     S.fn[r] = function(e, t, n) {
       return null == e || "boolean" == typeof e ? i.apply(this, arguments) : this.animate(lt(r, !0), e, t, n)
     }
   }),
   S.each({
     slideDown: lt("show"),
     slideUp: lt("hide"),
     slideToggle: lt("toggle"),
     fadeIn: {
       opacity: "show"
     },
     fadeOut: {
       opacity: "hide"
     },
     fadeToggle: {
       opacity: "toggle"
     }
   },
   function(e, r) {
     S.fn[e] = function(e, t, n) {
       return this.animate(r, e, t, n)
     }
   }),
   S.timers = [],
   S.fx.tick = function() {
     var e, t = 0,
     n = S.timers;
     for (tt = Date.now(); t < n.length; t++)(e = n[t])() || n[t] !== e || n.splice(t--, 1);
     n.length || S.fx.stop(),
     tt = void 0
   },
   S.fx.timer = function(e) {
     S.timers.push(e),
     S.fx.start()
   },
   S.fx.interval = 13,
   S.fx.start = function() {
     nt || (nt = !0, st())
   },
   S.fx.stop = function() {
     nt = null
   },
   S.fx.speeds = {
     slow: 600,
     fast: 200,
     _default: 400
   },
   S.fn.delay = function(r, e) {
     return r = S.fx && S.fx.speeds[r] || r,
     e = e || "fx",
     this.queue(e,
     function(e, t) {
       var n = C.setTimeout(e, r);
       t.stop = function() {
         C.clearTimeout(n)
       }
     })
   },
   rt = E.createElement("input"),
   it = E.createElement("select").appendChild(E.createElement("option")),
   rt.type = "checkbox",
   y.checkOn = "" !== rt.value,
   y.optSelected = it.selected,
   (rt = E.createElement("input")).value = "t",
   rt.type = "radio",
   y.radioValue = "t" === rt.value;
   var pt, dt = S.expr.attrHandle;
   S.fn.extend({
     attr: function(e, t) {
       return $(this, S.attr, e, t, 1 < arguments.length)
     },
     removeAttr: function(e) {
       return this.each(function() {
         S.removeAttr(this, e)
       })
     }
   }),
   S.extend({
     attr: function(e, t, n) {
       var r, i, o = e.nodeType;
       if (3 !== o && 8 !== o && 2 !== o) return "undefined" == typeof e.getAttribute ? S.prop(e, t, n) : (1 === o && S.isXMLDoc(e) || (i = S.attrHooks[t.toLowerCase()] || (S.expr.match.bool.test(t) ? pt: void 0)), void 0 !== n ? null === n ? void S.removeAttr(e, t) : i && "set" in i && void 0 !== (r = i.set(e, n, t)) ? r: (e.setAttribute(t, n + ""), n) : i && "get" in i && null !== (r = i.get(e, t)) ? r: null == (r = S.find.attr(e, t)) ? void 0 : r)
     },
     attrHooks: {
       type: {
         set: function(e, t) {
           if (!y.radioValue && "radio" === t && A(e, "input")) {
             var n = e.value;
             return e.setAttribute("type", t),
             n && (e.value = n),
             t
           }
         }
       }
     },
     removeAttr: function(e, t) {
       var n, r = 0,
       i = t && t.match(P);
       if (i && 1 === e.nodeType) while (n = i[r++]) e.removeAttribute(n)
     }
   }),
   pt = {
     set: function(e, t, n) {
       return ! 1 === t ? S.removeAttr(e, n) : e.setAttribute(n, n),
       n
     }
   },
   S.each(S.expr.match.bool.source.match(/\w+/g),
   function(e, t) {
     var a = dt[t] || S.find.attr;
     dt[t] = function(e, t, n) {
       var r, i, o = t.toLowerCase();
       return n || (i = dt[o], dt[o] = r, r = null != a(e, t, n) ? o: null, dt[o] = i),
       r
     }
   });
   var ht = /^(?:input|select|textarea|button)$/i,
   gt = /^(?:a|area)$/i;
   function vt(e) {
     return (e.match(P) || []).join(" ")
   }
   function yt(e) {
     return e.getAttribute && e.getAttribute("class") || ""
   }
   function mt(e) {
     return Array.isArray(e) ? e: "string" == typeof e && e.match(P) || []
   }
   S.fn.extend({
     prop: function(e, t) {
       return $(this, S.prop, e, t, 1 < arguments.length)
     },
     removeProp: function(e) {
       return this.each(function() {
         delete this[S.propFix[e] || e]
       })
     }
   }),
   S.extend({
     prop: function(e, t, n) {
       var r, i, o = e.nodeType;
       if (3 !== o && 8 !== o && 2 !== o) return 1 === o && S.isXMLDoc(e) || (t = S.propFix[t] || t, i = S.propHooks[t]),
       void 0 !== n ? i && "set" in i && void 0 !== (r = i.set(e, n, t)) ? r: e[t] = n: i && "get" in i && null !== (r = i.get(e, t)) ? r: e[t]
     },
     propHooks: {
       tabIndex: {
         get: function(e) {
           var t = S.find.attr(e, "tabindex");
           return t ? parseInt(t, 10) : ht.test(e.nodeName) || gt.test(e.nodeName) && e.href ? 0 : -1
         }
       }
     },
     propFix: {
       "for": "htmlFor",
       "class": "className"
     }
   }),
   y.optSelected || (S.propHooks.selected = {
     get: function(e) {
       var t = e.parentNode;
       return t && t.parentNode && t.parentNode.selectedIndex,
       null
     },
     set: function(e) {
       var t = e.parentNode;
       t && (t.selectedIndex, t.parentNode && t.parentNode.selectedIndex)
     }
   }),
   S.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"],
   function() {
     S.propFix[this.toLowerCase()] = this
   }),
   S.fn.extend({
     addClass: function(t) {
       var e, n, r, i, o, a, s, u = 0;
       if (m(t)) return this.each(function(e) {
         S(this).addClass(t.call(this, e, yt(this)))
       });
       if ((e = mt(t)).length) while (n = this[u++]) if (i = yt(n), r = 1 === n.nodeType && " " + vt(i) + " ") {
         a = 0;
         while (o = e[a++]) r.indexOf(" " + o + " ") < 0 && (r += o + " ");
         i !== (s = vt(r)) && n.setAttribute("class", s)
       }
       return this
     },
     removeClass: function(t) {
       var e, n, r, i, o, a, s, u = 0;
       if (m(t)) return this.each(function(e) {
         S(this).removeClass(t.call(this, e, yt(this)))
       });
       if (!arguments.length) return this.attr("class", "");
       if ((e = mt(t)).length) while (n = this[u++]) if (i = yt(n), r = 1 === n.nodeType && " " + vt(i) + " ") {
         a = 0;
         while (o = e[a++]) while ( - 1 < r.indexOf(" " + o + " ")) r = r.replace(" " + o + " ", " ");
         i !== (s = vt(r)) && n.setAttribute("class", s)
       }
       return this
     },
     toggleClass: function(i, t) {
       var o = typeof i,
       a = "string" === o || Array.isArray(i);
       return "boolean" == typeof t && a ? t ? this.addClass(i) : this.removeClass(i) : m(i) ? this.each(function(e) {
         S(this).toggleClass(i.call(this, e, yt(this), t), t)
       }) : this.each(function() {
         var e, t, n, r;
         if (a) {
           t = 0,
           n = S(this),
           r = mt(i);
           while (e = r[t++]) n.hasClass(e) ? n.removeClass(e) : n.addClass(e)
         } else void 0 !== i && "boolean" !== o || ((e = yt(this)) && Y.set(this, "__className__", e), this.setAttribute && this.setAttribute("class", e || !1 === i ? "": Y.get(this, "__className__") || ""))
       })
     },
     hasClass: function(e) {
       var t, n, r = 0;
       t = " " + e + " ";
       while (n = this[r++]) if (1 === n.nodeType && -1 < (" " + vt(yt(n)) + " ").indexOf(t)) return ! 0;
       return ! 1
     }
   });
   var xt = /\r/g;
   S.fn.extend({
     val: function(n) {
       var r, e, i, t = this[0];
       return arguments.length ? (i = m(n), this.each(function(e) {
         var t;
         1 === this.nodeType && (null == (t = i ? n.call(this, e, S(this).val()) : n) ? t = "": "number" == typeof t ? t += "": Array.isArray(t) && (t = S.map(t,
         function(e) {
           return null == e ? "": e + ""
         })), (r = S.valHooks[this.type] || S.valHooks[this.nodeName.toLowerCase()]) && "set" in r && void 0 !== r.set(this, t, "value") || (this.value = t))
       })) : t ? (r = S.valHooks[t.type] || S.valHooks[t.nodeName.toLowerCase()]) && "get" in r && void 0 !== (e = r.get(t, "value")) ? e: "string" == typeof(e = t.value) ? e.replace(xt, "") : null == e ? "": e: void 0
     }
   }),
   S.extend({
     valHooks: {
       option: {
         get: function(e) {
           var t = S.find.attr(e, "value");
           return null != t ? t: vt(S.text(e))
         }
       },
       select: {
         get: function(e) {
           var t, n, r, i = e.options,
           o = e.selectedIndex,
           a = "select-one" === e.type,
           s = a ? null: [],
           u = a ? o + 1 : i.length;
           for (r = o < 0 ? u: a ? o: 0; r < u; r++) if (((n = i[r]).selected || r === o) && !n.disabled && (!n.parentNode.disabled || !A(n.parentNode, "optgroup"))) {
             if (t = S(n).val(), a) return t;
             s.push(t)
           }
           return s
         },
         set: function(e, t) {
           var n, r, i = e.options,
           o = S.makeArray(t),
           a = i.length;
           while (a--)((r = i[a]).selected = -1 < S.inArray(S.valHooks.option.get(r), o)) && (n = !0);
           return n || (e.selectedIndex = -1),
           o
         }
       }
     }
   }),
   S.each(["radio", "checkbox"],
   function() {
     S.valHooks[this] = {
       set: function(e, t) {
         if (Array.isArray(t)) return e.checked = -1 < S.inArray(S(e).val(), t)
       }
     },
     y.checkOn || (S.valHooks[this].get = function(e) {
       return null === e.getAttribute("value") ? "on": e.value
     })
   }),
   y.focusin = "onfocusin" in C;
   var bt = /^(?:focusinfocus|focusoutblur)$/,
   wt = function(e) {
     e.stopPropagation()
   };
   S.extend(S.event, {
     trigger: function(e, t, n, r) {
       var i, o, a, s, u, l, c, f, p = [n || E],
       d = v.call(e, "type") ? e.type: e,
       h = v.call(e, "namespace") ? e.namespace.split(".") : [];
       if (o = f = a = n = n || E, 3 !== n.nodeType && 8 !== n.nodeType && !bt.test(d + S.event.triggered) && ( - 1 < d.indexOf(".") && (d = (h = d.split(".")).shift(), h.sort()), u = d.indexOf(":") < 0 && "on" + d, (e = e[S.expando] ? e: new S.Event(d, "object" == typeof e && e)).isTrigger = r ? 2 : 3, e.namespace = h.join("."), e.rnamespace = e.namespace ? new RegExp("(^|\\.)" + h.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, e.result = void 0, e.target || (e.target = n), t = null == t ? [e] : S.makeArray(t, [e]), c = S.event.special[d] || {},
       r || !c.trigger || !1 !== c.trigger.apply(n, t))) {
         if (!r && !c.noBubble && !x(n)) {
           for (s = c.delegateType || d, bt.test(s + d) || (o = o.parentNode); o; o = o.parentNode) p.push(o),
           a = o;
           a === (n.ownerDocument || E) && p.push(a.defaultView || a.parentWindow || C)
         }
         i = 0;
         while ((o = p[i++]) && !e.isPropagationStopped()) f = o,
         e.type = 1 < i ? s: c.bindType || d,
         (l = (Y.get(o, "events") || Object.create(null))[e.type] && Y.get(o, "handle")) && l.apply(o, t),
         (l = u && o[u]) && l.apply && V(o) && (e.result = l.apply(o, t), !1 === e.result && e.preventDefault());
         return e.type = d,
         r || e.isDefaultPrevented() || c._default && !1 !== c._default.apply(p.pop(), t) || !V(n) || u && m(n[d]) && !x(n) && ((a = n[u]) && (n[u] = null), S.event.triggered = d, e.isPropagationStopped() && f.addEventListener(d, wt), n[d](), e.isPropagationStopped() && f.removeEventListener(d, wt), S.event.triggered = void 0, a && (n[u] = a)),
         e.result
       }
     },
     simulate: function(e, t, n) {
       var r = S.extend(new S.Event, n, {
         type: e,
         isSimulated: !0
       });
       S.event.trigger(r, null, t)
     }
   }),
   S.fn.extend({
     trigger: function(e, t) {
       return this.each(function() {
         S.event.trigger(e, t, this)
       })
     },
     triggerHandler: function(e, t) {
       var n = this[0];
       if (n) return S.event.trigger(e, t, n, !0)
     }
   }),
   y.focusin || S.each({
     focus: "focusin",
     blur: "focusout"
   },
   function(n, r) {
     var i = function(e) {
       S.event.simulate(r, e.target, S.event.fix(e))
     };
     S.event.special[r] = {
       setup: function() {
         var e = this.ownerDocument || this.document || this,
         t = Y.access(e, r);
         t || e.addEventListener(n, i, !0),
         Y.access(e, r, (t || 0) + 1)
       },
       teardown: function() {
         var e = this.ownerDocument || this.document || this,
         t = Y.access(e, r) - 1;
         t ? Y.access(e, r, t) : (e.removeEventListener(n, i, !0), Y.remove(e, r))
       }
     }
   });
   var Tt = C.location,
   Ct = {
     guid: Date.now()
   },
   Et = /\?/;
   S.parseXML = function(e) {
     var t;
     if (!e || "string" != typeof e) return null;
     try {
       t = (new C.DOMParser).parseFromString(e, "text/xml")
     } catch(e) {
       t = void 0
     }
     return t && !t.getElementsByTagName("parsererror").length || S.error("Invalid XML: " + e),
     t
   };
   var St = /\[\]$/,
   kt = /\r?\n/g,
   At = /^(?:submit|button|image|reset|file)$/i,
   Nt = /^(?:input|select|textarea|keygen)/i;
   function Dt(n, e, r, i) {
     var t;
     if (Array.isArray(e)) S.each(e,
     function(e, t) {
       r || St.test(n) ? i(n, t) : Dt(n + "[" + ("object" == typeof t && null != t ? e: "") + "]", t, r, i)
     });
     else if (r || "object" !== w(e)) i(n, e);
     else for (t in e) Dt(n + "[" + t + "]", e[t], r, i)
   }
   S.param = function(e, t) {
     var n, r = [],
     i = function(e, t) {
       var n = m(t) ? t() : t;
       r[r.length] = encodeURIComponent(e) + "=" + encodeURIComponent(null == n ? "": n)
     };
     if (null == e) return "";
     if (Array.isArray(e) || e.jquery && !S.isPlainObject(e)) S.each(e,
     function() {
       i(this.name, this.value)
     });
     else for (n in e) Dt(n, e[n], t, i);
     return r.join("&")
   },
   S.fn.extend({
     serialize: function() {
       return S.param(this.serializeArray())
     },
     serializeArray: function() {
       return this.map(function() {
         var e = S.prop(this, "elements");
         return e ? S.makeArray(e) : this
       }).filter(function() {
         var e = this.type;
         return this.name && !S(this).is(":disabled") && Nt.test(this.nodeName) && !At.test(e) && (this.checked || !pe.test(e))
       }).map(function(e, t) {
         var n = S(this).val();
         return null == n ? null: Array.isArray(n) ? S.map(n,
         function(e) {
           return {
             name: t.name,
             value: e.replace(kt, "\r\n")
           }
         }) : {
           name: t.name,
           value: n.replace(kt, "\r\n")
         }
       }).get()
     }
   });
   var jt = /%20/g,
   qt = /#.*$/,
   Lt = /([?&])_=[^&]*/,
   Ht = /^(.*?):[ \t]*([^\r\n]*)$/gm,
   Ot = /^(?:GET|HEAD)$/,
   Pt = /^\/\//,
   Rt = {},
   Mt = {},
   It = "*/".concat("*"),
   Wt = E.createElement("a");
   function Ft(o) {
     return function(e, t) {
       "string" != typeof e && (t = e, e = "*");
       var n, r = 0,
       i = e.toLowerCase().match(P) || [];
       if (m(t)) while (n = i[r++])"+" === n[0] ? (n = n.slice(1) || "*", (o[n] = o[n] || []).unshift(t)) : (o[n] = o[n] || []).push(t)
     }
   }
   function Bt(t, i, o, a) {
     var s = {},
     u = t === Mt;
     function l(e) {
       var r;
       return s[e] = !0,
       S.each(t[e] || [],
       function(e, t) {
         var n = t(i, o, a);
         return "string" != typeof n || u || s[n] ? u ? !(r = n) : void 0 : (i.dataTypes.unshift(n), l(n), !1)
       }),
       r
     }
     return l(i.dataTypes[0]) || !s["*"] && l("*")
   }
   function $t(e, t) {
     var n, r, i = S.ajaxSettings.flatOptions || {};
     for (n in t) void 0 !== t[n] && ((i[n] ? e: r || (r = {}))[n] = t[n]);
     return r && S.extend(!0, e, r),
     e
   }
   Wt.href = Tt.href,
   S.extend({
     active: 0,
     lastModified: {},
     etag: {},
     ajaxSettings: {
       url: Tt.href,
       type: "GET",
       isLocal: /^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Tt.protocol),
       global: !0,
       processData: !0,
       async: !0,
       contentType: "application/x-www-form-urlencoded; charset=UTF-8",
       accepts: {
         "*": It,
         text: "text/plain",
         html: "text/html",
         xml: "application/xml, text/xml",
         json: "application/json, text/javascript"
       },
       contents: {
         xml: /\bxml\b/,
         html: /\bhtml/,
         json: /\bjson\b/
       },
       responseFields: {
         xml: "responseXML",
         text: "responseText",
         json: "responseJSON"
       },
       converters: {
         "* text": String,
         "text html": !0,
         "text json": JSON.parse,
         "text xml": S.parseXML
       },
       flatOptions: {
         url: !0,
         context: !0
       }
     },
     ajaxSetup: function(e, t) {
       return t ? $t($t(e, S.ajaxSettings), t) : $t(S.ajaxSettings, e)
     },
     ajaxPrefilter: Ft(Rt),
     ajaxTransport: Ft(Mt),
     ajax: function(e, t) {
       "object" == typeof e && (t = e, e = void 0),
       t = t || {};
       var c, f, p, n, d, r, h, g, i, o, v = S.ajaxSetup({},
       t),
       y = v.context || v,
       m = v.context && (y.nodeType || y.jquery) ? S(y) : S.event,
       x = S.Deferred(),
       b = S.Callbacks("once memory"),
       w = v.statusCode || {},
       a = {},
       s = {},
       u = "canceled",
       T = {
         readyState: 0,
         getResponseHeader: function(e) {
           var t;
           if (h) {
             if (!n) {
               n = {};
               while (t = Ht.exec(p)) n[t[1].toLowerCase() + " "] = (n[t[1].toLowerCase() + " "] || []).concat(t[2])
             }
             t = n[e.toLowerCase() + " "]
           }
           return null == t ? null: t.join(", ")
         },
         getAllResponseHeaders: function() {
           return h ? p: null
         },
         setRequestHeader: function(e, t) {
           return null == h && (e = s[e.toLowerCase()] = s[e.toLowerCase()] || e, a[e] = t),
           this
         },
         overrideMimeType: function(e) {
           return null == h && (v.mimeType = e),
           this
         },
         statusCode: function(e) {
           var t;
           if (e) if (h) T.always(e[T.status]);
           else for (t in e) w[t] = [w[t], e[t]];
           return this
         },
         abort: function(e) {
           var t = e || u;
           return c && c.abort(t),
           l(0, t),
           this
         }
       };
       if (x.promise(T), v.url = ((e || v.url || Tt.href) + "").replace(Pt, Tt.protocol + "//"), v.type = t.method || t.type || v.method || v.type, v.dataTypes = (v.dataType || "*").toLowerCase().match(P) || [""], null == v.crossDomain) {
         r = E.createElement("a");
         try {
           r.href = v.url,
           r.href = r.href,
           v.crossDomain = Wt.protocol + "//" + Wt.host != r.protocol + "//" + r.host
         } catch(e) {
           v.crossDomain = !0
         }
       }
       if (v.data && v.processData && "string" != typeof v.data && (v.data = S.param(v.data, v.traditional)), Bt(Rt, v, t, T), h) return T;
       for (i in (g = S.event && v.global) && 0 == S.active++&&S.event.trigger("ajaxStart"), v.type = v.type.toUpperCase(), v.hasContent = !Ot.test(v.type), f = v.url.replace(qt, ""), v.hasContent ? v.data && v.processData && 0 === (v.contentType || "").indexOf("application/x-www-form-urlencoded") && (v.data = v.data.replace(jt, "+")) : (o = v.url.slice(f.length), v.data && (v.processData || "string" == typeof v.data) && (f += (Et.test(f) ? "&": "?") + v.data, delete v.data), !1 === v.cache && (f = f.replace(Lt, "$1"), o = (Et.test(f) ? "&": "?") + "_=" + Ct.guid+++o), v.url = f + o), v.ifModified && (S.lastModified[f] && T.setRequestHeader("If-Modified-Since", S.lastModified[f]), S.etag[f] && T.setRequestHeader("If-None-Match", S.etag[f])), (v.data && v.hasContent && !1 !== v.contentType || t.contentType) && T.setRequestHeader("Content-Type", v.contentType), T.setRequestHeader("Accept", v.dataTypes[0] && v.accepts[v.dataTypes[0]] ? v.accepts[v.dataTypes[0]] + ("*" !== v.dataTypes[0] ? ", " + It + "; q=0.01": "") : v.accepts["*"]), v.headers) T.setRequestHeader(i, v.headers[i]);
       if (v.beforeSend && (!1 === v.beforeSend.call(y, T, v) || h)) return T.abort();
       if (u = "abort", b.add(v.complete), T.done(v.success), T.fail(v.error), c = Bt(Mt, v, t, T)) {
         if (T.readyState = 1, g && m.trigger("ajaxSend", [T, v]), h) return T;
         v.async && 0 < v.timeout && (d = C.setTimeout(function() {
           T.abort("timeout")
         },
         v.timeout));
         try {
           h = !1,
           c.send(a, l)
         } catch(e) {
           if (h) throw e;
           l( - 1, e)
         }
       } else l( - 1, "No Transport");
       function l(e, t, n, r) {
         var i, o, a, s, u, l = t;
         h || (h = !0, d && C.clearTimeout(d), c = void 0, p = r || "", T.readyState = 0 < e ? 4 : 0, i = 200 <= e && e < 300 || 304 === e, n && (s = function(e, t, n) {
           var r, i, o, a, s = e.contents,
           u = e.dataTypes;
           while ("*" === u[0]) u.shift(),
           void 0 === r && (r = e.mimeType || t.getResponseHeader("Content-Type"));
           if (r) for (i in s) if (s[i] && s[i].test(r)) {
             u.unshift(i);
             break
           }
           if (u[0] in n) o = u[0];
           else {
             for (i in n) {
               if (!u[0] || e.converters[i + " " + u[0]]) {
                 o = i;
                 break
               }
               a || (a = i)
             }
             o = o || a
           }
           if (o) return o !== u[0] && u.unshift(o),
           n[o]
         } (v, T, n)), !i && -1 < S.inArray("script", v.dataTypes) && (v.converters["text script"] = function() {}), s = function(e, t, n, r) {
           var i, o, a, s, u, l = {},
           c = e.dataTypes.slice();
           if (c[1]) for (a in e.converters) l[a.toLowerCase()] = e.converters[a];
           o = c.shift();
           while (o) if (e.responseFields[o] && (n[e.responseFields[o]] = t), !u && r && e.dataFilter && (t = e.dataFilter(t, e.dataType)), u = o, o = c.shift()) if ("*" === o) o = u;
           else if ("*" !== u && u !== o) {
             if (! (a = l[u + " " + o] || l["* " + o])) for (i in l) if ((s = i.split(" "))[1] === o && (a = l[u + " " + s[0]] || l["* " + s[0]])) { ! 0 === a ? a = l[i] : !0 !== l[i] && (o = s[0], c.unshift(s[1]));
               break
             }
             if (!0 !== a) if (a && e["throws"]) t = a(t);
             else try {
               t = a(t)
             } catch(e) {
               return {
                 state: "parsererror",
                 error: a ? e: "No conversion from " + u + " to " + o
               }
             }
           }
           return {
             state: "success",
             data: t
           }
         } (v, s, T, i), i ? (v.ifModified && ((u = T.getResponseHeader("Last-Modified")) && (S.lastModified[f] = u), (u = T.getResponseHeader("etag")) && (S.etag[f] = u)), 204 === e || "HEAD" === v.type ? l = "nocontent": 304 === e ? l = "notmodified": (l = s.state, o = s.data, i = !(a = s.error))) : (a = l, !e && l || (l = "error", e < 0 && (e = 0))), T.status = e, T.statusText = (t || l) + "", i ? x.resolveWith(y, [o, l, T]) : x.rejectWith(y, [T, l, a]), T.statusCode(w), w = void 0, g && m.trigger(i ? "ajaxSuccess": "ajaxError", [T, v, i ? o: a]), b.fireWith(y, [T, l]), g && (m.trigger("ajaxComplete", [T, v]), --S.active || S.event.trigger("ajaxStop")))
       }
       return T
     },
     getJSON: function(e, t, n) {
       return S.get(e, t, n, "json")
     },
     getScript: function(e, t) {
       return S.get(e, void 0, t, "script")
     }
   }),
   S.each(["get", "post"],
   function(e, i) {
     S[i] = function(e, t, n, r) {
       return m(t) && (r = r || n, n = t, t = void 0),
       S.ajax(S.extend({
         url: e,
         type: i,
         dataType: r,
         data: t,
         success: n
       },
       S.isPlainObject(e) && e))
     }
   }),
   S.ajaxPrefilter(function(e) {
     var t;
     for (t in e.headers)"content-type" === t.toLowerCase() && (e.contentType = e.headers[t] || "")
   }),
   S._evalUrl = function(e, t, n) {
     return S.ajax({
       url: e,
       type: "GET",
       dataType: "script",
       cache: !0,
       async: !1,
       global: !1,
       converters: {
         "text script": function() {}
       },
       dataFilter: function(e) {
         S.globalEval(e, t, n)
       }
     })
   },
   S.fn.extend({
     wrapAll: function(e) {
       var t;
       return this[0] && (m(e) && (e = e.call(this[0])), t = S(e, this[0].ownerDocument).eq(0).clone(!0), this[0].parentNode && t.insertBefore(this[0]), t.map(function() {
         var e = this;
         while (e.firstElementChild) e = e.firstElementChild;
         return e
       }).append(this)),
       this
     },
     wrapInner: function(n) {
       return m(n) ? this.each(function(e) {
         S(this).wrapInner(n.call(this, e))
       }) : this.each(function() {
         var e = S(this),
         t = e.contents();
         t.length ? t.wrapAll(n) : e.append(n)
       })
     },
     wrap: function(t) {
       var n = m(t);
       return this.each(function(e) {
         S(this).wrapAll(n ? t.call(this, e) : t)
       })
     },
     unwrap: function(e) {
       return this.parent(e).not("body").each(function() {
         S(this).replaceWith(this.childNodes)
       }),
       this
     }
   }),
   S.expr.pseudos.hidden = function(e) {
     return ! S.expr.pseudos.visible(e)
   },
   S.expr.pseudos.visible = function(e) {
     return !! (e.offsetWidth || e.offsetHeight || e.getClientRects().length)
   },
   S.ajaxSettings.xhr = function() {
     try {
       return new C.XMLHttpRequest
     } catch(e) {}
   };
   var _t = {
     0 : 200,
     1223 : 204
   },
   zt = S.ajaxSettings.xhr();
   y.cors = !!zt && "withCredentials" in zt,
   y.ajax = zt = !!zt,
   S.ajaxTransport(function(i) {
     var o, a;
     if (y.cors || zt && !i.crossDomain) return {
       send: function(e, t) {
         var n, r = i.xhr();
         if (r.open(i.type, i.url, i.async, i.username, i.password), i.xhrFields) for (n in i.xhrFields) r[n] = i.xhrFields[n];
         for (n in i.mimeType && r.overrideMimeType && r.overrideMimeType(i.mimeType), i.crossDomain || e["X-Requested-With"] || (e["X-Requested-With"] = "XMLHttpRequest"), e) r.setRequestHeader(n, e[n]);
         o = function(e) {
           return function() {
             o && (o = a = r.onload = r.onerror = r.onabort = r.ontimeout = r.onreadystatechange = null, "abort" === e ? r.abort() : "error" === e ? "number" != typeof r.status ? t(0, "error") : t(r.status, r.statusText) : t(_t[r.status] || r.status, r.statusText, "text" !== (r.responseType || "text") || "string" != typeof r.responseText ? {
               binary: r.response
             }: {
               text: r.responseText
             },
             r.getAllResponseHeaders()))
           }
         },
         r.onload = o(),
         a = r.onerror = r.ontimeout = o("error"),
         void 0 !== r.onabort ? r.onabort = a: r.onreadystatechange = function() {
           4 === r.readyState && C.setTimeout(function() {
             o && a()
           })
         },
         o = o("abort");
         try {
           r.send(i.hasContent && i.data || null)
         } catch(e) {
           if (o) throw e
         }
       },
       abort: function() {
         o && o()
       }
     }
   }),
   S.ajaxPrefilter(function(e) {
     e.crossDomain && (e.contents.script = !1)
   }),
   S.ajaxSetup({
     accepts: {
       script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
     },
     contents: {
       script: /\b(?:java|ecma)script\b/
     },
     converters: {
       "text script": function(e) {
         return S.globalEval(e),
         e
       }
     }
   }),
   S.ajaxPrefilter("script",
   function(e) {
     void 0 === e.cache && (e.cache = !1),
     e.crossDomain && (e.type = "GET")
   }),
   S.ajaxTransport("script",
   function(n) {
     var r, i;
     if (n.crossDomain || n.scriptAttrs) return {
       send: function(e, t) {
         r = S("<script>").attr(n.scriptAttrs || {}).prop({
           charset: n.scriptCharset,
           src: n.url
         }).on("load error", i = function(e) {
           r.remove(),
           i = null,
           e && t("error" === e.type ? 404 : 200, e.type)
         }),
         E.head.appendChild(r[0])
       },
       abort: function() {
         i && i()
       }
     }
   });
   var Ut, Xt = [],
   Vt = /(=)\?(?=&|$)|\?\?/;
   S.ajaxSetup({
     jsonp: "callback",
     jsonpCallback: function() {
       var e = Xt.pop() || S.expando + "_" + Ct.guid++;
       return this[e] = !0,
       e
     }
   }),
   S.ajaxPrefilter("json jsonp",
   function(e, t, n) {
     var r, i, o, a = !1 !== e.jsonp && (Vt.test(e.url) ? "url": "string" == typeof e.data && 0 === (e.contentType || "").indexOf("application/x-www-form-urlencoded") && Vt.test(e.data) && "data");
     if (a || "jsonp" === e.dataTypes[0]) return r = e.jsonpCallback = m(e.jsonpCallback) ? e.jsonpCallback() : e.jsonpCallback,
     a ? e[a] = e[a].replace(Vt, "$1" + r) : !1 !== e.jsonp && (e.url += (Et.test(e.url) ? "&": "?") + e.jsonp + "=" + r),
     e.converters["script json"] = function() {
       return o || S.error(r + " was not called"),
       o[0]
     },
     e.dataTypes[0] = "json",
     i = C[r],
     C[r] = function() {
       o = arguments
     },
     n.always(function() {
       void 0 === i ? S(C).removeProp(r) : C[r] = i,
       e[r] && (e.jsonpCallback = t.jsonpCallback, Xt.push(r)),
       o && m(i) && i(o[0]),
       o = i = void 0
     }),
     "script"
   }),
   y.createHTMLDocument = ((Ut = E.implementation.createHTMLDocument("").body).innerHTML = "<form></form><form></form>", 2 === Ut.childNodes.length),
   S.parseHTML = function(e, t, n) {
     return "string" != typeof e ? [] : ("boolean" == typeof t && (n = t, t = !1), t || (y.createHTMLDocument ? ((r = (t = E.implementation.createHTMLDocument("")).createElement("base")).href = E.location.href, t.head.appendChild(r)) : t = E), o = !n && [], (i = N.exec(e)) ? [t.createElement(i[1])] : (i = xe([e], t, o), o && o.length && S(o).remove(), S.merge([], i.childNodes)));
     var r, i, o
   }, S.fn.load = function(e, t, n) {
     var r, i, o, a = this,
     s = e.indexOf(" ");
     return - 1 < s && (r = vt(e.slice(s)), e = e.slice(0, s)),
     m(t) ? (n = t, t = void 0) : t && "object" == typeof t && (i = "POST"),
     0 < a.length && S.ajax({
       url: e,
       type: i || "GET",
       dataType: "html",
       data: t
     }).done(function(e) {
       o = arguments,
       a.html(r ? S("<div>").append(S.parseHTML(e)).find(r) : e)
     }).always(n &&
     function(e, t) {
       a.each(function() {
         n.apply(this, o || [e.responseText, t, e])
       })
     }),
     this
   },
   S.expr.pseudos.animated = function(t) {
     return S.grep(S.timers,
     function(e) {
       return t === e.elem
     }).length
   },
   S.offset = {
     setOffset: function(e, t, n) {
       var r, i, o, a, s, u, l = S.css(e, "position"),
       c = S(e),
       f = {};
       "static" === l && (e.style.position = "relative"),
       s = c.offset(),
       o = S.css(e, "top"),
       u = S.css(e, "left"),
       ("absolute" === l || "fixed" === l) && -1 < (o + u).indexOf("auto") ? (a = (r = c.position()).top, i = r.left) : (a = parseFloat(o) || 0, i = parseFloat(u) || 0),
       m(t) && (t = t.call(e, n, S.extend({},
       s))),
       null != t.top && (f.top = t.top - s.top + a),
       null != t.left && (f.left = t.left - s.left + i),
       "using" in t ? t.using.call(e, f) : ("number" == typeof f.top && (f.top += "px"), "number" == typeof f.left && (f.left += "px"), c.css(f))
     }
   },
   S.fn.extend({
     offset: function(t) {
       if (arguments.length) return void 0 === t ? this: this.each(function(e) {
         S.offset.setOffset(this, t, e)
       });
       var e, n, r = this[0];
       return r ? r.getClientRects().length ? (e = r.getBoundingClientRect(), n = r.ownerDocument.defaultView, {
         top: e.top + n.pageYOffset,
         left: e.left + n.pageXOffset
       }) : {
         top: 0,
         left: 0
       }: void 0
     },
     position: function() {
       if (this[0]) {
         var e, t, n, r = this[0],
         i = {
           top: 0,
           left: 0
         };
         if ("fixed" === S.css(r, "position")) t = r.getBoundingClientRect();
         else {
           t = this.offset(),
           n = r.ownerDocument,
           e = r.offsetParent || n.documentElement;
           while (e && (e === n.body || e === n.documentElement) && "static" === S.css(e, "position")) e = e.parentNode;
           e && e !== r && 1 === e.nodeType && ((i = S(e).offset()).top += S.css(e, "borderTopWidth", !0), i.left += S.css(e, "borderLeftWidth", !0))
         }
         return {
           top: t.top - i.top - S.css(r, "marginTop", !0),
           left: t.left - i.left - S.css(r, "marginLeft", !0)
         }
       }
     },
     offsetParent: function() {
       return this.map(function() {
         var e = this.offsetParent;
         while (e && "static" === S.css(e, "position")) e = e.offsetParent;
         return e || re
       })
     }
   }),
   S.each({
     scrollLeft: "pageXOffset",
     scrollTop: "pageYOffset"
   },
   function(t, i) {
     var o = "pageYOffset" === i;
     S.fn[t] = function(e) {
       return $(this,
       function(e, t, n) {
         var r;
         if (x(e) ? r = e: 9 === e.nodeType && (r = e.defaultView), void 0 === n) return r ? r[i] : e[t];
         r ? r.scrollTo(o ? r.pageXOffset: n, o ? n: r.pageYOffset) : e[t] = n
       },
       t, e, arguments.length)
     }
   }),
   S.each(["top", "left"],
   function(e, n) {
     S.cssHooks[n] = $e(y.pixelPosition,
     function(e, t) {
       if (t) return t = Be(e, n),
       Me.test(t) ? S(e).position()[n] + "px": t
     })
   }),
   S.each({
     Height: "height",
     Width: "width"
   },
   function(a, s) {
     S.each({
       padding: "inner" + a,
       content: s,
       "": "outer" + a
     },
     function(r, o) {
       S.fn[o] = function(e, t) {
         var n = arguments.length && (r || "boolean" != typeof e),
         i = r || (!0 === e || !0 === t ? "margin": "border");
         return $(this,
         function(e, t, n) {
           var r;
           return x(e) ? 0 === o.indexOf("outer") ? e["inner" + a] : e.document.documentElement["client" + a] : 9 === e.nodeType ? (r = e.documentElement, Math.max(e.body["scroll" + a], r["scroll" + a], e.body["offset" + a], r["offset" + a], r["client" + a])) : void 0 === n ? S.css(e, t, i) : S.style(e, t, n, i)
         },
         s, n ? e: void 0, n)
       }
     })
   }),
   S.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"],
   function(e, t) {
     S.fn[t] = function(e) {
       return this.on(t, e)
     }
   }),
   S.fn.extend({
     bind: function(e, t, n) {
       return this.on(e, null, t, n)
     },
     unbind: function(e, t) {
       return this.off(e, null, t)
     },
     delegate: function(e, t, n, r) {
       return this.on(t, e, n, r)
     },
     undelegate: function(e, t, n) {
       return 1 === arguments.length ? this.off(e, "**") : this.off(t, e || "**", n)
     },
     hover: function(e, t) {
       return this.mouseenter(e).mouseleave(t || e)
     }
   }),
   S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),
   function(e, n) {
     S.fn[n] = function(e, t) {
       return 0 < arguments.length ? this.on(n, null, e, t) : this.trigger(n)
     }
   });
   var Gt = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
   S.proxy = function(e, t) {
     var n, r, i;
     if ("string" == typeof t && (n = e[t], t = e, e = n), m(e)) return r = s.call(arguments, 2),
     (i = function() {
       return e.apply(t || this, r.concat(s.call(arguments)))
     }).guid = e.guid = e.guid || S.guid++,
     i
   },
   S.holdReady = function(e) {
     e ? S.readyWait++:S.ready(!0)
   },
   S.isArray = Array.isArray,
   S.parseJSON = JSON.parse,
   S.nodeName = A,
   S.isFunction = m,
   S.isWindow = x,
   S.camelCase = X,
   S.type = w,
   S.now = Date.now,
   S.isNumeric = function(e) {
     var t = S.type(e);
     return ("number" === t || "string" === t) && !isNaN(e - parseFloat(e))
   },
   S.trim = function(e) {
     return null == e ? "": (e + "").replace(Gt, "")
   },
   "function" == typeof define && define.amd && define("jquery", [],
   function() {
     return S
    });
    });
   var Yt = C.jQuery,
})();
   Qt = C.$;
   return S.noConflict = function(e) {
     return C.$ === S && (C.$ = Qt),
     e && C.jQuery === S && (C.jQuery = Yt),
     S
   },
   "undefined" == typeof e && (C.jQuery = C.$ = S),
   S
});
// 注意:live2d_path 参数应使用绝对路径
const live2d_path = "https://cdn.jsdelivr.net/gh/stevenjoezhang/live2d-widget@latest/";
//const live2d_path = "/live2d-widget/";
 
// 封装异步加载资源的方法
function loadExternalResource(url, type) {
return new Promise((resolve, reject) => {
let tag;
 
if (type === "css") {
tag = document.createElement("link");
tag.rel = "stylesheet";
tag.href = url;
}
else if (type === "js") {
tag = document.createElement("script");
tag.src = url;
}
if (tag) {
tag.onload = () => resolve(url);
tag.onerror = () => reject(url);
document.head.appendChild(tag);
}
});
}
 
// 加载 waifu.css live2d.min.js waifu-tips.js
if (screen.width >= 768) {
Promise.all([
loadExternalResource(live2d_path + "waifu.css", "css"),
loadExternalResource(live2d_path + "live2d.min.js", "js"),
loadExternalResource(live2d_path + "waifu-tips.js", "js")
]).then(() => {
initWidget({
waifuPath: "https://www.hmoegirl.com/index.php?title=用户:%3D海豚%3D/js/waifu-tips.js&action=raw&ctype=text/json",
//apiPath: "https://live2d.fghrsh.net/api/",
cdnPath: "https://cdn.jsdelivr.net/gh/24182400966/live2d_api/"
});
});
}
// initWidget 第一个参数为 waifu-tips.json 的路径,第二个参数为 API 地址
// API 后端可自行搭建,参考 https://github.com/fghrsh/live2d_api
// 初始化看板娘会自动加载指定目录下的 waifu-tips.json
 
console.log(`
  く__,.ヘヽ.     /  ,ー、 〉
      \ ', !-─‐-i  /  /´
      /`ー'    L//`ヽ、
     /  /,  /|  ,  ,    ',
    イ  / /-‐/  i  L_ ハ ヽ!  i
     レ ヘ 7イ`ト  レ'ァ-ト、!ハ|  |
      !,/7 '0'   ´0iソ|   |
      |.从"   _   ,,,, / |./   |
      レ'| i>.、,,__  _,.イ /  .i  |
       レ'| | / k_7_/レ'ヽ,  ハ.  |
        | |/i 〈|/  i  ,.ヘ |  i  |
       .|/ /  i:   ヘ!   \  |
        kヽ>、ハ   _,.ヘ、   /、!
        !'〈//`T´', \ `'7'ーr'
        レ'ヽL__|___i,___,ンレ|ノ
          ト-,/  |___./
          'ー'   !_,.:
`);

2021年7月31日 (六) 14:43的版本

(async () => {
    if (!["edit", "submit"].includes(mw.config.get("wgAction"))) {
        return;
    }
    await mw.loader.using("mw.Api");
    mw.loader.using('mediawiki.notification');
    const wgPageName = mw.config.get("wgPageName");
    const wgCurRevisionId = mw.config.get("wgCurRevisionId");
    let needCheckFlag = true;
    const api = new mw.Api({ timeout: 5000 });
    const wpSave = $("#wpSave");
    const editform = $("#editform");
    const conflictAlert = "请备份您的编辑后刷新页面再进行相关操作!";
    const SYMBOL_UNDEFINED = Symbol("SYMBOL_UNDEFINED");
    wpSave.val = (value = SYMBOL_UNDEFINED) => {
        const val = $.fn.val.bind(wpSave);
        return value === SYMBOL_UNDEFINED ? val() : val(value).attr("title", value);
    };
    const disable = ($buttons) => {
        return $buttons.css("font-weight", "normal").parent().removeClass("oo-ui-widget-enabled oo-ui-flaggedElement-primary oo-ui-flaggedElement-progressive").addClass("oo-ui-widget-disabled");
    }
    wpSave.on("click", () => {
        var div =  document.querySelector("#wpTextbox1");
        div.innerHTML = div.innerHTML
        .replace(/㑯/g,'㑔')
        .replace(/㑳/g,'㑇')
        .replace(/㑶/g,'㐹')
        .replace(/㒓/g,'𠉂')
        .replace(/㒺/g,'罔')
        .replace(/㓂/g,'寇')
        .replace(/㓨/g,'刾')
        .replace(/㕁/g,'却')
        .replace(/㕑/g,'厨')
        .replace(/㕘/g,'参')
        .replace(/㕥/g,'以')
        .replace(/㗲/g,'𠵾')
        .replace(/㘚/g,'㘎')
        .replace(/㘭/g,'坳')
        .replace(/㜄/g,'㚯')
        .replace(/㜏/g,'㛣')
        .replace(/㜢/g,'𡞱')
        .replace(/㜷/g,'𡝠')
        .replace(/㝛/g,'宿')
        .replace(/㝠/g,'冥')
        .replace(/㞞/g,'𪨊')
        .replace(/㠀/g,'岛')
        .replace(/㠏/g,'㟆')
        .replace(/㠣/g,'𫵷')
        .replace(/㠯/g,'以')
        .replace(/㠶/g,'帆')
        .replace(/㡌/g,'帽')
        .replace(/㢘/g,'廉')
        .replace(/㢝/g,'𢋈')
        .replace(/㤙/g,'恩')
        .replace(/㥦/g,'惬')
        .replace(/㥮/g,'㤘')
        .replace(/㦎/g,'𢛯')
        .replace(/㨗/g,'捷')
        .replace(/㨪/g,'晃')
        .replace(/㨿/g,'据')
        .replace(/㩗/g,'携')
        .replace(/㩜/g,'㨫')
        .replace(/㩦/g,'携')
        .replace(/㩳/g,'㧐')
        .replace(/㪚/g,'散')
        .replace(/㪟/g,'敦')
        .replace(/㬉/g,'暖')
        .replace(/㬪/g,'叠')
        .replace(/㯭/g,'橹')
        .replace(/㱃/g,'饮')
        .replace(/㳒/g,'法')
        .replace(/㴱/g,'深')
        .replace(/㷿/g,'𤈷')
        .replace(/㺏/g,'𤠋')
        .replace(/㼝/g,'碗')
        .replace(/㽞/g,'留')
        .replace(/㿜/g,'瘪')
        .replace(/㿧/g,'𤽯')
        .replace(/䀹/g,'𥅴')
        .replace(/䁪/g,'𥇢')
        .replace(/䁻/g,'䀥')
        .replace(/䃮/g,'鿎')
        .replace(/䈰/g,'筲')
        .replace(/䉙/g,'𥬀')
        .replace(/䉬/g,'𫂈')
        .replace(/䉲/g,'𥮜')
        .replace(/䊀/g,'糊')
        .replace(/䊭/g,'𥺅')
        .replace(/䊷/g,'䌶')
        .replace(/䋙/g,'䌺')
        .replace(/䋚/g,'䌻')
        .replace(/䋹/g,'䌿')
        .replace(/䋻/g,'䌾')
        .replace(/䋿/g,'𦈓')
        .replace(/䌈/g,'𦈖')
        .replace(/䌋/g,'𦈘')
        .replace(/䌖/g,'𦈜')
        .replace(/䌝/g,'𦈟')
        .replace(/䌟/g,'𦈞')
        .replace(/䌥/g,'𦈠')
        .replace(/䌰/g,'𦈙')
        .replace(/䎱/g,'䎬')
        .replace(/䓣/g,'𬜯')
        .replace(/䕳/g,'𦰴')
        .replace(/䗬/g,'蜂')
        .replace(/䗿/g,'𧉞')
        .replace(/䘏/g,'恤')
        .replace(/䘑/g,'脉')
        .replace(/䘚/g,'卒')
        .replace(/䙡/g,'䙌')
        .replace(/䛐/g,'词')
        .replace(/䛡/g,'话')
        .replace(/䜀/g,'䜧')
        .replace(/䝔/g,'獾')
        .replace(/䝻/g,'𧹕')
        .replace(/䝼/g,'䞍')
        .replace(/䞈/g,'𧹑')
        .replace(/䠀/g,'蹚')
        .replace(/䠶/g,'射')
        .replace(/䡵/g,'𫟦')
        .replace(/䢨/g,'𨑹')
        .replace(/䥇/g,'䦂')
        .replace(/䥑/g,'鿏')
        .replace(/䥕/g,'𬭯')
        .replace(/䥥/g,'镰')
        .replace(/䥩/g,'𨱖')
        .replace(/䥱/g,'䥾')
        .replace(/䦘/g,'𨸄')
        .replace(/䦛/g,'䦶')
        .replace(/䦟/g,'䦷')
        .replace(/䦳/g,'𨷿')
        .replace(/䧢/g,'𨸟')
        .replace(/䪏/g,'𩏼')
        .replace(/䪗/g,'𩐀')
        .replace(/䪘/g,'𩏿')
        .replace(/䫴/g,'𩖗')
        .replace(/䬃/g,'飒')
        .replace(/䬘/g,'𩙮')
        .replace(/䬝/g,'𩙯')
        .replace(/䬞/g,'𩙧')
        .replace(/䭀/g,'𩠇')
        .replace(/䭃/g,'𩠈')
        .replace(/䭾/g,'驮')
        .replace(/䭿/g,'𩧭')
        .replace(/䮄/g,'𫠊')
        .replace(/䮝/g,'𩧰')
        .replace(/䮞/g,'𩨁')
        .replace(/䮠/g,'𩧿')
        .replace(/䮫/g,'𩨇')
        .replace(/䮳/g,'𩨏')
        .replace(/䮾/g,'𩧪')
        .replace(/䯀/g,'䯅')
        .replace(/䰟/g,'魂')
        .replace(/䰾/g,'鲃')
        .replace(/䱙/g,'𩾈')
        .replace(/䱬/g,'𩾊')
        .replace(/䱰/g,'𩾋')
        .replace(/䱷/g,'䲣')
        .replace(/䱽/g,'䲝')
        .replace(/䲁/g,'鳚')
        .replace(/䲖/g,'𩾂')
        .replace(/䲘/g,'鳤')
        .replace(/䲰/g,'𪉂')
        .replace(/䳘/g,'鹅')
        .replace(/䴉/g,'鹮')
        .replace(/䴬/g,'𪎈')
        .replace(/䴴/g,'𪎋')
        .replace(/䶊/g,'衄')
        .replace(/丟/g,'丢')
        .replace(/丣/g,'卯')
        .replace(/並/g,'并')
        .replace(/乗/g,'乘')
        .replace(/乹/g,'干')
        .replace(/乾/g,'干')
        .replace(/亁/g,'干')
        .replace(/亂/g,'乱')
        .replace(/亙/g,'亘')
        .replace(/亝/g,'斋')
        .replace(/亞/g,'亚')
        .replace(/亱/g,'夜')
        .replace(/亷/g,'廉')
        .replace(/亾/g,'亡')
        .replace(/佇/g,'伫')
        .replace(/佈/g,'布')
        .replace(/佔/g,'占')
        .replace(/併/g,'并')
        .replace(/來/g,'来')
        .replace(/侖/g,'仑')
        .replace(/侶/g,'侣')
        .replace(/俁/g,'俣')
        .replace(/係/g,'系')
        .replace(/俔/g,'伣')
        .replace(/俠/g,'侠')
        .replace(/俥/g,'伡')
        .replace(/俻/g,'备')
        .replace(/倀/g,'伥')
        .replace(/倆/g,'俩')
        .replace(/倈/g,'俫')
        .replace(/倉/g,'仓')
        .replace(/個/g,'个')
        .replace(/倐/g,'倏')
        .replace(/們/g,'们')
        .replace(/倖/g,'幸')
        .replace(/倣/g,'仿')
        .replace(/倫/g,'伦')
        .replace(/倲/g,'㑈')
        .replace(/倸/g,'睬')
        .replace(/偉/g,'伟')
        .replace(/偑/g,'㐽')
        .replace(/側/g,'侧')
        .replace(/偵/g,'侦')
        .replace(/偽/g,'伪')
        .replace(/傌/g,'㐷')
        .replace(/傑/g,'杰')
        .replace(/傖/g,'伧')
        .replace(/傘/g,'伞')
        .replace(/備/g,'备')
        .replace(/傚/g,'效')
        .replace(/傢/g,'家')
        .replace(/傭/g,'佣')
        .replace(/傯/g,'偬')
        .replace(/傳/g,'传')
        .replace(/傴/g,'伛')
        .replace(/債/g,'债')
        .replace(/傷/g,'伤')
        .replace(/傾/g,'倾')
        .replace(/僂/g,'偻')
        .replace(/僅/g,'仅')
        .replace(/僉/g,'佥')
        .replace(/僊/g,'仙')
        .replace(/働/g,'动')
        .replace(/僑/g,'侨')
        .replace(/僕/g,'仆')
        .replace(/僞/g,'伪')
        .replace(/僤/g,'𫢸')
        .replace(/僥/g,'侥')
        .replace(/僨/g,'偾')
        .replace(/僱/g,'雇')
        .replace(/價/g,'价')
        .replace(/儀/g,'仪')
        .replace(/儂/g,'侬')
        .replace(/億/g,'亿')
        .replace(/儈/g,'侩')
        .replace(/儉/g,'俭')
        .replace(/儌/g,'侥')
        .replace(/儐/g,'傧')
        .replace(/儔/g,'俦')
        .replace(/儕/g,'侪')
        .replace(/儘/g,'尽')
        .replace(/償/g,'偿')
        .replace(/儣/g,'𠆲')
        .replace(/優/g,'优')
        .replace(/儲/g,'储')
        .replace(/儷/g,'俪')
        .replace(/儸/g,'㑩')
        .replace(/儺/g,'傩')
        .replace(/儻/g,'傥')
        .replace(/儼/g,'俨')
        .replace(/兇/g,'凶')
        .replace(/兌/g,'兑')
        .replace(/兎/g,'兔')
        .replace(/兒/g,'儿')
        .replace(/兗/g,'兖')
        .replace(/兠/g,'兜')
        .replace(/內/g,'内')
        .replace(/兩/g,'两')
        .replace(/冄/g,'冉')
        .replace(/冊/g,'册')
        .replace(/冐/g,'冒')
        .replace(/冑/g,'胄')
        .replace(/冪/g,'幂')
        .replace(/冺/g,'泯')
        .replace(/凈/g,'净')
        .replace(/凍/g,'冻')
        .replace(/凙/g,'𪞝')
        .replace(/凜/g,'凛')
        .replace(/凢/g,'凡')
        .replace(/凱/g,'凯')
        .replace(/凴/g,'凭')
        .replace(/別/g,'别')
        .replace(/刦/g,'劫')
        .replace(/刧/g,'劫')
        .replace(/刪/g,'删')
        .replace(/刼/g,'劫')
        .replace(/剄/g,'刭')
        .replace(/則/g,'则')
        .replace(/剉/g,'锉')
        .replace(/剋/g,'克')
        .replace(/剎/g,'刹')
        .replace(/剏/g,'创')
        .replace(/剗/g,'刬')
        .replace(/剙/g,'创')
        .replace(/剛/g,'刚')
        .replace(/剝/g,'剥')
        .replace(/剮/g,'剐')
        .replace(/剳/g,'札')
        .replace(/剴/g,'剀')
        .replace(/創/g,'创')
        .replace(/剷/g,'铲')
        .replace(/剹/g,'戮')
        .replace(/剾/g,'𠛅')
        .replace(/劃/g,'划')
        .replace(/劄/g,'札')
        .replace(/劇/g,'剧')
        .replace(/劉/g,'刘')
        .replace(/劊/g,'刽')
        .replace(/劌/g,'刿')
        .replace(/劍/g,'剑')
        .replace(/劏/g,'㓥')
        .replace(/劑/g,'剂')
        .replace(/劒/g,'剑')
        .replace(/劚/g,'㔉')
        .replace(/効/g,'效')
        .replace(/勁/g,'劲')
        .replace(/勅/g,'敕')
        .replace(/勌/g,'倦')
        .replace(/勑/g,'敕')
        .replace(/動/g,'动')
        .replace(/務/g,'务')
        .replace(/勛/g,'勋')
        .replace(/勝/g,'胜')
        .replace(/勞/g,'劳')
        .replace(/勢/g,'势')
        .replace(/勣/g,'𪟝')
        .replace(/勦/g,'剿')
        .replace(/勩/g,'勚')
        .replace(/勱/g,'劢')
        .replace(/勳/g,'勋')
        .replace(/勵/g,'励')
        .replace(/勸/g,'劝')
        .replace(/勻/g,'匀')
        .replace(/匟/g,'炕')
        .replace(/匭/g,'匦')
        .replace(/匯/g,'汇')
        .replace(/匱/g,'匮')
        .replace(/匲/g,'奁')
        .replace(/匳/g,'奁')
        .replace(/區/g,'区')
        .replace(/協/g,'协')
        .replace(/卹/g,'恤')
        .replace(/卻/g,'却')
        .replace(/卽/g,'即')
        .replace(/厀/g,'膝')
        .replace(/厙/g,'厍')
        .replace(/厠/g,'厕')
        .replace(/厤/g,'历')
        .replace(/厭/g,'厌')
        .replace(/厰/g,'厂')
        .replace(/厲/g,'厉')
        .replace(/厴/g,'厣')
        .replace(/參/g,'参')
        .replace(/叄/g,'叁')
        .replace(/叢/g,'丛')
        .replace(/吚/g,'咿')
        .replace(/吳/g,'吴')
        .replace(/吶/g,'呐')
        .replace(/呂/g,'吕')
        .replace(/呌/g,'叫')
        .replace(/呪/g,'咒')
        .replace(/咊/g,'和')
        .replace(/咼/g,'呙')
        .replace(/員/g,'员')
        .replace(/哯/g,'𠯟')
        .replace(/哶/g,'咩')
        .replace(/唄/g,'呗')
        .replace(/唕/g,'唣')
        .replace(/唘/g,'启')
        .replace(/唚/g,'吣')
        .replace(/唸/g,'念')
        .replace(/啎/g,'忤')
        .replace(/問/g,'问')
        .replace(/啑/g,'喋')
        .replace(/啓/g,'启')
        .replace(/啗/g,'啖')
        .replace(/啞/g,'哑')
        .replace(/啟/g,'启')
        .replace(/啢/g,'唡')
        .replace(/啣/g,'衔')
        .replace(/喎/g,'㖞')
        .replace(/喚/g,'唤')
        .replace(/喪/g,'丧')
        .replace(/喫/g,'吃')
        .replace(/喬/g,'乔')
        .replace(/單/g,'单')
        .replace(/喲/g,'哟')
        .replace(/嗁/g,'啼')
        .replace(/嗆/g,'呛')
        .replace(/嗇/g,'啬')
        .replace(/嗊/g,'唝')
        .replace(/嗎/g,'吗')
        .replace(/嗚/g,'呜')
        .replace(/嗩/g,'唢')
        .replace(/嗶/g,'哔')
        .replace(/嗹/g,'𪡏')
        .replace(/嘆/g,'叹')
        .replace(/嘍/g,'喽')
        .replace(/嘑/g,'呼')
        .replace(/嘓/g,'啯')
        .replace(/嘔/g,'呕')
        .replace(/嘖/g,'啧')
        .replace(/嘗/g,'尝')
        .replace(/嘜/g,'唛')
        .replace(/嘠/g,'嘎')
        .replace(/嘩/g,'哗')
        .replace(/嘮/g,'唠')
        .replace(/嘯/g,'啸')
        .replace(/嘰/g,'叽')
        .replace(/嘵/g,'哓')
        .replace(/嘷/g,'嗥')
        .replace(/嘸/g,'呒')
        .replace(/嘽/g,'啴')
        .replace(/噁/g,'𫫇')
        .replace(/噅/g,'𠯠')
        .replace(/噉/g,'啖')
        .replace(/噓/g,'嘘')
        .replace(/噚/g,'㖊')
        .replace(/噝/g,'咝')
        .replace(/噠/g,'哒')
        .replace(/噥/g,'哝')
        .replace(/噦/g,'哕')
        .replace(/噯/g,'嗳')
        .replace(/噲/g,'哙')
        .replace(/噴/g,'喷')
        .replace(/噸/g,'吨')
        .replace(/噹/g,'当')
        .replace(/嚀/g,'咛')
        .replace(/嚇/g,'吓')
        .replace(/嚌/g,'哜')
        .replace(/嚐/g,'尝')
        .replace(/嚕/g,'噜')
        .replace(/嚙/g,'啮')
        .replace(/嚥/g,'咽')
        .replace(/嚦/g,'呖')
        .replace(/嚨/g,'咙')
        .replace(/嚮/g,'向')
        .replace(/嚲/g,'亸')
        .replace(/嚳/g,'喾')
        .replace(/嚴/g,'严')
        .replace(/嚶/g,'嘤')
        .replace(/囀/g,'啭')
        .replace(/囁/g,'嗫')
        .replace(/囂/g,'嚣')
        .replace(/囅/g,'冁')
        .replace(/囈/g,'呓')
        .replace(/囉/g,'啰')
        .replace(/囌/g,'苏')
        .replace(/囑/g,'嘱')
        .replace(/囓/g,'啮')
        .replace(/囙/g,'因')
        .replace(/囪/g,'囱')
        .replace(/圅/g,'函')
        .replace(/圇/g,'囵')
        .replace(/國/g,'国')
        .replace(/圍/g,'围')
        .replace(/園/g,'园')
        .replace(/圓/g,'圆')
        .replace(/圖/g,'图')
        .replace(/團/g,'团')
        .replace(/圞/g,'𪢮')
        .replace(/坿/g,'附')
        .replace(/垜/g,'垛')
        .replace(/垻/g,'坝')
        .replace(/埡/g,'垭')
        .replace(/埨/g,'𫭢')
        .replace(/執/g,'执')
        .replace(/堅/g,'坚')
        .replace(/堊/g,'垩')
        .replace(/堝/g,'埚')
        .replace(/堯/g,'尧')
        .replace(/報/g,'报')
        .replace(/場/g,'场')
        .replace(/塊/g,'块')
        .replace(/塋/g,'茔')
        .replace(/塏/g,'垲')
        .replace(/塒/g,'埘')
        .replace(/塗/g,'涂')
        .replace(/塚/g,'冢')
        .replace(/塟/g,'葬')
        .replace(/塢/g,'坞')
        .replace(/塤/g,'埙')
        .replace(/塲/g,'场')
        .replace(/塵/g,'尘')
        .replace(/塸/g,'𫭟')
        .replace(/塹/g,'堑')
        .replace(/塿/g,'𪣻')
        .replace(/墊/g,'垫')
        .replace(/墖/g,'塔')
        .replace(/墜/g,'坠')
        .replace(/墠/g,'𫮃')
        .replace(/墮/g,'堕')
        .replace(/墰/g,'坛')
        .replace(/墳/g,'坟')
        .replace(/墻/g,'墙')
        .replace(/墾/g,'垦')
        .replace(/壇/g,'坛')
        .replace(/壈/g,'𡒄')
        .replace(/壋/g,'垱')
        .replace(/壎/g,'埙')
        .replace(/壓/g,'压')
        .replace(/壘/g,'垒')
        .replace(/壙/g,'圹')
        .replace(/壚/g,'垆')
        .replace(/壜/g,'坛')
        .replace(/壞/g,'坏')
        .replace(/壟/g,'垄')
        .replace(/壠/g,'垅')
        .replace(/壢/g,'坜')
        .replace(/壩/g,'坝')
        .replace(/壪/g,'塆')
        .replace(/壯/g,'壮')
        .replace(/壺/g,'壶')
        .replace(/壻/g,'婿')
        .replace(/壼/g,'壸')
        .replace(/壽/g,'寿')
        .replace(/夘/g,'卯')
        .replace(/夠/g,'够')
        .replace(/夢/g,'梦')
        .replace(/夥/g,'伙')
        .replace(/夾/g,'夹')
        .replace(/奐/g,'奂')
        .replace(/奧/g,'奥')
        .replace(/奩/g,'奁')
        .replace(/奪/g,'夺')
        .replace(/奬/g,'奖')
        .replace(/奮/g,'奋')
        .replace(/奼/g,'姹')
        .replace(/妝/g,'妆')
        .replace(/妬/g,'妒')
        .replace(/妳/g,'你')
        .replace(/妷/g,'侄')
        .replace(/姉/g,'姊')
        .replace(/姍/g,'姗')
        .replace(/姙/g,'妊')
        .replace(/姦/g,'奸')
        .replace(/姪/g,'侄')
        .replace(/姸/g,'妍')
        .replace(/娙/g,'𫰛')
        .replace(/娛/g,'娱')
        .replace(/婁/g,'娄')
        .replace(/婣/g,'姻')
        .replace(/婦/g,'妇')
        .replace(/婬/g,'淫')
        .replace(/婭/g,'娅')
        .replace(/媍/g,'妇')
        .replace(/媧/g,'娲')
        .replace(/媯/g,'妫')
        .replace(/媰/g,'㛀')
        .replace(/媼/g,'媪')
        .replace(/媽/g,'妈')
        .replace(/媿/g,'愧')
        .replace(/嫋/g,'袅')
        .replace(/嫗/g,'妪')
        .replace(/嫰/g,'嫩')
        .replace(/嫵/g,'妩')
        .replace(/嫺/g,'娴')
        .replace(/嫻/g,'娴')
        .replace(/嫿/g,'婳')
        .replace(/嬀/g,'妫')
        .replace(/嬃/g,'媭')
        .replace(/嬈/g,'娆')
        .replace(/嬋/g,'婵')
        .replace(/嬌/g,'娇')
        .replace(/嬙/g,'嫱')
        .replace(/嬝/g,'袅')
        .replace(/嬡/g,'嫒')
        .replace(/嬤/g,'嬷')
        .replace(/嬪/g,'嫔')
        .replace(/嬭/g,'奶')
        .replace(/嬰/g,'婴')
        .replace(/嬸/g,'婶')
        .replace(/嬾/g,'懒')
        .replace(/孃/g,'娘')
        .replace(/孋/g,'㛤')
        .replace(/孌/g,'娈')
        .replace(/孫/g,'孙')
        .replace(/學/g,'学')
        .replace(/孼/g,'孽')
        .replace(/孿/g,'孪')
        .replace(/宂/g,'冗')
        .replace(/宮/g,'宫')
        .replace(/寀/g,'采')
        .replace(/寃/g,'冤')
        .replace(/寑/g,'寝')
        .replace(/寢/g,'寝')
        .replace(/實/g,'实')
        .replace(/寧/g,'宁')
        .replace(/審/g,'审')
        .replace(/寫/g,'写')
        .replace(/寬/g,'宽')
        .replace(/寳/g,'宝')
        .replace(/寵/g,'宠')
        .replace(/寶/g,'宝')
        .replace(/尅/g,'克')
        .replace(/將/g,'将')
        .replace(/專/g,'专')
        .replace(/尋/g,'寻')
        .replace(/對/g,'对')
        .replace(/導/g,'导')
        .replace(/尒/g,'尔')
        .replace(/尙/g,'尚')
        .replace(/尟/g,'鲜')
        .replace(/尠/g,'鲜')
        .replace(/尷/g,'尴')
        .replace(/屆/g,'届')
        .replace(/屍/g,'尸')
        .replace(/屓/g,'屃')
        .replace(/屛/g,'屏')
        .replace(/屜/g,'屉')
        .replace(/屢/g,'屡')
        .replace(/層/g,'层')
        .replace(/屨/g,'屦')
        .replace(/屩/g,'𪨗')
        .replace(/屬/g,'属')
        .replace(/屭/g,'屃')
        .replace(/岅/g,'坂')
        .replace(/岡/g,'冈')
        .replace(/峝/g,'峒')
        .replace(/峴/g,'岘')
        .replace(/島/g,'岛')
        .replace(/峽/g,'峡')
        .replace(/崍/g,'崃')
        .replace(/崗/g,'岗')
        .replace(/崙/g,'仑')
        .replace(/崢/g,'峥')
        .replace(/崬/g,'岽')
        .replace(/嵐/g,'岚')
        .replace(/嵗/g,'岁')
        .replace(/嵼/g,'𡶴')
        .replace(/嵽/g,'𫶇')
        .replace(/嶁/g,'嵝')
        .replace(/嶃/g,'崭')
        .replace(/嶄/g,'崭')
        .replace(/嶇/g,'岖')
        .replace(/嶔/g,'嵚')
        .replace(/嶗/g,'崂')
        .replace(/嶠/g,'峤')
        .replace(/嶢/g,'峣')
        .replace(/嶧/g,'峄')
        .replace(/嶨/g,'峃')
        .replace(/嶮/g,'崄')
        .replace(/嶸/g,'嵘')
        .replace(/嶺/g,'岭')
        .replace(/嶼/g,'屿')
        .replace(/嶽/g,'岳')
        .replace(/巋/g,'岿')
        .replace(/巒/g,'峦')
        .replace(/巔/g,'巅')
        .replace(/巖/g,'岩')
        .replace(/巗/g,'岩')
        .replace(/巘/g,'𪩘')
        .replace(/巠/g,'𢀖')
        .replace(/巰/g,'巯')
        .replace(/巵/g,'卮')
        .replace(/帀/g,'匝')
        .replace(/帋/g,'纸')
        .replace(/帥/g,'帅')
        .replace(/師/g,'师')
        .replace(/帬/g,'裙')
        .replace(/帳/g,'帐')
        .replace(/帶/g,'带')
        .replace(/幀/g,'帧')
        .replace(/幃/g,'帏')
        .replace(/幇/g,'帮')
        .replace(/幑/g,'徽')
        .replace(/幗/g,'帼')
        .replace(/幘/g,'帻')
        .replace(/幙/g,'幕')
        .replace(/幚/g,'帮')
        .replace(/幟/g,'帜')
        .replace(/幣/g,'币')
        .replace(/幫/g,'帮')
        .replace(/幬/g,'帱')
        .replace(/幹/g,'干')
        .replace(/幾/g,'几')
        .replace(/庫/g,'库')
        .replace(/庻/g,'庶')
        .replace(/庽/g,'寓')
        .replace(/廁/g,'厕')
        .replace(/廂/g,'厢')
        .replace(/廄/g,'厩')
        .replace(/廈/g,'厦')
        .replace(/廎/g,'庼')
        .replace(/廐/g,'厩')
        .replace(/廕/g,'荫')
        .replace(/廚/g,'厨')
        .replace(/廝/g,'厮')
        .replace(/廞/g,'𫷷')
        .replace(/廟/g,'庙')
        .replace(/廠/g,'厂')
        .replace(/廡/g,'庑')
        .replace(/廢/g,'废')
        .replace(/廣/g,'广')
        .replace(/廩/g,'廪')
        .replace(/廬/g,'庐')
        .replace(/廳/g,'厅')
        .replace(/廵/g,'巡')
        .replace(/廹/g,'迫')
        .replace(/廻/g,'回')
        .replace(/弒/g,'弑')
        .replace(/弔/g,'吊')
        .replace(/弳/g,'弪')
        .replace(/張/g,'张')
        .replace(/強/g,'强')
        .replace(/彄/g,'𫸩')
        .replace(/彆/g,'别')
        .replace(/彈/g,'弹')
        .replace(/彌/g,'弥')
        .replace(/彎/g,'弯')
        .replace(/彙/g,'汇')
        .replace(/彞/g,'彝')
        .replace(/彠/g,'彟')
        .replace(/彥/g,'彦')
        .replace(/彫/g,'雕')
        .replace(/彲/g,'彨')
        .replace(/徃/g,'往')
        .replace(/後/g,'后')
        .replace(/徑/g,'径')
        .replace(/從/g,'从')
        .replace(/徠/g,'徕')
        .replace(/徧/g,'遍')
        .replace(/復/g,'复')
        .replace(/徵/g,'征')
        .replace(/徹/g,'彻')
        .replace(/怱/g,'匆')
        .replace(/怳/g,'恍')
        .replace(/恆/g,'恒')
        .replace(/恠/g,'怪')
        .replace(/恡/g,'吝')
        .replace(/恥/g,'耻')
        .replace(/悅/g,'悦')
        .replace(/悞/g,'悮')
        .replace(/悤/g,'匆')
        .replace(/悵/g,'怅')
        .replace(/悶/g,'闷')
        .replace(/悽/g,'凄')
        .replace(/惏/g,'婪')
        .replace(/惡/g,'恶')
        .replace(/惥/g,'恿')
        .replace(/惱/g,'恼')
        .replace(/惲/g,'恽')
        .replace(/惷/g,'蠢')
        .replace(/惻/g,'恻')
        .replace(/愛/g,'爱')
        .replace(/愜/g,'惬')
        .replace(/愨/g,'悫')
        .replace(/愴/g,'怆')
        .replace(/愷/g,'恺')
        .replace(/愽/g,'博')
        .replace(/愾/g,'忾')
        .replace(/慄/g,'栗')
        .replace(/態/g,'态')
        .replace(/慍/g,'愠')
        .replace(/慘/g,'惨')
        .replace(/慙/g,'惭')
        .replace(/慚/g,'惭')
        .replace(/慟/g,'恸')
        .replace(/慣/g,'惯')
        .replace(/慤/g,'悫')
        .replace(/慪/g,'怄')
        .replace(/慫/g,'怂')
        .replace(/慮/g,'虑')
        .replace(/慳/g,'悭')
        .replace(/慴/g,'慑')
        .replace(/慶/g,'庆')
        .replace(/慼/g,'戚')
        .replace(/慽/g,'戚')
        .replace(/慾/g,'欲')
        .replace(/憂/g,'忧')
        .replace(/憇/g,'憩')
        .replace(/憊/g,'惫')
        .replace(/憐/g,'怜')
        .replace(/憑/g,'凭')
        .replace(/憒/g,'愦')
        .replace(/憚/g,'惮')
        .replace(/憤/g,'愤')
        .replace(/憫/g,'悯')
        .replace(/憮/g,'怃')
        .replace(/憲/g,'宪')
        .replace(/憶/g,'忆')
        .replace(/懀/g,'𢙓')
        .replace(/懇/g,'恳')
        .replace(/應/g,'应')
        .replace(/懌/g,'怿')
        .replace(/懍/g,'懔')
        .replace(/懟/g,'怼')
        .replace(/懣/g,'懑')
        .replace(/懨/g,'恹')
        .replace(/懲/g,'惩')
        .replace(/懶/g,'懒')
        .replace(/懷/g,'怀')
        .replace(/懸/g,'悬')
        .replace(/懺/g,'忏')
        .replace(/懼/g,'惧')
        .replace(/懾/g,'慑')
        .replace(/戀/g,'恋')
        .replace(/戇/g,'戆')
        .replace(/戔/g,'戋')
        .replace(/戞/g,'戛')
        .replace(/戧/g,'戗')
        .replace(/戩/g,'戬')
        .replace(/戯/g,'戏')
        .replace(/戰/g,'战')
        .replace(/戱/g,'戯')
        .replace(/戲/g,'戏')
        .replace(/戶/g,'户')
        .replace(/戹/g,'厄')
        .replace(/扞/g,'捍')
        .replace(/抝/g,'拗')
        .replace(/拋/g,'抛')
        .replace(/拚/g,'拼')
        .replace(/挩/g,'捝')
        .replace(/挱/g,'挲')
        .replace(/挵/g,'弄')
        .replace(/挾/g,'挟')
        .replace(/捄/g,'救')
        .replace(/捨/g,'舍')
        .replace(/捫/g,'扪')
        .replace(/捲/g,'卷')
        .replace(/掃/g,'扫')
        .replace(/掄/g,'抡')
        .replace(/掆/g,'㧏')
        .replace(/掗/g,'挜')
        .replace(/掙/g,'挣')
        .replace(/掛/g,'挂')
        .replace(/採/g,'采')
        .replace(/掽/g,'碰')
        .replace(/揀/g,'拣')
        .replace(/揑/g,'捏')
        .replace(/揚/g,'扬')
        .replace(/換/g,'换')
        .replace(/揫/g,'揪')
        .replace(/揮/g,'挥')
        .replace(/揷/g,'插')
        .replace(/揹/g,'背')
        .replace(/搆/g,'构')
        .replace(/搇/g,'揿')
        .replace(/搉/g,'榷')
        .replace(/損/g,'损')
        .replace(/搖/g,'摇')
        .replace(/搗/g,'捣')
        .replace(/搤/g,'扼')
        .replace(/搥/g,'捶')
        .replace(/搨/g,'拓')
        .replace(/搯/g,'掏')
        .replace(/搵/g,'揾')
        .replace(/搶/g,'抢')
        .replace(/搾/g,'榨')
        .replace(/摃/g,'扛')
        .replace(/摋/g,'𢫬')
        .replace(/摑/g,'掴')
        .replace(/摜/g,'掼')
        .replace(/摟/g,'搂')
        .replace(/摯/g,'挚')
        .replace(/摳/g,'抠')
        .replace(/摶/g,'抟')
        .replace(/摺/g,'折')
        .replace(/摻/g,'掺')
        .replace(/撈/g,'捞')
        .replace(/撏/g,'挦')
        .replace(/撐/g,'撑')
        .replace(/撓/g,'挠')
        .replace(/撝/g,'㧑')
        .replace(/撟/g,'挢')
        .replace(/撡/g,'操')
        .replace(/撣/g,'掸')
        .replace(/撥/g,'拨')
        .replace(/撦/g,'扯')
        .replace(/撫/g,'抚')
        .replace(/撲/g,'扑')
        .replace(/撳/g,'揿')
        .replace(/撻/g,'挞')
        .replace(/撾/g,'挝')
        .replace(/撿/g,'捡')
        .replace(/擁/g,'拥')
        .replace(/擄/g,'掳')
        .replace(/擇/g,'择')
        .replace(/擊/g,'击')
        .replace(/擋/g,'挡')
        .replace(/擓/g,'㧟')
        .replace(/擔/g,'担')
        .replace(/擕/g,'携')
        .replace(/據/g,'据')
        .replace(/擠/g,'挤')
        .replace(/擣/g,'𢭏')
        .replace(/擧/g,'举')
        .replace(/擬/g,'拟')
        .replace(/擯/g,'摈')
        .replace(/擰/g,'拧')
        .replace(/擱/g,'搁')
        .replace(/擲/g,'掷')
        .replace(/擴/g,'扩')
        .replace(/擷/g,'撷')
        .replace(/擺/g,'摆')
        .replace(/擻/g,'擞')
        .replace(/擼/g,'撸')
        .replace(/擽/g,'㧰')
        .replace(/擾/g,'扰')
        .replace(/攄/g,'摅')
        .replace(/攆/g,'撵')
        .replace(/攏/g,'拢')
        .replace(/攔/g,'拦')
        .replace(/攖/g,'撄')
        .replace(/攙/g,'搀')
        .replace(/攛/g,'撺')
        .replace(/攜/g,'携')
        .replace(/攝/g,'摄')
        .replace(/攢/g,'攒')
        .replace(/攣/g,'挛')
        .replace(/攤/g,'摊')
        .replace(/攩/g,'挡')
        .replace(/攪/g,'搅')
        .replace(/攬/g,'揽')
        .replace(/攷/g,'考')
        .replace(/敂/g,'叩')
        .replace(/敍/g,'叙')
        .replace(/敗/g,'败')
        .replace(/敘/g,'叙')
        .replace(/敵/g,'敌')
        .replace(/數/g,'数')
        .replace(/敺/g,'驱')
        .replace(/斂/g,'敛')
        .replace(/斃/g,'毙')
        .replace(/斅/g,'𢽾')
        .replace(/斆/g,'敩')
        .replace(/斕/g,'斓')
        .replace(/斬/g,'斩')
        .replace(/斷/g,'断')
        .replace(/於/g,'于')
        .replace(/旂/g,'旗')
        .replace(/旣/g,'既')
        .replace(/旤/g,'祸')
        .replace(/旹/g,'时')
        .replace(/旾/g,'春')
        .replace(/昬/g,'昏')
        .replace(/時/g,'时')
        .replace(/晉/g,'晋')
        .replace(/晛/g,'𬀪')
        .replace(/晝/g,'昼')
        .replace(/暈/g,'晕')
        .replace(/暉/g,'晖')
        .replace(/暐/g,'𬀩')
        .replace(/暘/g,'旸')
        .replace(/暢/g,'畅')
        .replace(/暫/g,'暂')
        .replace(/暱/g,'昵')
        .replace(/曄/g,'晔')
        .replace(/曆/g,'历')
        .replace(/曇/g,'昙')
        .replace(/曉/g,'晓')
        .replace(/曖/g,'暧')
        .replace(/曠/g,'旷')
        .replace(/曡/g,'叠')
        .replace(/曥/g,'𣆐')
        .replace(/曨/g,'昽')
        .replace(/曬/g,'晒')
        .replace(/書/g,'书')
        .replace(/會/g,'会')
        .replace(/朞/g,'期')
        .replace(/朢/g,'望')
        .replace(/朥/g,'𦛨')
        .replace(/朧/g,'胧')
        .replace(/朮/g,'术')
        .replace(/朶/g,'朵')
        .replace(/東/g,'东')
        .replace(/杴/g,'锨')
        .replace(/枱/g,'台')
        .replace(/柵/g,'栅')
        .replace(/柺/g,'拐')
        .replace(/査/g,'查')
        .replace(/栁/g,'柳')
        .replace(/栞/g,'刊')
        .replace(/栢/g,'柏')
        .replace(/栰/g,'筏')
        .replace(/桒/g,'桑')
        .replace(/桮/g,'杯')
        .replace(/桺/g,'柳')
        .replace(/桿/g,'杆')
        .replace(/梔/g,'栀')
        .replace(/梘/g,'枧')
        .replace(/梜/g,'𬂩')
        .replace(/條/g,'条')
        .replace(/梟/g,'枭')
        .replace(/梲/g,'棁')
        .replace(/棄/g,'弃')
        .replace(/棊/g,'棋')
        .replace(/棖/g,'枨')
        .replace(/棗/g,'枣')
        .replace(/棟/g,'栋')
        .replace(/棡/g,'㭎')
        .replace(/棧/g,'栈')
        .replace(/棲/g,'栖')
        .replace(/棶/g,'梾')
        .replace(/椏/g,'桠')
        .replace(/椗/g,'碇')
        .replace(/椲/g,'㭏')
        .replace(/椶/g,'棕')
        .replace(/椷/g,'缄')
        .replace(/椾/g,'笺')
        .replace(/楊/g,'杨')
        .replace(/楓/g,'枫')
        .replace(/楥/g,'楦')
        .replace(/楨/g,'桢')
        .replace(/業/g,'业')
        .replace(/極/g,'极')
        .replace(/榦/g,'干')
        .replace(/榪/g,'杩')
        .replace(/榮/g,'荣')
        .replace(/榲/g,'榅')
        .replace(/榿/g,'桤')
        .replace(/構/g,'构')
        .replace(/槍/g,'枪')
        .replace(/槓/g,'杠')
        .replace(/槕/g,'桌')
        .replace(/槤/g,'梿')
        .replace(/槧/g,'椠')
        .replace(/槨/g,'椁')
        .replace(/槮/g,'椮')
        .replace(/槳/g,'桨')
        .replace(/槶/g,'椢')
        .replace(/槼/g,'椝')
        .replace(/樁/g,'桩')
        .replace(/樂/g,'乐')
        .replace(/樅/g,'枞')
        .replace(/樑/g,'梁')
        .replace(/樓/g,'楼')
        .replace(/標/g,'标')
        .replace(/樞/g,'枢')
        .replace(/樢/g,'㭤')
        .replace(/樣/g,'样')
        .replace(/樫/g,'㭴')
        .replace(/樳/g,'桪')
        .replace(/樸/g,'朴')
        .replace(/樹/g,'树')
        .replace(/樺/g,'桦')
        .replace(/樿/g,'椫')
        .replace(/橈/g,'桡')
        .replace(/橋/g,'桥')
        .replace(/橜/g,'橛')
        .replace(/機/g,'机')
        .replace(/橢/g,'椭')
        .replace(/橫/g,'横')
        .replace(/檁/g,'檩')
        .replace(/檉/g,'柽')
        .replace(/檔/g,'档')
        .replace(/檜/g,'桧')
        .replace(/檟/g,'槚')
        .replace(/檢/g,'检')
        .replace(/檣/g,'樯')
        .replace(/檭/g,'𣘴')
        .replace(/檮/g,'梼')
        .replace(/檯/g,'台')
        .replace(/檳/g,'槟')
        .replace(/檸/g,'柠')
        .replace(/檻/g,'槛')
        .replace(/櫃/g,'柜')
        .replace(/櫈/g,'凳')
        .replace(/櫍/g,'𬃊')
        .replace(/櫓/g,'橹')
        .replace(/櫚/g,'榈')
        .replace(/櫛/g,'栉')
        .replace(/櫝/g,'椟')
        .replace(/櫞/g,'橼')
        .replace(/櫟/g,'栎')
        .replace(/櫥/g,'橱')
        .replace(/櫧/g,'槠')
        .replace(/櫨/g,'栌')
        .replace(/櫪/g,'枥')
        .replace(/櫫/g,'橥')
        .replace(/櫬/g,'榇')
        .replace(/櫱/g,'蘖')
        .replace(/櫳/g,'栊')
        .replace(/櫸/g,'榉')
        .replace(/櫻/g,'樱')
        .replace(/欄/g,'栏')
        .replace(/欅/g,'榉')
        .replace(/權/g,'权')
        .replace(/欍/g,'𣐤')
        .replace(/欏/g,'椤')
        .replace(/欒/g,'栾')
        .replace(/欓/g,'𣗋')
        .replace(/欖/g,'榄')
        .replace(/欝/g,'郁')
        .replace(/欞/g,'棂')
        .replace(/欵/g,'款')
        .replace(/欽/g,'钦')
        .replace(/歎/g,'叹')
        .replace(/歐/g,'欧')
        .replace(/歛/g,'敛')
        .replace(/歟/g,'欤')
        .replace(/歡/g,'欢')
        .replace(/歲/g,'岁')
        .replace(/歴/g,'历')
        .replace(/歷/g,'历')
        .replace(/歸/g,'归')
        .replace(/歿/g,'殁')
        .replace(/殀/g,'夭')
        .replace(/殘/g,'残')
        .replace(/殞/g,'殒')
        .replace(/殤/g,'殇')
        .replace(/殨/g,'㱮')
        .replace(/殫/g,'殚')
        .replace(/殭/g,'僵')
        .replace(/殮/g,'殓')
        .replace(/殯/g,'殡')
        .replace(/殰/g,'㱩')
        .replace(/殲/g,'歼')
        .replace(/殺/g,'杀')
        .replace(/殻/g,'壳')
        .replace(/殼/g,'壳')
        .replace(/毀/g,'毁')
        .replace(/毆/g,'殴')
        .replace(/毧/g,'绒')
        .replace(/毬/g,'球')
        .replace(/毿/g,'毵')
        .replace(/氂/g,'牦')
        .replace(/氈/g,'毡')
        .replace(/氊/g,'毡')
        .replace(/氌/g,'氇')
        .replace(/氣/g,'气')
        .replace(/氫/g,'氢')
        .replace(/氬/g,'氩')
        .replace(/氳/g,'氲')
        .replace(/氷/g,'冰')
        .replace(/汙/g,'污')
        .replace(/汚/g,'污')
        .replace(/決/g,'决')
        .replace(/沒/g,'没')
        .replace(/沖/g,'冲')
        .replace(/況/g,'况')
        .replace(/泝/g,'溯')
        .replace(/洩/g,'泄')
        .replace(/洶/g,'汹')
        .replace(/浹/g,'浃')
        .replace(/浿/g,'𬇙')
        .replace(/涇/g,'泾')
        .replace(/涖/g,'莅')
        .replace(/涼/g,'凉')
        .replace(/淒/g,'凄')
        .replace(/淚/g,'泪')
        .replace(/淛/g,'浙')
        .replace(/淥/g,'渌')
        .replace(/淨/g,'净')
        .replace(/淩/g,'凌')
        .replace(/淪/g,'沦')
        .replace(/淵/g,'渊')
        .replace(/淶/g,'涞')
        .replace(/淺/g,'浅')
        .replace(/渙/g,'涣')
        .replace(/減/g,'减')
        .replace(/渢/g,'沨')
        .replace(/渦/g,'涡')
        .replace(/測/g,'测')
        .replace(/渾/g,'浑')
        .replace(/湊/g,'凑')
        .replace(/湋/g,'𣲗')
        .replace(/湞/g,'浈')
        .replace(/湧/g,'涌')
        .replace(/湯/g,'汤')
        .replace(/湼/g,'涅')
        .replace(/溈/g,'沩')
        .replace(/準/g,'准')
        .replace(/溝/g,'沟')
        .replace(/溫/g,'温')
        .replace(/溮/g,'浉')
        .replace(/溳/g,'涢')
        .replace(/溼/g,'湿')
        .replace(/滄/g,'沧')
        .replace(/滅/g,'灭')
        .replace(/滌/g,'涤')
        .replace(/滎/g,'荥')
        .replace(/滙/g,'汇')
        .replace(/滛/g,'淫')
        .replace(/滬/g,'沪')
        .replace(/滯/g,'滞')
        .replace(/滲/g,'渗')
        .replace(/滷/g,'卤')
        .replace(/滸/g,'浒')
        .replace(/滻/g,'浐')
        .replace(/滾/g,'滚')
        .replace(/滿/g,'满')
        .replace(/漁/g,'渔')
        .replace(/漊/g,'溇')
        .replace(/漍/g,'𬇹')
        .replace(/漚/g,'沤')
        .replace(/漢/g,'汉')
        .replace(/漣/g,'涟')
        .replace(/漬/g,'渍')
        .replace(/漲/g,'涨')
        .replace(/漵/g,'溆')
        .replace(/漸/g,'渐')
        .replace(/漿/g,'浆')
        .replace(/潁/g,'颍')
        .replace(/潄/g,'漱')
        .replace(/潑/g,'泼')
        .replace(/潔/g,'洁')
        .replace(/潕/g,'𣲘')
        .replace(/潙/g,'沩')
        .replace(/潛/g,'潜')
        .replace(/潤/g,'润')
        .replace(/潯/g,'浔')
        .replace(/潰/g,'溃')
        .replace(/潷/g,'滗')
        .replace(/潿/g,'涠')
        .replace(/澀/g,'涩')
        .replace(/澁/g,'涩')
        .replace(/澅/g,'𣶩')
        .replace(/澆/g,'浇')
        .replace(/澇/g,'涝')
        .replace(/澐/g,'沄')
        .replace(/澗/g,'涧')
        .replace(/澠/g,'渑')
        .replace(/澤/g,'泽')
        .replace(/澦/g,'滪')
        .replace(/澩/g,'泶')
        .replace(/澫/g,'𬇕')
        .replace(/澮/g,'浍')
        .replace(/澱/g,'淀')
        .replace(/澾/g,'㳠')
        .replace(/濁/g,'浊')
        .replace(/濃/g,'浓')
        .replace(/濄/g,'㳡')
        .replace(/濆/g,'𣸣')
        .replace(/濇/g,'涩')
        .replace(/濕/g,'湿')
        .replace(/濘/g,'泞')
        .replace(/濜/g,'浕')
        .replace(/濟/g,'济')
        .replace(/濤/g,'涛')
        .replace(/濧/g,'㳔')
        .replace(/濫/g,'滥')
        .replace(/濰/g,'潍')
        .replace(/濱/g,'滨')
        .replace(/濶/g,'阔')
        .replace(/濺/g,'溅')
        .replace(/濼/g,'泺')
        .replace(/濾/g,'滤')
        .replace(/瀂/g,'澛')
        .replace(/瀃/g,'𣽷')
        .replace(/瀅/g,'滢')
        .replace(/瀆/g,'渎')
        .replace(/瀇/g,'㲿')
        .replace(/瀉/g,'泻')
        .replace(/瀋/g,'沈')
        .replace(/瀏/g,'浏')
        .replace(/瀕/g,'濒')
        .replace(/瀘/g,'泸')
        .replace(/瀝/g,'沥')
        .replace(/瀟/g,'潇')
        .replace(/瀠/g,'潆')
        .replace(/瀦/g,'潴')
        .replace(/瀧/g,'泷')
        .replace(/瀨/g,'濑')
        .replace(/瀰/g,'弥')
        .replace(/瀲/g,'潋')
        .replace(/瀾/g,'澜')
        .replace(/灃/g,'沣')
        .replace(/灄/g,'滠')
        .replace(/灋/g,'法')
        .replace(/灑/g,'洒')
        .replace(/灕/g,'漓')
        .replace(/灘/g,'滩')
        .replace(/灙/g,'𣺼')
        .replace(/灝/g,'灏')
        .replace(/灠/g,'漤')
        .replace(/灣/g,'湾')
        .replace(/灤/g,'滦')
        .replace(/灧/g,'滟')
        .replace(/灩/g,'滟')
        .replace(/災/g,'灾')
        .replace(/為/g,'为')
        .replace(/烏/g,'乌')
        .replace(/烖/g,'灾')
        .replace(/烴/g,'烃')
        .replace(/無/g,'无')
        .replace(/煉/g,'炼')
        .replace(/煑/g,'煮')
        .replace(/煒/g,'炜')
        .replace(/煗/g,'暖')
        .replace(/煙/g,'烟')
        .replace(/煢/g,'茕')
        .replace(/煥/g,'焕')
        .replace(/煩/g,'烦')
        .replace(/煬/g,'炀')
        .replace(/煱/g,'㶽')
        .replace(/熅/g,'煴')
        .replace(/熈/g,'熙')
        .replace(/熉/g,'𤈶')
        .replace(/熌/g,'𤇄')
        .replace(/熒/g,'荧')
        .replace(/熓/g,'𤆡')
        .replace(/熗/g,'炝')
        .replace(/熡/g,'𤋏')
        .replace(/熰/g,'𬉼')
        .replace(/熱/g,'热')
        .replace(/熲/g,'颎')
        .replace(/熾/g,'炽')
        .replace(/燀/g,'𬊤')
        .replace(/燁/g,'烨')
        .replace(/燄/g,'焰')
        .replace(/燈/g,'灯')
        .replace(/燉/g,'炖')
        .replace(/燒/g,'烧')
        .replace(/燖/g,'𬊈')
        .replace(/燙/g,'烫')
        .replace(/燜/g,'焖')
        .replace(/營/g,'营')
        .replace(/燦/g,'灿')
        .replace(/燬/g,'毁')
        .replace(/燭/g,'烛')
        .replace(/燴/g,'烩')
        .replace(/燶/g,'㶶')
        .replace(/燻/g,'熏')
        .replace(/燼/g,'烬')
        .replace(/燾/g,'焘')
        .replace(/爄/g,'𤇃')
        .replace(/爍/g,'烁')
        .replace(/爐/g,'炉')
        .replace(/爗/g,'烨')
        .replace(/爛/g,'烂')
        .replace(/爭/g,'争')
        .replace(/爲/g,'为')
        .replace(/爺/g,'爷')
        .replace(/爾/g,'尔')
        .replace(/牀/g,'床')
        .replace(/牆/g,'墙')
        .replace(/牋/g,'笺')
        .replace(/牎/g,'窗')
        .replace(/牐/g,'闸')
        .replace(/牓/g,'榜')
        .replace(/牕/g,'窗')
        .replace(/牘/g,'牍')
        .replace(/牠/g,'它')
        .replace(/牴/g,'抵')
        .replace(/牽/g,'牵')
        .replace(/犖/g,'荦')
        .replace(/犢/g,'犊')
        .replace(/犧/g,'牺')
        .replace(/狀/g,'状')
        .replace(/狥/g,'徇')
        .replace(/狹/g,'狭')
        .replace(/狽/g,'狈')
        .replace(/猂/g,'悍')
        .replace(/猙/g,'狰')
        .replace(/猨/g,'猿')
        .replace(/猶/g,'犹')
        .replace(/猻/g,'狲')
        .replace(/獁/g,'犸')
        .replace(/獃/g,'呆')
        .replace(/獄/g,'狱')
        .replace(/獅/g,'狮')
        .replace(/獎/g,'奖')
        .replace(/獘/g,'毙')
        .replace(/獧/g,'狷')
        .replace(/獨/g,'独')
        .replace(/獪/g,'狯')
        .replace(/獫/g,'猃')
        .replace(/獮/g,'狝')
        .replace(/獰/g,'狞')
        .replace(/獱/g,'㺍')
        .replace(/獲/g,'获')
        .replace(/獵/g,'猎')
        .replace(/獷/g,'犷')
        .replace(/獸/g,'兽')
        .replace(/獺/g,'獭')
        .replace(/獻/g,'献')
        .replace(/獼/g,'猕')
        .replace(/玀/g,'猡')
        .replace(/玁/g,'𤞤')
        .replace(/玅/g,'妙')
        .replace(/現/g,'现')
        .replace(/琖/g,'盏')
        .replace(/琱/g,'雕')
        .replace(/琺/g,'珐')
        .replace(/琿/g,'珲')
        .replace(/瑇/g,'玳')
        .replace(/瑋/g,'玮')
        .replace(/瑒/g,'玚')
        .replace(/瑣/g,'琐')
        .replace(/瑤/g,'瑶')
        .replace(/瑩/g,'莹')
        .replace(/瑪/g,'玛')
        .replace(/瑯/g,'琅')
        .replace(/瑲/g,'玱')
        .replace(/瑽/g,'𪻐')
        .replace(/璉/g,'琏')
        .replace(/璊/g,'𫞩')
        .replace(/璕/g,'𬍤')
        .replace(/璗/g,'𬍡')
        .replace(/璡/g,'琎')
        .replace(/璢/g,'瑠')
        .replace(/璣/g,'玑')
        .replace(/璦/g,'瑷')
        .replace(/璫/g,'珰')
        .replace(/璯/g,'㻅')
        .replace(/環/g,'环')
        .replace(/璵/g,'玙')
        .replace(/璸/g,'瑸')
        .replace(/璽/g,'玺')
        .replace(/瓅/g,'𬍛')
        .replace(/瓊/g,'琼')
        .replace(/瓏/g,'珑')
        .replace(/瓔/g,'璎')
        .replace(/瓕/g,'𤦀')
        .replace(/瓚/g,'瓒')
        .replace(/瓛/g,'𤩽')
        .replace(/甌/g,'瓯')
        .replace(/甎/g,'砖')
        .replace(/甕/g,'瓮')
        .replace(/甖/g,'罂')
        .replace(/甞/g,'尝')
        .replace(/產/g,'产')
        .replace(/産/g,'产')
        .replace(/畂/g,'亩')
        .replace(/畆/g,'亩')
        .replace(/畝/g,'亩')
        .replace(/畢/g,'毕')
        .replace(/畧/g,'略')
        .replace(/畫/g,'画')
        .replace(/畮/g,'亩')
        .replace(/異/g,'异')
        .replace(/畱/g,'留')
        .replace(/畵/g,'画')
        .replace(/當/g,'当')
        .replace(/疇/g,'畴')
        .replace(/疊/g,'叠')
        .replace(/疎/g,'疏')
        .replace(/疘/g,'肛')
        .replace(/疿/g,'痱')
        .replace(/痐/g,'蛔')
        .replace(/痙/g,'痉')
        .replace(/痠/g,'酸')
        .replace(/痲/g,'痳')
        .replace(/痺/g,'痹')
        .replace(/瘂/g,'痖')
        .replace(/瘉/g,'愈')
        .replace(/瘋/g,'疯')
        .replace(/瘍/g,'疡')
        .replace(/瘓/g,'痪')
        .replace(/瘖/g,'喑')
        .replace(/瘞/g,'瘗')
        .replace(/瘡/g,'疮')
        .replace(/瘧/g,'疟')
        .replace(/瘮/g,'瘆')
        .replace(/瘲/g,'疭')
        .replace(/瘺/g,'瘘')
        .replace(/瘻/g,'瘘')
        .replace(/療/g,'疗')
        .replace(/癄/g,'憔')
        .replace(/癅/g,'瘤')
        .replace(/癆/g,'痨')
        .replace(/癇/g,'痫')
        .replace(/癈/g,'废')
        .replace(/癉/g,'瘅')
        .replace(/癒/g,'愈')
        .replace(/癘/g,'疠')
        .replace(/癟/g,'瘪')
        .replace(/癡/g,'痴')
        .replace(/癢/g,'痒')
        .replace(/癤/g,'疖')
        .replace(/癥/g,'症')
        .replace(/癧/g,'疬')
        .replace(/癩/g,'癞')
        .replace(/癬/g,'癣')
        .replace(/癭/g,'瘿')
        .replace(/癮/g,'瘾')
        .replace(/癰/g,'痈')
        .replace(/癱/g,'瘫')
        .replace(/癲/g,'癫')
        .replace(/發/g,'发')
        .replace(/皁/g,'皂')
        .replace(/皐/g,'皋')
        .replace(/皚/g,'皑')
        .replace(/皜/g,'皓')
        .replace(/皟/g,'𤾀')
        .replace(/皰/g,'疱')
        .replace(/皷/g,'鼓')
        .replace(/皸/g,'皲')
        .replace(/皺/g,'皱')
        .replace(/盃/g,'杯')
        .replace(/盇/g,'盍')
        .replace(/盌/g,'碗')
        .replace(/盜/g,'盗')
        .replace(/盞/g,'盏')
        .replace(/盡/g,'尽')
        .replace(/監/g,'监')
        .replace(/盤/g,'盘')
        .replace(/盧/g,'卢')
        .replace(/盪/g,'荡')
        .replace(/眎/g,'视')
        .replace(/眞/g,'真')
        .replace(/眡/g,'视')
        .replace(/眥/g,'眦')
        .replace(/眾/g,'众')
        .replace(/睍/g,'𪾢')
        .replace(/睏/g,'困')
        .replace(/睜/g,'睁')
        .replace(/睞/g,'睐')
        .replace(/睠/g,'眷')
        .replace(/睪/g,'睾')
        .replace(/瞇/g,'眯')
        .replace(/瞖/g,'翳')
        .replace(/瞘/g,'眍')
        .replace(/瞜/g,'䁖')
        .replace(/瞞/g,'瞒')
        .replace(/瞤/g,'𥆧')
        .replace(/瞭/g,'了')
        .replace(/瞶/g,'瞆')
        .replace(/瞼/g,'睑')
        .replace(/矁/g,'瞅')
        .replace(/矇/g,'蒙')
        .replace(/矓/g,'眬')
        .replace(/矙/g,'瞰')
        .replace(/矚/g,'瞩')
        .replace(/矯/g,'矫')
        .replace(/砲/g,'炮')
        .replace(/硃/g,'朱')
        .replace(/硜/g,'硁')
        .replace(/硤/g,'硖')
        .replace(/硨/g,'砗')
        .replace(/硯/g,'砚')
        .replace(/碙/g,'𥐻')
        .replace(/碩/g,'硕')
        .replace(/碪/g,'砧')
        .replace(/碭/g,'砀')
        .replace(/碸/g,'砜')
        .replace(/確/g,'确')
        .replace(/碼/g,'码')
        .replace(/碽/g,'䂵')
        .replace(/磑/g,'硙')
        .replace(/磚/g,'砖')
        .replace(/磟/g,'碌')
        .replace(/磠/g,'硵')
        .replace(/磣/g,'碜')
        .replace(/磧/g,'碛')
        .replace(/磯/g,'矶')
        .replace(/磽/g,'硗')
        .replace(/磾/g,'䃅')
        .replace(/礄/g,'硚')
        .replace(/礆/g,'碱')
        .replace(/礎/g,'础')
        .replace(/礐/g,'𬒈')
        .replace(/礒/g,'𥐟')
        .replace(/礙/g,'碍')
        .replace(/礦/g,'矿')
        .replace(/礪/g,'砺')
        .replace(/礫/g,'砾')
        .replace(/礬/g,'矾')
        .replace(/礮/g,'炮')
        .replace(/礱/g,'砻')
        .replace(/祕/g,'秘')
        .replace(/祘/g,'算')
        .replace(/祿/g,'禄')
        .replace(/禍/g,'祸')
        .replace(/禎/g,'祯')
        .replace(/禕/g,'祎')
        .replace(/禡/g,'祃')
        .replace(/禦/g,'御')
        .replace(/禪/g,'禅')
        .replace(/禮/g,'礼')
        .replace(/禰/g,'祢')
        .replace(/禱/g,'祷')
        .replace(/禿/g,'秃')
        .replace(/秈/g,'籼')
        .replace(/秊/g,'年')
        .replace(/秌/g,'秋')
        .replace(/秖/g,'只')
        .replace(/稅/g,'税')
        .replace(/稈/g,'秆')
        .replace(/稉/g,'粳')
        .replace(/稏/g,'䅉')
        .replace(/稜/g,'棱')
        .replace(/稟/g,'禀')
        .replace(/稬/g,'糯')
        .replace(/稭/g,'秸')
        .replace(/種/g,'种')
        .replace(/稱/g,'称')
        .replace(/稾/g,'稿')
        .replace(/穀/g,'谷')
        .replace(/穌/g,'稣')
        .replace(/積/g,'积')
        .replace(/穎/g,'颖')
        .replace(/穠/g,'秾')
        .replace(/穡/g,'穑')
        .replace(/穢/g,'秽')
        .replace(/穤/g,'糯')
        .replace(/穨/g,'颓')
        .replace(/穩/g,'稳')
        .replace(/穫/g,'获')
        .replace(/穭/g,'稆')
        .replace(/穽/g,'阱')
        .replace(/窓/g,'窗')
        .replace(/窩/g,'窝')
        .replace(/窪/g,'洼')
        .replace(/窮/g,'穷')
        .replace(/窯/g,'窑')
        .replace(/窰/g,'窑')
        .replace(/窵/g,'窎')
        .replace(/窶/g,'窭')
        .replace(/窺/g,'窥')
        .replace(/窻/g,'窗')
        .replace(/竄/g,'窜')
        .replace(/竅/g,'窍')
        .replace(/竇/g,'窦')
        .replace(/竈/g,'灶')
        .replace(/竊/g,'窃')
        .replace(/竚/g,'伫')
        .replace(/竝/g,'并')
        .replace(/竢/g,'俟')
        .replace(/竪/g,'竖')
        .replace(/競/g,'竞')
        .replace(/筆/g,'笔')
        .replace(/筍/g,'笋')
        .replace(/筞/g,'策')
        .replace(/筧/g,'笕')
        .replace(/筩/g,'筒')
        .replace(/筯/g,'箸')
        .replace(/筴/g,'䇲')
        .replace(/箇/g,'个')
        .replace(/箋/g,'笺')
        .replace(/箏/g,'筝')
        .replace(/箒/g,'帚')
        .replace(/箠/g,'棰')
        .replace(/節/g,'节')
        .replace(/範/g,'范')
        .replace(/築/g,'筑')
        .replace(/篋/g,'箧')
        .replace(/篔/g,'筼')
        .replace(/篘/g,'𥬠')
        .replace(/篛/g,'箬')
        .replace(/篢/g,'𬕂')
        .replace(/篤/g,'笃')
        .replace(/篩/g,'筛')
        .replace(/篳/g,'筚')
        .replace(/簀/g,'箦')
        .replace(/簍/g,'篓')
        .replace(/簑/g,'蓑')
        .replace(/簒/g,'篡')
        .replace(/簞/g,'箪')
        .replace(/簡/g,'简')
        .replace(/簣/g,'篑')
        .replace(/簫/g,'箫')
        .replace(/簮/g,'簪')
        .replace(/簷/g,'檐')
        .replace(/簹/g,'筜')
        .replace(/簽/g,'签')
        .replace(/簾/g,'帘')
        .replace(/籃/g,'篮')
        .replace(/籋/g,'𥬞')
        .replace(/籌/g,'筹')
        .replace(/籐/g,'藤')
        .replace(/籔/g,'䉤')
        .replace(/籙/g,'箓')
        .replace(/籛/g,'篯')
        .replace(/籜/g,'箨')
        .replace(/籟/g,'籁')
        .replace(/籠/g,'笼')
        .replace(/籤/g,'签')
        .replace(/籩/g,'笾')
        .replace(/籪/g,'簖')
        .replace(/籬/g,'篱')
        .replace(/籮/g,'箩')
        .replace(/籲/g,'吁')
        .replace(/粃/g,'秕')
        .replace(/粧/g,'妆')
        .replace(/粵/g,'粤')
        .replace(/糉/g,'粽')
        .replace(/糝/g,'糁')
        .replace(/糞/g,'粪')
        .replace(/糧/g,'粮')
        .replace(/糰/g,'团')
        .replace(/糲/g,'粝')
        .replace(/糴/g,'籴')
        .replace(/糶/g,'粜')
        .replace(/糹/g,'纟')
        .replace(/糾/g,'纠')
        .replace(/紀/g,'纪')
        .replace(/紂/g,'纣')
        .replace(/紃/g,'𬘓')
        .replace(/約/g,'约')
        .replace(/紅/g,'红')
        .replace(/紆/g,'纡')
        .replace(/紇/g,'纥')
        .replace(/紈/g,'纨')
        .replace(/紉/g,'纫')
        .replace(/紋/g,'纹')
        .replace(/納/g,'纳')
        .replace(/紐/g,'纽')
        .replace(/紓/g,'纾')
        .replace(/純/g,'纯')
        .replace(/紕/g,'纰')
        .replace(/紖/g,'纼')
        .replace(/紗/g,'纱')
        .replace(/紘/g,'纮')
        .replace(/紙/g,'纸')
        .replace(/級/g,'级')
        .replace(/紛/g,'纷')
        .replace(/紜/g,'纭')
        .replace(/紝/g,'纴')
        .replace(/紞/g,'𬘘')
        .replace(/紡/g,'纺')
        .replace(/紥/g,'扎')
        .replace(/紬/g,'䌷')
        .replace(/紮/g,'扎')
        .replace(/細/g,'细')
        .replace(/紱/g,'绂')
        .replace(/紲/g,'绁')
        .replace(/紳/g,'绅')
        .replace(/紵/g,'纻')
        .replace(/紹/g,'绍')
        .replace(/紺/g,'绀')
        .replace(/紼/g,'绋')
        .replace(/紿/g,'绐')
        .replace(/絀/g,'绌')
        .replace(/終/g,'终')
        .replace(/絃/g,'弦')
        .replace(/組/g,'组')
        .replace(/絅/g,'䌹')
        .replace(/絆/g,'绊')
        .replace(/絎/g,'绗')
        .replace(/絏/g,'绁')
        .replace(/結/g,'结')
        .replace(/絕/g,'绝')
        .replace(/絛/g,'绦')
        .replace(/絝/g,'绔')
        .replace(/絞/g,'绞')
        .replace(/絡/g,'络')
        .replace(/絢/g,'绚')
        .replace(/給/g,'给')
        .replace(/絨/g,'绒')
        .replace(/絪/g,'𬘡')
        .replace(/絰/g,'绖')
        .replace(/統/g,'统')
        .replace(/絲/g,'丝')
        .replace(/絳/g,'绛')
        .replace(/絶/g,'绝')
        .replace(/絹/g,'绢')
        .replace(/絺/g,'𫄨')
        .replace(/綀/g,'𦈌')
        .replace(/綁/g,'绑')
        .replace(/綃/g,'绡')
        .replace(/綄/g,'𬘫')
        .replace(/綆/g,'绠')
        .replace(/綇/g,'𦈋')
        .replace(/綈/g,'绨')
        .replace(/綉/g,'绣')
        .replace(/綌/g,'绤')
        .replace(/綎/g,'𬘩')
        .replace(/綏/g,'绥')
        .replace(/綐/g,'䌼')
        .replace(/綑/g,'捆')
        .replace(/經/g,'经')
        .replace(/綖/g,'𫄧')
        .replace(/綜/g,'综')
        .replace(/綝/g,'𬘭')
        .replace(/綞/g,'缍')
        .replace(/綠/g,'绿')
        .replace(/綡/g,'𫟅')
        .replace(/綢/g,'绸')
        .replace(/綣/g,'绻')
        .replace(/綧/g,'𬘯')
        .replace(/綪/g,'𬘬')
        .replace(/綫/g,'线')
        .replace(/綬/g,'绶')
        .replace(/維/g,'维')
        .replace(/綯/g,'绹')
        .replace(/綰/g,'绾')
        .replace(/綱/g,'纲')
        .replace(/網/g,'网')
        .replace(/綴/g,'缀')
        .replace(/綵/g,'彩')
        .replace(/綸/g,'纶')
        .replace(/綹/g,'绺')
        .replace(/綺/g,'绮')
        .replace(/綻/g,'绽')
        .replace(/綽/g,'绰')
        .replace(/綾/g,'绫')
        .replace(/綿/g,'绵')
        .replace(/緄/g,'绲')
        .replace(/緇/g,'缁')
        .replace(/緊/g,'紧')
        .replace(/緋/g,'绯')
        .replace(/緍/g,'𦈏')
        .replace(/緐/g,'繁')
        .replace(/緑/g,'绿')
        .replace(/緒/g,'绪')
        .replace(/緓/g,'绬')
        .replace(/緔/g,'绱')
        .replace(/緗/g,'缃')
        .replace(/緘/g,'缄')
        .replace(/緙/g,'缂')
        .replace(/線/g,'线')
        .replace(/緜/g,'绵')
        .replace(/緝/g,'缉')
        .replace(/緞/g,'缎')
        .replace(/締/g,'缔')
        .replace(/緡/g,'缗')
        .replace(/緣/g,'缘')
        .replace(/緥/g,'褓')
        .replace(/緦/g,'缌')
        .replace(/編/g,'编')
        .replace(/緩/g,'缓')
        .replace(/緬/g,'缅')
        .replace(/緯/g,'纬')
        .replace(/緰/g,'𦈕')
        .replace(/緱/g,'缑')
        .replace(/緲/g,'缈')
        .replace(/練/g,'练')
        .replace(/緶/g,'缏')
        .replace(/緷/g,'𦈉')
        .replace(/緸/g,'𦈑')
        .replace(/緹/g,'缇')
        .replace(/緻/g,'致')
        .replace(/緼/g,'缊')
        .replace(/縈/g,'萦')
        .replace(/縉/g,'缙')
        .replace(/縊/g,'缢')
        .replace(/縋/g,'缒')
        .replace(/縎/g,'𦈔')
        .replace(/縐/g,'绉')
        .replace(/縑/g,'缣')
        .replace(/縕/g,'缊')
        .replace(/縗/g,'缞')
        .replace(/縛/g,'缚')
        .replace(/縝/g,'缜')
        .replace(/縞/g,'缟')
        .replace(/縟/g,'缛')
        .replace(/縣/g,'县')
        .replace(/縧/g,'绦')
        .replace(/縫/g,'缝')
        .replace(/縬/g,'𦈚')
        .replace(/縭/g,'缡')
        .replace(/縮/g,'缩')
        .replace(/縯/g,'𬙂')
        .replace(/縱/g,'纵')
        .replace(/縲/g,'缧')
        .replace(/縳/g,'䌸')
        .replace(/縴/g,'纤')
        .replace(/縵/g,'缦')
        .replace(/縶/g,'絷')
        .replace(/縷/g,'缕')
        .replace(/縹/g,'缥')
        .replace(/縺/g,'𦈐')
        .replace(/總/g,'总')
        .replace(/績/g,'绩')
        .replace(/繃/g,'绷')
        .replace(/繅/g,'缫')
        .replace(/繆/g,'缪')
        .replace(/繏/g,'𦈝')
        .replace(/繐/g,'穗')
        .replace(/繒/g,'缯')
        .replace(/繓/g,'𦈛')
        .replace(/織/g,'织')
        .replace(/繕/g,'缮')
        .replace(/繖/g,'伞')
        .replace(/繙/g,'翻')
        .replace(/繚/g,'缭')
        .replace(/繞/g,'绕')
        .replace(/繟/g,'𦈎')
        .replace(/繡/g,'绣')
        .replace(/繢/g,'缋')
        .replace(/繦/g,'襁')
        .replace(/繩/g,'绳')
        .replace(/繪/g,'绘')
        .replace(/繫/g,'系')
        .replace(/繭/g,'茧')
        .replace(/繮/g,'缰')
        .replace(/繯/g,'缳')
        .replace(/繰/g,'缲')
        .replace(/繳/g,'缴')
        .replace(/繶/g,'𫄷')
        .replace(/繸/g,'䍁')
        .replace(/繹/g,'绎')
        .replace(/繻/g,'𦈡')
        .replace(/繼/g,'继')
        .replace(/繽/g,'缤')
        .replace(/繾/g,'缱')
        .replace(/繿/g,'䍀')
        .replace(/纁/g,'𫄸')
        .replace(/纆/g,'𬙊')
        .replace(/纇/g,'颣')
        .replace(/纈/g,'缬')
        .replace(/纊/g,'纩')
        .replace(/續/g,'续')
        .replace(/纍/g,'累')
        .replace(/纏/g,'缠')
        .replace(/纓/g,'缨')
        .replace(/纔/g,'才')
        .replace(/纕/g,'𬙋')
        .replace(/纖/g,'纤')
        .replace(/纘/g,'缵')
        .replace(/纜/g,'缆')
        .replace(/缽/g,'钵')
        .replace(/罇/g,'樽')
        .replace(/罈/g,'坛')
        .replace(/罋/g,'瓮')
        .replace(/罌/g,'罂')
        .replace(/罎/g,'坛')
        .replace(/罰/g,'罚')
        .replace(/罵/g,'骂')
        .replace(/罷/g,'罢')
        .replace(/罸/g,'罚')
        .replace(/羅/g,'罗')
        .replace(/羆/g,'罴')
        .replace(/羈/g,'羁')
        .replace(/羋/g,'芈')
        .replace(/羗/g,'羌')
        .replace(/羢/g,'绒')
        .replace(/羣/g,'群')
        .replace(/羥/g,'羟')
        .replace(/羨/g,'羡')
        .replace(/義/g,'义')
        .replace(/羶/g,'膻')
        .replace(/翄/g,'翅')
        .replace(/習/g,'习')
        .replace(/翫/g,'玩')
        .replace(/翬/g,'翚')
        .replace(/翶/g,'翱')
        .replace(/翹/g,'翘')
        .replace(/翽/g,'翙')
        .replace(/耡/g,'锄')
        .replace(/耬/g,'耧')
        .replace(/耮/g,'耢')
        .replace(/聖/g,'圣')
        .replace(/聞/g,'闻')
        .replace(/聯/g,'联')
        .replace(/聰/g,'聪')
        .replace(/聲/g,'声')
        .replace(/聳/g,'耸')
        .replace(/聵/g,'聩')
        .replace(/聶/g,'聂')
        .replace(/職/g,'职')
        .replace(/聹/g,'聍')
        .replace(/聽/g,'听')
        .replace(/聾/g,'聋')
        .replace(/肅/g,'肃')
        .replace(/肎/g,'肯')
        .replace(/肐/g,'胳')
        .replace(/肧/g,'胚')
        .replace(/胷/g,'胸')
        .replace(/脃/g,'脆')
        .replace(/脅/g,'胁')
        .replace(/脇/g,'胁')
        .replace(/脈/g,'脉')
        .replace(/脗/g,'吻')
        .replace(/脛/g,'胫')
        .replace(/脣/g,'唇')
        .replace(/脥/g,'𣍰')
        .replace(/脫/g,'脱')
        .replace(/脹/g,'胀')
        .replace(/腁/g,'胼')
        .replace(/腎/g,'肾')
        .replace(/腖/g,'胨')
        .replace(/腡/g,'脶')
        .replace(/腦/g,'脑')
        .replace(/腪/g,'𣍯')
        .replace(/腫/g,'肿')
        .replace(/腳/g,'脚')
        .replace(/腸/g,'肠')
        .replace(/膃/g,'腽')
        .replace(/膓/g,'肠')
        .replace(/膕/g,'腘')
        .replace(/膚/g,'肤')
        .replace(/膞/g,'䏝')
        .replace(/膠/g,'胶')
        .replace(/膢/g,'𦝼')
        .replace(/膩/g,'腻')
        .replace(/膽/g,'胆')
        .replace(/膾/g,'脍')
        .replace(/膿/g,'脓')
        .replace(/臈/g,'腊')
        .replace(/臉/g,'脸')
        .replace(/臋/g,'臀')
        .replace(/臍/g,'脐')
        .replace(/臏/g,'膑')
        .replace(/臕/g,'膘')
        .replace(/臗/g,'𣎑')
        .replace(/臘/g,'腊')
        .replace(/臙/g,'胭')
        .replace(/臚/g,'胪')
        .replace(/臝/g,'裸')
        .replace(/臟/g,'脏')
        .replace(/臠/g,'脔')
        .replace(/臢/g,'臜')
        .replace(/臥/g,'卧')
        .replace(/臨/g,'临')
        .replace(/臯/g,'皋')
        .replace(/臺/g,'台')
        .replace(/與/g,'与')
        .replace(/興/g,'兴')
        .replace(/舉/g,'举')
        .replace(/舊/g,'旧')
        .replace(/舖/g,'铺')
        .replace(/舘/g,'馆')
        .replace(/舩/g,'船')
        .replace(/艙/g,'舱')
        .replace(/艢/g,'樯')
        .replace(/艣/g,'橹')
        .replace(/艤/g,'舣')
        .replace(/艦/g,'舰')
        .replace(/艪/g,'橹')
        .replace(/艫/g,'舻')
        .replace(/艱/g,'艰')
        .replace(/艷/g,'艳')
        .replace(/芲/g,'花')
        .replace(/芻/g,'刍')
        .replace(/苧/g,'苎')
        .replace(/茘/g,'荔')
        .replace(/茲/g,'兹')
        .replace(/荊/g,'荆')
        .replace(/荳/g,'豆')
        .replace(/莊/g,'庄')
        .replace(/莖/g,'茎')
        .replace(/莢/g,'荚')
        .replace(/莧/g,'苋')
        .replace(/華/g,'华')
        .replace(/菸/g,'烟')
        .replace(/萇/g,'苌')
        .replace(/萊/g,'莱')
        .replace(/萬/g,'万')
        .replace(/萲/g,'萱')
        .replace(/萴/g,'荝')
        .replace(/萵/g,'莴')
        .replace(/葉/g,'叶')
        .replace(/葒/g,'荭')
        .replace(/葠/g,'参')
        .replace(/葤/g,'荮')
        .replace(/葦/g,'苇')
        .replace(/葯/g,'药')
        .replace(/葷/g,'荤')
        .replace(/蒍/g,'𫇭')
        .replace(/蒓/g,'莼')
        .replace(/蒔/g,'莳')
        .replace(/蒞/g,'莅')
        .replace(/蒼/g,'苍')
        .replace(/蓀/g,'荪')
        .replace(/蓆/g,'席')
        .replace(/蓋/g,'盖')
        .replace(/蓡/g,'参')
        .replace(/蓮/g,'莲')
        .replace(/蓯/g,'苁')
        .replace(/蓴/g,'莼')
        .replace(/蓽/g,'荜')
        .replace(/蔄/g,'𬜬')
        .replace(/蔔/g,'卜')
        .replace(/蔕/g,'蒂')
        .replace(/蔘/g,'参')
        .replace(/蔞/g,'蒌')
        .replace(/蔣/g,'蒋')
        .replace(/蔥/g,'葱')
        .replace(/蔦/g,'茑')
        .replace(/蔭/g,'荫')
        .replace(/蔿/g,'𫇭')
        .replace(/蕁/g,'荨')
        .replace(/蕆/g,'蒇')
        .replace(/蕎/g,'荞')
        .replace(/蕒/g,'荬')
        .replace(/蕓/g,'芸')
        .replace(/蕕/g,'莸')
        .replace(/蕘/g,'荛')
        .replace(/蕚/g,'萼')
        .replace(/蕢/g,'蒉')
        .replace(/蕩/g,'荡')
        .replace(/蕪/g,'芜')
        .replace(/蕭/g,'萧')
        .replace(/蕷/g,'蓣')
        .replace(/蕿/g,'萱')
        .replace(/薀/g,'蕰')
        .replace(/薈/g,'荟')
        .replace(/薊/g,'蓟')
        .replace(/薌/g,'芗')
        .replace(/薑/g,'姜')
        .replace(/薔/g,'蔷')
        .replace(/薘/g,'荙')
        .replace(/薟/g,'莶')
        .replace(/薦/g,'荐')
        .replace(/薩/g,'萨')
        .replace(/薴/g,'苧')
        .replace(/薺/g,'荠')
        .replace(/藍/g,'蓝')
        .replace(/藎/g,'荩')
        .replace(/藝/g,'艺')
        .replace(/藥/g,'药')
        .replace(/藪/g,'薮')
        .replace(/藭/g,'䓖')
        .replace(/藴/g,'蕴')
        .replace(/藶/g,'苈')
        .replace(/藷/g,'薯')
        .replace(/藹/g,'蔼')
        .replace(/藺/g,'蔺')
        .replace(/藼/g,'萱')
        .replace(/蘀/g,'萚')
        .replace(/蘄/g,'蕲')
        .replace(/蘆/g,'芦')
        .replace(/蘇/g,'苏')
        .replace(/蘊/g,'蕴')
        .replace(/蘋/g,'𬞟')
        .replace(/蘐/g,'萱')
        .replace(/蘓/g,'苏')
        .replace(/蘚/g,'藓')
        .replace(/蘞/g,'蔹')
        .replace(/蘢/g,'茏')
        .replace(/蘤/g,'花')
        .replace(/蘭/g,'兰')
        .replace(/蘺/g,'蓠')
        .replace(/蘿/g,'萝')
        .replace(/虆/g,'蔂')
        .replace(/虉/g,'𬟁')
        .replace(/處/g,'处')
        .replace(/虛/g,'虚')
        .replace(/虜/g,'虏')
        .replace(/號/g,'号')
        .replace(/虧/g,'亏')
        .replace(/虯/g,'虬')
        .replace(/蚘/g,'蛔')
        .replace(/蛕/g,'蛔')
        .replace(/蛺/g,'蛱')
        .replace(/蛻/g,'蜕')
        .replace(/蜆/g,'蚬')
        .replace(/蜋/g,'螂')
        .replace(/蜖/g,'蛔')
        .replace(/蜨/g,'蝶')
        .replace(/蝀/g,'𬟽')
        .replace(/蝕/g,'蚀')
        .replace(/蝟/g,'猬')
        .replace(/蝦/g,'虾')
        .replace(/蝨/g,'虱')
        .replace(/蝯/g,'猿')
        .replace(/蝱/g,'虻')
        .replace(/蝸/g,'蜗')
        .replace(/螄/g,'蛳')
        .replace(/螎/g,'融')
        .replace(/螞/g,'蚂')
        .replace(/螡/g,'蚊')
        .replace(/螢/g,'萤')
        .replace(/螮/g,'䗖')
        .replace(/螻/g,'蝼')
        .replace(/螿/g,'螀')
        .replace(/蟁/g,'蚊')
        .replace(/蟄/g,'蛰')
        .replace(/蟇/g,'蟆')
        .replace(/蟈/g,'蝈')
        .replace(/蟎/g,'螨')
        .replace(/蟣/g,'虮')
        .replace(/蟬/g,'蝉')
        .replace(/蟯/g,'蛲')
        .replace(/蟲/g,'虫')
        .replace(/蟶/g,'蛏')
        .replace(/蟻/g,'蚁')
        .replace(/蠁/g,'蚃')
        .replace(/蠅/g,'蝇')
        .replace(/蠆/g,'虿')
        .replace(/蠍/g,'蝎')
        .replace(/蠏/g,'蟹')
        .replace(/蠐/g,'蛴')
        .replace(/蠑/g,'蝾')
        .replace(/蠒/g,'茧')
        .replace(/蠔/g,'蚝')
        .replace(/蠟/g,'蜡')
        .replace(/蠣/g,'蛎')
        .replace(/蠨/g,'蟏')
        .replace(/蠭/g,'蜂')
        .replace(/蠱/g,'蛊')
        .replace(/蠶/g,'蚕')
        .replace(/蠻/g,'蛮')
        .replace(/衂/g,'衄')
        .replace(/衆/g,'众')
        .replace(/衇/g,'脉')
        .replace(/衊/g,'蔑')
        .replace(/術/g,'术')
        .replace(/衕/g,'同')
        .replace(/衚/g,'胡')
        .replace(/衛/g,'卫')
        .replace(/衝/g,'冲')
        .replace(/衞/g,'卫')
        .replace(/衺/g,'邪')
        .replace(/袞/g,'衮')
        .replace(/袟/g,'帙')
        .replace(/袵/g,'衽')
        .replace(/裊/g,'袅')
        .replace(/裌/g,'袷')
        .replace(/裏/g,'里')
        .replace(/補/g,'补')
        .replace(/裝/g,'装')
        .replace(/裠/g,'裙')
        .replace(/裡/g,'里')
        .replace(/製/g,'制')
        .replace(/複/g,'复')
        .replace(/褌/g,'裈')
        .replace(/褘/g,'袆')
        .replace(/褭/g,'袅')
        .replace(/褲/g,'裤')
        .replace(/褳/g,'裢')
        .replace(/褸/g,'褛')
        .replace(/褻/g,'亵')
        .replace(/襀/g,'𫌀')
        .replace(/襃/g,'褒')
        .replace(/襉/g,'裥')
        .replace(/襍/g,'杂')
        .replace(/襏/g,'袯')
        .replace(/襖/g,'袄')
        .replace(/襝/g,'裣')
        .replace(/襠/g,'裆')
        .replace(/襤/g,'褴')
        .replace(/襪/g,'袜')
        .replace(/襬/g,'䙓')
        .replace(/襯/g,'衬')
        .replace(/襲/g,'袭')
        .replace(/襴/g,'襕')
        .replace(/覇/g,'霸')
        .replace(/覈/g,'核')
        .replace(/覊/g,'羁')
        .replace(/見/g,'见')
        .replace(/覎/g,'觃')
        .replace(/規/g,'规')
        .replace(/覓/g,'觅')
        .replace(/覔/g,'觅')
        .replace(/視/g,'视')
        .replace(/覘/g,'觇')
        .replace(/覡/g,'觋')
        .replace(/覥/g,'觍')
        .replace(/覦/g,'觎')
        .replace(/覩/g,'睹')
        .replace(/親/g,'亲')
        .replace(/覬/g,'觊')
        .replace(/覯/g,'觏')
        .replace(/覲/g,'觐')
        .replace(/覷/g,'觑')
        .replace(/覺/g,'觉')
        .replace(/覼/g,'𫌨')
        .replace(/覽/g,'览')
        .replace(/覿/g,'觌')
        .replace(/觀/g,'观')
        .replace(/觝/g,'抵')
        .replace(/觴/g,'觞')
        .replace(/觶/g,'觯')
        .replace(/觸/g,'触')
        .replace(/訁/g,'讠')
        .replace(/訂/g,'订')
        .replace(/訃/g,'讣')
        .replace(/計/g,'计')
        .replace(/訊/g,'讯')
        .replace(/訌/g,'讧')
        .replace(/討/g,'讨')
        .replace(/訏/g,'𬣙')
        .replace(/訐/g,'讦')
        .replace(/訑/g,'𫍙')
        .replace(/訒/g,'讱')
        .replace(/訓/g,'训')
        .replace(/訕/g,'讪')
        .replace(/訖/g,'讫')
        .replace(/託/g,'托')
        .replace(/記/g,'记')
        .replace(/訛/g,'讹')
        .replace(/訝/g,'讶')
        .replace(/訟/g,'讼')
        .replace(/訢/g,'䜣')
        .replace(/訣/g,'诀')
        .replace(/訥/g,'讷')
        .replace(/訩/g,'讻')
        .replace(/訪/g,'访')
        .replace(/設/g,'设')
        .replace(/許/g,'许')
        .replace(/訴/g,'诉')
        .replace(/訶/g,'诃')
        .replace(/診/g,'诊')
        .replace(/註/g,'注')
        .replace(/証/g,'证')
        .replace(/詀/g,'𧮪')
        .replace(/詁/g,'诂')
        .replace(/詆/g,'诋')
        .replace(/詎/g,'讵')
        .replace(/詐/g,'诈')
        .replace(/詒/g,'诒')
        .replace(/詔/g,'诏')
        .replace(/評/g,'评')
        .replace(/詖/g,'诐')
        .replace(/詗/g,'诇')
        .replace(/詘/g,'诎')
        .replace(/詛/g,'诅')
        .replace(/詝/g,'𬣞')
        .replace(/詞/g,'词')
        .replace(/詠/g,'咏')
        .replace(/詡/g,'诩')
        .replace(/詢/g,'询')
        .replace(/詣/g,'诣')
        .replace(/試/g,'试')
        .replace(/詩/g,'诗')
        .replace(/詪/g,'𬣳')
        .replace(/詫/g,'诧')
        .replace(/詬/g,'诟')
        .replace(/詭/g,'诡')
        .replace(/詮/g,'诠')
        .replace(/詰/g,'诘')
        .replace(/話/g,'话')
        .replace(/該/g,'该')
        .replace(/詳/g,'详')
        .replace(/詵/g,'诜')
        .replace(/詶/g,'酬')
        .replace(/詷/g,'𫍣')
        .replace(/詼/g,'诙')
        .replace(/詿/g,'诖')
        .replace(/誄/g,'诔')
        .replace(/誅/g,'诛')
        .replace(/誆/g,'诓')
        .replace(/誇/g,'夸')
        .replace(/誌/g,'志')
        .replace(/認/g,'认')
        .replace(/誑/g,'诳')
        .replace(/誒/g,'诶')
        .replace(/誕/g,'诞')
        .replace(/誖/g,'悖')
        .replace(/誘/g,'诱')
        .replace(/誚/g,'诮')
        .replace(/語/g,'语')
        .replace(/誠/g,'诚')
        .replace(/誡/g,'诫')
        .replace(/誣/g,'诬')
        .replace(/誤/g,'误')
        .replace(/誥/g,'诰')
        .replace(/誦/g,'诵')
        .replace(/誨/g,'诲')
        .replace(/說/g,'说')
        .replace(/説/g,'说')
        .replace(/誰/g,'谁')
        .replace(/課/g,'课')
        .replace(/誶/g,'谇')
        .replace(/誹/g,'诽')
        .replace(/誼/g,'谊')
        .replace(/誾/g,'訚')
        .replace(/調/g,'调')
        .replace(/諂/g,'谄')
        .replace(/諄/g,'谆')
        .replace(/談/g,'谈')
        .replace(/諉/g,'诿')
        .replace(/請/g,'请')
        .replace(/諍/g,'诤')
        .replace(/諏/g,'诹')
        .replace(/諑/g,'诼')
        .replace(/諒/g,'谅')
        .replace(/諓/g,'𬣡')
        .replace(/論/g,'论')
        .replace(/諗/g,'谂')
        .replace(/諛/g,'谀')
        .replace(/諜/g,'谍')
        .replace(/諝/g,'谞')
        .replace(/諞/g,'谝')
        .replace(/諟/g,'𬤊')
        .replace(/諡/g,'谥')
        .replace(/諢/g,'诨')
        .replace(/諤/g,'谔')
        .replace(/諦/g,'谛')
        .replace(/諧/g,'谐')
        .replace(/諫/g,'谏')
        .replace(/諭/g,'谕')
        .replace(/諮/g,'谘')
        .replace(/諰/g,'𫍰')
        .replace(/諱/g,'讳')
        .replace(/諲/g,'𬤇')
        .replace(/諳/g,'谙')
        .replace(/諴/g,'𫍯')
        .replace(/諶/g,'谌')
        .replace(/諷/g,'讽')
        .replace(/諸/g,'诸')
        .replace(/諺/g,'谚')
        .replace(/諼/g,'谖')
        .replace(/諾/g,'诺')
        .replace(/謀/g,'谋')
        .replace(/謁/g,'谒')
        .replace(/謂/g,'谓')
        .replace(/謄/g,'誊')
        .replace(/謅/g,'诌')
        .replace(/謊/g,'谎')
        .replace(/謌/g,'歌')
        .replace(/謎/g,'谜')
        .replace(/謏/g,'𫍲')
        .replace(/謐/g,'谧')
        .replace(/謔/g,'谑')
        .replace(/謖/g,'谡')
        .replace(/謗/g,'谤')
        .replace(/謙/g,'谦')
        .replace(/謚/g,'谥')
        .replace(/講/g,'讲')
        .replace(/謝/g,'谢')
        .replace(/謠/g,'谣')
        .replace(/謡/g,'谣')
        .replace(/謨/g,'谟')
        .replace(/謫/g,'谪')
        .replace(/謬/g,'谬')
        .replace(/謭/g,'谫')
        .replace(/謳/g,'讴')
        .replace(/謹/g,'谨')
        .replace(/謾/g,'谩')
        .replace(/譁/g,'哗')
        .replace(/譆/g,'嘻')
        .replace(/證/g,'证')
        .replace(/譊/g,'𫍢')
        .replace(/譌/g,'讹')
        .replace(/譎/g,'谲')
        .replace(/譏/g,'讥')
        .replace(/譓/g,'𬤝')
        .replace(/譔/g,'撰')
        .replace(/譖/g,'谮')
        .replace(/識/g,'识')
        .replace(/譙/g,'谯')
        .replace(/譚/g,'谭')
        .replace(/譜/g,'谱')
        .replace(/譞/g,'𫍽')
        .replace(/譟/g,'噪')
        .replace(/譫/g,'谵')
        .replace(/譭/g,'毁')
        .replace(/譯/g,'译')
        .replace(/議/g,'议')
        .replace(/譴/g,'谴')
        .replace(/護/g,'护')
        .replace(/譸/g,'诪')
        .replace(/譽/g,'誉')
        .replace(/譾/g,'谫')
        .replace(/讀/g,'读')
        .replace(/讁/g,'谪')
        .replace(/變/g,'变')
        .replace(/讋/g,'詟')
        .replace(/讌/g,'䜩')
        .replace(/讎/g,'仇')
        .replace(/讐/g,'雠')
        .replace(/讒/g,'谗')
        .replace(/讓/g,'让')
        .replace(/讕/g,'谰')
        .replace(/讖/g,'谶')
        .replace(/讚/g,'赞')
        .replace(/讜/g,'谠')
        .replace(/讞/g,'谳')
        .replace(/豈/g,'岂')
        .replace(/豎/g,'竖')
        .replace(/豐/g,'丰')
        .replace(/豓/g,'艳')
        .replace(/豔/g,'艳')
        .replace(/豬/g,'猪')
        .replace(/豶/g,'豮')
        .replace(/貍/g,'狸')
        .replace(/貓/g,'猫')
        .replace(/貙/g,'䝙')
        .replace(/貛/g,'獾')
        .replace(/貝/g,'贝')
        .replace(/貞/g,'贞')
        .replace(/貟/g,'贠')
        .replace(/負/g,'负')
        .replace(/財/g,'财')
        .replace(/貢/g,'贡')
        .replace(/貧/g,'贫')
        .replace(/貨/g,'货')
        .replace(/販/g,'贩')
        .replace(/貪/g,'贪')
        .replace(/貫/g,'贯')
        .replace(/責/g,'责')
        .replace(/貯/g,'贮')
        .replace(/貰/g,'贳')
        .replace(/貲/g,'赀')
        .replace(/貳/g,'贰')
        .replace(/貴/g,'贵')
        .replace(/貶/g,'贬')
        .replace(/買/g,'买')
        .replace(/貸/g,'贷')
        .replace(/貺/g,'贶')
        .replace(/費/g,'费')
        .replace(/貼/g,'贴')
        .replace(/貽/g,'贻')
        .replace(/貿/g,'贸')
        .replace(/賀/g,'贺')
        .replace(/賁/g,'贲')
        .replace(/賂/g,'赂')
        .replace(/賃/g,'赁')
        .replace(/賄/g,'贿')
        .replace(/賅/g,'赅')
        .replace(/資/g,'资')
        .replace(/賈/g,'贾')
        .replace(/賉/g,'恤')
        .replace(/賊/g,'贼')
        .replace(/賑/g,'赈')
        .replace(/賒/g,'赊')
        .replace(/賓/g,'宾')
        .replace(/賕/g,'赇')
        .replace(/賙/g,'赒')
        .replace(/賚/g,'赉')
        .replace(/賛/g,'赞')
        .replace(/賜/g,'赐')
        .replace(/賞/g,'赏')
        .replace(/賟/g,'𧹖')
        .replace(/賠/g,'赔')
        .replace(/賡/g,'赓')
        .replace(/賢/g,'贤')
        .replace(/賣/g,'卖')
        .replace(/賤/g,'贱')
        .replace(/賦/g,'赋')
        .replace(/賧/g,'赕')
        .replace(/質/g,'质')
        .replace(/賫/g,'赍')
        .replace(/賬/g,'账')
        .replace(/賭/g,'赌')
        .replace(/賰/g,'䞐')
        .replace(/賴/g,'赖')
        .replace(/賵/g,'赗')
        .replace(/賷/g,'赍')
        .replace(/賺/g,'赚')
        .replace(/賻/g,'赙')
        .replace(/購/g,'购')
        .replace(/賽/g,'赛')
        .replace(/賾/g,'赜')
        .replace(/贃/g,'𧹗')
        .replace(/贄/g,'贽')
        .replace(/贅/g,'赘')
        .replace(/贇/g,'赟')
        .replace(/贈/g,'赠')
        .replace(/贊/g,'赞')
        .replace(/贋/g,'赝')
        .replace(/贍/g,'赡')
        .replace(/贏/g,'赢')
        .replace(/贐/g,'赆')
        .replace(/贑/g,'赣')
        .replace(/贓/g,'赃')
        .replace(/贔/g,'赑')
        .replace(/贖/g,'赎')
        .replace(/贗/g,'赝')
        .replace(/贛/g,'赣')
        .replace(/贜/g,'赃')
        .replace(/赬/g,'赪')
        .replace(/趂/g,'趁')
        .replace(/趕/g,'赶')
        .replace(/趙/g,'赵')
        .replace(/趨/g,'趋')
        .replace(/趲/g,'趱')
        .replace(/跡/g,'迹')
        .replace(/跥/g,'跺')
        .replace(/踁/g,'胫')
        .replace(/踐/g,'践')
        .replace(/踫/g,'碰')
        .replace(/踰/g,'逾')
        .replace(/踴/g,'踊')
        .replace(/蹌/g,'跄')
        .replace(/蹏/g,'蹄')
        .replace(/蹔/g,'暂')
        .replace(/蹕/g,'跸')
        .replace(/蹟/g,'迹')
        .replace(/蹠/g,'跖')
        .replace(/蹣/g,'蹒')
        .replace(/蹤/g,'踪')
        .replace(/蹧/g,'糟')
        .replace(/蹵/g,'蹴')
        .replace(/蹺/g,'跷')
        .replace(/蹻/g,'𫏋')
        .replace(/躂/g,'跶')
        .replace(/躉/g,'趸')
        .replace(/躊/g,'踌')
        .replace(/躋/g,'跻')
        .replace(/躍/g,'跃')
        .replace(/躎/g,'䟢')
        .replace(/躑/g,'踯')
        .replace(/躒/g,'跞')
        .replace(/躓/g,'踬')
        .replace(/躕/g,'蹰')
        .replace(/躘/g,'𨀁')
        .replace(/躚/g,'跹')
        .replace(/躝/g,'𨅬')
        .replace(/躡/g,'蹑')
        .replace(/躥/g,'蹿')
        .replace(/躦/g,'躜')
        .replace(/躪/g,'躏')
        .replace(/躭/g,'耽')
        .replace(/躳/g,'躬')
        .replace(/躶/g,'裸')
        .replace(/軀/g,'躯')
        .replace(/軉/g,'𨉗')
        .replace(/車/g,'车')
        .replace(/軋/g,'轧')
        .replace(/軌/g,'轨')
        .replace(/軍/g,'军')
        .replace(/軏/g,'𫐄')
        .replace(/軑/g,'轪')
        .replace(/軒/g,'轩')
        .replace(/軔/g,'轫')
        .replace(/軗/g,'𨐅')
        .replace(/軛/g,'轭')
        .replace(/軝/g,'𬨂')
        .replace(/軟/g,'软')
        .replace(/軤/g,'轷')
        .replace(/軨/g,'𫐉')
        .replace(/軫/g,'轸')
        .replace(/軲/g,'轱')
        .replace(/軸/g,'轴')
        .replace(/軹/g,'轵')
        .replace(/軺/g,'轺')
        .replace(/軻/g,'轲')
        .replace(/軼/g,'轶')
        .replace(/軾/g,'轼')
        .replace(/較/g,'较')
        .replace(/輄/g,'𨐈')
        .replace(/輅/g,'辂')
        .replace(/輇/g,'辁')
        .replace(/輈/g,'辀')
        .replace(/載/g,'载')
        .replace(/輊/g,'轾')
        .replace(/輋/g,'𪨶')
        .replace(/輒/g,'辄')
        .replace(/輓/g,'挽')
        .replace(/輔/g,'辅')
        .replace(/輕/g,'轻')
        .replace(/輗/g,'𫐐')
        .replace(/輙/g,'辄')
        .replace(/輛/g,'辆')
        .replace(/輜/g,'辎')
        .replace(/輝/g,'辉')
        .replace(/輞/g,'辋')
        .replace(/輟/g,'辍')
        .replace(/輥/g,'辊')
        .replace(/輦/g,'辇')
        .replace(/輩/g,'辈')
        .replace(/輪/g,'轮')
        .replace(/輬/g,'辌')
        .replace(/輭/g,'软')
        .replace(/輮/g,'𫐓')
        .replace(/輯/g,'辑')
        .replace(/輳/g,'辏')
        .replace(/輶/g,'𬨎')
        .replace(/輸/g,'输')
        .replace(/輻/g,'辐')
        .replace(/輼/g,'辒')
        .replace(/輾/g,'辗')
        .replace(/輿/g,'舆')
        .replace(/轀/g,'辒')
        .replace(/轂/g,'毂')
        .replace(/轄/g,'辖')
        .replace(/轅/g,'辕')
        .replace(/轆/g,'辘')
        .replace(/轉/g,'转')
        .replace(/轍/g,'辙')
        .replace(/轎/g,'轿')
        .replace(/轔/g,'辚')
        .replace(/轟/g,'轰')
        .replace(/轡/g,'辔')
        .replace(/轢/g,'轹')
        .replace(/轣/g,'𫐆')
        .replace(/轤/g,'轳')
        .replace(/辠/g,'罪')
        .replace(/辢/g,'辣')
        .replace(/辤/g,'辞')
        .replace(/辦/g,'办')
        .replace(/辭/g,'辞')
        .replace(/辮/g,'辫')
        .replace(/辯/g,'辩')
        .replace(/農/g,'农')
        .replace(/辳/g,'农')
        .replace(/迴/g,'回')
        .replace(/迻/g,'移')
        .replace(/逈/g,'迥')
        .replace(/逕/g,'迳')
        .replace(/這/g,'这')
        .replace(/連/g,'连')
        .replace(/逥/g,'回')
        .replace(/逩/g,'奔')
        .replace(/逬/g,'迸')
        .replace(/週/g,'周')
        .replace(/進/g,'进')
        .replace(/遉/g,'侦')
        .replace(/遊/g,'游')
        .replace(/運/g,'运')
        .replace(/過/g,'过')
        .replace(/達/g,'达')
        .replace(/違/g,'违')
        .replace(/遙/g,'遥')
        .replace(/遜/g,'逊')
        .replace(/遞/g,'递')
        .replace(/遠/g,'远')
        .replace(/遡/g,'溯')
        .replace(/適/g,'适')
        .replace(/遯/g,'遁')
        .replace(/遲/g,'迟')
        .replace(/遷/g,'迁')
        .replace(/選/g,'选')
        .replace(/遺/g,'遗')
        .replace(/遼/g,'辽')
        .replace(/邁/g,'迈')
        .replace(/還/g,'还')
        .replace(/邇/g,'迩')
        .replace(/邊/g,'边')
        .replace(/邏/g,'逻')
        .replace(/邐/g,'逦')
        .replace(/郟/g,'郏')
        .replace(/郵/g,'邮')
        .replace(/鄆/g,'郓')
        .replace(/鄉/g,'乡')
        .replace(/鄒/g,'邹')
        .replace(/鄔/g,'邬')
        .replace(/鄖/g,'郧')
        .replace(/鄧/g,'邓')
        .replace(/鄩/g,'𬩽')
        .replace(/鄭/g,'郑')
        .replace(/鄰/g,'邻')
        .replace(/鄲/g,'郸')
        .replace(/鄳/g,'𫑡')
        .replace(/鄴/g,'邺')
        .replace(/鄶/g,'郐')
        .replace(/鄺/g,'邝')
        .replace(/酇/g,'酂')
        .replace(/酈/g,'郦')
        .replace(/酖/g,'鸩')
        .replace(/酧/g,'酬')
        .replace(/醃/g,'腌')
        .replace(/醆/g,'盏')
        .replace(/醕/g,'醇')
        .replace(/醜/g,'丑')
        .replace(/醞/g,'酝')
        .replace(/醣/g,'糖')
        .replace(/醫/g,'医')
        .replace(/醬/g,'酱')
        .replace(/醯/g,'酰')
        .replace(/醱/g,'酦')
        .replace(/醲/g,'𬪩')
        .replace(/醻/g,'酬')
        .replace(/醼/g,'宴')
        .replace(/釀/g,'酿')
        .replace(/釁/g,'衅')
        .replace(/釃/g,'酾')
        .replace(/釅/g,'酽')
        .replace(/釋/g,'释')
        .replace(/釒/g,'钅')
        .replace(/釓/g,'钆')
        .replace(/釔/g,'钇')
        .replace(/釕/g,'钌')
        .replace(/釗/g,'钊')
        .replace(/釘/g,'钉')
        .replace(/釙/g,'钋')
        .replace(/針/g,'针')
        .replace(/釣/g,'钓')
        .replace(/釤/g,'钐')
        .replace(/釦/g,'扣')
        .replace(/釧/g,'钏')
        .replace(/釩/g,'钒')
        .replace(/釬/g,'焊')
        .replace(/釳/g,'𨰿')
        .replace(/釴/g,'𬬩')
        .replace(/釵/g,'钗')
        .replace(/釷/g,'钍')
        .replace(/釹/g,'钕')
        .replace(/釺/g,'钎')
        .replace(/釾/g,'䥺')
        .replace(/釿/g,'𬬱')
        .replace(/鈀/g,'钯')
        .replace(/鈁/g,'钫')
        .replace(/鈃/g,'钘')
        .replace(/鈄/g,'钭')
        .replace(/鈅/g,'钥')
        .replace(/鈇/g,'𫓧')
        .replace(/鈈/g,'钚')
        .replace(/鈉/g,'钠')
        .replace(/鈋/g,'𨱂')
        .replace(/鈍/g,'钝')
        .replace(/鈎/g,'钩')
        .replace(/鈐/g,'钤')
        .replace(/鈑/g,'钣')
        .replace(/鈒/g,'钑')
        .replace(/鈔/g,'钞')
        .replace(/鈕/g,'钮')
        .replace(/鈞/g,'钧')
        .replace(/鈠/g,'𨱁')
        .replace(/鈣/g,'钙')
        .replace(/鈥/g,'钬')
        .replace(/鈦/g,'钛')
        .replace(/鈧/g,'钪')
        .replace(/鈮/g,'铌')
        .replace(/鈯/g,'𨱄')
        .replace(/鈰/g,'铈')
        .replace(/鈲/g,'𨱃')
        .replace(/鈳/g,'钶')
        .replace(/鈴/g,'铃')
        .replace(/鈷/g,'钴')
        .replace(/鈸/g,'钹')
        .replace(/鈹/g,'铍')
        .replace(/鈺/g,'钰')
        .replace(/鈽/g,'钸')
        .replace(/鈾/g,'铀')
        .replace(/鈿/g,'钿')
        .replace(/鉀/g,'钾')
        .replace(/鉁/g,'𨱅')
        .replace(/鉄/g,'铁')
        .replace(/鉅/g,'钜')
        .replace(/鉆/g,'钻')
        .replace(/鉈/g,'铊')
        .replace(/鉉/g,'铉')
        .replace(/鉊/g,'𬬿')
        .replace(/鉋/g,'铇')
        .replace(/鉍/g,'铋')
        .replace(/鉑/g,'铂')
        .replace(/鉕/g,'钷')
        .replace(/鉗/g,'钳')
        .replace(/鉚/g,'铆')
        .replace(/鉛/g,'铅')
        .replace(/鉝/g,'𫟷')
        .replace(/鉞/g,'钺')
        .replace(/鉢/g,'钵')
        .replace(/鉤/g,'钩')
        .replace(/鉥/g,'𬬸')
        .replace(/鉦/g,'钲')
        .replace(/鉧/g,'𬭁')
        .replace(/鉬/g,'钼')
        .replace(/鉭/g,'钽')
        .replace(/鉮/g,'𬬹')
        .replace(/鉶/g,'铏')
        .replace(/鉷/g,'𫟹')
        .replace(/鉸/g,'铰')
        .replace(/鉺/g,'铒')
        .replace(/鉻/g,'铬')
        .replace(/鉿/g,'铪')
        .replace(/銀/g,'银')
        .replace(/銃/g,'铳')
        .replace(/銅/g,'铜')
        .replace(/銈/g,'𫓯')
        .replace(/銍/g,'铚')
        .replace(/銑/g,'铣')
        .replace(/銓/g,'铨')
        .replace(/銖/g,'铢')
        .replace(/銘/g,'铭')
        .replace(/銚/g,'铫')
        .replace(/銛/g,'铦')
        .replace(/銜/g,'衔')
        .replace(/銠/g,'铑')
        .replace(/銣/g,'铷')
        .replace(/銥/g,'铱')
        .replace(/銦/g,'铟')
        .replace(/銨/g,'铵')
        .replace(/銩/g,'铥')
        .replace(/銪/g,'铕')
        .replace(/銫/g,'铯')
        .replace(/銬/g,'铐')
        .replace(/銱/g,'铞')
        .replace(/銲/g,'焊')
        .replace(/銳/g,'锐')
        .replace(/銶/g,'𨱇')
        .replace(/銷/g,'销')
        .replace(/銹/g,'锈')
        .replace(/銻/g,'锑')
        .replace(/銼/g,'锉')
        .replace(/鋁/g,'铝')
        .replace(/鋃/g,'锒')
        .replace(/鋅/g,'锌')
        .replace(/鋇/g,'钡')
        .replace(/鋉/g,'𨱈')
        .replace(/鋌/g,'铤')
        .replace(/鋏/g,'铗')
        .replace(/鋐/g,'𬭎')
        .replace(/鋒/g,'锋')
        .replace(/鋗/g,'𫓶')
        .replace(/鋙/g,'铻')
        .replace(/鋝/g,'锊')
        .replace(/鋟/g,'锓')
        .replace(/鋣/g,'铘')
        .replace(/鋤/g,'锄')
        .replace(/鋥/g,'锃')
        .replace(/鋦/g,'锔')
        .replace(/鋨/g,'锇')
        .replace(/鋩/g,'铓')
        .replace(/鋪/g,'铺')
        .replace(/鋭/g,'锐')
        .replace(/鋮/g,'铖')
        .replace(/鋯/g,'锆')
        .replace(/鋰/g,'锂')
        .replace(/鋱/g,'铽')
        .replace(/鋶/g,'锍')
        .replace(/鋸/g,'锯')
        .replace(/鋹/g,'𬬮')
        .replace(/鋼/g,'钢')
        .replace(/錀/g,'𬬭')
        .replace(/錁/g,'锞')
        .replace(/錂/g,'𨱋')
        .replace(/錄/g,'录')
        .replace(/錆/g,'锖')
        .replace(/錇/g,'锫')
        .replace(/錈/g,'锩')
        .replace(/錏/g,'铔')
        .replace(/錐/g,'锥')
        .replace(/錒/g,'锕')
        .replace(/錕/g,'锟')
        .replace(/錘/g,'锤')
        .replace(/錙/g,'锱')
        .replace(/錚/g,'铮')
        .replace(/錛/g,'锛')
        .replace(/錞/g,'𬭚')
        .replace(/錟/g,'锬')
        .replace(/錠/g,'锭')
        .replace(/錡/g,'锜')
        .replace(/錢/g,'钱')
        .replace(/錤/g,'𫓹')
        .replace(/錦/g,'锦')
        .replace(/錨/g,'锚')
        .replace(/錩/g,'锠')
        .replace(/錫/g,'锡')
        .replace(/錮/g,'锢')
        .replace(/錯/g,'错')
        .replace(/録/g,'录')
        .replace(/錳/g,'锰')
        .replace(/錶/g,'表')
        .replace(/錸/g,'铼')
        .replace(/鍀/g,'锝')
        .replace(/鍁/g,'锨')
        .replace(/鍃/g,'锪')
        .replace(/鍄/g,'𨱉')
        .replace(/鍆/g,'钔')
        .replace(/鍇/g,'锴')
        .replace(/鍈/g,'锳')
        .replace(/鍊/g,'炼')
        .replace(/鍋/g,'锅')
        .replace(/鍍/g,'镀')
        .replace(/鍔/g,'锷')
        .replace(/鍘/g,'铡')
        .replace(/鍚/g,'钖')
        .replace(/鍛/g,'锻')
        .replace(/鍠/g,'锽')
        .replace(/鍤/g,'锸')
        .replace(/鍥/g,'锲')
        .replace(/鍩/g,'锘')
        .replace(/鍫/g,'锹')
        .replace(/鍬/g,'锹')
        .replace(/鍭/g,'𬭤')
        .replace(/鍮/g,'𨱎')
        .replace(/鍰/g,'锾')
        .replace(/鍳/g,'鉴')
        .replace(/鍵/g,'键')
        .replace(/鍶/g,'锶')
        .replace(/鍺/g,'锗')
        .replace(/鍾/g,'锺')
        .replace(/鎂/g,'镁')
        .replace(/鎄/g,'锿')
        .replace(/鎇/g,'镅')
        .replace(/鎊/g,'镑')
        .replace(/鎌/g,'镰')
        .replace(/鎓/g,'𬭩')
        .replace(/鎔/g,'镕')
        .replace(/鎖/g,'锁')
        .replace(/鎗/g,'枪')
        .replace(/鎘/g,'镉')
        .replace(/鎚/g,'锤')
        .replace(/鎛/g,'镈')
        .replace(/鎝/g,'𨱏')
        .replace(/鎡/g,'镃')
        .replace(/鎢/g,'钨')
        .replace(/鎣/g,'蓥')
        .replace(/鎦/g,'镏')
        .replace(/鎧/g,'铠')
        .replace(/鎩/g,'铩')
        .replace(/鎪/g,'锼')
        .replace(/鎬/g,'镐')
        .replace(/鎭/g,'镇')
        .replace(/鎮/g,'镇')
        .replace(/鎯/g,'𨱍')
        .replace(/鎰/g,'镒')
        .replace(/鎲/g,'镋')
        .replace(/鎳/g,'镍')
        .replace(/鎵/g,'镓')
        .replace(/鎶/g,'鿔')
        .replace(/鎷/g,'𨰾')
        .replace(/鎸/g,'镌')
        .replace(/鎻/g,'锁')
        .replace(/鎿/g,'镎')
        .replace(/鏃/g,'镞')
        .replace(/鏆/g,'𨱌')
        .replace(/鏇/g,'镟')
        .replace(/鏈/g,'链')
        .replace(/鏉/g,'𨱒')
        .replace(/鏌/g,'镆')
        .replace(/鏍/g,'镙')
        .replace(/鏏/g,'𬭬')
        .replace(/鏐/g,'镠')
        .replace(/鏑/g,'镝')
        .replace(/鏗/g,'铿')
        .replace(/鏘/g,'锵')
        .replace(/鏚/g,'戚')
        .replace(/鏜/g,'镗')
        .replace(/鏝/g,'镘')
        .replace(/鏞/g,'镛')
        .replace(/鏟/g,'铲')
        .replace(/鏡/g,'镜')
        .replace(/鏢/g,'镖')
        .replace(/鏤/g,'镂')
        .replace(/鏦/g,'𫓩')
        .replace(/鏨/g,'錾')
        .replace(/鏰/g,'镚')
        .replace(/鏵/g,'铧')
        .replace(/鏷/g,'镤')
        .replace(/鏹/g,'镪')
        .replace(/鏺/g,'䥽')
        .replace(/鏻/g,'𬭸')
        .replace(/鏽/g,'锈')
        .replace(/鐃/g,'铙')
        .replace(/鐄/g,'𨱑')
        .replace(/鐇/g,'𫔍')
        .replace(/鐋/g,'铴')
        .replace(/鐍/g,'𫔎')
        .replace(/鐎/g,'𨱓')
        .replace(/鐏/g,'𨱔')
        .replace(/鐐/g,'镣')
        .replace(/鐒/g,'铹')
        .replace(/鐓/g,'镦')
        .replace(/鐔/g,'镡')
        .replace(/鐘/g,'钟')
        .replace(/鐙/g,'镫')
        .replace(/鐝/g,'镢')
        .replace(/鐠/g,'镨')
        .replace(/鐥/g,'䦅')
        .replace(/鐦/g,'锎')
        .replace(/鐧/g,'锏')
        .replace(/鐨/g,'镄')
        .replace(/鐩/g,'𬭼')
        .replace(/鐫/g,'镌')
        .replace(/鐮/g,'镰')
        .replace(/鐯/g,'䦃')
        .replace(/鐲/g,'镯')
        .replace(/鐳/g,'镭')
        .replace(/鐵/g,'铁')
        .replace(/鐶/g,'镮')
        .replace(/鐸/g,'铎')
        .replace(/鐺/g,'铛')
        .replace(/鐽/g,'𫟼')
        .replace(/鐿/g,'镱')
        .replace(/鑄/g,'铸')
        .replace(/鑊/g,'镬')
        .replace(/鑌/g,'镔')
        .replace(/鑑/g,'鉴')
        .replace(/鑒/g,'鉴')
        .replace(/鑔/g,'镲')
        .replace(/鑕/g,'锧')
        .replace(/鑚/g,'钻')
        .replace(/鑛/g,'矿')
        .replace(/鑞/g,'镴')
        .replace(/鑠/g,'铄')
        .replace(/鑣/g,'镳')
        .replace(/鑤/g,'刨')
        .replace(/鑥/g,'镥')
        .replace(/鑪/g,'𬬻')
        .replace(/鑭/g,'镧')
        .replace(/鑰/g,'钥')
        .replace(/鑱/g,'镵')
        .replace(/鑲/g,'镶')
        .replace(/鑵/g,'罐')
        .replace(/鑷/g,'镊')
        .replace(/鑹/g,'镩')
        .replace(/鑼/g,'锣')
        .replace(/鑽/g,'钻')
        .replace(/鑾/g,'銮')
        .replace(/鑿/g,'凿')
        .replace(/钁/g,'镢')
        .replace(/钂/g,'镋')
        .replace(/長/g,'长')
        .replace(/門/g,'门')
        .replace(/閂/g,'闩')
        .replace(/閃/g,'闪')
        .replace(/閆/g,'闫')
        .replace(/閈/g,'闬')
        .replace(/閉/g,'闭')
        .replace(/開/g,'开')
        .replace(/閌/g,'闶')
        .replace(/閍/g,'𨸂')
        .replace(/閎/g,'闳')
        .replace(/閏/g,'闰')
        .replace(/閐/g,'𨸃')
        .replace(/閑/g,'闲')
        .replace(/閒/g,'闲')
        .replace(/間/g,'间')
        .replace(/閔/g,'闵')
        .replace(/閘/g,'闸')
        .replace(/閙/g,'闹')
        .replace(/閡/g,'阂')
        .replace(/閣/g,'阁')
        .replace(/閤/g,'阁')
        .replace(/閥/g,'阀')
        .replace(/閧/g,'哄')
        .replace(/閨/g,'闺')
        .replace(/閩/g,'闽')
        .replace(/閫/g,'阃')
        .replace(/閬/g,'阆')
        .replace(/閭/g,'闾')
        .replace(/閱/g,'阅')
        .replace(/閲/g,'阅')
        .replace(/閶/g,'阊')
        .replace(/閹/g,'阉')
        .replace(/閻/g,'阎')
        .replace(/閼/g,'阏')
        .replace(/閽/g,'阍')
        .replace(/閾/g,'阈')
        .replace(/閿/g,'阌')
        .replace(/闃/g,'阒')
        .replace(/闆/g,'板')
        .replace(/闇/g,'暗')
        .replace(/闈/g,'闱')
        .replace(/闉/g,'𬮱')
        .replace(/闊/g,'阔')
        .replace(/闋/g,'阕')
        .replace(/闌/g,'阑')
        .replace(/闍/g,'阇')
        .replace(/闐/g,'阗')
        .replace(/闑/g,'𫔶')
        .replace(/闒/g,'阘')
        .replace(/闓/g,'闿')
        .replace(/闔/g,'阖')
        .replace(/闕/g,'阙')
        .replace(/闖/g,'闯')
        .replace(/闚/g,'窥')
        .replace(/關/g,'关')
        .replace(/闞/g,'阚')
        .replace(/闠/g,'阓')
        .replace(/闡/g,'阐')
        .replace(/闢/g,'辟')
        .replace(/闤/g,'阛')
        .replace(/闥/g,'闼')
        .replace(/阨/g,'厄')
        .replace(/阬/g,'坑')
        .replace(/陗/g,'峭')
        .replace(/陘/g,'陉')
        .replace(/陜/g,'陕')
        .replace(/陝/g,'陕')
        .replace(/陣/g,'阵')
        .replace(/陰/g,'阴')
        .replace(/陳/g,'陈')
        .replace(/陸/g,'陆')
        .replace(/陻/g,'堙')
        .replace(/陽/g,'阳')
        .replace(/陿/g,'狭')
        .replace(/隂/g,'阴')
        .replace(/隄/g,'堤')
        .replace(/隉/g,'陧')
        .replace(/隊/g,'队')
        .replace(/階/g,'阶')
        .replace(/隑/g,'𬮿')
        .replace(/隕/g,'陨')
        .replace(/隖/g,'坞')
        .replace(/際/g,'际')
        .replace(/隣/g,'邻')
        .replace(/隤/g,'𬯎')
        .replace(/隨/g,'随')
        .replace(/險/g,'险')
        .replace(/隮/g,'𬯀')
        .replace(/隱/g,'隐')
        .replace(/隴/g,'陇')
        .replace(/隷/g,'隶')
        .replace(/隸/g,'隶')
        .replace(/隻/g,'只')
        .replace(/雋/g,'隽')
        .replace(/雖/g,'虽')
        .replace(/雙/g,'双')
        .replace(/雛/g,'雏')
        .replace(/雜/g,'杂')
        .replace(/雞/g,'鸡')
        .replace(/離/g,'离')
        .replace(/難/g,'难')
        .replace(/雲/g,'云')
        .replace(/電/g,'电')
        .replace(/霢/g,'霡')
        .replace(/霧/g,'雾')
        .replace(/霽/g,'霁')
        .replace(/靂/g,'雳')
        .replace(/靄/g,'霭')
        .replace(/靆/g,'叇')
        .replace(/靈/g,'灵')
        .replace(/靉/g,'叆')
        .replace(/靚/g,'靓')
        .replace(/靜/g,'静')
        .replace(/靦/g,'腼')
        .replace(/靨/g,'靥')
        .replace(/靭/g,'韧')
        .replace(/靱/g,'韧')
        .replace(/鞀/g,'鼗')
        .replace(/鞏/g,'巩')
        .replace(/鞝/g,'绱')
        .replace(/鞦/g,'秋')
        .replace(/鞵/g,'鞋')
        .replace(/鞽/g,'鞒')
        .replace(/鞾/g,'靴')
        .replace(/韁/g,'缰')
        .replace(/韃/g,'鞑')
        .replace(/韆/g,'千')
        .replace(/韈/g,'袜')
        .replace(/韉/g,'鞯')
        .replace(/韋/g,'韦')
        .replace(/韌/g,'韧')
        .replace(/韍/g,'韨')
        .replace(/韓/g,'韩')
        .replace(/韙/g,'韪')
        .replace(/韜/g,'韬')
        .replace(/韞/g,'韫')
        .replace(/韤/g,'袜')
        .replace(/韮/g,'韭')
        .replace(/韻/g,'韵')
        .replace(/響/g,'响')
        .replace(/頁/g,'页')
        .replace(/頂/g,'顶')
        .replace(/頃/g,'顷')
        .replace(/項/g,'项')
        .replace(/順/g,'顺')
        .replace(/頇/g,'顸')
        .replace(/須/g,'须')
        .replace(/頊/g,'顼')
        .replace(/頌/g,'颂')
        .replace(/頍/g,'𫠆')
        .replace(/頎/g,'颀')
        .replace(/頏/g,'颃')
        .replace(/預/g,'预')
        .replace(/頑/g,'顽')
        .replace(/頒/g,'颁')
        .replace(/頓/g,'顿')
        .replace(/頔/g,'𬱖')
        .replace(/頗/g,'颇')
        .replace(/領/g,'领')
        .replace(/頜/g,'颌')
        .replace(/頟/g,'额')
        .replace(/頠/g,'𬱟')
        .replace(/頡/g,'颉')
        .replace(/頤/g,'颐')
        .replace(/頦/g,'颏')
        .replace(/頫/g,'𫖯')
        .replace(/頭/g,'头')
        .replace(/頮/g,'颒')
        .replace(/頰/g,'颊')
        .replace(/頲/g,'颋')
        .replace(/頴/g,'颕')
        .replace(/頵/g,'𫖳')
        .replace(/頷/g,'颔')
        .replace(/頸/g,'颈')
        .replace(/頹/g,'颓')
        .replace(/頻/g,'频')
        .replace(/頼/g,'赖')
        .replace(/頽/g,'颓')
        .replace(/顃/g,'𩖖')
        .replace(/顆/g,'颗')
        .replace(/顇/g,'悴')
        .replace(/顋/g,'腮')
        .replace(/題/g,'题')
        .replace(/額/g,'额')
        .replace(/顎/g,'颚')
        .replace(/顏/g,'颜')
        .replace(/顒/g,'颙')
        .replace(/顓/g,'颛')
        .replace(/顔/g,'颜')
        .replace(/顗/g,'𫖮')
        .replace(/願/g,'愿')
        .replace(/顙/g,'颡')
        .replace(/顛/g,'颠')
        .replace(/類/g,'类')
        .replace(/顢/g,'颟')
        .replace(/顥/g,'颢')
        .replace(/顦/g,'憔')
        .replace(/顧/g,'顾')
        .replace(/顫/g,'颤')
        .replace(/顬/g,'颥')
        .replace(/顯/g,'显')
        .replace(/顰/g,'颦')
        .replace(/顱/g,'颅')
        .replace(/顳/g,'颞')
        .replace(/顴/g,'颧')
        .replace(/風/g,'风')
        .replace(/颭/g,'飐')
        .replace(/颮/g,'飑')
        .replace(/颯/g,'飒')
        .replace(/颰/g,'𩙥')
        .replace(/颱/g,'台')
        .replace(/颳/g,'刮')
        .replace(/颶/g,'飓')
        .replace(/颷/g,'𩙪')
        .replace(/颸/g,'飔')
        .replace(/颺/g,'飏')
        .replace(/颻/g,'飖')
        .replace(/颼/g,'飕')
        .replace(/颾/g,'𩙫')
        .replace(/飀/g,'飗')
        .replace(/飃/g,'飘')
        .replace(/飄/g,'飘')
        .replace(/飆/g,'飙')
        .replace(/飈/g,'飚')
        .replace(/飛/g,'飞')
        .replace(/飜/g,'翻')
        .replace(/飠/g,'饣')
        .replace(/飢/g,'饥')
        .replace(/飣/g,'饤')
        .replace(/飤/g,'饲')
        .replace(/飥/g,'饦')
        .replace(/飩/g,'饨')
        .replace(/飪/g,'饪')
        .replace(/飫/g,'饫')
        .replace(/飭/g,'饬')
        .replace(/飯/g,'饭')
        .replace(/飱/g,'飧')
        .replace(/飲/g,'饮')
        .replace(/飴/g,'饴')
        .replace(/飼/g,'饲')
        .replace(/飽/g,'饱')
        .replace(/飾/g,'饰')
        .replace(/飿/g,'饳')
        .replace(/餁/g,'饪')
        .replace(/餃/g,'饺')
        .replace(/餄/g,'饸')
        .replace(/餅/g,'饼')
        .replace(/餈/g,'糍')
        .replace(/餉/g,'饷')
        .replace(/養/g,'养')
        .replace(/餌/g,'饵')
        .replace(/餎/g,'饹')
        .replace(/餏/g,'饻')
        .replace(/餑/g,'饽')
        .replace(/餒/g,'馁')
        .replace(/餓/g,'饿')
        .replace(/餔/g,'𫗦')
        .replace(/餕/g,'馂')
        .replace(/餖/g,'饾')
        .replace(/餗/g,'𫗧')
        .replace(/餘/g,'馀')
        .replace(/餚/g,'肴')
        .replace(/餛/g,'馄')
        .replace(/餜/g,'馃')
        .replace(/餞/g,'饯')
        .replace(/餡/g,'馅')
        .replace(/餦/g,'𫗠')
        .replace(/館/g,'馆')
        .replace(/餭/g,'𫗮')
        .replace(/餱/g,'糇')
        .replace(/餳/g,'饧')
        .replace(/餵/g,'喂')
        .replace(/餶/g,'馉')
        .replace(/餷/g,'馇')
        .replace(/餸/g,'𩠌')
        .replace(/餹/g,'糖')
        .replace(/餺/g,'馎')
        .replace(/餻/g,'糕')
        .replace(/餼/g,'饩')
        .replace(/餽/g,'馈')
        .replace(/餾/g,'馏')
        .replace(/餿/g,'馊')
        .replace(/饁/g,'馌')
        .replace(/饃/g,'馍')
        .replace(/饅/g,'馒')
        .replace(/饈/g,'馐')
        .replace(/饉/g,'馑')
        .replace(/饊/g,'馓')
        .replace(/饋/g,'馈')
        .replace(/饌/g,'馔')
        .replace(/饍/g,'膳')
        .replace(/饑/g,'饥')
        .replace(/饒/g,'饶')
        .replace(/饗/g,'飨')
        .replace(/饘/g,'𫗴')
        .replace(/饜/g,'餍')
        .replace(/饝/g,'馍')
        .replace(/饞/g,'馋')
        .replace(/饢/g,'馕')
        .replace(/馬/g,'马')
        .replace(/馭/g,'驭')
        .replace(/馮/g,'冯')
        .replace(/馱/g,'驮')
        .replace(/馳/g,'驰')
        .replace(/馴/g,'驯')
        .replace(/馹/g,'驲')
        .replace(/馼/g,'𫘜')
        .replace(/駁/g,'驳')
        .replace(/駃/g,'𫘝')
        .replace(/駈/g,'驱')
        .replace(/駉/g,'𬳶')
        .replace(/駎/g,'𩧨')
        .replace(/駐/g,'驻')
        .replace(/駑/g,'驽')
        .replace(/駒/g,'驹')
        .replace(/駓/g,'𬳵')
        .replace(/駔/g,'驵')
        .replace(/駕/g,'驾')
        .replace(/駘/g,'骀')
        .replace(/駙/g,'驸')
        .replace(/駚/g,'𩧫')
        .replace(/駛/g,'驶')
        .replace(/駝/g,'驼')
        .replace(/駟/g,'驷')
        .replace(/駡/g,'骂')
        .replace(/駢/g,'骈')
        .replace(/駧/g,'𩧲')
        .replace(/駩/g,'𩧴')
        .replace(/駪/g,'𬳽')
        .replace(/駭/g,'骇')
        .replace(/駰/g,'骃')
        .replace(/駱/g,'骆')
        .replace(/駶/g,'𩧺')
        .replace(/駸/g,'骎')
        .replace(/駻/g,'𫘣')
        .replace(/駼/g,'𬳿')
        .replace(/駿/g,'骏')
        .replace(/騁/g,'骋')
        .replace(/騂/g,'骍')
        .replace(/騃/g,'𫘤')
        .replace(/騄/g,'𫘧')
        .replace(/騅/g,'骓')
        .replace(/騊/g,'𫘦')
        .replace(/騌/g,'骔')
        .replace(/騍/g,'骒')
        .replace(/騎/g,'骑')
        .replace(/騏/g,'骐')
        .replace(/騐/g,'验')
        .replace(/騑/g,'𬴂')
        .replace(/騔/g,'𩨀')
        .replace(/騖/g,'骛')
        .replace(/騙/g,'骗')
        .replace(/騚/g,'𩨊')
        .replace(/騝/g,'𩨃')
        .replace(/騞/g,'𬴃')
        .replace(/騟/g,'𩨈')
        .replace(/騠/g,'𫘨')
        .replace(/騣/g,'鬃')
        .replace(/騤/g,'骙')
        .replace(/騧/g,'䯄')
        .replace(/騪/g,'𩨄')
        .replace(/騫/g,'骞')
        .replace(/騭/g,'骘')
        .replace(/騮/g,'骝')
        .replace(/騰/g,'腾')
        .replace(/騱/g,'𫘬')
        .replace(/騵/g,'𫘪')
        .replace(/騶/g,'驺')
        .replace(/騷/g,'骚')
        .replace(/騸/g,'骟')
        .replace(/騾/g,'骡')
        .replace(/驀/g,'蓦')
        .replace(/驁/g,'骜')
        .replace(/驂/g,'骖')
        .replace(/驃/g,'骠')
        .replace(/驄/g,'骢')
        .replace(/驅/g,'驱')
        .replace(/驊/g,'骅')
        .replace(/驋/g,'𩧯')
        .replace(/驌/g,'骕')
        .replace(/驍/g,'骁')
        .replace(/驎/g,'𬴊')
        .replace(/驏/g,'骣')
        .replace(/驕/g,'骄')
        .replace(/驗/g,'验')
        .replace(/驘/g,'骡')
        .replace(/驚/g,'惊')
        .replace(/驛/g,'驿')
        .replace(/驟/g,'骤')
        .replace(/驢/g,'驴')
        .replace(/驤/g,'骧')
        .replace(/驥/g,'骥')
        .replace(/驦/g,'骦')
        .replace(/驪/g,'骊')
        .replace(/驫/g,'骉')
        .replace(/骯/g,'肮')
        .replace(/骽/g,'腿')
        .replace(/骾/g,'鲠')
        .replace(/髈/g,'膀')
        .replace(/髏/g,'髅')
        .replace(/髒/g,'脏')
        .replace(/體/g,'体')
        .replace(/髕/g,'髌')
        .replace(/髖/g,'髋')
        .replace(/髥/g,'髯')
        .replace(/髮/g,'发')
        .replace(/鬀/g,'剃')
        .replace(/鬆/g,'松')
        .replace(/鬉/g,'鬃')
        .replace(/鬍/g,'胡')
        .replace(/鬚/g,'须')
        .replace(/鬢/g,'鬓')
        .replace(/鬥/g,'斗')
        .replace(/鬦/g,'斗')
        .replace(/鬧/g,'闹')
        .replace(/鬨/g,'哄')
        .replace(/鬩/g,'阋')
        .replace(/鬪/g,'斗')
        .replace(/鬮/g,'阄')
        .replace(/鬰/g,'郁')
        .replace(/鬱/g,'郁')
        .replace(/鬹/g,'鬶')
        .replace(/魎/g,'魉')
        .replace(/魘/g,'魇')
        .replace(/魚/g,'鱼')
        .replace(/魛/g,'鱽')
        .replace(/魟/g,'𫚉')
        .replace(/魢/g,'鱾')
        .replace(/魥/g,'𩽹')
        .replace(/魨/g,'鲀')
        .replace(/魯/g,'鲁')
        .replace(/魴/g,'鲂')
        .replace(/魷/g,'鱿')
        .replace(/魺/g,'鲄')
        .replace(/鮀/g,'𬶍')
        .replace(/鮁/g,'鲅')
        .replace(/鮃/g,'鲆')
        .replace(/鮄/g,'𫚒')
        .replace(/鮆/g,'𫚖')
        .replace(/鮈/g,'𬶋')
        .replace(/鮊/g,'鲌')
        .replace(/鮋/g,'鲉')
        .replace(/鮍/g,'鲏')
        .replace(/鮎/g,'鲇')
        .replace(/鮐/g,'鲐')
        .replace(/鮑/g,'鲍')
        .replace(/鮒/g,'鲋')
        .replace(/鮓/g,'鲊')
        .replace(/鮚/g,'鲒')
        .replace(/鮜/g,'鲘')
        .replace(/鮝/g,'鲞')
        .replace(/鮞/g,'鲕')
        .replace(/鮟/g,'𩽾')
        .replace(/鮠/g,'𬶏')
        .replace(/鮡/g,'𬶐')
        .replace(/鮣/g,'䲟')
        .replace(/鮦/g,'鲖')
        .replace(/鮪/g,'鲔')
        .replace(/鮫/g,'鲛')
        .replace(/鮭/g,'鲑')
        .replace(/鮮/g,'鲜')
        .replace(/鮰/g,'𫚔')
        .replace(/鮳/g,'鲓')
        .replace(/鮶/g,'鲪')
        .replace(/鮸/g,'𩾃')
        .replace(/鮺/g,'鲝')
        .replace(/鯀/g,'鲧')
        .replace(/鯁/g,'鲠')
        .replace(/鯄/g,'𩾁')
        .replace(/鯆/g,'𫚙')
        .replace(/鯇/g,'鲩')
        .replace(/鯉/g,'鲤')
        .replace(/鯊/g,'鲨')
        .replace(/鯒/g,'鲬')
        .replace(/鯔/g,'鲻')
        .replace(/鯕/g,'鲯')
        .replace(/鯖/g,'鲭')
        .replace(/鯗/g,'鲞')
        .replace(/鯛/g,'鲷')
        .replace(/鯝/g,'鲴')
        .replace(/鯡/g,'鲱')
        .replace(/鯢/g,'鲵')
        .replace(/鯤/g,'鲲')
        .replace(/鯧/g,'鲳')
        .replace(/鯨/g,'鲸')
        .replace(/鯪/g,'鲮')
        .replace(/鯫/g,'鲰')
        .replace(/鯰/g,'鲶')
        .replace(/鯱/g,'𩾇')
        .replace(/鯴/g,'鲺')
        .replace(/鯶/g,'𩽼')
        .replace(/鯷/g,'鳀')
        .replace(/鯻/g,'𬶟')
        .replace(/鯽/g,'鲫')
        .replace(/鯿/g,'鳊')
        .replace(/鰁/g,'鳈')
        .replace(/鰂/g,'鲗')
        .replace(/鰃/g,'鳂')
        .replace(/鰆/g,'䲠')
        .replace(/鰈/g,'鲽')
        .replace(/鰉/g,'鳇')
        .replace(/鰊/g,'𬶠')
        .replace(/鰌/g,'䲡')
        .replace(/鰍/g,'鳅')
        .replace(/鰏/g,'鲾')
        .replace(/鰐/g,'鳄')
        .replace(/鰒/g,'鳆')
        .replace(/鰓/g,'鳃')
        .replace(/鰛/g,'鳁')
        .replace(/鰜/g,'鳒')
        .replace(/鰟/g,'鳑')
        .replace(/鰠/g,'鳋')
        .replace(/鰣/g,'鲥')
        .replace(/鰤/g,'𫚕')
        .replace(/鰥/g,'鳏')
        .replace(/鰧/g,'䲢')
        .replace(/鰨/g,'鳎')
        .replace(/鰩/g,'鳐')
        .replace(/鰭/g,'鳍')
        .replace(/鰮/g,'鳁')
        .replace(/鰱/g,'鲢')
        .replace(/鰲/g,'鳌')
        .replace(/鰳/g,'鳓')
        .replace(/鰵/g,'鳘')
        .replace(/鰶/g,'𬶭')
        .replace(/鰷/g,'鲦')
        .replace(/鰹/g,'鲣')
        .replace(/鰺/g,'鲹')
        .replace(/鰻/g,'鳗')
        .replace(/鰼/g,'鳛')
        .replace(/鰾/g,'鳔')
        .replace(/鱀/g,'𬶨')
        .replace(/鱂/g,'鳉')
        .replace(/鱅/g,'鳙')
        .replace(/鱇/g,'𩾌')
        .replace(/鱈/g,'鳕')
        .replace(/鱉/g,'鳖')
        .replace(/鱒/g,'鳟')
        .replace(/鱔/g,'鳝')
        .replace(/鱖/g,'鳜')
        .replace(/鱗/g,'鳞')
        .replace(/鱘/g,'鲟')
        .replace(/鱚/g,'𬶮')
        .replace(/鱝/g,'鲼')
        .replace(/鱟/g,'鲎')
        .replace(/鱠/g,'鲙')
        .replace(/鱣/g,'鳣')
        .replace(/鱤/g,'鳡')
        .replace(/鱧/g,'鳢')
        .replace(/鱨/g,'鲿')
        .replace(/鱭/g,'鲚')
        .replace(/鱮/g,'𫚈')
        .replace(/鱯/g,'鳠')
        .replace(/鱷/g,'鳄')
        .replace(/鱸/g,'鲈')
        .replace(/鱺/g,'鲡')
        .replace(/鳥/g,'鸟')
        .replace(/鳧/g,'凫')
        .replace(/鳩/g,'鸠')
        .replace(/鳬/g,'凫')
        .replace(/鳲/g,'鸤')
        .replace(/鳳/g,'凤')
        .replace(/鳴/g,'鸣')
        .replace(/鳶/g,'鸢')
        .replace(/鳷/g,'𫛛')
        .replace(/鳼/g,'𪉃')
        .replace(/鳾/g,'䴓')
        .replace(/鴃/g,'𫛞')
        .replace(/鴆/g,'鸩')
        .replace(/鴇/g,'鸨')
        .replace(/鴈/g,'雁')
        .replace(/鴉/g,'鸦')
        .replace(/鴒/g,'鸰')
        .replace(/鴕/g,'鸵')
        .replace(/鴗/g,'𫁡')
        .replace(/鴛/g,'鸳')
        .replace(/鴜/g,'𪉈')
        .replace(/鴝/g,'鸲')
        .replace(/鴞/g,'鸮')
        .replace(/鴟/g,'鸱')
        .replace(/鴣/g,'鸪')
        .replace(/鴦/g,'鸯')
        .replace(/鴨/g,'鸭')
        .replace(/鴯/g,'鸸')
        .replace(/鴰/g,'鸹')
        .replace(/鴲/g,'𪉆')
        .replace(/鴴/g,'鸻')
        .replace(/鴷/g,'䴕')
        .replace(/鴻/g,'鸿')
        .replace(/鴿/g,'鸽')
        .replace(/鵁/g,'䴔')
        .replace(/鵂/g,'鸺')
        .replace(/鵃/g,'鸼')
        .replace(/鵏/g,'𬷕')
        .replace(/鵐/g,'鹀')
        .replace(/鵑/g,'鹃')
        .replace(/鵒/g,'鹆')
        .replace(/鵓/g,'鹁')
        .replace(/鵚/g,'𪉍')
        .replace(/鵜/g,'鹈')
        .replace(/鵝/g,'鹅')
        .replace(/鵞/g,'鹅')
        .replace(/鵟/g,'𫛭')
        .replace(/鵠/g,'鹄')
        .replace(/鵡/g,'鹉')
        .replace(/鵪/g,'鹌')
        .replace(/鵬/g,'鹏')
        .replace(/鵮/g,'鹐')
        .replace(/鵯/g,'鹎')
        .replace(/鵰/g,'雕')
        .replace(/鵲/g,'鹊')
        .replace(/鵶/g,'鸦')
        .replace(/鵷/g,'鹓')
        .replace(/鵾/g,'鹍')
        .replace(/鶄/g,'䴖')
        .replace(/鶇/g,'鸫')
        .replace(/鶉/g,'鹑')
        .replace(/鶊/g,'鹒')
        .replace(/鶒/g,'𫛶')
        .replace(/鶓/g,'鹋')
        .replace(/鶖/g,'鹙')
        .replace(/鶗/g,'𫛸')
        .replace(/鶘/g,'鹕')
        .replace(/鶚/g,'鹗')
        .replace(/鶠/g,'𬸘')
        .replace(/鶡/g,'鹖')
        .replace(/鶥/g,'鹛')
        .replace(/鶩/g,'鹜')
        .replace(/鶪/g,'䴗')
        .replace(/鶬/g,'鸧')
        .replace(/鶯/g,'莺')
        .replace(/鶱/g,'𬸣')
        .replace(/鶲/g,'鹟')
        .replace(/鶴/g,'鹤')
        .replace(/鶹/g,'鹠')
        .replace(/鶺/g,'鹡')
        .replace(/鶻/g,'鹘')
        .replace(/鶼/g,'鹣')
        .replace(/鶿/g,'鹚')
        .replace(/鷀/g,'鹚')
        .replace(/鷁/g,'鹢')
        .replace(/鷂/g,'鹞')
        .replace(/鷄/g,'鸡')
        .replace(/鷈/g,'䴘')
        .replace(/鷊/g,'鹝')
        .replace(/鷓/g,'鹧')
        .replace(/鷔/g,'𪉑')
        .replace(/鷖/g,'鹥')
        .replace(/鷗/g,'鸥')
        .replace(/鷙/g,'鸷')
        .replace(/鷚/g,'鹨')
        .replace(/鷟/g,'𬸦')
        .replace(/鷥/g,'鸶')
        .replace(/鷦/g,'鹪')
        .replace(/鷨/g,'𪉊')
        .replace(/鷫/g,'鹔')
        .replace(/鷭/g,'𬸪')
        .replace(/鷯/g,'鹩')
        .replace(/鷰/g,'燕')
        .replace(/鷲/g,'鹫')
        .replace(/鷳/g,'鹇')
        .replace(/鷴/g,'鹇')
        .replace(/鷸/g,'鹬')
        .replace(/鷹/g,'鹰')
        .replace(/鷺/g,'鹭')
        .replace(/鷽/g,'鸴')
        .replace(/鷿/g,'䴙')
        .replace(/鸂/g,'㶉')
        .replace(/鸇/g,'鹯')
        .replace(/鸋/g,'𫛢')
        .replace(/鸌/g,'鹱')
        .replace(/鸎/g,'莺')
        .replace(/鸏/g,'鹲')
        .replace(/鸑/g,'𬸚')
        .replace(/鸕/g,'鸬')
        .replace(/鸘/g,'鹴')
        .replace(/鸚/g,'鹦')
        .replace(/鸛/g,'鹳')
        .replace(/鸝/g,'鹂')
        .replace(/鸞/g,'鸾')
        .replace(/鹵/g,'卤')
        .replace(/鹹/g,'咸')
        .replace(/鹺/g,'鹾')
        .replace(/鹻/g,'碱')
        .replace(/鹼/g,'碱')
        .replace(/鹽/g,'盐')
        .replace(/麗/g,'丽')
        .replace(/麥/g,'麦')
        .replace(/麨/g,'𪎊')
        .replace(/麩/g,'麸')
        .replace(/麪/g,'面')
        .replace(/麫/g,'面')
        .replace(/麯/g,'曲')
        .replace(/麲/g,'𪎉')
        .replace(/麳/g,'𪎌')
        .replace(/麴/g,'麹')
        .replace(/麵/g,'面')
        .replace(/麼/g,'么')
        .replace(/麽/g,'么')
        .replace(/黃/g,'黄')
        .replace(/黌/g,'黉')
        .replace(/點/g,'点')
        .replace(/黨/g,'党')
        .replace(/黲/g,'黪')
        .replace(/黴/g,'霉')
        .replace(/黶/g,'黡')
        .replace(/黷/g,'黩')
        .replace(/黽/g,'黾')
        .replace(/黿/g,'鼋')
        .replace(/鼃/g,'蛙')
        .replace(/鼇/g,'鳌')
        .replace(/鼈/g,'鳖')
        .replace(/鼉/g,'鼍')
        .replace(/鼕/g,'咚')
        .replace(/鼴/g,'鼹')
        .replace(/齊/g,'齐')
        .replace(/齋/g,'斋')
        .replace(/齎/g,'赍')
        .replace(/齏/g,'齑')
        .replace(/齒/g,'齿')
        .replace(/齔/g,'龀')
        .replace(/齕/g,'龁')
        .replace(/齗/g,'龂')
        .replace(/齘/g,'𬹼')
        .replace(/齙/g,'龅')
        .replace(/齜/g,'龇')
        .replace(/齟/g,'龃')
        .replace(/齠/g,'龆')
        .replace(/齡/g,'龄')
        .replace(/齣/g,'出')
        .replace(/齦/g,'龈')
        .replace(/齧/g,'啮')
        .replace(/齩/g,'咬')
        .replace(/齪/g,'龊')
        .replace(/齬/g,'龉')
        .replace(/齮/g,'𬺈')
        .replace(/齯/g,'𫠜')
        .replace(/齲/g,'龋')
        .replace(/齶/g,'腭')
        .replace(/齷/g,'龌')
        .replace(/齼/g,'𬺓')
        .replace(/龍/g,'龙')
        .replace(/龎/g,'厐')
        .replace(/龐/g,'庞')
        .replace(/龑/g,'䶮')
        .replace(/龔/g,'龚')
        .replace(/龕/g,'龛')
        .replace(/龜/g,'龟')
        .replace(/龭/g,'𩨎')
        .replace(/龯/g,'𨱆')
        .replace(/鿁/g,'䜤')
        .replace(/鿐/g,'䲤')
        .replace(/鿓/g,'鿒')
        .replace(/𠌥/g,'𠆿')
        .replace(/𠏢/g,'𠉗')
        .replace(/𠕂/g,'再')
        .replace(/𠕅/g,'再')
        .replace(/𠞆/g,'𠛆')
        .replace(/𠞰/g,'剿')
        .replace(/𠠎/g,'𠚳')
        .replace(/𡄔/g,'𠴢')
        .replace(/𡄣/g,'𠵸')
        .replace(/𡅏/g,'𠲥')
        .replace(/𡑍/g,'𫭼')
        .replace(/𡑭/g,'𡋗')
        .replace(/𡓾/g,'𡋀')
        .replace(/𡚁/g,'弊')
        .replace(/𡞵/g,'㛟')
        .replace(/𡠹/g,'㛿')
        .replace(/𡢃/g,'㛠')
        .replace(/𡨥/g,'寇')
        .replace(/𡮉/g,'𡭜')
        .replace(/𡮣/g,'𡭬')
        .replace(/𡻕/g,'岁')
        .replace(/𡾱/g,'㟜')
        .replace(/𢣚/g,'𢘝')
        .replace(/𢣭/g,'𢘞')
        .replace(/𢶫/g,'𢫞')
        .replace(/𢷮/g,'𢫊')
        .replace(/𢹿/g,'𢬦')
        .replace(/𣙎/g,'㭣')
        .replace(/𣙜/g,'榷')
        .replace(/𣝕/g,'𣘷')
        .replace(/𣞻/g,'𣘓')
        .replace(/𣠲/g,'𣑶')
        .replace(/𣯴/g,'𣭤')
        .replace(/𣾷/g,'㳢')
        .replace(/𣿉/g,'𣶫')
        .replace(/𤁣/g,'𣺽')
        .replace(/𤋮/g,'熙')
        .replace(/𤒎/g,'𤊀')
        .replace(/𤨏/g,'琐')
        .replace(/𤪺/g,'㻘')
        .replace(/𤫩/g,'㻏')
        .replace(/𤱈/g,'亩')
        .replace(/𤳸/g,'𤳄')
        .replace(/𤸫/g,'𤶧')
        .replace(/𤺥/g,'瘩')
        .replace(/𥌃/g,'𥅘')
        .replace(/𥕥/g,'𥐰')
        .replace(/𥖅/g,'𥐯')
        .replace(/𥗽/g,'𬒗')
        .replace(/𥢢/g,'䅪')
        .replace(/𥨐/g,'𥧂')
        .replace(/𥵃/g,'𥱔')
        .replace(/𥵊/g,'𥭉')
        .replace(/𥸠/g,'𥮋')
        .replace(/𥼽/g,'𥹥')
        .replace(/𥽖/g,'𥺇')
        .replace(/𥿊/g,'𦈈')
        .replace(/𦂅/g,'𦈒')
        .replace(/𦃄/g,'𦈗')
        .replace(/𦊱/g,'挂')
        .replace(/𦍑/g,'羌')
        .replace(/𦕈/g,'眇')
        .replace(/𦢈/g,'𣍨')
        .replace(/𦣎/g,'𦟗')
        .replace(/𦪽/g,'𦨩')
        .replace(/𦵏/g,'葬')
        .replace(/𧔥/g,'𧒭')
        .replace(/𧜗/g,'䘞')
        .replace(/𧜵/g,'䙊')
        .replace(/𧝞/g,'䘛')
        .replace(/𧩙/g,'䜥')
        .replace(/𧳟/g,'𧳕')
        .replace(/𧵳/g,'䞌')
        .replace(/𧶔/g,'𧹓')
        .replace(/𧶧/g,'䞎')
        .replace(/𨄣/g,'𨀱')
        .replace(/𨅍/g,'𨁴')
        .replace(/𨇁/g,'𧿈')
        .replace(/𨇞/g,'𨅫')
        .replace(/𨈊/g,'𨂺')
        .replace(/𨈌/g,'𨄄')
        .replace(/𨊰/g,'䢀')
        .replace(/𨊸/g,'䢁')
        .replace(/𨊻/g,'𨐆')
        .replace(/𨋢/g,'䢂')
        .replace(/𨎮/g,'𨐉')
        .replace(/𨏠/g,'𨐇')
        .replace(/𨏥/g,'𨐊')
        .replace(/𨤻/g,'𨤰')
        .replace(/𨥛/g,'𨱀')
        .replace(/𨦫/g,'䦀')
        .replace(/𨧀/g,'𬭊')
        .replace(/𨧜/g,'䦁')
        .replace(/𨧱/g,'𨱊')
        .replace(/𨨏/g,'𬭛')
        .replace(/𨫒/g,'𨱐')
        .replace(/𨭆/g,'𬭶')
        .replace(/𨭎/g,'𬭳')
        .replace(/𨮂/g,'𨱕')
        .replace(/𨯅/g,'䥿')
        .replace(/𨳑/g,'𨸁')
        .replace(/𨳕/g,'𨸀')
        .replace(/𨴗/g,'𨸅')
        .replace(/𨵩/g,'𨸆')
        .replace(/𨵸/g,'𨸇')
        .replace(/𨶀/g,'𨸉')
        .replace(/𨶏/g,'𨸊')
        .replace(/𨶮/g,'𨸌')
        .replace(/𨶲/g,'𨸋')
        .replace(/𨷲/g,'𨸎')
        .replace(/𨽏/g,'𨸘')
        .replace(/𨽻/g,'隶')
        .replace(/𩎢/g,'𩏾')
        .replace(/𩏪/g,'𩏽')
        .replace(/𩓐/g,'脖')
        .replace(/𩓣/g,'𩖕')
        .replace(/𩗀/g,'𩙦')
        .replace(/𩗗/g,'飓')
        .replace(/𩗡/g,'𩙧')
        .replace(/𩘀/g,'𩙩')
        .replace(/𩘝/g,'𩙭')
        .replace(/𩘹/g,'𩙨')
        .replace(/𩘺/g,'𩙬')
        .replace(/𩙈/g,'𩙰')
        .replace(/𩚛/g,'𩟿')
        .replace(/𩚥/g,'𩠀')
        .replace(/𩚵/g,'𩠁')
        .replace(/𩛆/g,'𩠂')
        .replace(/𩛩/g,'𩠃')
        .replace(/𩜇/g,'𩠉')
        .replace(/𩜦/g,'𩠆')
        .replace(/𩜵/g,'𩠊')
        .replace(/𩝔/g,'𩠋')
        .replace(/𩞄/g,'𩠎')
        .replace(/𩞦/g,'𩠏')
        .replace(/𩞯/g,'䭪')
        .replace(/𩟐/g,'𩠅')
        .replace(/𩠴/g,'𩠠')
        .replace(/𩡺/g,'𩧦')
        .replace(/𩢡/g,'𩧬')
        .replace(/𩢴/g,'𩧵')
        .replace(/𩢸/g,'𩧳')
        .replace(/𩢾/g,'𩧮')
        .replace(/𩣏/g,'𩧶')
        .replace(/𩣑/g,'䯃')
        .replace(/𩣵/g,'𩧻')
        .replace(/𩣺/g,'𩧼')
        .replace(/𩤊/g,'𩧩')
        .replace(/𩤙/g,'𩨆')
        .replace(/𩤲/g,'𩨉')
        .replace(/𩤸/g,'𩨅')
        .replace(/𩥄/g,'𩨋')
        .replace(/𩥇/g,'𩨍')
        .replace(/𩥉/g,'𩧱')
        .replace(/𩥑/g,'𩨌')
        .replace(/𩧆/g,'𩨐')
        .replace(/𩭙/g,'𩬣')
        .replace(/𩯳/g,'𩯒')
        .replace(/𩰀/g,'𩬤')
        .replace(/𩳤/g,'𩲒')
        .replace(/𩵩/g,'𩽺')
        .replace(/𩵹/g,'𩽻')
        .replace(/𩶘/g,'䲞')
        .replace(/𩶰/g,'𩽿')
        .replace(/𩶱/g,'𩽽')
        .replace(/𩷰/g,'𩾄')
        .replace(/𩸃/g,'𩾅')
        .replace(/𩸦/g,'𩾆')
        .replace(/𩽇/g,'𩾎')
        .replace(/𩿪/g,'𪉄')
        .replace(/𪀦/g,'𪉅')
        .replace(/𪀾/g,'𪉋')
        .replace(/𪁈/g,'𪉉')
        .replace(/𪁖/g,'𪉌')
        .replace(/𪂆/g,'𪉎')
        .replace(/𪃍/g,'𪉐')
        .replace(/𪃏/g,'𪉏')
        .replace(/𪄆/g,'𪉔')
        .replace(/𪄕/g,'𪉒')
        .replace(/𪇳/g,'𪉕')
        .replace(/𪈼/g,'𪉓')
        .replace(/𪋿/g,'𪎍')
        .replace(/𪔵/g,'𪔭')
        .replace(/𪘀/g,'𪚏')
        .replace(/𪘯/g,'𪚐')
        .replace(/陞/g,'升');
        if (needCheckFlag === true) {
            needCheckFlag = false;
            setTimeout(async () => {
                disable(wpSave.attr("disabled", "disabled").val("正在保存......"));
                for (let i = 1; i <= 4; i++) {
                    try {
                        const result = await api.post({
                            action: "query",
                            prop: "revisions",
                            rvprop: "ids",
                            rvlimit: 1,
                            titles: wgPageName,
                        });
                        const pageid = Object.keys(result.query.pages)[0];
                        if (pageid > 0 && result.query.pages[pageid].revisions[0].revid > wgCurRevisionId) {
                            wpSave.val("提交失败,存在编辑冲突!");
                            $("body").append(`<div style="background: #3366CC; color: white; text-align: center; padding: .5rem; position: fixed; top: 0; left: 0; right: 0; z-index: 9999;"><p>本页面已被他人更改。请复制您的编辑到剪贴板,然后刷新页面,重新开始编辑,以避免编辑冲突。</p><p><span id="copyCurrentRawCode" class="mw-ui-button">复制当前编辑内容</span> <span id="showNewestRevisionDiff" class="mw-ui-button">查看最新版本差异</span> <span id="refreshPage" class="mw-ui-button mw-ui-destructive">刷新页面</span></p></div>`);
                            const pre = $("<pre/>", {
                                css: {
                                    position: "absolute",
                                    left: "-99999px",
                                    "z-index": "-99999",
                                }
                            });
                            const textarea = $("#wpTextbox1");
                            $("#copyCurrentRawCode").on("click", async () => {
                                await mw.loader.using('mediawiki.notification');
                                $("#mw-notification-area").css({
                                    position: "fixed",
                                    top: 0,
                                }).appendTo("body");
                                if ($(".ace_editor").length > 0) {
                                    mw.notify("当前已开启代码编辑器,无法获取真实编辑内容,请手动复制。");
                                    return;
                                }
                                const selection = window.getSelection();
                                const rangeCount = selection.rangeCount;
                                let range;
                                if (rangeCount > 0) {
                                    range = selection.getRangeAt(0);
                                }
                                pre.text(textarea.val());
                                selection.selectAllChildren(pre[0]);
                                document.execCommand("copy");
                                window.setTimeout(function() {
                                    selection.removeAllRanges();
                                    if (rangeCount > 0) {
                                        selection.addRange(range);
                                    }
                                    pre.empty();
                                }, 0);
                                mw.notify("复制失败,请手动复制!!!");
                            });
                            $("#showNewestRevisionDiff").on("click", () => {
                                window.open(`${mw.config.get("wgServer")}${mw.config.get("wgScriptPath")}/index.php?diff=${result.query.pages[pageid].revisions[0].revid}`, "_blank").focus();
                            });
                            $("#refreshPage").on("click", () => {
                                if (confirm("您是否已经复制好您的编辑内容?\n刷新后原来的编辑内容将会被最新版本的源码替换!\n点击确定将会刷新页面!!")) {
                                    location.reload(false);
                                }
                            });
                            disable($("#wpPreview, #wpDiff").on("click", () => {
                                setTimeout(() => {
                                    alert(conflictAlert);
                                }, 1);
                                return false;
                            }).attr("title", conflictAlert));
                        } else {
                            wpSave.val("正在保存......");
                            editform.submit();
                        }
                        await mw.loader.using('mediawiki.notification');
                        return;
                    } catch (e) {
                        console.error("editConflict", e);
                        wpSave.val(i <= 3 ? `保存失败,正在重试(第${i}次)……` : "保存失败,请检查您的网络!");
                    }
                }
                setTimeout(() => {
                    needCheckFlag = true;
                    wpSave.removeAttr("disabled").val("保存更改").css("font-weight", "700").parent().addClass("oo-ui-widget-enabled oo-ui-flaggedElement-primary oo-ui-flaggedElement-progressive").removeClass("oo-ui-widget-disabled");
                }, 2000);
            }, 1);
        }
        return false;
    });
})();