// function Base64() {
//
//     // private property
//     var _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
//
//     // public method for encoding
//     this.encode = function (input) {
//         var output = "";
//         var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
//         var i = 0;
//         input = _utf8_encode(input);
//         while (i < input.length) {
//             chr1 = input.charCodeAt(i++);
//             chr2 = input.charCodeAt(i++);
//             chr3 = input.charCodeAt(i++);
//             enc1 = chr1 >> 2;
//             enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
//             enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
//             enc4 = chr3 & 63;
//             if (isNaN(chr2)) {
//                 enc3 = enc4 = 64;
//             } else if (isNaN(chr3)) {
//                 enc4 = 64;
//             }
//             output = output +
//                 _keyStr.charAt(enc1) + _keyStr.charAt(enc2) +
//                 _keyStr.charAt(enc3) + _keyStr.charAt(enc4);
//         }
//         return output;
//     }
//
//     // public method for decoding
//     this.decode = function (input) {
//         var output = "";
//         var chr1, chr2, chr3;
//         var enc1, enc2, enc3, enc4;
//         var i = 0;
//         input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
//         while (i < input.length) {
//             enc1 = _keyStr.indexOf(input.charAt(i++));
//             enc2 = _keyStr.indexOf(input.charAt(i++));
//             enc3 = _keyStr.indexOf(input.charAt(i++));
//             enc4 = _keyStr.indexOf(input.charAt(i++));
//             chr1 = (enc1 << 2) | (enc2 >> 4);
//             chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
//             chr3 = ((enc3 & 3) << 6) | enc4;
//             output = output + String.fromCharCode(chr1);
//             if (enc3 != 64) {
//                 output = output + String.fromCharCode(chr2);
//             }
//             if (enc4 != 64) {
//                 output = output + String.fromCharCode(chr3);
//             }
//         }
//         output = _utf8_decode(output);
//         return output;
//     }
//
//     // private method for UTF-8 encoding
//     var _utf8_encode = function (string) {
//         string = string.replace(/\r\n/g, "\n");
//         var utftext = "";
//         for (var n = 0; n < string.length; n++) {
//             var c = string.charCodeAt(n);
//             if (c < 128) {
//                 utftext += String.fromCharCode(c);
//             } else if ((c > 127) && (c < 2048)) {
//                 utftext += String.fromCharCode((c >> 6) | 192);
//                 utftext += String.fromCharCode((c & 63) | 128);
//             } else {
//                 utftext += String.fromCharCode((c >> 12) | 224);
//                 utftext += String.fromCharCode(((c >> 6) & 63) | 128);
//                 utftext += String.fromCharCode((c & 63) | 128);
//             }
//
//         }
//         return utftext;
//     }
//
//     // private method for UTF-8 decoding
//     var _utf8_decode = function (utftext) {
//         var string = "";
//         var i = 0;
//         var c = c1 = c2 = 0;
//         while (i < utftext.length) {
//             c = utftext.charCodeAt(i);
//             if (c < 128) {
//                 string += String.fromCharCode(c);
//                 i++;
//             } else if ((c > 191) && (c < 224)) {
//                 c2 = utftext.charCodeAt(i + 1);
//                 string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
//                 i += 2;
//             } else {
//                 c2 = utftext.charCodeAt(i + 1);
//                 c3 = utftext.charCodeAt(i + 2);
//                 string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
//                 i += 3;
//             }
//         }
//         return string;
//     }
// }
//
// var btoa = function (string) {
//
//     return new Base64().encode(string)
//
// }
//
// function R(t, e, n, r, o, i, l) {
//     return B(e ^ n ^ r, t, e, o, i, l);
// }
//
// function O(t, e, n, r, o, i, l) {
//     return B(n ^ (e | ~r), t, e, o, i, l);
// }
//
// function k(t, e, n, r, o, i, l) {
//     return B(e & r | n & ~r, t, e, o, i, l);
// }
//
// function x(t, e) {
//     return t << e | t >>> 32 - e;
// }
//
// function E(t, e) {
//     return (t >> 16) + (e >> 16) + ((65535 & t) + (65535 & e) >> 16) << 16 | 65535 & (65535 & t) + (65535 & e);
// }
//
// function B(t, e, n, r, o, i) {
//     return E(x(E(E(e, t), E(r, i)), o), n);
// }
//
// function M(t, e, n, r, o, i, l) {
//     return B(e & n | ~e & r, t, e, o, i, l);
// }
//
// function I(t) {
//     var e = void 0,
//         n = [];
//     for (n[(t.length >> 2) - 1] = void 0, e = 0; e < n.length; e += 1) n[e] = 0;
//     for (e = 0; e < 8 * t.length; e += 8) n[e >> 5] |= (255 & t.charCodeAt(e / 8)) << e % 32;
//     return n;
// }
//
// function F(t, e) {
//     t[e >> 5] |= 128 << e % 32, t[14 + (e + 64 >>> 9 << 4)] = e;
//     var n = void 0,
//         r = void 0,
//         o = void 0,
//         i = void 0,
//         l = void 0,
//         a = 1732584193,
//         c = -271733879,
//         u = -1732584194,
//         f = 271733878;
//     for (n = 0; n < t.length; n += 16) r = a, o = c, i = u, l = f, a = M(a, c, u, f, t[n], 7, -680876936), f = M(f, a, c, u, t[n + 1], 12, -389564586), u = M(u, f, a, c, t[n + 2], 17, 606105819), c = M(c, u, f, a, t[n + 3], 22, -1044525330), a = M(a, c, u, f, t[n + 4], 7, -176418897), f = M(f, a, c, u, t[n + 5], 12, 1200080426), u = M(u, f, a, c, t[n + 6], 17, -1473231341), c = M(c, u, f, a, t[n + 7], 22, -45705983), a = M(a, c, u, f, t[n + 8], 7, 1770035416), f = M(f, a, c, u, t[n + 9], 12, -1958414417), u = M(u, f, a, c, t[n + 10], 17, -42063), c = M(c, u, f, a, t[n + 11], 22, -1990404162), a = M(a, c, u, f, t[n + 12], 7, 1804603682), f = M(f, a, c, u, t[n + 13], 12, -40341101), u = M(u, f, a, c, t[n + 14], 17, -1502002290), c = M(c, u, f, a, t[n + 15], 22, 1236535329), a = k(a, c, u, f, t[n + 1], 5, -165796510), f = k(f, a, c, u, t[n + 6], 9, -1069501632), u = k(u, f, a, c, t[n + 11], 14, 643717713), c = k(c, u, f, a, t[n], 20, -373897302), a = k(a, c, u, f, t[n + 5], 5, -701558691), f = k(f, a, c, u, t[n + 10], 9, 38016083), u = k(u, f, a, c, t[n + 15], 14, -660478335), c = k(c, u, f, a, t[n + 4], 20, -405537848), a = k(a, c, u, f, t[n + 9], 5, 568446438), f = k(f, a, c, u, t[n + 14], 9, -1019803690), u = k(u, f, a, c, t[n + 3], 14, -187363961), c = k(c, u, f, a, t[n + 8], 20, 1163531501), a = k(a, c, u, f, t[n + 13], 5, -1444681467), f = k(f, a, c, u, t[n + 2], 9, -51403784), u = k(u, f, a, c, t[n + 7], 14, 1735328473), c = k(c, u, f, a, t[n + 12], 20, -1926607734), a = R(a, c, u, f, t[n + 5], 4, -378558), f = R(f, a, c, u, t[n + 8], 11, -2022574463), u = R(u, f, a, c, t[n + 11], 16, 1839030562), c = R(c, u, f, a, t[n + 14], 23, -35309556), a = R(a, c, u, f, t[n + 1], 4, -1530992060), f = R(f, a, c, u, t[n + 4], 11, 1272893353), u = R(u, f, a, c, t[n + 7], 16, -155497632), c = R(c, u, f, a, t[n + 10], 23, -1094730640), a = R(a, c, u, f, t[n + 13], 4, 681279174), f = R(f, a, c, u, t[n], 11, -358537222), u = R(u, f, a, c, t[n + 3], 16, -722521979), c = R(c, u, f, a, t[n + 6], 23, 76029189), a = R(a, c, u, f, t[n + 9], 4, -640364487), f = R(f, a, c, u, t[n + 12], 11, -421815835), u = R(u, f, a, c, t[n + 15], 16, 530742520), c = R(c, u, f, a, t[n + 2], 23, -995338651), a = O(a, c, u, f, t[n], 6, -198630844), f = O(f, a, c, u, t[n + 7], 10, 1126891415), u = O(u, f, a, c, t[n + 14], 15, -1416354905), c = O(c, u, f, a, t[n + 5], 21, -57434055), a = O(a, c, u, f, t[n + 12], 6, 1700485571), f = O(f, a, c, u, t[n + 3], 10, -1894986606), u = O(u, f, a, c, t[n + 10], 15, -1051523), c = O(c, u, f, a, t[n + 1], 21, -2054922799), a = O(a, c, u, f, t[n + 8], 6, 1873313359), f = O(f, a, c, u, t[n + 15], 10, -30611744), u = O(u, f, a, c, t[n + 6], 15, -1560198380), c = O(c, u, f, a, t[n + 13], 21, 1309151649), a = O(a, c, u, f, t[n + 4], 6, -145523070), f = O(f, a, c, u, t[n + 11], 10, -1120210379), u = O(u, f, a, c, t[n + 2], 15, 718787259), c = O(c, u, f, a, t[n + 9], 21, -343485551), a = E(a, r), c = E(c, o), u = E(u, i), f = E(f, l);
//     return [a, c, u, f];
// }
//
// function _(t) {
//     var e = void 0,
//         n = "";
//     for (e = 0; e < 32 * t.length; e += 8) n += String.fromCharCode(t[e >> 5] >>> e % 32 & 255);
//     return n;
// }
//
// function N(t, e) {
//     var n = void 0
//         , r = I(t)
//         , o = []
//         , i = [];
//     for (o[15] = i[15] = void 0,
//          r.length > 16 && (r = F(r, 8 * t.length)),
//              n = 0; n < 16; n += 1)
//         o[n] = 909522486 ^ r[n],
//             i[n] = 1549556828 ^ r[n];
//     var l = F(o.concat(I(e)), 512 + 8 * e.length);
//     return _(F(i.concat(l), 640))
// }
//
// function j(t) {
//     var e = "0123456789abcdef"
//         , n = ""
//         , r = void 0
//         , o = void 0;
//     for (o = 0; o < t.length; o += 1)
//         r = t.charCodeAt(o),
//             n += e.charAt(r >>> 4 & 15) + e.charAt(15 & r);
//     return n
// }
//
//
// function Y(t, e) {
//     return j(N(t, e))
// }
// console.log(Y('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36', 'bbbef4d0-43f0-11ee-943d-35416425a3b0'))
// function ie(t) {
//     for (var e = "", n = "", r = 0; r < t.length; r++) {
//         var o = t.charCodeAt(r);
//         o >= 48 && o <= 57 ? e += t[r] : n += o % 10
//     }
//     return e + n
// }
//
// // function _(t) {
// //            var e, n, r = "0123456789abcdef", a = "";
// //            for (n = 0; n < t.length; n += 1)
// //                e = t.charCodeAt(n),
// //                a += r.charAt(e >>> 4 & 15) + r.charAt(15 & e);
// //            return a
// //        }
// function Jt(t, e) {
//     function _(t) {
//         var e, n, r = "0123456789abcdef", a = "";
//         for (n = 0; n < t.length; n += 1)
//             e = t.charCodeAt(n),
//                 a += r.charAt(e >>> 4 & 15) + r.charAt(15 & e);
//         return a
//     }
//
//     var n = _(N(e, t));
//     try {
//         for (var r = function (t) {
//             for (var e = "", n = "", r = 0; r < t.length; r++) {
//                 var a = t.charCodeAt(r);
//                 a >= 48 && a <= 57 ? e += t[r] : n += a % 10
//             }
//             return e + n
//         }(n), a = "", o = 0; o < r.length; o += 2)
//             a += r[o];
//         return a
//     } catch (e) {
//
//     }
// }
//
// let t = 'd83eb229-6870-1031-9f79-3fa1a5320e13:v7.6.2:263'
// let e = '[{"t":"PX10816"""d":{"PX10360":"https://www.chegg.com/"""PX10929":0""PX11186":"Win32"""PX10622":0""PX10272":6869""PX10970":3600""PX10094":1690441304937""PX11004":1690441304948""PX10206":"d83eb229-6870-1031-9f79-3fa1a5320e13"""PX10088":false}}]'
//
// t = `[{"t":"PX11590","d":{"PX11431":1693057908455,"PX12069":["PDF Viewer","Chrome PDF Viewer","Chromium PDF Viewer","Microsoft Edge PDF Viewer","WebKit built-in PDF"],"PX12286":5,"PX11576":true,"PX12318":true,"PX11384":true,"PX11886":true,"PX11583":"en-US","PX12458":"MacIntel","PX11681":["en-US","en","zh-CN","ru"],"PX11754":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36","PX12037":true,"PX11390":-480,"PX11621":8,"PX11657":4,"PX12081":"Gecko","PX11908":"20030107","PX12314":"5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36","PX11829":true,"PX11464":true,"PX12054":2,"PX11821":"Netscape","PX11479":"Mozilla","PX11674":true,"PX12241":100,"PX11372":false,"PX11683":5.35,"PX11561":"4g","PX11877":true,"PX12100":true,"PX12506":"x86","PX12507":"64","PX12508":[{"brand":"Not.A/Brand","version":"8"},{"brand":"Chromium","version":"114"},{"brand":"Google Chrome","version":"114"}],"PX12509":false,"PX12510":"","PX12511":"macOS","PX12512":"13.2.0","PX12513":"114.0.5735.198","PX12548":true,"PX12549":true,"PX12588":"webkit","PX12551":"https:","PX12553":"Asia/Shanghai","PX12567":"w3c","PX12576":"screen","PX12555":{"plugext":{"0":{"f":"internal-pdf-viewer","n":"PDF Viewer"},"1":{"f":"internal-pdf-viewer","n":"Chrome PDF Viewer"},"2":{"f":"internal-pdf-viewer","n":"Chromium PDF Viewer"},"3":{"f":"internal-pdf-viewer","n":"Microsoft Edge PDF Viewer"},"4":{"f":"internal-pdf-viewer","n":"WebKit built-in PDF"}},"plugins_len":5},"PX12583":{"smd":{"ok":true,"ex":false}},"PX12578":{},"PX12594":false,"PX12566":false,"PX12571":"36813bc5","PX12579":{"support":true,"status":{"effectiveType":"4g","rtt":100,"downlink":5.35,"saveData":false}},"PX12581":"default","PX12582":3,"PX12587":false,"PX12278":true,"PX11694":false,"PX12294":false,"PX12514":true,"PX12515":"TypeError: Cannot read properties of undefined (reading 'width')","PX12516":"webkit","PX12517":33,"PX12518":false,"PX12545":false,"PX12593":false,"PX12595":"AudioData.SVGAnimatedAngle.SVGMetadataElement","PX11804":"0447d3a80396b9d8ec64794859fd80ad","PX12118":"cjl06t73f2l7lpofs9j0","PX11746":"836e16c47431c942e975cc938fbdb047","PX11371":"be5ca4effdff6b09a2e87e9ba4f548d8","PX12501":"3180497098e8757182535322d779dc2d","PX12597":1,"PX12573":"83f24ee","PX12207":0,"PX11538":2,"PX11984":"TypeError: Cannot read properties of null (reading '0')\\n    at $C_mMY (https://client.px-cloud.net/PXVb73hTEg/main.min.js:909:13)\\n    at $C_iLQ (https://client.px-cloud.net/PXVb73hTEg/main.min.js:2196:36)\\n    at $C_qCQ (https://client.px-cloud.net/PXVb73hTEg/main.min.js:2175:23)\\n    at https://client.px-cloud.net/PXVb73hTEg/main.min.js:2173:13","PX11645":"https://www.flyfrontier.com/","PX11597":[],"PX12023":"","PX11337":false,"PX11701":"75558673775375206817","0222?104002402571?60":"1333>015113513460>71","PX12454":2385,"PX11508":"49e5084e","PX11452":"7c5f9724","PX12218":"65d826e0","PX12481":"a9269e00","PX11780":"50a5ec55","PX11529":41318015,"PX11555":4294705152,"PX11833":55951815,"PX11840":"Sat Aug 26 2023 21:51:51 GMT+0800 (中国标准时间)","PX11526":false,"PX11684":false,"PX11812":false,"PX12335":true,"PX12080":0,"PX11678":false,"PX11349":"visible","PX12397":false,"PX11387":0,"PX12150":2560,"PX12304":true,"PX11651":970,"PX11867":"missing","PX12254":true,"PX11540":true,"PX11548":false,"PX11446":true,"PX12550":1,"PX12431":0,"PX11991":3,"PX11837":9,"PX11632":0,"PX11409":9,"PX12544":true,"PX12589":"succeeded","PX11524":true,"PX12330":"109|66|66|70|80","PX11705":545,"PX11938":true,"PX11602":true,"PX12021":"false","PX12421":"false","PX12124":1,"PX11609":1,"PX12291":"","PX11881":["loadTimes","csi","app"],"PX11539":"64556c77","PX11528":"","PX12271":"10207b2f","PX11849":"10207b2f","PX12464":"90e65465","PX11356":true,"PX12426":true,"PX11791":true,"PX11517":true,"PX12520":true,"PX12524":"4YC14YCd4YCd4YCV4YCe4YCX4YGS5J256aus7r266YaI5oCR7r27","PX12527":"3207084bd110f1ac964863e23aa78e04","PX12260":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36","PX12249":false,"PX11897":"90e65465","PX11843":2560,"PX11781":1080,"PX12121":2560,"PX12128":970,"PX12387":"2560X1080","PX12003":24,"PX11380":24,"PX11494":1169,"PX12411":859,"PX12443":0,"PX12447":0,"PX11533":true,"PX12079":false,"PX11303":false,"PX11515":false,"PX12133":false,"PX12340":false,"PX11738":false,"PX11723":false,"PX11389":false,"PX11839":false,"PX11460":false,"PX12102":false,"PX11378":false,"PX12317":false,"PX12169":2,"PX11902":1,"PX11560":10028,"PX11332":1693057908377,"PX12248":3600,"PX11385":1693057904668,"PX12280":1693057911061,"PX11496":"b16c1090-4417-11ee-b7a9-c1daa79d4fc0","PX12564":null,"PX12565":-1,"PX11379":false}}]`
// e = "b16c1090-4417-11ee-b7a9-c1daa79d4fc0:v8.6.4:314"
//
// let res = Jt(t, e);
// console.log(111, res)
// console.log(Jt(res,e))
//
// function sss(t) {
//     return btoa(encodeURIComponent(t).replace(/%([0-9A-F]{2})/g, (function (t, e) {
//             return String.fromCharCode("0x" + e)
//         }
//     )))
// }
//
// console.log(sss('1604064986000'))
//
// function yl() {
//     var t = [
//         "171942oARFUk",
//         "7yRtXhk",
//         "floor",
//         "144847yKlojB",
//         "1226080GxvQRV",
//         "indexOf",
//         "split",
//         "slice",
//         "length",
//         "275532BAADdl",
//         "charCodeAt",
//         "1604064986000",
//         "1200393dOHuyA",
//         "97227jRXOWB",
//         "8MTVeQo",
//         "264496VgbcvF",
//         "substring",
//         "15YAslii",
//         "push",
//         "sort"
//     ]
//     return (yl = function () {
//             return t
//         }
//     )()
// }
//
// function vl(t, n) {
//     var e = yl();
//     return (vl = function (t, n) {
//             return e[t -= 376]
//         }
//     )(t, n)
// }
//
// function Bn(t, n) {
//     for (var e = "", r = 0; r < t.length; r++)
//         e += String.fromCharCode(n ^ t.charCodeAt(r));
//     return e
// }
// const encode = (t) => {
//    return btoa(encodeURIComponent(t).replaceAll(/%([0-9A-F]{2})/g, function (t, e) {
//           return String.fromCharCode("0x" + e);
//         }))
// }
//
// const decode = (t) => {
//     let d = atob(t);
//     let t2 = decodeURIComponent(d)
//    let  t1 =  d.replaceAll(/0x([0-9A-F-z]{2})/g, function (t, e) {
//        console.log(t,e, '%'+e)
//           return String.fromCharCode("%" + e);
//         })
//     return t1
// }
// var $ = function (t) {
//     return btoa(encodeURIComponent(t).replace(/%([0-9A-F]{2})/g, (function (t, n) {
//             return String.fromCharCode("0x" + n)
//         }
//     )))
// }
// var Zl = function (t, n, e, r, a) {
//     return Math[vl(378)]((t - n) / (e - n) * (a - r) + r)
// }
// var u = function (t, n, e) {
//     var Z = Bn($(e), 10), d = [], v = -1
//
//     for (var p = 0; p < t['length']; p++) {
//         var w = Math['floor'](p / Z['length'] + 1)
//             , m = p >= Z['length'] ? p % Z['length'] : p
//             , g = Z['charCodeAt'](m) * Z['charCodeAt'](w);
//         g > v && (v = g)
//     }
//     for (var X = 0; t['length'] > X; X++) {
//         var b = Math['floor'](X / Z['length']) + 1
//             , T = X % Z['length']
//             , R = Z['charCodeAt'](T) * Z['charCodeAt'](b);
//         for (R >= n && (R = Zl(R, 0, v, 0, n - 1)); -1 !== d['indexOf'](R);)
//             R += 1;
//         d['push'](R)
//     }
//     var A = d['sort']((function (t, n) {
//             return t - n
//         }
//     ));
//     return A
// }
//
// var o = 'G^S}DNK8DNa>D`K}GK77'
// var ur = u(o
//     , 364, '632ced90-2c62-11ee-9f7e-270e803e7664')
// console.log(ur)
//
// function getWords(len,uuid){
//     return u(o, len,uuid)
// }
// function rrr(t, e, n) {
//     // console.log('t',t)
//     // console.log('e',e)
//     // console.log('n',n)
//     var r = '', o = 0, a = t.split('')
//     for (var i = 0; i < t.length; i++){
//         // console.log(i,o,n[i], n[i] - i - 1, e.substring(o, n[i] - i - 1), a[i], e.substring(o, n[i] - i - 1)+a[i])
//         // console.log(i, o, n[i] - i - 1, n[i] - i - 1-o)
//         let tt = e.substring(o+i, n[i] - i - 1+i);
//         // tt = i === 0? tt : tt.slice(1,)
//         r += tt
//         //     // + a[i]
//         // console.log(tt)
//         // console.log(r.length, r)
//         // // r = o === 0 ?r.slice(0, r.length - 1) : r.slice(0, r.length - 2)
//         o = n[i] - i - 1
//     }
//
//
//     r += e.substring(o+20)
//     return  r
// }
//
// // console.log(11, rrr(o, aa, ur))
//
// function enc(payload, uuid, sts) {
//
//     let fv = 'G^S}DNK8DNa>D`K}GK77'
//     sts = sts.length === 0 ? '1604064986000' : sts
//     fv = ie(encode(sts))
//     let t3 = u(fv
//         , payload.length-20, uuid)
//     // console.log(t3)
//     let decodePayload =  rrr(fv, payload, t3)
//     console.log(decodePayload)
//     // console.log(atob(decodePayload))
//
//     let res = ''
//     let aa = decode(decodePayload);
//     for (let i = 0; i < aa.length; i++) {
//         res += String.fromCharCode(50 ^ aa.charCodeAt(i))
//     }
//     // console.log(aa)
//     console.log(res)
//     return res
// }
//
// let aa = 'aUkQRhAIEGJqAwACCwcQHhBWEAhJEGJqAwMEBgcQCBBUW15XCB0dHXcIHWJrZnp9fGFhYR1CSgEdQUZTRltRHVtcVldKHFpGX14QHhBiagMAAAIFEAgCHhBiagMABgcKEAgQZVtcAQAQHhBiagMDCwIAEAgCHhBiagMDBwQCEAgKCx4QYmoDAAAGChAIAQQCAh4QYmoDAwEKBxAIAwQLAgcAAQsEBQUFBR4QYmoDAAAKAhAIAwQLAgcAAQsEBQUKAR4QYmoDAwYLBBAIEFcLBwRQUVYCHwBWAlAfAwNXVx9TAANRHwYBAwADBwUFB1MFUxAeEGJqAwAHBAYQCFxHXl4eEGJqAwAHBAcQCB8DHhBiagMDAQULEAhGQEdXT09v'
// aa  = `aUkQRhAIEGJqAwMLBgIQHhBWEAhJEGJqAwMBBQsQCEZAR1ceEGJqAwABAgUQCBBiagMDBQYHEB4QYmoDAwQEChAIEEJKWlEQHhBiagMAAQYKEAhUU15BVx4QYmoDAwQGBxAIEFpGRkJBCB0dRUVFHEVTXl9GTQEY^cUSV1fHVBeXVFZV1YNR0BeD34Bc?EEN_tQA}GADawFjRH1DmZwJ/WHcGf1hnpS34BfF5QdUpeUVx/DxRHR1tWSDwsLBwVX8UAQCDH1QBA^mw8sfAwENXUB9TVFFRHwdQClZRAVZRC1cEABREW1YPCwpWBwZ[7WVwMfVAEDCx8DA1dQHwoKBQEfV1YLB1Z7QVwILAVNXFFUPEE9Pbw==`
// aa = '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^QQBBAYQCBAGAwEOAAICBQMGAgIDDwUGBwIHBRAeEGJqAwAGBwYQCAYEAAMeEGJqAwABAQIQCBADAgtOBAROBAROBQJOCgIQHhBiagMDBQIHEAgDAwMeEGJqAwMLAQoQCEZAR1ceEGJqAwMEAgAQCEZAR1ceEGJqAwACAAMQCBBUU15BVxAeEGJqAwAGAAMQCBBUU15BVxAeEGJqAwADAAYQCAMeEGJqAwMEAgsQCAMeEGJqAwAACwMQCBAQHhBiagMDCgoDEAhpEF5dU1ZmW19XQRAeEFFBWxAeEFNCQhBvHhBiagMABgIKEAhpbx4QYmoDAwoCBhAIEAQDAFMKBgoFAQIFBFMFBANXB1AHAVBRAQAKVwRUBVFQEB4QYmoDAAMDChAIEFFZRAUHCwIEWAVeX1QKAAIHQENVEB4QYmoDAwUGBBAIEFNQA1ABCwUDAgILCgYDAgoHUQMGAQULC1ZUCwELCwBXEB4QYmoDAwEFAxAIEApUASAULVwUFAFFWUVdRAwIGAlYDAgYDA1NXAwZQUAYKEB4QYmoDAAcCAxAIEFRWBAsBVAcBBwdUUAMAUAELBVEBVAQBBgMKCgEBB1MDEB4QYmoDAAcGBhAIRkBHVx4QYmoDAAcKCxAIEEFHUVFXV1ZXVhAeEGJqAwMHAAYQCEZ?AR1ceEGJqAwAAAgUQCAIeEGJqAwMHAQoQCAEeEGJqAwMLCgYQCBBmS0JXd0BAXUAIEnFTXFxdRhJAV1NWEkJAXUJXQEZbV0ESXVQSXEdeXhIaQFEdTVltcVRIVAhUbblwSEhISU0NYScVcSGlpGRkJBCB0dRUVFHEVTXl9TQEYcUV1fHUJKHWJqRwRQAkNWAGEdW1xbRhxYQQgACAAACwYLG25cEhI_?SElNGEntdEhpaRkZCQQgdHUVFRRxFU15fU0BGHFFdXx1CSh1iakcEUGAJDVgBhHVtcW0YcWEEIAAgEAQMBBxtuXBISEhJTRhJtXR^IaWkZGQkEIHR1FRUUcRVNeX1NARhxRXV8dQkodYmpHBFACQ1YAYR1bXFtGHFhBCAAGIBAsBBQobblwSEhISU0YSWkZGQk?EIHR1FRUUcRVNeX1NARhxRXV8dQkodYmpHBFACQ1YAYR1bXFtGHFhBCAAIBQUBBwcQHhBiagMDBAYHEAgQWkZGQkEIHR1FRUUcRVNeX1NARhxRXV8dUF5dUVlXVg1HQF4PfgFwS1AAYANrAWNEfWZnAn9YdwZ/WGdLfgF8XlB1Sl5RXH8PFEdHW1YPCwsHBVdQBAIfVAEDCx8DA1dQH1NUUVEfB1AKVlEBVlELVwQAFERbVg8LClYHBlZXAx9UAQMLHwMDV1AfCgoFAR9XVgsHVlBXAgsBU1cUVQ8QHhBiagMDBwsFEAhpbx4QYmoDAAIAARAIEBAeEGJqAwMBAQUQCFRTXkFXHhBiagMDCgYFEAhGQEdXHhBiagMDBwELEAgQBAYHBwRRBQUQHhBiagMDBwAKEAgQEB4QYmoDAAAFAxAIEAMCAAIFUABUEB4QYmoDAwoGCxAIEAMCAAIFUABUEB4QYmoDAAYEBhAIEAsCVwQHBgQHEB4QYmoDAwEHBBAIRkBHVx4QYmoDAAYABBAIRkBHVx4QYmoDAwULAxAIRkBHVx4QYmoDAwcDBRAIRkBHVx4QYmoDAAcAAhAIRkBHVx4QYmoDAAcABhAIEAZrcQMGa3FWBmtxVgZrcWQGa3FXBmtxagZrdWEHeAAHBFNHQQVAAAQEa1N7B11xYAVAAAUQHhBiagMABwAFEAgQAQACBQIKBlBWAwMCVANTUQsEBgoEAVcAAVNTBQpXAgYQHhBiagMDBAQBEAgQC1QFBAAFBQEQHhBiagMAAQYFEAgQVlNXAwIHBgoQHhBiaD`gMAAQoLEAgQEB4QYmoDAwoKARAIEFMBVgMAUm:QYQHhBiagMDCwcLEAgQCgACAgAGBwUQHhBiagMABgoBEAgQUwFWAwBRBhAeEGJqAwAABAIQCBB/XUhbXl5THQccAhIafDK1NRW1xGXUFaCRJ7XEZXXhJ/U1ESfWESahIDAm0DB20FGxJzQkJeV2VXUHlbRh0HAQUcAQQSGnl6Zn9 HhJeW1lXEnVXUVldGxJxWkBdX1cdAwMGHAIcAhwCEmFTVFNAWx0HAQUcAQQQHhBiagMAAAYLEAhUU15BVx4QYmoDAwoLBRAIEAsCVwQHBgQ7HEB4QYmoDAAMECxAIAx4QYmoDAwsCABAIAx4QYmoDAwcEAhAICgQCBh4QYmoDAwEBABAIAwQLCgcLAwELBAsFAx4QYmoDAAAGChAIAQQCAh4QYmoDAwEKBxAIAwQLCgcLAwELBAcLBx4QYmoDAAAKAhAIAwQLCgcLAwYCAgILAB4QYmoDAwYLBBAIEAsLBwVXUAQCH1QBAwsfAwNXUB9TVFFRHwdQClZRAVZRC1cEABAeEGJqAwAHBAYQCFxHXl4eEGJqAwAHBAcQCB8DHhBiagMDAQULEAhGQEdXHhBiagMAAQIFEAgQYmoDAwUGBxAeEGJqAwMEBAoQCBBCSlpREB4QYmo7DAAEGChAIVFNeQVdPT28='
//
// aa = ' ^FXHhBiagMDCgMAEAhUU15BVx4QYmoDAAEBBxAIRkBHVx4QYmoDAAIKAhAIAh4QYmoDAwQFChAIVFNeQVceEGJqAwMBBgsQCBBEW0FbUF5XEB4QYmoDAAELBRAIVFNeQVceEGJqAwMBCgUQCAIeEGJqAwADBwIQCAAHBAIeEGJqAwABAgYQCEZAR1ceEGJqAwMEBwMQSCAsFAh4QYmoDAwoEBRAIEF9bQUFbXFUQHhBiagMAAAcGEAhGQEdXHhBiagMDBwYCEAhGQEdXHhBiagMDBwYKEAhUU15BVx4QYmoDAwYGBBAIRkBHVx4QYmoDAAcHAhAIAx4QYmoDAAYBAxAIAh4QYmoDAwsLAxAIBh4QYmoDAwoBBRAIAwceEGJqAwMEAQAQCAIeEGJq}DAwMGAgsQCAseEGJqAwAAAgUQCAIeEGJqAwMHAQoQCAAeEGJqAwMLCgYQCBBmS0JXd0BAXUAIEnFTXFxdRhJAV1NWEkJAXUJXQEZbV0ESXVQSXEdeXhIaQFdTVltcVRIVAhUbblwSEhISU0YSFnFtX39rEhpaRkZCQQgdHVFeW1dcRhxCSh9RXl1HVhxcV0YdYmpkUAUNBWmZ3VR1fU1tcHF9bXBxYQQgLAgsIAwEbblwSEhISU0YSFnFtW35jEhpaRkZCQQgdHVFeW1dcRhxCSh9RXl1HVhxcV0YdYmpkUAUBWmZ3VR1fU1tcHF9bXBxYQQgAAwsECAEEG25cEhISElNGEhZxbUNxYxIaWkZGQkEIHR1RXltXXEYcQK8DNkofUV5dR1YcXFdGHWJqZFAFAVpmd1UdX1NbXBxfW1wcWEEIAAMFBwgAARtuXBISEhJTRhJaRkZCQQgdHVFeW1dcRhxCSh9RXl1HVhxcV0YdYmpkUAUBWmZ3VR1fU1tcHF9bXBxYQQgAAwUBCAMBEB4QYmoDAwQGBxAIEFpGRkJBCB0dRUVFHFReS1RAXVxGW1dAHFFdXx0QHhBiagMDBwsFEAhpbx4QYmoDAAIa>AARAIEBAeEGJqAwMBAQUQCFRTXkFXHhBiagMDBQIDEAgQAwoDAgAFCwMBAgYABAsDBwELBgIQHhAEDQQFBwIMBAD`YFAQcDDAQABgwBBRAIEAUMBQQGAw0FBwQABgINBQEHDQAEEB4QYmoDAAYHBhAICgcAAx4QYmoDAAcGBhAIRkBHVx4QYmoDAAcKCK}xAIEEFHUVFXV1ZXVhAeEGJqAwMHAAYQCEZAR1ceEGJqAwMKAGgYQCBABBlYEC1AGUFEDVAsDC1YGBVdXVgUFUFdRAgILVwBQARAeEGJqAwADAwoQCBBRWFlEKRFFaBVACVVxeQkMGA19HVRAeEGJqAwMFBgQQCBAKAQRXAwRRBgUGAQNRCwYAVwsFB1FRCwEKVFBWUAIGBRAeEGJqAwMBBQMQCBBQVwdRUwZXVFRWVFQEUAILUwBXCgVXC1BTBlQHBgpWChAeEGJqAwAHAgMQCBABAwoCBgsFAgsKVwoFBwUDCgAHAQcBAABWBQULVlEAVhAeEGJqAwADBAsQCAAeEGJqAwMLAgAQC7AMeEGJqAwMHBAIQCAYACwQBHhBiagMDAQEAEAgDBAsBAgcECwYEAgsKHhBiagMAAAYKEAgBBAICHhBiagMDAQoHEAgDBAsBAgcECwADBwoBHhBiagMAAAoCEAgDBAsBAgcECwYFBAIHHhBiagMDBgsEEAgQBAUFBwoCVwIfBgYDBx8DA1dXH1AEAAQfVwcHA1EHUAADU1RWEB4QYmoDAAcEBhAIXEdeXh4QYmoDAAcEBxAIHwMeEGJ7qAwMBBQsQCFRTXkFXT09v'
// // console.log(333,enc(aa, '9957eb60-f319-11eb-afcc-5b8dc3dc9e62', '1604064986001'))
// console.log(333,enc(aa, '48a54e70-7313-11ee-bd7e-a7b57f1238cd', '1604064986001'))
//
// // module.exports = {
// //     getWords: getWords
// // }
// // t = {}
// // eval(`t.Ir = function(t,e){
// //     function _r() {
// //   var t = ["fetch", "250459zlMVoB", "toJSON", "314797wPgMbX", "csi", "dispatchToListener", "length", "install", "webdriver", "19310mguXvS", "indexOf", "runtime", "createElement", "protocol", "2696FDQYwO", "324HGENDQ", "loadTimes", "onInstallStageChanged", "http", "6Lrhxfe", "webstore", "cnVudGltZQ==", "timing", "Y2hyb21l", "4290zNWVho", "3771JHWUIa", "sendMessage", "YXBw", "795028sWWHtb", "153NYCMXB", "1082590zkQNux", "constructor", "6BnRIvI", "290192onzBLk", "performance"];
// //   return (_r = function () {
// //     return t;
// //   })();
// // };!function (t, e) {
// //   for (var v = Ir, p = t();;) try {
// //     if (447112 === -parseInt(v(137)) / 1 * (-parseInt(v(168)) / 2) + -parseInt(v(161)) / 3 * (parseInt(v(150)) / 4) + parseInt(v(166)) / 5 * (parseInt(v(155)) / 6) + parseInt(v(139)) / 7 + -parseInt(v(134)) / 8 * (parseInt(v(165)) / 9) + -parseInt(v(145)) / 10 * (parseInt(v(160)) / 11) + parseInt(v(151)) / 12 * (parseInt(v(164)) / 13)) break;
// //     p.push(p.shift());
// //   } catch (t) {
// //     p.push(p.shift());
// //   }
// // }(_r);function Ir(t, e) {
// //   var n = _r();
// //   return (Ir = function (t, e) {
// //     return n[t -= 134];
// //   })(t, e);
// // }
// // return Ir(t,e)
// // }`)
// //
// // console.log(t.Ir(135))
// //
// //
// //  function Me(t) {
// //       t = "" + t;
// //       for (var e, n = 0, r = 0; r < t.length; r++) {
// //         n = (n << 5) - n + t.charCodeAt(r), n |= 0;
// //       }
// //       return e = n, (e |= 0) < 0 && (e += 4294967296), e.toString(16);
// //     }
// //
// // console.log(Me(console.log))
// // var i = function () {
// //     try {
// //         if (atob && "test" === atob("dGVzdA==")) return atob;
// //     } catch (t) {
// //     }
// //
// //     function t(t) {
// //         this.message = t;
// //     }
// //
// //     t.prototype = new Error(), t.prototype.name = "InvalidCharacterError";
// //     return function (e) {
// //         var n = String(e).replace(/[=]+$/, "");
// //         if (n.length % 4 == 1) throw new t("'atob' failed: The string to be decoded is not correctly encoded.");
// //         for (var r, i, a = 0, o = 0, c = ""; i = n.charAt(o++); ~i && (r = a % 4 ? 64 * r + i : i, a++ % 4) ? c += String.fromCharCode(255 & r >> (-2 * a & 6)) : 0) i = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(i);
// //         return c;
// //     };
// // }();
// //
// // function oaa(n) {
// //     for (var c = atob(n), u = "", l = 0; l < c.length; ++l) {
// //         var s = "j6yKtVh".charCodeAt(l % 7);
// //         u += String.fromCharCode(s ^ c.charCodeAt(l));
// //     }
// //     console.log(u)
// //     // console.log(atob(u))
// //     return u
// // }
// //
// // console.log('oaa',oaa("Om5IekJjWg"))
// //
// //
// //
// // function oaa2(n) {
// //     for (var c = n, u = "", l = 0; l < c.length; ++l) {
// //         var s = "j6yKtVh".charCodeAt(l % 7);
// //         // console.log(l, s ^  c.charCodeAt(l))
// //         u += String.fromCharCode(s ^ c.charCodeAt(l));
// //     }
// //     for (var c = n, uu = "", l = 0; l < c.length; ++l) {
// //         var s1 = "1Lx5B7o".charCodeAt(l % 7);
// //         // console.log(l, s ^  c.charCodeAt(l))
// //         uu += String.fromCharCode(s1 ^ c.charCodeAt(l));
// //     }
// //     // console.log(u)
// //     // console.log(atob(u))
// //     console.log(btoa(u).replaceAll('=',''))
// //     return  btoa(uu).replaceAll('=','')
// // }
// // console.log('oaa2',oaa2("PX12362"))
// //
// //
// //     function $C_pMN(t) {
// //       return l(Z) === "function" ? Z(t) : function (t) {
// //         var e;
// //         var n;
// //         var r;
// //         var i;
// //         var a = [];
// //         var o = 0;
// //         var c = t.length;
// //         try {
// //           if (/[^+/=0-9A-Za-z]/.test(t) || /=/.test(t) && (/=[^=]/.test(t) || /={3}/.test(t))) return null;
// //           for (c % 4 > 0 && (c = (t += v.Array(4 - c % 4 + 1).join("=")).length); o < c;) {
// //             for (n = [], i = o; o < i + 4;) n.push("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(t.charAt(o++)));
// //             for (r = [((e = (n[0] << 18) + (n[1] << 12) + ((63 & n[2]) << 6) + (63 & n[3])) & 255 << 16) >> 16, 64 === n[2] ? -1 : (65280 & e) >> 8, 64 === n[3] ? -1 : 255 & e], i = 0; i < 3; ++i) (r[i] >= 0 || 0 === i) && a.push(String.fromCharCode(r[i]));
// //           }
// //           return a.join("");
// //         } catch (t) {
// //           return null;
// //         }
// //       }(t);
// //     }
// //     var Z = function () {
// //       try {
// //         return atob;
// //       } catch (t) {}
// //     }();
// // function l(t) {
// //       return l = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (t) {
// //         return typeof t;
// //       } : function (t) {
// //         return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t;
// //       }, l(t);
// //     }
// // console.log($C_pMN("DFcSLiA5Aw9Y"))
// //
// // function $C_dMU(t) {
// //       t = "" + t;
// //       for (var e, n = 0, r = 0; r < t.length; r++) {
// //         n = (n << 5) - n + t.charCodeAt(r), n |= 0;
// //       }
// //       return e = n, (e |= 0) < 0 && (e += 4294967296), e.toString(16);
// //     }
// //
// // console.log($C_dMU('[object Object]'))



/**
 * @desc 贝塞尔曲线算法，包含了3阶贝塞尔
 */
class Bezier {
    /**
       * @desc 获取点，这里可以设置点的个数
       * @param {number} num 点个数
       * @param {Array} p1 起点坐标
       * @param {Array} p2 终点坐标
       * @param {Array} p3 点坐标
       * @param {Array} p4 点坐标
       * 如果参数是 num, p1, p2 为一阶贝塞尔
       * 如果参数是 num, p1, c1, p2 为二阶贝塞尔
       * 如果参数是 num, p1, c1, c2, p2 为三阶贝塞尔
       */
    getBezierPoints(num = 100, p1, p2, p3, p4) {
        let func;
        const points = [];
        if (!p3 && !p4) {
            func = this.oneBezier;
        } else if (p3 && !p4) {
            func = this.twoBezier;
        } else if (p3 && p4) {
            func = this.threeBezier;
        } else {
            return
        }
        for (let i = 0; i < num; i++) {
            points.push(func(i / num, p1, p2, p3, p4));
        }
        if (p4) {
            points.push([...p4]);
        } else if (p3) {
            points.push([...p3]);
        }
        return points;
    }

    /**
       * @desc 一阶贝塞尔
       * @param {number} t 当前百分比
       * @param {Array} p1 起点坐标
       * @param {Array} p2 终点坐标
       */
    oneBezier(t, p1, p2) {
        const [x1, y1] = p1;
        const [x2, y2] = p2;
        let x = x1 + (x2 - x1) * t;
        let y = y1 + (y2 - y1) * t;
        return [x, y];
    }

    /**
       * @desc 二阶贝塞尔
       * @param {number} t 当前百分比
       * @param {Array} p1 起点坐标
       * @param {Array} p2 终点坐标
       * @param {Array} cp 控制点
       */
    twoBezier(t, p1, cp, p2) {
        const [x1, y1] = p1;
        const [cx, cy] = cp;
        const [x2, y2] = p2;
        let x = (1 - t) * (1 - t) * x1 + 2 * t * (1 - t) * cx + t * t * x2;
        let y = (1 - t) * (1 - t) * y1 + 2 * t * (1 - t) * cy + t * t * y2;
        return [x, y];
    }

    /**
       * @desc 三阶贝塞尔
       * @param {number} t 当前百分比
       * @param {Array} p1 起点坐标
       * @param {Array} p2 终点坐标
       * @param {Array} cp1 控制点1
       * @param {Array} cp2 控制点2
       */
    threeBezier(t, p1, cp1, cp2, p2) {
        const [x1, y1] = p1;
        const [x2, y2] = p2;
        const [cx1, cy1] = cp1;
        const [cx2, cy2] = cp2;
        let x =
            x1 * (1 - t) * (1 - t) * (1 - t) +
            3 * cx1 * t * (1 - t) * (1 - t) +
            3 * cx2 * t * t * (1 - t) +
            x2 * t * t * t;
        let y =
            y1 * (1 - t) * (1 - t) * (1 - t) +
            3 * cy1 * t * (1 - t) * (1 - t) +
            3 * cy2 * t * t * (1 - t) +
            y2 * t * t * t;
        return [x, y];
    }

    /**
       * 多阶贝塞尔曲线的生成
       * @param {*} anchorpoints 贝塞尔基点数组
       * @param {*} pointsAmount 生成的点数
       * @returns 路径点的Array
       */
    CreateBezierPoints(anchorpoints, pointsAmount) {
        // let last = anchorpoints[anchorpoints.length - 1]
        let points = [];
        for (let i = 0; i < pointsAmount; i++) {
            let point = this.MultiPointBezier(anchorpoints, i / pointsAmount);
            points.push(point);
        }
        return points;
    }

    MultiPointBezier(points, t) {
        let len = points.length;
        let x = 0; let y = 0;
        let erxiangshi = function (start, end) {
            let cs = 1; let bcs = 1;
            while (end > 0) {
                cs *= start;
                bcs *= end;
                start--;
                end--;
            }
            return (cs / bcs);
        };
        for (let i = 0; i < len; i++) {
            let point = points[i];
            x += point[0] * Math.pow((1 - t), (len - 1 - i)) * Math.pow(t, i) * (erxiangshi(len - 1, i));
            y += point[1] * Math.pow((1 - t), (len - 1 - i)) * Math.pow(t, i) * (erxiangshi(len - 1, i));
        }
        return [x, y];
    }
}


let a = new Bezier()
let r = a.getBezierPoints(100, [100, 100], [300, 200], [400,100]);
for (let i = 0; i < r.length; i++) {
    console.log(r[i])
}


