Abtf[0](function(e,r){if(e.localStorage&&e.Worker){var t=[],o=function(r){"Promise"in e?new Promise(function(e,t){e(r())}):"undefined"!==e.setImmediate?e.setImmediate(r):setTimeout(r,0)},n={prefix:"abtf-",default_expire:86400,preloaded:{},now:function(){return+new Date/1e3},execWhenIdle:function(e,t){r[16]?r[16](e,{timeout:t}):e()},saveScript:function(e,r,t){n.execWhenIdle(function(){var o={},i=n.now();if(o.date=i,o.expire=i+(t||n.default_expire),r instanceof Array){o.chunked=!0,o.chunks=r.length;for(var a=[],s=r.length,c=0;c10)console.error("Abtf.js() ➤ localStorage quota reached","retry limit reached, abort saving...",e);else{"object"==typeof r&&(r=JSON.stringify(r));try{return localStorage.setItem(n.prefix+e,r),!0}catch(c){if(c.name.toUpperCase().indexOf("QUOTA")>=0){var o,i,a,s=[];for(o in localStorage)0===o.indexOf(n.prefix)&&-1===o.indexOf("chunk:")&&(a=o.split(n.prefix)[1],(i=n.get(a))&&s.push([a,i]));return s.length?(s.sort(function(e,r){return e[1].date-r[1].date}),console.error("Abtf.js() ➤ localStorage quota reached","removed",s[0][0],"for key",e),n.remove(s[0][0]),void n.execWhenIdle(function(){void 0===t&&(t=0),n.add(e,r,++t)},1e3)):void console.error("Abtf.js() ➤ localStorage quota reached","no files to remove")}return void console.error("Abtf.js() ➤ localStorage error",c.name,c)}}},remove:function(e){var r=n.get(e);if(r){if(r.chunked)for(var t=parseInt(r.chunks),o=0;o0&&console.warn("Abtf.js() ➤ localStorage cleared",a.length,"expired scripts")}},i=function(r,t){var o;try{o=new Blob([r],{type:t})}catch(n){e.BlobBuilder=e.BlobBuilder||e.WebKitBlobBuilder||e.MozBlobBuilder,(o=new BlobBuilder).append(r),o=o.getBlob(t)}return URL.createObjectURL(o)},a=function(){self.FETCH=self.fetch||!1,self.DEFAULT_TIMEOUT=5e3,self.MAX_CHUNK_SIZE=1e5,self.CHUNK_DATA=function(e,r){for(var t,o=Math.ceil(e.length/r),n=new Array(o),i=0;iself.MAX_CHUNK_SIZE&&(n=self.CHUNK_DATA(n,self.MAX_CHUNK_SIZE)),self.RESOURCE_LOAD_COMPLETED(e,o,n))};if(self.FETCH){var n={method:"GET",mode:"cors",cache:"default"},i=function(e){r||("object"==typeof e&&e.status&&(e=[e.status,e.statusText]),o(e))};self.FETCH(e.url,n).then(function(e){r||(e.ok?e.text().then(function(e){o(!1,e)}):o([e.status,e.statusText]))},i).catch(i);s=e.timeout||self.DEFAULT_TIMEOUT;isNaN(s)&&(s=self.DEFAULT_TIMEOUT),t=setTimeout(function(){r||o("timeout")},s)}else{var a=new XMLHttpRequest;a.open("GET",e.url,!0),a.responseType="text",a.onreadystatechange=function(){r||4===a.readyState&&(200!==a.status?o(a.statusText):o(!1,a.responseText))},a.onerror=function(){r||o(a.statusText)};var s=e.timeout||self.DEFAULT_TIMEOUT;isNaN(s)&&(s=self.DEFAULT_TIMEOUT),t=setTimeout(function(){if(!r){try{a.abort()}catch(e){}o("timeout")}},s),a.send(null)}},self.RESOURCE_LOAD_COMPLETED=function(e,r,t){r?(r instanceof Array||"object"!=typeof r||(r=r.toString()),self.postMessage([2,e.i,r])):self.postMessage([1,e.i,t])},self.onmessage=function(e){var r=e.data;if(r instanceof Array)for(var t=r.length,o=0;o200&&parseInt(r[2][0])<600?void console.error("Abtf.js() ➤ web worker ➤ "+r[2][0]+" "+r[2][1],s.scriptQueue[t].url):void console.error("Abtf.js() ➤ web worker script loader error",r[2]):void 0;s.scriptQueue[t].onData(r[2])}else console.error("Abtf.js() ➤ web worker script loader invalid response",r)},handleError:function(e){console.error("Abtf.js() ➤ web worker script loader error",e)},loadScript:function(e,t){this.worker||this.start(),e=r[28](e);var o=parseInt(this.scriptIndex);this.scriptIndex++,this.scriptQueue[o]={url:e,onData:t},this.worker.postMessage({url:e,i:o})}};if(s.start(),e.addEventListener("beforeunload",function(e){if(s.stop(),t.length>0)for(var r=t.length,o=0;o