@jolibox/implement 1.1.6-beta.1 → 1.1.6-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,7 +4,7 @@
4
4
  "packages/implement/.eslintrc.js": "7a3d2747dc887655ca9e2d3ff621f7dfd98500b9",
5
5
  "packages/implement/README.md": "5660cd88848b7a5428394cc34d881a35dd402188",
6
6
  "packages/implement/esbuild.config.js": "889e44fb2f426aae078b59a42fcfb9c2f28ebd89",
7
- "packages/implement/package.json": "06b15a1243d2d3fec2651a181683291d53ce6f53",
7
+ "packages/implement/package.json": "cdbd88fecced81ebe10f59aa891fdc50b7e92b65",
8
8
  "packages/implement/src/common/ads/ads-action-detection.ts": "5a7b9f85d7eab9e744f8a9fc7638063f43baa214",
9
9
  "packages/implement/src/common/ads/anti-cheating.ts": "62e1b5d24aa246849a17ac8cde6cfdc66e577cab",
10
10
  "packages/implement/src/common/ads/channel-policy.ts": "c6d036be5cedf0c5d545fac271c6c8447ca55d8a",
@@ -61,8 +61,8 @@
61
61
  "packages/implement/src/h5/report/event-tracker.ts": "eb52379559e584a5b3f7a5241a3555b667b18c8c",
62
62
  "packages/implement/src/h5/report/index.ts": "7154000726a72f477183d069eea5de87d12ceb7d",
63
63
  "packages/implement/src/h5/report/task-tracker.ts": "184708c10b610b305f4f87af1639d9005486218e",
64
- "packages/implement/src/index.native.ts": "39f7832965ef86a4bae707db859f64e9eb50b8af",
65
- "packages/implement/src/index.ts": "28aedcd4086e5bc32597b371d02384a90308f805",
64
+ "packages/implement/src/index.native.ts": "f34b67543b893b656e8e4b9f384ab7ce48e01495",
65
+ "packages/implement/src/index.ts": "589cbc519089861a72dbbbd7c6f6d2c94c52a608",
66
66
  "packages/implement/src/native/api/ads.ts": "bec8c772e1f881dc49030082e48b32af0c7db0fb",
67
67
  "packages/implement/src/native/api/base.ts": "c4c4d04519cdbc3a08226c620f6314ee3b151435",
68
68
  "packages/implement/src/native/api/get-system-info.ts": "d0132211c53425eed4811721ac5d577781b118a7",
@@ -74,7 +74,8 @@
74
74
  "packages/implement/src/native/api/storage.ts": "7f56694e3a7f47605512f9cee7fce48ac620c169",
75
75
  "packages/implement/src/native/api/task.ts": "26e06a3d6bbeaed34fd704d096e712448296607e",
76
76
  "packages/implement/src/native/bootstrap/bridge.ts": "3dfce00262f240342d7e29ae155ce8c1732a02cd",
77
- "packages/implement/src/native/bootstrap/index.ts": "e1ac709ac8e2f79bad35417d778007cebd268bfa",
77
+ "packages/implement/src/native/bootstrap/index.ts": "d8da06f6832a00d67cdf988c550407eeef2d9f11",
78
+ "packages/implement/src/native/bootstrap/style.ts": "e1585ae48c53fe1e03b16f08053b25254af2fbef",
78
79
  "packages/implement/src/native/js-bridge/const.ts": "96156a123e89d20b51d59865e21f216ea5a30821",
79
80
  "packages/implement/src/native/js-bridge/index.ts": "b65e1e20edcce8ce270381a9c7c79cc981761ad4",
80
81
  "packages/implement/src/native/js-bridge/invoke.ts": "755402c39f887769242b3a3cee7c51c8eb0d9f11",
package/dist/index.d.ts CHANGED
@@ -1,2 +1,9 @@
1
+ declare const SDK_INITIALIZED: unique symbol;
2
+ declare global {
3
+ interface Window {
4
+ [SDK_INITIALIZED]?: boolean;
5
+ }
6
+ }
1
7
  import './h5/report';
2
8
  import './h5/api';
9
+ export {};
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
- var so=Object.create;var Ir=Object.defineProperty;var ao=Object.getOwnPropertyDescriptor;var co=Object.getOwnPropertyNames;var lo=Object.getPrototypeOf,uo=Object.prototype.hasOwnProperty;var Ie=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,n)=>(typeof require<"u"?require:t)[n]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var fo=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var mo=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let l of co(t))!uo.call(e,l)&&l!==n&&Ir(e,l,{get:()=>t[l],enumerable:!(i=ao(t,l))||i.enumerable});return e};var ho=(e,t,n)=>(n=e!=null?so(lo(e)):{},mo(t||!e||!e.__esModule?Ir(n,"default",{value:e,enumerable:!0}):n,e));var rn=fo((tn,er)=>{(function(e){if(typeof tn=="object"&&typeof er<"u")er.exports=e();else if(typeof define=="function"&&define.amd)define([],e);else{var t;typeof window<"u"?t=window:typeof global<"u"?t=global:typeof self<"u"?t=self:t=this,t.localforage=e()}})(function(){var e,t,n;return function i(l,d,h){function _(I,x){if(!d[I]){if(!l[I]){var m=typeof Ie=="function"&&Ie;if(!x&&m)return m(I,!0);if(E)return E(I,!0);var b=new Error("Cannot find module '"+I+"'");throw b.code="MODULE_NOT_FOUND",b}var k=d[I]={exports:{}};l[I][0].call(k.exports,function(N){var K=l[I][1][N];return _(K||N)},k,k.exports,i,l,d,h)}return d[I].exports}for(var E=typeof Ie=="function"&&Ie,A=0;A<h.length;A++)_(h[A]);return _}({1:[function(i,l,d){(function(h){"use strict";var _=h.MutationObserver||h.WebKitMutationObserver,E;if(_){var A=0,I=new _(N),x=h.document.createTextNode("");I.observe(x,{characterData:!0}),E=function(){x.data=A=++A%2}}else if(!h.setImmediate&&typeof h.MessageChannel<"u"){var m=new h.MessageChannel;m.port1.onmessage=N,E=function(){m.port2.postMessage(0)}}else"document"in h&&"onreadystatechange"in h.document.createElement("script")?E=function(){var V=h.document.createElement("script");V.onreadystatechange=function(){N(),V.onreadystatechange=null,V.parentNode.removeChild(V),V=null},h.document.documentElement.appendChild(V)}:E=function(){setTimeout(N,0)};var b,k=[];function N(){b=!0;for(var V,re,J=k.length;J;){for(re=k,k=[],V=-1;++V<J;)re[V]();J=k.length}b=!1}l.exports=K;function K(V){k.push(V)===1&&!b&&E()}}).call(this,typeof global<"u"?global:typeof self<"u"?self:typeof window<"u"?window:{})},{}],2:[function(i,l,d){"use strict";var h=i(1);function _(){}var E={},A=["REJECTED"],I=["FULFILLED"],x=["PENDING"];l.exports=m;function m(T){if(typeof T!="function")throw new TypeError("resolver must be a function");this.state=x,this.queue=[],this.outcome=void 0,T!==_&&K(this,T)}m.prototype.catch=function(T){return this.then(null,T)},m.prototype.then=function(T,D){if(typeof T!="function"&&this.state===I||typeof D!="function"&&this.state===A)return this;var P=new this.constructor(_);if(this.state!==x){var U=this.state===I?T:D;k(P,U,this.outcome)}else this.queue.push(new b(P,T,D));return P};function b(T,D,P){this.promise=T,typeof D=="function"&&(this.onFulfilled=D,this.callFulfilled=this.otherCallFulfilled),typeof P=="function"&&(this.onRejected=P,this.callRejected=this.otherCallRejected)}b.prototype.callFulfilled=function(T){E.resolve(this.promise,T)},b.prototype.otherCallFulfilled=function(T){k(this.promise,this.onFulfilled,T)},b.prototype.callRejected=function(T){E.reject(this.promise,T)},b.prototype.otherCallRejected=function(T){k(this.promise,this.onRejected,T)};function k(T,D,P){h(function(){var U;try{U=D(P)}catch(G){return E.reject(T,G)}U===T?E.reject(T,new TypeError("Cannot resolve promise with itself")):E.resolve(T,U)})}E.resolve=function(T,D){var P=V(N,D);if(P.status==="error")return E.reject(T,P.value);var U=P.value;if(U)K(T,U);else{T.state=I,T.outcome=D;for(var G=-1,W=T.queue.length;++G<W;)T.queue[G].callFulfilled(D)}return T},E.reject=function(T,D){T.state=A,T.outcome=D;for(var P=-1,U=T.queue.length;++P<U;)T.queue[P].callRejected(D);return T};function N(T){var D=T&&T.then;if(T&&(typeof T=="object"||typeof T=="function")&&typeof D=="function")return function(){D.apply(T,arguments)}}function K(T,D){var P=!1;function U(q){P||(P=!0,E.reject(T,q))}function G(q){P||(P=!0,E.resolve(T,q))}function W(){D(G,U)}var Y=V(W);Y.status==="error"&&U(Y.value)}function V(T,D){var P={};try{P.value=T(D),P.status="success"}catch(U){P.status="error",P.value=U}return P}m.resolve=re;function re(T){return T instanceof this?T:E.resolve(new this(_),T)}m.reject=J;function J(T){var D=new this(_);return E.reject(D,T)}m.all=yt;function yt(T){var D=this;if(Object.prototype.toString.call(T)!=="[object Array]")return this.reject(new TypeError("must be an array"));var P=T.length,U=!1;if(!P)return this.resolve([]);for(var G=new Array(P),W=0,Y=-1,q=new this(_);++Y<P;)ne(T[Y],Y);return q;function ne(_e,Ce){D.resolve(_e).then(bt,function(fe){U||(U=!0,E.reject(q,fe))});function bt(fe){G[Ce]=fe,++W===P&&!U&&(U=!0,E.resolve(q,G))}}}m.race=le;function le(T){var D=this;if(Object.prototype.toString.call(T)!=="[object Array]")return this.reject(new TypeError("must be an array"));var P=T.length,U=!1;if(!P)return this.resolve([]);for(var G=-1,W=new this(_);++G<P;)Y(T[G]);return W;function Y(q){D.resolve(q).then(function(ne){U||(U=!0,E.resolve(W,ne))},function(ne){U||(U=!0,E.reject(W,ne))})}}},{1:1}],3:[function(i,l,d){(function(h){"use strict";typeof h.Promise!="function"&&(h.Promise=i(2))}).call(this,typeof global<"u"?global:typeof self<"u"?self:typeof window<"u"?window:{})},{2:2}],4:[function(i,l,d){"use strict";var h=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(r){return typeof r}:function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r};function _(r,s){if(!(r instanceof s))throw new TypeError("Cannot call a class as a function")}function E(){try{if(typeof indexedDB<"u")return indexedDB;if(typeof webkitIndexedDB<"u")return webkitIndexedDB;if(typeof mozIndexedDB<"u")return mozIndexedDB;if(typeof OIndexedDB<"u")return OIndexedDB;if(typeof msIndexedDB<"u")return msIndexedDB}catch{return}}var A=E();function I(){try{if(!A||!A.open)return!1;var r=typeof openDatabase<"u"&&/(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent)&&!/Chrome/.test(navigator.userAgent)&&!/BlackBerry/.test(navigator.platform),s=typeof fetch=="function"&&fetch.toString().indexOf("[native code")!==-1;return(!r||s)&&typeof indexedDB<"u"&&typeof IDBKeyRange<"u"}catch{return!1}}function x(r,s){r=r||[],s=s||{};try{return new Blob(r,s)}catch(a){if(a.name!=="TypeError")throw a;for(var o=typeof BlobBuilder<"u"?BlobBuilder:typeof MSBlobBuilder<"u"?MSBlobBuilder:typeof MozBlobBuilder<"u"?MozBlobBuilder:WebKitBlobBuilder,c=new o,u=0;u<r.length;u+=1)c.append(r[u]);return c.getBlob(s.type)}}typeof Promise>"u"&&i(3);var m=Promise;function b(r,s){s&&r.then(function(o){s(null,o)},function(o){s(o)})}function k(r,s,o){typeof s=="function"&&r.then(s),typeof o=="function"&&r.catch(o)}function N(r){return typeof r!="string"&&(console.warn(r+" used as a key, but it is not a string."),r=String(r)),r}function K(){if(arguments.length&&typeof arguments[arguments.length-1]=="function")return arguments[arguments.length-1]}var V="local-forage-detect-blob-support",re=void 0,J={},yt=Object.prototype.toString,le="readonly",T="readwrite";function D(r){for(var s=r.length,o=new ArrayBuffer(s),c=new Uint8Array(o),u=0;u<s;u++)c[u]=r.charCodeAt(u);return o}function P(r){return new m(function(s){var o=r.transaction(V,T),c=x([""]);o.objectStore(V).put(c,"key"),o.onabort=function(u){u.preventDefault(),u.stopPropagation(),s(!1)},o.oncomplete=function(){var u=navigator.userAgent.match(/Chrome\/(\d+)/),a=navigator.userAgent.match(/Edge\//);s(a||!u||parseInt(u[1],10)>=43)}}).catch(function(){return!1})}function U(r){return typeof re=="boolean"?m.resolve(re):P(r).then(function(s){return re=s,re})}function G(r){var s=J[r.name],o={};o.promise=new m(function(c,u){o.resolve=c,o.reject=u}),s.deferredOperations.push(o),s.dbReady?s.dbReady=s.dbReady.then(function(){return o.promise}):s.dbReady=o.promise}function W(r){var s=J[r.name],o=s.deferredOperations.pop();if(o)return o.resolve(),o.promise}function Y(r,s){var o=J[r.name],c=o.deferredOperations.pop();if(c)return c.reject(s),c.promise}function q(r,s){return new m(function(o,c){if(J[r.name]=J[r.name]||nr(),r.db)if(s)G(r),r.db.close();else return o(r.db);var u=[r.name];s&&u.push(r.version);var a=A.open.apply(A,u);s&&(a.onupgradeneeded=function(f){var p=a.result;try{p.createObjectStore(r.storeName),f.oldVersion<=1&&p.createObjectStore(V)}catch(g){if(g.name==="ConstraintError")console.warn('The database "'+r.name+'" has been upgraded from version '+f.oldVersion+" to version "+f.newVersion+', but the storage "'+r.storeName+'" already exists.');else throw g}}),a.onerror=function(f){f.preventDefault(),c(a.error)},a.onsuccess=function(){var f=a.result;f.onversionchange=function(p){p.target.close()},o(f),W(r)}})}function ne(r){return q(r,!1)}function _e(r){return q(r,!0)}function Ce(r,s){if(!r.db)return!0;var o=!r.db.objectStoreNames.contains(r.storeName),c=r.version<r.db.version,u=r.version>r.db.version;if(c&&(r.version!==s&&console.warn('The database "'+r.name+`" can't be downgraded from version `+r.db.version+" to version "+r.version+"."),r.version=r.db.version),u||o){if(o){var a=r.db.version+1;a>r.version&&(r.version=a)}return!0}return!1}function bt(r){return new m(function(s,o){var c=new FileReader;c.onerror=o,c.onloadend=function(u){var a=btoa(u.target.result||"");s({__local_forage_encoded_blob:!0,data:a,type:r.type})},c.readAsBinaryString(r)})}function fe(r){var s=D(atob(r.data));return x([s],{type:r.type})}function rr(r){return r&&r.__local_forage_encoded_blob}function an(r){var s=this,o=s._initReady().then(function(){var c=J[s._dbInfo.name];if(c&&c.dbReady)return c.dbReady});return k(o,r,r),o}function cn(r){G(r);for(var s=J[r.name],o=s.forages,c=0;c<o.length;c++){var u=o[c];u._dbInfo.db&&(u._dbInfo.db.close(),u._dbInfo.db=null)}return r.db=null,ne(r).then(function(a){return r.db=a,Ce(r)?_e(r):a}).then(function(a){r.db=s.db=a;for(var f=0;f<o.length;f++)o[f]._dbInfo.db=a}).catch(function(a){throw Y(r,a),a})}function oe(r,s,o,c){c===void 0&&(c=1);try{var u=r.db.transaction(r.storeName,s);o(null,u)}catch(a){if(c>0&&(!r.db||a.name==="InvalidStateError"||a.name==="NotFoundError"))return m.resolve().then(function(){if(!r.db||a.name==="NotFoundError"&&!r.db.objectStoreNames.contains(r.storeName)&&r.version<=r.db.version)return r.db&&(r.version=r.db.version+1),_e(r)}).then(function(){return cn(r).then(function(){oe(r,s,o,c-1)})}).catch(o);o(a)}}function nr(){return{forages:[],db:null,dbReady:null,deferredOperations:[]}}function ln(r){var s=this,o={db:null};if(r)for(var c in r)o[c]=r[c];var u=J[o.name];u||(u=nr(),J[o.name]=u),u.forages.push(s),s._initReady||(s._initReady=s.ready,s.ready=an);var a=[];function f(){return m.resolve()}for(var p=0;p<u.forages.length;p++){var g=u.forages[p];g!==s&&a.push(g._initReady().catch(f))}var v=u.forages.slice(0);return m.all(a).then(function(){return o.db=u.db,ne(o)}).then(function(y){return o.db=y,Ce(o,s._defaultConfig.version)?_e(o):y}).then(function(y){o.db=u.db=y,s._dbInfo=o;for(var w=0;w<v.length;w++){var C=v[w];C!==s&&(C._dbInfo.db=o.db,C._dbInfo.version=o.version)}})}function un(r,s){var o=this;r=N(r);var c=new m(function(u,a){o.ready().then(function(){oe(o._dbInfo,le,function(f,p){if(f)return a(f);try{var g=p.objectStore(o._dbInfo.storeName),v=g.get(r);v.onsuccess=function(){var y=v.result;y===void 0&&(y=null),rr(y)&&(y=fe(y)),u(y)},v.onerror=function(){a(v.error)}}catch(y){a(y)}})}).catch(a)});return b(c,s),c}function dn(r,s){var o=this,c=new m(function(u,a){o.ready().then(function(){oe(o._dbInfo,le,function(f,p){if(f)return a(f);try{var g=p.objectStore(o._dbInfo.storeName),v=g.openCursor(),y=1;v.onsuccess=function(){var w=v.result;if(w){var C=w.value;rr(C)&&(C=fe(C));var O=r(C,w.key,y++);O!==void 0?u(O):w.continue()}else u()},v.onerror=function(){a(v.error)}}catch(w){a(w)}})}).catch(a)});return b(c,s),c}function fn(r,s,o){var c=this;r=N(r);var u=new m(function(a,f){var p;c.ready().then(function(){return p=c._dbInfo,yt.call(s)==="[object Blob]"?U(p.db).then(function(g){return g?s:bt(s)}):s}).then(function(g){oe(c._dbInfo,T,function(v,y){if(v)return f(v);try{var w=y.objectStore(c._dbInfo.storeName);g===null&&(g=void 0);var C=w.put(g,r);y.oncomplete=function(){g===void 0&&(g=null),a(g)},y.onabort=y.onerror=function(){var O=C.error?C.error:C.transaction.error;f(O)}}catch(O){f(O)}})}).catch(f)});return b(u,o),u}function mn(r,s){var o=this;r=N(r);var c=new m(function(u,a){o.ready().then(function(){oe(o._dbInfo,T,function(f,p){if(f)return a(f);try{var g=p.objectStore(o._dbInfo.storeName),v=g.delete(r);p.oncomplete=function(){u()},p.onerror=function(){a(v.error)},p.onabort=function(){var y=v.error?v.error:v.transaction.error;a(y)}}catch(y){a(y)}})}).catch(a)});return b(c,s),c}function hn(r){var s=this,o=new m(function(c,u){s.ready().then(function(){oe(s._dbInfo,T,function(a,f){if(a)return u(a);try{var p=f.objectStore(s._dbInfo.storeName),g=p.clear();f.oncomplete=function(){c()},f.onabort=f.onerror=function(){var v=g.error?g.error:g.transaction.error;u(v)}}catch(v){u(v)}})}).catch(u)});return b(o,r),o}function pn(r){var s=this,o=new m(function(c,u){s.ready().then(function(){oe(s._dbInfo,le,function(a,f){if(a)return u(a);try{var p=f.objectStore(s._dbInfo.storeName),g=p.count();g.onsuccess=function(){c(g.result)},g.onerror=function(){u(g.error)}}catch(v){u(v)}})}).catch(u)});return b(o,r),o}function gn(r,s){var o=this,c=new m(function(u,a){if(r<0){u(null);return}o.ready().then(function(){oe(o._dbInfo,le,function(f,p){if(f)return a(f);try{var g=p.objectStore(o._dbInfo.storeName),v=!1,y=g.openKeyCursor();y.onsuccess=function(){var w=y.result;if(!w){u(null);return}r===0||v?u(w.key):(v=!0,w.advance(r))},y.onerror=function(){a(y.error)}}catch(w){a(w)}})}).catch(a)});return b(c,s),c}function vn(r){var s=this,o=new m(function(c,u){s.ready().then(function(){oe(s._dbInfo,le,function(a,f){if(a)return u(a);try{var p=f.objectStore(s._dbInfo.storeName),g=p.openKeyCursor(),v=[];g.onsuccess=function(){var y=g.result;if(!y){c(v);return}v.push(y.key),y.continue()},g.onerror=function(){u(g.error)}}catch(y){u(y)}})}).catch(u)});return b(o,r),o}function yn(r,s){s=K.apply(this,arguments);var o=this.config();r=typeof r!="function"&&r||{},r.name||(r.name=r.name||o.name,r.storeName=r.storeName||o.storeName);var c=this,u;if(!r.name)u=m.reject("Invalid arguments");else{var a=r.name===o.name&&c._dbInfo.db,f=a?m.resolve(c._dbInfo.db):ne(r).then(function(p){var g=J[r.name],v=g.forages;g.db=p;for(var y=0;y<v.length;y++)v[y]._dbInfo.db=p;return p});r.storeName?u=f.then(function(p){if(p.objectStoreNames.contains(r.storeName)){var g=p.version+1;G(r);var v=J[r.name],y=v.forages;p.close();for(var w=0;w<y.length;w++){var C=y[w];C._dbInfo.db=null,C._dbInfo.version=g}var O=new m(function(F,M){var B=A.open(r.name,g);B.onerror=function(Q){var Te=B.result;Te.close(),M(Q)},B.onupgradeneeded=function(){var Q=B.result;Q.deleteObjectStore(r.storeName)},B.onsuccess=function(){var Q=B.result;Q.close(),F(Q)}});return O.then(function(F){v.db=F;for(var M=0;M<y.length;M++){var B=y[M];B._dbInfo.db=F,W(B._dbInfo)}}).catch(function(F){throw(Y(r,F)||m.resolve()).catch(function(){}),F})}}):u=f.then(function(p){G(r);var g=J[r.name],v=g.forages;p.close();for(var y=0;y<v.length;y++){var w=v[y];w._dbInfo.db=null}var C=new m(function(O,F){var M=A.deleteDatabase(r.name);M.onerror=function(){var B=M.result;B&&B.close(),F(M.error)},M.onblocked=function(){console.warn('dropInstance blocked for database "'+r.name+'" until all open connections are closed')},M.onsuccess=function(){var B=M.result;B&&B.close(),O(B)}});return C.then(function(O){g.db=O;for(var F=0;F<v.length;F++){var M=v[F];W(M._dbInfo)}}).catch(function(O){throw(Y(r,O)||m.resolve()).catch(function(){}),O})})}return b(u,s),u}var bn={_driver:"asyncStorage",_initStorage:ln,_support:I(),iterate:dn,getItem:un,setItem:fn,removeItem:mn,clear:hn,length:pn,key:gn,keys:vn,dropInstance:yn};function _n(){return typeof openDatabase=="function"}var se="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",En="~~local_forage_type~",or=/^~~local_forage_type~([^~]+)~/,Pe="__lfsc__:",_t=Pe.length,Et="arbf",Tt="blob",ir="si08",sr="ui08",ar="uic8",cr="si16",lr="si32",ur="ur16",dr="ui32",fr="fl32",mr="fl64",hr=_t+Et.length,pr=Object.prototype.toString;function gr(r){var s=r.length*.75,o=r.length,c,u=0,a,f,p,g;r[r.length-1]==="="&&(s--,r[r.length-2]==="="&&s--);var v=new ArrayBuffer(s),y=new Uint8Array(v);for(c=0;c<o;c+=4)a=se.indexOf(r[c]),f=se.indexOf(r[c+1]),p=se.indexOf(r[c+2]),g=se.indexOf(r[c+3]),y[u++]=a<<2|f>>4,y[u++]=(f&15)<<4|p>>2,y[u++]=(p&3)<<6|g&63;return v}function It(r){var s=new Uint8Array(r),o="",c;for(c=0;c<s.length;c+=3)o+=se[s[c]>>2],o+=se[(s[c]&3)<<4|s[c+1]>>4],o+=se[(s[c+1]&15)<<2|s[c+2]>>6],o+=se[s[c+2]&63];return s.length%3===2?o=o.substring(0,o.length-1)+"=":s.length%3===1&&(o=o.substring(0,o.length-2)+"=="),o}function Tn(r,s){var o="";if(r&&(o=pr.call(r)),r&&(o==="[object ArrayBuffer]"||r.buffer&&pr.call(r.buffer)==="[object ArrayBuffer]")){var c,u=Pe;r instanceof ArrayBuffer?(c=r,u+=Et):(c=r.buffer,o==="[object Int8Array]"?u+=ir:o==="[object Uint8Array]"?u+=sr:o==="[object Uint8ClampedArray]"?u+=ar:o==="[object Int16Array]"?u+=cr:o==="[object Uint16Array]"?u+=ur:o==="[object Int32Array]"?u+=lr:o==="[object Uint32Array]"?u+=dr:o==="[object Float32Array]"?u+=fr:o==="[object Float64Array]"?u+=mr:s(new Error("Failed to get type for BinaryArray"))),s(u+It(c))}else if(o==="[object Blob]"){var a=new FileReader;a.onload=function(){var f=En+r.type+"~"+It(this.result);s(Pe+Tt+f)},a.readAsArrayBuffer(r)}else try{s(JSON.stringify(r))}catch(f){console.error("Couldn't convert value into a JSON string: ",r),s(null,f)}}function In(r){if(r.substring(0,_t)!==Pe)return JSON.parse(r);var s=r.substring(hr),o=r.substring(_t,hr),c;if(o===Tt&&or.test(s)){var u=s.match(or);c=u[1],s=s.substring(u[0].length)}var a=gr(s);switch(o){case Et:return a;case Tt:return x([a],{type:c});case ir:return new Int8Array(a);case sr:return new Uint8Array(a);case ar:return new Uint8ClampedArray(a);case cr:return new Int16Array(a);case ur:return new Uint16Array(a);case lr:return new Int32Array(a);case dr:return new Uint32Array(a);case fr:return new Float32Array(a);case mr:return new Float64Array(a);default:throw new Error("Unkown type: "+o)}}var wt={serialize:Tn,deserialize:In,stringToBuffer:gr,bufferToString:It};function vr(r,s,o,c){r.executeSql("CREATE TABLE IF NOT EXISTS "+s.storeName+" (id INTEGER PRIMARY KEY, key unique, value)",[],o,c)}function wn(r){var s=this,o={db:null};if(r)for(var c in r)o[c]=typeof r[c]!="string"?r[c].toString():r[c];var u=new m(function(a,f){try{o.db=openDatabase(o.name,String(o.version),o.description,o.size)}catch(p){return f(p)}o.db.transaction(function(p){vr(p,o,function(){s._dbInfo=o,a()},function(g,v){f(v)})},f)});return o.serializer=wt,u}function ae(r,s,o,c,u,a){r.executeSql(o,c,u,function(f,p){p.code===p.SYNTAX_ERR?f.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?",[s.storeName],function(g,v){v.rows.length?a(g,p):vr(g,s,function(){g.executeSql(o,c,u,a)},a)},a):a(f,p)},a)}function Sn(r,s){var o=this;r=N(r);var c=new m(function(u,a){o.ready().then(function(){var f=o._dbInfo;f.db.transaction(function(p){ae(p,f,"SELECT * FROM "+f.storeName+" WHERE key = ? LIMIT 1",[r],function(g,v){var y=v.rows.length?v.rows.item(0).value:null;y&&(y=f.serializer.deserialize(y)),u(y)},function(g,v){a(v)})})}).catch(a)});return b(c,s),c}function An(r,s){var o=this,c=new m(function(u,a){o.ready().then(function(){var f=o._dbInfo;f.db.transaction(function(p){ae(p,f,"SELECT * FROM "+f.storeName,[],function(g,v){for(var y=v.rows,w=y.length,C=0;C<w;C++){var O=y.item(C),F=O.value;if(F&&(F=f.serializer.deserialize(F)),F=r(F,O.key,C+1),F!==void 0){u(F);return}}u()},function(g,v){a(v)})})}).catch(a)});return b(c,s),c}function yr(r,s,o,c){var u=this;r=N(r);var a=new m(function(f,p){u.ready().then(function(){s===void 0&&(s=null);var g=s,v=u._dbInfo;v.serializer.serialize(s,function(y,w){w?p(w):v.db.transaction(function(C){ae(C,v,"INSERT OR REPLACE INTO "+v.storeName+" (key, value) VALUES (?, ?)",[r,y],function(){f(g)},function(O,F){p(F)})},function(C){if(C.code===C.QUOTA_ERR){if(c>0){f(yr.apply(u,[r,g,o,c-1]));return}p(C)}})})}).catch(p)});return b(a,o),a}function Rn(r,s,o){return yr.apply(this,[r,s,o,1])}function xn(r,s){var o=this;r=N(r);var c=new m(function(u,a){o.ready().then(function(){var f=o._dbInfo;f.db.transaction(function(p){ae(p,f,"DELETE FROM "+f.storeName+" WHERE key = ?",[r],function(){u()},function(g,v){a(v)})})}).catch(a)});return b(c,s),c}function kn(r){var s=this,o=new m(function(c,u){s.ready().then(function(){var a=s._dbInfo;a.db.transaction(function(f){ae(f,a,"DELETE FROM "+a.storeName,[],function(){c()},function(p,g){u(g)})})}).catch(u)});return b(o,r),o}function Cn(r){var s=this,o=new m(function(c,u){s.ready().then(function(){var a=s._dbInfo;a.db.transaction(function(f){ae(f,a,"SELECT COUNT(key) as c FROM "+a.storeName,[],function(p,g){var v=g.rows.item(0).c;c(v)},function(p,g){u(g)})})}).catch(u)});return b(o,r),o}function Pn(r,s){var o=this,c=new m(function(u,a){o.ready().then(function(){var f=o._dbInfo;f.db.transaction(function(p){ae(p,f,"SELECT key FROM "+f.storeName+" WHERE id = ? LIMIT 1",[r+1],function(g,v){var y=v.rows.length?v.rows.item(0).key:null;u(y)},function(g,v){a(v)})})}).catch(a)});return b(c,s),c}function Dn(r){var s=this,o=new m(function(c,u){s.ready().then(function(){var a=s._dbInfo;a.db.transaction(function(f){ae(f,a,"SELECT key FROM "+a.storeName,[],function(p,g){for(var v=[],y=0;y<g.rows.length;y++)v.push(g.rows.item(y).key);c(v)},function(p,g){u(g)})})}).catch(u)});return b(o,r),o}function On(r){return new m(function(s,o){r.transaction(function(c){c.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'",[],function(u,a){for(var f=[],p=0;p<a.rows.length;p++)f.push(a.rows.item(p).name);s({db:r,storeNames:f})},function(u,a){o(a)})},function(c){o(c)})})}function Fn(r,s){s=K.apply(this,arguments);var o=this.config();r=typeof r!="function"&&r||{},r.name||(r.name=r.name||o.name,r.storeName=r.storeName||o.storeName);var c=this,u;return r.name?u=new m(function(a){var f;r.name===o.name?f=c._dbInfo.db:f=openDatabase(r.name,"","",0),r.storeName?a({db:f,storeNames:[r.storeName]}):a(On(f))}).then(function(a){return new m(function(f,p){a.db.transaction(function(g){function v(O){return new m(function(F,M){g.executeSql("DROP TABLE IF EXISTS "+O,[],function(){F()},function(B,Q){M(Q)})})}for(var y=[],w=0,C=a.storeNames.length;w<C;w++)y.push(v(a.storeNames[w]));m.all(y).then(function(){f()}).catch(function(O){p(O)})},function(g){p(g)})})}):u=m.reject("Invalid arguments"),b(u,s),u}var Nn={_driver:"webSQLStorage",_initStorage:wn,_support:_n(),iterate:An,getItem:Sn,setItem:Rn,removeItem:xn,clear:kn,length:Cn,key:Pn,keys:Dn,dropInstance:Fn};function Un(){try{return typeof localStorage<"u"&&"setItem"in localStorage&&!!localStorage.setItem}catch{return!1}}function br(r,s){var o=r.name+"/";return r.storeName!==s.storeName&&(o+=r.storeName+"/"),o}function Ln(){var r="_localforage_support_test";try{return localStorage.setItem(r,!0),localStorage.removeItem(r),!1}catch{return!0}}function Bn(){return!Ln()||localStorage.length>0}function Mn(r){var s=this,o={};if(r)for(var c in r)o[c]=r[c];return o.keyPrefix=br(r,s._defaultConfig),Bn()?(s._dbInfo=o,o.serializer=wt,m.resolve()):m.reject()}function $n(r){var s=this,o=s.ready().then(function(){for(var c=s._dbInfo.keyPrefix,u=localStorage.length-1;u>=0;u--){var a=localStorage.key(u);a.indexOf(c)===0&&localStorage.removeItem(a)}});return b(o,r),o}function Vn(r,s){var o=this;r=N(r);var c=o.ready().then(function(){var u=o._dbInfo,a=localStorage.getItem(u.keyPrefix+r);return a&&(a=u.serializer.deserialize(a)),a});return b(c,s),c}function jn(r,s){var o=this,c=o.ready().then(function(){for(var u=o._dbInfo,a=u.keyPrefix,f=a.length,p=localStorage.length,g=1,v=0;v<p;v++){var y=localStorage.key(v);if(y.indexOf(a)===0){var w=localStorage.getItem(y);if(w&&(w=u.serializer.deserialize(w)),w=r(w,y.substring(f),g++),w!==void 0)return w}}});return b(c,s),c}function Kn(r,s){var o=this,c=o.ready().then(function(){var u=o._dbInfo,a;try{a=localStorage.key(r)}catch{a=null}return a&&(a=a.substring(u.keyPrefix.length)),a});return b(c,s),c}function Jn(r){var s=this,o=s.ready().then(function(){for(var c=s._dbInfo,u=localStorage.length,a=[],f=0;f<u;f++){var p=localStorage.key(f);p.indexOf(c.keyPrefix)===0&&a.push(p.substring(c.keyPrefix.length))}return a});return b(o,r),o}function Gn(r){var s=this,o=s.keys().then(function(c){return c.length});return b(o,r),o}function Hn(r,s){var o=this;r=N(r);var c=o.ready().then(function(){var u=o._dbInfo;localStorage.removeItem(u.keyPrefix+r)});return b(c,s),c}function Wn(r,s,o){var c=this;r=N(r);var u=c.ready().then(function(){s===void 0&&(s=null);var a=s;return new m(function(f,p){var g=c._dbInfo;g.serializer.serialize(s,function(v,y){if(y)p(y);else try{localStorage.setItem(g.keyPrefix+r,v),f(a)}catch(w){(w.name==="QuotaExceededError"||w.name==="NS_ERROR_DOM_QUOTA_REACHED")&&p(w),p(w)}})})});return b(u,o),u}function zn(r,s){if(s=K.apply(this,arguments),r=typeof r!="function"&&r||{},!r.name){var o=this.config();r.name=r.name||o.name,r.storeName=r.storeName||o.storeName}var c=this,u;return r.name?u=new m(function(a){r.storeName?a(br(r,c._defaultConfig)):a(r.name+"/")}).then(function(a){for(var f=localStorage.length-1;f>=0;f--){var p=localStorage.key(f);p.indexOf(a)===0&&localStorage.removeItem(p)}}):u=m.reject("Invalid arguments"),b(u,s),u}var Yn={_driver:"localStorageWrapper",_initStorage:Mn,_support:Un(),iterate:jn,getItem:Vn,setItem:Wn,removeItem:Hn,clear:$n,length:Gn,key:Kn,keys:Jn,dropInstance:zn},qn=function(s,o){return s===o||typeof s=="number"&&typeof o=="number"&&isNaN(s)&&isNaN(o)},Qn=function(s,o){for(var c=s.length,u=0;u<c;){if(qn(s[u],o))return!0;u++}return!1},_r=Array.isArray||function(r){return Object.prototype.toString.call(r)==="[object Array]"},Ee={},Er={},me={INDEXEDDB:bn,WEBSQL:Nn,LOCALSTORAGE:Yn},Xn=[me.INDEXEDDB._driver,me.WEBSQL._driver,me.LOCALSTORAGE._driver],De=["dropInstance"],St=["clear","getItem","iterate","key","keys","length","removeItem","setItem"].concat(De),Zn={description:"",driver:Xn.slice(),name:"localforage",size:4980736,storeName:"keyvaluepairs",version:1};function eo(r,s){r[s]=function(){var o=arguments;return r.ready().then(function(){return r[s].apply(r,o)})}}function At(){for(var r=1;r<arguments.length;r++){var s=arguments[r];if(s)for(var o in s)s.hasOwnProperty(o)&&(_r(s[o])?arguments[0][o]=s[o].slice():arguments[0][o]=s[o])}return arguments[0]}var to=function(){function r(s){_(this,r);for(var o in me)if(me.hasOwnProperty(o)){var c=me[o],u=c._driver;this[o]=u,Ee[u]||this.defineDriver(c)}this._defaultConfig=At({},Zn),this._config=At({},this._defaultConfig,s),this._driverSet=null,this._initDriver=null,this._ready=!1,this._dbInfo=null,this._wrapLibraryMethodsWithReady(),this.setDriver(this._config.driver).catch(function(){})}return r.prototype.config=function(o){if((typeof o>"u"?"undefined":h(o))==="object"){if(this._ready)return new Error("Can't call config() after localforage has been used.");for(var c in o){if(c==="storeName"&&(o[c]=o[c].replace(/\W/g,"_")),c==="version"&&typeof o[c]!="number")return new Error("Database version must be a number.");this._config[c]=o[c]}return"driver"in o&&o.driver?this.setDriver(this._config.driver):!0}else return typeof o=="string"?this._config[o]:this._config},r.prototype.defineDriver=function(o,c,u){var a=new m(function(f,p){try{var g=o._driver,v=new Error("Custom driver not compliant; see https://mozilla.github.io/localForage/#definedriver");if(!o._driver){p(v);return}for(var y=St.concat("_initStorage"),w=0,C=y.length;w<C;w++){var O=y[w],F=!Qn(De,O);if((F||o[O])&&typeof o[O]!="function"){p(v);return}}var M=function(){for(var Te=function(oo){return function(){var io=new Error("Method "+oo+" is not implemented by the current driver"),Tr=m.reject(io);return b(Tr,arguments[arguments.length-1]),Tr}},Rt=0,no=De.length;Rt<no;Rt++){var xt=De[Rt];o[xt]||(o[xt]=Te(xt))}};M();var B=function(Te){Ee[g]&&console.info("Redefining LocalForage driver: "+g),Ee[g]=o,Er[g]=Te,f()};"_support"in o?o._support&&typeof o._support=="function"?o._support().then(B,p):B(!!o._support):B(!0)}catch(Q){p(Q)}});return k(a,c,u),a},r.prototype.driver=function(){return this._driver||null},r.prototype.getDriver=function(o,c,u){var a=Ee[o]?m.resolve(Ee[o]):m.reject(new Error("Driver not found."));return k(a,c,u),a},r.prototype.getSerializer=function(o){var c=m.resolve(wt);return k(c,o),c},r.prototype.ready=function(o){var c=this,u=c._driverSet.then(function(){return c._ready===null&&(c._ready=c._initDriver()),c._ready});return k(u,o,o),u},r.prototype.setDriver=function(o,c,u){var a=this;_r(o)||(o=[o]);var f=this._getSupportedDrivers(o);function p(){a._config.driver=a.driver()}function g(w){return a._extend(w),p(),a._ready=a._initStorage(a._config),a._ready}function v(w){return function(){var C=0;function O(){for(;C<w.length;){var F=w[C];return C++,a._dbInfo=null,a._ready=null,a.getDriver(F).then(g).catch(O)}p();var M=new Error("No available storage method found.");return a._driverSet=m.reject(M),a._driverSet}return O()}}var y=this._driverSet!==null?this._driverSet.catch(function(){return m.resolve()}):m.resolve();return this._driverSet=y.then(function(){var w=f[0];return a._dbInfo=null,a._ready=null,a.getDriver(w).then(function(C){a._driver=C._driver,p(),a._wrapLibraryMethodsWithReady(),a._initDriver=v(f)})}).catch(function(){p();var w=new Error("No available storage method found.");return a._driverSet=m.reject(w),a._driverSet}),k(this._driverSet,c,u),this._driverSet},r.prototype.supports=function(o){return!!Er[o]},r.prototype._extend=function(o){At(this,o)},r.prototype._getSupportedDrivers=function(o){for(var c=[],u=0,a=o.length;u<a;u++){var f=o[u];this.supports(f)&&c.push(f)}return c},r.prototype._wrapLibraryMethodsWithReady=function(){for(var o=0,c=St.length;o<c;o++)eo(this,St[o])},r.prototype.createInstance=function(o){return new r(o)},r}(),ro=new to;l.exports=ro},{3:3}]},{},[4])(4)})});var Ar=Object.defineProperty,po=Object.getOwnPropertyDescriptor,go=(e,t)=>{for(var n in t)Ar(e,n,{get:t[n],enumerable:!0})},Rr=(e,t,n,i)=>{for(var l=i>1?void 0:i?po(t,n):t,d=e.length-1,h;d>=0;d--)(h=e[d])&&(l=(i?h(t,n,l):h(l))||l);return i&&l&&Ar(t,n,l),l};function vo(e){return new Promise(t=>{setTimeout(()=>{t()},e)})}function Ot(e){return typeof e=="string"}function xr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&!(e instanceof RegExp)&&!(e instanceof Date)}function kr(e){return typeof e=="object"&&Array.isArray(e)}function yo(e){return typeof e>"u"}function bo(e){return yo(e)||e===null}function _o(e){return typeof e=="function"}function Cr(e){let t=e,n=null,i=function(...l){return n||(n=new t(...l)),n};return i.prototype=t.prototype,i}function Pr(e,t,n){if(typeof n!="function")throw new Error("[Jolibox SDK]Customizer must be a function");function i(l,d){for(let h in d)if(Object.prototype.hasOwnProperty.call(d,h)){let _=l[h],E=d[h],A=n(_,E,h,l,d);A!==void 0?l[h]=A:wr(E)&&wr(_)?l[h]=i({..._},E):Array.isArray(E)&&Array.isArray(_)?l[h]=[..._,...E]:l[h]=E}return l}return i(e,t)}function wr(e){return e&&typeof e=="object"&&e.constructor===Object}function Dr(e,t){if(Array.isArray(e))return e.concat(t)}function Ae(e,t,n={}){let i=null,l,d,h,{leading:_=!1,trailing:E=!0}=n,A=()=>(h=e.apply(d,l),l=void 0,d=void 0,h),I=function(...x){l=x,d=this;let m=_&&!i;if(i&&clearTimeout(i),i=setTimeout(()=>{i=null,E&&!m&&A()},t),m)return A()};return I.cancel=()=>{i&&clearTimeout(i),i=null,l=d=void 0},I.flush=()=>{if(i)return clearTimeout(i),i=null,A()},I}var Eo=(e=>(e[e.DEVELOPER_FILE_NOT_FOUND=0]="DEVELOPER_FILE_NOT_FOUND",e[e.INTERNAL_IOS_CAN_NOT_FOUND_PKG=1]="INTERNAL_IOS_CAN_NOT_FOUND_PKG",e[e.USER_IOS_LOAD_TIMEOUT=2]="USER_IOS_LOAD_TIMEOUT",e[e.INTERNAL_IOS_PKG_LOAD_ERROR=3]="INTERNAL_IOS_PKG_LOAD_ERROR",e[e.INTERNAL_IOS_PKG_PARSE_FAIL=4]="INTERNAL_IOS_PKG_PARSE_FAIL",e[e.USER_IOS_GET_EMPTY_DATA=5]="USER_IOS_GET_EMPTY_DATA",e[e.USER_ANDROID_GET_PKG_FAIL=6]="USER_ANDROID_GET_PKG_FAIL",e[e.DEVELOPER_ANDROID_PACKAGE_FILE_UNEXPECTED_REQUIRE=7]="DEVELOPER_ANDROID_PACKAGE_FILE_UNEXPECTED_REQUIRE",e))(Eo||{}),Ft=class extends Error{constructor(e){if(typeof e=="string"){super(e),this.priority="P1";return}super(e.message),this.priority="P1",this.stack=e.stack,this.raw=e}},Nt=class extends Ft{constructor(){super(...arguments),this.kind="INTERNAL_ERROR"}},Or=class extends Ft{constructor(){super(...arguments),this.kind="USER_ERROR"}},Fr=class extends Or{constructor(){super(...arguments),this.name="USER_VALIDATE_ERROR"}};var To=class extends Or{constructor(e,t,n){super(e),this.message=e,this.errNo=t,this.name="USER_CUSTOM_ERROR",this.errMsg=e,n&&(this.extra=Object.assign({},this.extra,n))}};var Nr=class extends Nt{constructor(){super(...arguments),this.name="INTERNAL_SCHEMA_PARSE_ERROR",this.priority="P0"}};var Ur=class extends Nt{constructor(){super(...arguments),this.name="INTERNAL_GLOBAL_JS_ERROR",this.priority="P1"}},Be=class extends Ft{constructor(e,t,n,i,l){super(e),this.message=e,this.code=t,this.kind="API_ERROR",this.name="API_ERROR",n&&(this.errorType=n),i!==void 0&&(this.stack=i),l&&(this.priority=l)}toJSON(){return{message:this.message,stack:this.stack,name:this.name,code:this.code,errorType:this.errorType}}};var Ut=class extends Nt{constructor(){super(...arguments),this.name="INTERNAL_REPORTER_ERROR"}};function Io(e,t){return(...n)=>t(e,...n)}function Lr(e){return t=>Io(t,function(n,...i){if(typeof n=="function")try{return n.apply(this,i)}catch(l){e(new To(`${l}`))}})}function we(e){return(...t)=>{(globalThis.VConsole?.[e]??globalThis.console[e])(...t)}}var H={log:we("log"),warn:we("warn"),info:we("info"),error:we("error"),debug:we("debug")};Object.assign(globalThis,{logger:H});var Br=Symbol.for("Jolibox.canIUseMap"),wo={};globalThis[Br]=wo;var Lt={get config(){return globalThis[Br]}};var Re=(e=>(e[e.System=1e3]="System",e[e.ErrorTrace=1001]="ErrorTrace",e[e.UserDefined=1002]="UserDefined",e))(Re||{}),he=(e=>(e.MiniGame="mini-game",e.MiniDrama="mini-drama",e.App="app",e.WebSDK="web-sdk",e.AppSDK="app-sdk",e))(he||{}),So=(e=>(e[e.App=0]="App",e[e.H5=1]="H5",e[e.Weapp=2]="Weapp",e[e.Alipay=3]="Alipay",e[e.Gcash=4]="Gcash",e[e.Dana=5]="Dana",e[e.Umma=6]="Umma",e[e.WebSDK=1e3]="WebSDK",e[e.AppSDK=1001]="AppSDK",e[e.Other=9999]="Other",e))(So||{}),Sr=["name","params"],Ao=["name","type","location","target","extra","timestamp","userId"],Ro=["platform","os","appVersion","appId","model","brand","uuid","jsSdkVersion","extra"];function Ne(e,t){return t.map(n=>{if(n==="params"&&e[n]){let i=e[n];return Object.keys(i).reduce((l,d)=>(l[d]=String(i[d]),l),{})}return e[n]})}function xo(e){let t=e.location?Ne(e.location,Sr):null,n=e.target?Ne(e.target,Sr):null;return Ne({...e,location:t,target:n},Ao)}function Bt(e){let t=e.events.map(i=>xo(i)),n=Ne(e.device,Ro);return[e.protocolVersion,t,n,e.project]}var ko=()=>"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)});var Oe={isiOS:navigator.userAgent.includes("iPhone")||navigator.userAgent.includes("iPod")||navigator.userAgent.includes("iPad")||navigator.userAgent.includes("iPhone OS"),iosVersion:()=>{let e=navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/);return[parseInt(e[1],10),parseInt(e[2],10),parseInt(e[3]||"0",10)]},isAndroid:navigator.userAgent.includes("Android"),isMac:navigator.userAgent.includes("Mac"),isFacebook:navigator.userAgent.includes("FB_IAB"),isPC:!navigator.userAgent.includes("iPhone")&&!navigator.userAgent.includes("Android")},Co=()=>Oe.isiOS?"iOS":Oe.isAndroid?"Android":Oe.isMac?"Mac":Oe.isFacebook?"Facebook":"PC",Po="device_id",Do="advertising_id",Mr=e=>(localStorage.getItem(e)||localStorage.setItem(e,ko()),localStorage.getItem(e)),Mt=()=>Mr(Po),Oo=()=>Mr(Do),Fo=e=>e.charAt(0).toUpperCase()+e.slice(1),No=()=>{let e=new URLSearchParams(window.location.search);return Fo(e.get("utm_source")??"")||"JoliboxSDK"},$r=e=>{let t="JoliboxWebSDK",n=Co(),i=navigator.language,l=Mt(),d=Oo();return`${t} (${No()}${n}; UnknownModel; UnknownSystemVersion; ${i}) uuid/${l} adid/${d} version/${e||""}`},L=class Ue{static{this.Undefined=new Ue(void 0)}constructor(t){this.element=t,this.next=Ue.Undefined,this.prev=Ue.Undefined}},Uo=class{constructor(){this._first=L.Undefined,this._last=L.Undefined,this._size=0}get size(){return this._size}isEmpty(){return this._first===L.Undefined}clear(){let e=this._first;for(;e!==L.Undefined;){let t=e.next;e.prev=L.Undefined,e.next=L.Undefined,e=t}this._first=L.Undefined,this._last=L.Undefined,this._size=0}unshift(e){return this._insert(e,!1)}push(e){return this._insert(e,!0)}_insert(e,t){let n=new L(e);if(this._first===L.Undefined)this._first=n,this._last=n;else if(t){let l=this._last;this._last=n,n.prev=l,l.next=n}else{let l=this._first;this._first=n,n.next=l,l.prev=n}this._size+=1;let i=!1;return()=>{i||(i=!0,this._remove(n))}}shift(){if(this._first!==L.Undefined){let e=this._first.element;return this._remove(this._first),e}}pop(){if(this._last!==L.Undefined){let e=this._last.element;return this._remove(this._last),e}}_remove(e){if(e.prev!==L.Undefined&&e.next!==L.Undefined){let t=e.prev;t.next=e.next,e.next.prev=t}else e.prev===L.Undefined&&e.next===L.Undefined?(this._first=L.Undefined,this._last=L.Undefined):e.next===L.Undefined?(this._last=this._last.prev,this._last.next=L.Undefined):e.prev===L.Undefined&&(this._first=this._first.next,this._first.prev=L.Undefined);this._size-=1}*[Symbol.iterator](){let e=this._first;for(;e!==L.Undefined;)yield e.element,e=e.next}},Lo=0,Fe=class{constructor(e){this.value=e,this.id=Lo++}},Se=class{constructor(e){this.options=e,this._size=0}dispose(e){this._disposed||(this._disposed=!0,this._listeners&&(e?(this._listeners instanceof Fe&&(this._listeners=[this._listeners]),this._listeners=this._listeners.filter(t=>t?.value===e)):(this._listeners=void 0,this._size=0)),this.options?.onDidRemoveLastListener?.())}get event(){return this._event??=(e,t)=>{if(this._disposed)return()=>{console.info("[Jolibox SDK] Emitter is _disposed")};t&&(e=e.bind(t));let n=new Fe(e);this._listeners?this._listeners instanceof Fe?this._listeners=[this._listeners,n]:this._listeners.push(n):(this.options?.onWillAddFirstListener?.(this),this._listeners=n,this.options?.onDidFirstListener?.(this)),this.options?.onDidAddListener?.(this),this._size++},this._event}_deliver(e,t){if(!e)return;let n=this.options?.onListenerError||Error.constructor;if(!n){e.value(t);return}try{e.value(t)}catch(i){n(i)}}fire(e){this._listeners&&(this._listeners instanceof Fe?this._deliver(this._listeners,e):this._listeners.forEach(t=>this._deliver(t,e)))}hasListeners(){return this._size>0}},pe=class{constructor(){this.listeners=new Map,this.listerHandlerMap=new WeakMap,this.cachedEventQueue=new Map}on(e,t){let n=this.listeners.get(e)??new Se,i=d=>t(...d.args);this.listerHandlerMap.set(t,i),n.event(i),this.listeners.set(e,n);let l=this.cachedEventQueue.get(e);if(l)for(;l.size>0;)n.fire({event:e,...l.shift()})}off(e,t){let n=this.listeners.get(e);if(n){let i=this.listerHandlerMap.get(t);n.dispose(i)}}emit(e,...t){let n=this.listeners.get(e);if(n)n.fire({event:e,args:t});else{let i=this.cachedEventQueue.get(e);i||(i=new Uo,this.cachedEventQueue.set(e,i)),i.push({args:t})}}},Pt={};go(Pt,{None:()=>Bo,filter:()=>$o,once:()=>Vr,toPromise:()=>Mo});var Bo=()=>{console.log("[Jolibox SDK] None Event")};function Mo(e){return new Promise(t=>Vr(e)(t))}function Vr(e){return(t,n=null)=>{let i=!1;return e(l=>{if(!i)return i=!0,t.call(n,l)},null)}}function $o(e,t){return(n=>{let i,l={onWillAddFirstListener(){i=n(d.fire,d)}},d=new Se(l);return d.event})((n,i=null)=>e(l=>t(l)&&n.call(i,l),null))}var kt=Symbol.for("Jolibox.hostEmitter"),Vo=()=>{let e=new pe;return globalThis[kt]||(globalThis[kt]={on:e.on.bind(e),off:e.off.bind(e),emit:e.emit.bind(e)}),globalThis[kt]},xe=Vo();function jo(e,t){let n=Math.min(e.length,t.length);for(let i=0;i<n;i++)Ko(e[i],t[i])}function Ko(e,t){if(Ot(t)){if(typeof e!==t)throw new Error(`argument does not match constraint: typeof ${t}`)}else if(_o(t)){try{if(e instanceof t)return}catch{}if(!bo(e)&&e.constructor===t||t.length===1&&t.call(void 0,e)===!0)return;throw new Error("[Jolibox SDK]argument does not match one of these constraints: arg instanceof constraint, arg.constructor === constraint, nor constraint(arg) === true")}}var Le=class{constructor(){this._commands=new Map,this._onDidRegisterCommand=new Se,this.onDidRegisterCommand=this._onDidRegisterCommand.event,console.log("[Jolibox SDK] command registry")}registerCommand(e){if(!e)throw new Error("invalid command");if(e.metadata&&Array.isArray(e.metadata.args)){let n=[];for(let l of e.metadata.args)n.push(l.constraint);let i=e.handler;e.handler=function(...l){return jo(l,n),i(...l)}}let{id:t}=e;this._commands.get(t)&&console.info(`[Jolibox SDK] duplicated command is registered ${t}`),this._commands.set(t,e),this._onDidRegisterCommand.fire(t)}getCommand(e){return this._commands.get(e)}getCommands(){let e=new Map;for(let t of this._commands.keys()){let n=this.getCommand(t);n&&e.set(t,n)}return e}};Le=Rr([Cr],Le);var Dt=class{constructor(){this._onWillExecuteCommand=new Se,this.onWillExecuteCommand=this._onWillExecuteCommand.event,this._onDidExecuteCommand=new Se,this.onDidExecuteCommand=this._onDidExecuteCommand.event,this.registry=new Le,this._starActivation=null}_activateStar(){return this._starActivation||(this._starActivation=vo(3e4)),this._starActivation}async executeCommand(e,...t){return this.registry.getCommand(e)?this._tryExecuteCommand(e,t):(await Promise.all([Promise.race([this._activateStar(),Pt.toPromise(Pt.filter(this.registry.onDidRegisterCommand,n=>n===e))])]),this._tryExecuteCommand(e,t))}executeCommandThowErr(e,...t){if(!this.registry.getCommand(e))throw new Error(`command '${e}' not found`);let n=this.registry.getCommand(e);this._onWillExecuteCommand.fire({commandId:e,args:t});let i=this.invokeFunction(n.handler,...t);return this._onDidExecuteCommand.fire({commandId:e,args:t}),i}_tryExecuteCommand(e,t){let n=this.registry.getCommand(e);if(!n)return Promise.reject(new Error(`command '${e}' not found`));try{this._onWillExecuteCommand.fire({commandId:e,args:t});let i=this.invokeFunction(n.handler,...t);return this._onDidExecuteCommand.fire({commandId:e,args:t}),Promise.resolve(i)}catch(i){return Promise.reject(i)}}invokeFunction(e,...t){let n=!1;try{return e(...t)}finally{n=!0}}};Dt=Rr([Cr],Dt);var Ct=Symbol.for("Jolibox.commands");function X(){if(globalThis[Ct])return globalThis[Ct];let e=new Le,t=new Dt,n={registerCommand(i,l,d){e.registerCommand({id:i,handler:l,metadata:d})},executeCommand(i,...l){return t.executeCommand(i,...l)},excuteCommandSync(i,...l){return t.executeCommandThowErr(i,...l)}};return globalThis[Ct]=n,n}var $t=new pe,ue=new pe;function ee(e,t={}){$t.emit("ERROR_REPORT",{error:e,options:t})}ee.debounce=Ae(ee,50,{leading:!0});var Vt=e=>{let t=e.replace(/-/g,"+").replace(/_/g,"/"),n=t.length%4===0?"":"=".repeat(4-t.length%4),i=atob(t+n);try{return JSON.parse(i)}catch{return{}}},jr=e=>{try{let i=new URL(e).searchParams.get("joliSource")?.split(".");if(i?.length){let[l,d,h]=i;return{headerJson:Vt(l),payloadJson:Vt(d),signature:Vt(h)}}else throw"joli_source is missing"}catch(t){return ee(new Nr(`${e} not a valid schema: ${t}`)),{headerJson:{},payloadJson:{},signature:{}}}};var Jo="1.1.6-beta.1",Me=()=>Jo,Kr=()=>{let e=Me();return`${$r(e)}`};var Go={deviceInfo:{brand:"UnknownBrand",model:"UnknownModel",did:Mt(),pixelRatio:window.devicePixelRatio||1,platform:"h5",system:"UnknownSystemVersion",lang:"zh"},sdkInfo:{nativeSDKVersion:"",jssdkVersion:Me()},schema:window.location.href,platform:"h5"},Ho=globalThis.joliboxJSCore?.env,z=Object.assign({},Ho?.()??Go),Wo=()=>{let{payloadJson:e,headerJson:t}=z.schema.length?jr(z.schema):{},n=`${z.deviceInfo.did}-${new Date().getTime()}`,l=new URL(z.schema.length?z.schema:window.location.href).searchParams,d=l.get("mpId")??l.get("appId")??l.get("gameId")??"",h=e?.sessionId??l.get("sessionId")??n,_=!!(e?.testAdsMode??l.get("testAdsMode")==="true"),E=e?.joliboxEnv??l.get("joliboxEnv")??"production",A=E==="staging",I=t?.channel;return{get testMode(){return A},get testAdsMode(){return _},get joliboxEnv(){return E},get joliSource(){return l.get("joliSource")??null},get mpId(){return d??e?.id??""},get mpVersion(){return t?.ver??Me()},get platform(){return z.platform??z.deviceInfo.platform},get deviceInfo(){return z.deviceInfo},get sdkInfo(){return z.sdkInfo},get hostInfo(){return z.hostInfo},get hostUserInfo(){return z.hostUserInfo},get sessionId(){return z.clientSessionId??h??n},get channel(){return I},onEnvConfigChanged:x=>{Pr(z,x,Dr)}}},R=Wo();var jt=!1,Gr=(e,t)=>e==null?!1:t in e,zo=e=>Gr(e,"kind"),Yo=e=>{let t=e.toLowerCase().split("_");return t[0]+t.slice(1).map(n=>n.charAt(0).toUpperCase()+n.slice(1)).join("")},Jr=(e,t={},n)=>{let l={...{user_id:R.hostUserInfo?.uid??"",device_id:R.deviceInfo.did??"",timestamp:Date.now(),tag:Yo(e.name)},env:t.environment,isFromUser:n};n?ue.emit("GLOBAL_USER_ERROR",e,l):ue.emit("GLOBAL_ERROR",e,l)},qo=e=>Gr(e,"kind")&&e.kind==="USER_ERROR";$t.on("ERROR_REPORT",({error:e,options:t})=>{if(jt)return;jt=!0;let n=zo(e)&&e.raw?e.raw:e;try{let i=qo(e);Jr(e,t,i)}catch(i){let l=i instanceof Error?i.message:String(i),d=new Ut(`${l}, origin error: ${n.message}`);H.error(d),Jr(new Ut(d.message),{environment:t.environment},!1)}finally{jt=!1}});var Kt=e=>new Fr(e);function Hr(e,t){let n=(i,l,d)=>{let h={tag:i,...t,extra:{...l}};i=="globalJsError"?ee(new Ur(JSON.stringify(h))):e("systemLog",h,d)};return n.debounce=Ae(n,500,{leading:!0}),n}function Wr(e){let t=(n,i,l)=>{let d=(l&&JSON.stringify(l))??0,h={speed_value_type:n,total_duration:i};d&&Object.assign(h,{extra:d}),e("joliboxSpeedAnalysis",h)};return t.debounce=Ae(t,500,{leading:!0}),t}function zr(e,t){let n=Hr(e,t),i=Wr(n);return{track:n,trackPerformance:i}}var $e=class{constructor(){this.deviceInfo=null;this.pastTrackings=[];this.samplesConfig=null;this.pushPastTracking=t=>{this.pastTrackings.push(t),this.pastTrackings.length>10&&this.pastTrackings.slice(-10)};this.fetchSamplesConfig()}get networkIsOk(){return this.pastTrackings.length<=4||this.pastTrackings.filter(Boolean).length/this.pastTrackings.length>=.6}async fetchSamplesConfig(){let n=`${R.testMode?"https://stg-api.jolibox.com":"https://api.jolibox.com"}/api/fe-configs/js-sdk/samples-config`,i=await(await fetch(n)).json();this.samplesConfig=i}checkIsSampled(t){if(!this.samplesConfig)return!1;let{samples:n}=this.samplesConfig;for(let[i,l]of Object.entries(n))if(l.includes(t.name))return Math.floor(Math.random()*101)<parseFloat(i);return!1}getDevice(){let{nativeSDKVersion:t,jssdkVersion:n}=R.sdkInfo;return{platform:1e3,os:R.deviceInfo.platform,appVersion:t??n??"1.0.0",appId:R.hostInfo?.aid??"1",model:R.deviceInfo.model??"UnknownModel",brand:R.deviceInfo.brand??"UnknownBrand",uuid:R.deviceInfo.did,jsSdkVersion:n,extra:{}}}getLocation(){let t=new URLSearchParams(window.location.search),n={};return t.forEach((i,l)=>{n[l]=i}),{name:"GamePage",params:n}}async trackEvent(t,n,i){if(this.checkIsSampled(t))return;let l=t.location?t.location:await this.getLocation(),d=t.target||null,h=t.extra||null;this.deviceInfo||(this.deviceInfo=await this.getDevice());let _=this.deviceInfo,A={protocolVersion:"1.0.0",events:[{...t,location:l,target:d,extra:h,timestamp:Date.now(),userId:null}],device:_,project:n};try{i?this.doReport(Bt(A),i):this.doReport(Bt(A)),this.pushPastTracking(!0)}catch(I){this.pushPastTracking(!1),H.log("[Jolibox SDK] report API error",I)}}};var Jt=e=>{let t=new AbortController;return setTimeout(()=>t.abort(),e),t.signal};AbortSignal.timeout??=Jt;var Ve=class{constructor(t){this.xua=Kr();this.getJoliSource=()=>R.joliSource;let n=R.testMode?"https://stg-api.jolibox.com":"https://api.jolibox.com";this.baseUrl=t?.baseUrl??n}async get(t,n){let{query:i,timeout:l}=n??{},{headers:d}=n??{},_=(i?new URLSearchParams(i):null)?.toString(),E=`${this.baseUrl}${t}${_?`?${_}`:""}`,A=this.xua,I=this.getJoliSource();return d=Object.assign({},d??{},A?{"x-user-agent":A}:{},I?{"x-joli-source":I}:{}),await(await fetch(E,{method:"GET",headers:d,credentials:"include",signal:Jt(l??3e4)})).json()}async post(t,n){let{data:i,query:l,timeout:d}=n??{},{headers:h}=n??{},E=(l?new URLSearchParams(l):null)?.toString(),A=`${this.baseUrl}${t}${E?`?${E}`:""}`,I=this.xua,x=this.getJoliSource();h=Object.assign({},h??{},{"Content-Type":"application/json"},I?{"x-user-agent":I}:{},x?{"x-joli-source":x}:{});let m=await fetch(A,{method:"POST",headers:h,body:JSON.stringify(i),signal:Jt(d??3e4),credentials:"include"}),b=m.headers.get("content-type");if(b?.includes("application/octet-stream"))try{return m.blob()}catch{return await m.arrayBuffer()}if(b?.includes("multipart/form-data")||b?.includes("application/x-www-form-urlencoded"))try{return m.formData()}catch{return await m.text()}if(b?.includes("application/json"))try{return await m.json()}catch{return await m.text()}return m}async put(t,n){try{let{data:i,query:l,timeout:d}=n??{},{headers:h}=n??{},E=(l?new URLSearchParams(l):null)?.toString(),A=`${this.baseUrl}${t}${E?`?${E}`:""}`,I=this.xua,x=this.getJoliSource();h=Object.assign({},h??{},{"Content-Type":"application/json"},I?{"x-user-agent":I}:{},x?{"x-joli-source":x}:{});let m=await fetch(A,{method:"PUT",headers:h,credentials:"include",body:JSON.stringify(i??{})});if(!m.ok)throw new Error(`HTTP error! status: ${m.status}`);return await m.json()}catch(i){throw console.error("Error:",i),i}}};window.JoliboxHttpClient=Ve;var ce=Ve;var Gt=class extends $e{constructor(){super(...arguments);this.hostToApiMap={default:{test:"https://stg-collect.jolibox.com",prod:"https://collect.jolibox.com"},"oss.jolibox.com":{test:"https://stg-collect.jolibox.com",prod:"https://collect.jolibox.com"},"oss.pico-game.com":{test:"https://stg-collect.pico-game.com",prod:"https://collect.pico-game.com"}};this.httpClient=new ce({baseUrl:this.apiBaseURL})}get apiBaseURL(){let n=this.hostToApiMap[window.location.host]??this.hostToApiMap.default;return R.testMode??!1?n.test:n.prod}doReport(n){this.httpClient.post("/report",{data:n,timeout:5e3}),H.info("Track",n)}},ge=new Gt;var Qo=(e,t)=>{let n={message:t.message,stack:t.stack??"",errorType:t.name,source:0},i={name:e,type:Re.ErrorTrace,location:null,target:null,extra:n,timestamp:Date.now(),userId:R.hostUserInfo?.uid??null};ge.trackEvent(i,he.WebSDK)};ue.on("GLOBAL_ERROR",(e,t)=>{Qo(t.tag,e)});ue.on("GLOBAL_USER_ERROR",(e,t)=>{H.log("UserError",e,t)});var je=class{constructor(t,n){this.eventEmitter=t;this.lastReportTime=0;this.visible=!0;this.timer=this.createRAFTimer(t=>{this.reporter({event:"PLAY_GAME",params:{duration:t}}),this.tracker("PlayGame",{duration:t})});this.interval=n??5*1e3,t.on("visible",i=>{this.visible=i})}start(t){this.reporter({event:"OPEN_GAME",params:{timestamp:Date.now(),duration:t??0}}),this.tracker("OpenGame",{duration:t??0}),this.timer.start()}close(t){this.reporter({event:"CLOSE_GAME",params:{timestamp:Date.now(),duration:t}}),this.tracker("CloseGame",{duration:t}),this.timer.stop()}createRAFTimer(t){let n=Date.now(),i,l,d=!1,h=0,_=()=>{if(!d)return;let b=Date.now(),k=b-n;k>=this.interval&&(this.visible&&(h+=k,t(h)),n=b),i=requestAnimationFrame(_)},E=()=>{I(),n=Date.now(),l=window.setInterval(()=>{if(!d)return;let b=Date.now();b-n>=this.interval&&(n=b)},this.interval)},A=()=>{x(),n=Date.now(),i=requestAnimationFrame(_)},I=()=>{i&&(cancelAnimationFrame(i),i=0)},x=()=>{l&&(clearInterval(l),l=0)};this.eventEmitter.on("visible",b=>{d&&(console.log("visible",b),b?A():E())});let m=this.visible;return{start(){d||(d=!0,m?A():E())},stop(){d=!1,I(),x()}}}};var Ke=class extends je{constructor(n,i,l){super(i,l);this.httpClient=new ce;this.gameId=R.mpId,this.sessionId=R.sessionId,this.track=n}async reporter(n){let{event:i,params:l}=n;await this.httpClient.post("/api/base/app-event",{data:{eventType:i,gameInfo:{gameId:this.gameId,sessionId:this.sessionId,...l}}}),H.log("-----task tracker-----",i,l)}tracker(n,i=null){this.track(n,i)}};var Yr=X(),Xo={type:he.WebSDK,platform:"h5",jssdk_version:R.sdkInfo.jssdkVersion,mp_id:R.mpId,mp_version:R.mpVersion},{track:ve,trackPerformance:Zo}=zr((...e)=>{let[,t]=e,n=t,l={...xr(n.extra)?n.extra:Ot(n.extra)?JSON.parse(n.extra):{},mp_id:n.mp_id??"",mp_version:n.mp_version??""},d={name:t.tag,type:Re.System,location:null,target:null,extra:l,timestamp:Date.now(),userId:R.hostUserInfo?.uid??null};ge.trackEvent(d,he.WebSDK)},Xo);Yr.registerCommand("ReportSDK.traceSystemTimeline",({event:e,duration:t,extra:n})=>{Zo(e,t,n)});Yr.registerCommand("ReportSDK.traceSystem",({event:e,info:t})=>{ve(e,t)});var Ht=new pe,te=new Ke(ve,Ht);function qr(e){let t=Lt.config[e];return t||(t={},Lt.config[e]=t),(n,i)=>{if(t[n]){H.warn(`[can i use] ${n} already registered`);return}t[n]={...i}}}var Qr=!1;function Wt(e){Qr=e}function Je(e){return e===null||typeof e!="object"?e:Array.isArray(e)?e.map(t=>Je(t)):Object.keys(e).reduce((t,n)=>(t[n]=Je(e[n]),t),{})}var $=class{constructor(){this.errors=[];this.hasFallback=!1;this.hasDefault=!1;this._optional=!1}fail(t){if(Qr)if(typeof t=="string")this.errors.push(t);else{let n=`${this.path} should be ${t.expect}`;this._optional&&t.expect!=="undefined"?n+=" or undefined, ":n+=", ",n+=`but got ${zt(t.actual)}`,this.errors.push(n)}return!1}fallback(t){return this.hasFallback=!0,this._fallback=t,this}get fallbackValue(){return Je(this._fallback)}default(t){return this.hasDefault=!0,this._default=t,this}get defaultValue(){return typeof this._default=="function"?this._default:Je(this._default)}optional(){return this._optional=!0,this}};function ie(e){return typeof e=="number"}function zt(e){let t=Yt(e);switch(t){case"string":return`"${e}"`;case"number":case"boolean":case"null":case"undefined":return String(e);default:return`a(n) ${t}`}}function Yt(e){return typeof e=="function"?"function":Object.prototype.toString.call(e).slice(8).slice(0,-1).toLowerCase()}var Ge=class extends ${validate(t){return this._optional&&t===void 0?!0:ie(t)?ie(this._min)&&t<this._min?this.fail(`the value of ${this.path} should be greater than or equal to ${this._min}`):ie(this._max)&&t>this._max?this.fail(`the value of ${this.path} should be less than or equal to ${this._max}`):ie(this._greater)&&t<=this._greater?this.fail(`the value of ${this.path} should be greater than ${this._greater}`):this._isInt&&t!==Math.floor(t)?this.fail(`the value of ${this.path} should be integer but got ${t}`):!0:this.fail({expect:"number",actual:t})}min(t){return this._min=t,this}max(t){return this._max=t,this}isInt(t){return this._isInt=t,this}greater(t){return this._greater=t,this}},He=class extends ${validate(t){return this._optional&&t===void 0?!0:typeof t!="boolean"?this.fail({expect:"boolean",actual:t}):!0}},We=class extends ${validate(t){if(this._optional&&t===void 0)return!0;if(typeof t!="string")return this.fail({expect:"string",actual:t});if(ie(this._maxLength)&&t.length>this._maxLength)return this.fail(`the length of ${this.path} should be less than or equal to ${this._maxLength}`);if(ie(this._minLength)&&t.length<this._minLength)return this.fail(`the length of ${this.path} should be greater than or equal to ${this._minLength}`);if(typeof this._pattern=="string"){if(!new RegExp(this._pattern).test(t))return this.fail(`${this.path} should match pattern "${this._pattern}"`)}else if(this._pattern&&!this._pattern.test(t))return this.fail(`${this.path} should match pattern "${this._pattern.toString()}"`);return!0}minLength(t){return this._minLength=t,this}maxLength(t){return this._maxLength=t,this}pattern(t){return this._pattern=t,this}},ze=class extends ${validate(t){return this._optional&&t===void 0?!0:typeof t!="symbol"?this.fail({expect:"symbol",actual:t}):!0}},ye=class extends ${validate(t){return!0}},Ye=class extends ${validate(t){return t!==void 0?this.fail({expect:"undefined",actual:t}):!0}},qe=class extends ${validate(t){return this._optional&&t===void 0?!0:t!==null?this.fail({expect:"null",actual:t}):!0}},Qe=class extends ${validate(t){return this._optional&&t===void 0?!0:typeof t!="function"?this.fail({expect:"function",actual:t}):!0}},Xe=class extends ${constructor(...t){super(),this._items=t}validate(t){if(this._optional&&t===void 0)return!0;if(!this._items.includes(t)){let n=this._items.map(i=>JSON.stringify(i)).join(", ");return this.fail(`expect ${this.path} to be one of ${n}, but got ${zt(t)}`)}return!0}},Ze=class extends ${constructor(n){super();this._item=n}validate(n){if(this._optional&&n===void 0)return!0;if(!Array.isArray(n))return this.fail({expect:"array",actual:n});if(ie(this._minItems)&&n.length<this._minItems)return this.fail(`the length of ${this.path} should be greater than or equal to ${this._minItems}`);if(ie(this._maxItems)&&n.length>this._maxItems)return this.fail(`the length of ${this.path} should be less than or equal to ${this._maxItems}`);if(ie(this._length)&&n.length!==this._length)return this.fail(`the length of ${this.path} should be equal to ${this._length}`);let i=this._item;if(!i)return!0;let l=!0;if(n.forEach((d,h)=>{if(i.path=`${this.path}[${h}]`,i.errors=this.errors,d===void 0&&i.hasDefault){n[h]=i.defaultValue;return}i.validate(d)||(i.hasFallback?n[h]=i.fallbackValue:l=!1)}),this._uniqueItems){let d=new Map;for(let h in n)d.has(n[h])?l=this.fail(`${this.path} should NOT have duplicate items (${this.path}[${d.get(n[h])}] and ${this.path}[${h}] are identical)`):d.set(n[h],h)}return l}minItems(n){return this._minItems=n,this}maxItems(n){return this._maxItems=n,this}uniqueItems(){return this._uniqueItems=!0,this}length(n){return this._length=n,this}},et=class extends ${constructor(n){super();this._value=n}validate(n){if(this._optional&&n===void 0)return!0;if(Yt(n)!=="object")return this.fail({expect:"object",actual:n});let l=n,d=this._value;d.errors=this.errors;let h=!0;for(let _ in l){let E=l[_];if(/^[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*$/.test(_)?d.path=`${this.path}.${_}`:d.path=`${this.path}["${_}"]`,!(E===void 0&&d._optional)){if(E===void 0&&d.hasDefault){l[_]=d.defaultValue;continue}d.validate(E)||(d.hasFallback?l[_]=d.fallbackValue:h=!1)}}return h}},tt=class extends ${constructor(n={}){super();this._object=n}validate(n){if(this._optional&&n===void 0)return!0;if(Yt(n)!=="object")return this.fail({expect:"object",actual:n});let i=n,l=!0;for(let d in this._object){let h=i[d],_=this._object[d];if(_.errors=this.errors,/^[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*$/.test(d)?_.path=`${this.path}.${d}`:_.path=`${this.path}["${d}"]`,!(_._optional&&h===void 0)){if(h===void 0&&_.hasDefault){i[d]=_.defaultValue;continue}_.validate(h)||(_.hasFallback?i[d]=_.fallbackValue:l=!1)}}return l}},rt=class extends ${constructor(n){super();this.value=n}validate(n){return n===void 0&&this._optional?!0:n!==this.value?this.fail({expect:zt(this.value),actual:n}):!0}},nt=class extends ${constructor(...t){super(),this._items=t}validate(t){if(t===void 0&&this._optional)return!0;let n=[],i=!1,l=this._items.length;for(let d=0;d<l;d++){let h=this._items[d];if(h.errors=[],h.path=this.path,!h.validate(t))n.push(h.errors.join("; "));else if(!i){i=!0;break}}if(!i){let d=n.join(`
1
+ var so=Object.create;var Tr=Object.defineProperty;var ao=Object.getOwnPropertyDescriptor;var co=Object.getOwnPropertyNames;var lo=Object.getPrototypeOf,uo=Object.prototype.hasOwnProperty;var Te=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,n)=>(typeof require<"u"?require:t)[n]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var fo=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var mo=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let l of co(t))!uo.call(e,l)&&l!==n&&Tr(e,l,{get:()=>t[l],enumerable:!(i=ao(t,l))||i.enumerable});return e};var ho=(e,t,n)=>(n=e!=null?so(lo(e)):{},mo(t||!e||!e.__esModule?Tr(n,"default",{value:e,enumerable:!0}):n,e));var rn=fo((tn,er)=>{(function(e){if(typeof tn=="object"&&typeof er<"u")er.exports=e();else if(typeof define=="function"&&define.amd)define([],e);else{var t;typeof window<"u"?t=window:typeof global<"u"?t=global:typeof self<"u"?t=self:t=this,t.localforage=e()}})(function(){var e,t,n;return function i(l,d,h){function _(T,x){if(!d[T]){if(!l[T]){var m=typeof Te=="function"&&Te;if(!x&&m)return m(T,!0);if(E)return E(T,!0);var b=new Error("Cannot find module '"+T+"'");throw b.code="MODULE_NOT_FOUND",b}var k=d[T]={exports:{}};l[T][0].call(k.exports,function(N){var K=l[T][1][N];return _(K||N)},k,k.exports,i,l,d,h)}return d[T].exports}for(var E=typeof Te=="function"&&Te,A=0;A<h.length;A++)_(h[A]);return _}({1:[function(i,l,d){(function(h){"use strict";var _=h.MutationObserver||h.WebKitMutationObserver,E;if(_){var A=0,T=new _(N),x=h.document.createTextNode("");T.observe(x,{characterData:!0}),E=function(){x.data=A=++A%2}}else if(!h.setImmediate&&typeof h.MessageChannel<"u"){var m=new h.MessageChannel;m.port1.onmessage=N,E=function(){m.port2.postMessage(0)}}else"document"in h&&"onreadystatechange"in h.document.createElement("script")?E=function(){var V=h.document.createElement("script");V.onreadystatechange=function(){N(),V.onreadystatechange=null,V.parentNode.removeChild(V),V=null},h.document.documentElement.appendChild(V)}:E=function(){setTimeout(N,0)};var b,k=[];function N(){b=!0;for(var V,re,J=k.length;J;){for(re=k,k=[],V=-1;++V<J;)re[V]();J=k.length}b=!1}l.exports=K;function K(V){k.push(V)===1&&!b&&E()}}).call(this,typeof global<"u"?global:typeof self<"u"?self:typeof window<"u"?window:{})},{}],2:[function(i,l,d){"use strict";var h=i(1);function _(){}var E={},A=["REJECTED"],T=["FULFILLED"],x=["PENDING"];l.exports=m;function m(I){if(typeof I!="function")throw new TypeError("resolver must be a function");this.state=x,this.queue=[],this.outcome=void 0,I!==_&&K(this,I)}m.prototype.catch=function(I){return this.then(null,I)},m.prototype.then=function(I,D){if(typeof I!="function"&&this.state===T||typeof D!="function"&&this.state===A)return this;var P=new this.constructor(_);if(this.state!==x){var U=this.state===T?I:D;k(P,U,this.outcome)}else this.queue.push(new b(P,I,D));return P};function b(I,D,P){this.promise=I,typeof D=="function"&&(this.onFulfilled=D,this.callFulfilled=this.otherCallFulfilled),typeof P=="function"&&(this.onRejected=P,this.callRejected=this.otherCallRejected)}b.prototype.callFulfilled=function(I){E.resolve(this.promise,I)},b.prototype.otherCallFulfilled=function(I){k(this.promise,this.onFulfilled,I)},b.prototype.callRejected=function(I){E.reject(this.promise,I)},b.prototype.otherCallRejected=function(I){k(this.promise,this.onRejected,I)};function k(I,D,P){h(function(){var U;try{U=D(P)}catch(G){return E.reject(I,G)}U===I?E.reject(I,new TypeError("Cannot resolve promise with itself")):E.resolve(I,U)})}E.resolve=function(I,D){var P=V(N,D);if(P.status==="error")return E.reject(I,P.value);var U=P.value;if(U)K(I,U);else{I.state=T,I.outcome=D;for(var G=-1,W=I.queue.length;++G<W;)I.queue[G].callFulfilled(D)}return I},E.reject=function(I,D){I.state=A,I.outcome=D;for(var P=-1,U=I.queue.length;++P<U;)I.queue[P].callRejected(D);return I};function N(I){var D=I&&I.then;if(I&&(typeof I=="object"||typeof I=="function")&&typeof D=="function")return function(){D.apply(I,arguments)}}function K(I,D){var P=!1;function U(q){P||(P=!0,E.reject(I,q))}function G(q){P||(P=!0,E.resolve(I,q))}function W(){D(G,U)}var Y=V(W);Y.status==="error"&&U(Y.value)}function V(I,D){var P={};try{P.value=I(D),P.status="success"}catch(U){P.status="error",P.value=U}return P}m.resolve=re;function re(I){return I instanceof this?I:E.resolve(new this(_),I)}m.reject=J;function J(I){var D=new this(_);return E.reject(D,I)}m.all=yt;function yt(I){var D=this;if(Object.prototype.toString.call(I)!=="[object Array]")return this.reject(new TypeError("must be an array"));var P=I.length,U=!1;if(!P)return this.resolve([]);for(var G=new Array(P),W=0,Y=-1,q=new this(_);++Y<P;)ne(I[Y],Y);return q;function ne(_e,Ce){D.resolve(_e).then(bt,function(fe){U||(U=!0,E.reject(q,fe))});function bt(fe){G[Ce]=fe,++W===P&&!U&&(U=!0,E.resolve(q,G))}}}m.race=le;function le(I){var D=this;if(Object.prototype.toString.call(I)!=="[object Array]")return this.reject(new TypeError("must be an array"));var P=I.length,U=!1;if(!P)return this.resolve([]);for(var G=-1,W=new this(_);++G<P;)Y(I[G]);return W;function Y(q){D.resolve(q).then(function(ne){U||(U=!0,E.resolve(W,ne))},function(ne){U||(U=!0,E.reject(W,ne))})}}},{1:1}],3:[function(i,l,d){(function(h){"use strict";typeof h.Promise!="function"&&(h.Promise=i(2))}).call(this,typeof global<"u"?global:typeof self<"u"?self:typeof window<"u"?window:{})},{2:2}],4:[function(i,l,d){"use strict";var h=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(r){return typeof r}:function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r};function _(r,s){if(!(r instanceof s))throw new TypeError("Cannot call a class as a function")}function E(){try{if(typeof indexedDB<"u")return indexedDB;if(typeof webkitIndexedDB<"u")return webkitIndexedDB;if(typeof mozIndexedDB<"u")return mozIndexedDB;if(typeof OIndexedDB<"u")return OIndexedDB;if(typeof msIndexedDB<"u")return msIndexedDB}catch{return}}var A=E();function T(){try{if(!A||!A.open)return!1;var r=typeof openDatabase<"u"&&/(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent)&&!/Chrome/.test(navigator.userAgent)&&!/BlackBerry/.test(navigator.platform),s=typeof fetch=="function"&&fetch.toString().indexOf("[native code")!==-1;return(!r||s)&&typeof indexedDB<"u"&&typeof IDBKeyRange<"u"}catch{return!1}}function x(r,s){r=r||[],s=s||{};try{return new Blob(r,s)}catch(a){if(a.name!=="TypeError")throw a;for(var o=typeof BlobBuilder<"u"?BlobBuilder:typeof MSBlobBuilder<"u"?MSBlobBuilder:typeof MozBlobBuilder<"u"?MozBlobBuilder:WebKitBlobBuilder,c=new o,u=0;u<r.length;u+=1)c.append(r[u]);return c.getBlob(s.type)}}typeof Promise>"u"&&i(3);var m=Promise;function b(r,s){s&&r.then(function(o){s(null,o)},function(o){s(o)})}function k(r,s,o){typeof s=="function"&&r.then(s),typeof o=="function"&&r.catch(o)}function N(r){return typeof r!="string"&&(console.warn(r+" used as a key, but it is not a string."),r=String(r)),r}function K(){if(arguments.length&&typeof arguments[arguments.length-1]=="function")return arguments[arguments.length-1]}var V="local-forage-detect-blob-support",re=void 0,J={},yt=Object.prototype.toString,le="readonly",I="readwrite";function D(r){for(var s=r.length,o=new ArrayBuffer(s),c=new Uint8Array(o),u=0;u<s;u++)c[u]=r.charCodeAt(u);return o}function P(r){return new m(function(s){var o=r.transaction(V,I),c=x([""]);o.objectStore(V).put(c,"key"),o.onabort=function(u){u.preventDefault(),u.stopPropagation(),s(!1)},o.oncomplete=function(){var u=navigator.userAgent.match(/Chrome\/(\d+)/),a=navigator.userAgent.match(/Edge\//);s(a||!u||parseInt(u[1],10)>=43)}}).catch(function(){return!1})}function U(r){return typeof re=="boolean"?m.resolve(re):P(r).then(function(s){return re=s,re})}function G(r){var s=J[r.name],o={};o.promise=new m(function(c,u){o.resolve=c,o.reject=u}),s.deferredOperations.push(o),s.dbReady?s.dbReady=s.dbReady.then(function(){return o.promise}):s.dbReady=o.promise}function W(r){var s=J[r.name],o=s.deferredOperations.pop();if(o)return o.resolve(),o.promise}function Y(r,s){var o=J[r.name],c=o.deferredOperations.pop();if(c)return c.reject(s),c.promise}function q(r,s){return new m(function(o,c){if(J[r.name]=J[r.name]||nr(),r.db)if(s)G(r),r.db.close();else return o(r.db);var u=[r.name];s&&u.push(r.version);var a=A.open.apply(A,u);s&&(a.onupgradeneeded=function(f){var p=a.result;try{p.createObjectStore(r.storeName),f.oldVersion<=1&&p.createObjectStore(V)}catch(g){if(g.name==="ConstraintError")console.warn('The database "'+r.name+'" has been upgraded from version '+f.oldVersion+" to version "+f.newVersion+', but the storage "'+r.storeName+'" already exists.');else throw g}}),a.onerror=function(f){f.preventDefault(),c(a.error)},a.onsuccess=function(){var f=a.result;f.onversionchange=function(p){p.target.close()},o(f),W(r)}})}function ne(r){return q(r,!1)}function _e(r){return q(r,!0)}function Ce(r,s){if(!r.db)return!0;var o=!r.db.objectStoreNames.contains(r.storeName),c=r.version<r.db.version,u=r.version>r.db.version;if(c&&(r.version!==s&&console.warn('The database "'+r.name+`" can't be downgraded from version `+r.db.version+" to version "+r.version+"."),r.version=r.db.version),u||o){if(o){var a=r.db.version+1;a>r.version&&(r.version=a)}return!0}return!1}function bt(r){return new m(function(s,o){var c=new FileReader;c.onerror=o,c.onloadend=function(u){var a=btoa(u.target.result||"");s({__local_forage_encoded_blob:!0,data:a,type:r.type})},c.readAsBinaryString(r)})}function fe(r){var s=D(atob(r.data));return x([s],{type:r.type})}function rr(r){return r&&r.__local_forage_encoded_blob}function an(r){var s=this,o=s._initReady().then(function(){var c=J[s._dbInfo.name];if(c&&c.dbReady)return c.dbReady});return k(o,r,r),o}function cn(r){G(r);for(var s=J[r.name],o=s.forages,c=0;c<o.length;c++){var u=o[c];u._dbInfo.db&&(u._dbInfo.db.close(),u._dbInfo.db=null)}return r.db=null,ne(r).then(function(a){return r.db=a,Ce(r)?_e(r):a}).then(function(a){r.db=s.db=a;for(var f=0;f<o.length;f++)o[f]._dbInfo.db=a}).catch(function(a){throw Y(r,a),a})}function oe(r,s,o,c){c===void 0&&(c=1);try{var u=r.db.transaction(r.storeName,s);o(null,u)}catch(a){if(c>0&&(!r.db||a.name==="InvalidStateError"||a.name==="NotFoundError"))return m.resolve().then(function(){if(!r.db||a.name==="NotFoundError"&&!r.db.objectStoreNames.contains(r.storeName)&&r.version<=r.db.version)return r.db&&(r.version=r.db.version+1),_e(r)}).then(function(){return cn(r).then(function(){oe(r,s,o,c-1)})}).catch(o);o(a)}}function nr(){return{forages:[],db:null,dbReady:null,deferredOperations:[]}}function ln(r){var s=this,o={db:null};if(r)for(var c in r)o[c]=r[c];var u=J[o.name];u||(u=nr(),J[o.name]=u),u.forages.push(s),s._initReady||(s._initReady=s.ready,s.ready=an);var a=[];function f(){return m.resolve()}for(var p=0;p<u.forages.length;p++){var g=u.forages[p];g!==s&&a.push(g._initReady().catch(f))}var v=u.forages.slice(0);return m.all(a).then(function(){return o.db=u.db,ne(o)}).then(function(y){return o.db=y,Ce(o,s._defaultConfig.version)?_e(o):y}).then(function(y){o.db=u.db=y,s._dbInfo=o;for(var w=0;w<v.length;w++){var C=v[w];C!==s&&(C._dbInfo.db=o.db,C._dbInfo.version=o.version)}})}function un(r,s){var o=this;r=N(r);var c=new m(function(u,a){o.ready().then(function(){oe(o._dbInfo,le,function(f,p){if(f)return a(f);try{var g=p.objectStore(o._dbInfo.storeName),v=g.get(r);v.onsuccess=function(){var y=v.result;y===void 0&&(y=null),rr(y)&&(y=fe(y)),u(y)},v.onerror=function(){a(v.error)}}catch(y){a(y)}})}).catch(a)});return b(c,s),c}function dn(r,s){var o=this,c=new m(function(u,a){o.ready().then(function(){oe(o._dbInfo,le,function(f,p){if(f)return a(f);try{var g=p.objectStore(o._dbInfo.storeName),v=g.openCursor(),y=1;v.onsuccess=function(){var w=v.result;if(w){var C=w.value;rr(C)&&(C=fe(C));var O=r(C,w.key,y++);O!==void 0?u(O):w.continue()}else u()},v.onerror=function(){a(v.error)}}catch(w){a(w)}})}).catch(a)});return b(c,s),c}function fn(r,s,o){var c=this;r=N(r);var u=new m(function(a,f){var p;c.ready().then(function(){return p=c._dbInfo,yt.call(s)==="[object Blob]"?U(p.db).then(function(g){return g?s:bt(s)}):s}).then(function(g){oe(c._dbInfo,I,function(v,y){if(v)return f(v);try{var w=y.objectStore(c._dbInfo.storeName);g===null&&(g=void 0);var C=w.put(g,r);y.oncomplete=function(){g===void 0&&(g=null),a(g)},y.onabort=y.onerror=function(){var O=C.error?C.error:C.transaction.error;f(O)}}catch(O){f(O)}})}).catch(f)});return b(u,o),u}function mn(r,s){var o=this;r=N(r);var c=new m(function(u,a){o.ready().then(function(){oe(o._dbInfo,I,function(f,p){if(f)return a(f);try{var g=p.objectStore(o._dbInfo.storeName),v=g.delete(r);p.oncomplete=function(){u()},p.onerror=function(){a(v.error)},p.onabort=function(){var y=v.error?v.error:v.transaction.error;a(y)}}catch(y){a(y)}})}).catch(a)});return b(c,s),c}function hn(r){var s=this,o=new m(function(c,u){s.ready().then(function(){oe(s._dbInfo,I,function(a,f){if(a)return u(a);try{var p=f.objectStore(s._dbInfo.storeName),g=p.clear();f.oncomplete=function(){c()},f.onabort=f.onerror=function(){var v=g.error?g.error:g.transaction.error;u(v)}}catch(v){u(v)}})}).catch(u)});return b(o,r),o}function pn(r){var s=this,o=new m(function(c,u){s.ready().then(function(){oe(s._dbInfo,le,function(a,f){if(a)return u(a);try{var p=f.objectStore(s._dbInfo.storeName),g=p.count();g.onsuccess=function(){c(g.result)},g.onerror=function(){u(g.error)}}catch(v){u(v)}})}).catch(u)});return b(o,r),o}function gn(r,s){var o=this,c=new m(function(u,a){if(r<0){u(null);return}o.ready().then(function(){oe(o._dbInfo,le,function(f,p){if(f)return a(f);try{var g=p.objectStore(o._dbInfo.storeName),v=!1,y=g.openKeyCursor();y.onsuccess=function(){var w=y.result;if(!w){u(null);return}r===0||v?u(w.key):(v=!0,w.advance(r))},y.onerror=function(){a(y.error)}}catch(w){a(w)}})}).catch(a)});return b(c,s),c}function vn(r){var s=this,o=new m(function(c,u){s.ready().then(function(){oe(s._dbInfo,le,function(a,f){if(a)return u(a);try{var p=f.objectStore(s._dbInfo.storeName),g=p.openKeyCursor(),v=[];g.onsuccess=function(){var y=g.result;if(!y){c(v);return}v.push(y.key),y.continue()},g.onerror=function(){u(g.error)}}catch(y){u(y)}})}).catch(u)});return b(o,r),o}function yn(r,s){s=K.apply(this,arguments);var o=this.config();r=typeof r!="function"&&r||{},r.name||(r.name=r.name||o.name,r.storeName=r.storeName||o.storeName);var c=this,u;if(!r.name)u=m.reject("Invalid arguments");else{var a=r.name===o.name&&c._dbInfo.db,f=a?m.resolve(c._dbInfo.db):ne(r).then(function(p){var g=J[r.name],v=g.forages;g.db=p;for(var y=0;y<v.length;y++)v[y]._dbInfo.db=p;return p});r.storeName?u=f.then(function(p){if(p.objectStoreNames.contains(r.storeName)){var g=p.version+1;G(r);var v=J[r.name],y=v.forages;p.close();for(var w=0;w<y.length;w++){var C=y[w];C._dbInfo.db=null,C._dbInfo.version=g}var O=new m(function(F,M){var B=A.open(r.name,g);B.onerror=function(Q){var Ie=B.result;Ie.close(),M(Q)},B.onupgradeneeded=function(){var Q=B.result;Q.deleteObjectStore(r.storeName)},B.onsuccess=function(){var Q=B.result;Q.close(),F(Q)}});return O.then(function(F){v.db=F;for(var M=0;M<y.length;M++){var B=y[M];B._dbInfo.db=F,W(B._dbInfo)}}).catch(function(F){throw(Y(r,F)||m.resolve()).catch(function(){}),F})}}):u=f.then(function(p){G(r);var g=J[r.name],v=g.forages;p.close();for(var y=0;y<v.length;y++){var w=v[y];w._dbInfo.db=null}var C=new m(function(O,F){var M=A.deleteDatabase(r.name);M.onerror=function(){var B=M.result;B&&B.close(),F(M.error)},M.onblocked=function(){console.warn('dropInstance blocked for database "'+r.name+'" until all open connections are closed')},M.onsuccess=function(){var B=M.result;B&&B.close(),O(B)}});return C.then(function(O){g.db=O;for(var F=0;F<v.length;F++){var M=v[F];W(M._dbInfo)}}).catch(function(O){throw(Y(r,O)||m.resolve()).catch(function(){}),O})})}return b(u,s),u}var bn={_driver:"asyncStorage",_initStorage:ln,_support:T(),iterate:dn,getItem:un,setItem:fn,removeItem:mn,clear:hn,length:pn,key:gn,keys:vn,dropInstance:yn};function _n(){return typeof openDatabase=="function"}var se="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",En="~~local_forage_type~",or=/^~~local_forage_type~([^~]+)~/,Pe="__lfsc__:",_t=Pe.length,Et="arbf",It="blob",ir="si08",sr="ui08",ar="uic8",cr="si16",lr="si32",ur="ur16",dr="ui32",fr="fl32",mr="fl64",hr=_t+Et.length,pr=Object.prototype.toString;function gr(r){var s=r.length*.75,o=r.length,c,u=0,a,f,p,g;r[r.length-1]==="="&&(s--,r[r.length-2]==="="&&s--);var v=new ArrayBuffer(s),y=new Uint8Array(v);for(c=0;c<o;c+=4)a=se.indexOf(r[c]),f=se.indexOf(r[c+1]),p=se.indexOf(r[c+2]),g=se.indexOf(r[c+3]),y[u++]=a<<2|f>>4,y[u++]=(f&15)<<4|p>>2,y[u++]=(p&3)<<6|g&63;return v}function Tt(r){var s=new Uint8Array(r),o="",c;for(c=0;c<s.length;c+=3)o+=se[s[c]>>2],o+=se[(s[c]&3)<<4|s[c+1]>>4],o+=se[(s[c+1]&15)<<2|s[c+2]>>6],o+=se[s[c+2]&63];return s.length%3===2?o=o.substring(0,o.length-1)+"=":s.length%3===1&&(o=o.substring(0,o.length-2)+"=="),o}function In(r,s){var o="";if(r&&(o=pr.call(r)),r&&(o==="[object ArrayBuffer]"||r.buffer&&pr.call(r.buffer)==="[object ArrayBuffer]")){var c,u=Pe;r instanceof ArrayBuffer?(c=r,u+=Et):(c=r.buffer,o==="[object Int8Array]"?u+=ir:o==="[object Uint8Array]"?u+=sr:o==="[object Uint8ClampedArray]"?u+=ar:o==="[object Int16Array]"?u+=cr:o==="[object Uint16Array]"?u+=ur:o==="[object Int32Array]"?u+=lr:o==="[object Uint32Array]"?u+=dr:o==="[object Float32Array]"?u+=fr:o==="[object Float64Array]"?u+=mr:s(new Error("Failed to get type for BinaryArray"))),s(u+Tt(c))}else if(o==="[object Blob]"){var a=new FileReader;a.onload=function(){var f=En+r.type+"~"+Tt(this.result);s(Pe+It+f)},a.readAsArrayBuffer(r)}else try{s(JSON.stringify(r))}catch(f){console.error("Couldn't convert value into a JSON string: ",r),s(null,f)}}function Tn(r){if(r.substring(0,_t)!==Pe)return JSON.parse(r);var s=r.substring(hr),o=r.substring(_t,hr),c;if(o===It&&or.test(s)){var u=s.match(or);c=u[1],s=s.substring(u[0].length)}var a=gr(s);switch(o){case Et:return a;case It:return x([a],{type:c});case ir:return new Int8Array(a);case sr:return new Uint8Array(a);case ar:return new Uint8ClampedArray(a);case cr:return new Int16Array(a);case ur:return new Uint16Array(a);case lr:return new Int32Array(a);case dr:return new Uint32Array(a);case fr:return new Float32Array(a);case mr:return new Float64Array(a);default:throw new Error("Unkown type: "+o)}}var wt={serialize:In,deserialize:Tn,stringToBuffer:gr,bufferToString:Tt};function vr(r,s,o,c){r.executeSql("CREATE TABLE IF NOT EXISTS "+s.storeName+" (id INTEGER PRIMARY KEY, key unique, value)",[],o,c)}function wn(r){var s=this,o={db:null};if(r)for(var c in r)o[c]=typeof r[c]!="string"?r[c].toString():r[c];var u=new m(function(a,f){try{o.db=openDatabase(o.name,String(o.version),o.description,o.size)}catch(p){return f(p)}o.db.transaction(function(p){vr(p,o,function(){s._dbInfo=o,a()},function(g,v){f(v)})},f)});return o.serializer=wt,u}function ae(r,s,o,c,u,a){r.executeSql(o,c,u,function(f,p){p.code===p.SYNTAX_ERR?f.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?",[s.storeName],function(g,v){v.rows.length?a(g,p):vr(g,s,function(){g.executeSql(o,c,u,a)},a)},a):a(f,p)},a)}function Sn(r,s){var o=this;r=N(r);var c=new m(function(u,a){o.ready().then(function(){var f=o._dbInfo;f.db.transaction(function(p){ae(p,f,"SELECT * FROM "+f.storeName+" WHERE key = ? LIMIT 1",[r],function(g,v){var y=v.rows.length?v.rows.item(0).value:null;y&&(y=f.serializer.deserialize(y)),u(y)},function(g,v){a(v)})})}).catch(a)});return b(c,s),c}function An(r,s){var o=this,c=new m(function(u,a){o.ready().then(function(){var f=o._dbInfo;f.db.transaction(function(p){ae(p,f,"SELECT * FROM "+f.storeName,[],function(g,v){for(var y=v.rows,w=y.length,C=0;C<w;C++){var O=y.item(C),F=O.value;if(F&&(F=f.serializer.deserialize(F)),F=r(F,O.key,C+1),F!==void 0){u(F);return}}u()},function(g,v){a(v)})})}).catch(a)});return b(c,s),c}function yr(r,s,o,c){var u=this;r=N(r);var a=new m(function(f,p){u.ready().then(function(){s===void 0&&(s=null);var g=s,v=u._dbInfo;v.serializer.serialize(s,function(y,w){w?p(w):v.db.transaction(function(C){ae(C,v,"INSERT OR REPLACE INTO "+v.storeName+" (key, value) VALUES (?, ?)",[r,y],function(){f(g)},function(O,F){p(F)})},function(C){if(C.code===C.QUOTA_ERR){if(c>0){f(yr.apply(u,[r,g,o,c-1]));return}p(C)}})})}).catch(p)});return b(a,o),a}function Rn(r,s,o){return yr.apply(this,[r,s,o,1])}function xn(r,s){var o=this;r=N(r);var c=new m(function(u,a){o.ready().then(function(){var f=o._dbInfo;f.db.transaction(function(p){ae(p,f,"DELETE FROM "+f.storeName+" WHERE key = ?",[r],function(){u()},function(g,v){a(v)})})}).catch(a)});return b(c,s),c}function kn(r){var s=this,o=new m(function(c,u){s.ready().then(function(){var a=s._dbInfo;a.db.transaction(function(f){ae(f,a,"DELETE FROM "+a.storeName,[],function(){c()},function(p,g){u(g)})})}).catch(u)});return b(o,r),o}function Cn(r){var s=this,o=new m(function(c,u){s.ready().then(function(){var a=s._dbInfo;a.db.transaction(function(f){ae(f,a,"SELECT COUNT(key) as c FROM "+a.storeName,[],function(p,g){var v=g.rows.item(0).c;c(v)},function(p,g){u(g)})})}).catch(u)});return b(o,r),o}function Pn(r,s){var o=this,c=new m(function(u,a){o.ready().then(function(){var f=o._dbInfo;f.db.transaction(function(p){ae(p,f,"SELECT key FROM "+f.storeName+" WHERE id = ? LIMIT 1",[r+1],function(g,v){var y=v.rows.length?v.rows.item(0).key:null;u(y)},function(g,v){a(v)})})}).catch(a)});return b(c,s),c}function Dn(r){var s=this,o=new m(function(c,u){s.ready().then(function(){var a=s._dbInfo;a.db.transaction(function(f){ae(f,a,"SELECT key FROM "+a.storeName,[],function(p,g){for(var v=[],y=0;y<g.rows.length;y++)v.push(g.rows.item(y).key);c(v)},function(p,g){u(g)})})}).catch(u)});return b(o,r),o}function On(r){return new m(function(s,o){r.transaction(function(c){c.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'",[],function(u,a){for(var f=[],p=0;p<a.rows.length;p++)f.push(a.rows.item(p).name);s({db:r,storeNames:f})},function(u,a){o(a)})},function(c){o(c)})})}function Fn(r,s){s=K.apply(this,arguments);var o=this.config();r=typeof r!="function"&&r||{},r.name||(r.name=r.name||o.name,r.storeName=r.storeName||o.storeName);var c=this,u;return r.name?u=new m(function(a){var f;r.name===o.name?f=c._dbInfo.db:f=openDatabase(r.name,"","",0),r.storeName?a({db:f,storeNames:[r.storeName]}):a(On(f))}).then(function(a){return new m(function(f,p){a.db.transaction(function(g){function v(O){return new m(function(F,M){g.executeSql("DROP TABLE IF EXISTS "+O,[],function(){F()},function(B,Q){M(Q)})})}for(var y=[],w=0,C=a.storeNames.length;w<C;w++)y.push(v(a.storeNames[w]));m.all(y).then(function(){f()}).catch(function(O){p(O)})},function(g){p(g)})})}):u=m.reject("Invalid arguments"),b(u,s),u}var Nn={_driver:"webSQLStorage",_initStorage:wn,_support:_n(),iterate:An,getItem:Sn,setItem:Rn,removeItem:xn,clear:kn,length:Cn,key:Pn,keys:Dn,dropInstance:Fn};function Un(){try{return typeof localStorage<"u"&&"setItem"in localStorage&&!!localStorage.setItem}catch{return!1}}function br(r,s){var o=r.name+"/";return r.storeName!==s.storeName&&(o+=r.storeName+"/"),o}function Ln(){var r="_localforage_support_test";try{return localStorage.setItem(r,!0),localStorage.removeItem(r),!1}catch{return!0}}function Bn(){return!Ln()||localStorage.length>0}function Mn(r){var s=this,o={};if(r)for(var c in r)o[c]=r[c];return o.keyPrefix=br(r,s._defaultConfig),Bn()?(s._dbInfo=o,o.serializer=wt,m.resolve()):m.reject()}function $n(r){var s=this,o=s.ready().then(function(){for(var c=s._dbInfo.keyPrefix,u=localStorage.length-1;u>=0;u--){var a=localStorage.key(u);a.indexOf(c)===0&&localStorage.removeItem(a)}});return b(o,r),o}function Vn(r,s){var o=this;r=N(r);var c=o.ready().then(function(){var u=o._dbInfo,a=localStorage.getItem(u.keyPrefix+r);return a&&(a=u.serializer.deserialize(a)),a});return b(c,s),c}function jn(r,s){var o=this,c=o.ready().then(function(){for(var u=o._dbInfo,a=u.keyPrefix,f=a.length,p=localStorage.length,g=1,v=0;v<p;v++){var y=localStorage.key(v);if(y.indexOf(a)===0){var w=localStorage.getItem(y);if(w&&(w=u.serializer.deserialize(w)),w=r(w,y.substring(f),g++),w!==void 0)return w}}});return b(c,s),c}function Kn(r,s){var o=this,c=o.ready().then(function(){var u=o._dbInfo,a;try{a=localStorage.key(r)}catch{a=null}return a&&(a=a.substring(u.keyPrefix.length)),a});return b(c,s),c}function Jn(r){var s=this,o=s.ready().then(function(){for(var c=s._dbInfo,u=localStorage.length,a=[],f=0;f<u;f++){var p=localStorage.key(f);p.indexOf(c.keyPrefix)===0&&a.push(p.substring(c.keyPrefix.length))}return a});return b(o,r),o}function Gn(r){var s=this,o=s.keys().then(function(c){return c.length});return b(o,r),o}function Hn(r,s){var o=this;r=N(r);var c=o.ready().then(function(){var u=o._dbInfo;localStorage.removeItem(u.keyPrefix+r)});return b(c,s),c}function Wn(r,s,o){var c=this;r=N(r);var u=c.ready().then(function(){s===void 0&&(s=null);var a=s;return new m(function(f,p){var g=c._dbInfo;g.serializer.serialize(s,function(v,y){if(y)p(y);else try{localStorage.setItem(g.keyPrefix+r,v),f(a)}catch(w){(w.name==="QuotaExceededError"||w.name==="NS_ERROR_DOM_QUOTA_REACHED")&&p(w),p(w)}})})});return b(u,o),u}function zn(r,s){if(s=K.apply(this,arguments),r=typeof r!="function"&&r||{},!r.name){var o=this.config();r.name=r.name||o.name,r.storeName=r.storeName||o.storeName}var c=this,u;return r.name?u=new m(function(a){r.storeName?a(br(r,c._defaultConfig)):a(r.name+"/")}).then(function(a){for(var f=localStorage.length-1;f>=0;f--){var p=localStorage.key(f);p.indexOf(a)===0&&localStorage.removeItem(p)}}):u=m.reject("Invalid arguments"),b(u,s),u}var Yn={_driver:"localStorageWrapper",_initStorage:Mn,_support:Un(),iterate:jn,getItem:Vn,setItem:Wn,removeItem:Hn,clear:$n,length:Gn,key:Kn,keys:Jn,dropInstance:zn},qn=function(s,o){return s===o||typeof s=="number"&&typeof o=="number"&&isNaN(s)&&isNaN(o)},Qn=function(s,o){for(var c=s.length,u=0;u<c;){if(qn(s[u],o))return!0;u++}return!1},_r=Array.isArray||function(r){return Object.prototype.toString.call(r)==="[object Array]"},Ee={},Er={},me={INDEXEDDB:bn,WEBSQL:Nn,LOCALSTORAGE:Yn},Xn=[me.INDEXEDDB._driver,me.WEBSQL._driver,me.LOCALSTORAGE._driver],De=["dropInstance"],St=["clear","getItem","iterate","key","keys","length","removeItem","setItem"].concat(De),Zn={description:"",driver:Xn.slice(),name:"localforage",size:4980736,storeName:"keyvaluepairs",version:1};function eo(r,s){r[s]=function(){var o=arguments;return r.ready().then(function(){return r[s].apply(r,o)})}}function At(){for(var r=1;r<arguments.length;r++){var s=arguments[r];if(s)for(var o in s)s.hasOwnProperty(o)&&(_r(s[o])?arguments[0][o]=s[o].slice():arguments[0][o]=s[o])}return arguments[0]}var to=function(){function r(s){_(this,r);for(var o in me)if(me.hasOwnProperty(o)){var c=me[o],u=c._driver;this[o]=u,Ee[u]||this.defineDriver(c)}this._defaultConfig=At({},Zn),this._config=At({},this._defaultConfig,s),this._driverSet=null,this._initDriver=null,this._ready=!1,this._dbInfo=null,this._wrapLibraryMethodsWithReady(),this.setDriver(this._config.driver).catch(function(){})}return r.prototype.config=function(o){if((typeof o>"u"?"undefined":h(o))==="object"){if(this._ready)return new Error("Can't call config() after localforage has been used.");for(var c in o){if(c==="storeName"&&(o[c]=o[c].replace(/\W/g,"_")),c==="version"&&typeof o[c]!="number")return new Error("Database version must be a number.");this._config[c]=o[c]}return"driver"in o&&o.driver?this.setDriver(this._config.driver):!0}else return typeof o=="string"?this._config[o]:this._config},r.prototype.defineDriver=function(o,c,u){var a=new m(function(f,p){try{var g=o._driver,v=new Error("Custom driver not compliant; see https://mozilla.github.io/localForage/#definedriver");if(!o._driver){p(v);return}for(var y=St.concat("_initStorage"),w=0,C=y.length;w<C;w++){var O=y[w],F=!Qn(De,O);if((F||o[O])&&typeof o[O]!="function"){p(v);return}}var M=function(){for(var Ie=function(oo){return function(){var io=new Error("Method "+oo+" is not implemented by the current driver"),Ir=m.reject(io);return b(Ir,arguments[arguments.length-1]),Ir}},Rt=0,no=De.length;Rt<no;Rt++){var xt=De[Rt];o[xt]||(o[xt]=Ie(xt))}};M();var B=function(Ie){Ee[g]&&console.info("Redefining LocalForage driver: "+g),Ee[g]=o,Er[g]=Ie,f()};"_support"in o?o._support&&typeof o._support=="function"?o._support().then(B,p):B(!!o._support):B(!0)}catch(Q){p(Q)}});return k(a,c,u),a},r.prototype.driver=function(){return this._driver||null},r.prototype.getDriver=function(o,c,u){var a=Ee[o]?m.resolve(Ee[o]):m.reject(new Error("Driver not found."));return k(a,c,u),a},r.prototype.getSerializer=function(o){var c=m.resolve(wt);return k(c,o),c},r.prototype.ready=function(o){var c=this,u=c._driverSet.then(function(){return c._ready===null&&(c._ready=c._initDriver()),c._ready});return k(u,o,o),u},r.prototype.setDriver=function(o,c,u){var a=this;_r(o)||(o=[o]);var f=this._getSupportedDrivers(o);function p(){a._config.driver=a.driver()}function g(w){return a._extend(w),p(),a._ready=a._initStorage(a._config),a._ready}function v(w){return function(){var C=0;function O(){for(;C<w.length;){var F=w[C];return C++,a._dbInfo=null,a._ready=null,a.getDriver(F).then(g).catch(O)}p();var M=new Error("No available storage method found.");return a._driverSet=m.reject(M),a._driverSet}return O()}}var y=this._driverSet!==null?this._driverSet.catch(function(){return m.resolve()}):m.resolve();return this._driverSet=y.then(function(){var w=f[0];return a._dbInfo=null,a._ready=null,a.getDriver(w).then(function(C){a._driver=C._driver,p(),a._wrapLibraryMethodsWithReady(),a._initDriver=v(f)})}).catch(function(){p();var w=new Error("No available storage method found.");return a._driverSet=m.reject(w),a._driverSet}),k(this._driverSet,c,u),this._driverSet},r.prototype.supports=function(o){return!!Er[o]},r.prototype._extend=function(o){At(this,o)},r.prototype._getSupportedDrivers=function(o){for(var c=[],u=0,a=o.length;u<a;u++){var f=o[u];this.supports(f)&&c.push(f)}return c},r.prototype._wrapLibraryMethodsWithReady=function(){for(var o=0,c=St.length;o<c;o++)eo(this,St[o])},r.prototype.createInstance=function(o){return new r(o)},r}(),ro=new to;l.exports=ro},{3:3}]},{},[4])(4)})});var Ar=Object.defineProperty,po=Object.getOwnPropertyDescriptor,go=(e,t)=>{for(var n in t)Ar(e,n,{get:t[n],enumerable:!0})},Rr=(e,t,n,i)=>{for(var l=i>1?void 0:i?po(t,n):t,d=e.length-1,h;d>=0;d--)(h=e[d])&&(l=(i?h(t,n,l):h(l))||l);return i&&l&&Ar(t,n,l),l};function vo(e){return new Promise(t=>{setTimeout(()=>{t()},e)})}function Ot(e){return typeof e=="string"}function xr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&!(e instanceof RegExp)&&!(e instanceof Date)}function kr(e){return typeof e=="object"&&Array.isArray(e)}function yo(e){return typeof e>"u"}function bo(e){return yo(e)||e===null}function _o(e){return typeof e=="function"}function Cr(e){let t=e,n=null,i=function(...l){return n||(n=new t(...l)),n};return i.prototype=t.prototype,i}function Pr(e,t,n){if(typeof n!="function")throw new Error("[Jolibox SDK]Customizer must be a function");function i(l,d){for(let h in d)if(Object.prototype.hasOwnProperty.call(d,h)){let _=l[h],E=d[h],A=n(_,E,h,l,d);A!==void 0?l[h]=A:wr(E)&&wr(_)?l[h]=i({..._},E):Array.isArray(E)&&Array.isArray(_)?l[h]=[..._,...E]:l[h]=E}return l}return i(e,t)}function wr(e){return e&&typeof e=="object"&&e.constructor===Object}function Dr(e,t){if(Array.isArray(e))return e.concat(t)}function Ae(e,t,n={}){let i=null,l,d,h,{leading:_=!1,trailing:E=!0}=n,A=()=>(h=e.apply(d,l),l=void 0,d=void 0,h),T=function(...x){l=x,d=this;let m=_&&!i;if(i&&clearTimeout(i),i=setTimeout(()=>{i=null,E&&!m&&A()},t),m)return A()};return T.cancel=()=>{i&&clearTimeout(i),i=null,l=d=void 0},T.flush=()=>{if(i)return clearTimeout(i),i=null,A()},T}var Eo=(e=>(e[e.DEVELOPER_FILE_NOT_FOUND=0]="DEVELOPER_FILE_NOT_FOUND",e[e.INTERNAL_IOS_CAN_NOT_FOUND_PKG=1]="INTERNAL_IOS_CAN_NOT_FOUND_PKG",e[e.USER_IOS_LOAD_TIMEOUT=2]="USER_IOS_LOAD_TIMEOUT",e[e.INTERNAL_IOS_PKG_LOAD_ERROR=3]="INTERNAL_IOS_PKG_LOAD_ERROR",e[e.INTERNAL_IOS_PKG_PARSE_FAIL=4]="INTERNAL_IOS_PKG_PARSE_FAIL",e[e.USER_IOS_GET_EMPTY_DATA=5]="USER_IOS_GET_EMPTY_DATA",e[e.USER_ANDROID_GET_PKG_FAIL=6]="USER_ANDROID_GET_PKG_FAIL",e[e.DEVELOPER_ANDROID_PACKAGE_FILE_UNEXPECTED_REQUIRE=7]="DEVELOPER_ANDROID_PACKAGE_FILE_UNEXPECTED_REQUIRE",e))(Eo||{}),Ft=class extends Error{constructor(e){if(typeof e=="string"){super(e),this.priority="P1";return}super(e.message),this.priority="P1",this.stack=e.stack,this.raw=e}},Nt=class extends Ft{constructor(){super(...arguments),this.kind="INTERNAL_ERROR"}},Or=class extends Ft{constructor(){super(...arguments),this.kind="USER_ERROR"}},Fr=class extends Or{constructor(){super(...arguments),this.name="USER_VALIDATE_ERROR"}};var Io=class extends Or{constructor(e,t,n){super(e),this.message=e,this.errNo=t,this.name="USER_CUSTOM_ERROR",this.errMsg=e,n&&(this.extra=Object.assign({},this.extra,n))}};var Nr=class extends Nt{constructor(){super(...arguments),this.name="INTERNAL_SCHEMA_PARSE_ERROR",this.priority="P0"}};var Ur=class extends Nt{constructor(){super(...arguments),this.name="INTERNAL_GLOBAL_JS_ERROR",this.priority="P1"}},Be=class extends Ft{constructor(e,t,n,i,l){super(e),this.message=e,this.code=t,this.kind="API_ERROR",this.name="API_ERROR",n&&(this.errorType=n),i!==void 0&&(this.stack=i),l&&(this.priority=l)}toJSON(){return{message:this.message,stack:this.stack,name:this.name,code:this.code,errorType:this.errorType}}};var Ut=class extends Nt{constructor(){super(...arguments),this.name="INTERNAL_REPORTER_ERROR"}};function To(e,t){return(...n)=>t(e,...n)}function Lr(e){return t=>To(t,function(n,...i){if(typeof n=="function")try{return n.apply(this,i)}catch(l){e(new Io(`${l}`))}})}function we(e){return(...t)=>{(globalThis.VConsole?.[e]??globalThis.console[e])(...t)}}var H={log:we("log"),warn:we("warn"),info:we("info"),error:we("error"),debug:we("debug")};Object.assign(globalThis,{logger:H});var Br=Symbol.for("Jolibox.canIUseMap"),wo={};globalThis[Br]=wo;var Lt={get config(){return globalThis[Br]}};var Re=(e=>(e[e.System=1e3]="System",e[e.ErrorTrace=1001]="ErrorTrace",e[e.UserDefined=1002]="UserDefined",e))(Re||{}),he=(e=>(e.MiniGame="mini-game",e.MiniDrama="mini-drama",e.App="app",e.WebSDK="web-sdk",e.AppSDK="app-sdk",e))(he||{}),So=(e=>(e[e.App=0]="App",e[e.H5=1]="H5",e[e.Weapp=2]="Weapp",e[e.Alipay=3]="Alipay",e[e.Gcash=4]="Gcash",e[e.Dana=5]="Dana",e[e.Umma=6]="Umma",e[e.WebSDK=1e3]="WebSDK",e[e.AppSDK=1001]="AppSDK",e[e.Other=9999]="Other",e))(So||{}),Sr=["name","params"],Ao=["name","type","location","target","extra","timestamp","userId"],Ro=["platform","os","appVersion","appId","model","brand","uuid","jsSdkVersion","extra"];function Ne(e,t){return t.map(n=>{if(n==="params"&&e[n]){let i=e[n];return Object.keys(i).reduce((l,d)=>(l[d]=String(i[d]),l),{})}return e[n]})}function xo(e){let t=e.location?Ne(e.location,Sr):null,n=e.target?Ne(e.target,Sr):null;return Ne({...e,location:t,target:n},Ao)}function Bt(e){let t=e.events.map(i=>xo(i)),n=Ne(e.device,Ro);return[e.protocolVersion,t,n,e.project]}var ko=()=>"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)});var Oe={isiOS:navigator.userAgent.includes("iPhone")||navigator.userAgent.includes("iPod")||navigator.userAgent.includes("iPad")||navigator.userAgent.includes("iPhone OS"),iosVersion:()=>{let e=navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/);return[parseInt(e[1],10),parseInt(e[2],10),parseInt(e[3]||"0",10)]},isAndroid:navigator.userAgent.includes("Android"),isMac:navigator.userAgent.includes("Mac"),isFacebook:navigator.userAgent.includes("FB_IAB"),isPC:!navigator.userAgent.includes("iPhone")&&!navigator.userAgent.includes("Android")},Co=()=>Oe.isiOS?"iOS":Oe.isAndroid?"Android":Oe.isMac?"Mac":Oe.isFacebook?"Facebook":"PC",Po="device_id",Do="advertising_id",Mr=e=>(localStorage.getItem(e)||localStorage.setItem(e,ko()),localStorage.getItem(e)),Mt=()=>Mr(Po),Oo=()=>Mr(Do),Fo=e=>e.charAt(0).toUpperCase()+e.slice(1),No=()=>{let e=new URLSearchParams(window.location.search);return Fo(e.get("utm_source")??"")||"JoliboxSDK"},$r=e=>{let t="JoliboxWebSDK",n=Co(),i=navigator.language,l=Mt(),d=Oo();return`${t} (${No()}${n}; UnknownModel; UnknownSystemVersion; ${i}) uuid/${l} adid/${d} version/${e||""}`},L=class Ue{static{this.Undefined=new Ue(void 0)}constructor(t){this.element=t,this.next=Ue.Undefined,this.prev=Ue.Undefined}},Uo=class{constructor(){this._first=L.Undefined,this._last=L.Undefined,this._size=0}get size(){return this._size}isEmpty(){return this._first===L.Undefined}clear(){let e=this._first;for(;e!==L.Undefined;){let t=e.next;e.prev=L.Undefined,e.next=L.Undefined,e=t}this._first=L.Undefined,this._last=L.Undefined,this._size=0}unshift(e){return this._insert(e,!1)}push(e){return this._insert(e,!0)}_insert(e,t){let n=new L(e);if(this._first===L.Undefined)this._first=n,this._last=n;else if(t){let l=this._last;this._last=n,n.prev=l,l.next=n}else{let l=this._first;this._first=n,n.next=l,l.prev=n}this._size+=1;let i=!1;return()=>{i||(i=!0,this._remove(n))}}shift(){if(this._first!==L.Undefined){let e=this._first.element;return this._remove(this._first),e}}pop(){if(this._last!==L.Undefined){let e=this._last.element;return this._remove(this._last),e}}_remove(e){if(e.prev!==L.Undefined&&e.next!==L.Undefined){let t=e.prev;t.next=e.next,e.next.prev=t}else e.prev===L.Undefined&&e.next===L.Undefined?(this._first=L.Undefined,this._last=L.Undefined):e.next===L.Undefined?(this._last=this._last.prev,this._last.next=L.Undefined):e.prev===L.Undefined&&(this._first=this._first.next,this._first.prev=L.Undefined);this._size-=1}*[Symbol.iterator](){let e=this._first;for(;e!==L.Undefined;)yield e.element,e=e.next}},Lo=0,Fe=class{constructor(e){this.value=e,this.id=Lo++}},Se=class{constructor(e){this.options=e,this._size=0}dispose(e){this._disposed||(this._disposed=!0,this._listeners&&(e?(this._listeners instanceof Fe&&(this._listeners=[this._listeners]),this._listeners=this._listeners.filter(t=>t?.value===e)):(this._listeners=void 0,this._size=0)),this.options?.onDidRemoveLastListener?.())}get event(){return this._event??=(e,t)=>{if(this._disposed)return()=>{console.info("[Jolibox SDK] Emitter is _disposed")};t&&(e=e.bind(t));let n=new Fe(e);this._listeners?this._listeners instanceof Fe?this._listeners=[this._listeners,n]:this._listeners.push(n):(this.options?.onWillAddFirstListener?.(this),this._listeners=n,this.options?.onDidFirstListener?.(this)),this.options?.onDidAddListener?.(this),this._size++},this._event}_deliver(e,t){if(!e)return;let n=this.options?.onListenerError||Error.constructor;if(!n){e.value(t);return}try{e.value(t)}catch(i){n(i)}}fire(e){this._listeners&&(this._listeners instanceof Fe?this._deliver(this._listeners,e):this._listeners.forEach(t=>this._deliver(t,e)))}hasListeners(){return this._size>0}},pe=class{constructor(){this.listeners=new Map,this.listerHandlerMap=new WeakMap,this.cachedEventQueue=new Map}on(e,t){let n=this.listeners.get(e)??new Se,i=d=>t(...d.args);this.listerHandlerMap.set(t,i),n.event(i),this.listeners.set(e,n);let l=this.cachedEventQueue.get(e);if(l)for(;l.size>0;)n.fire({event:e,...l.shift()})}off(e,t){let n=this.listeners.get(e);if(n){let i=this.listerHandlerMap.get(t);n.dispose(i)}}emit(e,...t){let n=this.listeners.get(e);if(n)n.fire({event:e,args:t});else{let i=this.cachedEventQueue.get(e);i||(i=new Uo,this.cachedEventQueue.set(e,i)),i.push({args:t})}}},Pt={};go(Pt,{None:()=>Bo,filter:()=>$o,once:()=>Vr,toPromise:()=>Mo});var Bo=()=>{console.log("[Jolibox SDK] None Event")};function Mo(e){return new Promise(t=>Vr(e)(t))}function Vr(e){return(t,n=null)=>{let i=!1;return e(l=>{if(!i)return i=!0,t.call(n,l)},null)}}function $o(e,t){return(n=>{let i,l={onWillAddFirstListener(){i=n(d.fire,d)}},d=new Se(l);return d.event})((n,i=null)=>e(l=>t(l)&&n.call(i,l),null))}var kt=Symbol.for("Jolibox.hostEmitter"),Vo=()=>{let e=new pe;return globalThis[kt]||(globalThis[kt]={on:e.on.bind(e),off:e.off.bind(e),emit:e.emit.bind(e)}),globalThis[kt]},xe=Vo();function jo(e,t){let n=Math.min(e.length,t.length);for(let i=0;i<n;i++)Ko(e[i],t[i])}function Ko(e,t){if(Ot(t)){if(typeof e!==t)throw new Error(`argument does not match constraint: typeof ${t}`)}else if(_o(t)){try{if(e instanceof t)return}catch{}if(!bo(e)&&e.constructor===t||t.length===1&&t.call(void 0,e)===!0)return;throw new Error("[Jolibox SDK]argument does not match one of these constraints: arg instanceof constraint, arg.constructor === constraint, nor constraint(arg) === true")}}var Le=class{constructor(){this._commands=new Map,this._onDidRegisterCommand=new Se,this.onDidRegisterCommand=this._onDidRegisterCommand.event,console.log("[Jolibox SDK] command registry")}registerCommand(e){if(!e)throw new Error("invalid command");if(e.metadata&&Array.isArray(e.metadata.args)){let n=[];for(let l of e.metadata.args)n.push(l.constraint);let i=e.handler;e.handler=function(...l){return jo(l,n),i(...l)}}let{id:t}=e;this._commands.get(t)&&console.info(`[Jolibox SDK] duplicated command is registered ${t}`),this._commands.set(t,e),this._onDidRegisterCommand.fire(t)}getCommand(e){return this._commands.get(e)}getCommands(){let e=new Map;for(let t of this._commands.keys()){let n=this.getCommand(t);n&&e.set(t,n)}return e}};Le=Rr([Cr],Le);var Dt=class{constructor(){this._onWillExecuteCommand=new Se,this.onWillExecuteCommand=this._onWillExecuteCommand.event,this._onDidExecuteCommand=new Se,this.onDidExecuteCommand=this._onDidExecuteCommand.event,this.registry=new Le,this._starActivation=null}_activateStar(){return this._starActivation||(this._starActivation=vo(3e4)),this._starActivation}async executeCommand(e,...t){return this.registry.getCommand(e)?this._tryExecuteCommand(e,t):(await Promise.all([Promise.race([this._activateStar(),Pt.toPromise(Pt.filter(this.registry.onDidRegisterCommand,n=>n===e))])]),this._tryExecuteCommand(e,t))}executeCommandThowErr(e,...t){if(!this.registry.getCommand(e))throw new Error(`command '${e}' not found`);let n=this.registry.getCommand(e);this._onWillExecuteCommand.fire({commandId:e,args:t});let i=this.invokeFunction(n.handler,...t);return this._onDidExecuteCommand.fire({commandId:e,args:t}),i}_tryExecuteCommand(e,t){let n=this.registry.getCommand(e);if(!n)return Promise.reject(new Error(`command '${e}' not found`));try{this._onWillExecuteCommand.fire({commandId:e,args:t});let i=this.invokeFunction(n.handler,...t);return this._onDidExecuteCommand.fire({commandId:e,args:t}),Promise.resolve(i)}catch(i){return Promise.reject(i)}}invokeFunction(e,...t){let n=!1;try{return e(...t)}finally{n=!0}}};Dt=Rr([Cr],Dt);var Ct=Symbol.for("Jolibox.commands");function X(){if(globalThis[Ct])return globalThis[Ct];let e=new Le,t=new Dt,n={registerCommand(i,l,d){e.registerCommand({id:i,handler:l,metadata:d})},executeCommand(i,...l){return t.executeCommand(i,...l)},excuteCommandSync(i,...l){return t.executeCommandThowErr(i,...l)}};return globalThis[Ct]=n,n}var $t=new pe,ue=new pe;function ee(e,t={}){$t.emit("ERROR_REPORT",{error:e,options:t})}ee.debounce=Ae(ee,50,{leading:!0});var Vt=e=>{let t=e.replace(/-/g,"+").replace(/_/g,"/"),n=t.length%4===0?"":"=".repeat(4-t.length%4),i=atob(t+n);try{return JSON.parse(i)}catch{return{}}},jr=e=>{try{let i=new URL(e).searchParams.get("joliSource")?.split(".");if(i?.length){let[l,d,h]=i;return{headerJson:Vt(l),payloadJson:Vt(d),signature:Vt(h)}}else throw"joli_source is missing"}catch(t){return ee(new Nr(`${e} not a valid schema: ${t}`)),{headerJson:{},payloadJson:{},signature:{}}}};var Jo="1.1.6-beta.3",Me=()=>Jo,Kr=()=>{let e=Me();return`${$r(e)}`};var Go={deviceInfo:{brand:"UnknownBrand",model:"UnknownModel",did:Mt(),pixelRatio:window.devicePixelRatio||1,platform:"h5",system:"UnknownSystemVersion",lang:"zh"},sdkInfo:{nativeSDKVersion:"",jssdkVersion:Me()},schema:window.location.href,platform:"h5"},Ho=globalThis.joliboxJSCore?.env,z=Object.assign({},Ho?.()??Go),Wo=()=>{let{payloadJson:e,headerJson:t}=z.schema.length?jr(z.schema):{},n=`${z.deviceInfo.did}-${new Date().getTime()}`,l=new URL(z.schema.length?z.schema:window.location.href).searchParams,d=l.get("mpId")??l.get("appId")??l.get("gameId")??"",h=e?.sessionId??l.get("sessionId")??n,_=!!(e?.testAdsMode??l.get("testAdsMode")==="true"),E=e?.joliboxEnv??l.get("joliboxEnv")??"production",A=E==="staging",T=t?.channel;return{get testMode(){return A},get testAdsMode(){return _},get joliboxEnv(){return E},get joliSource(){return l.get("joliSource")??null},get mpId(){return d??e?.id??""},get mpVersion(){return t?.ver??Me()},get platform(){return z.platform??z.deviceInfo.platform},get deviceInfo(){return z.deviceInfo},get sdkInfo(){return z.sdkInfo},get hostInfo(){return z.hostInfo},get hostUserInfo(){return z.hostUserInfo},get sessionId(){return z.clientSessionId??h??n},get channel(){return T},onEnvConfigChanged:x=>{Pr(z,x,Dr)}}},R=Wo();var jt=!1,Gr=(e,t)=>e==null?!1:t in e,zo=e=>Gr(e,"kind"),Yo=e=>{let t=e.toLowerCase().split("_");return t[0]+t.slice(1).map(n=>n.charAt(0).toUpperCase()+n.slice(1)).join("")},Jr=(e,t={},n)=>{let l={...{user_id:R.hostUserInfo?.uid??"",device_id:R.deviceInfo.did??"",timestamp:Date.now(),tag:Yo(e.name)},env:t.environment,isFromUser:n};n?ue.emit("GLOBAL_USER_ERROR",e,l):ue.emit("GLOBAL_ERROR",e,l)},qo=e=>Gr(e,"kind")&&e.kind==="USER_ERROR";$t.on("ERROR_REPORT",({error:e,options:t})=>{if(jt)return;jt=!0;let n=zo(e)&&e.raw?e.raw:e;try{let i=qo(e);Jr(e,t,i)}catch(i){let l=i instanceof Error?i.message:String(i),d=new Ut(`${l}, origin error: ${n.message}`);H.error(d),Jr(new Ut(d.message),{environment:t.environment},!1)}finally{jt=!1}});var Kt=e=>new Fr(e);function Hr(e,t){let n=(i,l,d)=>{let h={tag:i,...t,extra:{...l}};i=="globalJsError"?ee(new Ur(JSON.stringify(h))):e("systemLog",h,d)};return n.debounce=Ae(n,500,{leading:!0}),n}function Wr(e){let t=(n,i,l)=>{let d=(l&&JSON.stringify(l))??0,h={speed_value_type:n,total_duration:i};d&&Object.assign(h,{extra:d}),e("joliboxSpeedAnalysis",h)};return t.debounce=Ae(t,500,{leading:!0}),t}function zr(e,t){let n=Hr(e,t),i=Wr(n);return{track:n,trackPerformance:i}}var $e=class{constructor(){this.deviceInfo=null;this.pastTrackings=[];this.samplesConfig=null;this.pushPastTracking=t=>{this.pastTrackings.push(t),this.pastTrackings.length>10&&this.pastTrackings.slice(-10)};this.fetchSamplesConfig()}get networkIsOk(){return this.pastTrackings.length<=4||this.pastTrackings.filter(Boolean).length/this.pastTrackings.length>=.6}async fetchSamplesConfig(){let n=`${R.testMode?"https://stg-api.jolibox.com":"https://api.jolibox.com"}/api/fe-configs/js-sdk/samples-config`,i=await(await fetch(n)).json();this.samplesConfig=i}checkIsSampled(t){if(!this.samplesConfig)return!1;let{samples:n}=this.samplesConfig;for(let[i,l]of Object.entries(n))if(l.includes(t.name))return Math.floor(Math.random()*101)<parseFloat(i);return!1}getDevice(){let{nativeSDKVersion:t,jssdkVersion:n}=R.sdkInfo;return{platform:1e3,os:R.deviceInfo.platform,appVersion:t??n??"1.0.0",appId:R.hostInfo?.aid??"1",model:R.deviceInfo.model??"UnknownModel",brand:R.deviceInfo.brand??"UnknownBrand",uuid:R.deviceInfo.did,jsSdkVersion:n,extra:{}}}getLocation(){let t=new URLSearchParams(window.location.search),n={};return t.forEach((i,l)=>{n[l]=i}),{name:"GamePage",params:n}}async trackEvent(t,n,i){if(this.checkIsSampled(t))return;let l=t.location?t.location:await this.getLocation(),d=t.target||null,h=t.extra||null;this.deviceInfo||(this.deviceInfo=await this.getDevice());let _=this.deviceInfo,A={protocolVersion:"1.0.0",events:[{...t,location:l,target:d,extra:h,timestamp:Date.now(),userId:null}],device:_,project:n};try{i?this.doReport(Bt(A),i):this.doReport(Bt(A)),this.pushPastTracking(!0)}catch(T){this.pushPastTracking(!1),H.log("[Jolibox SDK] report API error",T)}}};var Jt=e=>{let t=new AbortController;return setTimeout(()=>t.abort(),e),t.signal};AbortSignal.timeout??=Jt;var Ve=class{constructor(t){this.xua=Kr();this.getJoliSource=()=>R.joliSource;let n=R.testMode?"https://stg-api.jolibox.com":"https://api.jolibox.com";this.baseUrl=t?.baseUrl??n}async get(t,n){let{query:i,timeout:l}=n??{},{headers:d}=n??{},_=(i?new URLSearchParams(i):null)?.toString(),E=`${this.baseUrl}${t}${_?`?${_}`:""}`,A=this.xua,T=this.getJoliSource();return d=Object.assign({},d??{},A?{"x-user-agent":A}:{},T?{"x-joli-source":T}:{}),await(await fetch(E,{method:"GET",headers:d,credentials:"include",signal:Jt(l??3e4)})).json()}async post(t,n){let{data:i,query:l,timeout:d}=n??{},{headers:h}=n??{},E=(l?new URLSearchParams(l):null)?.toString(),A=`${this.baseUrl}${t}${E?`?${E}`:""}`,T=this.xua,x=this.getJoliSource();h=Object.assign({},h??{},{"Content-Type":"application/json"},T?{"x-user-agent":T}:{},x?{"x-joli-source":x}:{});let m=await fetch(A,{method:"POST",headers:h,body:JSON.stringify(i),signal:Jt(d??3e4),credentials:"include"}),b=m.headers.get("content-type");if(b?.includes("application/octet-stream"))try{return m.blob()}catch{return await m.arrayBuffer()}if(b?.includes("multipart/form-data")||b?.includes("application/x-www-form-urlencoded"))try{return m.formData()}catch{return await m.text()}if(b?.includes("application/json"))try{return await m.json()}catch{return await m.text()}return m}async put(t,n){try{let{data:i,query:l,timeout:d}=n??{},{headers:h}=n??{},E=(l?new URLSearchParams(l):null)?.toString(),A=`${this.baseUrl}${t}${E?`?${E}`:""}`,T=this.xua,x=this.getJoliSource();h=Object.assign({},h??{},{"Content-Type":"application/json"},T?{"x-user-agent":T}:{},x?{"x-joli-source":x}:{});let m=await fetch(A,{method:"PUT",headers:h,credentials:"include",body:JSON.stringify(i??{})});if(!m.ok)throw new Error(`HTTP error! status: ${m.status}`);return await m.json()}catch(i){throw console.error("Error:",i),i}}};window.JoliboxHttpClient=Ve;var ce=Ve;var Gt=class extends $e{constructor(){super(...arguments);this.hostToApiMap={default:{test:"https://stg-collect.jolibox.com",prod:"https://collect.jolibox.com"},"oss.jolibox.com":{test:"https://stg-collect.jolibox.com",prod:"https://collect.jolibox.com"},"oss.pico-game.com":{test:"https://stg-collect.pico-game.com",prod:"https://collect.pico-game.com"}};this.httpClient=new ce({baseUrl:this.apiBaseURL})}get apiBaseURL(){let n=this.hostToApiMap[window.location.host]??this.hostToApiMap.default;return R.testMode??!1?n.test:n.prod}doReport(n){this.httpClient.post("/report",{data:n,timeout:5e3}),H.info("Track",n)}},ge=new Gt;var Qo=(e,t)=>{let n={message:t.message,stack:t.stack??"",errorType:t.name,source:0},i={name:e,type:Re.ErrorTrace,location:null,target:null,extra:n,timestamp:Date.now(),userId:R.hostUserInfo?.uid??null};ge.trackEvent(i,he.WebSDK)};ue.on("GLOBAL_ERROR",(e,t)=>{Qo(t.tag,e)});ue.on("GLOBAL_USER_ERROR",(e,t)=>{H.log("UserError",e,t)});var je=class{constructor(t,n){this.eventEmitter=t;this.lastReportTime=0;this.visible=!0;this.timer=this.createRAFTimer(t=>{this.reporter({event:"PLAY_GAME",params:{duration:t}}),this.tracker("PlayGame",{duration:t})});this.interval=n??5*1e3,t.on("visible",i=>{this.visible=i})}start(t){this.reporter({event:"OPEN_GAME",params:{timestamp:Date.now(),duration:t??0}}),this.tracker("OpenGame",{duration:t??0}),this.timer.start()}close(t){this.reporter({event:"CLOSE_GAME",params:{timestamp:Date.now(),duration:t}}),this.tracker("CloseGame",{duration:t}),this.timer.stop()}createRAFTimer(t){let n=Date.now(),i,l,d=!1,h=0,_=()=>{if(!d)return;let b=Date.now(),k=b-n;k>=this.interval&&(this.visible&&(h+=k,t(h)),n=b),i=requestAnimationFrame(_)},E=()=>{T(),n=Date.now(),l=window.setInterval(()=>{if(!d)return;let b=Date.now();b-n>=this.interval&&(n=b)},this.interval)},A=()=>{x(),n=Date.now(),i=requestAnimationFrame(_)},T=()=>{i&&(cancelAnimationFrame(i),i=0)},x=()=>{l&&(clearInterval(l),l=0)};this.eventEmitter.on("visible",b=>{d&&(console.log("visible",b),b?A():E())});let m=this.visible;return{start(){d||(d=!0,m?A():E())},stop(){d=!1,T(),x()}}}};var Ke=class extends je{constructor(n,i,l){super(i,l);this.httpClient=new ce;this.gameId=R.mpId,this.sessionId=R.sessionId,this.track=n}async reporter(n){let{event:i,params:l}=n;await this.httpClient.post("/api/base/app-event",{data:{eventType:i,gameInfo:{gameId:this.gameId,sessionId:this.sessionId,...l}}}),H.log("-----task tracker-----",i,l)}tracker(n,i=null){this.track(n,i)}};var Yr=X(),Xo={type:he.WebSDK,platform:"h5",jssdk_version:R.sdkInfo.jssdkVersion,mp_id:R.mpId,mp_version:R.mpVersion},{track:ve,trackPerformance:Zo}=zr((...e)=>{let[,t]=e,n=t,l={...xr(n.extra)?n.extra:Ot(n.extra)?JSON.parse(n.extra):{},mp_id:n.mp_id??"",mp_version:n.mp_version??""},d={name:t.tag,type:Re.System,location:null,target:null,extra:l,timestamp:Date.now(),userId:R.hostUserInfo?.uid??null};ge.trackEvent(d,he.WebSDK)},Xo);Yr.registerCommand("ReportSDK.traceSystemTimeline",({event:e,duration:t,extra:n})=>{Zo(e,t,n)});Yr.registerCommand("ReportSDK.traceSystem",({event:e,info:t})=>{ve(e,t)});var Ht=new pe,te=new Ke(ve,Ht);function qr(e){let t=Lt.config[e];return t||(t={},Lt.config[e]=t),(n,i)=>{if(t[n]){H.warn(`[can i use] ${n} already registered`);return}t[n]={...i}}}var Qr=!1;function Wt(e){Qr=e}function Je(e){return e===null||typeof e!="object"?e:Array.isArray(e)?e.map(t=>Je(t)):Object.keys(e).reduce((t,n)=>(t[n]=Je(e[n]),t),{})}var $=class{constructor(){this.errors=[];this.hasFallback=!1;this.hasDefault=!1;this._optional=!1}fail(t){if(Qr)if(typeof t=="string")this.errors.push(t);else{let n=`${this.path} should be ${t.expect}`;this._optional&&t.expect!=="undefined"?n+=" or undefined, ":n+=", ",n+=`but got ${zt(t.actual)}`,this.errors.push(n)}return!1}fallback(t){return this.hasFallback=!0,this._fallback=t,this}get fallbackValue(){return Je(this._fallback)}default(t){return this.hasDefault=!0,this._default=t,this}get defaultValue(){return typeof this._default=="function"?this._default:Je(this._default)}optional(){return this._optional=!0,this}};function ie(e){return typeof e=="number"}function zt(e){let t=Yt(e);switch(t){case"string":return`"${e}"`;case"number":case"boolean":case"null":case"undefined":return String(e);default:return`a(n) ${t}`}}function Yt(e){return typeof e=="function"?"function":Object.prototype.toString.call(e).slice(8).slice(0,-1).toLowerCase()}var Ge=class extends ${validate(t){return this._optional&&t===void 0?!0:ie(t)?ie(this._min)&&t<this._min?this.fail(`the value of ${this.path} should be greater than or equal to ${this._min}`):ie(this._max)&&t>this._max?this.fail(`the value of ${this.path} should be less than or equal to ${this._max}`):ie(this._greater)&&t<=this._greater?this.fail(`the value of ${this.path} should be greater than ${this._greater}`):this._isInt&&t!==Math.floor(t)?this.fail(`the value of ${this.path} should be integer but got ${t}`):!0:this.fail({expect:"number",actual:t})}min(t){return this._min=t,this}max(t){return this._max=t,this}isInt(t){return this._isInt=t,this}greater(t){return this._greater=t,this}},He=class extends ${validate(t){return this._optional&&t===void 0?!0:typeof t!="boolean"?this.fail({expect:"boolean",actual:t}):!0}},We=class extends ${validate(t){if(this._optional&&t===void 0)return!0;if(typeof t!="string")return this.fail({expect:"string",actual:t});if(ie(this._maxLength)&&t.length>this._maxLength)return this.fail(`the length of ${this.path} should be less than or equal to ${this._maxLength}`);if(ie(this._minLength)&&t.length<this._minLength)return this.fail(`the length of ${this.path} should be greater than or equal to ${this._minLength}`);if(typeof this._pattern=="string"){if(!new RegExp(this._pattern).test(t))return this.fail(`${this.path} should match pattern "${this._pattern}"`)}else if(this._pattern&&!this._pattern.test(t))return this.fail(`${this.path} should match pattern "${this._pattern.toString()}"`);return!0}minLength(t){return this._minLength=t,this}maxLength(t){return this._maxLength=t,this}pattern(t){return this._pattern=t,this}},ze=class extends ${validate(t){return this._optional&&t===void 0?!0:typeof t!="symbol"?this.fail({expect:"symbol",actual:t}):!0}},ye=class extends ${validate(t){return!0}},Ye=class extends ${validate(t){return t!==void 0?this.fail({expect:"undefined",actual:t}):!0}},qe=class extends ${validate(t){return this._optional&&t===void 0?!0:t!==null?this.fail({expect:"null",actual:t}):!0}},Qe=class extends ${validate(t){return this._optional&&t===void 0?!0:typeof t!="function"?this.fail({expect:"function",actual:t}):!0}},Xe=class extends ${constructor(...t){super(),this._items=t}validate(t){if(this._optional&&t===void 0)return!0;if(!this._items.includes(t)){let n=this._items.map(i=>JSON.stringify(i)).join(", ");return this.fail(`expect ${this.path} to be one of ${n}, but got ${zt(t)}`)}return!0}},Ze=class extends ${constructor(n){super();this._item=n}validate(n){if(this._optional&&n===void 0)return!0;if(!Array.isArray(n))return this.fail({expect:"array",actual:n});if(ie(this._minItems)&&n.length<this._minItems)return this.fail(`the length of ${this.path} should be greater than or equal to ${this._minItems}`);if(ie(this._maxItems)&&n.length>this._maxItems)return this.fail(`the length of ${this.path} should be less than or equal to ${this._maxItems}`);if(ie(this._length)&&n.length!==this._length)return this.fail(`the length of ${this.path} should be equal to ${this._length}`);let i=this._item;if(!i)return!0;let l=!0;if(n.forEach((d,h)=>{if(i.path=`${this.path}[${h}]`,i.errors=this.errors,d===void 0&&i.hasDefault){n[h]=i.defaultValue;return}i.validate(d)||(i.hasFallback?n[h]=i.fallbackValue:l=!1)}),this._uniqueItems){let d=new Map;for(let h in n)d.has(n[h])?l=this.fail(`${this.path} should NOT have duplicate items (${this.path}[${d.get(n[h])}] and ${this.path}[${h}] are identical)`):d.set(n[h],h)}return l}minItems(n){return this._minItems=n,this}maxItems(n){return this._maxItems=n,this}uniqueItems(){return this._uniqueItems=!0,this}length(n){return this._length=n,this}},et=class extends ${constructor(n){super();this._value=n}validate(n){if(this._optional&&n===void 0)return!0;if(Yt(n)!=="object")return this.fail({expect:"object",actual:n});let l=n,d=this._value;d.errors=this.errors;let h=!0;for(let _ in l){let E=l[_];if(/^[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*$/.test(_)?d.path=`${this.path}.${_}`:d.path=`${this.path}["${_}"]`,!(E===void 0&&d._optional)){if(E===void 0&&d.hasDefault){l[_]=d.defaultValue;continue}d.validate(E)||(d.hasFallback?l[_]=d.fallbackValue:h=!1)}}return h}},tt=class extends ${constructor(n={}){super();this._object=n}validate(n){if(this._optional&&n===void 0)return!0;if(Yt(n)!=="object")return this.fail({expect:"object",actual:n});let i=n,l=!0;for(let d in this._object){let h=i[d],_=this._object[d];if(_.errors=this.errors,/^[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*$/.test(d)?_.path=`${this.path}.${d}`:_.path=`${this.path}["${d}"]`,!(_._optional&&h===void 0)){if(h===void 0&&_.hasDefault){i[d]=_.defaultValue;continue}_.validate(h)||(_.hasFallback?i[d]=_.fallbackValue:l=!1)}}return l}},rt=class extends ${constructor(n){super();this.value=n}validate(n){return n===void 0&&this._optional?!0:n!==this.value?this.fail({expect:zt(this.value),actual:n}):!0}},nt=class extends ${constructor(...t){super(),this._items=t}validate(t){if(t===void 0&&this._optional)return!0;let n=[],i=!1,l=this._items.length;for(let d=0;d<l;d++){let h=this._items[d];if(h.errors=[],h.path=this.path,!h.validate(t))n.push(h.errors.join("; "));else if(!i){i=!0;break}}if(!i){let d=n.join(`
2
2
  or `);this.errors.push(d)}return i}},ot=class extends ${constructor(...t){super(),this._items=t;let n=0,i=t.length-1;for(;i>=0;i--){let l=t[i];if(l._optional||l.hasDefault)n+=1;else break}this._minItems=t.length-n}validate(t){if(t===void 0&&this._optional)return!0;if(!Array.isArray(t))return this.fail({expect:"array",actual:t});if(t.length<this._minItems)return this.fail(`the length of ${this.path} should be greater than or equal to ${this._minItems}`);let n=!0;return this._items.forEach((i,l)=>{if(i.path=`${this.path}[${l}]`,i.errors=this.errors,t[l]===void 0&&i.hasDefault){t[l]=i.defaultValue;return}i.validate(t[l])||(i.hasFallback?t[l]=i._fallback:n=!1)}),n}},it=class extends ${validate(t){return t===void 0&&this._optional||t instanceof ArrayBuffer?!0:this.fail({expect:"arraybuffer",actual:t})}},st=class extends ${constructor(t){super(),this._ctor=t}validate(t){return t===void 0&&this._optional||t instanceof this._ctor?!0:this.fail({expect:`typedarray of ${this._ctor.name}`,actual:t})}};var S={object(e){return new tt(e)},array(e){return new Ze(e)},tuple(...e){return new ot(...e)},literal(e){return new rt(e)},or(...e){return new nt(...e)},symbol(){return new ze},record(e){return new et(e)},function(){return new Qe},boolean(){return new He},string(){return new We},number(){return new Ge},undefined(){return new Ye},null(){return new qe},unknown(){return new ye},any(){return new ye},as(){return new ye},arraybuffer(){return new it},enum(...e){return new Xe(...e)},typedarray(e){return new st(e)}};function qt(e,t,n="param"){if(e.errors=[],e.path=n,Wt(!0),!e.validate(t)){let i=e.errors.join(`
3
- `);throw e.errors.length=0,Wt(!1),new TypeError(i)}}var at=1,Xr=e=>{function t(i,l){return(...d)=>{let h=Date.now(),_={method:i,trace_id:at};at+=1;let E="SUCCESS",A=`${i}:ok`,I=0;try{if(l.paramsSchema)try{qt(l.paramsSchema,d,"params")}catch(k){throw Kt(`${i}:fail ${k.message}`)}let x=l.implement(...d),m=x,b=`${i}:ok`;if(x&&"code"in x){let{code:k,data:N,message:K}=x;E=k,m=N,b=K}return{code:E,message:b,data:m}}catch(x){let m=x;I=m.code??m.errNo??2e3,E="FAILURE";let b=m.message??m.errMsg??`${x}`;return A=`${i}:${E} ${b.replace(/^\S+:(fail|cancel)\s?/,"")}`,ee(new Be(A,I)),{code:E,message:A}}finally{let x=Date.now()-h;e("apiInvoked",{..._,duration:x,status:E})}}}function n(i,l){return async(...d)=>{let h=kr(d)?d:[d],_=Date.now(),E={method:i,trace_id:at};at+=1;let A=`${i}:ok`,I="SUCCESS",x={code:I,message:A};try{if(l.paramsSchema)try{qt(l.paramsSchema,h,"params")}catch(k){throw Kt(k.message)}let b=await l.implement(...h);if(b&&"code"in b){let{code:k,data:N,message:K}=b;I=k,A=K,b=N}return Object.assign(x,{code:I,message:A,data:b}),x}catch(m){let b=m,k=b.code??b.errNo??2e3;I="FAILURE";let N=b.message??b.errMsg??`${m}`,K=`${i}:${I} ${N.replace(/^\S+:(fail|cancel)\s?/,"")}`;return Object.assign(x,{code:I,message:K}),ee(new Be(K,k)),x}finally{let m=Date.now()-_;e("apiInvoked",{...E,duration:m,status:I})}}}return{createAPI:n,createSyncAPI:t}};var{createAPI:Z,createSyncAPI:de}=Xr(ve),j=qr("h5");var Zr=X(),ti="env",ri="getSystemInfoSync",ni=()=>{let e={system:R.deviceInfo.system,platform:R.deviceInfo.platform,brand:R.deviceInfo.brand,pixelRatio:R.deviceInfo.pixelRatio,language:R.deviceInfo.lang,version:R.sdkInfo.jssdkVersion,appName:R.hostInfo?.appName,SDKVersion:R.sdkInfo.nativeSDKVersion},t=R.hostInfo?.version;t&&(e={...e,version:t});let n=R.hostInfo?.appName;n&&(e={...e,appName:n});let i=R.sdkInfo?.jssdkVersion;return i&&(e={...e,SDKVersion:i}),e},oi=de(ri,{implement:ni}),ii=de(ti,{implement:()=>({...R.hostInfo,sdkInfo:R.sdkInfo,platform:R.platform,deviceInfo:R.deviceInfo})});Zr.registerCommand("API.env",ii);Zr.registerCommand("API.getSystemInfoSync",oi);j("env",{version:"1.0.0"});j("getSystemInfoSync",{version:"1.0.0"});var si="onJoliboxShow",ai="onJoliboxHide",ci="onReady",Xt=X(),Zt=Lr(ee),Qt=!0,ke=!0,ct=0,lt=Ht;function li(){let e=Date.now();if(e-ct<100)return;ct=e;let t=document.visibilityState==="visible";t!==Qt&&(Qt=t,lt.emit("visible",Qt))}function en(e){let t=Date.now();t-ct<100||(ct=t,e==="focus"&&!ke?ke=!0:e==="blur"&&ke&&(ke=!1),lt.emit("visible",ke))}document.addEventListener("visibilitychange",li);window.addEventListener("focus",()=>en("focus"));window.addEventListener("blur",()=>en("blur"));var ui=de(si,{paramsSchema:S.tuple(S.function()),implement(e){let t=Zt(e);lt.on("visible",n=>{n&&t()})}}),di=de(ai,{paramsSchema:S.tuple(S.function()),implement(e){let t=Zt(e);lt.on("visible",n=>{!n&&t()})}}),fi=de(ci,{paramsSchema:S.tuple(S.function()),implement(e){let t=Zt(e);xe.on("LifecycleEvent.onReady",n=>{t(n)})}});Xt.registerCommand("LifecycleSDK.onReady",fi);Xt.registerCommand("LifecycleSDK.onJoliboxShow",ui);Xt.registerCommand("LifecycleSDK.onJoliboxHide",di);j("lifeCycle.onReady",{version:"1.0.0"});j("lifeCycle.onJoliboxShow",{version:"1.0.0"});j("lifeCycle.onJoliboxHide",{version:"1.0.0"});var nn=ho(rn()),ut=X(),tr=class{constructor(){this.getGameId=()=>R.mpId;this.getItem=async t=>{let{code:n,data:i,message:l}=await this.httpClient.get(`/api/games/user-storage/${this.gameId}`,{query:{key:t}}),d=i?.value,h=l;return n!=="SUCCESS"&&(d=await this.gameStore.getItem(t),console.info("[SDK] cloud storage getItem failed, read from localstorage",d),h+="fallback to localstorage"),{code:n,message:h,data:d&&d!=="undefined"?d:null}};this.setItem=async(t,n)=>{let i=typeof n=="string"?n:String(n),{code:l,message:d}=await this.httpClient.post(`/api/games/user-storage/${this.gameId}`,{data:{key:t,value:i}});return await this.gameStore.setItem(t,i),{code:l,message:d}};this.removeItem=async t=>{await this.gameStore.removeItem(t);let{code:n,message:i}=await this.httpClient.post(`/api/games/user-storage/${this.gameId}/remove`,{data:{key:t}});return{code:n,message:i}};this.clear=async()=>{await this.gameStore.clear();let{code:t,message:n}=await this.httpClient.post(`/api/games/user-storage/${this.gameId}/clear`,{});return{code:t,message:n}};this.gameId=this.getGameId(),this.httpClient=new ce({baseUrl:R.testMode?"https://stg-api.jolibox.com":"https://api.jolibox.com"}),this.gameStore=nn.default.createInstance({name:this.gameId.length?this.gameId:"default"})}},dt=new tr,mi=Z("getLocalStorage",{paramsSchema:S.tuple(S.string()),async implement(e){return await dt.getItem(e)}});ut.registerCommand("StorageSDK.getItem",mi);j("storage.getItem",{version:"1.0.0",properties:{key:"1.0.0",value:"1.0.0"}});var hi=Z("setStorage",{paramsSchema:S.tuple(S.string(),S.or(S.string(),S.boolean(),S.number())),async implement(e,t){return await dt.setItem(e,t)}});ut.registerCommand("StorageSDK.setItem",hi);j("storage.setItem",{version:"1.0.0",properties:{key:"1.0.0",value:"1.0.0"}});var pi=Z("removeStorage",{paramsSchema:S.tuple(S.string()),async implement(e){return await dt.removeItem(e)}});ut.registerCommand("StorageSDK.removeItem",pi);j("storage.removeItem",{version:"1.0.0",properties:{key:"1.0.0"}});var gi=Z("clearStorage",{async implement(){return await dt.clear()}});ut.registerCommand("StorageSDK.clear",gi);j("storage.clear",{version:"1.0.0"});var be=X(),vi=Z("levelFinished",{paramsSchema:S.tuple(S.string(),S.object({result:S.boolean(),duration:S.number()})),implement:async(e,t)=>{let{result:n,duration:i}=t;H.info("onLevelFinished",n,i),await Promise.all([te.reporter({event:"COMPLETE_GAME_LEVEL"}),te.tracker("LevelFinished",{levelId:e,result:n,duration:i})])}}),yi=Z("taskFinished",{paramsSchema:S.tuple(S.string(),S.object({duration:S.number()})),implement:async(e,t)=>{let{duration:n}=t;await te.tracker("TaskFinished",{duration:n,taskId:e})}}),bi=Z("levelUpgrade",{paramsSchema:S.tuple(S.string(),S.string()),implement:async(e,t)=>await te.tracker("LevelUpgrade",{name:t,levelId:e})}),_i=Z("onHistoryUserLevel",{paramsSchema:S.tuple(S.number()),implement:async e=>await te.tracker("HistoryUserLevel",{level:e})}),Ei=Z("onHistoryUserScore",{paramsSchema:S.tuple(S.number()),implement:async e=>await te.tracker("HistoryUserScore",{score:e})}),Ti=Z("taskEvent",{paramsSchema:S.tuple(S.string(),S.object({tools:S.array(S.object({id:S.string(),name:S.string(),count:S.number(),description:S.string().optional(),price:S.object({amount:S.number(),unit:S.string()}).optional()})).optional(),awards:S.array(S.object({id:S.string(),name:S.string()})).optional()})),implement:async(e,t)=>{t.tools?.length&&await Promise.all([te.reporter({event:"USE_GAME_ITEM"}),te.tracker("UseGameItem",{taskId:e,...t})])}});be.registerCommand("TaskTrackerSDK.levelFinished",vi);be.registerCommand("TaskTrackerSDK.taskFinished",yi);be.registerCommand("TaskTrackerSDK.levelUpgrade",bi);be.registerCommand("TaskTrackerSDK.historyUserLevel",_i);be.registerCommand("TaskTrackerSDK.historyUserScore",Ei);be.registerCommand("TaskTrackerSDK.taskEvent",Ti);j("TaskTrackerSDK.onLevelFinished",{version:"1.0.0",properties:{levelId:"1.0.0",params:{result:"1.0.0",duration:"1.0.0"}}});j("TaskTrackerSDK.onTaskFinished",{version:"1.0.0",properties:{taskId:"1.0.0",duration:"1.0.0"}});j("TaskTrackerSDK.onLevelUpgrade",{version:"1.0.0",properties:{levelId:"1.0.0",name:"1.0.0"}});j("TaskTrackerSDK.onHistoryUserLevel",{version:"1.0.0",properties:{level:"1.0.0"}});j("TaskTrackerSDK.onHistoryUserScore",{version:"1.0.0",properties:{score:"1.0.0"}});j("TaskTrackerSDK.onTaskEvent",{version:"1.0.0",properties:{taskId:"1.0.0",params:{tools:{id:"1.0.0",name:"1.0.0",count:"1.0.0",description:"1.0.0",price:{amount:"1.0.0",unit:"1.0.0"}},awards:{id:"1.0.0",name:"1.0.0"}}}});var ft=class{constructor(t){this.track=t;this.adBreakIsShowing=!1;this.reportPageJumpOut=()=>{this.track("AdBreakJumpOut",{context:"AdsActionDetection"})};this.reportPageHide=()=>{this.track("AdBreakHide",{context:"AdsActionDetection"})};window.addEventListener("visibilitychange",()=>{document.hidden&&this.adBreakIsShowing&&this.reportPageHide()}),window.addEventListener("beforeunload",n=>{this.adBreakIsShowing&&this.reportPageJumpOut()})}};var on="jolibox-sdk-ads-callbreak-timestamps",mt=class{constructor(t,n){this.checkNetwork=t;this.maxAllowedAdsForTime=8;this.bannedForTimeThreshold=6e4;this.bannedReleaseTime=6e4;this.isBanningForTime=!1;this.releaseBannedForTimeTimeout=null;this.maxAllowedAdsForSession=200;this.bannedForSessionThreshold=6e5;this.isBanningForSession=!1;this.initialThreshold=2e3;this._callAdsTimestampsForTime=[];this.callAdsTimestampsForSession=[];this.initTimestamp=0;this.initCallAdsTimestampsForTime=()=>{try{let t=JSON.parse(window.localStorage.getItem(on)??"[]");Array.isArray(t)?this._callAdsTimestampsForTime=t:this._callAdsTimestampsForTime=[]}catch{this._callAdsTimestampsForTime=[]}};this.setReleaseBannedForTime=()=>{this.releaseBannedForTimeTimeout&&(window.clearTimeout(this.releaseBannedForTimeTimeout),this.releaseBannedForTimeTimeout=null),this.releaseBannedForTimeTimeout=window.setTimeout(()=>{this.isBanningForTime=!1,this.releaseBannedForTimeTimeout=null},this.bannedReleaseTime)};this.checkShouldBannedInitial=()=>{if(Date.now()-this.initTimestamp<=this.initialThreshold)return"BLOCK_INITIAL"};this.checkShouldBannedForSession=t=>{if(this.isBanningForSession)return"BANNED_FOR_SESSION";let n=Date.now();if(this.callAdsTimestampsForSession=this.callAdsTimestampsForSession.concat({timestamp:n,type:t}),this.callAdsTimestampsForSession.length!==1&&(this.callAdsTimestampsForSession.length>this.maxAllowedAdsForSession&&(this.callAdsTimestampsForSession=this.callAdsTimestampsForSession.slice(-this.maxAllowedAdsForSession)),this.callAdsTimestampsForSession.length===this.maxAllowedAdsForSession&&n-this.callAdsTimestampsForSession[0].timestamp<=this.bannedForSessionThreshold))return this.isBanningForSession=!0,"BANNED_FOR_SESSION"};this.checkShouldBannedForTime=t=>{if(this.isBanningForTime)return"WAITING_BANNED_RELEASE";let n=Date.now();if(this.callAdsTimestampsForTime=this.callAdsTimestampsForTime.concat({timestamp:n,type:t}),this.callAdsTimestampsForTime.length!==1&&(this.callAdsTimestampsForTime.length>this.maxAllowedAdsForTime&&(this.callAdsTimestampsForTime=this.callAdsTimestampsForTime.slice(-this.maxAllowedAdsForTime)),this.callAdsTimestampsForTime.length===this.maxAllowedAdsForTime&&n-this.callAdsTimestampsForTime[0].timestamp<=this.bannedForTimeThreshold))return this.isBanningForTime=!0,this.setReleaseBannedForTime(),"BANNED_FOR_TIME"};this.checkAdsDisplayPermission=t=>{if(!this.checkNetwork())return"NETWORK_NOT_OK";let n=this.checkShouldBannedInitial();if(n)return n;let i=this.checkShouldBannedForSession(t);if(i)return i;let l=this.checkShouldBannedForTime(t);return l||"ALLOWED"};if(this.maxAllowedAdsForTime=n?.maxAllowedAdsForTime??8,this.bannedForTimeThreshold=n?.bannedForTimeThreshold??6e4,this.bannedReleaseTime=n?.bannedReleaseTime??6e4,this.maxAllowedAdsForSession=n?.maxAllowedAdsForSession??200,this.bannedForSessionThreshold=n?.bannedForSessionThreshold??6e5,this.initialThreshold=n?.initialThreshold??2e3,this.maxAllowedAdsForTime<=1)throw new Error("maxAllowedAdsForTime must be greater than 1");if(this.bannedForTimeThreshold<0)throw new Error("bannedForTimeThreshold must be greater than or equal to 0");if(this.bannedReleaseTime<this.bannedForTimeThreshold)throw new Error("bannedReleaseTime must be greater than or equal to bannedForTimeThreshold");if(this.initialThreshold<0)throw new Error("initialThreshold must be greater than or equal to 0");this.initCallAdsTimestampsForTime(),this.initTimestamp=Date.now()}get callAdsTimestampsForTime(){return this._callAdsTimestampsForTime}set callAdsTimestampsForTime(t){try{window.localStorage.setItem(on,JSON.stringify(t))}catch{console.error("Failed to save timestamps")}this._callAdsTimestampsForTime=t}};var ht=class{constructor(t){this.httpClient=t;this.configs=null;this.firstRun=!0;this.init()}async init(){try{this.configs=await this.httpClient.get("/api/fe-configs/js-sdk/ads-channel-config")}catch{}}shouldBypassCallingInterstitial(){let t;if(!this.configs)this.init(),t=!this.firstRun;else{let n=R.channel??"",l=this.configs[n]?.interstitialRate??1;t=Math.random()<l}return this.firstRun=!1,t}};var pt=class{constructor(t,n,i){this.track=t;this.httpClient=n;this.checkNetwork=i;this.configured=!1;this.config={};this.getGameId=()=>R.mpId;this.getTestAdsMode=()=>R.testAdsMode;this.asyncLoad=async()=>{let t="ca-pub-7171363994453626",n,i,l=window.encodeURIComponent(window.btoa(this.getGameId()??"")),d=this.getTestAdsMode()??!1;try{let h=await this.httpClient.get("/public/ads",{query:{objectId:l,testAdsMode:`${d}`}});t=h.data?.clientId,n=h.data?.channelId,i=h.data?.unitId}catch(h){console.error("Failed to fetch client info",h)}this.clientId=t,this.channelId=n,this.unitId=i};this.asyncInit=async t=>{if(typeof window>"u")return;await this.asyncLoad();let n="google-adsense",i=this.getTestAdsMode()??!1;if(!document.getElementById(n)&&this.clientId){let l=document.createElement("script");l.id=n,l.async=!0,l.crossOrigin="anonymous",l.src=`https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=${this.clientId}`,i&&l.setAttribute("data-adbreak-test","on"),this.channelId&&l.setAttribute("data-ad-channel",this.channelId),document.head.appendChild(l),this.track("LoadAdsenseCompleted",null)}};this.push=(t={})=>{window.adsbygoogle.push(t)};this.adConfig=t=>{let{onReady:n,...i}=t;this.track("CallAdConfig",i),this.configured?console.warn("Ad config already set, skipping"):(this.configured=!0,this.push(t))};this.adBreak=t=>{if(!this.getGameId()){console.warn("Game ID is not set, skip calling adBreak");return}if(t.type!=="reward"&&!this.channelPolicy.shouldBypassCallingInterstitial()){t.adBreakDone?.({breakType:t.type,breakName:"skipInterstitials",breakFormat:"interstitial",breakStatus:"viewed"});return}let n=this.antiCheating.checkAdsDisplayPermission(t.type==="reward"?"reward":"interstitial");switch(n){case"NETWORK_NOT_OK":case"BANNED_FOR_SESSION":console.warn("Ads not allowed",n),t.adBreakDone?.({breakType:t.type,breakName:n,breakFormat:t.type==="reward"?"reward":"interstitial",breakStatus:"noAdPreloaded"}),this.track("PreventAdsCheating",{reason:n});return;case"BLOCK_INITIAL":case"BANNED_FOR_TIME":case"WAITING_BANNED_RELEASE":console.warn("Ads not allowed",n),t.adBreakDone?.({breakType:t.type,breakFormat:t.type==="reward"?"reward":"interstitial",breakStatus:"viewed"}),this.track("PreventAdsCheating",{reason:n});return;default:break}let i=t.type,l=t.adBreakDone,d=_=>{this.adsActionDetection.adBreakIsShowing=!1,this.track("CallAdBreakDone",{breakType:_.breakType,breakName:_.breakName??"",breakFormat:_.breakFormat,breakStatus:_.breakStatus}),l&&l(_)};if(t.adBreakDone=d,t.type==="reward"){let _=t.beforeReward,E=I=>()=>{this.track("CallShowAdFn",null),I()},A=I=>{_&&_(E(I))};t.beforeReward=A}let h;switch(i){case"preroll":h={type:i};break;case"start":case"pause":case"next":case"browse":case"reward":h={type:i,name:t.name??""};break}this.adsActionDetection.adBreakIsShowing=!0,this.track("CallAdBreak",h),this.push(t),window.JoliTesterBridge&&console.log("joli-fullscreen-ad-show")};this.adUnit=async t=>{if(this.track("CallAdUnit",{adFormat:t.adFormat?.toString()??null,fullWidthResponsive:t.fullWidthResponsive??null}),this.clientId||await this.asyncLoad(),document.querySelector("#jolibox-ads")){console.warn("Ad unit already set, skipping");return}let{el:n,slot:i,adFormat:l,fullWidthResponsive:d,style:h}=t,_;if(!n)throw new Error("targeting element is required");if(typeof n=="string"?_=document.querySelector(n):_=n,!_)throw new Error("targeting element not found");let E=i;if(E||(E=this.unitId),!E)throw new Error("slot is required");let A=typeof l=="object"&&Array.isArray(l)?l.join(", "):l,I=document.createElement("ins");if(I.className="adsbygoogle",I.id="jolibox-ads",I.style.display="block",I.setAttribute("data-ad-client",this.clientId),I.setAttribute("data-ad-slot",E),A&&I.setAttribute("data-ad-format",A),d&&I.setAttribute("data-full-width-responsive",d),h&&I.setAttribute("style",h),this.getTestAdsMode()??!1){let m=document.createElement("div");m.style.position="absolute",m.style.top="0",m.style.left="0",m.style.width="100%",m.style.height="100%",m.style.display="flex",m.style.justifyContent="center",m.style.alignItems="center",m.style.backgroundColor="rgba(0, 0, 0, 0.5)",m.style.color="white",m.innerHTML="Test Ad",I.style.position="relative",_.appendChild(I),I.appendChild(m)}else _.appendChild(I),new MutationObserver(b=>{b.forEach(k=>{if(k.type==="attributes"&&k.attributeName==="data-ad-status"){let N=I.getAttribute("data-ad-status");this.track("AdSenseUnitStatusChanged",{status:N??"null"})}})}).observe(I,{attributes:!0,attributeFilter:["data-ad-status"]}),this.push({})};this.antiCheating=new mt(i),this.adsActionDetection=new ft(this.track),this.channelPolicy=new ht(n)}init(t){this.track("CallAdsInit",null),!(typeof window>"u")&&(this.config=t??{},window.adsbygoogle=window.adsbygoogle||[],this.asyncInit(t))}};var gt=X(),vt=new pt(ve,new ce,()=>ge.networkIsOk);gt.registerCommand("AdsSDK.init",e=>{vt.init(e)});gt.registerCommand("AdsSDK.adConfig",e=>{vt.adConfig(e)});gt.registerCommand("AdsSDK.adBreak",e=>{vt.adBreak(e)});gt.registerCommand("AdsSDK.adUnit",e=>{vt.adUnit(e)});function Ii(){xe.on("onDocumentReady",e=>{xe.emit("LifecycleEvent.onReady",{isLogin:!1}),te.start(Date.now()-e)})}function sn(){Ii()}sn();
3
+ `);throw e.errors.length=0,Wt(!1),new TypeError(i)}}var at=1,Xr=e=>{function t(i,l){return(...d)=>{let h=Date.now(),_={method:i,trace_id:at};at+=1;let E="SUCCESS",A=`${i}:ok`,T=0;try{if(l.paramsSchema)try{qt(l.paramsSchema,d,"params")}catch(k){throw Kt(`${i}:fail ${k.message}`)}let x=l.implement(...d),m=x,b=`${i}:ok`;if(x&&"code"in x){let{code:k,data:N,message:K}=x;E=k,m=N,b=K}return{code:E,message:b,data:m}}catch(x){let m=x;T=m.code??m.errNo??2e3,E="FAILURE";let b=m.message??m.errMsg??`${x}`;return A=`${i}:${E} ${b.replace(/^\S+:(fail|cancel)\s?/,"")}`,ee(new Be(A,T)),{code:E,message:A}}finally{let x=Date.now()-h;e("apiInvoked",{..._,duration:x,status:E})}}}function n(i,l){return async(...d)=>{let h=kr(d)?d:[d],_=Date.now(),E={method:i,trace_id:at};at+=1;let A=`${i}:ok`,T="SUCCESS",x={code:T,message:A};try{if(l.paramsSchema)try{qt(l.paramsSchema,h,"params")}catch(k){throw Kt(k.message)}let b=await l.implement(...h);if(b&&"code"in b){let{code:k,data:N,message:K}=b;T=k,A=K,b=N}return Object.assign(x,{code:T,message:A,data:b}),x}catch(m){let b=m,k=b.code??b.errNo??2e3;T="FAILURE";let N=b.message??b.errMsg??`${m}`,K=`${i}:${T} ${N.replace(/^\S+:(fail|cancel)\s?/,"")}`;return Object.assign(x,{code:T,message:K}),ee(new Be(K,k)),x}finally{let m=Date.now()-_;e("apiInvoked",{...E,duration:m,status:T})}}}return{createAPI:n,createSyncAPI:t}};var{createAPI:Z,createSyncAPI:de}=Xr(ve),j=qr("h5");var Zr=X(),ti="env",ri="getSystemInfoSync",ni=()=>{let e={system:R.deviceInfo.system,platform:R.deviceInfo.platform,brand:R.deviceInfo.brand,pixelRatio:R.deviceInfo.pixelRatio,language:R.deviceInfo.lang,version:R.sdkInfo.jssdkVersion,appName:R.hostInfo?.appName,SDKVersion:R.sdkInfo.nativeSDKVersion},t=R.hostInfo?.version;t&&(e={...e,version:t});let n=R.hostInfo?.appName;n&&(e={...e,appName:n});let i=R.sdkInfo?.jssdkVersion;return i&&(e={...e,SDKVersion:i}),e},oi=de(ri,{implement:ni}),ii=de(ti,{implement:()=>({...R.hostInfo,sdkInfo:R.sdkInfo,platform:R.platform,deviceInfo:R.deviceInfo})});Zr.registerCommand("API.env",ii);Zr.registerCommand("API.getSystemInfoSync",oi);j("env",{version:"1.0.0"});j("getSystemInfoSync",{version:"1.0.0"});var si="onJoliboxShow",ai="onJoliboxHide",ci="onReady",Xt=X(),Zt=Lr(ee),Qt=!0,ke=!0,ct=0,lt=Ht;function li(){let e=Date.now();if(e-ct<100)return;ct=e;let t=document.visibilityState==="visible";t!==Qt&&(Qt=t,lt.emit("visible",Qt))}function en(e){let t=Date.now();t-ct<100||(ct=t,e==="focus"&&!ke?ke=!0:e==="blur"&&ke&&(ke=!1),lt.emit("visible",ke))}document.addEventListener("visibilitychange",li);window.addEventListener("focus",()=>en("focus"));window.addEventListener("blur",()=>en("blur"));var ui=de(si,{paramsSchema:S.tuple(S.function()),implement(e){let t=Zt(e);lt.on("visible",n=>{n&&t()})}}),di=de(ai,{paramsSchema:S.tuple(S.function()),implement(e){let t=Zt(e);lt.on("visible",n=>{!n&&t()})}}),fi=de(ci,{paramsSchema:S.tuple(S.function()),implement(e){let t=Zt(e);xe.on("LifecycleEvent.onReady",n=>{t(n)})}});Xt.registerCommand("LifecycleSDK.onReady",fi);Xt.registerCommand("LifecycleSDK.onJoliboxShow",ui);Xt.registerCommand("LifecycleSDK.onJoliboxHide",di);j("lifeCycle.onReady",{version:"1.0.0"});j("lifeCycle.onJoliboxShow",{version:"1.0.0"});j("lifeCycle.onJoliboxHide",{version:"1.0.0"});var nn=ho(rn()),ut=X(),tr=class{constructor(){this.getGameId=()=>R.mpId;this.getItem=async t=>{let{code:n,data:i,message:l}=await this.httpClient.get(`/api/games/user-storage/${this.gameId}`,{query:{key:t}}),d=i?.value,h=l;return n!=="SUCCESS"&&(d=await this.gameStore.getItem(t),console.info("[SDK] cloud storage getItem failed, read from localstorage",d),h+="fallback to localstorage"),{code:n,message:h,data:d&&d!=="undefined"?d:null}};this.setItem=async(t,n)=>{let i=typeof n=="string"?n:String(n),{code:l,message:d}=await this.httpClient.post(`/api/games/user-storage/${this.gameId}`,{data:{key:t,value:i}});return await this.gameStore.setItem(t,i),{code:l,message:d}};this.removeItem=async t=>{await this.gameStore.removeItem(t);let{code:n,message:i}=await this.httpClient.post(`/api/games/user-storage/${this.gameId}/remove`,{data:{key:t}});return{code:n,message:i}};this.clear=async()=>{await this.gameStore.clear();let{code:t,message:n}=await this.httpClient.post(`/api/games/user-storage/${this.gameId}/clear`,{});return{code:t,message:n}};this.gameId=this.getGameId(),this.httpClient=new ce({baseUrl:R.testMode?"https://stg-api.jolibox.com":"https://api.jolibox.com"}),this.gameStore=nn.default.createInstance({name:this.gameId.length?this.gameId:"default"})}},dt=new tr,mi=Z("getLocalStorage",{paramsSchema:S.tuple(S.string()),async implement(e){return await dt.getItem(e)}});ut.registerCommand("StorageSDK.getItem",mi);j("storage.getItem",{version:"1.0.0",properties:{key:"1.0.0",value:"1.0.0"}});var hi=Z("setStorage",{paramsSchema:S.tuple(S.string(),S.or(S.string(),S.boolean(),S.number())),async implement(e,t){return await dt.setItem(e,t)}});ut.registerCommand("StorageSDK.setItem",hi);j("storage.setItem",{version:"1.0.0",properties:{key:"1.0.0",value:"1.0.0"}});var pi=Z("removeStorage",{paramsSchema:S.tuple(S.string()),async implement(e){return await dt.removeItem(e)}});ut.registerCommand("StorageSDK.removeItem",pi);j("storage.removeItem",{version:"1.0.0",properties:{key:"1.0.0"}});var gi=Z("clearStorage",{async implement(){return await dt.clear()}});ut.registerCommand("StorageSDK.clear",gi);j("storage.clear",{version:"1.0.0"});var be=X(),vi=Z("levelFinished",{paramsSchema:S.tuple(S.string(),S.object({result:S.boolean(),duration:S.number()})),implement:async(e,t)=>{let{result:n,duration:i}=t;H.info("onLevelFinished",n,i),await Promise.all([te.reporter({event:"COMPLETE_GAME_LEVEL"}),te.tracker("LevelFinished",{levelId:e,result:n,duration:i})])}}),yi=Z("taskFinished",{paramsSchema:S.tuple(S.string(),S.object({duration:S.number()})),implement:async(e,t)=>{let{duration:n}=t;await te.tracker("TaskFinished",{duration:n,taskId:e})}}),bi=Z("levelUpgrade",{paramsSchema:S.tuple(S.string(),S.string()),implement:async(e,t)=>await te.tracker("LevelUpgrade",{name:t,levelId:e})}),_i=Z("onHistoryUserLevel",{paramsSchema:S.tuple(S.number()),implement:async e=>await te.tracker("HistoryUserLevel",{level:e})}),Ei=Z("onHistoryUserScore",{paramsSchema:S.tuple(S.number()),implement:async e=>await te.tracker("HistoryUserScore",{score:e})}),Ii=Z("taskEvent",{paramsSchema:S.tuple(S.string(),S.object({tools:S.array(S.object({id:S.string(),name:S.string(),count:S.number(),description:S.string().optional(),price:S.object({amount:S.number(),unit:S.string()}).optional()})).optional(),awards:S.array(S.object({id:S.string(),name:S.string()})).optional()})),implement:async(e,t)=>{t.tools?.length&&await Promise.all([te.reporter({event:"USE_GAME_ITEM"}),te.tracker("UseGameItem",{taskId:e,...t})])}});be.registerCommand("TaskTrackerSDK.levelFinished",vi);be.registerCommand("TaskTrackerSDK.taskFinished",yi);be.registerCommand("TaskTrackerSDK.levelUpgrade",bi);be.registerCommand("TaskTrackerSDK.historyUserLevel",_i);be.registerCommand("TaskTrackerSDK.historyUserScore",Ei);be.registerCommand("TaskTrackerSDK.taskEvent",Ii);j("TaskTrackerSDK.onLevelFinished",{version:"1.0.0",properties:{levelId:"1.0.0",params:{result:"1.0.0",duration:"1.0.0"}}});j("TaskTrackerSDK.onTaskFinished",{version:"1.0.0",properties:{taskId:"1.0.0",duration:"1.0.0"}});j("TaskTrackerSDK.onLevelUpgrade",{version:"1.0.0",properties:{levelId:"1.0.0",name:"1.0.0"}});j("TaskTrackerSDK.onHistoryUserLevel",{version:"1.0.0",properties:{level:"1.0.0"}});j("TaskTrackerSDK.onHistoryUserScore",{version:"1.0.0",properties:{score:"1.0.0"}});j("TaskTrackerSDK.onTaskEvent",{version:"1.0.0",properties:{taskId:"1.0.0",params:{tools:{id:"1.0.0",name:"1.0.0",count:"1.0.0",description:"1.0.0",price:{amount:"1.0.0",unit:"1.0.0"}},awards:{id:"1.0.0",name:"1.0.0"}}}});var ft=class{constructor(t){this.track=t;this.adBreakIsShowing=!1;this.reportPageJumpOut=()=>{this.track("AdBreakJumpOut",{context:"AdsActionDetection"})};this.reportPageHide=()=>{this.track("AdBreakHide",{context:"AdsActionDetection"})};window.addEventListener("visibilitychange",()=>{document.hidden&&this.adBreakIsShowing&&this.reportPageHide()}),window.addEventListener("beforeunload",n=>{this.adBreakIsShowing&&this.reportPageJumpOut()})}};var on="jolibox-sdk-ads-callbreak-timestamps",mt=class{constructor(t,n){this.checkNetwork=t;this.maxAllowedAdsForTime=8;this.bannedForTimeThreshold=6e4;this.bannedReleaseTime=6e4;this.isBanningForTime=!1;this.releaseBannedForTimeTimeout=null;this.maxAllowedAdsForSession=200;this.bannedForSessionThreshold=6e5;this.isBanningForSession=!1;this.initialThreshold=2e3;this._callAdsTimestampsForTime=[];this.callAdsTimestampsForSession=[];this.initTimestamp=0;this.initCallAdsTimestampsForTime=()=>{try{let t=JSON.parse(window.localStorage.getItem(on)??"[]");Array.isArray(t)?this._callAdsTimestampsForTime=t:this._callAdsTimestampsForTime=[]}catch{this._callAdsTimestampsForTime=[]}};this.setReleaseBannedForTime=()=>{this.releaseBannedForTimeTimeout&&(window.clearTimeout(this.releaseBannedForTimeTimeout),this.releaseBannedForTimeTimeout=null),this.releaseBannedForTimeTimeout=window.setTimeout(()=>{this.isBanningForTime=!1,this.releaseBannedForTimeTimeout=null},this.bannedReleaseTime)};this.checkShouldBannedInitial=()=>{if(Date.now()-this.initTimestamp<=this.initialThreshold)return"BLOCK_INITIAL"};this.checkShouldBannedForSession=t=>{if(this.isBanningForSession)return"BANNED_FOR_SESSION";let n=Date.now();if(this.callAdsTimestampsForSession=this.callAdsTimestampsForSession.concat({timestamp:n,type:t}),this.callAdsTimestampsForSession.length!==1&&(this.callAdsTimestampsForSession.length>this.maxAllowedAdsForSession&&(this.callAdsTimestampsForSession=this.callAdsTimestampsForSession.slice(-this.maxAllowedAdsForSession)),this.callAdsTimestampsForSession.length===this.maxAllowedAdsForSession&&n-this.callAdsTimestampsForSession[0].timestamp<=this.bannedForSessionThreshold))return this.isBanningForSession=!0,"BANNED_FOR_SESSION"};this.checkShouldBannedForTime=t=>{if(this.isBanningForTime)return"WAITING_BANNED_RELEASE";let n=Date.now();if(this.callAdsTimestampsForTime=this.callAdsTimestampsForTime.concat({timestamp:n,type:t}),this.callAdsTimestampsForTime.length!==1&&(this.callAdsTimestampsForTime.length>this.maxAllowedAdsForTime&&(this.callAdsTimestampsForTime=this.callAdsTimestampsForTime.slice(-this.maxAllowedAdsForTime)),this.callAdsTimestampsForTime.length===this.maxAllowedAdsForTime&&n-this.callAdsTimestampsForTime[0].timestamp<=this.bannedForTimeThreshold))return this.isBanningForTime=!0,this.setReleaseBannedForTime(),"BANNED_FOR_TIME"};this.checkAdsDisplayPermission=t=>{if(!this.checkNetwork())return"NETWORK_NOT_OK";let n=this.checkShouldBannedInitial();if(n)return n;let i=this.checkShouldBannedForSession(t);if(i)return i;let l=this.checkShouldBannedForTime(t);return l||"ALLOWED"};if(this.maxAllowedAdsForTime=n?.maxAllowedAdsForTime??8,this.bannedForTimeThreshold=n?.bannedForTimeThreshold??6e4,this.bannedReleaseTime=n?.bannedReleaseTime??6e4,this.maxAllowedAdsForSession=n?.maxAllowedAdsForSession??200,this.bannedForSessionThreshold=n?.bannedForSessionThreshold??6e5,this.initialThreshold=n?.initialThreshold??2e3,this.maxAllowedAdsForTime<=1)throw new Error("maxAllowedAdsForTime must be greater than 1");if(this.bannedForTimeThreshold<0)throw new Error("bannedForTimeThreshold must be greater than or equal to 0");if(this.bannedReleaseTime<this.bannedForTimeThreshold)throw new Error("bannedReleaseTime must be greater than or equal to bannedForTimeThreshold");if(this.initialThreshold<0)throw new Error("initialThreshold must be greater than or equal to 0");this.initCallAdsTimestampsForTime(),this.initTimestamp=Date.now()}get callAdsTimestampsForTime(){return this._callAdsTimestampsForTime}set callAdsTimestampsForTime(t){try{window.localStorage.setItem(on,JSON.stringify(t))}catch{console.error("Failed to save timestamps")}this._callAdsTimestampsForTime=t}};var ht=class{constructor(t){this.httpClient=t;this.configs=null;this.firstRun=!0;this.init()}async init(){try{this.configs=await this.httpClient.get("/api/fe-configs/js-sdk/ads-channel-config")}catch{}}shouldBypassCallingInterstitial(){let t;if(!this.configs)this.init(),t=!this.firstRun;else{let n=R.channel??"",l=this.configs[n]?.interstitialRate??1;t=Math.random()<l}return this.firstRun=!1,t}};var pt=class{constructor(t,n,i){this.track=t;this.httpClient=n;this.checkNetwork=i;this.configured=!1;this.config={};this.getGameId=()=>R.mpId;this.getTestAdsMode=()=>R.testAdsMode;this.asyncLoad=async()=>{let t="ca-pub-7171363994453626",n,i,l=window.encodeURIComponent(window.btoa(this.getGameId()??"")),d=this.getTestAdsMode()??!1;try{let h=await this.httpClient.get("/public/ads",{query:{objectId:l,testAdsMode:`${d}`}});t=h.data?.clientId,n=h.data?.channelId,i=h.data?.unitId}catch(h){console.error("Failed to fetch client info",h)}this.clientId=t,this.channelId=n,this.unitId=i};this.asyncInit=async t=>{if(typeof window>"u")return;await this.asyncLoad();let n="google-adsense",i=this.getTestAdsMode()??!1;if(!document.getElementById(n)&&this.clientId){let l=document.createElement("script");l.id=n,l.async=!0,l.crossOrigin="anonymous",l.src=`https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=${this.clientId}`,i&&l.setAttribute("data-adbreak-test","on"),this.channelId&&l.setAttribute("data-ad-channel",this.channelId),document.head.appendChild(l),this.track("LoadAdsenseCompleted",null)}};this.push=(t={})=>{window.adsbygoogle.push(t)};this.adConfig=t=>{let{onReady:n,...i}=t;this.track("CallAdConfig",i),this.configured?console.warn("Ad config already set, skipping"):(this.configured=!0,this.push(t))};this.adBreak=t=>{if(!this.getGameId()){console.warn("Game ID is not set, skip calling adBreak");return}if(t.type!=="reward"&&!this.channelPolicy.shouldBypassCallingInterstitial()){t.adBreakDone?.({breakType:t.type,breakName:"skipInterstitials",breakFormat:"interstitial",breakStatus:"viewed"});return}let n=this.antiCheating.checkAdsDisplayPermission(t.type==="reward"?"reward":"interstitial");switch(n){case"NETWORK_NOT_OK":case"BANNED_FOR_SESSION":console.warn("Ads not allowed",n),t.adBreakDone?.({breakType:t.type,breakName:n,breakFormat:t.type==="reward"?"reward":"interstitial",breakStatus:"noAdPreloaded"}),this.track("PreventAdsCheating",{reason:n});return;case"BLOCK_INITIAL":case"BANNED_FOR_TIME":case"WAITING_BANNED_RELEASE":console.warn("Ads not allowed",n),t.adBreakDone?.({breakType:t.type,breakFormat:t.type==="reward"?"reward":"interstitial",breakStatus:"viewed"}),this.track("PreventAdsCheating",{reason:n});return;default:break}let i=t.type,l=t.adBreakDone,d=_=>{this.adsActionDetection.adBreakIsShowing=!1,this.track("CallAdBreakDone",{breakType:_.breakType,breakName:_.breakName??"",breakFormat:_.breakFormat,breakStatus:_.breakStatus}),l&&l(_)};if(t.adBreakDone=d,t.type==="reward"){let _=t.beforeReward,E=T=>()=>{this.track("CallShowAdFn",null),T()},A=T=>{_&&_(E(T))};t.beforeReward=A}let h;switch(i){case"preroll":h={type:i};break;case"start":case"pause":case"next":case"browse":case"reward":h={type:i,name:t.name??""};break}this.adsActionDetection.adBreakIsShowing=!0,this.track("CallAdBreak",h),this.push(t),window.JoliTesterBridge&&console.log("joli-fullscreen-ad-show")};this.adUnit=async t=>{if(this.track("CallAdUnit",{adFormat:t.adFormat?.toString()??null,fullWidthResponsive:t.fullWidthResponsive??null}),this.clientId||await this.asyncLoad(),document.querySelector("#jolibox-ads")){console.warn("Ad unit already set, skipping");return}let{el:n,slot:i,adFormat:l,fullWidthResponsive:d,style:h}=t,_;if(!n)throw new Error("targeting element is required");if(typeof n=="string"?_=document.querySelector(n):_=n,!_)throw new Error("targeting element not found");let E=i;if(E||(E=this.unitId),!E)throw new Error("slot is required");let A=typeof l=="object"&&Array.isArray(l)?l.join(", "):l,T=document.createElement("ins");if(T.className="adsbygoogle",T.id="jolibox-ads",T.style.display="block",T.setAttribute("data-ad-client",this.clientId),T.setAttribute("data-ad-slot",E),A&&T.setAttribute("data-ad-format",A),d&&T.setAttribute("data-full-width-responsive",d),h&&T.setAttribute("style",h),this.getTestAdsMode()??!1){let m=document.createElement("div");m.style.position="absolute",m.style.top="0",m.style.left="0",m.style.width="100%",m.style.height="100%",m.style.display="flex",m.style.justifyContent="center",m.style.alignItems="center",m.style.backgroundColor="rgba(0, 0, 0, 0.5)",m.style.color="white",m.innerHTML="Test Ad",T.style.position="relative",_.appendChild(T),T.appendChild(m)}else _.appendChild(T),new MutationObserver(b=>{b.forEach(k=>{if(k.type==="attributes"&&k.attributeName==="data-ad-status"){let N=T.getAttribute("data-ad-status");this.track("AdSenseUnitStatusChanged",{status:N??"null"})}})}).observe(T,{attributes:!0,attributeFilter:["data-ad-status"]}),this.push({})};this.antiCheating=new mt(i),this.adsActionDetection=new ft(this.track),this.channelPolicy=new ht(n)}init(t){this.track("CallAdsInit",null),!(typeof window>"u")&&(this.config=t??{},window.adsbygoogle=window.adsbygoogle||[],this.asyncInit(t))}};var gt=X(),vt=new pt(ve,new ce,()=>ge.networkIsOk);gt.registerCommand("AdsSDK.init",e=>{vt.init(e)});gt.registerCommand("AdsSDK.adConfig",e=>{vt.adConfig(e)});gt.registerCommand("AdsSDK.adBreak",e=>{vt.adBreak(e)});gt.registerCommand("AdsSDK.adUnit",e=>{vt.adUnit(e)});function Ti(){xe.on("onDocumentReady",e=>{xe.emit("LifecycleEvent.onReady",{isLogin:!1}),te.start(Date.now()-e)})}function sn(){Ti()}var wi=Symbol("__JOLIBOX_SDK_INITIALIZED__");(()=>{if(window[wi]){console.warn("JoliboxSDK already initialized, skipping...");return}})();sn();
4
4
  /*! Bundled license information:
5
5
 
6
6
  localforage/dist/localforage.js:
@@ -1,2 +1,9 @@
1
+ declare const SDK_INITIALIZED: unique symbol;
2
+ declare global {
3
+ interface Window {
4
+ [SDK_INITIALIZED]?: boolean;
5
+ }
6
+ }
1
7
  import './native/api';
2
8
  import './native/report';
9
+ export {};
@@ -1,3 +1,21 @@
1
- var yn=Object.create;var Vt=Object.defineProperty;var bn=Object.getOwnPropertyDescriptor;var Tn=Object.getOwnPropertyNames;var kn=Object.getPrototypeOf,En=Object.prototype.hasOwnProperty;var h=(e,t)=>()=>(e&&(t=e(e=0)),t);var Sn=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var In=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of Tn(t))!En.call(e,s)&&s!==r&&Vt(e,s,{get:()=>t[s],enumerable:!(n=bn(t,s))||n.enumerable});return e};var wn=(e,t,r)=>(r=e!=null?yn(kn(e)):{},In(t||!e||!e.__esModule?Vt(r,"default",{value:e,enumerable:!0}):r,e));function Rn(e){return!!e?.__nativeBuffers__}function de(e){if(typeof e=="string")try{e=JSON.parse(e)}catch{return{}}if(typeof e!="object"||e===null)return{};if(!Rn(e))return e;let t=e.__nativeBuffers__;if(delete e.__nativeBuffers__,t)for(let r=0;r<t.length;r++){let n=t[r];if(n){let s;n.value?s=n.value:n.base64&&(s=_n(n.base64)),typeof s<"u"&&s instanceof ArrayBuffer&&(e[n.key]=s)}}return e}function $t(e={},t=!1){let r=e,n=[];for(let[s,o]of Object.entries(r))if(o!==void 0&&o instanceof ArrayBuffer&&o.byteLength!==void 0){let i=t?{value:o,key:s}:{base64:An(o),key:s};n.push(i),delete r[s]}return n.length>0&&(r.__nativeBuffers__=n),r}var _n,An,ot=h(()=>{"use strict";_n=e=>{let t=atob(e),r=t.length,n=new Uint8Array(r);for(let s=0;s<r;s++)n[s]=t.charCodeAt(s);return n.buffer};An=e=>{let t="",r=new Uint8Array(e),n=r.byteLength;for(let s=0;s<n;s++)t+=String.fromCharCode(r[s]);return btoa(t)}});function Pn(e){return new Promise(t=>{setTimeout(()=>{t()},e)})}function te(e){return typeof e=="string"}function C(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&!(e instanceof RegExp)&&!(e instanceof Date)}function Gt(e){return typeof e=="object"&&Array.isArray(e)}function Nn(e){return typeof e>"u"}function On(e){return Nn(e)||e===null}function zt(e){return typeof e=="function"}function Wt(e){return C(e)&&zt(e.then)}function Yt(e){let t=e,r=null,n=function(...s){return r||(r=new t(...s)),r};return n.prototype=t.prototype,n}function Qt(e,t,r){if(typeof r!="function")throw new Error("[Jolibox SDK]Customizer must be a function");function n(s,o){for(let i in o)if(Object.prototype.hasOwnProperty.call(o,i)){let a=s[i],d=o[i],l=r(a,d,i,s,o);l!==void 0?s[i]=l:Ht(d)&&Ht(a)?s[i]=n({...a},d):Array.isArray(d)&&Array.isArray(a)?s[i]=[...a,...d]:s[i]=d}return s}return n(e,t)}function Ht(e){return e&&typeof e=="object"&&e.constructor===Object}function Xt(e,t){if(Array.isArray(e))return e.concat(t)}function pe(e,t,r={}){let n=null,s,o,i,{leading:a=!1,trailing:d=!0}=r,l=()=>(i=e.apply(o,s),s=void 0,o=void 0,i),u=function(...p){s=p,o=this;let m=a&&!n;if(n&&clearTimeout(n),n=setTimeout(()=>{n=null,d&&!m&&l()},t),m)return l()};return u.cancel=()=>{n&&clearTimeout(n),n=null,s=o=void 0},u.flush=()=>{if(n)return clearTimeout(n),n=null,l()},u}function Un(e,t){return(...r)=>t(e,...r)}function ke(e){return t=>Un(t,function(r,...n){if(typeof r=="function")try{return r.apply(this,n)}catch(s){e(new Dn(`${s}`))}})}function ue(e){return(...t)=>{(globalThis.VConsole?.[e]??globalThis.console[e])(...t)}}function Yn(e){return new Promise(t=>lr(e)(t))}function lr(e){return(t,r=null)=>{let n=!1;return e(s=>{if(!n)return n=!0,t.call(r,s)},null)}}function Qn(e,t){return(r=>{let n,s={onWillAddFirstListener(){n=r(o.fire,o)}},o=new me(s);return o.event})((r,n=null)=>e(s=>t(s)&&r.call(n,s),null))}function Zn(e,t){let r=Math.min(e.length,t.length);for(let n=0;n<r;n++)es(e[n],t[n])}function es(e,t){if(te(t)){if(typeof e!==t)throw new Error(`argument does not match constraint: typeof ${t}`)}else if(zt(t)){try{if(e instanceof t)return}catch{}if(!On(e)&&e.constructor===t||t.length===1&&t.call(void 0,e)===!0)return;throw new Error("[Jolibox SDK]argument does not match one of these constraints: arg instanceof constraint, arg.constructor === constraint, nor constraint(arg) === true")}}function w(){if(globalThis[at])return globalThis[at];let e=new be,t=new lt,r={registerCommand(n,s,o){e.registerCommand({id:n,handler:s,metadata:o})},executeCommand(n,...s){return t.executeCommand(n,...s)},excuteCommandSync(n,...s){return t.executeCommandThowErr(n,...s)}};return globalThis[at]=r,r}var Kt,xn,Cn,qt,Y,Fn,dt,re,Zt,er,Dn,tr,rr,nr,sr,or,fe,Te,ut,P,ir,Mn,mt,Ln,pt,jn,Bn,ge,Jn,Vn,$n,ar,ft,Hn,Kn,qn,cr,T,Gn,zn,ve,me,Q,ct,Wn,it,Xn,H,be,lt,at,v=h(()=>{"use strict";Kt=Object.defineProperty,xn=Object.getOwnPropertyDescriptor,Cn=(e,t)=>{for(var r in t)Kt(e,r,{get:t[r],enumerable:!0})},qt=(e,t,r,n)=>{for(var s=n>1?void 0:n?xn(t,r):t,o=e.length-1,i;o>=0;o--)(i=e[o])&&(s=(n?i(t,r,s):i(s))||s);return n&&s&&Kt(t,r,s),s};Y=class{constructor(){this.state="pending",this.promise=new Promise((e,t)=>{this.resolve=r=>{this.state==="pending"&&(this.state="fulfilled",e(r))},this.reject=r=>{this.state==="pending"&&(this.state="rejected",t(r))}})}};Fn=(e=>(e[e.DEVELOPER_FILE_NOT_FOUND=0]="DEVELOPER_FILE_NOT_FOUND",e[e.INTERNAL_IOS_CAN_NOT_FOUND_PKG=1]="INTERNAL_IOS_CAN_NOT_FOUND_PKG",e[e.USER_IOS_LOAD_TIMEOUT=2]="USER_IOS_LOAD_TIMEOUT",e[e.INTERNAL_IOS_PKG_LOAD_ERROR=3]="INTERNAL_IOS_PKG_LOAD_ERROR",e[e.INTERNAL_IOS_PKG_PARSE_FAIL=4]="INTERNAL_IOS_PKG_PARSE_FAIL",e[e.USER_IOS_GET_EMPTY_DATA=5]="USER_IOS_GET_EMPTY_DATA",e[e.USER_ANDROID_GET_PKG_FAIL=6]="USER_ANDROID_GET_PKG_FAIL",e[e.DEVELOPER_ANDROID_PACKAGE_FILE_UNEXPECTED_REQUIRE=7]="DEVELOPER_ANDROID_PACKAGE_FILE_UNEXPECTED_REQUIRE",e))(Fn||{}),dt=class extends Error{constructor(e){if(typeof e=="string"){super(e),this.priority="P1";return}super(e.message),this.priority="P1",this.stack=e.stack,this.raw=e}},re=class extends dt{constructor(){super(...arguments),this.kind="INTERNAL_ERROR"}},Zt=class extends dt{constructor(){super(...arguments),this.kind="USER_ERROR"}},er=class extends Zt{constructor(){super(...arguments),this.name="USER_VALIDATE_ERROR"}},Dn=class extends Zt{constructor(e,t,r){super(e),this.message=e,this.errNo=t,this.name="USER_CUSTOM_ERROR",this.errMsg=e,r&&(this.extra=Object.assign({},this.extra,r))}},tr=class extends re{constructor(){super(...arguments),this.name="INTERNAL_SCHEMA_PARSE_ERROR",this.priority="P0"}},rr=class extends re{constructor(){super(...arguments),this.name="INTERNAL_INVOKE_NATIVE_ERROR"}},nr=class extends re{constructor(e,t,r,n){super(e),this.errNo=t,this.name="INTERNAL_APPLY_NATIVE_ERROR",this.errorType=r,this.errorCode=n}},sr=class extends re{constructor(){super(...arguments),this.name="INTERNAL_JSCORE_ERROR",this.priority="P0"}},or=class extends re{constructor(){super(...arguments),this.name="INTERNAL_GLOBAL_JS_ERROR",this.priority="P1"}},fe=class extends dt{constructor(e,t,r,n,s){super(e),this.message=e,this.code=t,this.kind="API_ERROR",this.name="API_ERROR",r&&(this.errorType=r),n!==void 0&&(this.stack=n),s&&(this.priority=s)}toJSON(){return{message:this.message,stack:this.stack,name:this.name,code:this.code,errorType:this.errorType}}},Te=class extends re{constructor(){super(...arguments),this.name="INTERNAL_METRIC_REPORT_ERROR"}},ut=class extends re{constructor(){super(...arguments),this.name="INTERNAL_REPORTER_ERROR"}};P={log:ue("log"),warn:ue("warn"),info:ue("info"),error:ue("error"),debug:ue("debug")};Object.assign(globalThis,{logger:P});ir=Symbol.for("Jolibox.canIUseMap"),Mn={};globalThis[ir]=Mn;mt={get config(){return globalThis[ir]}},Ln=(e=>(e[e.System=1e3]="System",e[e.ErrorTrace=1001]="ErrorTrace",e[e.UserDefined=1002]="UserDefined",e))(Ln||{}),pt=(e=>(e.MiniGame="mini-game",e.MiniDrama="mini-drama",e.App="app",e.WebSDK="web-sdk",e.AppSDK="app-sdk",e))(pt||{}),jn=(e=>(e[e.App=0]="App",e[e.H5=1]="H5",e[e.Weapp=2]="Weapp",e[e.Alipay=3]="Alipay",e[e.Gcash=4]="Gcash",e[e.Dana=5]="Dana",e[e.Umma=6]="Umma",e[e.WebSDK=1e3]="WebSDK",e[e.AppSDK=1001]="AppSDK",e[e.Other=9999]="Other",e))(jn||{}),Bn=()=>"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)}),ge={isiOS:navigator.userAgent.includes("iPhone")||navigator.userAgent.includes("iPod")||navigator.userAgent.includes("iPad")||navigator.userAgent.includes("iPhone OS"),iosVersion:()=>{let e=navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/);return[parseInt(e[1],10),parseInt(e[2],10),parseInt(e[3]||"0",10)]},isAndroid:navigator.userAgent.includes("Android"),isMac:navigator.userAgent.includes("Mac"),isFacebook:navigator.userAgent.includes("FB_IAB"),isPC:!navigator.userAgent.includes("iPhone")&&!navigator.userAgent.includes("Android")},Jn=()=>ge.isiOS?"iOS":ge.isAndroid?"Android":ge.isMac?"Mac":ge.isFacebook?"Facebook":"PC",Vn="device_id",$n="advertising_id",ar=e=>(localStorage.getItem(e)||localStorage.setItem(e,Bn()),localStorage.getItem(e)),ft=()=>ar(Vn),Hn=()=>ar($n),Kn=e=>e.charAt(0).toUpperCase()+e.slice(1),qn=()=>{let e=new URLSearchParams(window.location.search);return Kn(e.get("utm_source")??"")||"JoliboxSDK"},cr=e=>{let t="JoliboxWebSDK",r=Jn(),n=navigator.language,s=ft(),o=Hn();return`${t} (${qn()}${r}; UnknownModel; UnknownSystemVersion; ${n}) uuid/${s} adid/${o} version/${e||""}`},T=class ye{static{this.Undefined=new ye(void 0)}constructor(t){this.element=t,this.next=ye.Undefined,this.prev=ye.Undefined}},Gn=class{constructor(){this._first=T.Undefined,this._last=T.Undefined,this._size=0}get size(){return this._size}isEmpty(){return this._first===T.Undefined}clear(){let e=this._first;for(;e!==T.Undefined;){let t=e.next;e.prev=T.Undefined,e.next=T.Undefined,e=t}this._first=T.Undefined,this._last=T.Undefined,this._size=0}unshift(e){return this._insert(e,!1)}push(e){return this._insert(e,!0)}_insert(e,t){let r=new T(e);if(this._first===T.Undefined)this._first=r,this._last=r;else if(t){let s=this._last;this._last=r,r.prev=s,s.next=r}else{let s=this._first;this._first=r,r.next=s,s.prev=r}this._size+=1;let n=!1;return()=>{n||(n=!0,this._remove(r))}}shift(){if(this._first!==T.Undefined){let e=this._first.element;return this._remove(this._first),e}}pop(){if(this._last!==T.Undefined){let e=this._last.element;return this._remove(this._last),e}}_remove(e){if(e.prev!==T.Undefined&&e.next!==T.Undefined){let t=e.prev;t.next=e.next,e.next.prev=t}else e.prev===T.Undefined&&e.next===T.Undefined?(this._first=T.Undefined,this._last=T.Undefined):e.next===T.Undefined?(this._last=this._last.prev,this._last.next=T.Undefined):e.prev===T.Undefined&&(this._first=this._first.next,this._first.prev=T.Undefined);this._size-=1}*[Symbol.iterator](){let e=this._first;for(;e!==T.Undefined;)yield e.element,e=e.next}},zn=0,ve=class{constructor(e){this.value=e,this.id=zn++}},me=class{constructor(e){this.options=e,this._size=0}dispose(e){this._disposed||(this._disposed=!0,this._listeners&&(e?(this._listeners instanceof ve&&(this._listeners=[this._listeners]),this._listeners=this._listeners.filter(t=>t?.value===e)):(this._listeners=void 0,this._size=0)),this.options?.onDidRemoveLastListener?.())}get event(){return this._event??=(e,t)=>{if(this._disposed)return()=>{console.info("[Jolibox SDK] Emitter is _disposed")};t&&(e=e.bind(t));let r=new ve(e);this._listeners?this._listeners instanceof ve?this._listeners=[this._listeners,r]:this._listeners.push(r):(this.options?.onWillAddFirstListener?.(this),this._listeners=r,this.options?.onDidFirstListener?.(this)),this.options?.onDidAddListener?.(this),this._size++},this._event}_deliver(e,t){if(!e)return;let r=this.options?.onListenerError||Error.constructor;if(!r){e.value(t);return}try{e.value(t)}catch(n){r(n)}}fire(e){this._listeners&&(this._listeners instanceof ve?this._deliver(this._listeners,e):this._listeners.forEach(t=>this._deliver(t,e)))}hasListeners(){return this._size>0}},Q=class{constructor(){this.listeners=new Map,this.listerHandlerMap=new WeakMap,this.cachedEventQueue=new Map}on(e,t){let r=this.listeners.get(e)??new me,n=o=>t(...o.args);this.listerHandlerMap.set(t,n),r.event(n),this.listeners.set(e,r);let s=this.cachedEventQueue.get(e);if(s)for(;s.size>0;)r.fire({event:e,...s.shift()})}off(e,t){let r=this.listeners.get(e);if(r){let n=this.listerHandlerMap.get(t);r.dispose(n)}}emit(e,...t){let r=this.listeners.get(e);if(r)r.fire({event:e,args:t});else{let n=this.cachedEventQueue.get(e);n||(n=new Gn,this.cachedEventQueue.set(e,n)),n.push({args:t})}}},ct={};Cn(ct,{None:()=>Wn,filter:()=>Qn,once:()=>lr,toPromise:()=>Yn});Wn=()=>{console.log("[Jolibox SDK] None Event")};it=Symbol.for("Jolibox.hostEmitter"),Xn=()=>{let e=new Q;return globalThis[it]||(globalThis[it]={on:e.on.bind(e),off:e.off.bind(e),emit:e.emit.bind(e)}),globalThis[it]},H=Xn();be=class{constructor(){this._commands=new Map,this._onDidRegisterCommand=new me,this.onDidRegisterCommand=this._onDidRegisterCommand.event,console.log("[Jolibox SDK] command registry")}registerCommand(e){if(!e)throw new Error("invalid command");if(e.metadata&&Array.isArray(e.metadata.args)){let r=[];for(let s of e.metadata.args)r.push(s.constraint);let n=e.handler;e.handler=function(...s){return Zn(s,r),n(...s)}}let{id:t}=e;this._commands.get(t)&&console.info(`[Jolibox SDK] duplicated command is registered ${t}`),this._commands.set(t,e),this._onDidRegisterCommand.fire(t)}getCommand(e){return this._commands.get(e)}getCommands(){let e=new Map;for(let t of this._commands.keys()){let r=this.getCommand(t);r&&e.set(t,r)}return e}};be=qt([Yt],be);lt=class{constructor(){this._onWillExecuteCommand=new me,this.onWillExecuteCommand=this._onWillExecuteCommand.event,this._onDidExecuteCommand=new me,this.onDidExecuteCommand=this._onDidExecuteCommand.event,this.registry=new be,this._starActivation=null}_activateStar(){return this._starActivation||(this._starActivation=Pn(3e4)),this._starActivation}async executeCommand(e,...t){return this.registry.getCommand(e)?this._tryExecuteCommand(e,t):(await Promise.all([Promise.race([this._activateStar(),ct.toPromise(ct.filter(this.registry.onDidRegisterCommand,r=>r===e))])]),this._tryExecuteCommand(e,t))}executeCommandThowErr(e,...t){if(!this.registry.getCommand(e))throw new Error(`command '${e}' not found`);let r=this.registry.getCommand(e);this._onWillExecuteCommand.fire({commandId:e,args:t});let n=this.invokeFunction(r.handler,...t);return this._onDidExecuteCommand.fire({commandId:e,args:t}),n}_tryExecuteCommand(e,t){let r=this.registry.getCommand(e);if(!r)return Promise.reject(new Error(`command '${e}' not found`));try{this._onWillExecuteCommand.fire({commandId:e,args:t});let n=this.invokeFunction(r.handler,...t);return this._onDidExecuteCommand.fire({commandId:e,args:t}),Promise.resolve(n)}catch(n){return Promise.reject(n)}}invokeFunction(e,...t){let r=!1;try{return e(...t)}finally{r=!0}}};lt=qt([Yt],lt);at=Symbol.for("Jolibox.commands")});function A(e,t={}){ht.emit("ERROR_REPORT",{error:e,options:t})}var ht,ne,L=h(()=>{"use strict";v();v();ht=new Q,ne=new Q;A.debounce=pe(A,50,{leading:!0})});function Ee(e,t){return`[${e}]:${t}`}var se,gt,X=h(()=>{"use strict";L();v();L();se=(e,t)=>new fe(t?.errMsg??e.msg??"",e.code,e.type),gt=e=>new er(e)});var dr,ur,mr,pr=h(()=>{"use strict";dr=[],ur=[],mr=["env","createRequestTask","login"]});function hr(e,t){fr||(vt=new oe({eventName:"jolibox_invoke",tagNameOrder:["status","method","errNo","errMsg","isForeground"],metricName:"duration",reporter(s){e.invoke("track",JSON.stringify({event:"reportMetrics",data:s}),-1)}}),yt=new oe({eventName:"jolibox_invoke_js2native",tagNameOrder:["status","method","isForeground"],metricName:"duration",reporter(s){e.invoke("track",JSON.stringify({event:"reportMetrics",data:s}),-1)}}),bt=new oe({eventName:"jolibox_invoke_native2js",tagNameOrder:["status","method","isForeground"],metricName:"duration",reporter(s){e.invoke("track",JSON.stringify({event:"reportMetrics",data:s}),-1)}}),t("onJoliboxEnterBackground",()=>{vt.flush(),yt.flush(),bt.flush()}),fr=!0);function r(s){let{method:o,args:i,startTime:a,isForeground:d,errMsg:l=`${o}:fail no errMsg`,errNo:u=0,__timing:p={receiveJSInvoke:0,invokeCallback:0}}=s,{receiveJSInvoke:m,invokeCallback:f}=p,b=l.match(/\S:(\S+)\s?/)?.[1]??"fail";vt.report({status:b,method:n(o,i),errNo:`${u}`,errMsg:l,isForeground:d,duration:Date.now()-a}),a&&m&&f&&(yt.report({status:b,method:o,isForeground:d,duration:Number((m-a).toFixed(3))}),bt.report({status:b,method:o,isForeground:d,duration:Number((Date.now()-f).toFixed(3))}))}function n(s,o){return(s==="callHostMethod"||s==="callHostMethodSync")&&o?.method?`${s}-${o.method}`:s}return r}var ts,oe,fr,vt,yt,bt,Tt=h(()=>{"use strict";v();ts=e=>e==="pv"?e:"default",oe=class{constructor(t){this.interval=30;this.lastReportTime=0;this.cache={};let{reporter:r,interval:n=30,eventName:s,tagNameOrder:o,metricName:i,type:a}=t;this.reporter=r,this.interval=n,this.eventName=s,this.tagNameOrder=o,this.metricName=i,this.type=ts(a)}report(t){this.type==="pv"?this.addPVPoint(t):this.addPoint(t),this.tryReport(!1)}flush(){this.tryReport(!0)}tryReport(t){if(Object.keys(this.cache).length){if(t){this.reporter(this.processPoints(this.cache)),this.clearPoints();return}this.lastReportTime=this.lastReportTime||Date.now(),Date.now()-this.lastReportTime>=this.interval*1e3&&(this.reporter(this.processPoints(this.cache)),this.clearPoints(),this.lastReportTime=Date.now())}}addPoint(t){let r=(n,s,o,i)=>{let a=s.shift();if(a){let d=i[a];n[d]||(n[d]={}),r(n[d],s,o,i)}else n[o]||(n[o]=[]),n[o].push(i[o])};r(this.cache,[...this.tagNameOrder],this.metricName,t)}addPVPoint(t){let r=(s,o,i,a)=>{let d=o.shift();if(!d&&C(a))throw new Te(`report value failed to match tagNameOrder, ${JSON.stringify(n)}`);if(d){let l=[];if(C(a))l.push(...Object.keys(a));else if(te(a)){if(o.length>0)throw new Te(`report value failed to match tagNameOrder, ${JSON.stringify(n)}`);l.push(a)}else throw new Te(`expected metric value to be a string, but got a(n) ${typeof a}, ${JSON.stringify(n)}`);l.forEach(u=>{s[u]||(s[u]={});let p=C(a)?a[u]:a;r(s[u],[...o],i,p)})}else s[i]?s[i]++:s[i]=1},n={point:t,metricName:this.metricName,tagNameOrder:this.tagNameOrder};r(this.cache,[...this.tagNameOrder],this.metricName,t)}processPoints(t){return{eventName:this.eventName,tagNameOrder:this.tagNameOrder,metricName:this.metricName,metricAggregateType:this.type==="pv"?"itoa":"arr",data:t}}clearPoints(){this.cache={}}},fr=!1});function vr(e,t){let r=0,n=!0,s=new Map,o=hr(e,t);t("onJoliboxEnterBackground",()=>{n=!1}),t("onJoliboxEnterForeground",()=>{n=!0,kt.forEach(async({method:l,args:u,resolve:p})=>{let m=await a(l,u);p(m)}),kt.length=0});let i=(l,u)=>{P.info("----resolveId",l,u);let p=s.get(Number(l));if(!p)return;let m=de(u);p(m),s.delete(Number(l))},a=(l,u)=>{let p=Date.now(),m=`${n}`;r+=1;let f=new Y;if(s.set(r,f.resolve),!n&&ur.includes(l))return new Promise(x=>{kt.push({method:l,args:u,resolve:x})});let _={...{method:l,startTime:p,args:u,isForeground:m},invokeType:"js-bridge"},N=!rs&&dr.includes(l),z=$t(u,N),W=N?z:JSON.stringify(z),k;if(l.endsWith("Sync")||mr.includes(l)?k=e.call?.(l,z,r):typeof W=="string"?(console.log("-----params",l,r),k=e.invoke(l,W,r)):k=e.call?.(l,W,r),k){try{typeof k=="string"&&(k=JSON.parse(k)),k=de(k)}catch(x){P.error(x)}return s.delete(r),k.errorCode&&(k.errorCode=Ee(l,k.errorCode)),o({..._,...k}),k}return l.endsWith("Sync")&&s.delete(r),f.promise.then(x=>(x.errorCode&&(x.errorCode=Ee(l,x.errorCode)),o({..._,...x}),x))};return{invokeNative:a,applyNative:(l,u)=>{let p=a(l,u);return Wt(p)?p.then(m=>gr(l,m)):gr(l,p)},invokeHandler:i}}function gr(e,t){if(!C(t)){P.warn(`[Jolibox SDK]${e} no response value`);return}let{errMsg:r,errNo:n,errorType:s,errorCode:o,...i}=t;if(r&&r!==`${e}:ok`)throw new nr(r,n,s,o);return i}var kt,rs,yr=h(()=>{"use strict";ot();v();X();pr();Tt();kt=[],rs=!1});function br(e){let t=new Q,r=new oe({eventName:"jolibox_publish",tagNameOrder:["type","event"],metricName:"duration",reporter(n){e.invoke("track",JSON.stringify({event:"reportMetrics",data:n}),-1)}});return t.on("onJoliboxEnterBackground",()=>{r.flush()}),{onNative:t.on.bind(t),offNative:t.off.bind(t),subscribeHandler(n,s,o){let i=de(s),a;if(i.__extra){a=i.params;let{type:d,startTime:l}=i.__extra;r.report({type:d,event:n,duration:Date.now()-l})}else a=i;t.emit(n,a,o)}}}var Tr=h(()=>{"use strict";v();ot();Tt()});function Et(e){let{subscribeHandler:t,onNative:r,offNative:n}=br(e),{invokeNative:s,invokeHandler:o,applyNative:i}=vr(e,r);return{invokeHandler:o,subscribeHandler:t,applyNative:i,invokeNative:s,onNative:r,offNative:n}}var kr=h(()=>{"use strict";yr();Tr()});var Er=h(()=>{"use strict"});var Sr=h(()=>{"use strict";kr();Er()});var Z,j,Ir,wr=h(()=>{"use strict";v();L();j={trigger(){},exit(){return!1},onReady(e){j.trigger=e},doExit(e){j.exit=e}},Ir=()=>{let e=window.prompt("invoke",JSON.stringify({event:"envSync",paramsString:JSON.stringify({})}));if(!e)A(new rr("native env failed"));else{let{data:t}=JSON.parse(e);return t??void 0}};if(window.webkit){let e=window.webkit.messageHandlers,t=(s="")=>{j.trigger(),e.onDocumentReady.postMessage({path:s})};Z={onDocumentReady:t,doExit:s=>{let o=j.exit();e.doExit.postMessage({uuid:s,shouldInterrupt:o})},invoke(s,o,i){e.invoke.postMessage({event:s,paramsString:o,callbackId:i})},call(s,o,i){let a=window.prompt("invoke",JSON.stringify({event:s,paramsString:JSON.stringify(o),callbackId:i}));if(a)return JSON.parse(a)}};let n={onDocumentReady:t,env:Ir};globalThis.joliboxJSCore={...n}}if(window.JoliAndroidSDKBridge){let e=window.JoliAndroidSDKBridge,t=(s="")=>{j.trigger(),e.onDocumentReady(JSON.stringify({path:s}))};Z={onDocumentReady:t,invoke(s,o,i){e.invoke(JSON.stringify({event:s,paramsString:o,callbackId:i}))},doExit:s=>{let o=j.exit();e.doExit(JSON.stringify({uuid:s,shouldInterrupt:o}))},call(s,o,i){let a=window.prompt("invoke",JSON.stringify({event:s,paramsString:JSON.stringify(o),callbackId:i}));if(a)return JSON.parse(a)}};let n={onDocumentReady:t,env:Ir};globalThis.joliboxJSCore={...n}}});function St(e,t){return{params:e,__extra:{startTime:Date.now(),type:t}}}var It=h(()=>{"use strict"});function wt(){globalThis.onmessage=function(e){e.data==="msg:setup"&&([ie]=e.ports,ie.onmessage=function(t){let r=JSON.parse(t.data);r[0]==="publish"?globalThis.ttJSBridge.subscribeHandler(r[1],r[2]):r[0]==="invoke"&&globalThis.ttJSBridge.invokeHandler(r[1],r[2])},ie.publish=function(t,r){let n=St(r,"messagePort");ie.postMessage(JSON.stringify(["publish",t,JSON.stringify(n)]))},ie.postMessage("msg:setup:ok"))}}var ie,Rr=h(()=>{"use strict";It()});var Se=h(()=>{"use strict";wr();Rr();It()});var Ar,ns,xr,_r,O,I,V,Ei,ss,U=h(()=>{"use strict";Sr();Se();X();v();Se();Ar=Z;if(!Ar)throw new sr("No joliboxJScore is found, native bridge not found.");wt();ns={...Ar},xr=Et(ns),{invokeHandler:_r}=xr,{applyNative:O,invokeNative:I,onNative:V,offNative:Ei,subscribeHandler:ss}=xr;globalThis.joliboxJSBridge={callHandler:_r,invokeHandler:_r,subscribeHandler:ss}});var Rt,Cr,Pr=h(()=>{"use strict";v();L();Rt=e=>{let t=e.replace(/-/g,"+").replace(/_/g,"/"),r=t.length%4===0?"":"=".repeat(4-t.length%4),n=atob(t+r);try{return JSON.parse(n)}catch{return{}}},Cr=e=>{try{let n=new URL(e).searchParams.get("joliSource")?.split(".");if(n?.length){let[s,o,i]=n;return{headerJson:Rt(s),payloadJson:Rt(o),signature:Rt(i)}}else throw"joli_source is missing"}catch(t){return A(new tr(`${e} not a valid schema: ${t}`)),{headerJson:{},payloadJson:{},signature:{}}}}});var os,Ie,Nr,_t=h(()=>{"use strict";v();os="1.1.6-beta.1",Ie=()=>os,Nr=()=>{let e=Ie();return`${cr(e)}`}});var is,as,F,cs,y,B=h(()=>{"use strict";v();Pr();_t();v();is={deviceInfo:{brand:"UnknownBrand",model:"UnknownModel",did:ft(),pixelRatio:window.devicePixelRatio||1,platform:"h5",system:"UnknownSystemVersion",lang:"zh"},sdkInfo:{nativeSDKVersion:"",jssdkVersion:Ie()},schema:window.location.href,platform:"h5"},as=globalThis.joliboxJSCore?.env,F=Object.assign({},as?.()??is),cs=()=>{let{payloadJson:e,headerJson:t}=F.schema.length?Cr(F.schema):{},r=`${F.deviceInfo.did}-${new Date().getTime()}`,s=new URL(F.schema.length?F.schema:window.location.href).searchParams,o=s.get("mpId")??s.get("appId")??s.get("gameId")??"",i=e?.sessionId??s.get("sessionId")??r,a=!!(e?.testAdsMode??s.get("testAdsMode")==="true"),d=e?.joliboxEnv??s.get("joliboxEnv")??"production",l=d==="staging",u=t?.channel;return{get testMode(){return l},get testAdsMode(){return a},get joliboxEnv(){return d},get joliSource(){return s.get("joliSource")??null},get mpId(){return o??e?.id??""},get mpVersion(){return t?.ver??Ie()},get platform(){return F.platform??F.deviceInfo.platform},get deviceInfo(){return F.deviceInfo},get sdkInfo(){return F.sdkInfo},get hostInfo(){return F.hostInfo},get hostUserInfo(){return F.hostUserInfo},get sessionId(){return F.clientSessionId??i??r},get channel(){return u},onEnvConfigChanged:p=>{Qt(F,p,Xt)}}},y=cs()});var At,Fr,ls,ds,Or,us,Dr=h(()=>{"use strict";v();L();B();v();At=!1,Fr=(e,t)=>e==null?!1:t in e,ls=e=>Fr(e,"kind"),ds=e=>{let t=e.toLowerCase().split("_");return t[0]+t.slice(1).map(r=>r.charAt(0).toUpperCase()+r.slice(1)).join("")},Or=(e,t={},r)=>{let s={...{user_id:y.hostUserInfo?.uid??"",device_id:y.deviceInfo.did??"",timestamp:Date.now(),tag:ds(e.name)},env:t.environment,isFromUser:r};r?ne.emit("GLOBAL_USER_ERROR",e,s):ne.emit("GLOBAL_ERROR",e,s)},us=e=>Fr(e,"kind")&&e.kind==="USER_ERROR";ht.on("ERROR_REPORT",({error:e,options:t})=>{if(At)return;At=!0;let r=ls(e)&&e.raw?e.raw:e;try{let n=us(e);Or(e,t,n)}catch(n){let s=n instanceof Error?n.message:String(n),o=new ut(`${s}, origin error: ${r.message}`);P.error(o),Or(new ut(o.message),{environment:t.environment},!1)}finally{At=!1}})});var Ur=h(()=>{"use strict";Dr();X();v();U();ne.on("GLOBAL_ERROR",(e,t)=>{let r={message:e.message,stack:e.stack??"",errorType:e.name,source:0};I("trackAsync",{event:"reportJsError",data:r})});ne.on("GLOBAL_USER_ERROR",(e,t)=>{P.log("UserError",e,t)})});var xt=h(()=>{"use strict"});function Mr(e,t){let r=(n,s,o)=>{let i={tag:n,...t,extra:{...s}};n=="globalJsError"?A(new or(JSON.stringify(i))):e("systemLog",i,o)};return r.debounce=pe(r,500,{leading:!0}),r}function Lr(e){let t=(r,n,s)=>{let o=(s&&JSON.stringify(s))??0,i={speed_value_type:r,total_duration:n};o&&Object.assign(i,{extra:o}),e("joliboxSpeedAnalysis",i)};return t.debounce=pe(t,500,{leading:!0}),t}var jr=h(()=>{"use strict";v();v();L()});function Br(e,t){let r=Mr(e,t),n=Lr(r);return{track:r,trackPerformance:n}}var Jr=h(()=>{"use strict";jr()});var Vr=h(()=>{"use strict";B();v();v()});var $r=h(()=>{"use strict";Jr();xt();Vr()});var we,Hr=h(()=>{"use strict";we=class{constructor(t,r){this.eventEmitter=t;this.lastReportTime=0;this.visible=!0;this.timer=this.createRAFTimer(t=>{this.reporter({event:"PLAY_GAME",params:{duration:t}}),this.tracker("PlayGame",{duration:t})});this.interval=r??5*1e3,t.on("visible",n=>{this.visible=n})}start(t){this.reporter({event:"OPEN_GAME",params:{timestamp:Date.now(),duration:t??0}}),this.tracker("OpenGame",{duration:t??0}),this.timer.start()}close(t){this.reporter({event:"CLOSE_GAME",params:{timestamp:Date.now(),duration:t}}),this.tracker("CloseGame",{duration:t}),this.timer.stop()}createRAFTimer(t){let r=Date.now(),n,s,o=!1,i=0,a=()=>{if(!o)return;let f=Date.now(),b=f-r;b>=this.interval&&(this.visible&&(i+=b,t(i)),r=f),n=requestAnimationFrame(a)},d=()=>{u(),r=Date.now(),s=window.setInterval(()=>{if(!o)return;let f=Date.now();f-r>=this.interval&&(r=f)},this.interval)},l=()=>{p(),r=Date.now(),n=requestAnimationFrame(a)},u=()=>{n&&(cancelAnimationFrame(n),n=0)},p=()=>{s&&(clearInterval(s),s=0)};this.eventEmitter.on("visible",f=>{o&&(console.log("visible",f),f?l():d())});let m=this.visible;return{start(){o||(o=!0,m?l():d())},stop(){o=!1,u(),p()}}}}});var Ct=h(()=>{"use strict"});function qr(e,t,r){let{response:n,startTime:s,endTime:o,requestFrom:i}=r,{errMsg:a="",profile:d={}}=n,u={duration:o-s,request_type:e,url:t.split("?")[0],result:r.state,error_msg:r.state==="fail"?a:"",socket_reused:d.socketReused?1:0,request_from:i};(i==="public"&&Kr<ps||i==="inner")&&(u.joli_request_number=Kr++,setTimeout(()=>{M("joliboxNetRequestResult",u)},500))}var Kr,ps,Gr=h(()=>{"use strict";Ct();ee();Kr=0,ps=10});function Re(e,t,r){let n=new Map,s=r?.baseUrl??"https://api.jolibox.com",o=r?.type??"public",i=r?.defaultHeaders??{};return V("onRequestTaskStateChange",d=>{if(typeof d.requestTaskId!="string")return;let l=n.get(d.requestTaskId);if(l)if(d.state==="success"){let{requestTaskId:u,state:p,...m}=d;l.resolve(m),n.delete(u)}else if(d.state==="fail"){let{requestTaskId:u,state:p,...m}=d;l.reject(m),n.delete(u)}else P.warn("onRequestTaskStateChange unknown event",d)}),H.on("onLoginComplete",({isLogin:d,token:l})=>{d&&l&&(i["X-JOLI-TOKEN"]=l)}),async(d,l={})=>{let u=Date.now(),p=fs(d,{...l,baseUrl:s}),{method:m="GET",responseType:f="text",dataType:b="json",timeout:_,enableCache:N=!1,appendHostCookie:z=!0}=l,W=Object.assign({"content-type":"application/json"},i,l.header),k={url:p,method:m,header:W,enableCache:N,responseType:f,appendHostCookie:z};if(m=="POST"||m=="PUT"){let J=gs(l.data,W["content-type"]);k.data=J}_&&Object.assign(k,{timeout:_});let{data:{requestTaskId:x}}=I(e,k);if(typeof x!="string")throw se({code:-1,msg:"requestTaskId is not a string"});let le=(J,$)=>{qr("request",p,{state:J,startTime:u,endTime:Date.now(),params:k,response:$,requestId:x,requestFrom:o=="public"?"public":"inner"})},{resolve:st,reject:pn,promise:fn}=new Y;n.set(x,{resolve:st,reject:pn});try{let J=await fn;le("success",J);let{data:$}=J;return b==="json"&&typeof $=="string"&&($=hs($)),{url:p,timeout:_,method:m,response:{...J,data:$}}}catch(J){let $=J;if(C($)){let{errMsg:he,prefetchDetail:hn,isPrefetch:gn,errNo:vn}=$;te(he)&&(le("fail",{errMsg:he,isPrefetch:gn,prefetchDetail:hn}),A(se({code:-1,msg:he},{errNo:vn,errMsg:he})))}throw J}}}function hs(e){try{return JSON.parse(e.trim())}catch{return e}}function gs(e,t="application/json"){let r=t.toLowerCase();return e===void 0?"":typeof e=="string"||e instanceof ArrayBuffer?e:r.includes("application/x-www-form-urlencoded")||r.includes("application/json")||typeof e=="object"?JSON.stringify(e):String(e)}var fs,Pt=h(()=>{"use strict";v();Gr();Ct();U();L();X();fs=(e,t)=>{if(/^https?:\/\//.test(e))return e;let r=t?.query,s=new URLSearchParams(r).toString();return t?.baseUrl?`${t.baseUrl}${e}${s?`?${s}`:""}`:`${e}${s?`?${s}`:""}`}});var Nt,K,_e=h(()=>{"use strict";_t();Pt();B();Nt={"x-user-agent":Nr()};y.hostUserInfo?.token&&(Nt["x-joli-token"]=y.hostUserInfo.token);y.joliSource&&(Nt["x-joli-source"]=y.joliSource);K=Re("createRequestTaskSync","operateRequestTaskSync",{type:"inner",baseUrl:y.testMode?"https://stg-api.jolibox.com":"https://api.jolibox.com",defaultHeaders:Nt})});var Ae,zr=h(()=>{"use strict";B();Hr();_e();U();Ae=class extends we{constructor(t,r,n){super(r,n),this.gameId=y.mpId,this.sessionId=y.sessionId,this.track=t}async reporter(t){let{event:r,params:n}=t,s=[];s.push(K("/api/base/app-event",{method:"POST",data:{eventType:r,gameInfo:{gameId:this.gameId,sessionId:this.sessionId,...n}}})),await Promise.all(s)}async reportToNative(t){let{event:r,params:n}=t;await O("userTrackAsync",{event:r,params:{...n},gameId:this.gameId})}tracker(t,r=null){this.track(t,r)}}});var vs,M,ys,Wr,xe,D,ee=h(()=>{"use strict";Ur();v();xt();$r();B();zr();U();vs=(e,t,r)=>{let n=t,o={...C(n.extra)?n.extra:te(n.extra)?JSON.parse(n.extra):{},mp_id:n.mp_id??"",mp_version:n.mp_version??""};I("trackAsync",{event:e,data:o,webviewId:r})},{track:M,trackPerformance:ys}=Br(vs,{type:pt.AppSDK,platform:"native",jssdk_version:y.sdkInfo?.jssdkVersion??"1.0.0",mp_id:y.mpId,mp_version:y.mpVersion}),Wr=w();Wr.registerCommand("ReportSDK.traceSystemTimeline",({event:e,duration:t,extra:r})=>{ys(e,t,r)});Wr.registerCommand("ReportSDK.traceSystem",({event:e,info:t})=>{M(e,t)});xe=new Q,D=new Ae(M,xe)});function Qr(e){let t=mt.config[e];return t||(t={},mt.config[e]=t),(r,n)=>{if(t[r]){P.warn(`[can i use] ${r} already registered`);return}t[r]={...n}}}var Xr=h(()=>{"use strict";v()});function Ot(e){Zr=e}function Pe(e){return e===null||typeof e!="object"?e:Array.isArray(e)?e.map(t=>Pe(t)):Object.keys(e).reduce((t,r)=>(t[r]=Pe(e[r]),t),{})}function q(e){return typeof e=="number"}function Ft(e){let t=Dt(e);switch(t){case"string":return`"${e}"`;case"number":case"boolean":case"null":case"undefined":return String(e);default:return`a(n) ${t}`}}function Dt(e){return typeof e=="function"?"function":Object.prototype.toString.call(e).slice(8).slice(0,-1).toLowerCase()}var Zr,E,Ne,Oe,Fe,De,ae,Ue,Me,Le,je,Be,Je,Ve,$e,He,Ke,qe,Ge,Ut=h(()=>{"use strict";Zr=!1;E=class{constructor(){this.errors=[];this.hasFallback=!1;this.hasDefault=!1;this._optional=!1}fail(t){if(Zr)if(typeof t=="string")this.errors.push(t);else{let r=`${this.path} should be ${t.expect}`;this._optional&&t.expect!=="undefined"?r+=" or undefined, ":r+=", ",r+=`but got ${Ft(t.actual)}`,this.errors.push(r)}return!1}fallback(t){return this.hasFallback=!0,this._fallback=t,this}get fallbackValue(){return Pe(this._fallback)}default(t){return this.hasDefault=!0,this._default=t,this}get defaultValue(){return typeof this._default=="function"?this._default:Pe(this._default)}optional(){return this._optional=!0,this}};Ne=class extends E{validate(t){return this._optional&&t===void 0?!0:q(t)?q(this._min)&&t<this._min?this.fail(`the value of ${this.path} should be greater than or equal to ${this._min}`):q(this._max)&&t>this._max?this.fail(`the value of ${this.path} should be less than or equal to ${this._max}`):q(this._greater)&&t<=this._greater?this.fail(`the value of ${this.path} should be greater than ${this._greater}`):this._isInt&&t!==Math.floor(t)?this.fail(`the value of ${this.path} should be integer but got ${t}`):!0:this.fail({expect:"number",actual:t})}min(t){return this._min=t,this}max(t){return this._max=t,this}isInt(t){return this._isInt=t,this}greater(t){return this._greater=t,this}},Oe=class extends E{validate(t){return this._optional&&t===void 0?!0:typeof t!="boolean"?this.fail({expect:"boolean",actual:t}):!0}},Fe=class extends E{validate(t){if(this._optional&&t===void 0)return!0;if(typeof t!="string")return this.fail({expect:"string",actual:t});if(q(this._maxLength)&&t.length>this._maxLength)return this.fail(`the length of ${this.path} should be less than or equal to ${this._maxLength}`);if(q(this._minLength)&&t.length<this._minLength)return this.fail(`the length of ${this.path} should be greater than or equal to ${this._minLength}`);if(typeof this._pattern=="string"){if(!new RegExp(this._pattern).test(t))return this.fail(`${this.path} should match pattern "${this._pattern}"`)}else if(this._pattern&&!this._pattern.test(t))return this.fail(`${this.path} should match pattern "${this._pattern.toString()}"`);return!0}minLength(t){return this._minLength=t,this}maxLength(t){return this._maxLength=t,this}pattern(t){return this._pattern=t,this}},De=class extends E{validate(t){return this._optional&&t===void 0?!0:typeof t!="symbol"?this.fail({expect:"symbol",actual:t}):!0}},ae=class extends E{validate(t){return!0}},Ue=class extends E{validate(t){return t!==void 0?this.fail({expect:"undefined",actual:t}):!0}},Me=class extends E{validate(t){return this._optional&&t===void 0?!0:t!==null?this.fail({expect:"null",actual:t}):!0}},Le=class extends E{validate(t){return this._optional&&t===void 0?!0:typeof t!="function"?this.fail({expect:"function",actual:t}):!0}},je=class extends E{constructor(...t){super(),this._items=t}validate(t){if(this._optional&&t===void 0)return!0;if(!this._items.includes(t)){let r=this._items.map(n=>JSON.stringify(n)).join(", ");return this.fail(`expect ${this.path} to be one of ${r}, but got ${Ft(t)}`)}return!0}},Be=class extends E{constructor(r){super();this._item=r}validate(r){if(this._optional&&r===void 0)return!0;if(!Array.isArray(r))return this.fail({expect:"array",actual:r});if(q(this._minItems)&&r.length<this._minItems)return this.fail(`the length of ${this.path} should be greater than or equal to ${this._minItems}`);if(q(this._maxItems)&&r.length>this._maxItems)return this.fail(`the length of ${this.path} should be less than or equal to ${this._maxItems}`);if(q(this._length)&&r.length!==this._length)return this.fail(`the length of ${this.path} should be equal to ${this._length}`);let n=this._item;if(!n)return!0;let s=!0;if(r.forEach((o,i)=>{if(n.path=`${this.path}[${i}]`,n.errors=this.errors,o===void 0&&n.hasDefault){r[i]=n.defaultValue;return}n.validate(o)||(n.hasFallback?r[i]=n.fallbackValue:s=!1)}),this._uniqueItems){let o=new Map;for(let i in r)o.has(r[i])?s=this.fail(`${this.path} should NOT have duplicate items (${this.path}[${o.get(r[i])}] and ${this.path}[${i}] are identical)`):o.set(r[i],i)}return s}minItems(r){return this._minItems=r,this}maxItems(r){return this._maxItems=r,this}uniqueItems(){return this._uniqueItems=!0,this}length(r){return this._length=r,this}},Je=class extends E{constructor(r){super();this._value=r}validate(r){if(this._optional&&r===void 0)return!0;if(Dt(r)!=="object")return this.fail({expect:"object",actual:r});let s=r,o=this._value;o.errors=this.errors;let i=!0;for(let a in s){let d=s[a];if(/^[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*$/.test(a)?o.path=`${this.path}.${a}`:o.path=`${this.path}["${a}"]`,!(d===void 0&&o._optional)){if(d===void 0&&o.hasDefault){s[a]=o.defaultValue;continue}o.validate(d)||(o.hasFallback?s[a]=o.fallbackValue:i=!1)}}return i}},Ve=class extends E{constructor(r={}){super();this._object=r}validate(r){if(this._optional&&r===void 0)return!0;if(Dt(r)!=="object")return this.fail({expect:"object",actual:r});let n=r,s=!0;for(let o in this._object){let i=n[o],a=this._object[o];if(a.errors=this.errors,/^[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*$/.test(o)?a.path=`${this.path}.${o}`:a.path=`${this.path}["${o}"]`,!(a._optional&&i===void 0)){if(i===void 0&&a.hasDefault){n[o]=a.defaultValue;continue}a.validate(i)||(a.hasFallback?n[o]=a.fallbackValue:s=!1)}}return s}},$e=class extends E{constructor(r){super();this.value=r}validate(r){return r===void 0&&this._optional?!0:r!==this.value?this.fail({expect:Ft(this.value),actual:r}):!0}},He=class extends E{constructor(...t){super(),this._items=t}validate(t){if(t===void 0&&this._optional)return!0;let r=[],n=!1,s=this._items.length;for(let o=0;o<s;o++){let i=this._items[o];if(i.errors=[],i.path=this.path,!i.validate(t))r.push(i.errors.join("; "));else if(!n){n=!0;break}}if(!n){let o=r.join(`
2
- or `);this.errors.push(o)}return n}},Ke=class extends E{constructor(...t){super(),this._items=t;let r=0,n=t.length-1;for(;n>=0;n--){let s=t[n];if(s._optional||s.hasDefault)r+=1;else break}this._minItems=t.length-r}validate(t){if(t===void 0&&this._optional)return!0;if(!Array.isArray(t))return this.fail({expect:"array",actual:t});if(t.length<this._minItems)return this.fail(`the length of ${this.path} should be greater than or equal to ${this._minItems}`);let r=!0;return this._items.forEach((n,s)=>{if(n.path=`${this.path}[${s}]`,n.errors=this.errors,t[s]===void 0&&n.hasDefault){t[s]=n.defaultValue;return}n.validate(t[s])||(n.hasFallback?t[s]=n._fallback:r=!1)}),r}},qe=class extends E{validate(t){return t===void 0&&this._optional||t instanceof ArrayBuffer?!0:this.fail({expect:"arraybuffer",actual:t})}},Ge=class extends E{constructor(t){super(),this._ctor=t}validate(t){return t===void 0&&this._optional||t instanceof this._ctor?!0:this.fail({expect:`typedarray of ${this._ctor.name}`,actual:t})}}});function Mt(e,t,r="param"){if(e.errors=[],e.path=r,Ot(!0),!e.validate(t)){let n=e.errors.join(`
3
- `);throw e.errors.length=0,Ot(!1),new TypeError(n)}}var c,Lt=h(()=>{"use strict";Ut();Ut();c={object(e){return new Ve(e)},array(e){return new Be(e)},tuple(...e){return new Ke(...e)},literal(e){return new $e(e)},or(...e){return new He(...e)},symbol(){return new De},record(e){return new Je(e)},function(){return new Le},boolean(){return new Oe},string(){return new Fe},number(){return new Ne},undefined(){return new Ue},null(){return new Me},unknown(){return new ae},any(){return new ae},as(){return new ae},arraybuffer(){return new qe},enum(...e){return new je(...e)},typedarray(e){return new Ge(e)}}});var ze,en,tn=h(()=>{"use strict";v();L();Lt();X();ze=1,en=e=>{function t(n,s){return(...o)=>{let i=Date.now(),a={method:n,trace_id:ze};ze+=1;let d="SUCCESS",l=`${n}:ok`,u=0;try{if(s.paramsSchema)try{Mt(s.paramsSchema,o,"params")}catch(b){throw gt(`${n}:fail ${b.message}`)}let p=s.implement(...o),m=p,f=`${n}:ok`;if(p&&"code"in p){let{code:b,data:_,message:N}=p;d=b,m=_,f=N}return{code:d,message:f,data:m}}catch(p){let m=p;u=m.code??m.errNo??2e3,d="FAILURE";let f=m.message??m.errMsg??`${p}`;return l=`${n}:${d} ${f.replace(/^\S+:(fail|cancel)\s?/,"")}`,A(new fe(l,u)),{code:d,message:l}}finally{let p=Date.now()-i;e("apiInvoked",{...a,duration:p,status:d})}}}function r(n,s){return async(...o)=>{let i=Gt(o)?o:[o],a=Date.now(),d={method:n,trace_id:ze};ze+=1;let l=`${n}:ok`,u="SUCCESS",p={code:u,message:l};try{if(s.paramsSchema)try{Mt(s.paramsSchema,i,"params")}catch(b){throw gt(b.message)}let f=await s.implement(...i);if(f&&"code"in f){let{code:b,data:_,message:N}=f;u=b,l=N,f=_}return Object.assign(p,{code:u,message:l,data:f}),p}catch(m){let f=m,b=f.code??f.errNo??2e3;u="FAILURE";let _=f.message??f.errMsg??`${m}`,N=`${n}:${u} ${_.replace(/^\S+:(fail|cancel)\s?/,"")}`;return Object.assign(p,{code:u,message:N}),A(new fe(N,b)),p}finally{let m=Date.now()-a;e("apiInvoked",{...d,duration:m,status:u})}}}return{createAPI:r,createSyncAPI:t}}});var S,R,g,G=h(()=>{"use strict";Xr();ee();tn();Lt();({createAPI:S,createSyncAPI:R}=en(M)),g=Qr("native")});var sn=Sn(nn=>{"use strict";v();G();L();U();ee();var Rs="exitGame",_s="onReady",As="onJoliboxShow",xs="onJoliboxHide",We=w(),Ye=ke(A),Cs=S(Rs,{paramsSchema:c.tuple(c.function()),implement:async e=>{Ye(e).call(nn),await O("exitAppAsync")}}),Ps=R(As,{paramsSchema:c.tuple(c.function()),implement(e){let t=Ye(e);V("onJoliboxEnterForeground",()=>{t.call(this),xe.emit("visible",!0)})}}),Ns=R(xs,{paramsSchema:c.tuple(c.function()),implement(e){let t=Ye(e);V("onJoliboxEnterBackground",()=>{t.call(this),xe.emit("visible",!1)})}}),Os=R(_s,{paramsSchema:c.tuple(c.function()),implement(e){let t=Ye(e);H.on("LifecycleEvent.onReady",r=>{t(r)})}});We.registerCommand("LifecycleSDK.exit",Cs);We.registerCommand("LifecycleSDK.onReady",Os);We.registerCommand("LifecycleSDK.onJoliboxShow",Ps);We.registerCommand("LifecycleSDK.onJoliboxHide",Ns);g("lifeCycle.exit",{version:"1.0.0"});g("lifeCycle.onReady",{version:"1.0.0"});g("lifeCycle.onJoliboxShow",{version:"1.0.0"});g("lifeCycle.onJoliboxHide",{version:"1.0.0"})});U();Se();B();v();ee();j.onReady(()=>{});j.doExit(()=>(M("onBeforeExit",{timestamp:Date.now()}),D.close(Date.now()-Ce),!1));function bs(){H.on("onDocumentReady",()=>{Z?.onDocumentReady(window.location.href),M("onDocumentReady",{start_timestamp:Ce,timestamp:Date.now()})})}function Ts(){V("onJoliboxServiceReady",({runtimeInfo:e,loadDuration:t})=>{e&&y.onEnvConfigChanged({hostUserInfo:e}),H.emit("LifecycleEvent.onReady",{...y.hostUserInfo?y.hostUserInfo:{isLogin:!1}}),M("joliboxServiceReady",{start_timestamp:Ce,timestamp:Date.now()}),D.start(t)}),V("onBeforeExit",({uuid:e})=>{Z?.doExit(e)})}var Ce;function Yr(){Ce=Date.now(),Ts(),bs()}v();G();U();var rn=w(),Es="env",Ss="getSystemInfoSync",Is=R(Ss,{implement:()=>{let e=I("envSync"),{data:t}=e;return{system:t.deviceInfo.system,platform:t.deviceInfo.platform,version:t.sdkInfo.jssdkVersion,pixelRatio:t.deviceInfo.pixelRatio,language:t.deviceInfo.lang,brand:t.deviceInfo.brand,appName:t.hostInfo?.appName,SDKVersion:t.sdkInfo.jssdkVersion}}}),ws=R(Es,{implement:()=>I("envSync")?.data??void 0});rn.registerCommand("API.getSystemInfoSync",Is);rn.registerCommand("API.env",ws);g("env",{version:"1.0.0"});g("getSystemInfoSync",{version:"1.0.0"});var Il=wn(sn());X();Pt();G();v();function on(e){let t={};if(!C(e))return t;for(let[r,n]of Object.entries(e)){let s=r.toLocaleLowerCase();n?typeof n=="object"?t[s]=Object.prototype.toString.call(n):t[s]=String(n):t[s]=""}return t}function an(e="GET"){if(e==="")return"POST";let t=e.toUpperCase();return["GET","OPTIONS","HEAD","POST","PUT","DELETE","TRACE","CONNECT","PATCH"].includes(t)?t:"GET"}function cn(e,t=!1){if(e)return t||e>0&&e<=6e4?Math.ceil(e):6e4}function ln(e,t,r){if(["POST","PUT","PATCH"].includes(t)||!C(r))return e;let[n,s=""]=e.split("?"),o=JSON.stringify({...JSON.parse(s),...r});return`${n}?${o}`}v();L();var Fs=15,Ds=Re("createRequestTaskSync","operateRequestTaskSync",{type:"public"}),jt=0,Bt=[],dn=ke(A),Us=(e,t)=>{let r=e.filter(t),n=e.filter(s=>!t(s));return e.length=0,e.push(...n),r},Ms=e=>{let t=new Y,r=()=>{};return S("request",{paramsSchema:c.tuple(c.object({url:c.string(),method:c.string(),header:c.object(),data:c.object().optional(),query:c.object().optional(),dataType:c.string().default("json"),responseType:c.string().default("text"),enableCache:c.boolean().default(!1),appendHostCookie:c.boolean().default(!0),timeout:c.number().default(3e4),success:c.function(),fail:c.function()})),implement(s){let o=async()=>{let i=dn(s.fail);try{if(jt+=1,t.state!=="pending")return;let{data:a,dataType:d,responseType:l,enableCache:u,appendHostCookie:p}=s,m=on(s.header),f=an(s.method),b=cn(s.timeout),_=ln(s.url,f,a),N=dn(s.success),z=Object.assign({},s,{method:f,header:m,data:f==="GET"||f==="HEAD"?void 0:a,enableCache:u,query:s.query??{},dataType:d,responseType:l,appendHostCookie:p});b&&(z.timeout=b);let W=Ds(_,z);{let{response:k}=await W,{code:x,data:le,message:st}=k;t.resolve({code:x??"SUCCESS",data:le,message:st??"request:ok"}),N({code:"SUCCESS",message:"request:ok",data:le})}}catch(a){t.reject(a),i({code:"FAILURE",message:"httpRequst: failed"})}finally{jt-=1,Bt.shift()?.()}};return jt>=Fs?(r=()=>{Us(Bt,i=>i===o)},Bt.push(o)):o(),t.promise}})(e),{abort(){t.reject(se({code:-1,msg:"request:fail abort"})),r()}}},Ls=w();Ls.registerCommand("HttpSDK.request",Ms);g("request",{version:"1.0.0"});G();U();v();_e();B();var Qe=w(),js=S("getLocalStorage",{paramsSchema:c.tuple(c.string()),async implement(e){let{response:t}=await K(`/api/games/user-storage/${y.mpId}`,{method:"GET",responseType:"json",appendHostCookie:!0,query:{key:e}}),{data:{code:r,message:n,data:s}}=await t;if(r==="SUCCESS")return{code:r,message:n,data:s?.value};try{let{data:{data:o,dataType:i}}=await O("getLocalStorageAsync",{key:e}),a=Ks(o,i);return{code:r,message:`${n}. fallback to native`,data:a}}catch{return{code:"INTERNAL_ERROR",message:"[Jolibox SDK] get local storage failed",data:null}}}});Qe.registerCommand("StorageSDK.getItem",js);g("storage.getItem",{version:"1.0.0",properties:{key:"1.0.0",value:"1.0.0"}});var Bs=S("setStorage",{paramsSchema:c.tuple(c.string(),c.or(c.string(),c.boolean(),c.number())),async implement(e,t){let r=y.mpId,n=typeof t=="string"?t:String(t),{response:s}=await K(`/api/games/user-storage/${r}`,{method:"POST",responseType:"json",appendHostCookie:!0,data:{key:e,value:n}}),{data:{code:o,message:i}}=s,a=Hs(t),d=qs(t,a);return await O("setLocalStorageAsync",{key:e,data:d,dataType:a}),o=="SUCCESS"?{code:o,message:i}:{code:o,message:`${i}. fallback to native`}}});Qe.registerCommand("StorageSDK.setItem",Bs);g("storage.setItem",{version:"1.0.0",properties:{key:"1.0.0",value:"1.0.0"}});var Js=S("removeStorage",{paramsSchema:c.tuple(c.string()),async implement(e){let t=y.mpId,{response:r}=await K(`/api/games/user-storage/${t}/remove`,{method:"POST",responseType:"json",appendHostCookie:!0,data:{key:e}}),{data:{code:n,message:s}}=r;return await O("removeLocalStorageAsync",{key:e}),n==="SUCCESS"?{code:n,message:s}:{code:n,message:"[Jolibox SDK] remove item succ"}}});Qe.registerCommand("StorageSDK.removeItem",Js);g("storage.removeItem",{version:"1.0.0",properties:{key:"1.0.0"}});var Vs=S("clearStorage",{async implement(){let e=y.mpId,{response:t}=await K(`/api/games/user-storage/${e}/clear`,{method:"POST",appendHostCookie:!0});O("clearLocalStorageAsync");let{data:{code:r,message:n}}=t;return r==="SUCCESS"?{code:r,message:n}:{code:r,message:`${n}.fallback to native`}}});Qe.registerCommand("StorageSDK.clear",Vs);g("storage.clear",{version:"1.0.0"});var Bc=S("getStorageInfo",{async implement(){let{data:e}=await O("getStorageInfoAsync");return e}});g("getStorageInfo",{version:"1.0.0",success:{keys:"1.0.0",currentSize:"1.0.0",limitSize:"1.0.0"}});var Jc=R("getStorageInfoSync",{implement(){return I("getStorageInfoSync")}}),$s=["string","number","boolean","object",""];function Hs(e){let t=Object.prototype.toString.call(e).split(" ")[1].split("]")[0].toLocaleLowerCase();return $s.includes(t)?t:""}function Ks(e,t){try{switch(t){case"string":return e;case"object":return JSON.parse(e);case"number":return parseFloat(e);case"boolean":return e==="true";default:return""}}catch{return""}}function qs(e,t){try{switch(t){case"string":case"number":case"boolean":return`${e}`;case"object":return JSON.stringify(e);default:return""}}catch{return""}}v();U();G();var Gs=R("showKeyboard",{paramsSchema:c.tuple(c.object({defaultValue:c.string().optional().default(""),multiple:c.boolean().optional().default(!1),maxLength:c.unknown().optional().default(1e5)})),implement(e){let t=Math.floor(Number(e.maxLength)??1e5),{defaultValue:r}=e;r&&t&&(r=r.slice(0,t)),I("showKeyboardSync",{...e,defaultValue:r,maxLength:t})}});g("keyboard.showKeyboard",{version:"1.0.0",properties:{params:{defaultValue:"1.0.0",multiple:"1.0.0",confirmHold:"1.0.0",confirmType:"1.0.0",maxLength:"1.0.0"}},success:{errMsg:"1.0.0"}});var zs=R("updateKeyboard",{paramsSchema:c.tuple(c.object({value:c.string()})),implement(e){I("updateKeyboardSync",e)}});g("keyboard.updateKeyboard",{version:"1.0.0",properties:{params:{value:"1.0.0"}}});var Ws=R("hideKeyboard",{implement(){I("hideKeyboardSync")}});g("keyboard.hideKeyboard",{version:"1.0.0"});var Jt=w();Jt.registerCommand("KeyboardSDK.showKeyboard",Gs);Jt.registerCommand("KeyboardSDK.updateKeyboard",zs);Jt.registerCommand("KeyboardSDK.hideKeyboard",Ws);v();G();ee();var ce=w(),Ys=S("levelFinished",{paramsSchema:c.tuple(c.string(),c.object({result:c.boolean(),duration:c.number()})),implement:async(e,t)=>{let{result:r,duration:n}=t,s=[];s.push(D.tracker("LevelFinished",{levelId:e,result:r,duration:n})),s.push(D.reporter({event:"COMPLETE_GAME_LEVEL"})),await Promise.all(s)}}),Qs=S("taskFinished",{paramsSchema:c.tuple(c.string(),c.object({duration:c.number()})),implement:async(e,t)=>{let{duration:r}=t;return await D.reportToNative({event:"TaskFinished",params:{duration:r,taskId:e}})}}),Xs=S("levelUpgrade",{paramsSchema:c.tuple(c.string(),c.string()),implement:async(e,t)=>{let r=[];r.push(D.reportToNative({event:"LevelUpgrade",params:{name:t,levelId:e}})),await Promise.all(r)}}),Zs=S("onHistoryUserLevel",{paramsSchema:c.tuple(c.number()),implement:async e=>await D.reportToNative({event:"HistoryUserLevel",params:{level:e}})}),eo=S("onHistoryUserScore",{paramsSchema:c.tuple(c.number()),implement:async e=>await D.reportToNative({event:"HistoryUserScore",params:{score:e}})}),to=S("taskEvent",{paramsSchema:c.tuple(c.string(),c.object({tools:c.array(c.object({id:c.string(),name:c.string(),count:c.number(),description:c.string().optional(),price:c.object({amount:c.number(),unit:c.string()}).optional()})).optional(),awards:c.array(c.object({id:c.string(),name:c.string()})).optional()})),implement:async(e,t)=>{let r=[];r.push(D.reportToNative({event:"TaskEvent",params:{taskId:e,...t}})),(t.tools?.length??!1)&&(r.push(D.reporter({event:"USE_GAME_ITEM"})),r.push(D.reportToNative({event:"UseGameItem",params:{taskId:e,...t}}))),await Promise.all(r)}});ce.registerCommand("TaskTrackerSDK.levelFinished",Ys);ce.registerCommand("TaskTrackerSDK.taskFinished",Qs);ce.registerCommand("TaskTrackerSDK.levelUpgrade",Xs);ce.registerCommand("TaskTrackerSDK.historyUserLevel",Zs);ce.registerCommand("TaskTrackerSDK.historyUserScore",eo);ce.registerCommand("TaskTrackerSDK.taskEvent",to);g("TaskTrackerSDK.onLevelFinished",{version:"1.0.0",properties:{levelId:"1.0.0",params:{result:"1.0.0",duration:"1.0.0"}}});g("TaskTrackerSDK.onTaskFinished",{version:"1.0.0",properties:{taskId:"1.0.0",duration:"1.0.0"}});g("TaskTrackerSDK.onLevelUpgrade",{version:"1.0.0",properties:{levelId:"1.0.0",name:"1.0.0"}});g("TaskTrackerSDK.onHistoryUserLevel",{version:"1.0.0",properties:{level:"1.0.0"}});g("TaskTrackerSDK.onHistoryUserScore",{version:"1.0.0",properties:{score:"1.0.0"}});g("TaskTrackerSDK.onTaskEvent",{version:"1.0.0",properties:{taskId:"1.0.0",params:{tools:{id:"1.0.0",name:"1.0.0",count:"1.0.0",description:"1.0.0",price:{amount:"1.0.0",unit:"1.0.0"}},awards:{id:"1.0.0",name:"1.0.0"}}}});B();U();G();v();X();g("login",{version:"1.0.0",properties:{force:"1.0.0"},success:{errMsg:"1.0.0",code:"1.0.0",token:"1.0.0",isLogin:"1.0.0"}});g("checkSession",{version:"1.0.0",success:{errMsg:"1.0.0"}});var ro=S("login",{async implement(){let{data:{isLogin:e}}=await O("checkLoginAsync");if(e)return{isLogin:!0,token:y.hostUserInfo?.token};V("onLoginStateChange",({isLogin:i,token:a,uuid:d})=>{d==r&&s({isLogin:i,token:a})});let t=I("loginSync"),{data:{uuid:r}}=t;if(!r)throw se({code:-1,msg:"login failed"});let{promise:n,resolve:s}=new Y,o=await n;return y.onEnvConfigChanged({hostUserInfo:o}),H.emit("onLoginComplete",o),o}}),no=S("checkSession",{async implement(){let{data:{isLogin:e}}=await O("checkLoginAsync");return{isLogin:e}}}),un=w();un.registerCommand("API.login",ro);un.registerCommand("API.checkSession",no);v();G();var Xe=class{constructor(t){this.track=t;this.adBreakIsShowing=!1;this.reportPageJumpOut=()=>{this.track("AdBreakJumpOut",{context:"AdsActionDetection"})};this.reportPageHide=()=>{this.track("AdBreakHide",{context:"AdsActionDetection"})};window.addEventListener("visibilitychange",()=>{document.hidden&&this.adBreakIsShowing&&this.reportPageHide()}),window.addEventListener("beforeunload",r=>{this.adBreakIsShowing&&this.reportPageJumpOut()})}};var mn="jolibox-sdk-ads-callbreak-timestamps",Ze=class{constructor(t,r){this.checkNetwork=t;this.maxAllowedAdsForTime=8;this.bannedForTimeThreshold=6e4;this.bannedReleaseTime=6e4;this.isBanningForTime=!1;this.releaseBannedForTimeTimeout=null;this.maxAllowedAdsForSession=200;this.bannedForSessionThreshold=6e5;this.isBanningForSession=!1;this.initialThreshold=2e3;this._callAdsTimestampsForTime=[];this.callAdsTimestampsForSession=[];this.initTimestamp=0;this.initCallAdsTimestampsForTime=()=>{try{let t=JSON.parse(window.localStorage.getItem(mn)??"[]");Array.isArray(t)?this._callAdsTimestampsForTime=t:this._callAdsTimestampsForTime=[]}catch{this._callAdsTimestampsForTime=[]}};this.setReleaseBannedForTime=()=>{this.releaseBannedForTimeTimeout&&(window.clearTimeout(this.releaseBannedForTimeTimeout),this.releaseBannedForTimeTimeout=null),this.releaseBannedForTimeTimeout=window.setTimeout(()=>{this.isBanningForTime=!1,this.releaseBannedForTimeTimeout=null},this.bannedReleaseTime)};this.checkShouldBannedInitial=()=>{if(Date.now()-this.initTimestamp<=this.initialThreshold)return"BLOCK_INITIAL"};this.checkShouldBannedForSession=t=>{if(this.isBanningForSession)return"BANNED_FOR_SESSION";let r=Date.now();if(this.callAdsTimestampsForSession=this.callAdsTimestampsForSession.concat({timestamp:r,type:t}),this.callAdsTimestampsForSession.length!==1&&(this.callAdsTimestampsForSession.length>this.maxAllowedAdsForSession&&(this.callAdsTimestampsForSession=this.callAdsTimestampsForSession.slice(-this.maxAllowedAdsForSession)),this.callAdsTimestampsForSession.length===this.maxAllowedAdsForSession&&r-this.callAdsTimestampsForSession[0].timestamp<=this.bannedForSessionThreshold))return this.isBanningForSession=!0,"BANNED_FOR_SESSION"};this.checkShouldBannedForTime=t=>{if(this.isBanningForTime)return"WAITING_BANNED_RELEASE";let r=Date.now();if(this.callAdsTimestampsForTime=this.callAdsTimestampsForTime.concat({timestamp:r,type:t}),this.callAdsTimestampsForTime.length!==1&&(this.callAdsTimestampsForTime.length>this.maxAllowedAdsForTime&&(this.callAdsTimestampsForTime=this.callAdsTimestampsForTime.slice(-this.maxAllowedAdsForTime)),this.callAdsTimestampsForTime.length===this.maxAllowedAdsForTime&&r-this.callAdsTimestampsForTime[0].timestamp<=this.bannedForTimeThreshold))return this.isBanningForTime=!0,this.setReleaseBannedForTime(),"BANNED_FOR_TIME"};this.checkAdsDisplayPermission=t=>{if(!this.checkNetwork())return"NETWORK_NOT_OK";let r=this.checkShouldBannedInitial();if(r)return r;let n=this.checkShouldBannedForSession(t);if(n)return n;let s=this.checkShouldBannedForTime(t);return s||"ALLOWED"};if(this.maxAllowedAdsForTime=r?.maxAllowedAdsForTime??8,this.bannedForTimeThreshold=r?.bannedForTimeThreshold??6e4,this.bannedReleaseTime=r?.bannedReleaseTime??6e4,this.maxAllowedAdsForSession=r?.maxAllowedAdsForSession??200,this.bannedForSessionThreshold=r?.bannedForSessionThreshold??6e5,this.initialThreshold=r?.initialThreshold??2e3,this.maxAllowedAdsForTime<=1)throw new Error("maxAllowedAdsForTime must be greater than 1");if(this.bannedForTimeThreshold<0)throw new Error("bannedForTimeThreshold must be greater than or equal to 0");if(this.bannedReleaseTime<this.bannedForTimeThreshold)throw new Error("bannedReleaseTime must be greater than or equal to bannedForTimeThreshold");if(this.initialThreshold<0)throw new Error("initialThreshold must be greater than or equal to 0");this.initCallAdsTimestampsForTime(),this.initTimestamp=Date.now()}get callAdsTimestampsForTime(){return this._callAdsTimestampsForTime}set callAdsTimestampsForTime(t){try{window.localStorage.setItem(mn,JSON.stringify(t))}catch{console.error("Failed to save timestamps")}this._callAdsTimestampsForTime=t}};B();B();var et=class{constructor(t){this.httpClient=t;this.configs=null;this.firstRun=!0;this.init()}async init(){try{this.configs=await this.httpClient.get("/api/fe-configs/js-sdk/ads-channel-config")}catch{}}shouldBypassCallingInterstitial(){let t;if(!this.configs)this.init(),t=!this.firstRun;else{let r=y.channel??"",s=this.configs[r]?.interstitialRate??1;t=Math.random()<s}return this.firstRun=!1,t}};var tt=class{constructor(t,r,n){this.track=t;this.httpClient=r;this.checkNetwork=n;this.configured=!1;this.config={};this.getGameId=()=>y.mpId;this.getTestAdsMode=()=>y.testAdsMode;this.asyncLoad=async()=>{let t="ca-pub-7171363994453626",r,n,s=window.encodeURIComponent(window.btoa(this.getGameId()??"")),o=this.getTestAdsMode()??!1;try{let i=await this.httpClient.get("/public/ads",{query:{objectId:s,testAdsMode:`${o}`}});t=i.data?.clientId,r=i.data?.channelId,n=i.data?.unitId}catch(i){console.error("Failed to fetch client info",i)}this.clientId=t,this.channelId=r,this.unitId=n};this.asyncInit=async t=>{if(typeof window>"u")return;await this.asyncLoad();let r="google-adsense",n=this.getTestAdsMode()??!1;if(!document.getElementById(r)&&this.clientId){let s=document.createElement("script");s.id=r,s.async=!0,s.crossOrigin="anonymous",s.src=`https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=${this.clientId}`,n&&s.setAttribute("data-adbreak-test","on"),this.channelId&&s.setAttribute("data-ad-channel",this.channelId),document.head.appendChild(s),this.track("LoadAdsenseCompleted",null)}};this.push=(t={})=>{window.adsbygoogle.push(t)};this.adConfig=t=>{let{onReady:r,...n}=t;this.track("CallAdConfig",n),this.configured?console.warn("Ad config already set, skipping"):(this.configured=!0,this.push(t))};this.adBreak=t=>{if(!this.getGameId()){console.warn("Game ID is not set, skip calling adBreak");return}if(t.type!=="reward"&&!this.channelPolicy.shouldBypassCallingInterstitial()){t.adBreakDone?.({breakType:t.type,breakName:"skipInterstitials",breakFormat:"interstitial",breakStatus:"viewed"});return}let r=this.antiCheating.checkAdsDisplayPermission(t.type==="reward"?"reward":"interstitial");switch(r){case"NETWORK_NOT_OK":case"BANNED_FOR_SESSION":console.warn("Ads not allowed",r),t.adBreakDone?.({breakType:t.type,breakName:r,breakFormat:t.type==="reward"?"reward":"interstitial",breakStatus:"noAdPreloaded"}),this.track("PreventAdsCheating",{reason:r});return;case"BLOCK_INITIAL":case"BANNED_FOR_TIME":case"WAITING_BANNED_RELEASE":console.warn("Ads not allowed",r),t.adBreakDone?.({breakType:t.type,breakFormat:t.type==="reward"?"reward":"interstitial",breakStatus:"viewed"}),this.track("PreventAdsCheating",{reason:r});return;default:break}let n=t.type,s=t.adBreakDone,o=a=>{this.adsActionDetection.adBreakIsShowing=!1,this.track("CallAdBreakDone",{breakType:a.breakType,breakName:a.breakName??"",breakFormat:a.breakFormat,breakStatus:a.breakStatus}),s&&s(a)};if(t.adBreakDone=o,t.type==="reward"){let a=t.beforeReward,d=u=>()=>{this.track("CallShowAdFn",null),u()},l=u=>{a&&a(d(u))};t.beforeReward=l}let i;switch(n){case"preroll":i={type:n};break;case"start":case"pause":case"next":case"browse":case"reward":i={type:n,name:t.name??""};break}this.adsActionDetection.adBreakIsShowing=!0,this.track("CallAdBreak",i),this.push(t),window.JoliTesterBridge&&console.log("joli-fullscreen-ad-show")};this.adUnit=async t=>{if(this.track("CallAdUnit",{adFormat:t.adFormat?.toString()??null,fullWidthResponsive:t.fullWidthResponsive??null}),this.clientId||await this.asyncLoad(),document.querySelector("#jolibox-ads")){console.warn("Ad unit already set, skipping");return}let{el:r,slot:n,adFormat:s,fullWidthResponsive:o,style:i}=t,a;if(!r)throw new Error("targeting element is required");if(typeof r=="string"?a=document.querySelector(r):a=r,!a)throw new Error("targeting element not found");let d=n;if(d||(d=this.unitId),!d)throw new Error("slot is required");let l=typeof s=="object"&&Array.isArray(s)?s.join(", "):s,u=document.createElement("ins");if(u.className="adsbygoogle",u.id="jolibox-ads",u.style.display="block",u.setAttribute("data-ad-client",this.clientId),u.setAttribute("data-ad-slot",d),l&&u.setAttribute("data-ad-format",l),o&&u.setAttribute("data-full-width-responsive",o),i&&u.setAttribute("style",i),this.getTestAdsMode()??!1){let m=document.createElement("div");m.style.position="absolute",m.style.top="0",m.style.left="0",m.style.width="100%",m.style.height="100%",m.style.display="flex",m.style.justifyContent="center",m.style.alignItems="center",m.style.backgroundColor="rgba(0, 0, 0, 0.5)",m.style.color="white",m.innerHTML="Test Ad",u.style.position="relative",a.appendChild(u),u.appendChild(m)}else a.appendChild(u),new MutationObserver(f=>{f.forEach(b=>{if(b.type==="attributes"&&b.attributeName==="data-ad-status"){let _=u.getAttribute("data-ad-status");this.track("AdSenseUnitStatusChanged",{status:_??"null"})}})}).observe(u,{attributes:!0,attributeFilter:["data-ad-status"]}),this.push({})};this.antiCheating=new Ze(n),this.adsActionDetection=new Xe(this.track),this.channelPolicy=new et(r)}init(t){this.track("CallAdsInit",null),!(typeof window>"u")&&(this.config=t??{},window.adsbygoogle=window.adsbygoogle||[],this.asyncInit(t))}};ee();_e();U();var rt=w(),so=()=>{let{data:e}=I("getNetworkStatusSync");return!!e?.isConnected},nt=new tt(M,{get:(e,t)=>K(e,{method:"GET",responseType:"json",appendHostCookie:!0,...t}).then(r=>r.response.data)},so),oo=R("adInit",{implement:e=>{nt.init(e)}}),io=R("adConfig",{implement:e=>{nt.adConfig(e)}}),ao=R("adBreak",{implement:e=>{nt.adBreak(e)}}),co=R("adUnit",{implement:e=>{nt.adUnit(e)}});rt.registerCommand("AdsSDK.init",oo);rt.registerCommand("AdsSDK.adConfig",io);rt.registerCommand("AdsSDK.adBreak",ao);rt.registerCommand("AdsSDK.adUnit",co);g("AdsSDK.init",{version:"1.0.0"});g("AdsSDK.adConfig",{version:"1.0.0"});g("AdsSDK.adBreak",{version:"1.0.0"});g("AdsSDK.adUnit",{version:"1.0.0"});ee();Yr();
1
+ var Tn=Object.create;var Vt=Object.defineProperty;var kn=Object.getOwnPropertyDescriptor;var En=Object.getOwnPropertyNames;var Sn=Object.getPrototypeOf,In=Object.prototype.hasOwnProperty;var h=(e,t)=>()=>(e&&(t=e(e=0)),t);var wn=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var _n=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of En(t))!In.call(e,s)&&s!==r&&Vt(e,s,{get:()=>t[s],enumerable:!(n=kn(t,s))||n.enumerable});return e};var Rn=(e,t,r)=>(r=e!=null?Tn(Sn(e)):{},_n(t||!e||!e.__esModule?Vt(r,"default",{value:e,enumerable:!0}):r,e));function An(e){return!!e?.__nativeBuffers__}function de(e){if(typeof e=="string")try{e=JSON.parse(e)}catch{return{}}if(typeof e!="object"||e===null)return{};if(!An(e))return e;let t=e.__nativeBuffers__;if(delete e.__nativeBuffers__,t)for(let r=0;r<t.length;r++){let n=t[r];if(n){let s;n.value?s=n.value:n.base64&&(s=xn(n.base64)),typeof s<"u"&&s instanceof ArrayBuffer&&(e[n.key]=s)}}return e}function Ht(e={},t=!1){let r=e,n=[];for(let[s,o]of Object.entries(r))if(o!==void 0&&o instanceof ArrayBuffer&&o.byteLength!==void 0){let i=t?{value:o,key:s}:{base64:Cn(o),key:s};n.push(i),delete r[s]}return n.length>0&&(r.__nativeBuffers__=n),r}var xn,Cn,ot=h(()=>{"use strict";xn=e=>{let t=atob(e),r=t.length,n=new Uint8Array(r);for(let s=0;s<r;s++)n[s]=t.charCodeAt(s);return n.buffer};Cn=e=>{let t="",r=new Uint8Array(e),n=r.byteLength;for(let s=0;s<n;s++)t+=String.fromCharCode(r[s]);return btoa(t)}});function On(e){return new Promise(t=>{setTimeout(()=>{t()},e)})}function te(e){return typeof e=="string"}function C(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&!(e instanceof RegExp)&&!(e instanceof Date)}function Gt(e){return typeof e=="object"&&Array.isArray(e)}function Fn(e){return typeof e>"u"}function Dn(e){return Fn(e)||e===null}function zt(e){return typeof e=="function"}function Wt(e){return C(e)&&zt(e.then)}function Yt(e){let t=e,r=null,n=function(...s){return r||(r=new t(...s)),r};return n.prototype=t.prototype,n}function Qt(e,t,r){if(typeof r!="function")throw new Error("[Jolibox SDK]Customizer must be a function");function n(s,o){for(let i in o)if(Object.prototype.hasOwnProperty.call(o,i)){let a=s[i],d=o[i],l=r(a,d,i,s,o);l!==void 0?s[i]=l:Kt(d)&&Kt(a)?s[i]=n({...a},d):Array.isArray(d)&&Array.isArray(a)?s[i]=[...a,...d]:s[i]=d}return s}return n(e,t)}function Kt(e){return e&&typeof e=="object"&&e.constructor===Object}function Xt(e,t){if(Array.isArray(e))return e.concat(t)}function pe(e,t,r={}){let n=null,s,o,i,{leading:a=!1,trailing:d=!0}=r,l=()=>(i=e.apply(o,s),s=void 0,o=void 0,i),u=function(...p){s=p,o=this;let m=a&&!n;if(n&&clearTimeout(n),n=setTimeout(()=>{n=null,d&&!m&&l()},t),m)return l()};return u.cancel=()=>{n&&clearTimeout(n),n=null,s=o=void 0},u.flush=()=>{if(n)return clearTimeout(n),n=null,l()},u}function Ln(e,t){return(...r)=>t(e,...r)}function ke(e){return t=>Ln(t,function(r,...n){if(typeof r=="function")try{return r.apply(this,n)}catch(s){e(new Mn(`${s}`))}})}function ue(e){return(...t)=>{(globalThis.VConsole?.[e]??globalThis.console[e])(...t)}}function Xn(e){return new Promise(t=>lr(e)(t))}function lr(e){return(t,r=null)=>{let n=!1;return e(s=>{if(!n)return n=!0,t.call(r,s)},null)}}function Zn(e,t){return(r=>{let n,s={onWillAddFirstListener(){n=r(o.fire,o)}},o=new me(s);return o.event})((r,n=null)=>e(s=>t(s)&&r.call(n,s),null))}function ts(e,t){let r=Math.min(e.length,t.length);for(let n=0;n<r;n++)rs(e[n],t[n])}function rs(e,t){if(te(t)){if(typeof e!==t)throw new Error(`argument does not match constraint: typeof ${t}`)}else if(zt(t)){try{if(e instanceof t)return}catch{}if(!Dn(e)&&e.constructor===t||t.length===1&&t.call(void 0,e)===!0)return;throw new Error("[Jolibox SDK]argument does not match one of these constraints: arg instanceof constraint, arg.constructor === constraint, nor constraint(arg) === true")}}function w(){if(globalThis[at])return globalThis[at];let e=new be,t=new lt,r={registerCommand(n,s,o){e.registerCommand({id:n,handler:s,metadata:o})},executeCommand(n,...s){return t.executeCommand(n,...s)},excuteCommandSync(n,...s){return t.executeCommandThowErr(n,...s)}};return globalThis[at]=r,r}var $t,Pn,Nn,qt,Y,Un,dt,re,Zt,er,Mn,tr,rr,nr,sr,or,fe,Te,ut,P,ir,jn,mt,Bn,pt,Jn,Vn,ge,Hn,Kn,$n,ar,ft,qn,Gn,zn,cr,T,Wn,Yn,ve,me,Q,ct,Qn,it,es,K,be,lt,at,v=h(()=>{"use strict";$t=Object.defineProperty,Pn=Object.getOwnPropertyDescriptor,Nn=(e,t)=>{for(var r in t)$t(e,r,{get:t[r],enumerable:!0})},qt=(e,t,r,n)=>{for(var s=n>1?void 0:n?Pn(t,r):t,o=e.length-1,i;o>=0;o--)(i=e[o])&&(s=(n?i(t,r,s):i(s))||s);return n&&s&&$t(t,r,s),s};Y=class{constructor(){this.state="pending",this.promise=new Promise((e,t)=>{this.resolve=r=>{this.state==="pending"&&(this.state="fulfilled",e(r))},this.reject=r=>{this.state==="pending"&&(this.state="rejected",t(r))}})}};Un=(e=>(e[e.DEVELOPER_FILE_NOT_FOUND=0]="DEVELOPER_FILE_NOT_FOUND",e[e.INTERNAL_IOS_CAN_NOT_FOUND_PKG=1]="INTERNAL_IOS_CAN_NOT_FOUND_PKG",e[e.USER_IOS_LOAD_TIMEOUT=2]="USER_IOS_LOAD_TIMEOUT",e[e.INTERNAL_IOS_PKG_LOAD_ERROR=3]="INTERNAL_IOS_PKG_LOAD_ERROR",e[e.INTERNAL_IOS_PKG_PARSE_FAIL=4]="INTERNAL_IOS_PKG_PARSE_FAIL",e[e.USER_IOS_GET_EMPTY_DATA=5]="USER_IOS_GET_EMPTY_DATA",e[e.USER_ANDROID_GET_PKG_FAIL=6]="USER_ANDROID_GET_PKG_FAIL",e[e.DEVELOPER_ANDROID_PACKAGE_FILE_UNEXPECTED_REQUIRE=7]="DEVELOPER_ANDROID_PACKAGE_FILE_UNEXPECTED_REQUIRE",e))(Un||{}),dt=class extends Error{constructor(e){if(typeof e=="string"){super(e),this.priority="P1";return}super(e.message),this.priority="P1",this.stack=e.stack,this.raw=e}},re=class extends dt{constructor(){super(...arguments),this.kind="INTERNAL_ERROR"}},Zt=class extends dt{constructor(){super(...arguments),this.kind="USER_ERROR"}},er=class extends Zt{constructor(){super(...arguments),this.name="USER_VALIDATE_ERROR"}},Mn=class extends Zt{constructor(e,t,r){super(e),this.message=e,this.errNo=t,this.name="USER_CUSTOM_ERROR",this.errMsg=e,r&&(this.extra=Object.assign({},this.extra,r))}},tr=class extends re{constructor(){super(...arguments),this.name="INTERNAL_SCHEMA_PARSE_ERROR",this.priority="P0"}},rr=class extends re{constructor(){super(...arguments),this.name="INTERNAL_INVOKE_NATIVE_ERROR"}},nr=class extends re{constructor(e,t,r,n){super(e),this.errNo=t,this.name="INTERNAL_APPLY_NATIVE_ERROR",this.errorType=r,this.errorCode=n}},sr=class extends re{constructor(){super(...arguments),this.name="INTERNAL_JSCORE_ERROR",this.priority="P0"}},or=class extends re{constructor(){super(...arguments),this.name="INTERNAL_GLOBAL_JS_ERROR",this.priority="P1"}},fe=class extends dt{constructor(e,t,r,n,s){super(e),this.message=e,this.code=t,this.kind="API_ERROR",this.name="API_ERROR",r&&(this.errorType=r),n!==void 0&&(this.stack=n),s&&(this.priority=s)}toJSON(){return{message:this.message,stack:this.stack,name:this.name,code:this.code,errorType:this.errorType}}},Te=class extends re{constructor(){super(...arguments),this.name="INTERNAL_METRIC_REPORT_ERROR"}},ut=class extends re{constructor(){super(...arguments),this.name="INTERNAL_REPORTER_ERROR"}};P={log:ue("log"),warn:ue("warn"),info:ue("info"),error:ue("error"),debug:ue("debug")};Object.assign(globalThis,{logger:P});ir=Symbol.for("Jolibox.canIUseMap"),jn={};globalThis[ir]=jn;mt={get config(){return globalThis[ir]}},Bn=(e=>(e[e.System=1e3]="System",e[e.ErrorTrace=1001]="ErrorTrace",e[e.UserDefined=1002]="UserDefined",e))(Bn||{}),pt=(e=>(e.MiniGame="mini-game",e.MiniDrama="mini-drama",e.App="app",e.WebSDK="web-sdk",e.AppSDK="app-sdk",e))(pt||{}),Jn=(e=>(e[e.App=0]="App",e[e.H5=1]="H5",e[e.Weapp=2]="Weapp",e[e.Alipay=3]="Alipay",e[e.Gcash=4]="Gcash",e[e.Dana=5]="Dana",e[e.Umma=6]="Umma",e[e.WebSDK=1e3]="WebSDK",e[e.AppSDK=1001]="AppSDK",e[e.Other=9999]="Other",e))(Jn||{}),Vn=()=>"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)}),ge={isiOS:navigator.userAgent.includes("iPhone")||navigator.userAgent.includes("iPod")||navigator.userAgent.includes("iPad")||navigator.userAgent.includes("iPhone OS"),iosVersion:()=>{let e=navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/);return[parseInt(e[1],10),parseInt(e[2],10),parseInt(e[3]||"0",10)]},isAndroid:navigator.userAgent.includes("Android"),isMac:navigator.userAgent.includes("Mac"),isFacebook:navigator.userAgent.includes("FB_IAB"),isPC:!navigator.userAgent.includes("iPhone")&&!navigator.userAgent.includes("Android")},Hn=()=>ge.isiOS?"iOS":ge.isAndroid?"Android":ge.isMac?"Mac":ge.isFacebook?"Facebook":"PC",Kn="device_id",$n="advertising_id",ar=e=>(localStorage.getItem(e)||localStorage.setItem(e,Vn()),localStorage.getItem(e)),ft=()=>ar(Kn),qn=()=>ar($n),Gn=e=>e.charAt(0).toUpperCase()+e.slice(1),zn=()=>{let e=new URLSearchParams(window.location.search);return Gn(e.get("utm_source")??"")||"JoliboxSDK"},cr=e=>{let t="JoliboxWebSDK",r=Hn(),n=navigator.language,s=ft(),o=qn();return`${t} (${zn()}${r}; UnknownModel; UnknownSystemVersion; ${n}) uuid/${s} adid/${o} version/${e||""}`},T=class ye{static{this.Undefined=new ye(void 0)}constructor(t){this.element=t,this.next=ye.Undefined,this.prev=ye.Undefined}},Wn=class{constructor(){this._first=T.Undefined,this._last=T.Undefined,this._size=0}get size(){return this._size}isEmpty(){return this._first===T.Undefined}clear(){let e=this._first;for(;e!==T.Undefined;){let t=e.next;e.prev=T.Undefined,e.next=T.Undefined,e=t}this._first=T.Undefined,this._last=T.Undefined,this._size=0}unshift(e){return this._insert(e,!1)}push(e){return this._insert(e,!0)}_insert(e,t){let r=new T(e);if(this._first===T.Undefined)this._first=r,this._last=r;else if(t){let s=this._last;this._last=r,r.prev=s,s.next=r}else{let s=this._first;this._first=r,r.next=s,s.prev=r}this._size+=1;let n=!1;return()=>{n||(n=!0,this._remove(r))}}shift(){if(this._first!==T.Undefined){let e=this._first.element;return this._remove(this._first),e}}pop(){if(this._last!==T.Undefined){let e=this._last.element;return this._remove(this._last),e}}_remove(e){if(e.prev!==T.Undefined&&e.next!==T.Undefined){let t=e.prev;t.next=e.next,e.next.prev=t}else e.prev===T.Undefined&&e.next===T.Undefined?(this._first=T.Undefined,this._last=T.Undefined):e.next===T.Undefined?(this._last=this._last.prev,this._last.next=T.Undefined):e.prev===T.Undefined&&(this._first=this._first.next,this._first.prev=T.Undefined);this._size-=1}*[Symbol.iterator](){let e=this._first;for(;e!==T.Undefined;)yield e.element,e=e.next}},Yn=0,ve=class{constructor(e){this.value=e,this.id=Yn++}},me=class{constructor(e){this.options=e,this._size=0}dispose(e){this._disposed||(this._disposed=!0,this._listeners&&(e?(this._listeners instanceof ve&&(this._listeners=[this._listeners]),this._listeners=this._listeners.filter(t=>t?.value===e)):(this._listeners=void 0,this._size=0)),this.options?.onDidRemoveLastListener?.())}get event(){return this._event??=(e,t)=>{if(this._disposed)return()=>{console.info("[Jolibox SDK] Emitter is _disposed")};t&&(e=e.bind(t));let r=new ve(e);this._listeners?this._listeners instanceof ve?this._listeners=[this._listeners,r]:this._listeners.push(r):(this.options?.onWillAddFirstListener?.(this),this._listeners=r,this.options?.onDidFirstListener?.(this)),this.options?.onDidAddListener?.(this),this._size++},this._event}_deliver(e,t){if(!e)return;let r=this.options?.onListenerError||Error.constructor;if(!r){e.value(t);return}try{e.value(t)}catch(n){r(n)}}fire(e){this._listeners&&(this._listeners instanceof ve?this._deliver(this._listeners,e):this._listeners.forEach(t=>this._deliver(t,e)))}hasListeners(){return this._size>0}},Q=class{constructor(){this.listeners=new Map,this.listerHandlerMap=new WeakMap,this.cachedEventQueue=new Map}on(e,t){let r=this.listeners.get(e)??new me,n=o=>t(...o.args);this.listerHandlerMap.set(t,n),r.event(n),this.listeners.set(e,r);let s=this.cachedEventQueue.get(e);if(s)for(;s.size>0;)r.fire({event:e,...s.shift()})}off(e,t){let r=this.listeners.get(e);if(r){let n=this.listerHandlerMap.get(t);r.dispose(n)}}emit(e,...t){let r=this.listeners.get(e);if(r)r.fire({event:e,args:t});else{let n=this.cachedEventQueue.get(e);n||(n=new Wn,this.cachedEventQueue.set(e,n)),n.push({args:t})}}},ct={};Nn(ct,{None:()=>Qn,filter:()=>Zn,once:()=>lr,toPromise:()=>Xn});Qn=()=>{console.log("[Jolibox SDK] None Event")};it=Symbol.for("Jolibox.hostEmitter"),es=()=>{let e=new Q;return globalThis[it]||(globalThis[it]={on:e.on.bind(e),off:e.off.bind(e),emit:e.emit.bind(e)}),globalThis[it]},K=es();be=class{constructor(){this._commands=new Map,this._onDidRegisterCommand=new me,this.onDidRegisterCommand=this._onDidRegisterCommand.event,console.log("[Jolibox SDK] command registry")}registerCommand(e){if(!e)throw new Error("invalid command");if(e.metadata&&Array.isArray(e.metadata.args)){let r=[];for(let s of e.metadata.args)r.push(s.constraint);let n=e.handler;e.handler=function(...s){return ts(s,r),n(...s)}}let{id:t}=e;this._commands.get(t)&&console.info(`[Jolibox SDK] duplicated command is registered ${t}`),this._commands.set(t,e),this._onDidRegisterCommand.fire(t)}getCommand(e){return this._commands.get(e)}getCommands(){let e=new Map;for(let t of this._commands.keys()){let r=this.getCommand(t);r&&e.set(t,r)}return e}};be=qt([Yt],be);lt=class{constructor(){this._onWillExecuteCommand=new me,this.onWillExecuteCommand=this._onWillExecuteCommand.event,this._onDidExecuteCommand=new me,this.onDidExecuteCommand=this._onDidExecuteCommand.event,this.registry=new be,this._starActivation=null}_activateStar(){return this._starActivation||(this._starActivation=On(3e4)),this._starActivation}async executeCommand(e,...t){return this.registry.getCommand(e)?this._tryExecuteCommand(e,t):(await Promise.all([Promise.race([this._activateStar(),ct.toPromise(ct.filter(this.registry.onDidRegisterCommand,r=>r===e))])]),this._tryExecuteCommand(e,t))}executeCommandThowErr(e,...t){if(!this.registry.getCommand(e))throw new Error(`command '${e}' not found`);let r=this.registry.getCommand(e);this._onWillExecuteCommand.fire({commandId:e,args:t});let n=this.invokeFunction(r.handler,...t);return this._onDidExecuteCommand.fire({commandId:e,args:t}),n}_tryExecuteCommand(e,t){let r=this.registry.getCommand(e);if(!r)return Promise.reject(new Error(`command '${e}' not found`));try{this._onWillExecuteCommand.fire({commandId:e,args:t});let n=this.invokeFunction(r.handler,...t);return this._onDidExecuteCommand.fire({commandId:e,args:t}),Promise.resolve(n)}catch(n){return Promise.reject(n)}}invokeFunction(e,...t){let r=!1;try{return e(...t)}finally{r=!0}}};lt=qt([Yt],lt);at=Symbol.for("Jolibox.commands")});function A(e,t={}){ht.emit("ERROR_REPORT",{error:e,options:t})}var ht,ne,L=h(()=>{"use strict";v();v();ht=new Q,ne=new Q;A.debounce=pe(A,50,{leading:!0})});function Ee(e,t){return`[${e}]:${t}`}var se,gt,X=h(()=>{"use strict";L();v();L();se=(e,t)=>new fe(t?.errMsg??e.msg??"",e.code,e.type),gt=e=>new er(e)});var dr,ur,mr,pr=h(()=>{"use strict";dr=[],ur=[],mr=["env","createRequestTask","login"]});function hr(e,t){fr||(vt=new oe({eventName:"jolibox_invoke",tagNameOrder:["status","method","errNo","errMsg","isForeground"],metricName:"duration",reporter(s){e.invoke("track",JSON.stringify({event:"reportMetrics",data:s}),-1)}}),yt=new oe({eventName:"jolibox_invoke_js2native",tagNameOrder:["status","method","isForeground"],metricName:"duration",reporter(s){e.invoke("track",JSON.stringify({event:"reportMetrics",data:s}),-1)}}),bt=new oe({eventName:"jolibox_invoke_native2js",tagNameOrder:["status","method","isForeground"],metricName:"duration",reporter(s){e.invoke("track",JSON.stringify({event:"reportMetrics",data:s}),-1)}}),t("onJoliboxEnterBackground",()=>{vt.flush(),yt.flush(),bt.flush()}),fr=!0);function r(s){let{method:o,args:i,startTime:a,isForeground:d,errMsg:l=`${o}:fail no errMsg`,errNo:u=0,__timing:p={receiveJSInvoke:0,invokeCallback:0}}=s,{receiveJSInvoke:m,invokeCallback:f}=p,b=l.match(/\S:(\S+)\s?/)?.[1]??"fail";vt.report({status:b,method:n(o,i),errNo:`${u}`,errMsg:l,isForeground:d,duration:Date.now()-a}),a&&m&&f&&(yt.report({status:b,method:o,isForeground:d,duration:Number((m-a).toFixed(3))}),bt.report({status:b,method:o,isForeground:d,duration:Number((Date.now()-f).toFixed(3))}))}function n(s,o){return(s==="callHostMethod"||s==="callHostMethodSync")&&o?.method?`${s}-${o.method}`:s}return r}var ns,oe,fr,vt,yt,bt,Tt=h(()=>{"use strict";v();ns=e=>e==="pv"?e:"default",oe=class{constructor(t){this.interval=30;this.lastReportTime=0;this.cache={};let{reporter:r,interval:n=30,eventName:s,tagNameOrder:o,metricName:i,type:a}=t;this.reporter=r,this.interval=n,this.eventName=s,this.tagNameOrder=o,this.metricName=i,this.type=ns(a)}report(t){this.type==="pv"?this.addPVPoint(t):this.addPoint(t),this.tryReport(!1)}flush(){this.tryReport(!0)}tryReport(t){if(Object.keys(this.cache).length){if(t){this.reporter(this.processPoints(this.cache)),this.clearPoints();return}this.lastReportTime=this.lastReportTime||Date.now(),Date.now()-this.lastReportTime>=this.interval*1e3&&(this.reporter(this.processPoints(this.cache)),this.clearPoints(),this.lastReportTime=Date.now())}}addPoint(t){let r=(n,s,o,i)=>{let a=s.shift();if(a){let d=i[a];n[d]||(n[d]={}),r(n[d],s,o,i)}else n[o]||(n[o]=[]),n[o].push(i[o])};r(this.cache,[...this.tagNameOrder],this.metricName,t)}addPVPoint(t){let r=(s,o,i,a)=>{let d=o.shift();if(!d&&C(a))throw new Te(`report value failed to match tagNameOrder, ${JSON.stringify(n)}`);if(d){let l=[];if(C(a))l.push(...Object.keys(a));else if(te(a)){if(o.length>0)throw new Te(`report value failed to match tagNameOrder, ${JSON.stringify(n)}`);l.push(a)}else throw new Te(`expected metric value to be a string, but got a(n) ${typeof a}, ${JSON.stringify(n)}`);l.forEach(u=>{s[u]||(s[u]={});let p=C(a)?a[u]:a;r(s[u],[...o],i,p)})}else s[i]?s[i]++:s[i]=1},n={point:t,metricName:this.metricName,tagNameOrder:this.tagNameOrder};r(this.cache,[...this.tagNameOrder],this.metricName,t)}processPoints(t){return{eventName:this.eventName,tagNameOrder:this.tagNameOrder,metricName:this.metricName,metricAggregateType:this.type==="pv"?"itoa":"arr",data:t}}clearPoints(){this.cache={}}},fr=!1});function vr(e,t){let r=0,n=!0,s=new Map,o=hr(e,t);t("onJoliboxEnterBackground",()=>{n=!1}),t("onJoliboxEnterForeground",()=>{n=!0,kt.forEach(async({method:l,args:u,resolve:p})=>{let m=await a(l,u);p(m)}),kt.length=0});let i=(l,u)=>{P.info("----resolveId",l,u);let p=s.get(Number(l));if(!p)return;let m=de(u);p(m),s.delete(Number(l))},a=(l,u)=>{let p=Date.now(),m=`${n}`;r+=1;let f=new Y;if(s.set(r,f.resolve),!n&&ur.includes(l))return new Promise(x=>{kt.push({method:l,args:u,resolve:x})});let R={...{method:l,startTime:p,args:u,isForeground:m},invokeType:"js-bridge"},N=!ss&&dr.includes(l),z=Ht(u,N),W=N?z:JSON.stringify(z),k;if(l.endsWith("Sync")||mr.includes(l)?k=e.call?.(l,z,r):typeof W=="string"?(console.log("-----params",l,r),k=e.invoke(l,W,r)):k=e.call?.(l,W,r),k){try{typeof k=="string"&&(k=JSON.parse(k)),k=de(k)}catch(x){P.error(x)}return s.delete(r),k.errorCode&&(k.errorCode=Ee(l,k.errorCode)),o({...R,...k}),k}return l.endsWith("Sync")&&s.delete(r),f.promise.then(x=>(x.errorCode&&(x.errorCode=Ee(l,x.errorCode)),o({...R,...x}),x))};return{invokeNative:a,applyNative:(l,u)=>{let p=a(l,u);return Wt(p)?p.then(m=>gr(l,m)):gr(l,p)},invokeHandler:i}}function gr(e,t){if(!C(t)){P.warn(`[Jolibox SDK]${e} no response value`);return}let{errMsg:r,errNo:n,errorType:s,errorCode:o,...i}=t;if(r&&r!==`${e}:ok`)throw new nr(r,n,s,o);return i}var kt,ss,yr=h(()=>{"use strict";ot();v();X();pr();Tt();kt=[],ss=!1});function br(e){let t=new Q,r=new oe({eventName:"jolibox_publish",tagNameOrder:["type","event"],metricName:"duration",reporter(n){e.invoke("track",JSON.stringify({event:"reportMetrics",data:n}),-1)}});return t.on("onJoliboxEnterBackground",()=>{r.flush()}),{onNative:t.on.bind(t),offNative:t.off.bind(t),subscribeHandler(n,s,o){let i=de(s),a;if(i.__extra){a=i.params;let{type:d,startTime:l}=i.__extra;r.report({type:d,event:n,duration:Date.now()-l})}else a=i;t.emit(n,a,o)}}}var Tr=h(()=>{"use strict";v();ot();Tt()});function Et(e){let{subscribeHandler:t,onNative:r,offNative:n}=br(e),{invokeNative:s,invokeHandler:o,applyNative:i}=vr(e,r);return{invokeHandler:o,subscribeHandler:t,applyNative:i,invokeNative:s,onNative:r,offNative:n}}var kr=h(()=>{"use strict";yr();Tr()});var Er=h(()=>{"use strict"});var Sr=h(()=>{"use strict";kr();Er()});var Z,j,Ir,wr=h(()=>{"use strict";v();L();j={trigger(){},exit(){return!1},onReady(e){j.trigger=e},doExit(e){j.exit=e}},Ir=()=>{let e=window.prompt("invoke",JSON.stringify({event:"envSync",paramsString:JSON.stringify({})}));if(!e)A(new rr("native env failed"));else{let{data:t}=JSON.parse(e);return t??void 0}};if(window.webkit){let e=window.webkit.messageHandlers,t=(s="")=>{j.trigger(),e.onDocumentReady.postMessage({path:s})};Z={onDocumentReady:t,doExit:s=>{let o=j.exit();e.doExit.postMessage({uuid:s,shouldInterrupt:o})},invoke(s,o,i){e.invoke.postMessage({event:s,paramsString:o,callbackId:i})},call(s,o,i){let a=window.prompt("invoke",JSON.stringify({event:s,paramsString:JSON.stringify(o),callbackId:i}));if(a)return JSON.parse(a)}};let n={onDocumentReady:t,env:Ir};globalThis.joliboxJSCore={...n}}if(window.JoliAndroidSDKBridge){let e=window.JoliAndroidSDKBridge,t=(s="")=>{j.trigger(),e.onDocumentReady(JSON.stringify({path:s}))};Z={onDocumentReady:t,invoke(s,o,i){e.invoke(JSON.stringify({event:s,paramsString:o,callbackId:i}))},doExit:s=>{let o=j.exit();e.doExit(JSON.stringify({uuid:s,shouldInterrupt:o}))},call(s,o,i){let a=window.prompt("invoke",JSON.stringify({event:s,paramsString:JSON.stringify(o),callbackId:i}));if(a)return JSON.parse(a)}};let n={onDocumentReady:t,env:Ir};globalThis.joliboxJSCore={...n}}});function St(e,t){return{params:e,__extra:{startTime:Date.now(),type:t}}}var It=h(()=>{"use strict"});function wt(){globalThis.onmessage=function(e){e.data==="msg:setup"&&([ie]=e.ports,ie.onmessage=function(t){let r=JSON.parse(t.data);r[0]==="publish"?globalThis.ttJSBridge.subscribeHandler(r[1],r[2]):r[0]==="invoke"&&globalThis.ttJSBridge.invokeHandler(r[1],r[2])},ie.publish=function(t,r){let n=St(r,"messagePort");ie.postMessage(JSON.stringify(["publish",t,JSON.stringify(n)]))},ie.postMessage("msg:setup:ok"))}}var ie,_r=h(()=>{"use strict";It()});var Se=h(()=>{"use strict";wr();_r();It()});var Ar,os,xr,Rr,O,I,V,wi,is,U=h(()=>{"use strict";Sr();Se();X();v();Se();Ar=Z;if(!Ar)throw new sr("No joliboxJScore is found, native bridge not found.");wt();os={...Ar},xr=Et(os),{invokeHandler:Rr}=xr,{applyNative:O,invokeNative:I,onNative:V,offNative:wi,subscribeHandler:is}=xr;globalThis.joliboxJSBridge={callHandler:Rr,invokeHandler:Rr,subscribeHandler:is}});var _t,Cr,Pr=h(()=>{"use strict";v();L();_t=e=>{let t=e.replace(/-/g,"+").replace(/_/g,"/"),r=t.length%4===0?"":"=".repeat(4-t.length%4),n=atob(t+r);try{return JSON.parse(n)}catch{return{}}},Cr=e=>{try{let n=new URL(e).searchParams.get("joliSource")?.split(".");if(n?.length){let[s,o,i]=n;return{headerJson:_t(s),payloadJson:_t(o),signature:_t(i)}}else throw"joli_source is missing"}catch(t){return A(new tr(`${e} not a valid schema: ${t}`)),{headerJson:{},payloadJson:{},signature:{}}}}});var as,Ie,Nr,Rt=h(()=>{"use strict";v();as="1.1.6-beta.3",Ie=()=>as,Nr=()=>{let e=Ie();return`${cr(e)}`}});var cs,ls,F,ds,y,B=h(()=>{"use strict";v();Pr();Rt();v();cs={deviceInfo:{brand:"UnknownBrand",model:"UnknownModel",did:ft(),pixelRatio:window.devicePixelRatio||1,platform:"h5",system:"UnknownSystemVersion",lang:"zh"},sdkInfo:{nativeSDKVersion:"",jssdkVersion:Ie()},schema:window.location.href,platform:"h5"},ls=globalThis.joliboxJSCore?.env,F=Object.assign({},ls?.()??cs),ds=()=>{let{payloadJson:e,headerJson:t}=F.schema.length?Cr(F.schema):{},r=`${F.deviceInfo.did}-${new Date().getTime()}`,s=new URL(F.schema.length?F.schema:window.location.href).searchParams,o=s.get("mpId")??s.get("appId")??s.get("gameId")??"",i=e?.sessionId??s.get("sessionId")??r,a=!!(e?.testAdsMode??s.get("testAdsMode")==="true"),d=e?.joliboxEnv??s.get("joliboxEnv")??"production",l=d==="staging",u=t?.channel;return{get testMode(){return l},get testAdsMode(){return a},get joliboxEnv(){return d},get joliSource(){return s.get("joliSource")??null},get mpId(){return o??e?.id??""},get mpVersion(){return t?.ver??Ie()},get platform(){return F.platform??F.deviceInfo.platform},get deviceInfo(){return F.deviceInfo},get sdkInfo(){return F.sdkInfo},get hostInfo(){return F.hostInfo},get hostUserInfo(){return F.hostUserInfo},get sessionId(){return F.clientSessionId??i??r},get channel(){return u},onEnvConfigChanged:p=>{Qt(F,p,Xt)}}},y=ds()});var At,Fr,us,ms,Or,ps,Dr=h(()=>{"use strict";v();L();B();v();At=!1,Fr=(e,t)=>e==null?!1:t in e,us=e=>Fr(e,"kind"),ms=e=>{let t=e.toLowerCase().split("_");return t[0]+t.slice(1).map(r=>r.charAt(0).toUpperCase()+r.slice(1)).join("")},Or=(e,t={},r)=>{let s={...{user_id:y.hostUserInfo?.uid??"",device_id:y.deviceInfo.did??"",timestamp:Date.now(),tag:ms(e.name)},env:t.environment,isFromUser:r};r?ne.emit("GLOBAL_USER_ERROR",e,s):ne.emit("GLOBAL_ERROR",e,s)},ps=e=>Fr(e,"kind")&&e.kind==="USER_ERROR";ht.on("ERROR_REPORT",({error:e,options:t})=>{if(At)return;At=!0;let r=us(e)&&e.raw?e.raw:e;try{let n=ps(e);Or(e,t,n)}catch(n){let s=n instanceof Error?n.message:String(n),o=new ut(`${s}, origin error: ${r.message}`);P.error(o),Or(new ut(o.message),{environment:t.environment},!1)}finally{At=!1}})});var Ur=h(()=>{"use strict";Dr();X();v();U();ne.on("GLOBAL_ERROR",(e,t)=>{let r={message:e.message,stack:e.stack??"",errorType:e.name,source:0};I("trackAsync",{event:"reportJsError",data:r})});ne.on("GLOBAL_USER_ERROR",(e,t)=>{P.log("UserError",e,t)})});var xt=h(()=>{"use strict"});function Mr(e,t){let r=(n,s,o)=>{let i={tag:n,...t,extra:{...s}};n=="globalJsError"?A(new or(JSON.stringify(i))):e("systemLog",i,o)};return r.debounce=pe(r,500,{leading:!0}),r}function Lr(e){let t=(r,n,s)=>{let o=(s&&JSON.stringify(s))??0,i={speed_value_type:r,total_duration:n};o&&Object.assign(i,{extra:o}),e("joliboxSpeedAnalysis",i)};return t.debounce=pe(t,500,{leading:!0}),t}var jr=h(()=>{"use strict";v();v();L()});function Br(e,t){let r=Mr(e,t),n=Lr(r);return{track:r,trackPerformance:n}}var Jr=h(()=>{"use strict";jr()});var Vr=h(()=>{"use strict";B();v();v()});var Hr=h(()=>{"use strict";Jr();xt();Vr()});var we,Kr=h(()=>{"use strict";we=class{constructor(t,r){this.eventEmitter=t;this.lastReportTime=0;this.visible=!0;this.timer=this.createRAFTimer(t=>{this.reporter({event:"PLAY_GAME",params:{duration:t}}),this.tracker("PlayGame",{duration:t})});this.interval=r??5*1e3,t.on("visible",n=>{this.visible=n})}start(t){this.reporter({event:"OPEN_GAME",params:{timestamp:Date.now(),duration:t??0}}),this.tracker("OpenGame",{duration:t??0}),this.timer.start()}close(t){this.reporter({event:"CLOSE_GAME",params:{timestamp:Date.now(),duration:t}}),this.tracker("CloseGame",{duration:t}),this.timer.stop()}createRAFTimer(t){let r=Date.now(),n,s,o=!1,i=0,a=()=>{if(!o)return;let f=Date.now(),b=f-r;b>=this.interval&&(this.visible&&(i+=b,t(i)),r=f),n=requestAnimationFrame(a)},d=()=>{u(),r=Date.now(),s=window.setInterval(()=>{if(!o)return;let f=Date.now();f-r>=this.interval&&(r=f)},this.interval)},l=()=>{p(),r=Date.now(),n=requestAnimationFrame(a)},u=()=>{n&&(cancelAnimationFrame(n),n=0)},p=()=>{s&&(clearInterval(s),s=0)};this.eventEmitter.on("visible",f=>{o&&(console.log("visible",f),f?l():d())});let m=this.visible;return{start(){o||(o=!0,m?l():d())},stop(){o=!1,u(),p()}}}}});var Ct=h(()=>{"use strict"});function qr(e,t,r){let{response:n,startTime:s,endTime:o,requestFrom:i}=r,{errMsg:a="",profile:d={}}=n,u={duration:o-s,request_type:e,url:t.split("?")[0],result:r.state,error_msg:r.state==="fail"?a:"",socket_reused:d.socketReused?1:0,request_from:i};(i==="public"&&$r<hs||i==="inner")&&(u.joli_request_number=$r++,setTimeout(()=>{M("joliboxNetRequestResult",u)},500))}var $r,hs,Gr=h(()=>{"use strict";Ct();ee();$r=0,hs=10});function _e(e,t,r){let n=new Map,s=r?.baseUrl??"https://api.jolibox.com",o=r?.type??"public",i=r?.defaultHeaders??{};return V("onRequestTaskStateChange",d=>{if(typeof d.requestTaskId!="string")return;let l=n.get(d.requestTaskId);if(l)if(d.state==="success"){let{requestTaskId:u,state:p,...m}=d;l.resolve(m),n.delete(u)}else if(d.state==="fail"){let{requestTaskId:u,state:p,...m}=d;l.reject(m),n.delete(u)}else P.warn("onRequestTaskStateChange unknown event",d)}),K.on("onLoginComplete",({isLogin:d,token:l})=>{d&&l&&(i["X-JOLI-TOKEN"]=l)}),async(d,l={})=>{let u=Date.now(),p=gs(d,{...l,baseUrl:s}),{method:m="GET",responseType:f="text",dataType:b="json",timeout:R,enableCache:N=!1,appendHostCookie:z=!0}=l,W=Object.assign({"content-type":"application/json"},i,l.header),k={url:p,method:m,header:W,enableCache:N,responseType:f,appendHostCookie:z};if(m=="POST"||m=="PUT"){let J=ys(l.data,W["content-type"]);k.data=J}R&&Object.assign(k,{timeout:R});let{data:{requestTaskId:x}}=I(e,k);if(typeof x!="string")throw se({code:-1,msg:"requestTaskId is not a string"});let le=(J,H)=>{qr("request",p,{state:J,startTime:u,endTime:Date.now(),params:k,response:H,requestId:x,requestFrom:o=="public"?"public":"inner"})},{resolve:st,reject:hn,promise:gn}=new Y;n.set(x,{resolve:st,reject:hn});try{let J=await gn;le("success",J);let{data:H}=J;return b==="json"&&typeof H=="string"&&(H=vs(H)),{url:p,timeout:R,method:m,response:{...J,data:H}}}catch(J){let H=J;if(C(H)){let{errMsg:he,prefetchDetail:vn,isPrefetch:yn,errNo:bn}=H;te(he)&&(le("fail",{errMsg:he,isPrefetch:yn,prefetchDetail:vn}),A(se({code:-1,msg:he},{errNo:bn,errMsg:he})))}throw J}}}function vs(e){try{return JSON.parse(e.trim())}catch{return e}}function ys(e,t="application/json"){let r=t.toLowerCase();return e===void 0?"":typeof e=="string"||e instanceof ArrayBuffer?e:r.includes("application/x-www-form-urlencoded")||r.includes("application/json")||typeof e=="object"?JSON.stringify(e):String(e)}var gs,Pt=h(()=>{"use strict";v();Gr();Ct();U();L();X();gs=(e,t)=>{if(/^https?:\/\//.test(e))return e;let r=t?.query,s=new URLSearchParams(r).toString();return t?.baseUrl?`${t.baseUrl}${e}${s?`?${s}`:""}`:`${e}${s?`?${s}`:""}`}});var Nt,$,Re=h(()=>{"use strict";Rt();Pt();B();Nt={"x-user-agent":Nr()};y.hostUserInfo?.token&&(Nt["x-joli-token"]=y.hostUserInfo.token);y.joliSource&&(Nt["x-joli-source"]=y.joliSource);$=_e("createRequestTaskSync","operateRequestTaskSync",{type:"inner",baseUrl:y.testMode?"https://stg-api.jolibox.com":"https://api.jolibox.com",defaultHeaders:Nt})});var Ae,zr=h(()=>{"use strict";B();Kr();Re();U();Ae=class extends we{constructor(t,r,n){super(r,n),this.gameId=y.mpId,this.sessionId=y.sessionId,this.track=t}async reporter(t){let{event:r,params:n}=t,s=[];s.push($("/api/base/app-event",{method:"POST",data:{eventType:r,gameInfo:{gameId:this.gameId,sessionId:this.sessionId,...n}}})),await Promise.all(s)}async reportToNative(t){let{event:r,params:n}=t;await O("userTrackAsync",{event:r,params:{...n},gameId:this.gameId})}tracker(t,r=null){this.track(t,r)}}});var bs,M,Ts,Wr,xe,D,ee=h(()=>{"use strict";Ur();v();xt();Hr();B();zr();U();bs=(e,t,r)=>{let n=t,o={...C(n.extra)?n.extra:te(n.extra)?JSON.parse(n.extra):{},mp_id:n.mp_id??"",mp_version:n.mp_version??""};I("trackAsync",{event:e,data:o,webviewId:r})},{track:M,trackPerformance:Ts}=Br(bs,{type:pt.AppSDK,platform:"native",jssdk_version:y.sdkInfo?.jssdkVersion??"1.0.0",mp_id:y.mpId,mp_version:y.mpVersion}),Wr=w();Wr.registerCommand("ReportSDK.traceSystemTimeline",({event:e,duration:t,extra:r})=>{Ts(e,t,r)});Wr.registerCommand("ReportSDK.traceSystem",({event:e,info:t})=>{M(e,t)});xe=new Q,D=new Ae(M,xe)});function Zr(e){let t=mt.config[e];return t||(t={},mt.config[e]=t),(r,n)=>{if(t[r]){P.warn(`[can i use] ${r} already registered`);return}t[r]={...n}}}var en=h(()=>{"use strict";v()});function Ot(e){tn=e}function Pe(e){return e===null||typeof e!="object"?e:Array.isArray(e)?e.map(t=>Pe(t)):Object.keys(e).reduce((t,r)=>(t[r]=Pe(e[r]),t),{})}function q(e){return typeof e=="number"}function Ft(e){let t=Dt(e);switch(t){case"string":return`"${e}"`;case"number":case"boolean":case"null":case"undefined":return String(e);default:return`a(n) ${t}`}}function Dt(e){return typeof e=="function"?"function":Object.prototype.toString.call(e).slice(8).slice(0,-1).toLowerCase()}var tn,E,Ne,Oe,Fe,De,ae,Ue,Me,Le,je,Be,Je,Ve,He,Ke,$e,qe,Ge,Ut=h(()=>{"use strict";tn=!1;E=class{constructor(){this.errors=[];this.hasFallback=!1;this.hasDefault=!1;this._optional=!1}fail(t){if(tn)if(typeof t=="string")this.errors.push(t);else{let r=`${this.path} should be ${t.expect}`;this._optional&&t.expect!=="undefined"?r+=" or undefined, ":r+=", ",r+=`but got ${Ft(t.actual)}`,this.errors.push(r)}return!1}fallback(t){return this.hasFallback=!0,this._fallback=t,this}get fallbackValue(){return Pe(this._fallback)}default(t){return this.hasDefault=!0,this._default=t,this}get defaultValue(){return typeof this._default=="function"?this._default:Pe(this._default)}optional(){return this._optional=!0,this}};Ne=class extends E{validate(t){return this._optional&&t===void 0?!0:q(t)?q(this._min)&&t<this._min?this.fail(`the value of ${this.path} should be greater than or equal to ${this._min}`):q(this._max)&&t>this._max?this.fail(`the value of ${this.path} should be less than or equal to ${this._max}`):q(this._greater)&&t<=this._greater?this.fail(`the value of ${this.path} should be greater than ${this._greater}`):this._isInt&&t!==Math.floor(t)?this.fail(`the value of ${this.path} should be integer but got ${t}`):!0:this.fail({expect:"number",actual:t})}min(t){return this._min=t,this}max(t){return this._max=t,this}isInt(t){return this._isInt=t,this}greater(t){return this._greater=t,this}},Oe=class extends E{validate(t){return this._optional&&t===void 0?!0:typeof t!="boolean"?this.fail({expect:"boolean",actual:t}):!0}},Fe=class extends E{validate(t){if(this._optional&&t===void 0)return!0;if(typeof t!="string")return this.fail({expect:"string",actual:t});if(q(this._maxLength)&&t.length>this._maxLength)return this.fail(`the length of ${this.path} should be less than or equal to ${this._maxLength}`);if(q(this._minLength)&&t.length<this._minLength)return this.fail(`the length of ${this.path} should be greater than or equal to ${this._minLength}`);if(typeof this._pattern=="string"){if(!new RegExp(this._pattern).test(t))return this.fail(`${this.path} should match pattern "${this._pattern}"`)}else if(this._pattern&&!this._pattern.test(t))return this.fail(`${this.path} should match pattern "${this._pattern.toString()}"`);return!0}minLength(t){return this._minLength=t,this}maxLength(t){return this._maxLength=t,this}pattern(t){return this._pattern=t,this}},De=class extends E{validate(t){return this._optional&&t===void 0?!0:typeof t!="symbol"?this.fail({expect:"symbol",actual:t}):!0}},ae=class extends E{validate(t){return!0}},Ue=class extends E{validate(t){return t!==void 0?this.fail({expect:"undefined",actual:t}):!0}},Me=class extends E{validate(t){return this._optional&&t===void 0?!0:t!==null?this.fail({expect:"null",actual:t}):!0}},Le=class extends E{validate(t){return this._optional&&t===void 0?!0:typeof t!="function"?this.fail({expect:"function",actual:t}):!0}},je=class extends E{constructor(...t){super(),this._items=t}validate(t){if(this._optional&&t===void 0)return!0;if(!this._items.includes(t)){let r=this._items.map(n=>JSON.stringify(n)).join(", ");return this.fail(`expect ${this.path} to be one of ${r}, but got ${Ft(t)}`)}return!0}},Be=class extends E{constructor(r){super();this._item=r}validate(r){if(this._optional&&r===void 0)return!0;if(!Array.isArray(r))return this.fail({expect:"array",actual:r});if(q(this._minItems)&&r.length<this._minItems)return this.fail(`the length of ${this.path} should be greater than or equal to ${this._minItems}`);if(q(this._maxItems)&&r.length>this._maxItems)return this.fail(`the length of ${this.path} should be less than or equal to ${this._maxItems}`);if(q(this._length)&&r.length!==this._length)return this.fail(`the length of ${this.path} should be equal to ${this._length}`);let n=this._item;if(!n)return!0;let s=!0;if(r.forEach((o,i)=>{if(n.path=`${this.path}[${i}]`,n.errors=this.errors,o===void 0&&n.hasDefault){r[i]=n.defaultValue;return}n.validate(o)||(n.hasFallback?r[i]=n.fallbackValue:s=!1)}),this._uniqueItems){let o=new Map;for(let i in r)o.has(r[i])?s=this.fail(`${this.path} should NOT have duplicate items (${this.path}[${o.get(r[i])}] and ${this.path}[${i}] are identical)`):o.set(r[i],i)}return s}minItems(r){return this._minItems=r,this}maxItems(r){return this._maxItems=r,this}uniqueItems(){return this._uniqueItems=!0,this}length(r){return this._length=r,this}},Je=class extends E{constructor(r){super();this._value=r}validate(r){if(this._optional&&r===void 0)return!0;if(Dt(r)!=="object")return this.fail({expect:"object",actual:r});let s=r,o=this._value;o.errors=this.errors;let i=!0;for(let a in s){let d=s[a];if(/^[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*$/.test(a)?o.path=`${this.path}.${a}`:o.path=`${this.path}["${a}"]`,!(d===void 0&&o._optional)){if(d===void 0&&o.hasDefault){s[a]=o.defaultValue;continue}o.validate(d)||(o.hasFallback?s[a]=o.fallbackValue:i=!1)}}return i}},Ve=class extends E{constructor(r={}){super();this._object=r}validate(r){if(this._optional&&r===void 0)return!0;if(Dt(r)!=="object")return this.fail({expect:"object",actual:r});let n=r,s=!0;for(let o in this._object){let i=n[o],a=this._object[o];if(a.errors=this.errors,/^[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*$/.test(o)?a.path=`${this.path}.${o}`:a.path=`${this.path}["${o}"]`,!(a._optional&&i===void 0)){if(i===void 0&&a.hasDefault){n[o]=a.defaultValue;continue}a.validate(i)||(a.hasFallback?n[o]=a.fallbackValue:s=!1)}}return s}},He=class extends E{constructor(r){super();this.value=r}validate(r){return r===void 0&&this._optional?!0:r!==this.value?this.fail({expect:Ft(this.value),actual:r}):!0}},Ke=class extends E{constructor(...t){super(),this._items=t}validate(t){if(t===void 0&&this._optional)return!0;let r=[],n=!1,s=this._items.length;for(let o=0;o<s;o++){let i=this._items[o];if(i.errors=[],i.path=this.path,!i.validate(t))r.push(i.errors.join("; "));else if(!n){n=!0;break}}if(!n){let o=r.join(`
2
+ or `);this.errors.push(o)}return n}},$e=class extends E{constructor(...t){super(),this._items=t;let r=0,n=t.length-1;for(;n>=0;n--){let s=t[n];if(s._optional||s.hasDefault)r+=1;else break}this._minItems=t.length-r}validate(t){if(t===void 0&&this._optional)return!0;if(!Array.isArray(t))return this.fail({expect:"array",actual:t});if(t.length<this._minItems)return this.fail(`the length of ${this.path} should be greater than or equal to ${this._minItems}`);let r=!0;return this._items.forEach((n,s)=>{if(n.path=`${this.path}[${s}]`,n.errors=this.errors,t[s]===void 0&&n.hasDefault){t[s]=n.defaultValue;return}n.validate(t[s])||(n.hasFallback?t[s]=n._fallback:r=!1)}),r}},qe=class extends E{validate(t){return t===void 0&&this._optional||t instanceof ArrayBuffer?!0:this.fail({expect:"arraybuffer",actual:t})}},Ge=class extends E{constructor(t){super(),this._ctor=t}validate(t){return t===void 0&&this._optional||t instanceof this._ctor?!0:this.fail({expect:`typedarray of ${this._ctor.name}`,actual:t})}}});function Mt(e,t,r="param"){if(e.errors=[],e.path=r,Ot(!0),!e.validate(t)){let n=e.errors.join(`
3
+ `);throw e.errors.length=0,Ot(!1),new TypeError(n)}}var c,Lt=h(()=>{"use strict";Ut();Ut();c={object(e){return new Ve(e)},array(e){return new Be(e)},tuple(...e){return new $e(...e)},literal(e){return new He(e)},or(...e){return new Ke(...e)},symbol(){return new De},record(e){return new Je(e)},function(){return new Le},boolean(){return new Oe},string(){return new Fe},number(){return new Ne},undefined(){return new Ue},null(){return new Me},unknown(){return new ae},any(){return new ae},as(){return new ae},arraybuffer(){return new qe},enum(...e){return new je(...e)},typedarray(e){return new Ge(e)}}});var ze,rn,nn=h(()=>{"use strict";v();L();Lt();X();ze=1,rn=e=>{function t(n,s){return(...o)=>{let i=Date.now(),a={method:n,trace_id:ze};ze+=1;let d="SUCCESS",l=`${n}:ok`,u=0;try{if(s.paramsSchema)try{Mt(s.paramsSchema,o,"params")}catch(b){throw gt(`${n}:fail ${b.message}`)}let p=s.implement(...o),m=p,f=`${n}:ok`;if(p&&"code"in p){let{code:b,data:R,message:N}=p;d=b,m=R,f=N}return{code:d,message:f,data:m}}catch(p){let m=p;u=m.code??m.errNo??2e3,d="FAILURE";let f=m.message??m.errMsg??`${p}`;return l=`${n}:${d} ${f.replace(/^\S+:(fail|cancel)\s?/,"")}`,A(new fe(l,u)),{code:d,message:l}}finally{let p=Date.now()-i;e("apiInvoked",{...a,duration:p,status:d})}}}function r(n,s){return async(...o)=>{let i=Gt(o)?o:[o],a=Date.now(),d={method:n,trace_id:ze};ze+=1;let l=`${n}:ok`,u="SUCCESS",p={code:u,message:l};try{if(s.paramsSchema)try{Mt(s.paramsSchema,i,"params")}catch(b){throw gt(b.message)}let f=await s.implement(...i);if(f&&"code"in f){let{code:b,data:R,message:N}=f;u=b,l=N,f=R}return Object.assign(p,{code:u,message:l,data:f}),p}catch(m){let f=m,b=f.code??f.errNo??2e3;u="FAILURE";let R=f.message??f.errMsg??`${m}`,N=`${n}:${u} ${R.replace(/^\S+:(fail|cancel)\s?/,"")}`;return Object.assign(p,{code:u,message:N}),A(new fe(N,b)),p}finally{let m=Date.now()-a;e("apiInvoked",{...d,duration:m,status:u})}}}return{createAPI:r,createSyncAPI:t}}});var S,_,g,G=h(()=>{"use strict";en();ee();nn();Lt();({createAPI:S,createSyncAPI:_}=rn(M)),g=Zr("native")});var an=wn(on=>{"use strict";v();G();L();U();ee();var As="exitGame",xs="onReady",Cs="onJoliboxShow",Ps="onJoliboxHide",We=w(),Ye=ke(A),Ns=S(As,{paramsSchema:c.tuple(c.function()),implement:async e=>{Ye(e).call(on),await O("exitAppAsync")}}),Os=_(Cs,{paramsSchema:c.tuple(c.function()),implement(e){let t=Ye(e);V("onJoliboxEnterForeground",()=>{t.call(this),xe.emit("visible",!0)})}}),Fs=_(Ps,{paramsSchema:c.tuple(c.function()),implement(e){let t=Ye(e);V("onJoliboxEnterBackground",()=>{t.call(this),xe.emit("visible",!1)})}}),Ds=_(xs,{paramsSchema:c.tuple(c.function()),implement(e){let t=Ye(e);K.on("LifecycleEvent.onReady",r=>{t(r)})}});We.registerCommand("LifecycleSDK.exit",Ns);We.registerCommand("LifecycleSDK.onReady",Ds);We.registerCommand("LifecycleSDK.onJoliboxShow",Os);We.registerCommand("LifecycleSDK.onJoliboxHide",Fs);g("lifeCycle.exit",{version:"1.0.0"});g("lifeCycle.onReady",{version:"1.0.0"});g("lifeCycle.onJoliboxShow",{version:"1.0.0"});g("lifeCycle.onJoliboxHide",{version:"1.0.0"})});U();Se();B();v();ee();function Yr(){let e=null,t=()=>{e=document.createElement("style"),e.setAttribute("data-jolibox-sdk","default-styles");let n=`
4
+ html[data-jolibox-root] {
5
+ height: 100%;
6
+ margin: 0;
7
+ padding: 0;
8
+ }
9
+
10
+ html[data-jolibox-root] body {
11
+ min-height: 100%;
12
+ margin: 0;
13
+ padding: 0;
14
+ }
15
+
16
+ @supports (height: 100dvh) {
17
+ html[data-jolibox-root] body {
18
+ min-height: 100dvh;
19
+ }
20
+ }
21
+ `;e.textContent=n;let s=document.head||document.getElementsByTagName("head")[0];s.insertBefore(e,s.firstChild),document.documentElement.setAttribute("data-jolibox-root","")},r=()=>{e?.parentNode&&(e.parentNode.removeChild(e),e=null),document.documentElement.removeAttribute("data-jolibox-root")};return t(),r}var Qr;j.onReady(()=>{});j.doExit(()=>(M("onBeforeExit",{timestamp:Date.now()}),Qr?.(),D.close(Date.now()-Ce),!1));function ks(){K.on("onDocumentReady",()=>{Z?.onDocumentReady(window.location.href),M("onDocumentReady",{start_timestamp:Ce,timestamp:Date.now()})})}function Es(){V("onJoliboxServiceReady",({runtimeInfo:e,loadDuration:t})=>{e&&y.onEnvConfigChanged({hostUserInfo:e}),K.emit("LifecycleEvent.onReady",{...y.hostUserInfo?y.hostUserInfo:{isLogin:!1}}),M("joliboxServiceReady",{start_timestamp:Ce,timestamp:Date.now()}),D.start(t)}),V("onBeforeExit",({uuid:e})=>{Z?.doExit(e)})}var Ce;function Xr(){Ce=Date.now(),Es(),ks(),Qr=Yr()}v();G();U();var sn=w(),Is="env",ws="getSystemInfoSync",_s=_(ws,{implement:()=>{let e=I("envSync"),{data:t}=e;return{system:t.deviceInfo.system,platform:t.deviceInfo.platform,version:t.sdkInfo.jssdkVersion,pixelRatio:t.deviceInfo.pixelRatio,language:t.deviceInfo.lang,brand:t.deviceInfo.brand,appName:t.hostInfo?.appName,SDKVersion:t.sdkInfo.jssdkVersion}}}),Rs=_(Is,{implement:()=>I("envSync")?.data??void 0});sn.registerCommand("API.getSystemInfoSync",_s);sn.registerCommand("API.env",Rs);g("env",{version:"1.0.0"});g("getSystemInfoSync",{version:"1.0.0"});var xl=Rn(an());X();Pt();G();v();function cn(e){let t={};if(!C(e))return t;for(let[r,n]of Object.entries(e)){let s=r.toLocaleLowerCase();n?typeof n=="object"?t[s]=Object.prototype.toString.call(n):t[s]=String(n):t[s]=""}return t}function ln(e="GET"){if(e==="")return"POST";let t=e.toUpperCase();return["GET","OPTIONS","HEAD","POST","PUT","DELETE","TRACE","CONNECT","PATCH"].includes(t)?t:"GET"}function dn(e,t=!1){if(e)return t||e>0&&e<=6e4?Math.ceil(e):6e4}function un(e,t,r){if(["POST","PUT","PATCH"].includes(t)||!C(r))return e;let[n,s=""]=e.split("?"),o=JSON.stringify({...JSON.parse(s),...r});return`${n}?${o}`}v();L();var Us=15,Ms=_e("createRequestTaskSync","operateRequestTaskSync",{type:"public"}),jt=0,Bt=[],mn=ke(A),Ls=(e,t)=>{let r=e.filter(t),n=e.filter(s=>!t(s));return e.length=0,e.push(...n),r},js=e=>{let t=new Y,r=()=>{};return S("request",{paramsSchema:c.tuple(c.object({url:c.string(),method:c.string(),header:c.object(),data:c.object().optional(),query:c.object().optional(),dataType:c.string().default("json"),responseType:c.string().default("text"),enableCache:c.boolean().default(!1),appendHostCookie:c.boolean().default(!0),timeout:c.number().default(3e4),success:c.function(),fail:c.function()})),implement(s){let o=async()=>{let i=mn(s.fail);try{if(jt+=1,t.state!=="pending")return;let{data:a,dataType:d,responseType:l,enableCache:u,appendHostCookie:p}=s,m=cn(s.header),f=ln(s.method),b=dn(s.timeout),R=un(s.url,f,a),N=mn(s.success),z=Object.assign({},s,{method:f,header:m,data:f==="GET"||f==="HEAD"?void 0:a,enableCache:u,query:s.query??{},dataType:d,responseType:l,appendHostCookie:p});b&&(z.timeout=b);let W=Ms(R,z);{let{response:k}=await W,{code:x,data:le,message:st}=k;t.resolve({code:x??"SUCCESS",data:le,message:st??"request:ok"}),N({code:"SUCCESS",message:"request:ok",data:le})}}catch(a){t.reject(a),i({code:"FAILURE",message:"httpRequst: failed"})}finally{jt-=1,Bt.shift()?.()}};return jt>=Us?(r=()=>{Ls(Bt,i=>i===o)},Bt.push(o)):o(),t.promise}})(e),{abort(){t.reject(se({code:-1,msg:"request:fail abort"})),r()}}},Bs=w();Bs.registerCommand("HttpSDK.request",js);g("request",{version:"1.0.0"});G();U();v();Re();B();var Qe=w(),Js=S("getLocalStorage",{paramsSchema:c.tuple(c.string()),async implement(e){let{response:t}=await $(`/api/games/user-storage/${y.mpId}`,{method:"GET",responseType:"json",appendHostCookie:!0,query:{key:e}}),{data:{code:r,message:n,data:s}}=await t;if(r==="SUCCESS")return{code:r,message:n,data:s?.value};try{let{data:{data:o,dataType:i}}=await O("getLocalStorageAsync",{key:e}),a=Gs(o,i);return{code:r,message:`${n}. fallback to native`,data:a}}catch{return{code:"INTERNAL_ERROR",message:"[Jolibox SDK] get local storage failed",data:null}}}});Qe.registerCommand("StorageSDK.getItem",Js);g("storage.getItem",{version:"1.0.0",properties:{key:"1.0.0",value:"1.0.0"}});var Vs=S("setStorage",{paramsSchema:c.tuple(c.string(),c.or(c.string(),c.boolean(),c.number())),async implement(e,t){let r=y.mpId,n=typeof t=="string"?t:String(t),{response:s}=await $(`/api/games/user-storage/${r}`,{method:"POST",responseType:"json",appendHostCookie:!0,data:{key:e,value:n}}),{data:{code:o,message:i}}=s,a=qs(t),d=zs(t,a);return await O("setLocalStorageAsync",{key:e,data:d,dataType:a}),o=="SUCCESS"?{code:o,message:i}:{code:o,message:`${i}. fallback to native`}}});Qe.registerCommand("StorageSDK.setItem",Vs);g("storage.setItem",{version:"1.0.0",properties:{key:"1.0.0",value:"1.0.0"}});var Hs=S("removeStorage",{paramsSchema:c.tuple(c.string()),async implement(e){let t=y.mpId,{response:r}=await $(`/api/games/user-storage/${t}/remove`,{method:"POST",responseType:"json",appendHostCookie:!0,data:{key:e}}),{data:{code:n,message:s}}=r;return await O("removeLocalStorageAsync",{key:e}),n==="SUCCESS"?{code:n,message:s}:{code:n,message:"[Jolibox SDK] remove item succ"}}});Qe.registerCommand("StorageSDK.removeItem",Hs);g("storage.removeItem",{version:"1.0.0",properties:{key:"1.0.0"}});var Ks=S("clearStorage",{async implement(){let e=y.mpId,{response:t}=await $(`/api/games/user-storage/${e}/clear`,{method:"POST",appendHostCookie:!0});O("clearLocalStorageAsync");let{data:{code:r,message:n}}=t;return r==="SUCCESS"?{code:r,message:n}:{code:r,message:`${n}.fallback to native`}}});Qe.registerCommand("StorageSDK.clear",Ks);g("storage.clear",{version:"1.0.0"});var $c=S("getStorageInfo",{async implement(){let{data:e}=await O("getStorageInfoAsync");return e}});g("getStorageInfo",{version:"1.0.0",success:{keys:"1.0.0",currentSize:"1.0.0",limitSize:"1.0.0"}});var qc=_("getStorageInfoSync",{implement(){return I("getStorageInfoSync")}}),$s=["string","number","boolean","object",""];function qs(e){let t=Object.prototype.toString.call(e).split(" ")[1].split("]")[0].toLocaleLowerCase();return $s.includes(t)?t:""}function Gs(e,t){try{switch(t){case"string":return e;case"object":return JSON.parse(e);case"number":return parseFloat(e);case"boolean":return e==="true";default:return""}}catch{return""}}function zs(e,t){try{switch(t){case"string":case"number":case"boolean":return`${e}`;case"object":return JSON.stringify(e);default:return""}}catch{return""}}v();U();G();var Ws=_("showKeyboard",{paramsSchema:c.tuple(c.object({defaultValue:c.string().optional().default(""),multiple:c.boolean().optional().default(!1),maxLength:c.unknown().optional().default(1e5)})),implement(e){let t=Math.floor(Number(e.maxLength)??1e5),{defaultValue:r}=e;r&&t&&(r=r.slice(0,t)),I("showKeyboardSync",{...e,defaultValue:r,maxLength:t})}});g("keyboard.showKeyboard",{version:"1.0.0",properties:{params:{defaultValue:"1.0.0",multiple:"1.0.0",confirmHold:"1.0.0",confirmType:"1.0.0",maxLength:"1.0.0"}},success:{errMsg:"1.0.0"}});var Ys=_("updateKeyboard",{paramsSchema:c.tuple(c.object({value:c.string()})),implement(e){I("updateKeyboardSync",e)}});g("keyboard.updateKeyboard",{version:"1.0.0",properties:{params:{value:"1.0.0"}}});var Qs=_("hideKeyboard",{implement(){I("hideKeyboardSync")}});g("keyboard.hideKeyboard",{version:"1.0.0"});var Jt=w();Jt.registerCommand("KeyboardSDK.showKeyboard",Ws);Jt.registerCommand("KeyboardSDK.updateKeyboard",Ys);Jt.registerCommand("KeyboardSDK.hideKeyboard",Qs);v();G();ee();var ce=w(),Xs=S("levelFinished",{paramsSchema:c.tuple(c.string(),c.object({result:c.boolean(),duration:c.number()})),implement:async(e,t)=>{let{result:r,duration:n}=t,s=[];s.push(D.tracker("LevelFinished",{levelId:e,result:r,duration:n})),s.push(D.reporter({event:"COMPLETE_GAME_LEVEL"})),await Promise.all(s)}}),Zs=S("taskFinished",{paramsSchema:c.tuple(c.string(),c.object({duration:c.number()})),implement:async(e,t)=>{let{duration:r}=t;return await D.reportToNative({event:"TaskFinished",params:{duration:r,taskId:e}})}}),eo=S("levelUpgrade",{paramsSchema:c.tuple(c.string(),c.string()),implement:async(e,t)=>{let r=[];r.push(D.reportToNative({event:"LevelUpgrade",params:{name:t,levelId:e}})),await Promise.all(r)}}),to=S("onHistoryUserLevel",{paramsSchema:c.tuple(c.number()),implement:async e=>await D.reportToNative({event:"HistoryUserLevel",params:{level:e}})}),ro=S("onHistoryUserScore",{paramsSchema:c.tuple(c.number()),implement:async e=>await D.reportToNative({event:"HistoryUserScore",params:{score:e}})}),no=S("taskEvent",{paramsSchema:c.tuple(c.string(),c.object({tools:c.array(c.object({id:c.string(),name:c.string(),count:c.number(),description:c.string().optional(),price:c.object({amount:c.number(),unit:c.string()}).optional()})).optional(),awards:c.array(c.object({id:c.string(),name:c.string()})).optional()})),implement:async(e,t)=>{let r=[];r.push(D.reportToNative({event:"TaskEvent",params:{taskId:e,...t}})),(t.tools?.length??!1)&&(r.push(D.reporter({event:"USE_GAME_ITEM"})),r.push(D.reportToNative({event:"UseGameItem",params:{taskId:e,...t}}))),await Promise.all(r)}});ce.registerCommand("TaskTrackerSDK.levelFinished",Xs);ce.registerCommand("TaskTrackerSDK.taskFinished",Zs);ce.registerCommand("TaskTrackerSDK.levelUpgrade",eo);ce.registerCommand("TaskTrackerSDK.historyUserLevel",to);ce.registerCommand("TaskTrackerSDK.historyUserScore",ro);ce.registerCommand("TaskTrackerSDK.taskEvent",no);g("TaskTrackerSDK.onLevelFinished",{version:"1.0.0",properties:{levelId:"1.0.0",params:{result:"1.0.0",duration:"1.0.0"}}});g("TaskTrackerSDK.onTaskFinished",{version:"1.0.0",properties:{taskId:"1.0.0",duration:"1.0.0"}});g("TaskTrackerSDK.onLevelUpgrade",{version:"1.0.0",properties:{levelId:"1.0.0",name:"1.0.0"}});g("TaskTrackerSDK.onHistoryUserLevel",{version:"1.0.0",properties:{level:"1.0.0"}});g("TaskTrackerSDK.onHistoryUserScore",{version:"1.0.0",properties:{score:"1.0.0"}});g("TaskTrackerSDK.onTaskEvent",{version:"1.0.0",properties:{taskId:"1.0.0",params:{tools:{id:"1.0.0",name:"1.0.0",count:"1.0.0",description:"1.0.0",price:{amount:"1.0.0",unit:"1.0.0"}},awards:{id:"1.0.0",name:"1.0.0"}}}});B();U();G();v();X();g("login",{version:"1.0.0",properties:{force:"1.0.0"},success:{errMsg:"1.0.0",code:"1.0.0",token:"1.0.0",isLogin:"1.0.0"}});g("checkSession",{version:"1.0.0",success:{errMsg:"1.0.0"}});var so=S("login",{async implement(){let{data:{isLogin:e}}=await O("checkLoginAsync");if(e)return{isLogin:!0,token:y.hostUserInfo?.token};V("onLoginStateChange",({isLogin:i,token:a,uuid:d})=>{d==r&&s({isLogin:i,token:a})});let t=I("loginSync"),{data:{uuid:r}}=t;if(!r)throw se({code:-1,msg:"login failed"});let{promise:n,resolve:s}=new Y,o=await n;return y.onEnvConfigChanged({hostUserInfo:o}),K.emit("onLoginComplete",o),o}}),oo=S("checkSession",{async implement(){let{data:{isLogin:e}}=await O("checkLoginAsync");return{isLogin:e}}}),pn=w();pn.registerCommand("API.login",so);pn.registerCommand("API.checkSession",oo);v();G();var Xe=class{constructor(t){this.track=t;this.adBreakIsShowing=!1;this.reportPageJumpOut=()=>{this.track("AdBreakJumpOut",{context:"AdsActionDetection"})};this.reportPageHide=()=>{this.track("AdBreakHide",{context:"AdsActionDetection"})};window.addEventListener("visibilitychange",()=>{document.hidden&&this.adBreakIsShowing&&this.reportPageHide()}),window.addEventListener("beforeunload",r=>{this.adBreakIsShowing&&this.reportPageJumpOut()})}};var fn="jolibox-sdk-ads-callbreak-timestamps",Ze=class{constructor(t,r){this.checkNetwork=t;this.maxAllowedAdsForTime=8;this.bannedForTimeThreshold=6e4;this.bannedReleaseTime=6e4;this.isBanningForTime=!1;this.releaseBannedForTimeTimeout=null;this.maxAllowedAdsForSession=200;this.bannedForSessionThreshold=6e5;this.isBanningForSession=!1;this.initialThreshold=2e3;this._callAdsTimestampsForTime=[];this.callAdsTimestampsForSession=[];this.initTimestamp=0;this.initCallAdsTimestampsForTime=()=>{try{let t=JSON.parse(window.localStorage.getItem(fn)??"[]");Array.isArray(t)?this._callAdsTimestampsForTime=t:this._callAdsTimestampsForTime=[]}catch{this._callAdsTimestampsForTime=[]}};this.setReleaseBannedForTime=()=>{this.releaseBannedForTimeTimeout&&(window.clearTimeout(this.releaseBannedForTimeTimeout),this.releaseBannedForTimeTimeout=null),this.releaseBannedForTimeTimeout=window.setTimeout(()=>{this.isBanningForTime=!1,this.releaseBannedForTimeTimeout=null},this.bannedReleaseTime)};this.checkShouldBannedInitial=()=>{if(Date.now()-this.initTimestamp<=this.initialThreshold)return"BLOCK_INITIAL"};this.checkShouldBannedForSession=t=>{if(this.isBanningForSession)return"BANNED_FOR_SESSION";let r=Date.now();if(this.callAdsTimestampsForSession=this.callAdsTimestampsForSession.concat({timestamp:r,type:t}),this.callAdsTimestampsForSession.length!==1&&(this.callAdsTimestampsForSession.length>this.maxAllowedAdsForSession&&(this.callAdsTimestampsForSession=this.callAdsTimestampsForSession.slice(-this.maxAllowedAdsForSession)),this.callAdsTimestampsForSession.length===this.maxAllowedAdsForSession&&r-this.callAdsTimestampsForSession[0].timestamp<=this.bannedForSessionThreshold))return this.isBanningForSession=!0,"BANNED_FOR_SESSION"};this.checkShouldBannedForTime=t=>{if(this.isBanningForTime)return"WAITING_BANNED_RELEASE";let r=Date.now();if(this.callAdsTimestampsForTime=this.callAdsTimestampsForTime.concat({timestamp:r,type:t}),this.callAdsTimestampsForTime.length!==1&&(this.callAdsTimestampsForTime.length>this.maxAllowedAdsForTime&&(this.callAdsTimestampsForTime=this.callAdsTimestampsForTime.slice(-this.maxAllowedAdsForTime)),this.callAdsTimestampsForTime.length===this.maxAllowedAdsForTime&&r-this.callAdsTimestampsForTime[0].timestamp<=this.bannedForTimeThreshold))return this.isBanningForTime=!0,this.setReleaseBannedForTime(),"BANNED_FOR_TIME"};this.checkAdsDisplayPermission=t=>{if(!this.checkNetwork())return"NETWORK_NOT_OK";let r=this.checkShouldBannedInitial();if(r)return r;let n=this.checkShouldBannedForSession(t);if(n)return n;let s=this.checkShouldBannedForTime(t);return s||"ALLOWED"};if(this.maxAllowedAdsForTime=r?.maxAllowedAdsForTime??8,this.bannedForTimeThreshold=r?.bannedForTimeThreshold??6e4,this.bannedReleaseTime=r?.bannedReleaseTime??6e4,this.maxAllowedAdsForSession=r?.maxAllowedAdsForSession??200,this.bannedForSessionThreshold=r?.bannedForSessionThreshold??6e5,this.initialThreshold=r?.initialThreshold??2e3,this.maxAllowedAdsForTime<=1)throw new Error("maxAllowedAdsForTime must be greater than 1");if(this.bannedForTimeThreshold<0)throw new Error("bannedForTimeThreshold must be greater than or equal to 0");if(this.bannedReleaseTime<this.bannedForTimeThreshold)throw new Error("bannedReleaseTime must be greater than or equal to bannedForTimeThreshold");if(this.initialThreshold<0)throw new Error("initialThreshold must be greater than or equal to 0");this.initCallAdsTimestampsForTime(),this.initTimestamp=Date.now()}get callAdsTimestampsForTime(){return this._callAdsTimestampsForTime}set callAdsTimestampsForTime(t){try{window.localStorage.setItem(fn,JSON.stringify(t))}catch{console.error("Failed to save timestamps")}this._callAdsTimestampsForTime=t}};B();B();var et=class{constructor(t){this.httpClient=t;this.configs=null;this.firstRun=!0;this.init()}async init(){try{this.configs=await this.httpClient.get("/api/fe-configs/js-sdk/ads-channel-config")}catch{}}shouldBypassCallingInterstitial(){let t;if(!this.configs)this.init(),t=!this.firstRun;else{let r=y.channel??"",s=this.configs[r]?.interstitialRate??1;t=Math.random()<s}return this.firstRun=!1,t}};var tt=class{constructor(t,r,n){this.track=t;this.httpClient=r;this.checkNetwork=n;this.configured=!1;this.config={};this.getGameId=()=>y.mpId;this.getTestAdsMode=()=>y.testAdsMode;this.asyncLoad=async()=>{let t="ca-pub-7171363994453626",r,n,s=window.encodeURIComponent(window.btoa(this.getGameId()??"")),o=this.getTestAdsMode()??!1;try{let i=await this.httpClient.get("/public/ads",{query:{objectId:s,testAdsMode:`${o}`}});t=i.data?.clientId,r=i.data?.channelId,n=i.data?.unitId}catch(i){console.error("Failed to fetch client info",i)}this.clientId=t,this.channelId=r,this.unitId=n};this.asyncInit=async t=>{if(typeof window>"u")return;await this.asyncLoad();let r="google-adsense",n=this.getTestAdsMode()??!1;if(!document.getElementById(r)&&this.clientId){let s=document.createElement("script");s.id=r,s.async=!0,s.crossOrigin="anonymous",s.src=`https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=${this.clientId}`,n&&s.setAttribute("data-adbreak-test","on"),this.channelId&&s.setAttribute("data-ad-channel",this.channelId),document.head.appendChild(s),this.track("LoadAdsenseCompleted",null)}};this.push=(t={})=>{window.adsbygoogle.push(t)};this.adConfig=t=>{let{onReady:r,...n}=t;this.track("CallAdConfig",n),this.configured?console.warn("Ad config already set, skipping"):(this.configured=!0,this.push(t))};this.adBreak=t=>{if(!this.getGameId()){console.warn("Game ID is not set, skip calling adBreak");return}if(t.type!=="reward"&&!this.channelPolicy.shouldBypassCallingInterstitial()){t.adBreakDone?.({breakType:t.type,breakName:"skipInterstitials",breakFormat:"interstitial",breakStatus:"viewed"});return}let r=this.antiCheating.checkAdsDisplayPermission(t.type==="reward"?"reward":"interstitial");switch(r){case"NETWORK_NOT_OK":case"BANNED_FOR_SESSION":console.warn("Ads not allowed",r),t.adBreakDone?.({breakType:t.type,breakName:r,breakFormat:t.type==="reward"?"reward":"interstitial",breakStatus:"noAdPreloaded"}),this.track("PreventAdsCheating",{reason:r});return;case"BLOCK_INITIAL":case"BANNED_FOR_TIME":case"WAITING_BANNED_RELEASE":console.warn("Ads not allowed",r),t.adBreakDone?.({breakType:t.type,breakFormat:t.type==="reward"?"reward":"interstitial",breakStatus:"viewed"}),this.track("PreventAdsCheating",{reason:r});return;default:break}let n=t.type,s=t.adBreakDone,o=a=>{this.adsActionDetection.adBreakIsShowing=!1,this.track("CallAdBreakDone",{breakType:a.breakType,breakName:a.breakName??"",breakFormat:a.breakFormat,breakStatus:a.breakStatus}),s&&s(a)};if(t.adBreakDone=o,t.type==="reward"){let a=t.beforeReward,d=u=>()=>{this.track("CallShowAdFn",null),u()},l=u=>{a&&a(d(u))};t.beforeReward=l}let i;switch(n){case"preroll":i={type:n};break;case"start":case"pause":case"next":case"browse":case"reward":i={type:n,name:t.name??""};break}this.adsActionDetection.adBreakIsShowing=!0,this.track("CallAdBreak",i),this.push(t),window.JoliTesterBridge&&console.log("joli-fullscreen-ad-show")};this.adUnit=async t=>{if(this.track("CallAdUnit",{adFormat:t.adFormat?.toString()??null,fullWidthResponsive:t.fullWidthResponsive??null}),this.clientId||await this.asyncLoad(),document.querySelector("#jolibox-ads")){console.warn("Ad unit already set, skipping");return}let{el:r,slot:n,adFormat:s,fullWidthResponsive:o,style:i}=t,a;if(!r)throw new Error("targeting element is required");if(typeof r=="string"?a=document.querySelector(r):a=r,!a)throw new Error("targeting element not found");let d=n;if(d||(d=this.unitId),!d)throw new Error("slot is required");let l=typeof s=="object"&&Array.isArray(s)?s.join(", "):s,u=document.createElement("ins");if(u.className="adsbygoogle",u.id="jolibox-ads",u.style.display="block",u.setAttribute("data-ad-client",this.clientId),u.setAttribute("data-ad-slot",d),l&&u.setAttribute("data-ad-format",l),o&&u.setAttribute("data-full-width-responsive",o),i&&u.setAttribute("style",i),this.getTestAdsMode()??!1){let m=document.createElement("div");m.style.position="absolute",m.style.top="0",m.style.left="0",m.style.width="100%",m.style.height="100%",m.style.display="flex",m.style.justifyContent="center",m.style.alignItems="center",m.style.backgroundColor="rgba(0, 0, 0, 0.5)",m.style.color="white",m.innerHTML="Test Ad",u.style.position="relative",a.appendChild(u),u.appendChild(m)}else a.appendChild(u),new MutationObserver(f=>{f.forEach(b=>{if(b.type==="attributes"&&b.attributeName==="data-ad-status"){let R=u.getAttribute("data-ad-status");this.track("AdSenseUnitStatusChanged",{status:R??"null"})}})}).observe(u,{attributes:!0,attributeFilter:["data-ad-status"]}),this.push({})};this.antiCheating=new Ze(n),this.adsActionDetection=new Xe(this.track),this.channelPolicy=new et(r)}init(t){this.track("CallAdsInit",null),!(typeof window>"u")&&(this.config=t??{},window.adsbygoogle=window.adsbygoogle||[],this.asyncInit(t))}};ee();Re();U();var rt=w(),io=()=>{let{data:e}=I("getNetworkStatusSync");return!!e?.isConnected},nt=new tt(M,{get:(e,t)=>$(e,{method:"GET",responseType:"json",appendHostCookie:!0,...t}).then(r=>r.response.data)},io),ao=_("adInit",{implement:e=>{nt.init(e)}}),co=_("adConfig",{implement:e=>{nt.adConfig(e)}}),lo=_("adBreak",{implement:e=>{nt.adBreak(e)}}),uo=_("adUnit",{implement:e=>{nt.adUnit(e)}});rt.registerCommand("AdsSDK.init",ao);rt.registerCommand("AdsSDK.adConfig",co);rt.registerCommand("AdsSDK.adBreak",lo);rt.registerCommand("AdsSDK.adUnit",uo);g("AdsSDK.init",{version:"1.0.0"});g("AdsSDK.adConfig",{version:"1.0.0"});g("AdsSDK.adBreak",{version:"1.0.0"});g("AdsSDK.adUnit",{version:"1.0.0"});ee();var mo=Symbol("__JOLIBOX_SDK_INITIALIZED__");(()=>{if(window[mo]){console.warn("JoliboxSDK already initialized, skipping...");return}})();Xr();
@@ -0,0 +1 @@
1
+ export declare function initializeStyles(): () => void;
@@ -1,9 +1,9 @@
1
1
  Invoking: npm run clean && npm run build:esm && tsc
2
2
 
3
- > @jolibox/implement@1.1.6-beta.1 clean
3
+ > @jolibox/implement@1.1.6-beta.3 clean
4
4
  > rimraf ./dist
5
5
 
6
6
 
7
- > @jolibox/implement@1.1.6-beta.1 build:esm
7
+ > @jolibox/implement@1.1.6-beta.3 build:esm
8
8
  > BUILD_VERSION=$(node -p "require('./package.json').version") node esbuild.config.js --format=esm
9
9
 
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@jolibox/implement",
3
3
  "description": "This project is Jolibox JS-SDk implement for Native && H5",
4
- "version": "1.1.6-beta.1",
4
+ "version": "1.1.6-beta.3",
5
5
  "main": "dist/index.js",
6
6
  "typings": "dist/index.d.ts",
7
7
  "license": "MIT",
8
8
  "dependencies": {
9
- "@jolibox/common": "1.1.6-beta.1",
10
- "@jolibox/types": "1.1.6-beta.1",
9
+ "@jolibox/common": "1.1.6-beta.3",
10
+ "@jolibox/types": "1.1.6-beta.3",
11
11
  "localforage": "1.10.0"
12
12
  },
13
13
  "devDependencies": {
@@ -1,4 +1,19 @@
1
1
  //TODO: entrance for native
2
+ const SDK_INITIALIZED = Symbol('__JOLIBOX_SDK_INITIALIZED__');
3
+ declare global {
4
+ interface Window {
5
+ [SDK_INITIALIZED]?: boolean; // 添加初始化标记
6
+ }
7
+ }
8
+
9
+ // check if already initialized
10
+ (() => {
11
+ if (window[SDK_INITIALIZED]) {
12
+ console.warn('JoliboxSDK already initialized, skipping...');
13
+ return;
14
+ }
15
+ })();
16
+
2
17
  import { config } from './native/bootstrap';
3
18
 
4
19
  import './native/api';
package/src/index.ts CHANGED
@@ -1,5 +1,21 @@
1
1
  //TODO(DX): H5 entrance
2
2
  // internal modules
3
+ //TODO: entrance for native
4
+ const SDK_INITIALIZED = Symbol('__JOLIBOX_SDK_INITIALIZED__');
5
+ declare global {
6
+ interface Window {
7
+ [SDK_INITIALIZED]?: boolean; // 添加初始化标记
8
+ }
9
+ }
10
+
11
+ // check if already initialized
12
+ (() => {
13
+ if (window[SDK_INITIALIZED]) {
14
+ console.warn('JoliboxSDK already initialized, skipping...');
15
+ return;
16
+ }
17
+ })();
18
+
3
19
  import './h5/report';
4
20
  //global apis
5
21
  import './h5/api';
@@ -3,7 +3,9 @@ import { joliboxJSCore } from '../js-core';
3
3
  import { context } from '@/common/context';
4
4
  import { hostEmitter } from '@jolibox/common';
5
5
  import { taskTracker, track } from '../report';
6
+ import { initializeStyles } from './style';
6
7
 
8
+ let cleanStyles: () => void;
7
9
  RuntimeLoader.onReady(() => {
8
10
  // TODO: merge some env config
9
11
  });
@@ -13,6 +15,7 @@ RuntimeLoader.doExit(() => {
13
15
  track('onBeforeExit', {
14
16
  timestamp: Date.now()
15
17
  });
18
+ cleanStyles?.();
16
19
  taskTracker.close(Date.now() - start_timestamp);
17
20
  return false; // 默认不打断退出
18
21
  });
@@ -51,8 +54,10 @@ function addGameServiceReadyListener() {
51
54
  });
52
55
  }
53
56
  let start_timestamp: number;
57
+
54
58
  export function config(): void {
55
59
  start_timestamp = Date.now();
56
60
  addGameServiceReadyListener();
57
61
  addWebviewReadyListener();
62
+ cleanStyles = initializeStyles();
58
63
  }
@@ -0,0 +1,46 @@
1
+ export function initializeStyles() {
2
+ let styleElement: HTMLStyleElement | null = null;
3
+
4
+ const createStyles = () => {
5
+ styleElement = document.createElement('style');
6
+ styleElement.setAttribute('data-jolibox-sdk', 'default-styles');
7
+
8
+ const styles = `
9
+ html[data-jolibox-root] {
10
+ height: 100%;
11
+ margin: 0;
12
+ padding: 0;
13
+ }
14
+
15
+ html[data-jolibox-root] body {
16
+ min-height: 100%;
17
+ margin: 0;
18
+ padding: 0;
19
+ }
20
+
21
+ @supports (height: 100dvh) {
22
+ html[data-jolibox-root] body {
23
+ min-height: 100dvh;
24
+ }
25
+ }
26
+ `;
27
+
28
+ styleElement.textContent = styles;
29
+
30
+ const head = document.head || document.getElementsByTagName('head')[0];
31
+ head.insertBefore(styleElement, head.firstChild);
32
+ document.documentElement.setAttribute('data-jolibox-root', '');
33
+ };
34
+
35
+ const cleanup = () => {
36
+ if (styleElement?.parentNode) {
37
+ styleElement.parentNode.removeChild(styleElement);
38
+ styleElement = null;
39
+ }
40
+ document.documentElement.removeAttribute('data-jolibox-root');
41
+ };
42
+ createStyles();
43
+
44
+ // 返回清理函数
45
+ return cleanup;
46
+ }