403Webshell
Server IP : 172.67.199.98  /  Your IP : 162.159.115.10
Web Server : nginx/1.26.1
System : Linux ecc7dbd2befa 5.15.0-122-generic #132-Ubuntu SMP Thu Aug 29 13:45:52 UTC 2024 x86_64
User : www-data ( 82)
PHP Version : 7.2.34
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /var/www/html/wp-content/themes/transcargo/assets/js/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/html/wp-content/themes/transcargo/assets/js/jquery.tablesorter.min.js
!(function (e) {
    "function" == typeof define && define.amd ? define(["jquery"], e) : "object" == typeof module && "object" == typeof module.exports ? (module.exports = e(require("jquery"))) : e(jQuery);
})(function (e) {
    return (
        (function (A) {
            "use strict";
            var L = (A.tablesorter = {
                version: "2.31.3",
                parsers: [],
                widgets: [],
                defaults: {
                    theme: "default",
                    widthFixed: !1,
                    showProcessing: !1,
                    headerTemplate: "{content}",
                    onRenderTemplate: null,
                    onRenderHeader: null,
                    cancelSelection: !0,
                    tabIndex: !0,
                    dateFormat: "mmddyyyy",
                    sortMultiSortKey: "shiftKey",
                    sortResetKey: "ctrlKey",
                    usNumberFormat: !0,
                    delayInit: !1,
                    serverSideSorting: !1,
                    resort: !0,
                    headers: {},
                    ignoreCase: !0,
                    sortForce: null,
                    sortList: [],
                    sortAppend: null,
                    sortStable: !1,
                    sortInitialOrder: "asc",
                    sortLocaleCompare: !1,
                    sortReset: !1,
                    sortRestart: !1,
                    emptyTo: "bottom",
                    stringTo: "max",
                    duplicateSpan: !0,
                    textExtraction: "basic",
                    textAttribute: "data-text",
                    textSorter: null,
                    numberSorter: null,
                    initWidgets: !0,
                    widgetClass: "widget-{name}",
                    widgets: [],
                    widgetOptions: { zebra: ["even", "odd"] },
                    initialized: null,
                    tableClass: "",
                    cssAsc: "",
                    cssDesc: "",
                    cssNone: "",
                    cssHeader: "",
                    cssHeaderRow: "",
                    cssProcessing: "",
                    cssChildRow: "tablesorter-childRow",
                    cssInfoBlock: "tablesorter-infoOnly",
                    cssNoSort: "tablesorter-noSort",
                    cssIgnoreRow: "tablesorter-ignoreRow",
                    cssIcon: "tablesorter-icon",
                    cssIconNone: "",
                    cssIconAsc: "",
                    cssIconDesc: "",
                    cssIconDisabled: "",
                    pointerClick: "click",
                    pointerDown: "mousedown",
                    pointerUp: "mouseup",
                    selectorHeaders: "> thead th, > thead td",
                    selectorSort: "th, td",
                    selectorRemove: ".remove-me",
                    debug: !1,
                    headerList: [],
                    empties: {},
                    strings: {},
                    parsers: [],
                    globalize: 0,
                    imgAttr: 0,
                },
                css: {
                    table: "tablesorter",
                    cssHasChild: "tablesorter-hasChildRow",
                    childRow: "tablesorter-childRow",
                    colgroup: "tablesorter-colgroup",
                    header: "tablesorter-header",
                    headerRow: "tablesorter-headerRow",
                    headerIn: "tablesorter-header-inner",
                    icon: "tablesorter-icon",
                    processing: "tablesorter-processing",
                    sortAsc: "tablesorter-headerAsc",
                    sortDesc: "tablesorter-headerDesc",
                    sortNone: "tablesorter-headerUnSorted",
                },
                language: {
                    sortAsc: "Ascending sort applied, ",
                    sortDesc: "Descending sort applied, ",
                    sortNone: "No sort applied, ",
                    sortDisabled: "sorting is disabled",
                    nextAsc: "activate to apply an ascending sort",
                    nextDesc: "activate to apply a descending sort",
                    nextNone: "activate to remove the sort",
                },
                regex: {
                    templateContent: /\{content\}/g,
                    templateIcon: /\{icon\}/g,
                    templateName: /\{name\}/i,
                    spaces: /\s+/g,
                    nonWord: /\W/g,
                    formElements: /(input|select|button|textarea)/i,
                    chunk: /(^([+\-]?(?:\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?)?$|^0x[0-9a-f]+$|\d+)/gi,
                    chunks: /(^\\0|\\0$)/,
                    hex: /^0x[0-9a-f]+$/i,
                    comma: /,/g,
                    digitNonUS: /[\s|\.]/g,
                    digitNegativeTest: /^\s*\([.\d]+\)/,
                    digitNegativeReplace: /^\s*\(([.\d]+)\)/,
                    digitTest: /^[\-+(]?\d+[)]?$/,
                    digitReplace: /[,.'"\s]/g,
                },
                string: { max: 1, min: -1, emptymin: 1, emptymax: -1, zero: 0, none: 0, null: 0, top: !0, bottom: !1 },
                keyCodes: { enter: 13 },
                dates: {},
                instanceMethods: {},
                setup: function (t, r) {
                    if (t && t.tHead && 0 !== t.tBodies.length && !0 !== t.hasInitialized) {
                        var e,
                            o = "",
                            s = A(t),
                            a = A.metadata;
                        (t.hasInitialized = !1),
                            (t.isProcessing = !0),
                            (t.config = r),
                            A.data(t, "tablesorter", r),
                        L.debug(r, "core") && (console[console.group ? "group" : "log"]("Initializing tablesorter v" + L.version), A.data(t, "startoveralltimer", new Date())),
                            (r.supportsDataObject = (((e = A.fn.jquery.split("."))[0] = parseInt(e[0], 10)), 1 < e[0] || (1 === e[0] && 4 <= parseInt(e[1], 10)))),
                            (r.emptyTo = r.emptyTo.toLowerCase()),
                            (r.stringTo = r.stringTo.toLowerCase()),
                            (r.last = { sortList: [], clickedIndex: -1 }),
                        /tablesorter\-/.test(s.attr("class")) || (o = "" !== r.theme ? " tablesorter-" + r.theme : ""),
                            r.namespace ? (r.namespace = "." + r.namespace.replace(L.regex.nonWord, "")) : (r.namespace = ".tablesorter" + Math.random().toString(16).slice(2)),
                            (r.table = t),
                            (r.$table = s.addClass(L.css.table + " " + r.tableClass + o + " " + r.namespace.slice(1)).attr("role", "grid")),
                            (r.$headers = s.find(r.selectorHeaders)),
                            r.$table.children().children("tr").attr("role", "row"),
                            (r.$tbodies = s.children("tbody:not(." + r.cssInfoBlock + ")").attr({ "aria-live": "polite", "aria-relevant": "all" })),
                        r.$table.children("caption").length && ((o = r.$table.children("caption")[0]).id || (o.id = r.namespace.slice(1) + "caption"), r.$table.attr("aria-labelledby", o.id)),
                            (r.widgetInit = {}),
                            (r.textExtraction = r.$table.attr("data-text-extraction") || r.textExtraction || "basic"),
                            L.buildHeaders(r),
                            L.fixColumnWidth(t),
                            L.addWidgetFromClass(t),
                            L.applyWidgetOptions(t),
                            L.setupParsers(r),
                            (r.totalRows = 0),
                        r.debug && L.validateOptions(r),
                        r.delayInit || L.buildCache(r),
                            L.bindEvents(t, r.$headers, !0),
                            L.bindMethods(r),
                            r.supportsDataObject && void 0 !== s.data().sortlist ? (r.sortList = s.data().sortlist) : a && s.metadata() && s.metadata().sortlist && (r.sortList = s.metadata().sortlist),
                            L.applyWidget(t, !0),
                            0 < r.sortList.length ? ((r.last.sortList = r.sortList), L.sortOn(r, r.sortList, {}, !r.initWidgets)) : (L.setHeadersCss(r), r.initWidgets && L.applyWidget(t, !1)),
                        r.showProcessing &&
                        s.off("sortBegin" + r.namespace + " sortEnd" + r.namespace).on("sortBegin" + r.namespace + " sortEnd" + r.namespace, function (e) {
                            clearTimeout(r.timerProcessing),
                                L.isProcessing(t),
                            "sortBegin" === e.type &&
                            (r.timerProcessing = setTimeout(function () {
                                L.isProcessing(t, !0);
                            }, 500));
                        }),
                            (t.hasInitialized = !0),
                            (t.isProcessing = !1),
                        L.debug(r, "core") && (console.log("Overall initialization time:" + L.benchmark(A.data(t, "startoveralltimer"))), L.debug(r, "core") && console.groupEnd && console.groupEnd()),
                            s.triggerHandler("tablesorter-initialized", t),
                        "function" == typeof r.initialized && r.initialized(t);
                    } else L.debug(r, "core") && (t.hasInitialized ? console.warn("Stopping initialization. Tablesorter has already been initialized") : console.error("Stopping initialization! No table, thead or tbody", t));
                },
                bindMethods: function (r) {
                    var e = r.$table,
                        t = r.namespace,
                        o = "sortReset update updateRows updateAll updateHeaders addRows updateCell updateComplete sorton appendCache updateCache applyWidgetId applyWidgets refreshWidgets destroy mouseup mouseleave "
                            .split(" ")
                            .join(t + " ");
                    e.off(o.replace(L.regex.spaces, " "))
                        .on("sortReset" + t, function (e, t) {
                            e.stopPropagation(),
                                L.sortReset(this.config, function (e) {
                                    e.isApplyingWidgets
                                        ? setTimeout(function () {
                                            L.applyWidget(e, "", t);
                                        }, 100)
                                        : L.applyWidget(e, "", t);
                                });
                        })
                        .on("updateAll" + t, function (e, t, r) {
                            e.stopPropagation(), L.updateAll(this.config, t, r);
                        })
                        .on("update" + t + " updateRows" + t, function (e, t, r) {
                            e.stopPropagation(), L.update(this.config, t, r);
                        })
                        .on("updateHeaders" + t, function (e, t) {
                            e.stopPropagation(), L.updateHeaders(this.config, t);
                        })
                        .on("updateCell" + t, function (e, t, r, o) {
                            e.stopPropagation(), L.updateCell(this.config, t, r, o);
                        })
                        .on("addRows" + t, function (e, t, r, o) {
                            e.stopPropagation(), L.addRows(this.config, t, r, o);
                        })
                        .on("updateComplete" + t, function () {
                            this.isUpdating = !1;
                        })
                        .on("sorton" + t, function (e, t, r, o) {
                            e.stopPropagation(), L.sortOn(this.config, t, r, o);
                        })
                        .on("appendCache" + t, function (e, t, r) {
                            e.stopPropagation(), L.appendCache(this.config, r), typeof t === "function" && t(this);
                        })
                        .on("updateCache" + t, function (e, t, r) {
                            e.stopPropagation(), L.updateCache(this.config, t, r);
                        })
                        .on("applyWidgetId" + t, function (e, t) {
                            e.stopPropagation(), L.applyWidgetId(this, t);
                        })
                        .on("applyWidgets" + t, function (e, t) {
                            e.stopPropagation(), L.applyWidget(this, !1, t);
                        })
                        .on("refreshWidgets" + t, function (e, t, r) {
                            e.stopPropagation(), L.refreshWidgets(this, t, r);
                        })
                        .on("removeWidget" + t, function (e, t, r) {
                            e.stopPropagation(), L.removeWidget(this, t, r);
                        })
                        .on("destroy" + t, function (e, t, r) {
                            e.stopPropagation(), L.destroy(this, t, r);
                        })
                        .on("resetToLoadState" + t, function (e) {
                            e.stopPropagation(), L.removeWidget(this, !0, !1);
                            var t = A.extend(!0, {}, r.originalSettings);
                            ((r = A.extend(!0, {}, L.defaults, t)).originalSettings = t), (this.hasInitialized = !1), L.setup(this, r);
                        });
                },
                bindEvents: function (e, t, r) {
                    var o,
                        i = (e = A(e)[0]).config,
                        s = i.namespace,
                        d = null;
                    !0 !== r && (t.addClass(s.slice(1) + "_extra_headers"), (o = L.getClosest(t, "table")).length && "TABLE" === o[0].nodeName && o[0] !== e && A(o[0]).addClass(s.slice(1) + "_extra_table")),
                        (o = (i.pointerDown + " " + i.pointerUp + " " + i.pointerClick + " sort keyup ")
                            .replace(L.regex.spaces, " ")
                            .split(" ")
                            .join(s + " ")),
                        t
                            .find(i.selectorSort)
                            .add(t.filter(i.selectorSort))
                            .off(o)
                            .on(o, function (e, t) {
                                var r,
                                    o,
                                    s,
                                    a = A(e.target),
                                    n = " " + e.type + " ";
                                if (
                                    !(
                                        (1 !== (e.which || e.button) && !n.match(" " + i.pointerClick + " | sort | keyup ")) ||
                                        (" keyup " === n && e.which !== L.keyCodes.enter) ||
                                        (n.match(" " + i.pointerClick + " ") && void 0 !== e.which) ||
                                        (n.match(" " + i.pointerUp + " ") && d !== e.target && !0 !== t)
                                    )
                                ) {
                                    if (n.match(" " + i.pointerDown + " ")) return (d = e.target), void ("1" === (s = a.jquery.split("."))[0] && s[1] < 4 && e.preventDefault());
                                    if (
                                        ((d = null),
                                            (r = L.getClosest(A(this), "." + L.css.header)),
                                        L.regex.formElements.test(e.target.nodeName) || a.hasClass(i.cssNoSort) || 0 < a.parents("." + i.cssNoSort).length || r.hasClass("sorter-false") || 0 < a.parents("button").length)
                                    )
                                        return !i.cancelSelection;
                                    i.delayInit && L.isEmptyObject(i.cache) && L.buildCache(i),
                                        (i.last.clickedIndex = r.attr("data-column") || r.index()),
                                    (o = i.$headerIndexed[i.last.clickedIndex][0]) && !o.sortDisabled && L.initSort(i, o, e);
                                }
                            }),
                    i.cancelSelection && t.attr("unselectable", "on").on("selectstart", !1).css({ "user-select": "none", MozUserSelect: "none" });
                },
                buildHeaders: function (d) {
                    var e, l, t, r;
                    for (
                        d.headerList = [],
                            d.headerContent = [],
                            d.sortVars = [],
                        L.debug(d, "core") && (t = new Date()),
                            d.columns = L.computeColumnIndex(d.$table.children("thead, tfoot").children("tr")),
                            l = d.cssIcon ? '<i class="' + (d.cssIcon === L.css.icon ? L.css.icon : d.cssIcon + " " + L.css.icon) + '"></i>' : "",
                            d.$headers = A(
                                A.map(d.$table.find(d.selectorHeaders), function (e, t) {
                                    var r,
                                        o,
                                        s,
                                        a,
                                        n,
                                        i = A(e);
                                    if (!L.getClosest(i, "tr").hasClass(d.cssIgnoreRow))
                                        return (
                                            /(th|td)/i.test(e.nodeName) || ((n = L.getClosest(i, "th, td")), i.attr("data-column", n.attr("data-column"))),
                                                (r = L.getColumnData(d.table, d.headers, t, !0)),
                                                (d.headerContent[t] = i.html()),
                                            "" === d.headerTemplate ||
                                            i.find("." + L.css.headerIn).length ||
                                            ((a = d.headerTemplate.replace(L.regex.templateContent, i.html()).replace(L.regex.templateIcon, i.find("." + L.css.icon).length ? "" : l)),
                                            d.onRenderTemplate && (o = d.onRenderTemplate.apply(i, [t, a])) && "string" == typeof o && (a = o),
                                                i.html('<div class="' + L.css.headerIn + '">' + a + "</div>")),
                                            d.onRenderHeader && d.onRenderHeader.apply(i, [t, d, d.$table]),
                                                (s = parseInt(i.attr("data-column"), 10)),
                                                (e.column = s),
                                                (n = L.getOrder(L.getData(i, r, "sortInitialOrder") || d.sortInitialOrder)),
                                                (d.sortVars[s] = { count: -1, order: n ? (d.sortReset ? [1, 0, 2] : [1, 0]) : d.sortReset ? [0, 1, 2] : [0, 1], lockedOrder: !1, sortedBy: "" }),
                                            void 0 !== (n = L.getData(i, r, "lockedOrder") || !1) && !1 !== n && ((d.sortVars[s].lockedOrder = !0), (d.sortVars[s].order = L.getOrder(n) ? [1, 1] : [0, 0])),
                                                (d.headerList[t] = e),
                                                i.addClass(L.css.header + " " + d.cssHeader),
                                                L.getClosest(i, "tr")
                                                    .addClass(L.css.headerRow + " " + d.cssHeaderRow)
                                                    .attr("role", "row"),
                                            d.tabIndex && i.attr("tabindex", 0),
                                                e
                                        );
                                })
                            ),
                            d.$headerIndexed = [],
                            r = 0;
                        r < d.columns;
                        r++
                    )
                        L.isEmptyObject(d.sortVars[r]) && (d.sortVars[r] = {}),
                            (e = d.$headers.filter('[data-column="' + r + '"]')),
                            (d.$headerIndexed[r] = e.length ? (e.not(".sorter-false").length ? e.not(".sorter-false").filter(":last") : e.filter(":last")) : A());
                    d.$table.find(d.selectorHeaders).attr({ scope: "col", role: "columnheader" }), L.updateHeader(d), L.debug(d, "core") && (console.log("Built headers:" + L.benchmark(t)), console.log(d.$headers));
                },
                addInstanceMethods: function (e) {
                    A.extend(L.instanceMethods, e);
                },
                setupParsers: function (e, t) {
                    var r,
                        o,
                        s,
                        a,
                        n,
                        i,
                        d,
                        l,
                        c,
                        g,
                        p,
                        u,
                        f,
                        h,
                        m = e.table,
                        b = 0,
                        y = L.debug(e, "core"),
                        w = {};
                    if (((e.$tbodies = e.$table.children("tbody:not(." + e.cssInfoBlock + ")")), 0 === (h = (f = void 0 === t ? e.$tbodies : t).length))) return y ? console.warn("Warning: *Empty table!* Not building a parser cache") : "";
                    for (y && ((u = new Date()), console[console.group ? "group" : "log"]("Detecting parsers for each column")), o = { extractors: [], parsers: [] }; b < h; ) {
                        if ((r = f[b].rows).length)
                            for (n = 0, a = e.columns, i = 0; i < a; i++) {
                                if (
                                    (d = e.$headerIndexed[n]) &&
                                    d.length &&
                                    ((l = L.getColumnData(m, e.headers, n)),
                                        (p = L.getParserById(L.getData(d, l, "extractor"))),
                                        (g = L.getParserById(L.getData(d, l, "sorter"))),
                                        (c = "false" === L.getData(d, l, "parser")),
                                        (e.empties[n] = (L.getData(d, l, "empty") || e.emptyTo || (e.emptyToBottom ? "bottom" : "top")).toLowerCase()),
                                        (e.strings[n] = (L.getData(d, l, "string") || e.stringTo || "max").toLowerCase()),
                                    c && (g = L.getParserById("no-parser")),
                                        (p = p || !1),
                                        (g = g || L.detectParserForColumn(e, r, -1, n)),
                                    y && (w["(" + n + ") " + d.text()] = { parser: g.id, extractor: p ? p.id : "none", string: e.strings[n], empty: e.empties[n] }),
                                        (o.parsers[n] = g),
                                        (o.extractors[n] = p),
                                    0 < (s = d[0].colSpan - 1))
                                )
                                    for (n += s, a += s; 0 < s + 1; ) (o.parsers[n - s] = g), (o.extractors[n - s] = p), s--;
                                n++;
                            }
                        b += o.parsers.length ? h : 1;
                    }
                    y && (L.isEmptyObject(w) ? console.warn("  No parsers detected!") : console[console.table ? "table" : "log"](w), console.log("Completed detecting parsers" + L.benchmark(u)), console.groupEnd && console.groupEnd()),
                        (e.parsers = o.parsers),
                        (e.extractors = o.extractors);
                },
                addParser: function (e) {
                    var t,
                        r = L.parsers.length,
                        o = !0;
                    for (t = 0; t < r; t++) L.parsers[t].id.toLowerCase() === e.id.toLowerCase() && (o = !1);
                    o && (L.parsers[L.parsers.length] = e);
                },
                getParserById: function (e) {
                    if ("false" == e) return !1;
                    var t,
                        r = L.parsers.length;
                    for (t = 0; t < r; t++) if (L.parsers[t].id.toLowerCase() === e.toString().toLowerCase()) return L.parsers[t];
                    return !1;
                },
                detectParserForColumn: function (e, t, r, o) {
                    for (var s, a, n, i = L.parsers.length, d = !1, l = "", c = L.debug(e, "core"), g = !0; "" === l && g; )
                        (n = t[++r]) && r < 50
                            ? n.className.indexOf(L.cssIgnoreRow) < 0 && ((d = t[r].cells[o]), (l = L.getElementText(e, d, o)), (a = A(d)), c && console.log("Checking if value was empty on row " + r + ", column: " + o + ': "' + l + '"'))
                            : (g = !1);
                    for (; 0 <= --i; ) if ((s = L.parsers[i]) && "text" !== s.id && s.is && s.is(l, e.table, d, a)) return s;
                    return L.getParserById("text");
                },
                getElementText: function (e, t, r) {
                    if (!t) return "";
                    var o,
                        s = e.textExtraction || "",
                        a = t.jquery ? t : A(t);
                    return "string" == typeof s
                        ? "basic" === s && void 0 !== (o = a.attr(e.textAttribute))
                            ? o.trim()
                            : (t.textContent || a.text()).trim()
                        : "function" == typeof s
                            ? (s(a[0], e.table, r)).trim()
                            : "function" == typeof (o = L.getColumnData(e.table, s, r))
                                ? (o(a[0], e.table, r)).trim()
                                : (a[0].textContent || a.text()).trim();
                },
                getParsedText: function (e, t, r, o) {
                    void 0 === o && (o = L.getElementText(e, t, r));
                    var s = "" + o,
                        a = e.parsers[r],
                        n = e.extractors[r];
                    return a && (n && "function" == typeof n.format && (o = n.format(o, e.table, t, r)), (s = "no-parser" === a.id ? "" : a.format("" + o, e.table, t, r)), e.ignoreCase && "string" == typeof s && (s = s.toLowerCase())), s;
                },
                buildCache: function (e, t, r) {
                    var o,
                        s,
                        a,
                        n,
                        i,
                        d,
                        l,
                        c,
                        g,
                        p,
                        u,
                        f,
                        h,
                        m,
                        b,
                        y,
                        w,
                        x,
                        v,
                        C,
                        $,
                        I,
                        D = e.table,
                        R = e.parsers,
                        T = L.debug(e, "core");
                    if (((e.$tbodies = e.$table.children("tbody:not(." + e.cssInfoBlock + ")")), (l = void 0 === r ? e.$tbodies : r), (e.cache = {}), (e.totalRows = 0), !R))
                        return T ? console.warn("Warning: *Empty table!* Not building a cache") : "";
                    for (T && (f = new Date()), e.showProcessing && L.isProcessing(D, !0), d = 0; d < l.length; d++) {
                        for (y = [], o = e.cache[d] = { normalized: [] }, h = (l[d] && l[d].rows.length) || 0, n = 0; n < h; ++n)
                            if (((m = { child: [], raw: [] }), (g = []), !(c = A(l[d].rows[n])).hasClass(e.selectorRemove.slice(1))))
                                if (c.hasClass(e.cssChildRow) && 0 !== n)
                                    for (
                                        $ = o.normalized.length - 1,
                                            (b = o.normalized[$][e.columns]).$row = b.$row.add(c),
                                        c.prev().hasClass(e.cssChildRow) || c.prev().addClass(L.css.cssHasChild),
                                            p = c.children("th, td"),
                                            $ = b.child.length,
                                            b.child[$] = [],
                                            x = 0,
                                            C = e.columns,
                                            i = 0;
                                        i < C;
                                        i++
                                    )
                                        (u = p[i]) && ((b.child[$][i] = L.getParsedText(e, u, i)), 0 < (w = p[i].colSpan - 1) && ((x += w), (C += w))), x++;
                                else {
                                    for (m.$row = c, m.order = n, x = 0, C = e.columns, i = 0; i < C; ++i) {
                                        if (
                                            (u = c[0].cells[i]) &&
                                            x < e.columns &&
                                            (!(v = void 0 !== R[x]) && T && console.warn("No parser found for row: " + n + ", column: " + i + '; cell containing: "' + A(u).text() + '"; does it have a header?'),
                                                (s = L.getElementText(e, u, x)),
                                                (m.raw[x] = s),
                                                (a = L.getParsedText(e, u, x, s)),
                                                (g[x] = a),
                                            v && "numeric" === (R[x].type || "").toLowerCase() && (y[x] = Math.max(Math.abs(a) || 0, y[x] || 0)),
                                            0 < (w = u.colSpan - 1))
                                        ) {
                                            for (I = 0; I <= w; ) (a = e.duplicateSpan || 0 === I ? a : ("string" != typeof e.textExtraction && L.getElementText(e, u, x + I)) || ""), (m.raw[x + I] = a), (g[x + I] = a), I++;
                                            (x += w), (C += w);
                                        }
                                        x++;
                                    }
                                    (g[e.columns] = m), (o.normalized[o.normalized.length] = g);
                                }
                        (o.colMax = y), (e.totalRows += o.normalized.length);
                    }
                    if ((e.showProcessing && L.isProcessing(D), T)) {
                        for (
                            $ = Math.min(5, e.cache[0].normalized.length),
                                console[console.group ? "group" : "log"]("Building cache for " + e.totalRows + " rows (showing " + $ + " rows in log) and " + e.columns + " columns" + L.benchmark(f)),
                                s = {},
                                i = 0;
                            i < e.columns;
                            i++
                        )
                            for (x = 0; x < $; x++) s["row: " + x] || (s["row: " + x] = {}), (s["row: " + x][e.$headerIndexed[i].text()] = e.cache[0].normalized[x][i]);
                        console[console.table ? "table" : "log"](s), console.groupEnd && console.groupEnd();
                    }
                    typeof t === "function" && t(D);
                },
                getColumnText: function (e, t, r, o) {
                    var s,
                        a,
                        n,
                        i,
                        d,
                        l,
                        c,
                        g,
                        p,
                        u,
                        f = "function" == typeof r,
                        h = "all" === t,
                        m = { raw: [], parsed: [], $cell: [] },
                        b = (e = A(e)[0]).config;
                    if (!L.isEmptyObject(b)) {
                        for (d = b.$tbodies.length, s = 0; s < d; s++)
                            for (l = (n = b.cache[s].normalized).length, a = 0; a < l; a++)
                                (i = n[a]),
                                (o && !i[b.columns].$row.is(o)) ||
                                ((u = !0),
                                    (g = h ? i.slice(0, b.columns) : i[t]),
                                    (i = i[b.columns]),
                                    (c = h ? i.raw : i.raw[t]),
                                    (p = h ? i.$row.children() : i.$row.children().eq(t)),
                                f && (u = r({ tbodyIndex: s, rowIndex: a, parsed: g, raw: c, $row: i.$row, $cell: p })),
                                !1 !== u && ((m.parsed[m.parsed.length] = g), (m.raw[m.raw.length] = c), (m.$cell[m.$cell.length] = p)));
                        return m;
                    }
                    L.debug(b, "core") && console.warn("No cache found - aborting getColumnText function!");
                },
                setHeadersCss: function (a) {
                    function e(e, t) {
                        e.removeClass(n)
                            .addClass(i[t])
                            .attr("aria-sort", l[t])
                            .find("." + L.css.icon)
                            .removeClass(d[2])
                            .addClass(d[t]);
                    }
                    var t,
                        r,
                        o = a.sortList,
                        s = o.length,
                        n = L.css.sortNone + " " + a.cssNone,
                        i = [L.css.sortAsc + " " + a.cssAsc, L.css.sortDesc + " " + a.cssDesc],
                        d = [a.cssIconAsc, a.cssIconDesc, a.cssIconNone],
                        l = ["ascending", "descending"],
                        c = a.$table
                            .find("tfoot tr")
                            .children("td, th")
                            .add(A(a.namespace + "_extra_headers"))
                            .removeClass(i.join(" ")),
                        g = a.$headers
                            .add(A("thead " + a.namespace + "_extra_headers"))
                            .removeClass(i.join(" "))
                            .addClass(n)
                            .attr("aria-sort", "none")
                            .find("." + L.css.icon)
                            .removeClass(d.join(" "))
                            .end();
                    for (
                        g
                            .not(".sorter-false")
                            .find("." + L.css.icon)
                            .addClass(d[2]),
                        a.cssIconDisabled &&
                        g
                            .filter(".sorter-false")
                            .find("." + L.css.icon)
                            .addClass(a.cssIconDisabled),
                            t = 0;
                        t < s;
                        t++
                    )
                        if (2 !== o[t][1]) {
                            if (
                                (g = (g = a.$headers.filter(function (e) {
                                    for (var t = !0, r = a.$headers.eq(e), o = parseInt(r.attr("data-column"), 10), s = o + L.getClosest(r, "th, td")[0].colSpan; o < s; o++) t = !!t && (t || -1 < L.isValueInArray(o, a.sortList));
                                    return t;
                                }))
                                    .not(".sorter-false")
                                    .filter('[data-column="' + o[t][0] + '"]' + (1 === s ? ":last" : ""))).length
                            )
                                for (r = 0; r < g.length; r++) g[r].sortDisabled || e(g.eq(r), o[t][1]);
                            c.length && e(c.filter('[data-column="' + o[t][0] + '"]'), o[t][1]);
                        }
                    for (s = a.$headers.length, t = 0; t < s; t++) L.setColumnAriaLabel(a, a.$headers.eq(t));
                },
                getClosest: function (e, t) {
                    return A.fn.closest ? e.closest(t) : e.is(t) ? e : e.parents(t).filter(":first");
                },
                setColumnAriaLabel: function (e, t, r) {
                    if (t.length) {
                        var o = parseInt(t.attr("data-column"), 10),
                            s = e.sortVars[o],
                            a = t.hasClass(L.css.sortAsc) ? "sortAsc" : t.hasClass(L.css.sortDesc) ? "sortDesc" : "sortNone",
                            n = (t.text()).trim() + ": " + L.language[a];
                        t.hasClass("sorter-false") || !1 === r ? (n += L.language.sortDisabled) : ((a = (s.count + 1) % s.order.length), (r = s.order[a]), (n += L.language[0 === r ? "nextAsc" : 1 === r ? "nextDesc" : "nextNone"])),
                            t.attr("aria-label", n),
                            s.sortedBy ? t.attr("data-sortedBy", s.sortedBy) : t.removeAttr("data-sortedBy");
                    }
                },
                updateHeader: function (e) {
                    var t,
                        r,
                        o,
                        s,
                        a = e.table,
                        n = e.$headers.length;
                    for (t = 0; t < n; t++) (o = e.$headers.eq(t)), (s = L.getColumnData(a, e.headers, t, !0)), (r = "false" === L.getData(o, s, "sorter") || "false" === L.getData(o, s, "parser")), L.setColumnSort(e, o, r);
                },
                setColumnSort: function (e, t, r) {
                    var o = e.table.id;
                    (t[0].sortDisabled = r),
                        t[r ? "addClass" : "removeClass"]("sorter-false").attr("aria-disabled", "" + r),
                    e.tabIndex && (r ? t.removeAttr("tabindex") : t.attr("tabindex", "0")),
                    o && (r ? t.removeAttr("aria-controls") : t.attr("aria-controls", o));
                },
                updateHeaderSortCount: function (e, t) {
                    var r,
                        o,
                        s,
                        a,
                        n,
                        i,
                        d,
                        l,
                        c = t || e.sortList,
                        g = c.length;
                    for (e.sortList = [], a = 0; a < g; a++)
                        if (((d = c[a]), (r = parseInt(d[0], 10)) < e.columns)) {
                            switch (
                                (e.sortVars[r].order || ((l = L.getOrder(e.sortInitialOrder) ? (e.sortReset ? [1, 0, 2] : [1, 0]) : e.sortReset ? [0, 1, 2] : [0, 1]), (e.sortVars[r].order = l), (e.sortVars[r].count = 0)),
                                    (l = e.sortVars[r].order),
                                    (o = (o = ("" + d[1]).match(/^(1|d|s|o|n)/)) ? o[0] : ""))
                                ) {
                                case "1":
                                case "d":
                                    o = 1;
                                    break;
                                case "s":
                                    o = n || 0;
                                    break;
                                case "o":
                                    o = 0 === (i = l[(n || 0) % l.length]) ? 1 : 1 === i ? 0 : 2;
                                    break;
                                case "n":
                                    o = l[++e.sortVars[r].count % l.length];
                                    break;
                                default:
                                    o = 0;
                            }
                            (n = 0 === a ? o : n), (s = [r, parseInt(o, 10) || 0]), (e.sortList[e.sortList.length] = s), (o = A.inArray(s[1], l)), (e.sortVars[r].count = 0 <= o ? o : s[1] % l.length);
                        }
                },
                updateAll: function (e, t, r) {
                    var o = e.table;
                    (o.isUpdating = !0), L.refreshWidgets(o, !0, !0), L.buildHeaders(e), L.bindEvents(o, e.$headers, !0), L.bindMethods(e), L.commonUpdate(e, t, r);
                },
                update: function (e, t, r) {
                    (e.table.isUpdating = !0), L.updateHeader(e), L.commonUpdate(e, t, r);
                },
                updateHeaders: function (e, t) {
                    (e.table.isUpdating = !0), L.buildHeaders(e), L.bindEvents(e.table, e.$headers, !0), L.resortComplete(e, t);
                },
                updateCell: function (e, t, r, o) {
                    if (A(t).closest("tr").hasClass(e.cssChildRow)) console.warn('Tablesorter Warning! "updateCell" for child row content has been disabled, use "update" instead');
                    else {
                        if (L.isEmptyObject(e.cache)) return L.updateHeader(e), void L.commonUpdate(e, r, o);
                        (e.table.isUpdating = !0), e.$table.find(e.selectorRemove).remove();
                        var s,
                            a,
                            n,
                            i,
                            d,
                            l,
                            c = e.$tbodies,
                            g = A(t),
                            p = c.index(L.getClosest(g, "tbody")),
                            u = e.cache[p],
                            f = L.getClosest(g, "tr");
                        if (((t = g[0]), c.length && 0 <= p)) {
                            if (
                                ((n = c
                                    .eq(p)
                                    .find("tr")
                                    .not("." + e.cssChildRow)
                                    .index(f)),
                                    (d = u.normalized[n]),
                                (l = f[0].cells.length) !== e.columns)
                            )
                                for (s = !1, a = i = 0; a < l; a++) s || f[0].cells[a] === t ? (s = !0) : (i += f[0].cells[a].colSpan);
                            else i = g.index();
                            (s = L.getElementText(e, t, i)),
                                (d[e.columns].raw[i] = s),
                                (s = L.getParsedText(e, t, i, s)),
                                (d[i] = s),
                            "numeric" === (e.parsers[i].type || "").toLowerCase() && (u.colMax[i] = Math.max(Math.abs(s) || 0, u.colMax[i] || 0)),
                                !1 !== (s = "undefined" !== r ? r : e.resort) ? L.checkResort(e, s, o) : L.resortComplete(e, o);
                        } else L.debug(e, "core") && console.error("updateCell aborted, tbody missing or not within the indicated table"), (e.table.isUpdating = !1);
                    }
                },
                addRows: function (e, t, r, o) {
                    var s,
                        a,
                        n,
                        i,
                        d,
                        l,
                        c,
                        g,
                        p,
                        u,
                        f,
                        h,
                        m,
                        b = "string" == typeof t && 1 === e.$tbodies.length && /<tr/.test(t || ""),
                        y = e.table;
                    if (b) (t = A(t)), e.$tbodies.append(t);
                    else if (!(t && t instanceof A && L.getClosest(t, "table")[0] === e.table))
                        return (
                            L.debug(e, "core") && console.error("addRows method requires (1) a jQuery selector reference to rows that have already been added to the table, or (2) row HTML string to be added to a table with only one tbody"),
                                !1
                        );
                    if (((y.isUpdating = !0), L.isEmptyObject(e.cache))) L.updateHeader(e), L.commonUpdate(e, r, o);
                    else {
                        for (d = t.filter("tr").attr("role", "row").length, n = e.$tbodies.index(t.parents("tbody").filter(":first")), (e.parsers && e.parsers.length) || L.setupParsers(e), i = 0; i < d; i++) {
                            for (p = 0, c = t[i].cells.length, g = e.cache[n].normalized.length, f = [], u = { child: [], raw: [], $row: t.eq(i), order: g }, l = 0; l < c; l++)
                                (h = t[i].cells[l]),
                                    (s = L.getElementText(e, h, p)),
                                    (u.raw[p] = s),
                                    (a = L.getParsedText(e, h, p, s)),
                                    (f[p] = a),
                                "numeric" === (e.parsers[p].type || "").toLowerCase() && (e.cache[n].colMax[p] = Math.max(Math.abs(a) || 0, e.cache[n].colMax[p] || 0)),
                                0 < (m = h.colSpan - 1) && (p += m),
                                    p++;
                            (f[e.columns] = u), (e.cache[n].normalized[g] = f);
                        }
                        L.checkResort(e, r, o);
                    }
                },
                updateCache: function (e, t, r) {
                    (e.parsers && e.parsers.length) || L.setupParsers(e, r), L.buildCache(e, t, r);
                },
                appendCache: function (e, t) {
                    var r,
                        o,
                        s,
                        a,
                        n,
                        i,
                        d,
                        l = e.table,
                        c = e.$tbodies,
                        g = [],
                        p = e.cache;
                    if (L.isEmptyObject(p)) return e.appender ? e.appender(l, g) : l.isUpdating ? e.$table.triggerHandler("updateComplete", l) : "";
                    for (L.debug(e, "core") && (d = new Date()), i = 0; i < c.length; i++)
                        if ((s = c.eq(i)).length) {
                            for (a = L.processTbody(l, s, !0), o = (r = p[i].normalized).length, n = 0; n < o; n++)
                                (g[g.length] = r[n][e.columns].$row), (e.appender && (!e.pager || e.pager.removeRows || e.pager.ajax)) || a.append(r[n][e.columns].$row);
                            L.processTbody(l, a, !1);
                        }
                    e.appender && e.appender(l, g), L.debug(e, "core") && console.log("Rebuilt table" + L.benchmark(d)), t || e.appender || L.applyWidget(l), l.isUpdating && e.$table.triggerHandler("updateComplete", l);
                },
                commonUpdate: function (e, t, r) {
                    e.$table.find(e.selectorRemove).remove(), L.setupParsers(e), L.buildCache(e), L.checkResort(e, t, r);
                },
                initSort: function (t, e, r) {
                    if (t.table.isUpdating)
                        return setTimeout(function () {
                            L.initSort(t, e, r);
                        }, 50);
                    var o,
                        s,
                        a,
                        n,
                        i,
                        d,
                        l,
                        c = !r[t.sortMultiSortKey],
                        g = t.table,
                        p = t.$headers.length,
                        u = L.getClosest(A(e), "th, td"),
                        f = parseInt(u.attr("data-column"), 10),
                        h = "mouseup" === r.type ? "user" : r.type,
                        m = t.sortVars[f].order;
                    if (((u = u[0]), t.$table.triggerHandler("sortStart", g), (d = (t.sortVars[f].count + 1) % m.length), (t.sortVars[f].count = r[t.sortResetKey] ? 2 : d), t.sortRestart))
                        for (a = 0; a < p; a++) (l = t.$headers.eq(a)), f !== (d = parseInt(l.attr("data-column"), 10)) && (c || l.hasClass(L.css.sortNone)) && (t.sortVars[d].count = -1);
                    if (c) {
                        if (
                            (A.each(t.sortVars, function (e) {
                                t.sortVars[e].sortedBy = "";
                            }),
                                (t.sortList = []),
                                (t.last.sortList = []),
                            null !== t.sortForce)
                        )
                            for (o = t.sortForce, s = 0; s < o.length; s++) o[s][0] !== f && ((t.sortList[t.sortList.length] = o[s]), (t.sortVars[o[s][0]].sortedBy = "sortForce"));
                        if ((n = m[t.sortVars[f].count]) < 2 && ((t.sortList[t.sortList.length] = [f, n]), (t.sortVars[f].sortedBy = h), 1 < u.colSpan))
                            for (s = 1; s < u.colSpan; s++) (t.sortList[t.sortList.length] = [f + s, n]), (t.sortVars[f + s].count = A.inArray(n, m)), (t.sortVars[f + s].sortedBy = h);
                    } else if (((t.sortList = A.extend([], t.last.sortList)), 0 <= L.isValueInArray(f, t.sortList)))
                        for (t.sortVars[f].sortedBy = h, s = 0; s < t.sortList.length; s++) (d = t.sortList[s])[0] === f && ((d[1] = m[t.sortVars[f].count]), 2 === d[1] && (t.sortList.splice(s, 1), (t.sortVars[f].count = -1)));
                    else if (((n = m[t.sortVars[f].count]), (t.sortVars[f].sortedBy = h), n < 2 && ((t.sortList[t.sortList.length] = [f, n]), 1 < u.colSpan)))
                        for (s = 1; s < u.colSpan; s++) (t.sortList[t.sortList.length] = [f + s, n]), (t.sortVars[f + s].count = A.inArray(n, m)), (t.sortVars[f + s].sortedBy = h);
                    if (((t.last.sortList = A.extend([], t.sortList)), t.sortList.length && t.sortAppend && ((o = A.isArray(t.sortAppend) ? t.sortAppend : t.sortAppend[t.sortList[0][0]]), !L.isEmptyObject(o))))
                        for (s = 0; s < o.length; s++)
                            if (o[s][0] !== f && L.isValueInArray(o[s][0], t.sortList) < 0) {
                                if ((i = ("" + (n = o[s][1])).match(/^(a|d|s|o|n)/)))
                                    switch (((d = t.sortList[0][1]), i[0])) {
                                        case "d":
                                            n = 1;
                                            break;
                                        case "s":
                                            n = d;
                                            break;
                                        case "o":
                                            n = 0 === d ? 1 : 0;
                                            break;
                                        case "n":
                                            n = (d + 1) % m.length;
                                            break;
                                        default:
                                            n = 0;
                                    }
                                (t.sortList[t.sortList.length] = [o[s][0], n]), (t.sortVars[o[s][0]].sortedBy = "sortAppend");
                            }
                    t.$table.triggerHandler("sortBegin", g),
                        setTimeout(function () {
                            L.setHeadersCss(t), L.multisort(t), L.appendCache(t), t.$table.triggerHandler("sortBeforeEnd", g), t.$table.triggerHandler("sortEnd", g);
                        }, 1);
                },
                multisort: function (l) {
                    var e,
                        t,
                        c,
                        r,
                        g = l.table,
                        p = [],
                        u = 0,
                        f = l.textSorter || "",
                        h = l.sortList,
                        m = h.length,
                        o = l.$tbodies.length;
                    if (!l.serverSideSorting && !L.isEmptyObject(l.cache)) {
                        if ((L.debug(l, "core") && (t = new Date()), "object" == typeof f)) for (c = l.columns; c--; ) "function" == typeof (r = L.getColumnData(g, f, c)) && (p[c] = r);
                        for (e = 0; e < o; e++)
                            (c = l.cache[e].colMax),
                                l.cache[e].normalized.sort(function (e, t) {
                                    var r, o, s, a, n, i, d;
                                    for (r = 0; r < m; r++) {
                                        if (((s = h[r][0]), (a = h[r][1]), (u = 0 === a), l.sortStable && e[s] === t[s] && 1 === m)) return e[l.columns].order - t[l.columns].order;
                                        if (
                                            (n =
                                                (o = /n/i.test(L.getSortType(l.parsers, s))) && l.strings[s]
                                                    ? ((o = "boolean" == typeof L.string[l.strings[s]] ? (u ? 1 : -1) * (L.string[l.strings[s]] ? -1 : 1) : (l.strings[s] && L.string[l.strings[s]]) || 0),
                                                        l.numberSorter ? l.numberSorter(e[s], t[s], u, c[s], g) : L["sortNumeric" + (u ? "Asc" : "Desc")](e[s], t[s], o, c[s], s, l))
                                                    : ((i = u ? e : t),
                                                        (d = u ? t : e),
                                                        "function" == typeof f ? f(i[s], d[s], u, s, g) : "function" == typeof p[s] ? p[s](i[s], d[s], u, s, g) : L["sortNatural" + (u ? "Asc" : "Desc")](e[s] || "", t[s] || "", s, l)))
                                        )
                                            return n;
                                    }
                                    return e[l.columns].order - t[l.columns].order;
                                });
                        L.debug(l, "core") && console.log("Applying sort " + h.toString() + L.benchmark(t));
                    }
                },
                resortComplete: function (e, t) {
                    e.table.isUpdating && e.$table.triggerHandler("updateComplete", e.table),typeof t === "function" && t(e.table);
                },
                checkResort: function (e, t, r) {
                    var o = A.isArray(t) ? t : e.sortList;
                    !1 === (void 0 === t ? e.resort : t) || e.serverSideSorting || e.table.isProcessing
                        ? (L.resortComplete(e, r), L.applyWidget(e.table, !1))
                        : o.length
                        ? L.sortOn(
                            e,
                            o,
                            function () {
                                L.resortComplete(e, r);
                            },
                            !0
                        )
                        : L.sortReset(e, function () {
                            L.resortComplete(e, r), L.applyWidget(e.table, !1);
                        });
                },
                sortOn: function (e, t, r, o) {
                    var s,
                        a = e.table;
                    for (e.$table.triggerHandler("sortStart", a), s = 0; s < e.columns; s++) e.sortVars[s].sortedBy = -1 < L.isValueInArray(s, t) ? "sorton" : "";
                    L.updateHeaderSortCount(e, t),
                        L.setHeadersCss(e),
                    e.delayInit && L.isEmptyObject(e.cache) && L.buildCache(e),
                        e.$table.triggerHandler("sortBegin", a),
                        L.multisort(e),
                        L.appendCache(e, o),
                        e.$table.triggerHandler("sortBeforeEnd", a),
                        e.$table.triggerHandler("sortEnd", a),
                        L.applyWidget(a),
                    typeof r === "function" && r(a);
                },
                sortReset: function (e, t) {
                    var r;
                    for (e.sortList = [], r = 0; r < e.columns; r++) (e.sortVars[r].count = -1), (e.sortVars[r].sortedBy = "");
                    L.setHeadersCss(e), L.multisort(e), L.appendCache(e), typeof t === "function" && t(e.table);
                },
                getSortType: function (e, t) {
                    return (e && e[t] && e[t].type) || "";
                },
                getOrder: function (e) {
                    return /^d/i.test(e) || 1 === e;
                },
                sortNatural: function (e, t) {
                    if (e === t) return 0;
                    (e = (e || "").toString()), (t = (t || "").toString());
                    var r,
                        o,
                        s,
                        a,
                        n,
                        i,
                        d = L.regex;
                    if (d.hex.test(t)) {
                        if ((r = parseInt(e.match(d.hex), 16)) < (o = parseInt(t.match(d.hex), 16))) return -1;
                        if (o < r) return 1;
                    }
                    for (r = e.replace(d.chunk, "\\0$1\\0").replace(d.chunks, "").split("\\0"), o = t.replace(d.chunk, "\\0$1\\0").replace(d.chunks, "").split("\\0"), i = Math.max(r.length, o.length), n = 0; n < i; n++) {
                        if (((s = isNaN(r[n]) ? r[n] || 0 : parseFloat(r[n]) || 0), (a = isNaN(o[n]) ? o[n] || 0 : parseFloat(o[n]) || 0), isNaN(s) !== isNaN(a))) return isNaN(s) ? 1 : -1;
                        if ((typeof s != typeof a && ((s += ""), (a += "")), s < a)) return -1;
                        if (a < s) return 1;
                    }
                    return 0;
                },
                sortNaturalAsc: function (e, t, r, o) {
                    if (e === t) return 0;
                    var s = L.string[o.empties[r] || o.emptyTo];
                    return "" === e && 0 !== s ? ("boolean" == typeof s ? (s ? -1 : 1) : -s || -1) : "" === t && 0 !== s ? ("boolean" == typeof s ? (s ? 1 : -1) : s || 1) : L.sortNatural(e, t);
                },
                sortNaturalDesc: function (e, t, r, o) {
                    if (e === t) return 0;
                    var s = L.string[o.empties[r] || o.emptyTo];
                    return "" === e && 0 !== s ? ("boolean" == typeof s ? (s ? -1 : 1) : s || 1) : "" === t && 0 !== s ? ("boolean" == typeof s ? (s ? 1 : -1) : -s || -1) : L.sortNatural(t, e);
                },
                sortText: function (e, t) {
                    return t < e ? 1 : e < t ? -1 : 0;
                },
                getTextValue: function (e, t, r) {
                    if (r) {
                        var o,
                            s = e ? e.length : 0,
                            a = r + t;
                        for (o = 0; o < s; o++) a += e.charCodeAt(o);
                        return t * a;
                    }
                    return 0;
                },
                sortNumericAsc: function (e, t, r, o, s, a) {
                    if (e === t) return 0;
                    var n = L.string[a.empties[s] || a.emptyTo];
                    return "" === e && 0 !== n
                        ? "boolean" == typeof n
                            ? n
                                ? -1
                                : 1
                            : -n || -1
                        : "" === t && 0 !== n
                            ? "boolean" == typeof n
                                ? n
                                    ? 1
                                    : -1
                                : n || 1
                            : (isNaN(e) && (e = L.getTextValue(e, r, o)), isNaN(t) && (t = L.getTextValue(t, r, o)), e - t);
                },
                sortNumericDesc: function (e, t, r, o, s, a) {
                    if (e === t) return 0;
                    var n = L.string[a.empties[s] || a.emptyTo];
                    return "" === e && 0 !== n
                        ? "boolean" == typeof n
                            ? n
                                ? -1
                                : 1
                            : n || 1
                        : "" === t && 0 !== n
                            ? "boolean" == typeof n
                                ? n
                                    ? 1
                                    : -1
                                : -n || -1
                            : (isNaN(e) && (e = L.getTextValue(e, r, o)), isNaN(t) && (t = L.getTextValue(t, r, o)), t - e);
                },
                sortNumeric: function (e, t) {
                    return e - t;
                },
                addWidget: function (e) {
                    e.id && !L.isEmptyObject(L.getWidgetById(e.id)) && console.warn('"' + e.id + '" widget was loaded more than once!'), (L.widgets[L.widgets.length] = e);
                },
                hasWidget: function (e, t) {
                    return ((e = A(e)).length && e[0].config && e[0].config.widgetInit[t]) || !1;
                },
                getWidgetById: function (e) {
                    var t,
                        r,
                        o = L.widgets.length;
                    for (t = 0; t < o; t++) if ((r = L.widgets[t]) && r.id && r.id.toLowerCase() === e.toLowerCase()) return r;
                },
                applyWidgetOptions: function (e) {
                    var t,
                        r,
                        o,
                        s = e.config,
                        a = s.widgets.length;
                    if (a)
                        for (t = 0; t < a; t++)
                            (r = L.getWidgetById(s.widgets[t])) && r.options && ((o = A.extend(!0, {}, r.options)), (s.widgetOptions = A.extend(!0, o, s.widgetOptions)), A.extend(!0, L.defaults.widgetOptions, r.options));
                },
                addWidgetFromClass: function (e) {
                    var t,
                        r,
                        o = e.config,
                        s = "^" + o.widgetClass.replace(L.regex.templateName, "(\\S+)+") + "$",
                        a = new RegExp(s, "g"),
                        n = (e.className || "").split(L.regex.spaces);
                    if (n.length) for (t = n.length, r = 0; r < t; r++) n[r].match(a) && (o.widgets[o.widgets.length] = n[r].replace(a, "$1"));
                },
                applyWidgetId: function (e, t, r) {
                    var o,
                        s,
                        a,
                        n = (e = A(e)[0]).config,
                        i = n.widgetOptions,
                        d = L.debug(n, "core"),
                        l = L.getWidgetById(t);
                    l &&
                    ((a = l.id),
                        (o = !1),
                    A.inArray(a, n.widgets) < 0 && (n.widgets[n.widgets.length] = a),
                    d && (s = new Date()),
                    (!r && n.widgetInit[a]) ||
                    ((n.widgetInit[a] = !0),
                    e.hasInitialized && L.applyWidgetOptions(e),
                    "function" == typeof l.init && ((o = !0), d && console[console.group ? "group" : "log"]("Initializing " + a + " widget"), l.init(e, l, n, i))),
                    r || "function" != typeof l.format || ((o = !0), d && console[console.group ? "group" : "log"]("Updating " + a + " widget"), l.format(e, n, i, !1)),
                    d && o && (console.log("Completed " + (r ? "initializing " : "applying ") + a + " widget" + L.benchmark(s)), console.groupEnd && console.groupEnd()));
                },
                applyWidget: function (e, t, r) {
                    var o,
                        s,
                        a,
                        n,
                        i,
                        d = (e = A(e)[0]).config,
                        l = L.debug(d, "core"),
                        c = [];
                    if (!1 === t || !e.hasInitialized || (!e.isApplyingWidgets && !e.isUpdating)) {
                        if ((l && (i = new Date()), L.addWidgetFromClass(e), clearTimeout(d.timerReady), d.widgets.length)) {
                            for (
                                e.isApplyingWidgets = !0,
                                    d.widgets = A.grep(d.widgets, function (e, t) {
                                        return A.inArray(e, d.widgets) === t;
                                    }),
                                    s = (a = d.widgets || []).length,
                                    o = 0;
                                o < s;
                                o++
                            )
                                (n = L.getWidgetById(a[o])) && n.id ? (n.priority || (n.priority = 10), (c[o] = n)) : l && console.warn('"' + a[o] + '" was enabled, but the widget code has not been loaded!');
                            for (
                                c.sort(function (e, t) {
                                    return e.priority < t.priority ? -1 : e.priority === t.priority ? 0 : 1;
                                }),
                                    s = c.length,
                                l && console[console.group ? "group" : "log"]("Start " + (t ? "initializing" : "applying") + " widgets"),
                                    o = 0;
                                o < s;
                                o++
                            )
                                (n = c[o]) && n.id && L.applyWidgetId(e, n.id, t);
                            l && console.groupEnd && console.groupEnd();
                        }
                        d.timerReady = setTimeout(function () {
                            (e.isApplyingWidgets = !1),
                                A.data(e, "lastWidgetApplication", new Date()),
                                d.$table.triggerHandler("tablesorter-ready"),
                            t || "function" != typeof r || r(e),
                            l && ((n = d.widgets.length), console.log("Completed " + (!0 === t ? "initializing " : "applying ") + n + " widget" + (1 !== n ? "s" : "") + L.benchmark(i)));
                        }, 10);
                    }
                },
                removeWidget: function (e, t, r) {
                    var o,
                        s,
                        a,
                        n,
                        i = (e = A(e)[0]).config;
                    if (!0 === t) for (t = [], n = L.widgets.length, a = 0; a < n; a++) (s = L.widgets[a]) && s.id && (t[t.length] = s.id);
                    else t = (A.isArray(t) ? t.join(",") : t || "").toLowerCase().split(/[\s,]+/);
                    for (n = t.length, o = 0; o < n; o++)
                        (s = L.getWidgetById(t[o])),
                        0 <= (a = A.inArray(t[o], i.widgets)) && !0 !== r && i.widgets.splice(a, 1),
                        s && s.remove && (L.debug(i, "core") && console.log((r ? "Refreshing" : "Removing") + ' "' + t[o] + '" widget'), s.remove(e, i, i.widgetOptions, r), (i.widgetInit[t[o]] = !1));
                    i.$table.triggerHandler("widgetRemoveEnd", e);
                },
                refreshWidgets: function (e, t, r) {
                    function o(e) {
                        A(e).triggerHandler("refreshComplete");
                    }
                    var s,
                        a,
                        n = (e = A(e)[0]).config.widgets,
                        i = L.widgets,
                        d = i.length,
                        l = [];
                    for (s = 0; s < d; s++) (a = i[s]) && a.id && (t || A.inArray(a.id, n) < 0) && (l[l.length] = a.id);
                    L.removeWidget(e, l.join(","), !0), !0 !== r ? (L.applyWidget(e, t || !1, o), t && L.applyWidget(e, !1, o)) : o(e);
                },
                benchmark: function (e) {
                    return " (" + (new Date().getTime() - e.getTime()) + " ms)";
                },
                log: function () {
                    console.log(arguments);
                },
                debug: function (e, t) {
                    return e && (!0 === e.debug || ("string" == typeof e.debug && -1 < e.debug.indexOf(t)));
                },
                isEmptyObject: function (e) {
                    for (var t in e) return !1;
                    return !0;
                },
                isValueInArray: function (e, t) {
                    var r,
                        o = (t && t.length) || 0;
                    for (r = 0; r < o; r++) if (t[r][0] === e) return r;
                    return -1;
                },
                formatFloat: function (e, t) {
                    return "string" != typeof e || "" === e
                        ? e
                        : ((e = (t && t.config ? !1 !== t.config.usNumberFormat : void 0 === t || t) ? e.replace(L.regex.comma, "") : e.replace(L.regex.digitNonUS, "").replace(L.regex.comma, ".")),
                        L.regex.digitNegativeTest.test(e) && (e = e.replace(L.regex.digitNegativeReplace, "-$1")),
                            (r = parseFloat(e)),
                            isNaN(r) ? e.trim() : r);
                    var r;
                },
                isDigit: function (e) {
                    return isNaN(e) ? L.regex.digitTest.test(e.toString().replace(L.regex.digitReplace, "")) : "" !== e;
                },
                computeColumnIndex: function (e, t) {
                    var r,
                        o,
                        s,
                        a,
                        n,
                        i,
                        d,
                        l,
                        c,
                        g,
                        p = (t && t.columns) || 0,
                        u = [],
                        f = new Array(p);
                    for (r = 0; r < e.length; r++)
                        for (i = e[r].cells, o = 0; o < i.length; o++) {
                            for (d = r, l = (n = i[o]).rowSpan || 1, c = n.colSpan || 1, void 0 === u[d] && (u[d] = []), s = 0; s < u[d].length + 1; s++)
                                if (void 0 === u[d][s]) {
                                    g = s;
                                    break;
                                }
                            for ((p && n.cellIndex === g) || (n.setAttribute ? n.setAttribute("data-column", g) : A(n).attr("data-column", g)), s = d; s < d + l; s++)
                                for (void 0 === u[s] && (u[s] = []), f = u[s], a = g; a < g + c; a++) f[a] = "x";
                        }
                    return L.checkColumnCount(e, u, f.length), f.length;
                },
                checkColumnCount: function (e, t, r) {
                    var o,
                        s,
                        a = !0,
                        n = [];
                    for (o = 0; o < t.length; o++)
                        if (t[o] && ((s = t[o].length), t[o].length !== r)) {
                            a = !1;
                            break;
                        }
                    a ||
                    (e.each(function (e, t) {
                        var r = t.parentElement.nodeName;
                        n.indexOf(r) < 0 && n.push(r);
                    }),
                        console.error("Invalid or incorrect number of columns in the " + n.join(" or ") + "; expected " + r + ", but found " + s + " columns"));
                },
                fixColumnWidth: function (e) {
                    var t,
                        r,
                        o,
                        s,
                        a,
                        n = (e = A(e)[0]).config,
                        i = n.$table.children("colgroup");
                    if ((i.length && i.hasClass(L.css.colgroup) && i.remove(), n.widthFixed && 0 === n.$table.children("colgroup").length)) {
                        for (i = A('<colgroup class="' + L.css.colgroup + '">'), t = n.$table.width(), s = (o = n.$tbodies.find("tr:first").children(":visible")).length, a = 0; a < s; a++)
                            (r = parseInt((o.eq(a).width() / t) * 1e3, 10) / 10 + "%"), i.append(A("<col>").css("width", r));
                        n.$table.prepend(i);
                    }
                },
                getData: function (e, t, r) {
                    var o,
                        s,
                        a = "",
                        n = A(e);
                    return n.length
                        ? ((o = !!A.metadata && n.metadata()),
                            (s = " " + (n.attr("class") || "")),
                            void 0 !== n.data(r) || void 0 !== n.data(r.toLowerCase())
                                ? (a += n.data(r) || n.data(r.toLowerCase()))
                                : o && void 0 !== o[r]
                                ? (a += o[r])
                                : t && void 0 !== t[r]
                                    ? (a += t[r])
                                    : " " !== s && s.match(" " + r + "-") && (a = s.match(new RegExp("\\s" + r + "-([\\w-]+)"))[1] || ""),
                           a.trim())
                        : "";
                },
                getColumnData: function (e, t, r, o, s) {
                    if ("object" != typeof t || null === t) return t;
                    var a,
                        n = (e = A(e)[0]).config,
                        i = s || n.$headers,
                        d = (n.$headerIndexed && n.$headerIndexed[r]) || i.find('[data-column="' + r + '"]:last');
                    if (void 0 !== t[r]) return o ? t[r] : t[i.index(d)];
                    for (a in t) if ("string" == typeof a && d.filter(a).add(d.find(a)).length) return t[a];
                },
                isProcessing: function (e, t, r) {
                    var o = (e = A(e))[0].config,
                        s = r || e.find("." + L.css.header);
                    t
                        ? (void 0 !== r &&
                        0 < o.sortList.length &&
                        (s = s.filter(function () {
                            return !this.sortDisabled && 0 <= L.isValueInArray(parseFloat(A(this).attr("data-column")), o.sortList);
                        })),
                            e.add(s).addClass(L.css.processing + " " + o.cssProcessing))
                        : e.add(s).removeClass(L.css.processing + " " + o.cssProcessing);
                },
                processTbody: function (e, t, r) {
                    if (((e = A(e)[0]), r)) return (e.isProcessing = !0), t.before('<colgroup class="tablesorter-savemyplace"/>'), A.fn.detach ? t.detach() : t.remove();
                    var o = A(e).find("colgroup.tablesorter-savemyplace");
                    t.insertAfter(o), o.remove(), (e.isProcessing = !1);
                },
                clearTableBody: function (e) {
                    A(e)[0].config.$tbodies.children().detach();
                },
                characterEquivalents: { a: "áàâãäąå", A: "ÁÀÂÃÄĄÅ", c: "çćč", C: "ÇĆČ", e: "éèêëěę", E: "ÉÈÊËĚĘ", i: "íìİîïı", I: "ÍÌİÎÏ", o: "óòôõöō", O: "ÓÒÔÕÖŌ", ss: "ß", SS: "ẞ", u: "úùûüů", U: "ÚÙÛÜŮ" },
                replaceAccents: function (e) {
                    var t,
                        r = "[",
                        o = L.characterEquivalents;
                    if (!L.characterRegex) {
                        for (t in ((L.characterRegexArray = {}), o)) "string" == typeof t && ((r += o[t]), (L.characterRegexArray[t] = new RegExp("[" + o[t] + "]", "g")));
                        L.characterRegex = new RegExp(r + "]");
                    }
                    if (L.characterRegex.test(e)) for (t in o) "string" == typeof t && (e = e.replace(L.characterRegexArray[t], t));
                    return e;
                },
                validateOptions: function (e) {
                    var t,
                        r,
                        o,
                        s,
                        a = "headers sortForce sortList sortAppend widgets".split(" "),
                        n = e.originalSettings;
                    if (n) {
                        for (t in (L.debug(e, "core") && (s = new Date()), n))
                            if ("undefined" === (o = typeof L.defaults[t])) console.warn('Tablesorter Warning! "table.config.' + t + '" option not recognized');
                            else if ("object" === o)
                                for (r in n[t]) (o = L.defaults[t] && typeof L.defaults[t][r]), A.inArray(t, a) < 0 && "undefined" === o && console.warn('Tablesorter Warning! "table.config.' + t + "." + r + '" option not recognized');
                        L.debug(e, "core") && console.log("validate options time:" + L.benchmark(s));
                    }
                },
                restoreHeaders: function (e) {
                    var t,
                        r,
                        o = A(e)[0].config,
                        s = o.$table.find(o.selectorHeaders),
                        a = s.length;
                    for (t = 0; t < a; t++) (r = s.eq(t)).find("." + L.css.headerIn).length && r.html(o.headerContent[t]);
                },
                destroy: function (e, t, r) {
                    if ((e = A(e)[0]).hasInitialized) {
                        L.removeWidget(e, !0, !1);
                        var o,
                            s = A(e),
                            a = e.config,
                            n = s.find("thead:first"),
                            i = n.find("tr." + L.css.headerRow).removeClass(L.css.headerRow + " " + a.cssHeaderRow),
                            d = s.find("tfoot:first > tr").children("th, td");
                        !1 === t && 0 <= A.inArray("uitheme", a.widgets) && (s.triggerHandler("applyWidgetId", ["uitheme"]), s.triggerHandler("applyWidgetId", ["zebra"])),
                            n.find("tr").not(i).remove(),
                            (o =
                                "sortReset update updateRows updateAll updateHeaders updateCell addRows updateComplete sorton appendCache updateCache applyWidgetId applyWidgets refreshWidgets removeWidget destroy mouseup mouseleave " +
                                "keypress sortBegin sortEnd resetToLoadState ".split(" ").join(a.namespace + " ")),
                            s.removeData("tablesorter").off(o.replace(L.regex.spaces, " ")),
                            a.$headers
                                .add(d)
                                .removeClass([L.css.header, a.cssHeader, a.cssAsc, a.cssDesc, L.css.sortAsc, L.css.sortDesc, L.css.sortNone].join(" "))
                                .removeAttr("data-column")
                                .removeAttr("aria-label")
                                .attr("aria-disabled", "true"),
                            i.find(a.selectorSort).off(
                                "mousedown mouseup keypress "
                                    .split(" ")
                                    .join(a.namespace + " ")
                                    .replace(L.regex.spaces, " ")
                            ),
                            L.restoreHeaders(e),
                            s.toggleClass(L.css.table + " " + a.tableClass + " tablesorter-" + a.theme, !1 === t),
                            s.removeClass(a.namespace.slice(1)),
                            (e.hasInitialized = !1),
                            delete e.config.cache,
                        "function" == typeof r && r(e),
                        L.debug(a, "core") && console.log("tablesorter has been removed");
                    }
                },
            });
            (A.fn.tablesorter = function (t) {
                return this.each(function () {
                    var e = A.extend(!0, {}, L.defaults, t, L.instanceMethods);
                    (e.originalSettings = t), !this.hasInitialized && L.buildTable && "TABLE" !== this.nodeName ? L.buildTable(this, e) : L.setup(this, e);
                });
            }),
            (window.console && window.console.log) ||
            ((L.logs = []),
                (console = {}),
                (console.log = console.warn = console.error = console.table = function () {
                    var e = 1 < arguments.length ? arguments : arguments[0];
                    L.logs[L.logs.length] = { date: Date.now(), log: e };
                })),
                L.addParser({
                    id: "no-parser",
                    is: function () {
                        return !1;
                    },
                    format: function () {
                        return "";
                    },
                    type: "text",
                }),
                L.addParser({
                    id: "text",
                    is: function () {
                        return !0;
                    },
                    format: function (e, t) {
                        var r = t.config;
                        return e && ((e = (r.ignoreCase ? e.toLocaleLowerCase() : e).trim()), (e = r.sortLocaleCompare ? L.replaceAccents(e) : e)), e;
                    },
                    type: "text",
                }),
                (L.regex.nondigit = /[^\w,. \-()]/g),
                L.addParser({
                    id: "digit",
                    is: function (e) {
                        return L.isDigit(e);
                    },
                    format: function (e, t) {
                        var r = L.formatFloat((e || "").replace(L.regex.nondigit, ""), t);
                        return e && "number" == typeof r ? r : e ? (e && t.config.ignoreCase ? e.toLocaleLowerCase() : e).trim() : e;
                    },
                    type: "numeric",
                }),
                (L.regex.currencyReplace = /[+\-,. ]/g),
                (L.regex.currencyTest = /^\(?\d+[\u00a3$\u20ac\u00a4\u00a5\u00a2?.]|[\u00a3$\u20ac\u00a4\u00a5\u00a2?.]\d+\)?$/),
                L.addParser({
                    id: "currency",
                    is: function (e) {
                        return (e = (e || "").replace(L.regex.currencyReplace, "")), L.regex.currencyTest.test(e);
                    },
                    format: function (e, t) {
                        var r = L.formatFloat((e || "").replace(L.regex.nondigit, ""), t);
                        return e && "number" == typeof r ? r : e ? (e && t.config.ignoreCase ? e.toLocaleLowerCase() : e).trim() : e;
                    },
                    type: "numeric",
                }),
                (L.regex.urlProtocolTest = /^(https?|ftp|file):\/\//),
                (L.regex.urlProtocolReplace = /(https?|ftp|file):\/\/(www\.)?/),
                L.addParser({
                    id: "url",
                    is: function (e) {
                        return L.regex.urlProtocolTest.test(e);
                    },
                    format: function (e) {
                        return e ? (e.replace(L.regex.urlProtocolReplace, "")).trim() : e;
                    },
                    type: "text",
                }),
                (L.regex.dash = /-/g),
                (L.regex.isoDate = /^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}/),
                L.addParser({
                    id: "isoDate",
                    is: function (e) {
                        return L.regex.isoDate.test(e);
                    },
                    format: function (e) {
                        var t = e ? new Date(e.replace(L.regex.dash, "/")) : e;
                        return t instanceof Date && isFinite(t) ? t.getTime() : e;
                    },
                    type: "numeric",
                }),
                (L.regex.percent = /%/g),
                (L.regex.percentTest = /(\d\s*?%|%\s*?\d)/),
                L.addParser({
                    id: "percent",
                    is: function (e) {
                        return L.regex.percentTest.test(e) && e.length < 15;
                    },
                    format: function (e, t) {
                        return e ? L.formatFloat(e.replace(L.regex.percent, ""), t) : e;
                    },
                    type: "numeric",
                }),
                L.addParser({
                    id: "image",
                    is: function (e, t, r, o) {
                        return 0 < o.find("img").length;
                    },
                    format: function (e, t, r) {
                        return (
                            A(r)
                                .find("img")
                                .attr(t.config.imgAttr || "alt") || e
                        );
                    },
                    parsed: !0,
                    type: "text",
                }),
                (L.regex.dateReplace = /(\S)([AP]M)$/i),
                (L.regex.usLongDateTest1 = /^[A-Z]{3,10}\.?\s+\d{1,2},?\s+(\d{4})(\s+\d{1,2}:\d{2}(:\d{2})?(\s+[AP]M)?)?$/i),
                (L.regex.usLongDateTest2 = /^\d{1,2}\s+[A-Z]{3,10}\s+\d{4}/i),
                L.addParser({
                    id: "usLongDate",
                    is: function (e) {
                        return L.regex.usLongDateTest1.test(e) || L.regex.usLongDateTest2.test(e);
                    },
                    format: function (e) {
                        var t = e ? new Date(e.replace(L.regex.dateReplace, "$1 $2")) : e;
                        return t instanceof Date && isFinite(t) ? t.getTime() : e;
                    },
                    type: "numeric",
                }),
                (L.regex.shortDateTest = /(^\d{1,2}[\/\s]\d{1,2}[\/\s]\d{4})|(^\d{4}[\/\s]\d{1,2}[\/\s]\d{1,2})/),
                (L.regex.shortDateReplace = /[\-.,]/g),
                (L.regex.shortDateXXY = /(\d{1,2})[\/\s](\d{1,2})[\/\s](\d{4})/),
                (L.regex.shortDateYMD = /(\d{4})[\/\s](\d{1,2})[\/\s](\d{1,2})/),
                (L.convertFormat = function (e, t) {
                    (e = (e || "").replace(L.regex.spaces, " ").replace(L.regex.shortDateReplace, "/")),
                        "mmddyyyy" === t ? (e = e.replace(L.regex.shortDateXXY, "$3/$1/$2")) : "ddmmyyyy" === t ? (e = e.replace(L.regex.shortDateXXY, "$3/$2/$1")) : "yyyymmdd" === t && (e = e.replace(L.regex.shortDateYMD, "$1/$2/$3"));
                    var r = new Date(e);
                    return r instanceof Date && isFinite(r) ? r.getTime() : "";
                }),
                L.addParser({
                    id: "shortDate",
                    is: function (e) {
                        return (e = (e || "").replace(L.regex.spaces, " ").replace(L.regex.shortDateReplace, "/")), L.regex.shortDateTest.test(e);
                    },
                    format: function (e, t, r, o) {
                        if (e) {
                            var s = t.config,
                                a = s.$headerIndexed[o],
                                n = (a.length && a.data("dateFormat")) || L.getData(a, L.getColumnData(t, s.headers, o), "dateFormat") || s.dateFormat;
                            return a.length && a.data("dateFormat", n), L.convertFormat(e, n) || e;
                        }
                        return e;
                    },
                    type: "numeric",
                }),
                (L.regex.timeTest = /^(0?[1-9]|1[0-2]):([0-5]\d)(\s[AP]M)$|^((?:[01]\d|[2][0-4]):[0-5]\d)$/i),
                (L.regex.timeMatch = /(0?[1-9]|1[0-2]):([0-5]\d)(\s[AP]M)|((?:[01]\d|[2][0-4]):[0-5]\d)/i),
                L.addParser({
                    id: "time",
                    is: function (e) {
                        return L.regex.timeTest.test(e);
                    },
                    format: function (e) {
                        var t = (e || "").match(L.regex.timeMatch),
                            r = new Date(e),
                            o = e && (null !== t ? t[0] : "00:00 AM"),
                            s = o ? new Date("2000/01/01 " + o.replace(L.regex.dateReplace, "$1 $2")) : o;
                        return s instanceof Date && isFinite(s) ? ((r instanceof Date && isFinite(r) ? r.getTime() : 0) ? parseFloat(s.getTime() + "." + r.getTime()) : s.getTime()) : e;
                    },
                    type: "numeric",
                }),
                L.addParser({
                    id: "metadata",
                    is: function () {
                        return !1;
                    },
                    format: function (e, t, r) {
                        var o = t.config,
                            s = o.parserMetadataName ? o.parserMetadataName : "sortValue";
                        return A(r).metadata()[s];
                    },
                    type: "numeric",
                }),
                L.addWidget({
                    id: "zebra",
                    priority: 90,
                    format: function (e, t, r) {
                        var o,
                            s,
                            a,
                            n,
                            i,
                            d,
                            l,
                            c = new RegExp(t.cssChildRow, "i"),
                            g = t.$tbodies.add(A(t.namespace + "_extra_table").children("tbody:not(." + t.cssInfoBlock + ")"));
                        for (i = 0; i < g.length; i++)
                            for (a = 0, l = (o = g.eq(i).children("tr:visible").not(t.selectorRemove)).length, d = 0; d < l; d++)
                                (s = o.eq(d)), c.test(s[0].className) || a++, (n = a % 2 == 0), s.removeClass(r.zebra[n ? 1 : 0]).addClass(r.zebra[n ? 0 : 1]);
                    },
                    remove: function (e, t, r, o) {
                        if (!o) {
                            var s,
                                a,
                                n = t.$tbodies,
                                i = (r.zebra || ["even", "odd"]).join(" ");
                            for (s = 0; s < n.length; s++) (a = L.processTbody(e, n.eq(s), !0)).children().removeClass(i), L.processTbody(e, a, !1);
                        }
                    },
                });
        })(e),
            e.tablesorter
    );
});

Youez - 2016 - github.com/yon3zu
LinuXploit