@brandbrigade/ott-bb-player 1.0.38 → 1.0.41
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.
- package/README.md +9 -0
- package/js/OTTPlayer.js +1 -1
- package/mediakind.html +1 -0
- package/package.json +1 -1
package/js/OTTPlayer.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const _0x3e12b0=_0xbe5e;(function(_0x44bc84,_0x15baa2){const _0x1d62b8=_0xbe5e,_0x78acc3=_0x44bc84();while(!![]){try{const _0x539d44=parseInt(_0x1d62b8(0x2f1))/0x1+parseInt(_0x1d62b8(0x3eb))/0x2*(parseInt(_0x1d62b8(0x2a7))/0x3)+-parseInt(_0x1d62b8(0x1f8))/0x4+parseInt(_0x1d62b8(0x21c))/0x5+-parseInt(_0x1d62b8(0x1eb))/0x6*(parseInt(_0x1d62b8(0x347))/0x7)+-parseInt(_0x1d62b8(0x2aa))/0x8*(-parseInt(_0x1d62b8(0x32f))/0x9)+-parseInt(_0x1d62b8(0x23d))/0xa*(parseInt(_0x1d62b8(0x2dd))/0xb);if(_0x539d44===_0x15baa2)break;else _0x78acc3['push'](_0x78acc3['shift']());}catch(_0x370cf4){_0x78acc3['push'](_0x78acc3['shift']());}}}(_0x3e0a,0x79a0a));const OTTPLAYER_VERSION=_0x3e12b0(0x375),printVersion=()=>{const _0x3bbf56=_0x3e12b0;console[_0x3bbf56(0x3dd)](_0x3bbf56(0x2b3)+OTTPLAYER_VERSION);},getVersion=()=>{const _0x4ebfc7=_0x3e12b0,_0x3c94bd=document['currentScript'][_0x4ebfc7(0x2e1)],_0x108ed3=_0x3c94bd[_0x4ebfc7(0x266)]('/')[_0x4ebfc7(0x358)](0x0,-0x2)[_0x4ebfc7(0x3c7)]('/'),_0x118787=_0x108ed3+_0x4ebfc7(0x3bd);console[_0x4ebfc7(0x3dd)](_0x4ebfc7(0x261)+_0x118787),fetch(_0x118787)[_0x4ebfc7(0x383)](_0x594a93=>{const _0x5c0394=_0x4ebfc7;if(!_0x594a93['ok'])throw new Error(_0x5c0394(0x326)+_0x594a93[_0x5c0394(0x3ae)]);return _0x594a93['json']();})[_0x4ebfc7(0x383)](_0x2fd6f6=>{const _0x65b7fb=_0x4ebfc7,_0x291cc8=_0x2fd6f6['version'];console['log'](_0x65b7fb(0x3d7)+_0x291cc8);})[_0x4ebfc7(0x3ea)](_0x6efcce=>{const _0x477824=_0x4ebfc7;console[_0x477824(0x361)](_0x477824(0x2f9),_0x6efcce);});};printVersion();const META_WORKER=_0x3e12b0(0x215);function _0xbe5e(_0x2162f5,_0x49b7fe){const _0x3e0a6d=_0x3e0a();return _0xbe5e=function(_0xbe5efa,_0x30cea3){_0xbe5efa=_0xbe5efa-0x1d2;let _0x46cc9d=_0x3e0a6d[_0xbe5efa];return _0x46cc9d;},_0xbe5e(_0x2162f5,_0x49b7fe);}let debug_lastFrameFromVideoCallback=-0x1,debug_tc='';function _0x3e0a(){const _0xfb8893=['crossOrigin','error::','substring','\x20FPS,\x20Continuing\x20augmentation','right','paused','maskY','length','shaderSource','dblclick','Unsupported\x20hls-src\x20frame-rate:\x20','(\x20\x20','renderTimecode','requestFullscreen','head',',\x20expectedDisplayTime:\x20','initializeComponents','MetaDataFetcher','url:\x20','CallBacks\x20are\x20set','Mozilla','priv','clear','index','RGBA','Fetching\x20package.json\x20from:\x20','onNewMetadataInterface','BBlog','appendChild','mediaIdJsonURL','split','toLowerCase','field','hasOwnProperty','fillStyle','***\x20Error:\x20unknown\x20shader\x20type','TEXTURE_2D','if\x20(alpha\x20==\x200.0)','fromCharCode','offsetLeft','playerTime','doNotRenderAugmentationLabel','parentElement','innerHTML','fragmentShaderSource','top','Error\x20in\x20program\x20linking:\x20','VID','onerror','Error\x20from\x20worker\x20(via\x20addEventListener):','replace','stringTime','height','MediaID\x20','Video\x20object\x20is\x20not\x20defined.\x20This\x20script\x20might\x20not\x20be\x20running\x20in\x20a\x20browser\x20environment.','COLOR_BUFFER_BIT','utc_','\x20stage:\x20','display','Utils',',\x20performanceNow-lastPerformanceNow:\x20','indexOf','logoURL','Created\x20webgl1\x20context:\x20','splice','ANI.','amd',',\x20stage:\x20','BB.Utils.getSourceFPS:\x20Unknown\x20FrameRate\x20mode','syncPoint','url','MakeSureAdPerPlace:\x20Set\x20default\x20image\x20','position','getContext','bottom','Chrome','adForLogo','\x0a\x0a//High\x20precision\x20mode\x0aprecision\x20highp\x20float;\x0a\x0a//The\x20textures\x0auniform\x20sampler2D\x20u_image;//video\x20frame\x27s\x20texture2D\x0auniform\x20sampler2D\x20ad0;//the\x20ad\x20texture2D\x0auniform\x20sampler2D\x20ad1;//the\x20ad\x20texture2D\x0auniform\x20sampler2D\x20ad2;//the\x20ad\x20texture2D\x0auniform\x20sampler2D\x20ad3;//the\x20ad\x20texture2D\x0a\x0auniform\x20vec2\x20u_resolution2;//resolution\x20of\x20the\x20canvas\x0a\x0a//v_texCoord\x20from\x20the\x20vertex\x20shader\x0avarying\x20vec2\x20v_texCoord;\x0a\x0a//Logos\x27\x20staff\x0auniform\x20int\x20hasLogo0;//has\x20logo\x20?\x0auniform\x20int\x20adForLogo0;\x0auniform\x20sampler2D\x20alpha0;//the\x20alpha\x27s\x20mate\x0auniform\x20mat3\x20u_matrix0;//the\x20reverse\x20homography\x0auniform\x20vec2\x20u_alpha0TopLeft;//the\x20alpha\x20mate\x27s\x20top-left\x0auniform\x20vec2\x20u_alpha0Size;//the\x20alpha\x20mate\x27s\x20size\x0a\x0auniform\x20int\x20hasLogo1;//has\x20logo\x20?\x0auniform\x20int\x20adForLogo1;\x0auniform\x20sampler2D\x20alpha1;//the\x20alpha\x27s\x20mate\x0auniform\x20mat3\x20u_matrix1;//the\x20reverse\x20homography\x0auniform\x20vec2\x20u_alpha1TopLeft;//the\x20alpha\x20mate\x27s\x20top-left\x0auniform\x20vec2\x20u_alpha1Size;//the\x20alpha\x20mate\x27s\x20size\x0a\x0auniform\x20int\x20hasLogo2;//has\x20logo\x20?\x0auniform\x20int\x20adForLogo2;\x0auniform\x20sampler2D\x20alpha2;//the\x20alpha\x27s\x20mate\x0auniform\x20mat3\x20u_matrix2;//the\x20reverse\x20homography\x0auniform\x20vec2\x20u_alpha2TopLeft;//the\x20alpha\x20mate\x27s\x20top-left\x0auniform\x20vec2\x20u_alpha2Size;//the\x20alpha\x20mate\x27s\x20size\x0a\x0auniform\x20int\x20hasLogo3;//has\x20logo\x20?\x0auniform\x20int\x20adForLogo3;\x0auniform\x20sampler2D\x20alpha3;//the\x20alpha\x27s\x20mate\x0auniform\x20mat3\x20u_matrix3;//the\x20reverse\x20homography\x0auniform\x20vec2\x20u_alpha3TopLeft;//the\x20alpha\x20mate\x27s\x20top-left\x0auniform\x20vec2\x20u_alpha3Size;//the\x20alpha\x20mate\x27s\x20size\x0a\x0auniform\x20sampler2D\x20injectoLogo;//the\x20injecto\x20logo\x20to\x20cover\x20the\x20timecode\x20watermark\x0a\x0aconst\x20float\x20Directions\x20=\x2016.0;\x20//\x20BLUR\x20DIRECTIONS\x20(Default\x2016.0\x20-\x20More\x20is\x20better\x20but\x20slower)\x0aconst\x20float\x20Quality\x20=\x203.0;\x20//\x20BLUR\x20QUALITY\x20(Default\x203.0\x20-\x20More\x20is\x20better\x20but\x20slower)\x0aconst\x20float\x20Size\x20=\x2012.0;\x20//\x20BLUR\x20SIZE\x20(Radius)\x0aconst\x20float\x20Pi\x20=\x206.28318530718;\x20//\x20Pi*2\x0a\x0avec3\x20BlurBGR(vec4\x20videoImagePix)\x0a{\x0a\x09vec3\x20res\x20=\x20videoImagePix.rgb;\x0a\x20//get\x20the\x20kernel\x20radius:\x0a\x20\x20\x20\x20vec2\x20Radius\x20=\x20Size/u_resolution2.xy;\x0a\x20\x20\x20\x0a\x20\x20\x20\x20//\x20Blur\x20around:\x0a\x20\x20\x20\x20for(\x20float\x20d=0.0;\x20d<Pi;\x20d+=Pi/Directions)\x0a\x20\x20\x20\x20{\x0a\x09\x09for(float\x20i=1.0/Quality;\x20i<=1.0;\x20i+=1.0/Quality)\x0a\x20\x20\x20\x20\x20\x20\x20\x20{\x0a\x09\x09\x09res\x20+=\x20texture2D(\x20u_image,\x20v_texCoord+vec2(cos(d),sin(d))*Radius*i).rgb;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20res\x20/=\x20Quality\x20*\x20Directions\x20-\x2015.0;\x0a\x0a\x20\x20\x20\x20return\x20res;\x0a}\x0a\x0abool\x20BlendWithLogo(\x0a\x09int\x20adUnit,\x0a\x20\x20\x20\x20\x20sampler2D\x20alphaTexture,\x0a\x20\x20\x20\x20\x20mat3\x20matrix,\x0a\x20\x20\x20\x20\x20vec2\x20curCoord,\x0a\x20\x20\x20\x20\x20vec2\x20alphaTopLeft,\x0a\x20\x20\x20\x20\x20vec2\x20alphaSize,\x0a\x20\x20\x20\x20\x20vec4\x20videoImagePix)\x20\x0a{\x0a\x20\x20\x20\x20vec2\x20texCoord;\x0a\x20\x20\x20\x20texCoord.x\x20=\x20(matrix[0][0]*curCoord.x\x20+\x20matrix[0][1]*curCoord.y\x20+\x20matrix[0][2])\x20/\x20(matrix[2][0]*curCoord.x\x20+\x20matrix[2][1]*curCoord.y\x20+\x201.0);\x0a\x20\x20\x20\x20texCoord.y\x20=\x20(matrix[1][0]*curCoord.x\x20+\x20matrix[1][1]*curCoord.y\x20+\x20matrix[1][2])\x20/\x20(matrix[2][0]*curCoord.x\x20+\x20matrix[2][1]*curCoord.y\x20+\x201.0);\x0a\x20\x20\x20\x20texCoord\x20/=\x20u_resolution2;\x0a\x0a\x20\x20\x20\x20//if\x20we\x27re\x20in\x20the\x20bounding\x20rect\x20of\x20the\x20logo\x0a\x20\x20\x20\x20if\x20(texCoord.x\x20>=\x200.0\x20&&\x20texCoord.y\x20>=\x200.0\x20&&\x20texCoord.x\x20<=\x201.0\x20&&\x20texCoord.y\x20<=\x201.0)\x0a\x20\x20\x20\x20{\x0a\x09\x09\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20float\x20alpha\x20=\x201.0;\x0a\x20\x20\x20\x20\x20\x20\x20\x20vec2\x20alphaCoord\x20=\x20(curCoord\x20-\x20alphaTopLeft)/alphaSize;//get\x20the\x20coordinate\x20on\x20the\x20alpha\x20mate\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(alphaCoord.x\x20>=\x200.0\x20&&\x20alphaCoord.y\x20>=\x200.0\x20&&\x20alphaCoord.x\x20<=\x201.0\x20&&\x20alphaCoord.y\x20<=\x201.0)\x0a\x20\x20\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//get\x20the\x20alpha\x20texel:\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//alpha\x20*=\x20BlurAlpha(alphaCoord);//blurred\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20alpha\x20*=\x20texture2D(alphaTexture,\x20alphaCoord).a;//without\x20blur\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x09\x09if\x20(adUnit\x20==\x2099)//blur\x0a\x09\x09{\x0a\x09\x09\x09gl_FragColor\x20=\x20vec4(BlurBGR(videoImagePix)*alpha\x20+\x20\x20videoImagePix.rgb*(1.0-alpha),\x201.0);\x0a\x09\x09\x09//outColor\x20=\x20vec4(BlurBGR(videoImagePix),\x201.0);\x0a\x09\x09\x09return\x20true;\x0a\x09\x09}\x0a\x09\x09vec4\x20ad0Pix\x20=\x20\x0a\x09\x09\x09adUnit\x20==\x200\x20?\x20texture2D(ad0,\x20texCoord)\x20:\x0a\x09\x09\x09adUnit\x20==\x201\x20?\x20texture2D(ad1,\x20texCoord)\x20:\x0a\x09\x09\x09adUnit\x20==\x202\x20?\x20texture2D(ad2,\x20texCoord)\x20:\x0a\x09\x09\x09\x09\x09\x09\x20\x20texture2D(ad3,\x20texCoord);//get\x20the\x20logo\x27s\x20texel\x0a\x09\x09alpha\x20*=\x20ad0Pix.a;//consider\x20the\x20alpha\x20of\x20the\x20logo\x0a\x20\x20\x20\x20\x20\x20\x20\x20vec3\x20resultRGB\x20=\x20ad0Pix.rgb*alpha\x20+\x20videoImagePix.rgb*(1.0-alpha);//blend\x0a\x20\x20\x20\x20\x20\x20\x20\x20gl_FragColor\x20=\x20vec4(resultRGB,\x201.0);\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20true;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20else\x20return\x20false;\x0a\x20\x20\x0a}\x0avoid\x20main()\x0a{\x0a\x20\x20//calculate\x20cur-coord\x20(with\x20pixels\x20units)\x0a\x20\x20vec2\x20curCoord\x20=\x20gl_FragCoord.xy;\x0a\x20\x20curCoord.y\x20=\x20u_resolution2[1]\x20-\x20curCoord.y;\x0a\x0a\x20\x20//cover\x20the\x20timecode\x20with\x20some\x20watermark\x0a\x20\x20if\x20(v_texCoord[0]\x20<=\x200.125\x20&&\x20(1.0-v_texCoord[1])\x20<=\x200.125)\x0a\x20\x20{\x20\x0a\x20\x20\x20\x20gl_FragColor\x20=\x20texture2D(injectoLogo,\x20vec2(v_texCoord[0]*8.0,\x201.0-(1.0-v_texCoord[1])*8.0));\x0a\x20\x20\x20\x20return;\x0a\x20\x20}\x0a\x0a\x20\x20vec4\x20videoImagePix\x20=\x20texture2D(u_image,\x20v_texCoord);\x0a\x20\x20\x0a\x20\x20if\x20(hasLogo0\x20==\x201\x20&&\x20\x0a\x20\x20\x20\x20\x20BlendWithLogo(\x0a\x09\x20adForLogo0,\x0a\x09\x20alpha0,\x20u_matrix0,\x20curCoord,u_alpha0TopLeft,\x20u_alpha0Size,\x20videoImagePix))\x0a\x20\x20{\x0a\x20\x20\x20\x20return;\x0a\x20\x20}\x0a\x20\x20else\x20if\x20(hasLogo1\x20==\x201\x20&&\x0a\x20\x20\x20\x20\x20BlendWithLogo(\x0a\x09\x20adForLogo1,\x0a\x09\x20alpha1,\x20u_matrix1,\x20curCoord,u_alpha1TopLeft,\x20u_alpha1Size,\x20videoImagePix))\x0a\x20\x20{\x0a\x20\x20\x20\x20return;\x0a\x20\x20}\x0a\x20\x20else\x20if\x20(hasLogo2\x20==\x201\x20&&\x0a\x20\x20\x20\x20\x20BlendWithLogo(\x0a\x09\x20adForLogo2,\x0a\x09\x20alpha2,\x20u_matrix2,\x20curCoord,u_alpha2TopLeft,\x20u_alpha2Size,\x20videoImagePix))\x0a\x20\x20{\x0a\x20\x20\x20\x20return;\x0a\x20\x20}\x0a\x20\x20else\x20if\x20(hasLogo3\x20==\x201\x20&&\x0a\x20\x20\x20\x20\x20BlendWithLogo(\x0a\x09\x20adForLogo3,\x0a\x09\x20alpha3,\x20u_matrix3,\x20curCoord,u_alpha3TopLeft,\x20u_alpha3Size,\x20videoImagePix))\x0a\x20\x20{\x0a\x20\x20\x20\x20return;\x0a\x20\x20}\x0a\x20\x20else\x20{//only\x20video\x20texel,\x20no\x20logo\x0a\x20\x20\x20\x20gl_FragColor\x20=\x20videoImagePix;\x0a\x20\x20}\x0a}\x0a','adTexture','InitGL','UNPACK_FLIP_Y_WEBGL','\x0a\x0a//High\x20precision\x20mode\x0aprecision\x20highp\x20float;\x0a\x0a//\x20an\x20attribute\x20is\x20an\x20input\x20(in)\x20to\x20a\x20vertex\x20shader.\x0a//\x20It\x20will\x20receive\x20vertex\x20data\x20from\x20the\x20buffer\x0aattribute\x20vec2\x20a_position;\x0aattribute\x20vec2\x20a_texCoord;\x0auniform\x20vec2\x20u_resolution;\x0avarying\x20vec2\x20v_texCoord;\x0a\x0a\x0a//\x20Main\x20vertex\x20shader\x0avoid\x20main()\x20{\x0a\x20\x20//\x20convert\x20the\x20rectangle\x20from\x20pixels\x20to\x200.0\x20to\x201.0\x0a\x20\x20\x20vec2\x20zeroToOne\x20=\x20a_position\x20/\x20u_resolution;\x0a\x0a\x20\x20\x20//\x20convert\x20from\x200->1\x20to\x200->2\x0a\x20\x20\x20vec2\x20zeroToTwo\x20=\x20zeroToOne\x20*\x202.0;\x0a\x0a\x20\x20\x20//\x20convert\x20from\x200->2\x20to\x20-1->+1\x20(clipspace)\x0a\x20\x20\x20vec2\x20clipSpace\x20=\x20zeroToTwo\x20-\x201.0;\x0a\x0a\x20\x20\x20gl_Position\x20=\x20vec4(clipSpace\x20*\x20vec2(1,\x20-1),\x200,\x201);\x0a\x0a\x20\x20\x20//\x20pass\x20the\x20texCoord\x20to\x20the\x20fragment\x20shader\x0a\x20\x20\x20//\x20The\x20GPU\x20will\x20interpolate\x20this\x20value\x20between\x20points.\x0a\x20\x20\x20v_texCoord\x20=\x20a_texCoord;\x0a}\x0a','Frames2Timecode','lastAd','VID.\x20','timeCodeStr2TimeCodeArray:\x20Failed\x20to\x20parse\x20','addEventListener','Platform','isPowerOf2','debug','console','Unknown','found','ANI2','TEXTURE0','6cNvhta','ANI.\x20','presentationTime','122896LnijyD',',\x20expectedDisplayTime-now:\x20','setSyncPoint','metadataMap','messageroom:\x20','getElementsByTagName','pixelStorei','***\x20Error:\x20unknown\x20script\x20element','Opera','OTTPlayer:\x20version:\x20','(\x20Security\x20)\x20We\x20cant\x20reach\x20','createShader','isConnected','Mac','MSIE','renderingMode','timeCodeStr2TimeCodeArray','now\x20video\x20element\x20is\x20loaded\x20in\x20\x22loadedmetadata\x22\x20event.\x20Setting\x20up\x20requestVideoFrameCallback','reduce','undefined','folderName','disconnect\x20from\x20signaling::','for\x20more\x20about\x20webgl-utils.js\x20see:','u_matrix','createElement',',\x20presentedFrames\x20-\x20lastPresentedFrames:\x20','<span\x20style=\x27font-size:\x2030px;\x27>,\x20Brain\x20Time-Code:\x20','fps','ntc','offs','useProgram','font','createTexture','Connect',',\x20dblFrame:\x20','getMinutes','RenderFrame','value1','roommembers','config','New\x20segment\x20(','abs','alphaTex','keys','Ads','timecode','Macintosh','player','STATIC_DRAW','alphaAsUint8Array','sourceFPS','77nSJzdP','Silk','json','\x20Game:\x20','src','Firefox','\x20not\x20found\x20in\x20JSON.','now\x20video\x20element\x20is\x20loaded.\x20Setting\x20up\x20onResizeCallBack','getDeviceName','createProgramFromSources','time','Size','tc__','Calculating\x20ScreenFrameRate','none','.json','frame','bindAttribLocation','cloudFrontURL','Setting\x20Callbacks','865885bGYCkU','ScreenFPS','function','TopLeft','iPhone','canvas','BB.Utils.getMediaTimeFPS:\x20Unknown\x20FrameRate\x20mode','bufferData','Error\x20fetching\x20package.json:','metadata','PlayBook','onNewSegmentInterface','globalConfig','uniform1i','Augmenter','getTime','deleteTexture','uniform2fv','plus05CorrectionLabel','advertisementMap','insertBefore','getShaderParameter','OTTPlayer:\x20','UNSIGNED_BYTE','color:blue;font-weight:bold;','fetchOffsetForGameId','COMPILE_STATUS','options','augmentation','createBuffer','playbackTime','setCalculationFps','30px\x20Arial','videoStarted','enabled','vertexAttribPointer','value','ANI','click','composer::SelectAd:\x20selected\x20ad\x20is\x20','data','Composer3d','Error\x20fetching\x20JSON:','Internet\x20Explorer','_nextAdvertisement','isAndroid','place2ad','deleteShader','setMediaFPS:\x20Unknown\x20Source\x20FrameRate\x20mode','SelectAd',',\x20rendering:\x20','debugText2','match','HTTP\x20error!\x20status:\x20','https://games-prod.virtualott.com/map','mediaTime','\x20FPS,\x20Aborting\x20augmentation.\x20Only\x2060FPS\x20screens\x20supported',',\x20presentationTime-expectedDisplayTime:\x20','max','options\x20after\x20merge\x20with\x20MK\x27s\x20options:\x20','Kindle','OnMetadata','18ItDAuh','script','TRIANGLES',',\x20LastSyncPointFrame:','Missing\x20meta\x20data\x20at\x20time\x20code\x20','Android',',\x20PlayerTime:','assign','optionsFromMK:\x20','webgl2','adLoopTime','roommembers\x20message:\x20','VERTEX_SHADER',',\x20stremTime:\x20','VideoTime:\x20','an\x20iPhone','join\x20\x20','socket\x20connected','metadataArr','test','enableVertexAttribArray','\x20\x20extra\x20call.\x20Correcting\x20','video\x20element\x20is\x20already\x20loaded.\x20Setting\x20up\x20requestVideoFrameCallback','LINEAR','21DFkvVm','We\x20are\x20HERE:TimeCode','\x20Setting\x20(some)\x20ms\x20timer','\x20ms','Probable\x20videoFrameCallback\x20was\x20not\x20fired.\x20Apllying\x20correction\x20mechanism\x20(','Something\x20else',',\x20presentationTime:\x20','LINK_STATUS','a_position','https://www.virtualott.com/games/','Error\x20fetching\x20and\x20processing\x20JSON:','debugText','createVertexArray','\x20!!!!!!!!!!!!!!!!!!!!!!',',\x20resultTime:\x20','Src59_MediaTime59','webGLVersion','slice','bindBuffer','text','MakeSureAdPerPlace','x-shader/x-fragment','br2','expectedDisplayTime','uniform2f','frameRateMode','error','PalmOS','left','Unsupported\x20FPS:\x20options.hls_fps\x20=\x20','width','timeDate2TCString','messageroom','ad0','connect','GAME_ID','RenderDigits','digitTex','isChromeMac','\x20</br>','getCanvas','We\x20have\x20no\x20MetaDataDownloaderThread\x20yet.\x20Creating\x20it','vertexShaderSource','fetchAndFindGameIdAndOffsetFromMediaId','appVersion','OnUserClickOnCanvas','v1.0.38','\x20room','%c%s','charCodeAt','toFixed','SetRectangle','presentedFrames','msMaxTouchPoints','OS\x20X','alphaFound','name',',\x20Stream\x20Time-Code:\x20','counter','[-\x20/:;]([\x5cd._]+)','then','Linux','timeDate2TC','\x20so\x20should\x20navigate\x20to\x20','uniformMatrix3fv','an\x20Unknown\x20device','placeholders','OTTPlayer','toString','u_resolution','channelName',',\x20offset:\x20','setFps','padStart','doNotRenderAugmentationCheckbox','getComputedStyle','Windows','Clicked\x20on\x20ad:\x20','TimeCodeArray2TimeCodeJson','open','getGlobalConfig','texParameteri','webgl','red','forplus','frameDrawer','AMC_EVENT_PLAYER_SEGMENT_PLAYBACK','onNewSegment','gameId','stopAugment','currentAds2BoundingRect','zIndex','rect','Offset\x20for\x20gameid=\x20','printTimecode','maxTouchPoints','\x20TimeFired:\x20','offset\x20for\x20','ad2place','TimeCodesFramesTranslator','location','lastTimeReportedIncomingTC','bindTexture','status','srcFrameRate','push','toISOString','offset','Src29_MediaTime29','getUTCSeconds','getUniformLocation','video\x20element\x20is\x20already\x20loaded.\x20Setting\x20up\x20onResizeCallBack','digitImg','requestAnimationFrame\x20is\x20supported','OnMetaData','<span\x20style=\x27font-size:\x2030px;\x27>,\x20resultTime:\x20','ARRAY_BUFFER','now','/package.json','AddAdvertisement','BlackBerry','Win','requestAnimationFrame','callback','attachShader','CleanGL','Palm','if\x20(alpha\x20<\x200.8)','join','ToggleFullscreen','requestVideoFrameCallback','options\x20after\x20merge\x20with\x20the\x20global\x20options:\x20','init','\x20\x20)</span>','VID.','postMessage','stage:','CLAMP_TO_EDGE','NOT\x20SUPPORTED','numberInput','userAgent','databrowser','composer::AddAdvertisement:\x20place-to-ads\x20mapping:\x20','FrameRateMode','OTTPlayer\x20version:\x20','ALPHA','ANI3','fetchAndFindGameIdAndOffsetFromMediaId:\x20I\x20Know\x20what\x20is\x20the\x20game\x20id\x20!\x20Its\x20','getSourceFPS','FPS\x20not\x20supported','log','forDoNotRender','composer::SelectAd:\x20The\x20selected\x20ad\x20should\x20be\x20in\x20place\x20','isSafariMac','clearColor','Got\x20the\x20following\x20config:\x20','FRAGMENT_SHADER','shift','Safari','bindVertexArray','getUTCHours',',\x20took:\x20','ads','catch','741484uaswAM','vertexShaderSourceV1','key','call',',\x20presentedFrames:\x20','http://webgl2fundamentals.org/webgl/lessons/webgl-boilerplate.html','GameId\x20for\x20mediaid=\x20','Src59_MediaTime60','#external','ctx','\x20\x20)','currentTime','dateTime','https://db8igqxlbvayn.cloudfront.net/prod','unknown','messageData','requestVideoFrameCallback\x20is\x20not\x20supported','version','iOS','pointer-events','plus05CorrectionCheckbox','TexUnitForGenericAd','isAdLoop','refreshRate','This\x20videoCallback\x20can\x20be\x20incorrect.\x20This\x20time\x20doing\x20stuff\x20in\x20requestAnimation\x20frame','get','type','SelectAd:\x20Failed\x20to\x20find\x20image\x20\x27',',\x20Game:\x20','Edge','TexUnitBaseForAlpha','OnNewSegment','https://www.virtualott.com','includes','checked','Timecode2Frames','u_resolution2','TEXTURE_MIN_FILTER','autoAddIndex','u_digitTopLeft','weHaveTheGameID','clientWidth','CreateDigitImg',',\x20LastSyncPointTime:','message','setMediaFPS:\x20Unknown\x20Media\x20FrameRate\x20mode','nextSibling','floor','setinfo',',\x20correction:\x20','generateMipmap','opera','UNPACK_ALIGNMENT','Error\x20fetching\x20and\x20processing\x20GameId\x20JSON:','render():\x20lastVideoFrameRenderedInGL==currentFrame:\x20','round','u_alpha','ad2Url','resize',',\x20correction2FrameJump:\x20','TimeCodeAddFrames','1596606MPIyNL','isApple','getProgramInfoLog','TexUnitForPlaceHolder','):\x20','map','onload','a\x20Mac','https://www.virtualott.com/ads/','texImage2D','TEXTURE_WRAP_T','Folder\x20name\x20for\x20','Average\x20refresh\x20screen\x20rate:\x20','3432424YLTEzn','img','mimeType','GenerateTexture','Project\x20name:\x20',',\x20LastSyncPoint:','alpha','getMilliseconds','body','\x20countAppleANI:\x20','iPad','u_digitSize','program','getUTCMilliseconds','black','an\x20Android\x20phone','emit','getShaderSource','clientY','hasDigit','\x20playing\x20at\x20','hls_fps','RenderTimecode','canvasSize','Error\x20compiling\x20shader:\x20','RenderingMode','getHours','info','SynchMethod','try\x20{\x0a\x0alet\x20UZIP\x20=\x20{};\x0aif(typeof\x20module\x20==\x20\x22object\x22)\x20module.exports\x20=\x20UZIP;\x0aUZIP[\x22parse\x22]\x20=\x20function(buf,\x20onlyNames)\x09//\x20ArrayBuffer\x0a{\x0a\x20\x20\x20\x20let\x20rUs\x20=\x20UZIP.bin.readUshort,\x20rUi\x20=\x20UZIP.bin.readUint,\x20o\x20=\x200,\x20out\x20=\x20{};\x0a\x20\x20\x20\x20let\x20data\x20=\x20new\x20Uint8Array(buf);\x0a\x20\x20\x20\x20let\x20eocd\x20=\x20data.length-4;\x0a\x0a\x20\x20\x20\x20while(rUi(data,\x20eocd)!=0x06054b50)\x20eocd--;\x0a\x0a\x20\x20\x20\x20o\x20=\x20eocd;\x0a\x20\x20\x20\x20o+=4;\x09//\x20sign\x20\x20=\x200x06054b50\x0a\x20\x20\x20\x20o+=4;\x20\x20//\x20disks\x20=\x200;\x0a\x20\x20\x20\x20let\x20cnu\x20=\x20rUs(data,\x20o);\x20\x20o+=2;\x0a\x20\x20\x20\x20let\x20cnt\x20=\x20rUs(data,\x20o);\x20\x20o+=2;\x0a\x0a\x20\x20\x20\x20let\x20csize\x20=\x20rUi(data,\x20o);\x20\x20o+=4;\x0a\x20\x20\x20\x20let\x20coffs\x20=\x20rUi(data,\x20o);\x20\x20o+=4;\x0a\x0a\x20\x20\x20\x20o\x20=\x20coffs;\x0a\x20\x20\x20\x20for(let\x20i=0;\x20i<cnu;\x20i++)\x0a\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20sign\x20=\x20rUi(data,\x20o);\x20\x20o+=4;\x0a\x20\x20\x20\x20\x20\x20\x20\x20o\x20+=\x204;\x20\x20//\x20versions;\x0a\x20\x20\x20\x20\x20\x20\x20\x20o\x20+=\x204;\x20\x20//\x20flag\x20+\x20compr\x0a\x20\x20\x20\x20\x20\x20\x20\x20o\x20+=\x204;\x20\x20//\x20time\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20crc32\x20=\x20rUi(data,\x20o);\x20\x20o+=4;\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20csize\x20=\x20rUi(data,\x20o);\x20\x20o+=4;\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20usize\x20=\x20rUi(data,\x20o);\x20\x20o+=4;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20nl\x20=\x20rUs(data,\x20o),\x20el\x20=\x20rUs(data,\x20o+2),\x20cl\x20=\x20rUs(data,\x20o+4);\x20\x20o\x20+=\x206;\x20\x20//\x20name,\x20extra,\x20comment\x0a\x20\x20\x20\x20\x20\x20\x20\x20o\x20+=\x208;\x20\x20//\x20disk,\x20attribs\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20roff\x20=\x20rUi(data,\x20o);\x20\x20o+=4;\x0a\x20\x20\x20\x20\x20\x20\x20\x20o\x20+=\x20nl\x20+\x20el\x20+\x20cl;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20UZIP._readLocal(data,\x20roff,\x20out,\x20csize,\x20usize,\x20onlyNames);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20//console.log(out);\x0a\x20\x20\x20\x20return\x20out;\x0a}\x0a\x0aUZIP._readLocal\x20=\x20function(data,\x20o,\x20out,\x20csize,\x20usize,\x20onlyNames)\x0a{\x0a\x20\x20\x20\x20let\x20rUs\x20=\x20UZIP.bin.readUshort,\x20rUi\x20=\x20UZIP.bin.readUint;\x0a\x20\x20\x20\x20let\x20sign\x20\x20=\x20rUi(data,\x20o);\x20\x20o+=4;\x0a\x20\x20\x20\x20let\x20ver\x20\x20\x20=\x20rUs(data,\x20o);\x20\x20o+=2;\x0a\x20\x20\x20\x20let\x20gpflg\x20=\x20rUs(data,\x20o);\x20\x20o+=2;\x0a\x20\x20\x20\x20//if((gpflg&8)!=0)\x20throw\x20\x22unknown\x20sizes\x22;\x0a\x20\x20\x20\x20let\x20cmpr\x20\x20=\x20rUs(data,\x20o);\x20\x20o+=2;\x0a\x0a\x20\x20\x20\x20let\x20time\x20\x20=\x20rUi(data,\x20o);\x20\x20o+=4;\x0a\x0a\x20\x20\x20\x20let\x20crc32\x20=\x20rUi(data,\x20o);\x20\x20o+=4;\x0a\x20\x20\x20\x20//let\x20csize\x20=\x20rUi(data,\x20o);\x20\x20o+=4;\x0a\x20\x20\x20\x20//let\x20usize\x20=\x20rUi(data,\x20o);\x20\x20o+=4;\x0a\x20\x20\x20\x20o+=8;\x0a\x0a\x20\x20\x20\x20let\x20nlen\x20\x20=\x20rUs(data,\x20o);\x20\x20o+=2;\x0a\x20\x20\x20\x20let\x20elen\x20\x20=\x20rUs(data,\x20o);\x20\x20o+=2;\x0a\x0a\x20\x20\x20\x20let\x20name\x20=\x20\x20UZIP.bin.readUTF8(data,\x20o,\x20nlen);\x20\x20o+=nlen;\x20\x20//console.log(name);\x0a\x20\x20\x20\x20o\x20+=\x20elen;\x0a\x0a\x20\x20\x20\x20//console.log(sign.toString(16),\x20ver,\x20gpflg,\x20cmpr,\x20crc32.toString(16),\x20\x22csize,\x20usize\x22,\x20csize,\x20usize,\x20nlen,\x20elen,\x20name,\x20o);\x0a\x20\x20\x20\x20if(onlyNames)\x20{\x20\x20out[name]={size:usize,\x20csize:csize};\x20\x20return;\x20\x20}\x0a\x20\x20\x20\x20let\x20file\x20=\x20new\x20Uint8Array(data.buffer,\x20o);\x0a\x20\x20\x20\x20if(false)\x20{}\x0a\x20\x20\x20\x20else\x20if(cmpr==0)\x20out[name]\x20=\x20new\x20Uint8Array(file.buffer.slice(o,\x20o+csize));\x0a\x20\x20\x20\x20else\x20if(cmpr==8)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20buf\x20=\x20new\x20Uint8Array(usize);\x20\x20UZIP.inflateRaw(file,\x20buf);\x0a\x20\x20\x20\x20\x20\x20\x20\x20/*let\x20nbuf\x20=\x20pako[\x22inflateRaw\x22](file);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(usize>8514000)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//console.log(PUtils.readASCII(buf\x20,\x208514500,\x20500));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//console.log(PUtils.readASCII(nbuf,\x208514500,\x20500));\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20for(let\x20i=0;\x20i<buf.length;\x20i++)\x20if(buf[i]!=nbuf[i])\x20{\x20\x20console.log(buf.length,\x20nbuf.length,\x20usize,\x20i);\x20\x20throw\x20\x22e\x22;\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20*/\x0a\x20\x20\x20\x20\x20\x20\x20\x20out[name]\x20=\x20buf;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20else\x20throw\x20\x22unknown\x20compression\x20method:\x20\x22+cmpr;\x0a}\x0a\x0aUZIP.inflateRaw\x20=\x20function(file,\x20buf)\x20{\x20\x20return\x20UZIP.F.inflate(file,\x20buf);\x20\x20}\x0aUZIP.inflate\x20\x20\x20\x20=\x20function(file,\x20buf)\x20{\x0a\x20\x20\x20\x20let\x20CMF\x20=\x20file[0],\x20FLG\x20=\x20file[1];\x0a\x20\x20\x20\x20let\x20CM\x20=\x20(CMF&15),\x20CINFO\x20=\x20(CMF>>>4);\x0a\x20\x20\x20\x20//console.log(CM,\x20CINFO,CMF,FLG);\x0a\x20\x20\x20\x20return\x20UZIP.inflateRaw(new\x20Uint8Array(file.buffer,\x20file.byteOffset+2,\x20file.length-6),\x20buf);\x0a}\x0aUZIP.deflate\x20\x20\x20\x20=\x20function(data,\x20opts/*,\x20buf,\x20off*/)\x20{\x0a\x20\x20\x20\x20if(opts==null)\x20opts={level:6};\x0a\x20\x20\x20\x20let\x20off=0,\x20buf=new\x20Uint8Array(50+Math.floor(data.length*1.1));\x0a\x20\x20\x20\x20buf[off]=120;\x20\x20buf[off+1]=156;\x20\x20off+=2;\x0a\x20\x20\x20\x20off\x20=\x20UZIP.F.deflateRaw(data,\x20buf,\x20off,\x20opts.level);\x0a\x20\x20\x20\x20let\x20crc\x20=\x20UZIP.adler(data,\x200,\x20data.length);\x0a\x20\x20\x20\x20buf[off+0]=((crc>>>24)&255);\x0a\x20\x20\x20\x20buf[off+1]=((crc>>>16)&255);\x0a\x20\x20\x20\x20buf[off+2]=((crc>>>\x208)&255);\x0a\x20\x20\x20\x20buf[off+3]=((crc>>>\x200)&255);\x0a\x20\x20\x20\x20return\x20new\x20Uint8Array(buf.buffer,\x200,\x20off+4);\x0a}\x0aUZIP.deflateRaw\x20=\x20function(data,\x20opts)\x20{\x0a\x20\x20\x20\x20if(opts==null)\x20opts={level:6};\x0a\x20\x20\x20\x20let\x20buf=new\x20Uint8Array(50+Math.floor(data.length*1.1));\x0a\x20\x20\x20\x20let\x20off\x20=\x20UZIP.F.deflateRaw(data,\x20buf,\x20off,\x20opts.level);\x0a\x20\x20\x20\x20return\x20new\x20Uint8Array(buf.buffer,\x200,\x20off);\x0a}\x0a\x0a\x0aUZIP.encode\x20=\x20function(obj,\x20noCmpr)\x20{\x0a\x20\x20\x20\x20if(noCmpr==null)\x20noCmpr=false;\x0a\x20\x20\x20\x20let\x20tot\x20=\x200,\x20wUi\x20=\x20UZIP.bin.writeUint,\x20wUs\x20=\x20UZIP.bin.writeUshort;\x0a\x20\x20\x20\x20let\x20zpd\x20=\x20{};\x0a\x20\x20\x20\x20for(let\x20p\x20in\x20obj)\x20{\x20\x20let\x20cpr\x20=\x20!UZIP._noNeed(p)\x20&&\x20!noCmpr,\x20buf\x20=\x20obj[p],\x20crc\x20=\x20UZIP.crc.crc(buf,0,buf.length);\x0a\x20\x20\x20\x20\x20\x20\x20\x20zpd[p]\x20=\x20{\x20\x20cpr:cpr,\x20usize:buf.length,\x20crc:crc,\x20file:\x20(cpr\x20?\x20UZIP.deflateRaw(buf)\x20:\x20buf)\x20\x20};\x20\x20}\x0a\x0a\x20\x20\x20\x20for(let\x20p\x20in\x20zpd)\x20tot\x20+=\x20zpd[p].file.length\x20+\x2030\x20+\x2046\x20+\x202*UZIP.bin.sizeUTF8(p);\x0a\x20\x20\x20\x20tot\x20+=\x20\x2022;\x0a\x0a\x20\x20\x20\x20let\x20data\x20=\x20new\x20Uint8Array(tot),\x20o\x20=\x200;\x0a\x20\x20\x20\x20let\x20fof\x20=\x20[]\x0a\x0a\x20\x20\x20\x20for(let\x20p\x20in\x20zpd)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20file\x20=\x20zpd[p];\x20\x20fof.push(o);\x0a\x20\x20\x20\x20\x20\x20\x20\x20o\x20=\x20UZIP._writeHeader(data,\x20o,\x20p,\x20file,\x200);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20let\x20i=0,\x20ioff\x20=\x20o;\x0a\x20\x20\x20\x20for(let\x20p\x20in\x20zpd)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20file\x20=\x20zpd[p];\x20\x20fof.push(o);\x0a\x20\x20\x20\x20\x20\x20\x20\x20o\x20=\x20UZIP._writeHeader(data,\x20o,\x20p,\x20file,\x201,\x20fof[i++]);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20let\x20csize\x20=\x20o-ioff;\x0a\x0a\x20\x20\x20\x20wUi(data,\x20o,\x200x06054b50);\x20\x20o+=4;\x0a\x20\x20\x20\x20o\x20+=\x204;\x20\x20//\x20disks\x0a\x20\x20\x20\x20wUs(data,\x20o,\x20i);\x20\x20o\x20+=\x202;\x0a\x20\x20\x20\x20wUs(data,\x20o,\x20i);\x20\x20o\x20+=\x202;\x09//\x20number\x20of\x20c\x20d\x20records\x0a\x20\x20\x20\x20wUi(data,\x20o,\x20csize);\x20\x20o\x20+=\x204;\x0a\x20\x20\x20\x20wUi(data,\x20o,\x20ioff\x20);\x20\x20o\x20+=\x204;\x0a\x20\x20\x20\x20o\x20+=\x202;\x0a\x20\x20\x20\x20return\x20data.buffer;\x0a}\x0a//\x20no\x20need\x20to\x20compress\x20.PNG,\x20.ZIP,\x20.JPEG\x20....\x0aUZIP._noNeed\x20=\x20function(fn)\x20{\x20\x20let\x20ext\x20=\x20fn.split(\x22.\x22).pop().toLowerCase();\x20\x20return\x20\x22png,jpg,jpeg,zip\x22.indexOf(ext)!=-1;\x20\x20}\x0a\x0aUZIP._writeHeader\x20=\x20function(data,\x20o,\x20p,\x20obj,\x20t,\x20roff)\x0a{\x0a\x20\x20\x20\x20let\x20wUi\x20=\x20UZIP.bin.writeUint,\x20wUs\x20=\x20UZIP.bin.writeUshort;\x0a\x20\x20\x20\x20let\x20file\x20=\x20obj.file;\x0a\x0a\x20\x20\x20\x20wUi(data,\x20o,\x20t==0\x20?\x200x04034b50\x20:\x200x02014b50);\x20\x20o+=4;\x20//\x20sign\x0a\x20\x20\x20\x20if(t==1)\x20o+=2;\x20\x20//\x20ver\x20made\x20by\x0a\x20\x20\x20\x20wUs(data,\x20o,\x2020);\x20\x20o+=2;\x09//\x20ver\x0a\x20\x20\x20\x20wUs(data,\x20o,\x20\x200);\x20\x20o+=2;\x20\x20\x20\x20//\x20gflip\x0a\x20\x20\x20\x20wUs(data,\x20o,\x20\x20obj.cpr?8:0);\x20\x20o+=2;\x09//\x20cmpr\x0a\x0a\x20\x20\x20\x20wUi(data,\x20o,\x20\x200);\x20\x20o+=4;\x09//\x20time\x0a\x20\x20\x20\x20wUi(data,\x20o,\x20obj.crc);\x20\x20o+=4;\x09//\x20crc32\x0a\x20\x20\x20\x20wUi(data,\x20o,\x20file.length);\x20\x20o+=4;\x09//\x20csize\x0a\x20\x20\x20\x20wUi(data,\x20o,\x20obj.usize);\x20\x20o+=4;\x09//\x20usize\x0a\x0a\x20\x20\x20\x20wUs(data,\x20o,\x20UZIP.bin.sizeUTF8(p));\x20\x20o+=2;\x09//\x20nlen\x0a\x20\x20\x20\x20wUs(data,\x20o,\x200);\x20\x20o+=2;\x09//\x20elen\x0a\x0a\x20\x20\x20\x20if(t==1)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20o\x20+=\x202;\x20\x20//\x20comment\x20length\x0a\x20\x20\x20\x20\x20\x20\x20\x20o\x20+=\x202;\x20\x20//\x20disk\x20number\x0a\x20\x20\x20\x20\x20\x20\x20\x20o\x20+=\x206;\x20\x20//\x20attributes\x0a\x20\x20\x20\x20\x20\x20\x20\x20wUi(data,\x20o,\x20roff);\x20\x20o+=4;\x09//\x20usize\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20let\x20nlen\x20=\x20UZIP.bin.writeUTF8(data,\x20o,\x20p);\x20\x20o+=\x20nlen;\x0a\x20\x20\x20\x20if(t==0)\x20{\x20\x20data.set(file,\x20o);\x20\x20o\x20+=\x20file.length;\x20\x20}\x0a\x20\x20\x20\x20return\x20o;\x0a}\x0aUZIP.crc\x20=\x20{\x0a\x20\x20\x20\x20table\x20:\x20(\x20function()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20tab\x20=\x20new\x20Uint32Array(256);\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(let\x20n=0;\x20n<256;\x20n++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20c\x20=\x20n;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(let\x20k=0;\x20k<8;\x20k++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(c\x20&\x201)\x20\x20c\x20=\x200xedb88320\x20^\x20(c\x20>>>\x201);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20else\x20\x20\x20\x20\x20\x20\x20\x20c\x20=\x20c\x20>>>\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20tab[n]\x20=\x20c;\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20tab;\x20\x20})(),\x0a\x20\x20\x20\x20update\x20:\x20function(c,\x20buf,\x20off,\x20len)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(let\x20i=0;\x20i<len;\x20i++)\x20\x20c\x20=\x20UZIP.crc.table[(c\x20^\x20buf[off+i])\x20&\x200xff]\x20^\x20(c\x20>>>\x208);\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20c;\x0a\x20\x20\x20\x20},\x0a\x20\x20\x20\x20crc\x20:\x20function(b,o,l)\x20\x20{\x20\x20return\x20UZIP.crc.update(0xffffffff,b,o,l)\x20^\x200xffffffff;\x20\x20}\x0a}\x0aUZIP.adler\x20=\x20function(data,o,len)\x20{\x0a\x20\x20\x20\x20let\x20a\x20=\x201,\x20b\x20=\x200;\x0a\x20\x20\x20\x20let\x20off\x20=\x20o,\x20end=o+len;\x0a\x20\x20\x20\x20while(off<end)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20eend\x20=\x20Math.min(off+5552,\x20end);\x0a\x20\x20\x20\x20\x20\x20\x20\x20while(off<eend)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20a\x20+=\x20data[off++];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20b\x20+=\x20a;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20a=a%65521;\x0a\x20\x20\x20\x20\x20\x20\x20\x20b=b%65521;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20(b\x20<<\x2016)\x20|\x20a;\x0a}\x0a\x0aUZIP.bin\x20=\x20{\x0a\x20\x20\x20\x20readUshort\x20:\x20function(buff,p)\x20\x20{\x20\x20return\x20(buff[p])\x20|\x20(buff[p+1]<<8);\x20\x20},\x0a\x20\x20\x20\x20writeUshort:\x20function(buff,p,n){\x20\x20buff[p]\x20=\x20(n)&255;\x20\x20buff[p+1]\x20=\x20(n>>8)&255;\x20\x20},\x0a\x20\x20\x20\x20readUint\x20\x20\x20:\x20function(buff,p)\x20\x20{\x20\x20return\x20(buff[p+3]*(256*256*256))\x20+\x20((buff[p+2]<<16)\x20|\x20(buff[p+1]<<\x208)\x20|\x20buff[p]);\x20\x20},\x0a\x20\x20\x20\x20writeUint\x20\x20:\x20function(buff,p,n){\x20\x20buff[p]=n&255;\x20\x20buff[p+1]=(n>>8)&255;\x20\x20buff[p+2]=(n>>16)&255;\x20\x20buff[p+3]=(n>>24)&255;\x20\x20},\x0a\x20\x20\x20\x20readASCII\x20\x20:\x20function(buff,p,l){\x20\x20let\x20s\x20=\x20\x22\x22;\x20\x20for(let\x20i=0;\x20i<l;\x20i++)\x20s\x20+=\x20String.fromCharCode(buff[p+i]);\x20\x20return\x20s;\x20\x20\x20\x20},\x0a\x20\x20\x20\x20writeASCII\x20:\x20function(data,p,s){\x20\x20for(let\x20i=0;\x20i<s.length;\x20i++)\x20data[p+i]\x20=\x20s.charCodeAt(i);\x20\x20},\x0a\x20\x20\x20\x20pad\x20:\x20function(n)\x20{\x20return\x20n.length\x20<\x202\x20?\x20\x220\x22\x20+\x20n\x20:\x20n;\x20},\x0a\x20\x20\x20\x20readUTF8\x20:\x20function(buff,\x20p,\x20l)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20s\x20=\x20\x22\x22,\x20ns;\x0a\x20\x20\x20\x20\x20\x20\x20\x20for(let\x20i=0;\x20i<l;\x20i++)\x20s\x20+=\x20\x22%\x22\x20+\x20UZIP.bin.pad(buff[p+i].toString(16));\x0a\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x20\x20ns\x20=\x20decodeURIComponent(s);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20catch(e)\x20{\x20\x20return\x20UZIP.bin.readASCII(buff,\x20p,\x20l);\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20\x20ns;\x0a\x20\x20\x20\x20},\x0a\x20\x20\x20\x20writeUTF8\x20:\x20function(buff,\x20p,\x20str)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20strl\x20=\x20str.length,\x20i=0;\x0a\x20\x20\x20\x20\x20\x20\x20\x20for(let\x20ci=0;\x20ci<strl;\x20ci++)\x0a\x20\x20\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20code\x20=\x20str.charCodeAt(ci);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20\x20\x20\x20\x20((code&(0xffffffff-(1<<\x207)+1))==0)\x20{\x20\x20buff[p+i]\x20=\x20(\x20\x20\x20\x20\x20code\x20\x20\x20\x20\x20);\x20\x20i++;\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20else\x20if((code&(0xffffffff-(1<<11)+1))==0)\x20{\x20\x20buff[p+i]\x20=\x20(192|(code>>\x206));\x20\x20buff[p+i+1]\x20=\x20(128|((code>>\x200)&63));\x20\x20i+=2;\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20else\x20if((code&(0xffffffff-(1<<16)+1))==0)\x20{\x20\x20buff[p+i]\x20=\x20(224|(code>>12));\x20\x20buff[p+i+1]\x20=\x20(128|((code>>\x206)&63));\x20\x20buff[p+i+2]\x20=\x20(128|((code>>0)&63));\x20\x20i+=3;\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20else\x20if((code&(0xffffffff-(1<<21)+1))==0)\x20{\x20\x20buff[p+i]\x20=\x20(240|(code>>18));\x20\x20buff[p+i+1]\x20=\x20(128|((code>>12)&63));\x20\x20buff[p+i+2]\x20=\x20(128|((code>>6)&63));\x20\x20buff[p+i+3]\x20=\x20(128|((code>>0)&63));\x20i+=4;\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20else\x20throw\x20\x22e\x22;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20i;\x0a\x20\x20\x20\x20},\x0a\x20\x20\x20\x20sizeUTF8\x20:\x20function(str)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20strl\x20=\x20str.length,\x20i=0;\x0a\x20\x20\x20\x20\x20\x20\x20\x20for(let\x20ci=0;\x20ci<strl;\x20ci++)\x0a\x20\x20\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20code\x20=\x20str.charCodeAt(ci);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20\x20\x20\x20\x20((code&(0xffffffff-(1<<\x207)+1))==0)\x20{\x20\x20i++\x20;\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20else\x20if((code&(0xffffffff-(1<<11)+1))==0)\x20{\x20\x20i+=2;\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20else\x20if((code&(0xffffffff-(1<<16)+1))==0)\x20{\x20\x20i+=3;\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20else\x20if((code&(0xffffffff-(1<<21)+1))==0)\x20{\x20\x20i+=4;\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20else\x20throw\x20\x22e\x22;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20i;\x0a\x20\x20\x20\x20}\x0a}\x0aUZIP.F\x20=\x20{};\x0a\x0aUZIP.F.deflateRaw\x20=\x20function(data,\x20out,\x20opos,\x20lvl)\x20{\x0a\x20\x20\x20\x20let\x20opts\x20=\x20[\x0a\x20\x20\x20\x20\x20\x20\x20\x20/*\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ush\x20good_length;\x20/*\x20reduce\x20lazy\x20search\x20above\x20this\x20match\x20length\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ush\x20max_lazy;\x20\x20\x20\x20/*\x20do\x20not\x20perform\x20lazy\x20search\x20above\x20this\x20match\x20length\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ush\x20nice_length;\x20/*\x20quit\x20search\x20above\x20this\x20match\x20length\x0a\x20\x20\x20\x20\x20\x20\x20\x20*/\x0a\x20\x20\x20\x20\x20\x20\x20\x20/*\x20\x20\x20\x20\x20\x20good\x20lazy\x20nice\x20chain\x20*/\x0a\x20\x20\x20\x20\x20\x20\x20\x20/*\x200\x20*/\x20[\x200,\x20\x20\x200,\x20\x20\x200,\x20\x20\x20\x200,0],\x20\x20/*\x20store\x20only\x20*/\x0a\x20\x20\x20\x20\x20\x20\x20\x20/*\x201\x20*/\x20[\x204,\x20\x20\x204,\x20\x20\x208,\x20\x20\x20\x204,0],\x20/*\x20max\x20speed,\x20no\x20lazy\x20matches\x20*/\x0a\x20\x20\x20\x20\x20\x20\x20\x20/*\x202\x20*/\x20[\x204,\x20\x20\x205,\x20\x2016,\x20\x20\x20\x208,0],\x0a\x20\x20\x20\x20\x20\x20\x20\x20/*\x203\x20*/\x20[\x204,\x20\x20\x206,\x20\x2016,\x20\x20\x2016,0],\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20/*\x204\x20*/\x20[\x204,\x20\x2010,\x20\x2016,\x20\x20\x2032,0],\x20\x20/*\x20lazy\x20matches\x20*/\x0a\x20\x20\x20\x20\x20\x20\x20\x20/*\x205\x20*/\x20[\x208,\x20\x2016,\x20\x2032,\x20\x20\x2032,0],\x0a\x20\x20\x20\x20\x20\x20\x20\x20/*\x206\x20*/\x20[\x208,\x20\x2016,\x20128,\x20\x20128,0],\x0a\x20\x20\x20\x20\x20\x20\x20\x20/*\x207\x20*/\x20[\x208,\x20\x2032,\x20128,\x20\x20256,0],\x0a\x20\x20\x20\x20\x20\x20\x20\x20/*\x208\x20*/\x20[32,\x20128,\x20258,\x201024,1],\x0a\x20\x20\x20\x20\x20\x20\x20\x20/*\x209\x20*/\x20[32,\x20258,\x20258,\x204096,1]];\x20/*\x20max\x20compression\x20*/\x0a\x0a\x20\x20\x20\x20let\x20opt\x20=\x20opts[lvl];\x0a\x0a\x0a\x20\x20\x20\x20let\x20U\x20=\x20UZIP.F.U,\x20goodIndex\x20=\x20UZIP.F._goodIndex,\x20hash\x20=\x20UZIP.F._hash,\x20putsE\x20=\x20UZIP.F._putsE;\x0a\x20\x20\x20\x20let\x20i\x20=\x200,\x20pos\x20=\x20opos<<3,\x20cvrd\x20=\x200,\x20dlen\x20=\x20data.length;\x0a\x0a\x20\x20\x20\x20if(lvl==0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20while(i<dlen)\x20{\x20\x20\x20let\x20len\x20=\x20Math.min(0xffff,\x20dlen-i);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20putsE(out,\x20pos,\x20(i+len==dlen\x20?\x201\x20:\x200));\x20\x20pos\x20=\x20UZIP.F._copyExact(data,\x20i,\x20len,\x20out,\x20pos+8);\x20\x20i\x20+=\x20len;\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20pos>>>3;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20lits\x20=\x20U.lits,\x20strt=U.strt,\x20prev=U.prev,\x20li=0,\x20lc=0,\x20bs=0,\x20ebits=0,\x20c=0,\x20nc=0;\x20\x20//\x20last_item,\x20literal_count,\x20block_start\x0a\x20\x20\x20\x20if(dlen>2)\x20{\x20\x20nc=UZIP.F._hash(data,0);\x20\x20strt[nc]=0;\x20\x20}\x0a\x20\x20\x20\x20let\x20nmch=0,nmci=0;\x0a\x0a\x20\x20\x20\x20for(i=0;\x20i<dlen;\x20i++)\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20c\x20=\x20nc;\x0a\x20\x20\x20\x20\x20\x20\x20\x20//*\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(i+1<dlen-2)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20nc\x20=\x20UZIP.F._hash(data,\x20i+1);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20ii\x20=\x20((i+1)&0x7fff);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20prev[ii]=strt[nc];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20strt[nc]=ii;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20//*/\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(cvrd<=i)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if((li>14000\x20||\x20lc>26697)\x20&&\x20(dlen-i)>100)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(cvrd<i)\x20{\x20\x20lits[li]=i-cvrd;\x20\x20li+=2;\x20\x20cvrd=i;\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20pos\x20=\x20UZIP.F._writeBlock(((i==dlen-1)\x20||\x20(cvrd==dlen))?1:0,\x20lits,\x20li,\x20ebits,\x20data,bs,i-bs,\x20out,\x20pos);\x20\x20li=lc=ebits=0;\x20\x20bs=i;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20mch\x20=\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//if(nmci==i)\x20mch=\x20nmch;\x20\x20else\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(i<dlen-2)\x20mch\x20=\x20UZIP.F._bestMatch(data,\x20i,\x20prev,\x20c,\x20Math.min(opt[2],dlen-i),\x20opt[3]);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/*\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(mch!=0\x20&&\x20opt[4]==1\x20&&\x20(mch>>>16)<opt[1]\x20&&\x20i+1<dlen-2)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20nmch\x20=\x20UZIP.F._bestMatch(data,\x20i+1,\x20prev,\x20nc,\x20opt[2],\x20opt[3]);\x20\x20nmci=i+1;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//let\x20mch2\x20=\x20UZIP.F._bestMatch(data,\x20i+2,\x20prev,\x20nnc);\x20\x20//nmci=i+1;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if((nmch>>>16)>(mch>>>16))\x20mch=0;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}//*/\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20len\x20=\x20mch>>>16,\x20dst\x20=\x20mch&0xffff;\x20\x20//if(i-dst<0)\x20throw\x20\x22e\x22;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(mch!=0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20len\x20=\x20mch>>>16,\x20dst\x20=\x20mch&0xffff;\x20\x20//if(i-dst<0)\x20throw\x20\x22e\x22;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20lgi\x20=\x20goodIndex(len,\x20U.of0);\x20\x20U.lhst[257+lgi]++;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20dgi\x20=\x20goodIndex(dst,\x20U.df0);\x20\x20U.dhst[\x20\x20\x20\x20dgi]++;\x20\x20ebits\x20+=\x20U.exb[lgi]\x20+\x20U.dxb[dgi];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20lits[li]\x20=\x20(len<<23)|(i-cvrd);\x20\x20lits[li+1]\x20=\x20(dst<<16)|(lgi<<8)|dgi;\x20\x20li+=2;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20cvrd\x20=\x20i\x20+\x20len;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20else\x20{\x09U.lhst[data[i]]++;\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20lc++;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if(bs!=i\x20||\x20data.length==0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(cvrd<i)\x20{\x20\x20lits[li]=i-cvrd;\x20\x20li+=2;\x20\x20cvrd=i;\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20pos\x20=\x20UZIP.F._writeBlock(1,\x20lits,\x20li,\x20ebits,\x20data,bs,i-bs,\x20out,\x20pos);\x20\x20li=0;\x20\x20lc=0;\x20\x20li=lc=ebits=0;\x20\x20bs=i;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20while((pos&7)!=0)\x20pos++;\x0a\x20\x20\x20\x20return\x20pos>>>3;\x0a}\x0aUZIP.F._bestMatch\x20=\x20function(data,\x20i,\x20prev,\x20c,\x20nice,\x20chain)\x20{\x0a\x20\x20\x20\x20let\x20ci\x20=\x20(i&0x7fff),\x20pi=prev[ci];\x0a\x20\x20\x20\x20//console.log(\x22----\x22,\x20i);\x0a\x20\x20\x20\x20let\x20dif\x20=\x20((ci-pi\x20+\x20(1<<15))\x20&\x200x7fff);\x20\x20if(pi==ci\x20||\x20c!=UZIP.F._hash(data,i-dif))\x20return\x200;\x0a\x20\x20\x20\x20let\x20tl=0,\x20td=0;\x20\x20//\x20top\x20length,\x20top\x20distance\x0a\x20\x20\x20\x20let\x20dlim\x20=\x20Math.min(0x7fff,\x20i);\x0a\x20\x20\x20\x20while(dif<=dlim\x20&&\x20--chain!=0\x20&&\x20pi!=ci\x20/*&&\x20c==UZIP.F._hash(data,i-dif)*/)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(tl==0\x20||\x20(data[i+tl]==data[i+tl-dif]))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20cl\x20=\x20UZIP.F._howLong(data,\x20i,\x20dif);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(cl>tl)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20tl=cl;\x20\x20td=dif;\x20\x20if(tl>=nice)\x20break;\x20\x20\x20\x20//*\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(dif+2<cl)\x20cl\x20=\x20dif+2;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20maxd\x20=\x200;\x20//\x20pi\x20does\x20not\x20point\x20to\x20the\x20start\x20of\x20the\x20word\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for(let\x20j=0;\x20j<cl-2;\x20j++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20ei\x20=\x20\x20(i-dif+j+\x20(1<<15))\x20&\x200x7fff;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20li\x20=\x20prev[ei];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20curd\x20=\x20(ei-li\x20+\x20(1<<15))\x20&\x200x7fff;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(curd>maxd)\x20{\x20\x20maxd=curd;\x20\x20pi\x20=\x20ei;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20\x20//*/\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20ci=pi;\x20\x20pi\x20=\x20prev[ci];\x0a\x20\x20\x20\x20\x20\x20\x20\x20dif\x20+=\x20((ci-pi\x20+\x20(1<<15))\x20&\x200x7fff);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20(tl<<16)|td;\x0a}\x0aUZIP.F._howLong\x20=\x20function(data,\x20i,\x20dif)\x20{\x0a\x20\x20\x20\x20if(data[i]!=data[i-dif]\x20||\x20data[i+1]!=data[i+1-dif]\x20||\x20data[i+2]!=data[i+2-dif])\x20return\x200;\x0a\x20\x20\x20\x20let\x20oi=i,\x20l\x20=\x20Math.min(data.length,\x20i+258);\x20\x20i+=3;\x0a\x20\x20\x20\x20//while(i+4<l\x20&&\x20data[i]==data[i-dif]\x20&&\x20data[i+1]==data[i+1-dif]\x20&&\x20data[i+2]==data[i+2-dif]\x20&&\x20data[i+3]==data[i+3-dif])\x20i+=4;\x0a\x20\x20\x20\x20while(i<l\x20&&\x20data[i]==data[i-dif])\x20i++;\x0a\x20\x20\x20\x20return\x20i-oi;\x0a}\x0aUZIP.F._hash\x20=\x20function(data,\x20i)\x20{\x0a\x20\x20\x20\x20return\x20(((data[i]<<8)\x20|\x20data[i+1])+(data[i+2]<<4))&0xffff;\x0a\x20\x20\x20\x20//let\x20hash_shift\x20=\x200,\x20hash_mask\x20=\x20255;\x0a\x20\x20\x20\x20//let\x20h\x20=\x20data[i+1]\x20%\x20251;\x0a\x20\x20\x20\x20//h\x20=\x20(((h\x20<<\x208)\x20+\x20data[i+2])\x20%\x20251);\x0a\x20\x20\x20\x20//h\x20=\x20(((h\x20<<\x208)\x20+\x20data[i+2])\x20%\x20251);\x0a\x20\x20\x20\x20//h\x20=\x20((h<<hash_shift)\x20^\x20(c)\x20)\x20&\x20hash_mask;\x0a\x20\x20\x20\x20//return\x20h\x20|\x20(data[i]<<8);\x0a\x20\x20\x20\x20//return\x20(data[i]\x20|\x20(data[i+1]<<8));\x0a}\x0a//UZIP.___toth\x20=\x200;\x0aUZIP.saved\x20=\x200;\x0aUZIP.F._writeBlock\x20=\x20function(BFINAL,\x20lits,\x20li,\x20ebits,\x20data,o0,l0,\x20out,\x20pos)\x20{\x0a\x20\x20\x20\x20let\x20U\x20=\x20UZIP.F.U,\x20putsF\x20=\x20UZIP.F._putsF,\x20putsE\x20=\x20UZIP.F._putsE;\x0a\x0a\x20\x20\x20\x20//*\x0a\x20\x20\x20\x20let\x20T,\x20ML,\x20MD,\x20MH,\x20numl,\x20numd,\x20numh,\x20lset,\x20dset;\x20\x20U.lhst[256]++;\x0a\x20\x20\x20\x20T\x20=\x20UZIP.F.getTrees();\x20ML=T[0];\x20MD=T[1];\x20MH=T[2];\x20numl=T[3];\x20numd=T[4];\x20numh=T[5];\x20lset=T[6];\x20dset=T[7];\x0a\x0a\x20\x20\x20\x20let\x20cstSize\x20=\x20(((pos+3)&7)==0\x20?\x200\x20:\x208-((pos+3)&7))\x20+\x2032\x20+\x20(l0<<3);\x0a\x20\x20\x20\x20let\x20fxdSize\x20=\x20ebits\x20+\x20UZIP.F.contSize(U.fltree,\x20U.lhst)\x20+\x20UZIP.F.contSize(U.fdtree,\x20U.dhst);\x0a\x20\x20\x20\x20let\x20dynSize\x20=\x20ebits\x20+\x20UZIP.F.contSize(U.ltree\x20,\x20U.lhst)\x20+\x20UZIP.F.contSize(U.dtree\x20,\x20U.dhst);\x0a\x20\x20\x20\x20dynSize\x20\x20\x20\x20+=\x2014\x20+\x203*numh\x20+\x20UZIP.F.contSize(U.itree,\x20U.ihst)\x20+\x20(U.ihst[16]*2\x20+\x20U.ihst[17]*3\x20+\x20U.ihst[18]*7);\x0a\x0a\x20\x20\x20\x20for(let\x20j=0;\x20j<286;\x20j++)\x20U.lhst[j]=0;\x20\x20\x20for(let\x20j=0;\x20j<30;\x20j++)\x20U.dhst[j]=0;\x20\x20\x20for(let\x20j=0;\x20j<19;\x20j++)\x20U.ihst[j]=0;\x0a\x20\x20\x20\x20//*/\x0a\x20\x20\x20\x20let\x20BTYPE\x20=\x20(cstSize<fxdSize\x20&&\x20cstSize<dynSize)\x20?\x200\x20:\x20(\x20fxdSize<dynSize\x20?\x201\x20:\x202\x20);\x0a\x20\x20\x20\x20putsF(out,\x20pos,\x20BFINAL);\x20\x20putsF(out,\x20pos+1,\x20BTYPE);\x20\x20pos+=3;\x0a\x0a\x20\x20\x20\x20let\x20opos\x20=\x20pos;\x0a\x20\x20\x20\x20if(BTYPE==0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20while((pos&7)!=0)\x20pos++;\x0a\x20\x20\x20\x20\x20\x20\x20\x20pos\x20=\x20UZIP.F._copyExact(data,\x20o0,\x20l0,\x20out,\x20pos);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20ltree,\x20dtree;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(BTYPE==1)\x20{\x20\x20ltree=U.fltree;\x20\x20dtree=U.fdtree;\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(BTYPE==2)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20UZIP.F.makeCodes(U.ltree,\x20ML);\x20\x20UZIP.F.revCodes(U.ltree,\x20ML);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20UZIP.F.makeCodes(U.dtree,\x20MD);\x20\x20UZIP.F.revCodes(U.dtree,\x20MD);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20UZIP.F.makeCodes(U.itree,\x20MH);\x20\x20UZIP.F.revCodes(U.itree,\x20MH);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ltree\x20=\x20U.ltree;\x20\x20dtree\x20=\x20U.dtree;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20putsE(out,\x20pos,numl-257);\x20\x20pos+=5;\x20\x20//\x20286\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20putsE(out,\x20pos,numd-\x20\x201);\x20\x20pos+=5;\x20\x20//\x2030\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20putsE(out,\x20pos,numh-\x20\x204);\x20\x20pos+=4;\x20\x20//\x2019\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for(let\x20i=0;\x20i<numh;\x20i++)\x20putsE(out,\x20pos+i*3,\x20U.itree[(U.ordr[i]<<1)+1]);\x20\x20\x20pos+=3*\x20numh;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20pos\x20=\x20UZIP.F._codeTiny(lset,\x20U.itree,\x20out,\x20pos);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20pos\x20=\x20UZIP.F._codeTiny(dset,\x20U.itree,\x20out,\x20pos);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20off=o0;\x0a\x20\x20\x20\x20\x20\x20\x20\x20for(let\x20si=0;\x20si<li;\x20si+=2)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20qb=lits[si],\x20len=(qb>>>23),\x20end\x20=\x20off+(qb&((1<<23)-1));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20while(off<end)\x20pos\x20=\x20UZIP.F._writeLit(data[off++],\x20ltree,\x20out,\x20pos);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(len!=0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20qc\x20=\x20lits[si+1],\x20dst=(qc>>16),\x20lgi=(qc>>8)&255,\x20dgi=(qc&255);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20pos\x20=\x20UZIP.F._writeLit(257+lgi,\x20ltree,\x20out,\x20pos);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20putsE(out,\x20pos,\x20len-U.of0[lgi]);\x20\x20pos+=U.exb[lgi];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20pos\x20=\x20UZIP.F._writeLit(dgi,\x20dtree,\x20out,\x20pos);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20putsF(out,\x20pos,\x20dst-U.df0[dgi]);\x20\x20pos+=U.dxb[dgi];\x20\x20off+=len;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20pos\x20=\x20UZIP.F._writeLit(256,\x20ltree,\x20out,\x20pos);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20//console.log(pos-opos,\x20fxdSize,\x20dynSize,\x20cstSize);\x0a\x20\x20\x20\x20return\x20pos;\x0a}\x0aUZIP.F._copyExact\x20=\x20function(data,off,len,out,pos)\x20{\x0a\x20\x20\x20\x20let\x20p8\x20=\x20(pos>>>3);\x0a\x20\x20\x20\x20out[p8]=(len);\x20\x20out[p8+1]=(len>>>8);\x20\x20out[p8+2]=255-out[p8];\x20\x20out[p8+3]=255-out[p8+1];\x20\x20p8+=4;\x0a\x20\x20\x20\x20out.set(new\x20Uint8Array(data.buffer,\x20off,\x20len),\x20p8);\x0a\x20\x20\x20\x20//for(let\x20i=0;\x20i<len;\x20i++)\x20out[p8+i]=data[off+i];\x0a\x20\x20\x20\x20return\x20pos\x20+\x20((len+4)<<3);\x0a}\x0a/*\x0a\x09Interesting\x20facts:\x0a\x09-\x20decompressed\x20block\x20can\x20have\x20bytes,\x20which\x20do\x20not\x20occur\x20in\x20a\x20Huffman\x20tree\x20(copied\x20from\x20the\x20previous\x20block\x20by\x20reference)\x0a*/\x0a\x0aUZIP.F.getTrees\x20=\x20function()\x20{\x0a\x20\x20\x20\x20let\x20U\x20=\x20UZIP.F.U;\x0a\x20\x20\x20\x20let\x20ML\x20=\x20UZIP.F._hufTree(U.lhst,\x20U.ltree,\x2015);\x0a\x20\x20\x20\x20let\x20MD\x20=\x20UZIP.F._hufTree(U.dhst,\x20U.dtree,\x2015);\x0a\x20\x20\x20\x20let\x20lset\x20=\x20[],\x20numl\x20=\x20UZIP.F._lenCodes(U.ltree,\x20lset);\x0a\x20\x20\x20\x20let\x20dset\x20=\x20[],\x20numd\x20=\x20UZIP.F._lenCodes(U.dtree,\x20dset);\x0a\x20\x20\x20\x20for(let\x20i=0;\x20i<lset.length;\x20i+=2)\x20U.ihst[lset[i]]++;\x0a\x20\x20\x20\x20for(let\x20i=0;\x20i<dset.length;\x20i+=2)\x20U.ihst[dset[i]]++;\x0a\x20\x20\x20\x20let\x20MH\x20=\x20UZIP.F._hufTree(U.ihst,\x20U.itree,\x20\x207);\x0a\x20\x20\x20\x20let\x20numh\x20=\x2019;\x20\x20while(numh>4\x20&&\x20U.itree[(U.ordr[numh-1]<<1)+1]==0)\x20numh--;\x0a\x20\x20\x20\x20return\x20[ML,\x20MD,\x20MH,\x20numl,\x20numd,\x20numh,\x20lset,\x20dset];\x0a}\x0aUZIP.F.getSecond=\x20function(a)\x20{\x20\x20let\x20b=[];\x20\x20for(let\x20i=0;\x20i<a.length;\x20i+=2)\x20b.push\x20\x20(a[i+1]);\x20\x20return\x20b;\x20\x20}\x0aUZIP.F.nonZero\x20\x20=\x20function(a)\x20{\x20\x20let\x20b=\x20\x22\x22;\x20\x20for(let\x20i=0;\x20i<a.length;\x20i+=2)\x20if(a[i+1]!=0)b+=(i>>1)+\x22,\x22;\x20\x20return\x20b;\x20\x20}\x0aUZIP.F.contSize\x20=\x20function(tree,\x20hst)\x20{\x20\x20let\x20s=0;\x20\x20for(let\x20i=0;\x20i<hst.length;\x20i++)\x20s+=\x20hst[i]*tree[(i<<1)+1];\x20\x20return\x20s;\x20\x20}\x0aUZIP.F._codeTiny\x20=\x20function(set,\x20tree,\x20out,\x20pos)\x20{\x0a\x20\x20\x20\x20for(let\x20i=0;\x20i<set.length;\x20i+=2)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20l\x20=\x20set[i],\x20rst\x20=\x20set[i+1];\x20\x20//console.log(l,\x20pos,\x20tree[(l<<1)+1]);\x0a\x20\x20\x20\x20\x20\x20\x20\x20pos\x20=\x20UZIP.F._writeLit(l,\x20tree,\x20out,\x20pos);\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20rsl\x20=\x20l==16\x20?\x202\x20:\x20(l==17\x20?\x203\x20:\x207);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(l>15)\x20{\x20\x20UZIP.F._putsE(out,\x20pos,\x20rst,\x20rsl);\x20\x20pos+=rsl;\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20pos;\x0a}\x0aUZIP.F._lenCodes\x20=\x20function(tree,\x20set)\x20{\x0a\x20\x20\x20\x20let\x20len=tree.length;\x20\x20while(len!=2\x20&&\x20tree[len-1]==0)\x20len-=2;\x20\x20//\x20when\x20no\x20distances,\x20keep\x20one\x20code\x20with\x20length\x200\x0a\x20\x20\x20\x20for(let\x20i=0;\x20i<len;\x20i+=2)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20l\x20=\x20tree[i+1],\x20nxt\x20=\x20(i+3<len\x20?\x20tree[i+3]:-1),\x20\x20nnxt\x20=\x20(i+5<len\x20?\x20tree[i+5]:-1),\x20\x20prv\x20=\x20(i==0\x20?\x20-1\x20:\x20tree[i-1]);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(l==0\x20&&\x20nxt==l\x20&&\x20nnxt==l)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20lz\x20=\x20i+5;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20while(lz+2<len\x20&&\x20tree[lz+2]==l)\x20lz+=2;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20zc\x20=\x20Math.min((lz+1-i)>>>1,\x20138);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(zc<11)\x20set.push(17,\x20zc-3);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20else\x20set.push(18,\x20zc-11);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20i\x20+=\x20zc*2-2;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20else\x20if(l==prv\x20&&\x20nxt==l\x20&&\x20nnxt==l)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20lz\x20=\x20i+5;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20while(lz+2<len\x20&&\x20tree[lz+2]==l)\x20lz+=2;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20zc\x20=\x20Math.min((lz+1-i)>>>1,\x206);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20set.push(16,\x20zc-3);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20i\x20+=\x20zc*2-2;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20else\x20set.push(l,\x200);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20len>>>1;\x0a}\x0aUZIP.F._hufTree\x20\x20\x20=\x20function(hst,\x20tree,\x20MAXL)\x20{\x0a\x20\x20\x20\x20let\x20list=[],\x20hl\x20=\x20hst.length,\x20tl=tree.length,\x20i=0;\x0a\x20\x20\x20\x20for(i=0;\x20i<tl;\x20i+=2)\x20{\x20\x20tree[i]=0;\x20\x20tree[i+1]=0;\x20\x20}\x0a\x20\x20\x20\x20for(i=0;\x20i<hl;\x20i++)\x20if(hst[i]!=0)\x20list.push({lit:i,\x20f:hst[i]});\x0a\x20\x20\x20\x20let\x20end\x20=\x20list.length,\x20l2=list.slice(0);\x0a\x20\x20\x20\x20if(end==0)\x20return\x200;\x20\x20//\x20empty\x20histogram\x20(usually\x20for\x20dist)\x0a\x20\x20\x20\x20if(end==1)\x20{\x20\x20let\x20lit=list[0].lit,\x20l2=lit==0?1:0;\x20\x20tree[(lit<<1)+1]=1;\x20\x20tree[(l2<<1)+1]=1;\x20\x20return\x201;\x20\x20}\x0a\x20\x20\x20\x20list.sort(function(a,b){return\x20a.f-b.f;});\x0a\x20\x20\x20\x20let\x20a=list[0],\x20b=list[1],\x20i0=0,\x20i1=1,\x20i2=2;\x20\x20list[0]={lit:-1,f:a.f+b.f,l:a,r:b,d:0};\x0a\x20\x20\x20\x20while(i1!=end-1)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(i0!=i1\x20&&\x20(i2==end\x20||\x20list[i0].f<list[i2].f))\x20{\x20\x20a=list[i0++];\x20\x20}\x20\x20else\x20{\x20\x20a=list[i2++];\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(i0!=i1\x20&&\x20(i2==end\x20||\x20list[i0].f<list[i2].f))\x20{\x20\x20b=list[i0++];\x20\x20}\x20\x20else\x20{\x20\x20b=list[i2++];\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20list[i1++]={lit:-1,f:a.f+b.f,\x20l:a,r:b};\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20let\x20maxl\x20=\x20UZIP.F.setDepth(list[i1-1],\x200);\x0a\x20\x20\x20\x20if(maxl>MAXL)\x20{\x20\x20UZIP.F.restrictDepth(l2,\x20MAXL,\x20maxl);\x20\x20maxl\x20=\x20MAXL;\x20\x20}\x0a\x20\x20\x20\x20for(i=0;\x20i<end;\x20i++)\x20tree[(l2[i].lit<<1)+1]=l2[i].d;\x0a\x20\x20\x20\x20return\x20maxl;\x0a}\x0a\x0aUZIP.F.setDepth\x20\x20=\x20function(t,\x20d)\x20{\x0a\x20\x20\x20\x20if(t.lit!=-1)\x20{\x20\x20t.d=d;\x20\x20return\x20d;\x20\x20}\x0a\x20\x20\x20\x20return\x20Math.max(\x20UZIP.F.setDepth(t.l,\x20d+1),\x20\x20UZIP.F.setDepth(t.r,\x20d+1)\x20);\x0a}\x0a\x0aUZIP.F.restrictDepth\x20=\x20function(dps,\x20MD,\x20maxl)\x20{\x0a\x20\x20\x20\x20let\x20i=0,\x20bCost=1<<(maxl-MD),\x20dbt=0;\x0a\x20\x20\x20\x20dps.sort(function(a,b){return\x20b.d==a.d\x20?\x20a.f-b.f\x20:\x20b.d-a.d;});\x0a\x0a\x20\x20\x20\x20for(i=0;\x20i<dps.length;\x20i++)\x20if(dps[i].d>MD)\x20{\x20\x20let\x20od=dps[i].d;\x20\x20dps[i].d=MD;\x20\x20dbt+=bCost-(1<<(maxl-od));\x20\x20}\x20\x20else\x20break;\x0a\x20\x20\x20\x20dbt\x20=\x20dbt>>>(maxl-MD);\x0a\x20\x20\x20\x20while(dbt>0)\x20{\x20\x20let\x20od=dps[i].d;\x20\x20if(od<MD)\x20{\x20\x20dps[i].d++;\x20\x20dbt-=(1<<(MD-od-1));\x20\x20}\x20\x20else\x20\x20i++;\x20\x20}\x0a\x20\x20\x20\x20for(;\x20i>=0;\x20i--)\x20if(dps[i].d==MD\x20&&\x20dbt<0)\x20{\x20\x20dps[i].d--;\x20\x20dbt++;\x20\x20}\x20\x20if(dbt!=0)\x20console.log(\x22debt\x20left\x22);\x0a}\x0a\x0aUZIP.F._goodIndex\x20=\x20function(v,\x20arr)\x20{\x0a\x20\x20\x20\x20let\x20i=0;\x20\x20if(arr[i|16]<=v)\x20i|=16;\x20\x20if(arr[i|8]<=v)\x20i|=8;\x20\x20if(arr[i|4]<=v)\x20i|=4;\x20\x20if(arr[i|2]<=v)\x20i|=2;\x20\x20if(arr[i|1]<=v)\x20i|=1;\x20\x20return\x20i;\x0a}\x0aUZIP.F._writeLit\x20=\x20function(ch,\x20ltree,\x20out,\x20pos)\x20{\x0a\x20\x20\x20\x20UZIP.F._putsF(out,\x20pos,\x20ltree[ch<<1]);\x0a\x20\x20\x20\x20return\x20pos+ltree[(ch<<1)+1];\x0a}\x0aUZIP.F.inflate\x20=\x20function(data,\x20buf)\x20{\x0a\x20\x20\x20\x20let\x20u8=Uint8Array;\x0a\x20\x20\x20\x20if(data[0]==3\x20&&\x20data[1]==0)\x20return\x20(buf\x20?\x20buf\x20:\x20new\x20u8(0));\x0a\x20\x20\x20\x20let\x20F=UZIP.F,\x20bitsF\x20=\x20F._bitsF,\x20bitsE\x20=\x20F._bitsE,\x20decodeTiny\x20=\x20F._decodeTiny,\x20makeCodes\x20=\x20F.makeCodes,\x20codes2map=F.codes2map,\x20get17\x20=\x20F._get17;\x0a\x20\x20\x20\x20let\x20U\x20=\x20F.U;\x0a\x0a\x20\x20\x20\x20let\x20noBuf\x20=\x20(buf==null);\x0a\x20\x20\x20\x20if(noBuf)\x20buf\x20=\x20new\x20u8((data.length>>>2)<<3);\x0a\x0a\x20\x20\x20\x20let\x20BFINAL=0,\x20BTYPE=0,\x20HLIT=0,\x20HDIST=0,\x20HCLEN=0,\x20ML=0,\x20MD=0;\x0a\x20\x20\x20\x20let\x20off\x20=\x200,\x20pos\x20=\x200;\x0a\x20\x20\x20\x20let\x20lmap,\x20dmap;\x0a\x0a\x20\x20\x20\x20while(BFINAL==0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20BFINAL\x20=\x20bitsF(data,\x20pos\x20\x20,\x201);\x0a\x20\x20\x20\x20\x20\x20\x20\x20BTYPE\x20\x20=\x20bitsF(data,\x20pos+1,\x202);\x20\x20pos+=3;\x0a\x20\x20\x20\x20\x20\x20\x20\x20//console.log(BFINAL,\x20BTYPE);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(BTYPE==0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if((pos&7)!=0)\x20pos+=8-(pos&7);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20p8\x20=\x20(pos>>>3)+4,\x20len\x20=\x20data[p8-4]|(data[p8-3]<<8);\x20\x20//console.log(len);//bitsF(data,\x20pos,\x2016),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(noBuf)\x20buf=UZIP.F._check(buf,\x20off+len);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20buf.set(new\x20u8(data.buffer,\x20data.byteOffset+p8,\x20len),\x20off);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//for(let\x20i=0;\x20i<len;\x20i++)\x20buf[off+i]\x20=\x20data[p8+i];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//for(let\x20i=0;\x20i<len;\x20i++)\x20if(buf[off+i]\x20!=\x20data[p8+i])\x20throw\x20\x22e\x22;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20pos\x20=\x20((p8+len)<<3);\x20\x20off+=len;\x20\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(noBuf)\x20buf=UZIP.F._check(buf,\x20off+(1<<17));\x20\x20//\x20really\x20not\x20enough\x20in\x20many\x20cases\x20(but\x20PNG\x20and\x20ZIP\x20provide\x20buffer\x20in\x20advance)\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(BTYPE==1)\x20{\x20\x20lmap\x20=\x20U.flmap;\x20\x20dmap\x20=\x20U.fdmap;\x20\x20ML\x20=\x20(1<<9)-1;\x20\x20MD\x20=\x20(1<<5)-1;\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(BTYPE==2)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20HLIT\x20\x20=\x20bitsE(data,\x20pos\x20\x20\x20,\x205)+257;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20HDIST\x20=\x20bitsE(data,\x20pos+\x205,\x205)+\x20\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20HCLEN\x20=\x20bitsE(data,\x20pos+10,\x204)+\x20\x204;\x20\x20pos+=14;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20ppos\x20=\x20pos;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for(let\x20i=0;\x20i<38;\x20i+=2)\x20{\x20\x20U.itree[i]=0;\x20\x20U.itree[i+1]=0;\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20tl\x20=\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for(let\x20i=0;\x20i<HCLEN;\x20i++)\x20{\x20\x20let\x20l=bitsE(data,\x20pos+i*3,\x203);\x20\x20U.itree[(U.ordr[i]<<1)+1]\x20=\x20l;\x20\x20if(l>tl)tl=l;\x20\x20}\x20\x20\x20\x20\x20pos+=3*HCLEN;\x20\x20//console.log(itree);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20makeCodes(U.itree,\x20tl);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20codes2map(U.itree,\x20tl,\x20U.imap);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20lmap\x20=\x20U.lmap;\x20\x20dmap\x20=\x20U.dmap;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20pos\x20=\x20decodeTiny(U.imap,\x20(1<<tl)-1,\x20HLIT+HDIST,\x20data,\x20pos,\x20U.ttree);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20mx0\x20=\x20F._copyOut(U.ttree,\x20\x20\x20\x200,\x20HLIT\x20,\x20U.ltree);\x20\x20ML\x20=\x20(1<<mx0)-1;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20mx1\x20=\x20F._copyOut(U.ttree,\x20HLIT,\x20HDIST,\x20U.dtree);\x20\x20MD\x20=\x20(1<<mx1)-1;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//let\x20ml\x20=\x20decodeTiny(U.imap,\x20(1<<tl)-1,\x20HLIT\x20,\x20data,\x20pos,\x20U.ltree);\x20ML\x20=\x20(1<<(ml>>>24))-1;\x20\x20pos+=(ml&0xffffff);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20makeCodes(U.ltree,\x20mx0);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20codes2map(U.ltree,\x20mx0,\x20lmap);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//let\x20md\x20=\x20decodeTiny(U.imap,\x20(1<<tl)-1,\x20HDIST,\x20data,\x20pos,\x20U.dtree);\x20MD\x20=\x20(1<<(md>>>24))-1;\x20\x20pos+=(md&0xffffff);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20makeCodes(U.dtree,\x20mx1);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20codes2map(U.dtree,\x20mx1,\x20dmap);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20//let\x20ooff=off,\x20opos=pos;\x0a\x20\x20\x20\x20\x20\x20\x20\x20while(true)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20code\x20=\x20lmap[get17(data,\x20pos)\x20&\x20ML];\x20\x20pos\x20+=\x20code&15;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20lit\x20=\x20code>>>4;\x20\x20//U.lhst[lit]++;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if((lit>>>8)==0)\x20{\x20\x20buf[off++]\x20=\x20lit;\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20else\x20if(lit==256)\x20{\x20\x20break;\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20end\x20=\x20off+lit-254;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(lit>264)\x20{\x20let\x20ebs\x20=\x20U.ldef[lit-257];\x20\x20end\x20=\x20off\x20+\x20(ebs>>>3)\x20+\x20bitsE(data,\x20pos,\x20ebs&7);\x20\x20pos\x20+=\x20ebs&7;\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//UZIP.F.dst[end-off]++;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20dcode\x20=\x20dmap[get17(data,\x20pos)\x20&\x20MD];\x20\x20pos\x20+=\x20dcode&15;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20dlit\x20=\x20dcode>>>4;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20dbs\x20=\x20U.ddef[dlit],\x20dst\x20=\x20(dbs>>>4)\x20+\x20bitsF(data,\x20pos,\x20dbs&15);\x20\x20pos\x20+=\x20dbs&15;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//let\x20o0\x20=\x20off-dst,\x20stp\x20=\x20Math.min(end-off,\x20dst);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//if(stp>20)\x20while(off<end)\x20{\x20\x20buf.copyWithin(off,\x20o0,\x20o0+stp);\x20\x20off+=stp;\x20\x20}\x20\x20else\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//if(end-dst<=off)\x20buf.copyWithin(off,\x20off-dst,\x20end-dst);\x20\x20else\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//if(dst==1)\x20buf.fill(buf[off-1],\x20off,\x20end);\x20\x20else\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(noBuf)\x20buf=UZIP.F._check(buf,\x20off+(1<<17));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20while(off<end)\x20{\x20\x20buf[off]=buf[off++-dst];\x20\x20\x20\x20buf[off]=buf[off++-dst];\x20\x20buf[off]=buf[off++-dst];\x20\x20buf[off]=buf[off++-dst];\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20off=end;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//while(off!=end)\x20{\x20\x20buf[off]=buf[off++-dst];\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20//console.log(off-ooff,\x20(pos-opos)>>>3);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20//console.log(UZIP.F.dst);\x0a\x20\x20\x20\x20//console.log(tlen,\x20dlen,\x20off-tlen+tcnt);\x0a\x20\x20\x20\x20return\x20buf.length==off\x20?\x20buf\x20:\x20buf.slice(0,off);\x0a}\x0aUZIP.F._check=function(buf,\x20len)\x20{\x0a\x20\x20\x20\x20let\x20bl=buf.length;\x20\x20if(len<=bl)\x20return\x20buf;\x0a\x20\x20\x20\x20let\x20nbuf\x20=\x20new\x20Uint8Array(Math.max(bl<<1,len));\x20\x20nbuf.set(buf,0);\x0a\x20\x20\x20\x20//for(let\x20i=0;\x20i<bl;\x20i+=4)\x20{\x20\x20nbuf[i]=buf[i];\x20\x20nbuf[i+1]=buf[i+1];\x20\x20nbuf[i+2]=buf[i+2];\x20\x20nbuf[i+3]=buf[i+3];\x20\x20}\x0a\x20\x20\x20\x20return\x20nbuf;\x0a}\x0a\x0aUZIP.F._decodeTiny\x20=\x20function(lmap,\x20LL,\x20len,\x20data,\x20pos,\x20tree)\x20{\x0a\x20\x20\x20\x20let\x20bitsE\x20=\x20UZIP.F._bitsE,\x20get17\x20=\x20UZIP.F._get17;\x0a\x20\x20\x20\x20let\x20i\x20=\x200;\x0a\x20\x20\x20\x20while(i<len)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20code\x20=\x20lmap[get17(data,\x20pos)&LL];\x20\x20pos+=code&15;\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20lit\x20=\x20code>>>4;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(lit<=15)\x20{\x20\x20tree[i]=lit;\x20\x20i++;\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20ll\x20=\x200,\x20n\x20=\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(lit==16)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20n\x20=\x20(3\x20\x20+\x20bitsE(data,\x20pos,\x202));\x20\x20pos\x20+=\x202;\x20\x20ll\x20=\x20tree[i-1];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20else\x20if(lit==17)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20n\x20=\x20(3\x20\x20+\x20bitsE(data,\x20pos,\x203));\x20\x20pos\x20+=\x203;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20else\x20if(lit==18)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20n\x20=\x20(11\x20+\x20bitsE(data,\x20pos,\x207));\x20\x20pos\x20+=\x207;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20ni\x20=\x20i+n;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20while(i<ni)\x20{\x20\x20tree[i]=ll;\x20\x20i++;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20pos;\x0a}\x0aUZIP.F._copyOut\x20=\x20function(src,\x20off,\x20len,\x20tree)\x20{\x0a\x20\x20\x20\x20let\x20mx=0,\x20i=0,\x20tl=tree.length>>>1;\x0a\x20\x20\x20\x20while(i<len)\x20{\x20\x20let\x20v=src[i+off];\x20\x20tree[(i<<1)]=0;\x20\x20tree[(i<<1)+1]=v;\x20\x20if(v>mx)mx=v;\x20\x20i++;\x20\x20}\x0a\x20\x20\x20\x20while(i<tl\x20)\x20{\x20\x20tree[(i<<1)]=0;\x20\x20tree[(i<<1)+1]=0;\x20\x20i++;\x20\x20}\x0a\x20\x20\x20\x20return\x20mx;\x0a}\x0a\x0aUZIP.F.makeCodes\x20=\x20function(tree,\x20MAX_BITS)\x20{\x20\x20//\x20code,\x20length\x0a\x20\x20\x20\x20let\x20U\x20=\x20UZIP.F.U;\x0a\x20\x20\x20\x20let\x20max_code\x20=\x20tree.length;\x0a\x20\x20\x20\x20let\x20code,\x20bits,\x20n,\x20i,\x20len;\x0a\x0a\x20\x20\x20\x20let\x20bl_count\x20=\x20U.bl_count;\x20\x20for(let\x20i=0;\x20i<=MAX_BITS;\x20i++)\x20bl_count[i]=0;\x0a\x20\x20\x20\x20for(i=1;\x20i<max_code;\x20i+=2)\x20bl_count[tree[i]]++;\x0a\x0a\x20\x20\x20\x20let\x20next_code\x20=\x20U.next_code;\x09//\x20smallest\x20code\x20for\x20each\x20length\x0a\x0a\x20\x20\x20\x20code\x20=\x200;\x0a\x20\x20\x20\x20bl_count[0]\x20=\x200;\x0a\x20\x20\x20\x20for\x20(bits\x20=\x201;\x20bits\x20<=\x20MAX_BITS;\x20bits++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20code\x20=\x20(code\x20+\x20bl_count[bits-1])\x20<<\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20next_code[bits]\x20=\x20code;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20for\x20(n\x20=\x200;\x20n\x20<\x20max_code;\x20n+=2)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20len\x20=\x20tree[n+1];\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(len\x20!=\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20tree[n]\x20=\x20next_code[len];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20next_code[len]++;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}\x0aUZIP.F.codes2map\x20=\x20function(tree,\x20MAX_BITS,\x20map)\x20{\x0a\x20\x20\x20\x20let\x20max_code\x20=\x20tree.length;\x0a\x20\x20\x20\x20let\x20U=UZIP.F.U,\x20r15\x20=\x20U.rev15;\x0a\x20\x20\x20\x20for(let\x20i=0;\x20i<max_code;\x20i+=2)\x20if(tree[i+1]!=0)\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20lit\x20=\x20i>>1;\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20cl\x20=\x20tree[i+1],\x20val\x20=\x20(lit<<4)|cl;\x20//\x20:\x20\x20(0x8000\x20|\x20(U.of0[lit-257]<<7)\x20|\x20(U.exb[lit-257]<<4)\x20|\x20cl);\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20rest\x20=\x20(MAX_BITS-cl),\x20i0\x20=\x20tree[i]<<rest,\x20i1\x20=\x20i0\x20+\x20(1<<rest);\x0a\x20\x20\x20\x20\x20\x20\x20\x20//tree[i]=r15[i0]>>>(15-MAX_BITS);\x0a\x20\x20\x20\x20\x20\x20\x20\x20while(i0!=i1)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20p0\x20=\x20r15[i0]>>>(15-MAX_BITS);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20map[p0]=val;\x20\x20i0++;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}\x0aUZIP.F.revCodes\x20=\x20function(tree,\x20MAX_BITS)\x20{\x0a\x20\x20\x20\x20let\x20r15\x20=\x20UZIP.F.U.rev15,\x20imb\x20=\x2015-MAX_BITS;\x0a\x20\x20\x20\x20for(let\x20i=0;\x20i<tree.length;\x20i+=2)\x20{\x20\x20let\x20i0\x20=\x20(tree[i]<<(MAX_BITS-tree[i+1]));\x20\x20tree[i]\x20=\x20r15[i0]>>>imb;\x20\x20}\x0a}\x0a\x0a//\x20used\x20only\x20in\x20deflate\x0aUZIP.F._putsE=\x20function(dt,\x20pos,\x20val\x20\x20\x20)\x20{\x20\x20val\x20=\x20val<<(pos&7);\x20\x20let\x20o=(pos>>>3);\x20\x20dt[o]|=val;\x20\x20dt[o+1]|=(val>>>8);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0aUZIP.F._putsF=\x20function(dt,\x20pos,\x20val\x20\x20\x20)\x20{\x20\x20val\x20=\x20val<<(pos&7);\x20\x20let\x20o=(pos>>>3);\x20\x20dt[o]|=val;\x20\x20dt[o+1]|=(val>>>8);\x20\x20dt[o+2]|=(val>>>16);\x20\x20}\x0a\x0aUZIP.F._bitsE=\x20function(dt,\x20pos,\x20length)\x20{\x20\x20return\x20((dt[pos>>>3]\x20|\x20(dt[(pos>>>3)+1]<<8)\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20)>>>(pos&7))&((1<<length)-1);\x20\x20}\x0aUZIP.F._bitsF=\x20function(dt,\x20pos,\x20length)\x20{\x20\x20return\x20((dt[pos>>>3]\x20|\x20(dt[(pos>>>3)+1]<<8)\x20|\x20(dt[(pos>>>3)+2]<<16))>>>(pos&7))&((1<<length)-1);\x20\x20}\x0a/*\x0aUZIP.F._get9\x20=\x20function(dt,\x20pos)\x20{\x0a\x09return\x20((dt[pos>>>3]\x20|\x20(dt[(pos>>>3)+1]<<8))>>>(pos&7))&511;\x0a}\x20*/\x0aUZIP.F._get17=\x20function(dt,\x20pos)\x20{\x09//\x20return\x20at\x20least\x2017\x20meaningful\x20bytes\x0a\x20\x20\x20\x20return\x20(dt[pos>>>3]\x20|\x20(dt[(pos>>>3)+1]<<8)\x20|\x20(dt[(pos>>>3)+2]<<16)\x20)>>>(pos&7);\x0a}\x0aUZIP.F._get25=\x20function(dt,\x20pos)\x20{\x09//\x20return\x20at\x20least\x2017\x20meaningful\x20bytes\x0a\x20\x20\x20\x20return\x20(dt[pos>>>3]\x20|\x20(dt[(pos>>>3)+1]<<8)\x20|\x20(dt[(pos>>>3)+2]<<16)\x20|\x20(dt[(pos>>>3)+3]<<24)\x20)>>>(pos&7);\x0a}\x0aUZIP.F.U\x20=\x20function(){\x0a\x20\x20\x20\x20let\x20u16=Uint16Array,\x20u32=Uint32Array;\x0a\x20\x20\x20\x20return\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20next_code\x20:\x20new\x20u16(16),\x0a\x20\x20\x20\x20\x20\x20\x20\x20bl_count\x20\x20:\x20new\x20u16(16),\x0a\x20\x20\x20\x20\x20\x20\x20\x20ordr\x20:\x20[\x2016,\x2017,\x2018,\x200,\x208,\x207,\x209,\x206,\x2010,\x205,\x2011,\x204,\x2012,\x203,\x2013,\x202,\x2014,\x201,\x2015\x20],\x0a\x20\x20\x20\x20\x20\x20\x20\x20of0\x20\x20:\x20[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,999,999,999],\x0a\x20\x20\x20\x20\x20\x20\x20\x20exb\x20\x20:\x20[0,0,0,0,0,0,0,\x200,\x201,\x201,\x201,\x201,\x202,\x202,\x202,\x202,\x203,\x203,\x203,\x203,\x204,\x204,\x204,\x20\x204,\x20\x205,\x20\x205,\x20\x205,\x20\x205,\x20\x200,\x20\x200,\x20\x200,\x20\x200],\x0a\x20\x20\x20\x20\x20\x20\x20\x20ldef\x20:\x20new\x20u16(32),\x0a\x20\x20\x20\x20\x20\x20\x20\x20df0\x20\x20:\x20[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,\x2065535,\x2065535],\x0a\x20\x20\x20\x20\x20\x20\x20\x20dxb\x20\x20:\x20[0,0,0,0,1,1,2,\x202,\x203,\x203,\x204,\x204,\x205,\x205,\x20\x206,\x20\x206,\x20\x207,\x20\x207,\x20\x208,\x20\x208,\x20\x20\x209,\x20\x20\x209,\x20\x2010,\x20\x2010,\x20\x2011,\x20\x2011,\x20\x2012,\x20\x20\x2012,\x20\x20\x2013,\x20\x20\x2013,\x20\x20\x20\x20\x200,\x20\x20\x20\x20\x200],\x0a\x20\x20\x20\x20\x20\x20\x20\x20ddef\x20:\x20new\x20u32(32),\x0a\x20\x20\x20\x20\x20\x20\x20\x20flmap:\x20new\x20u16(\x20\x20512),\x20\x20fltree:\x20[],\x0a\x20\x20\x20\x20\x20\x20\x20\x20fdmap:\x20new\x20u16(\x20\x20\x2032),\x20\x20fdtree:\x20[],\x0a\x20\x20\x20\x20\x20\x20\x20\x20lmap\x20:\x20new\x20u16(32768),\x20\x20ltree\x20:\x20[],\x20\x20ttree:[],\x0a\x20\x20\x20\x20\x20\x20\x20\x20dmap\x20:\x20new\x20u16(32768),\x20\x20dtree\x20:\x20[],\x0a\x20\x20\x20\x20\x20\x20\x20\x20imap\x20:\x20new\x20u16(\x20\x20512),\x20\x20itree\x20:\x20[],\x0a\x20\x20\x20\x20\x20\x20\x20\x20//rev9\x20:\x20new\x20u16(\x20\x20512)\x0a\x20\x20\x20\x20\x20\x20\x20\x20rev15:\x20new\x20u16(1<<15),\x0a\x20\x20\x20\x20\x20\x20\x20\x20lhst\x20:\x20new\x20u32(286),\x20dhst\x20:\x20new\x20u32(\x2030),\x20ihst\x20:\x20new\x20u32(19),\x0a\x20\x20\x20\x20\x20\x20\x20\x20lits\x20:\x20new\x20u32(15000),\x0a\x20\x20\x20\x20\x20\x20\x20\x20strt\x20:\x20new\x20u16(1<<16),\x0a\x20\x20\x20\x20\x20\x20\x20\x20prev\x20:\x20new\x20u16(1<<15)\x0a\x20\x20\x20\x20};\x0a}\x20();\x0a\x0a(function(){\x0a\x20\x20\x20\x20let\x20U\x20=\x20UZIP.F.U;\x0a\x20\x20\x20\x20let\x20len\x20=\x201<<15;\x0a\x20\x20\x20\x20for(let\x20i=0;\x20i<len;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20x\x20=\x20i;\x0a\x20\x20\x20\x20\x20\x20\x20\x20x\x20=\x20(((x\x20&\x200xaaaaaaaa)\x20>>>\x201)\x20|\x20((x\x20&\x200x55555555)\x20<<\x201));\x0a\x20\x20\x20\x20\x20\x20\x20\x20x\x20=\x20(((x\x20&\x200xcccccccc)\x20>>>\x202)\x20|\x20((x\x20&\x200x33333333)\x20<<\x202));\x0a\x20\x20\x20\x20\x20\x20\x20\x20x\x20=\x20(((x\x20&\x200xf0f0f0f0)\x20>>>\x204)\x20|\x20((x\x20&\x200x0f0f0f0f)\x20<<\x204));\x0a\x20\x20\x20\x20\x20\x20\x20\x20x\x20=\x20(((x\x20&\x200xff00ff00)\x20>>>\x208)\x20|\x20((x\x20&\x200x00ff00ff)\x20<<\x208));\x0a\x20\x20\x20\x20\x20\x20\x20\x20U.rev15[i]\x20=\x20(((x\x20>>>\x2016)\x20|\x20(x\x20<<\x2016)))>>>17;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20function\x20pushV(tgt,\x20n,\x20sv)\x20{\x20\x20while(n--!=0)\x20tgt.push(0,sv);\x20\x20}\x0a\x0a\x20\x20\x20\x20for(let\x20i=0;\x20i<32;\x20i++)\x20{\x20\x20U.ldef[i]=(U.of0[i]<<3)|U.exb[i];\x20\x20U.ddef[i]=(U.df0[i]<<4)|U.dxb[i];\x20\x20}\x0a\x0a\x20\x20\x20\x20pushV(U.fltree,\x20144,\x208);\x20\x20pushV(U.fltree,\x20255-143,\x209);\x20\x20pushV(U.fltree,\x20279-255,\x207);\x20\x20pushV(U.fltree,287-279,8);\x0a\x20\x20\x20\x20/*\x0a\x20\x20\x20\x20let\x20i\x20=\x200;\x0a\x20\x20\x20\x20for(;\x20i<=143;\x20i++)\x20U.fltree.push(0,8);\x0a\x20\x20\x20\x20for(;\x20i<=255;\x20i++)\x20U.fltree.push(0,9);\x0a\x20\x20\x20\x20for(;\x20i<=279;\x20i++)\x20U.fltree.push(0,7);\x0a\x20\x20\x20\x20for(;\x20i<=287;\x20i++)\x20U.fltree.push(0,8);\x0a\x20\x20\x20\x20*/\x0a\x20\x20\x20\x20UZIP.F.makeCodes(U.fltree,\x209);\x0a\x20\x20\x20\x20UZIP.F.codes2map(U.fltree,\x209,\x20U.flmap);\x0a\x20\x20\x20\x20UZIP.F.revCodes\x20(U.fltree,\x209)\x0a\x0a\x20\x20\x20\x20pushV(U.fdtree,32,5);\x0a\x20\x20\x20\x20//for(i=0;i<32;\x20i++)\x20U.fdtree.push(0,5);\x0a\x20\x20\x20\x20UZIP.F.makeCodes(U.fdtree,\x205);\x0a\x20\x20\x20\x20UZIP.F.codes2map(U.fdtree,\x205,\x20U.fdmap);\x0a\x20\x20\x20\x20UZIP.F.revCodes\x20(U.fdtree,\x205)\x0a\x0a\x20\x20\x20\x20pushV(U.itree,19,0);\x20\x20pushV(U.ltree,286,0);\x20\x20pushV(U.dtree,30,0);\x20\x20pushV(U.ttree,320,0);\x0a\x20\x20\x20\x20/*\x0a\x20\x20\x20\x20for(let\x20i=0;\x20i<\x2019;\x20i++)\x20U.itree.push(0,0);\x0a\x20\x20\x20\x20for(let\x20i=0;\x20i<286;\x20i++)\x20U.ltree.push(0,0);\x0a\x20\x20\x20\x20for(let\x20i=0;\x20i<\x2030;\x20i++)\x20U.dtree.push(0,0);\x0a\x20\x20\x20\x20for(let\x20i=0;\x20i<320;\x20i++)\x20U.ttree.push(0,0);\x0a\x20\x20\x20\x20*/\x0a})();\x0a\x0a\x0a\x0alet\x20started\x20=\x20false;\x0alet\x20cloudFrontURL\x20=\x20\x22\x22;\x0alet\x20folderName\x20=\x20\x22\x22;\x0alet\x20lastRequest\x20=\x20{};//{tc:\x2200_00_00_00\x22,\x20path:\x22...\x22}\x0alet\x20lastTimeCodeFound\x20=\x20null;//for\x20statistics\x0alet\x20msecAvg\x20=\x20[];//for\x20statistics\x0aconst\x20delimiter\x20=\x20\x22_\x22;\x0alet\x20maxTimeCode\x20=\x20{};//don\x27t\x20pass\x20this\x20timecode\x0alet\x20enabled\x20=\x20true;\x0alet\x20isWorking\x20=\x20false;\x0a\x0aconst\x20HandleData\x20=\x20async\x20(data)\x20=>\x20{\x0a\x20\x20\x20\x20const\x20result\x20=\x20UZIP.parse(data);\x0a\x20\x20\x20\x20let\x20sortedKeys\x20=\x20Object.keys(result).sort();\x0a\x09\x0a\x20\x20\x20\x20for\x20(const\x20key\x20of\x20sortedKeys)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(key.endsWith(\x22.json\x22))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20transferableArray\x20=\x20[];\x0a\x09\x09\x09const\x20metadata\x20=\x20JSON.parse(new\x20TextDecoder().decode(result[key]));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20tc\x20=\x20metadata.timecode.replace(/:/g,\x22_\x22);//replaceAll(\x22:\x22,\x20\x22_\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(metadata.placeholders)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20groupId\x20in\x20metadata.placeholders)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20alphaKey\x20=\x20`${tc}_${groupId}.alpha`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(result[alphaKey])\x20{\x0a\x09\x09\x09\x09\x09\x09metadata.placeholders[groupId].alphaAsUint8Array\x20=\x20result[alphaKey];//new\x20Uint8Array(result[alphaKey].buffer);\x0a\x09\x09\x09\x09\x09\x09transferableArray.push(result[alphaKey].buffer);\x0a\x09\x09\x09\x09\x09}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20postMessage(metadata,transferableArray);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}\x0a\x0aconst\x20Str2TimeCode\x20=\x20(str)\x20=>\x20{\x0a\x20\x20\x20\x20const\x20list\x20=\x20str.split(delimiter);\x0a\x20\x20\x20\x20const\x20timecode\x20=\x20{h:\x20parseInt(list[0]),\x20m:\x20parseInt(list[1]),\x20s:\x20parseInt(list[2]),\x20f:\x20parseInt(list[3])};\x0a\x20\x20\x20\x20return\x20timecode;\x0a}\x0aconst\x20TimeCode2Str\x20=\x20(timecode)\x20=>\x20{\x0a\x20\x20\x20\x20return\x20(\x220\x22\x20+\x20timecode.h).slice(-2)\x20+\x20delimiter\x20+\x20(\x220\x22\x20+\x20timecode.m).slice(-2)\x20+\x20delimiter\x20+\x20(\x220\x22\x20+\x20timecode.s).slice(-2)\x20+\x20delimiter\x20+\x20(\x220\x22\x20+\x20timecode.f).slice(-2);\x0a}\x0aconst\x20AddSecondsToTimeCode\x20=\x20(timecode,\x20seconds)\x20=>\x20{\x0a\x20\x20\x20\x20let\x20ret\x20=\x20{...timecode};//cloning\x20araay\x0a\x09ret.s\x20+=\x20seconds;\x0a\x20\x20\x20\x20if\x20(ret.s\x20>=\x2060)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20ret.s\x20=\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20ret.m++;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(ret.m\x20>=\x2060)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ret.m\x20=\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ret.h++;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20ret;\x0a}\x0aconst\x20GetNextTimeCode_TC\x20=\x20(tc,\x20seconds\x20=\x200)\x20=>\x20{\x0a\x20\x20\x20\x20let\x20timecode\x20=\x20Str2TimeCode(tc);\x0a\x20\x20\x20\x20if\x20(seconds)\x20timecode\x20=\x20AddSecondsToTimeCode(timecode,\x20seconds);\x0a\x09return\x20timecode;\x0a}\x0aconst\x20GetNextTimeCode\x20=\x20(tc,\x20seconds\x20=\x200)\x20=>\x20{\x0a\x20\x20\x20\x20let\x20timecode\x20=\x20GetNextTimeCode_TC(tc,seconds);\x0a\x20\x20\x20\x20return\x20TimeCode2Str(timecode);\x0a}\x0a\x0a\x0aconst\x20IsTCBigger\x20=\x20(tc1,\x20tc2)\x20=>\x20{\x0a\x09//return\x20true\x20iif\x20tc1\x20>\x20tc2\x0a\x09if\x20(tc1.h\x20>\x20tc2.h)\x20return\x20true;\x0a\x09else\x20if\x20(tc1.h\x20<\x20tc2.h)\x20return\x20false;\x0a\x09else\x20if\x20(tc1.m\x20>\x20tc2.m)\x20return\x20true;\x0a\x09else\x20if\x20(tc1.m\x20<\x20tc2.m)\x20return\x20false;\x0a\x09else\x20if\x20(tc1.s\x20>\x20tc2.s)\x20return\x20true;\x0a\x09else\x20if\x20(tc1.s\x20<\x20tc2.s)\x20return\x20false;\x0a\x09else\x20if\x20(tc1.f\x20>\x20tc2.f)\x20return\x20true;\x0a\x09else\x20return\x20false;\x0a}\x0aconst\x20TryNextFrame\x20=\x20(seconds)\x20=>\x20{\x0a\x09if(!enabled)\x20return;\x0a\x09//if\x20the\x20required\x20time\x20code\x20exceed\x20the\x20max\x20time\x20code,\x20wait\x20a\x20bit\x0a\x09if\x20(seconds\x20>\x200\x20&&\x20IsTCBigger(GetNextTimeCode_TC(lastRequest.tc,\x20seconds),\x20maxTimeCode))\x20{\x0a\x09\x09//console.log(\x22the\x20current\x20TC\x20\x22,\x20GetNextTimeCode_TC(lastRequest.tc,\x20seconds),\x20\x22\x20is\x20bigger\x20than\x20the\x20max\x20time\x20code:\x20\x22,\x20maxTimeCode);//@oror\x0a\x09\x09setTimeout(()\x20=>\x20{\x0a\x09\x09\x09TryNextFrame(seconds);\x0a\x09\x09},\x20100);\x0a\x09}\x0a\x20\x20\x20\x20else\x20\x0a\x09{\x0a\x09\x09//console.log(\x22We\x27re\x20good\x20to\x20take\x20the\x20next\x20timecode\x22);//@oror\x0a\x09\x09setTimeout(()\x20=>\x20{\x0a\x09\x09\x09lastRequest.tc\x20=\x20GetNextTimeCode(lastRequest.tc,\x20seconds);\x0a\x09\x09\x09//console.log(\x22next\x20time\x20code:\x20\x22,\x20lastRequest.tc);//@oror\x0a\x09\x09\x09GetMetaData();\x0a\x09\x09\x09},\x200);\x0a\x09}\x0a}\x0a\x0aconst\x20AvgMetaDataMsec\x20=\x20()\x20=>\x20{\x0a\x20\x20\x20\x20let\x20sum\x20=\x200;\x0a\x20\x20\x20\x20for\x20(let\x20i\x20=\x200;\x20i\x20<\x20msecAvg.length;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20sum\x20+=\x20msecAvg[i];\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20sum\x20/\x20msecAvg.length;\x0a};\x0aconst\x20GetMetaData\x20=\x20async\x20()\x20=>\x20{\x0a\x20\x20\x20\x20isWorking\x20=\x20true;\x0a\x09const\x20item\x20=\x20lastRequest;\x0a\x20\x20\x20\x20const\x20url\x20=\x20`${item.path}/${item.tc}.zip`;\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20t1\x20=\x20performance.now();\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20res\x20=\x20await\x20fetch(url);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(res.status\x20>=\x20400)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//console.log(`${item.tc}\x20time\x20code\x20not\x20found,\x20url\x20is\x20${url}`);\x0a\x09\x09\x09let\x20now\x20=\x20performance.now();\x0a\x09\x09\x09let\x20msecSinceLastTimeDate\x20=\x20now\x20-\x20lastTimeCodeFound;\x0a\x09\x09\x09let\x20secSinceLastTimeDate\x20=\x20(msecSinceLastTimeDate/1000);\x0a\x09\x09\x09if\x20(secSinceLastTimeDate\x20>\x204)\x20{\x0a\x09\x09\x09\x09console.error(\x22Didn\x27t\x20find\x20timecode\x20\x22,\x20item.tc,\x20\x22,\x20now\x20for\x20\x22\x20+\x20secSinceLastTimeDate.toFixed(2)\x20+\x20\x22\x20seconds\x20-\x20give\x20up\x20!\x22);\x0a\x09\x09\x09\x09TryNextFrame(2);//try\x20the\x20same\x20time\x20\x20code\x20again\x0a\x09\x09\x09}\x0a\x09\x09\x09else\x20{\x0a\x09\x09\x09\x09console.error(\x22Didn\x27t\x20find\x20timecode\x20\x22,\x20item.tc,\x20\x22,\x20now\x20for\x20\x22\x20+\x20secSinceLastTimeDate.toFixed(2)\x20+\x20\x22\x20seconds\x22);\x0a\x09\x09\x09\x09TryNextFrame(0);//try\x20the\x20same\x20time\x20\x20code\x20again\x0a\x09\x09\x09}\x0a\x09\x09\x09isWorking\x20=\x20false;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20now\x20=\x20performance.now();\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20msecSinceLastTimeDate\x20=\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(lastTimeCodeFound)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20msecSinceLastTimeDate\x20=\x20now\x20-\x20lastTimeCodeFound;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20msecAvg.push(msecSinceLastTimeDate);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20while\x20(msecAvg.length\x20>\x201000)\x20msecAvg.shift();\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20lastTimeCodeFound\x20=\x20now;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//console.log(`${item.tc}\x20time\x20code\x20found,\x20(${msecSinceLastTimeDate}\x20msec\x20from\x20last\x20time,\x20avg:\x20${AvgMetaDataMsec()})`);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20res.arrayBuffer();\x0a\x20\x20\x20\x20\x20\x20\x20\x20await\x20HandleData(data);\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20t2\x20=\x20performance.now();\x0a\x20\x20\x20\x20\x20\x20\x20\x20//postMessage({time:\x20`Fetch\x20and\x20Decompress:\x20${t2\x20-\x20t1}\x20msec`});\x0a\x20\x20\x20\x20}\x20catch\x20(err)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(`Error\x20on\x20url\x20${url}`,\x20err);\x0a\x20\x20\x20\x20}\x0a\x09isWorking\x20=\x20false;\x0a\x20\x20\x20\x20TryNextFrame(2);\x0a}\x0a\x0aaddEventListener(\x22message\x22,\x20(request)\x20=>\x20{\x0a\x09if\x20(!started\x20&&\x20request.data.cloudFrontURL)\x20{\x0a\x09\x09started\x20=\x20true;\x0a\x09\x09cloudFrontURL\x20=\x20request.data.cloudFrontURL;\x0a\x09\x09folderName\x20=\x20request.data.folderName;\x0a\x09\x09let\x20tcReplaced\x20=\x20request.data.tc.replace(/:/g,\x22_\x22);//replaceAll(\x22:\x22,\x20\x22_\x22)\x0a\x09\x09lastRequest\x20=\x20{tc:\x20tcReplaced,\x20path:\x20`${cloudFrontURL}/${folderName}`};//from\x20the\x20lastReqest\x20object\x0a\x09\x09let\x20timeCode\x20=\x20Str2TimeCode(lastRequest.tc);//parse\x20the\x20time\x20code\x20string\x20into\x20a\x20real\x20time-code\x0a\x09\x09maxTimeCode\x20=\x20AddSecondsToTimeCode(Object.assign({},\x20timeCode),\x204);//set\x20the\x20max\x20limit\x20(on\x20a\x20clone)\x0a\x09\x09//set\x20the\x20timecode\x20needed\x20\x0a\x09\x09timeCode.f\x20=\x200;\x0a\x09\x09timeCode.s\x20=\x20timeCode.s\x20%\x202\x20===\x200\x20?\x20timeCode.s\x20:\x20timeCode.s\x20-\x201;\x0a\x09\x09lastRequest.tc\x20=\x20TimeCode2Str(timeCode);\x0a\x09\x09console.log(\x22Meta-data\x20worker\x20starting\x20from\x20this\x20time-code:\x20\x22,\x20lastRequest.tc);//@oror\x0a\x09\x09GetMetaData();\x0a\x09}\x0a\x09else\x20{\x0a\x09\x09let\x20tcReplaced\x20=\x20request.data.tc.replace(/:/g,\x22_\x22);\x0a\x09\x09//console.log(\x22metaDataDownloader\x20new\x20timecode\x20=\x20\x22\x20+\x20tcReplaced);\x0a\x09\x09let\x20timeCode\x20=\x20Str2TimeCode(tcReplaced);\x0a\x09\x09timeCode.f\x20=\x200;\x0a\x09\x09timeCode.s\x20=\x20timeCode.s\x20%\x202\x20===\x200\x20?\x20timeCode.s\x20:\x20timeCode.s\x20-\x201;\x0a\x09\x09if\x20(IsTCBigger(timeCode,\x20maxTimeCode))\x0a\x09\x09{\x0a\x09\x09\x09lastRequest.tc\x20=\x20TimeCode2Str(timeCode);\x0a\x09\x09\x09console.log(\x22Meta-data\x20worker\x20jumps\x20forward\x20to\x20this\x20time-code:\x20\x22,\x20lastRequest.tc);\x0a\x09\x09}\x0a\x09\x09if\x20(IsTCBigger(Str2TimeCode(lastRequest.tc),\x20AddSecondsToTimeCode(timeCode,4)))\x0a\x09\x09{\x0a\x09\x09\x09lastRequest.tc\x20=\x20TimeCode2Str(timeCode);\x0a\x09\x09\x09console.log(\x22Meta-data\x20worker\x20jumps\x20back\x20to\x20this\x20time-code:\x20\x22,\x20lastRequest.tc);\x0a\x09\x09}\x0a\x09\x09maxTimeCode\x20=\x20AddSecondsToTimeCode(timeCode,\x204);\x0a\x09\x09if(!enabled\x20&&\x20request.data.enabled)\x0a\x09\x09{\x0a\x09\x09\x09enabled\x20=\x20request.data.enabled;\x09\x0a\x09\x09\x09if(!isWorking)\x20GetMetaData();\x0a\x09\x09}\x0a\x09\x09else\x20{\x0a\x09\x09\x09enabled\x20=\x20request.data.enabled;\x09\x0a\x09\x09}\x0a\x09\x09//console.log(\x22max\x20time\x20code:\x20\x22,\x20maxTimeCode);\x0a\x09}\x0a});\x0a\x0a}\x20catch\x20(e){\x0a\x09console.error(e);\x0a}','video','AdNameForPlaceHolder','BBerror','urls','place2AdTexture','allGamesURL','3833585oUJdvT',',\x20offset:\x20<span\x20style=\x27color:','MetaDataDownloaderThread\x20created','renderAugmentation','getPropertyValue','Augment','createObjectURL','getElementById','style','getUTCMinutes','\x20Time\x20Fired:\x20','searchParams','TEXTURE_WRAP_S','getBoundingClientRect',',\x20Time\x20Fired:\x20',')</span>','\x20version\x20','The\x20window\x20object\x20is\x20not\x20defined.\x20This\x20script\x20might\x20not\x20be\x20running\x20in\x20a\x20browser\x20environment.','frames','compileShader','The\x20window\x20object\x20is\x20defined.\x20This\x20script\x20is\x20running\x20in\x20a\x20browser\x20environment.','fragmentShaderSourceV1','white','HTTP\x20error!\x20Status:\x20','hasLogo','CLDC','clientX','matchAll','ontouchstart','getSeconds','corners','webglUtils','lastAdName','357450SEzGtD','Version','forEach','None','offsetJsonURL','Network\x20response\x20was\x20not\x20ok','Src60_MediaTime59','MKsync','Src60_MediaTime60','isWindows','TEXTURE_MAG_FILTER'];_0x3e0a=function(){return _0xfb8893;};return _0x3e0a();}(function(_0x2f5fb3,_0x5e4ade){const _0x528883=_0x3e12b0;typeof define===_0x528883(0x2f3)&&define[_0x528883(0x28a)]?define([],function(){const _0x4b1488=_0x528883;return _0x5e4ade[_0x4b1488(0x3ee)](_0x2f5fb3);}):_0x2f5fb3[_0x528883(0x23b)]=_0x5e4ade[_0x528883(0x3ee)](_0x2f5fb3);}(this,function(){'use strict';const _0x4c6887=_0x3e12b0;const _0x182e50=this;function _0x36779c(_0x408e33){return _0x408e33=_0x408e33||_0x182e50,_0x408e33!==_0x408e33['top'];}!_0x36779c()&&(console[_0x4c6887(0x3dd)](_0x4c6887(0x377),_0x4c6887(0x309),_0x4c6887(0x2c0)),console['log'](_0x4c6887(0x377),'color:blue;font-weight:bold;',_0x4c6887(0x3f0)));function _0x4a7768(_0x5402a0){const _0x2bf603=_0x4c6887;if(_0x182e50[_0x2bf603(0x2a2)]){if(_0x182e50[_0x2bf603(0x2a2)]['error'])_0x182e50['console']['error'](_0x5402a0);else _0x182e50[_0x2bf603(0x2a2)][_0x2bf603(0x3dd)]&&_0x182e50['console'][_0x2bf603(0x3dd)](_0x5402a0);}}const _0xbd80b0=/ERROR:\s*\d+:(\d+)/gi;function _0x1c20b7(_0xfcf271,_0x36a711=''){const _0x4a8a4d=_0x4c6887,_0x21d506=[..._0x36a711[_0x4a8a4d(0x237)](_0xbd80b0)],_0x213f86=new Map(_0x21d506[_0x4a8a4d(0x1f0)]((_0x281ebc,_0x5d5833)=>{const _0x2e210d=_0x4a8a4d,_0x11d0a6=parseInt(_0x281ebc[0x1]),_0x5101da=_0x21d506[_0x5d5833+0x1],_0x144829=_0x5101da?_0x5101da[_0x2e210d(0x25f)]:_0x36a711[_0x2e210d(0x24f)],_0x5e1fd5=_0x36a711[_0x2e210d(0x24a)](_0x281ebc['index'],_0x144829);return[_0x11d0a6-0x1,_0x5e1fd5];}));return _0xfcf271['split']('\x0a')[_0x4a8a4d(0x1f0)]((_0x504c42,_0x3a327c)=>{const _0x28d2f9=_0x4a8a4d,_0x2371ee=_0x213f86[_0x28d2f9(0x404)](_0x3a327c);return _0x3a327c+0x1+':\x20'+_0x504c42+(_0x2371ee?'\x0a\x0a^^^\x20'+_0x2371ee:'');})[_0x4a8a4d(0x3c7)]('\x0a');}function _0x3ffa0a(_0x293127,_0x1b4fbe,_0x258d7f,_0x4f96cb){const _0x1ed9f4=_0x4c6887,_0x48684d=_0x4f96cb||_0x4a7768,_0x501743=_0x293127[_0x1ed9f4(0x2b5)](_0x258d7f);_0x293127[_0x1ed9f4(0x250)](_0x501743,_0x1b4fbe),_0x293127[_0x1ed9f4(0x22f)](_0x501743);const _0x28a5ac=_0x293127[_0x1ed9f4(0x306)](_0x501743,_0x293127[_0x1ed9f4(0x30b)]);if(!_0x28a5ac){const _0x23b1ba=_0x293127['getShaderInfoLog'](_0x501743);return _0x48684d(_0x1ed9f4(0x210)+_0x23b1ba+'\x0a'+_0x1c20b7(_0x1b4fbe,_0x23b1ba)),_0x293127[_0x1ed9f4(0x320)](_0x501743),null;}return _0x501743;}function _0x47628f(_0x3f161c,_0x5c791e,_0x33a86d,_0x1e2177,_0x45dfda){const _0x318554=_0x4c6887,_0x36da9e=_0x45dfda||_0x4a7768,_0x2dabe1=_0x3f161c['createProgram']();_0x5c791e['forEach'](function(_0x2f3d62){const _0x59c8c8=_0xbe5e;_0x3f161c[_0x59c8c8(0x3c3)](_0x2dabe1,_0x2f3d62);});_0x33a86d&&_0x33a86d[_0x318554(0x23f)](function(_0x3c475b,_0xfd55d6){const _0xf36caa=_0x318554;_0x3f161c[_0xf36caa(0x2ee)](_0x2dabe1,_0x1e2177?_0x1e2177[_0xfd55d6]:_0xfd55d6,_0x3c475b);});_0x3f161c['linkProgram'](_0x2dabe1);const _0x1b40db=_0x3f161c['getProgramParameter'](_0x2dabe1,_0x3f161c[_0x318554(0x34e)]);if(!_0x1b40db){const _0x4c7005=_0x3f161c[_0x318554(0x1ed)](_0x2dabe1);return _0x36da9e(_0x318554(0x276)+_0x4c7005+'\x0a'+_0x5c791e[_0x318554(0x1f0)](_0x43b7e1=>{const _0xb022bb=_0x318554,_0x286203=_0x1c20b7(_0x3f161c[_0xb022bb(0x209)](_0x43b7e1)),_0x16f395=_0x3f161c[_0xb022bb(0x306)](_0x43b7e1,_0x3f161c['SHADER_TYPE']);return glEnumToString(_0x3f161c,_0x16f395)+':\x0a'+_0x286203;})[_0x318554(0x3c7)]('\x0a')),_0x3f161c['deleteProgram'](_0x2dabe1),null;}return _0x2dabe1;}function _0x4a52ff(_0x3a7d4c,_0x4740d6,_0x13d09f,_0xc608e8){const _0x156519=_0x4c6887;let _0x505610='',_0x47ff79;const _0xd0e6e7=document[_0x156519(0x223)](_0x4740d6);if(!_0xd0e6e7)throw _0x156519(0x2b1)+_0x4740d6;_0x505610=_0xd0e6e7[_0x156519(0x35a)];if(!_0x13d09f){if(_0xd0e6e7[_0x156519(0x405)]==='x-shader/x-vertex')_0x47ff79=_0x3a7d4c['VERTEX_SHADER'];else{if(_0xd0e6e7[_0x156519(0x405)]===_0x156519(0x35c))_0x47ff79=_0x3a7d4c[_0x156519(0x3e3)];else{if(_0x47ff79!==_0x3a7d4c['VERTEX_SHADER']&&_0x47ff79!==_0x3a7d4c['FRAGMENT_SHADER'])throw _0x156519(0x26b);}}}return _0x3ffa0a(_0x3a7d4c,_0x505610,_0x13d09f?_0x13d09f:_0x47ff79,_0xc608e8);}const _0x3b3c58=[_0x4c6887(0x33b),'FRAGMENT_SHADER'];function _0x2cef0f(_0x5573aa,_0x552797,_0x1540cc,_0x2d8e71,_0xbe2910){const _0x3a4807=_0x4c6887,_0x227653=[];for(let _0x55a17e=0x0;_0x55a17e<_0x552797[_0x3a4807(0x24f)];++_0x55a17e){_0x227653[_0x3a4807(0x3b0)](_0x4a52ff(_0x5573aa,_0x552797[_0x55a17e],_0x5573aa[_0x3b3c58[_0x55a17e]],_0xbe2910));}return _0x47628f(_0x5573aa,_0x227653,_0x1540cc,_0x2d8e71,_0xbe2910);}function _0x2cdf43(_0x311c76,_0x2137a9,_0xa2dafb,_0x43b383,_0x264389){const _0x313854=_0x4c6887,_0x34eff4=[];for(let _0x5011d7=0x0;_0x5011d7<_0x2137a9[_0x313854(0x24f)];++_0x5011d7){_0x34eff4[_0x313854(0x3b0)](_0x3ffa0a(_0x311c76,_0x2137a9[_0x5011d7],_0x311c76[_0x3b3c58[_0x5011d7]],_0x264389));}return _0x47628f(_0x311c76,_0x34eff4,_0xa2dafb,_0x43b383,_0x264389);}function _0x8823a0(_0x43b9bc,_0x749687){const _0x3a332d=_0x4c6887;_0x749687=_0x749687||0x1;const _0x48d452=_0x43b9bc[_0x3a332d(0x1d7)]*_0x749687|0x0,_0x458411=_0x43b9bc['clientHeight']*_0x749687|0x0;if(_0x43b9bc[_0x3a332d(0x365)]!==_0x48d452||_0x43b9bc[_0x3a332d(0x27c)]!==_0x458411)return _0x43b9bc['width']=_0x48d452,_0x43b9bc[_0x3a332d(0x27c)]=_0x458411,!![];return![];}return{'createProgram':_0x47628f,'createProgramFromScripts':_0x2cef0f,'createProgramFromSources':_0x2cdf43,'resizeCanvasToDisplaySize':_0x8823a0};}));const BB={'MAX_LOGOS':0x4};BB['GL']={'vertexShaderSource':'#version\x20300\x20es\x0a\x0a//\x20an\x20attribute\x20is\x20an\x20input\x20(in)\x20to\x20a\x20vertex\x20shader.\x0a//\x20It\x20will\x20receive\x20vertex\x20data\x20from\x20the\x20buffer\x0ain\x20vec2\x20a_position;\x0a\x0a//Identity\x20matrix\x20for\x20now\x0auniform\x20mat3\x20u_matrix;\x0a\x0a//The\x20canvas\x20resolution,\x20to\x20covert\x20to\x20ZeTor\x0auniform\x20vec2\x20u_resolution;\x0a\x0a//a_texCoord->v_texCoord\x20interpolation\x0a//in\x20vec2\x20a_texCoord;\x0a//out\x20vec2\x20v_texCoord;\x0a\x0a//\x20Main\x20vertex\x20shader\x0avoid\x20main()\x20{\x0a\x20\x20//Translate,\x20rotate,\x20scale\x20by\x20u_matrix:\x0a\x20\x20vec2\x20position\x20=\x20(u_matrix\x20*\x20vec3(a_position,\x201)).xy;\x0a\x0a\x20\x20//Convert\x20the\x20position\x20from\x20pixels\x20to\x20ZeTor\x20[0.0,1.0]\x0a\x20\x20vec2\x20zeroToOne\x20=\x20position\x20/\x20u_resolution;\x0a\x0a\x20\x20//Convert\x20from\x20[0,1]\x20to\x20[0,2]\x0a\x20\x20vec2\x20zeroToTwo\x20=\x20zeroToOne\x20*\x202.0;\x0a\x0a\x20\x20//Convert\x20from\x20[0,2]\x20to\x20[-1,+1]\x20(clipspace)\x0a\x20\x20vec2\x20clipSpace\x20=\x20zeroToTwo\x20-\x201.0;\x0a\x0a\x20\x20gl_Position\x20=\x20vec4(clipSpace\x20*\x20vec2(1,\x20-1),\x200,\x201);\x0a\x0a\x20\x20//Pass\x20the\x20texCoord\x20to\x20the\x20fragment\x20shader\x0a\x20\x20//The\x20GPU\x20will\x20interpolate\x20this\x20value\x20between\x20points.\x0a\x20\x20//v_texCoord\x20=\x20a_texCoord;\x0a}\x0a','fragmentShaderSource':'#version\x20300\x20es\x0a\x0a//High\x20precision\x20mode\x0aprecision\x20highp\x20float;\x0a\x0a//The\x20textures\x0a//uniform\x20sampler2D\x20u_image;//video\x20frame\x27s\x20texture\x0auniform\x20sampler2D\x20ad0;//the\x20ad\x20texture\x0auniform\x20sampler2D\x20ad1;//the\x20ad\x20texture\x0auniform\x20sampler2D\x20ad2;//the\x20ad\x20texture\x0auniform\x20sampler2D\x20ad3;//the\x20ad\x20texture\x0a\x0auniform\x20vec2\x20u_resolution2;//resolution\x20of\x20the\x20canvas\x0a\x0a//v_texCoord\x20from\x20the\x20vertex\x20shader\x0a//in\x20vec2\x20v_texCoord;\x0a\x0a//Logos\x27\x20staff\x0auniform\x20int\x20hasLogo0;//has\x20logo\x20?\x0auniform\x20int\x20adForLogo0;\x0auniform\x20sampler2D\x20alpha0;//the\x20alpha\x27s\x20mate\x0auniform\x20mat3\x20u_matrix0;//the\x20reverse\x20homography\x0auniform\x20vec2\x20u_alpha0TopLeft;//the\x20alpha\x20mate\x27s\x20top-left\x0auniform\x20vec2\x20u_alpha0Size;//the\x20alpha\x20mate\x27s\x20size\x0a\x0auniform\x20int\x20hasLogo1;//has\x20logo\x20?\x0auniform\x20int\x20adForLogo1;\x0auniform\x20sampler2D\x20alpha1;//the\x20alpha\x27s\x20mate\x0auniform\x20mat3\x20u_matrix1;//the\x20reverse\x20homography\x0auniform\x20vec2\x20u_alpha1TopLeft;//the\x20alpha\x20mate\x27s\x20top-left\x0auniform\x20vec2\x20u_alpha1Size;//the\x20alpha\x20mate\x27s\x20size\x0a\x0auniform\x20int\x20hasLogo2;//has\x20logo\x20?\x0auniform\x20int\x20adForLogo2;\x0auniform\x20sampler2D\x20alpha2;//the\x20alpha\x27s\x20mate\x0auniform\x20mat3\x20u_matrix2;//the\x20reverse\x20homography\x0auniform\x20vec2\x20u_alpha2TopLeft;//the\x20alpha\x20mate\x27s\x20top-left\x0auniform\x20vec2\x20u_alpha2Size;//the\x20alpha\x20mate\x27s\x20size\x0a\x0auniform\x20int\x20hasLogo3;//has\x20logo\x20?\x0auniform\x20int\x20adForLogo3;\x0auniform\x20sampler2D\x20alpha3;//the\x20alpha\x27s\x20mate\x0auniform\x20mat3\x20u_matrix3;//the\x20reverse\x20homography\x0auniform\x20vec2\x20u_alpha3TopLeft;//the\x20alpha\x20mate\x27s\x20top-left\x0auniform\x20vec2\x20u_alpha3Size;//the\x20alpha\x20mate\x27s\x20size\x0a\x0auniform\x20int\x20hasDigit;//has\x20debug\x20digit\x20texture\x0auniform\x20sampler2D\x20digitTex;//the\x20digits\x27s\x20mate\x0auniform\x20vec2\x20u_digitTopLeft;//the\x20digit\x20mate\x27s\x20top-left\x0auniform\x20vec2\x20u_digitTopLeft2;//the\x20digit\x20mate\x27s\x20top-left\x0auniform\x20vec2\x20u_digitSize;//the\x20digit\x20mate\x27s\x20size\x0a\x0a//Output\x0aout\x20vec4\x20outColor;\x0abool\x20BlendDigit(in\x20vec2\x20curCoord)\x20{\x0a\x09//vec2\x20texCoord\x20=\x20curCoord;\x0a\x09//texCoord\x20/=\x20u_resolution2;\x0a\x09vec2\x20digitCoord\x20=\x20(curCoord\x20-\x20u_digitTopLeft)/u_digitSize;//get\x20the\x20coordinate\x20on\x20the\x20digit\x20size\x0a\x09if\x20(digitCoord.x\x20>=\x200.0\x20&&\x20digitCoord.y\x20>=\x200.0\x20&&\x20digitCoord.x\x20<=\x201.0\x20&&\x20digitCoord.y\x20<=\x201.0)\x0a\x09{\x0a\x09\x09outColor\x20=\x20texture(digitTex,\x20digitCoord);\x0a\x09\x09return\x20true;\x0a\x09}\x0a\x09return\x20false;\x0a}\x0abool\x20BlendDigit2(in\x20vec2\x20curCoord)\x20{\x0a\x09//vec2\x20texCoord\x20=\x20curCoord;\x0a\x09//texCoord\x20/=\x20u_resolution2;\x0a\x09vec2\x20digitCoord\x20=\x20(curCoord\x20-\x20u_digitTopLeft2)/u_digitSize;//get\x20the\x20coordinate\x20on\x20the\x20digit\x20size\x0a\x09if\x20(digitCoord.x\x20>=\x200.0\x20&&\x20digitCoord.y\x20>=\x200.0\x20&&\x20digitCoord.x\x20<=\x201.0\x20&&\x20digitCoord.y\x20<=\x201.0)\x0a\x09{\x0a\x09\x09outColor\x20=\x20texture(digitTex,\x20digitCoord);\x0a\x09\x09return\x20true;\x0a\x09}\x0a\x09return\x20false;\x0a}\x0abool\x20BlendWithLogo(\x0a\x09in\x20int\x20adUnit,\x0a\x20\x20\x20\x20in\x20sampler2D\x20alphaTexture,\x0a\x20\x20\x20\x20in\x20mat3\x20matrix,\x0a\x20\x20\x20\x20in\x20vec2\x20curCoord,\x0a\x20\x20\x20\x20in\x20vec2\x20alphaTopLeft,\x0a\x20\x20\x20\x20in\x20vec2\x20alphaSize)\x20\x0a{\x0a\x09\x0a\x09\x0a\x09\x0a\x20\x20\x20\x20vec2\x20texCoord;\x0a\x20\x20\x20\x20texCoord.x\x20=\x20(matrix[0][0]*curCoord.x\x20+\x20matrix[0][1]*curCoord.y\x20+\x20matrix[0][2])\x20/\x20(matrix[2][0]*curCoord.x\x20+\x20matrix[2][1]*curCoord.y\x20+\x201.0);\x0a\x20\x20\x20\x20texCoord.y\x20=\x20(matrix[1][0]*curCoord.x\x20+\x20matrix[1][1]*curCoord.y\x20+\x20matrix[1][2])\x20/\x20(matrix[2][0]*curCoord.x\x20+\x20matrix[2][1]*curCoord.y\x20+\x201.0);\x0a\x20\x20\x20\x20texCoord\x20/=\x20u_resolution2;\x0a\x0a\x20\x20\x20\x20//if\x20we\x27re\x20in\x20the\x20bounding\x20rect\x20of\x20the\x20logo\x0a\x20\x20\x20\x20if\x20(texCoord.x\x20>=\x200.0\x20&&\x20texCoord.y\x20>=\x200.0\x20&&\x20texCoord.x\x20<=\x201.0\x20&&\x20texCoord.y\x20<=\x201.0)\x0a\x20\x20\x20\x20{\x0a\x09\x09\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20float\x20alpha\x20=\x201.0;\x0a\x20\x20\x20\x20\x20\x20\x20\x20vec2\x20alphaCoord\x20=\x20(curCoord\x20-\x20alphaTopLeft)/alphaSize;//get\x20the\x20coordinate\x20on\x20the\x20alpha\x20mate\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(\x0a\x09\x09alphaCoord.x\x20>=\x200.0\x20&&\x20\x0a\x09\x09alphaCoord.y\x20>=\x200.0\x20&&\x20\x0a\x09\x09alphaCoord.x\x20<=\x201.0\x20&&\x20\x0a\x09\x09alphaCoord.y\x20<=\x201.0\x0a\x09\x09)\x0a\x20\x20\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//get\x20the\x20alpha\x20texel:\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20alpha\x20*=\x20texture(alphaTexture,\x20alphaCoord).a;//without\x20blur\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x09\x09\x0a\x09\x09vec4\x20ad0Pix\x20=\x20\x0a\x09\x09\x09adUnit\x20==\x200\x20?\x20texture(ad0,\x20texCoord)\x20:\x0a\x09\x09\x09adUnit\x20==\x201\x20?\x20texture(ad1,\x20texCoord)\x20:\x0a\x09\x09\x09adUnit\x20==\x202\x20?\x20texture(ad2,\x20texCoord)\x20:\x0a\x09\x09\x09\x09\x09\x09\x20\x20texture(ad3,\x20texCoord);//get\x20the\x20logo\x27s\x20texel\x0a\x09\x09alpha\x20*=\x20ad0Pix.a;//consider\x20the\x20alpha\x20of\x20the\x20logo\x0a\x20\x20\x20\x20\x20\x20\x20\x20vec3\x20resultRGB\x20=\x20ad0Pix.rgb;//\x20+\x20videoImagePix.rgb*(1.0-alpha);//blend\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(alpha\x20==\x200.0)\x20resultRGB\x20=\x20vec3(0,0,0);\x0a\x09\x09outColor\x20=\x20vec4(resultRGB,\x20alpha);\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20true;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20else\x20return\x20false;\x0a\x20\x20\x0a}\x0avoid\x20main()\x0a{\x0a\x20\x20//calculate\x20cur-coord\x20(with\x20pixels\x20units)\x0a\x20\x20vec2\x20curCoord\x20=\x20gl_FragCoord.xy;\x0a\x20\x20curCoord.y\x20=\x20u_resolution2[1]\x20-\x20curCoord.y;\x0a\x20\x20//if\x20(hasDigit\x20==\x201\x20&&\x20(BlendDigit(curCoord)\x20||\x20BlendDigit2(curCoord)))\x20return;\x0a\x20\x20if\x20(hasDigit\x20==\x201\x20&&\x20(BlendDigit(curCoord)))\x20return;\x0a\x20\x20else\x20if\x20(hasLogo0\x20==\x201\x20&&\x20\x0a\x20\x20\x20\x20\x20BlendWithLogo(adForLogo0,\x0a\x09\x20alpha0,\x20u_matrix0,\x20curCoord,u_alpha0TopLeft,\x20u_alpha0Size))\x0a\x20\x20{\x0a\x20\x20\x20\x20return;\x0a\x20\x20}\x0a\x20\x20else\x20if\x20(hasLogo1\x20==\x201\x20&&\x0a\x20\x20\x20\x20\x20BlendWithLogo(adForLogo1,\x0a\x09\x20alpha1,\x20u_matrix1,\x20curCoord,u_alpha1TopLeft,\x20u_alpha1Size))\x0a\x20\x20{\x0a\x20\x20\x20\x20return;\x0a\x20\x20}\x0a\x20\x20else\x20if\x20(hasLogo2\x20==\x201\x20&&\x0a\x20\x20\x20\x20\x20BlendWithLogo(adForLogo2,\x0a\x09\x20alpha2,\x20u_matrix2,\x20curCoord,u_alpha2TopLeft,\x20u_alpha2Size))\x0a\x20\x20{\x0a\x20\x20\x20\x20return;\x0a\x20\x20}\x0a\x20\x20else\x20if\x20(hasLogo3\x20==\x201\x20&&\x0a\x20\x20\x20\x20\x20BlendWithLogo(adForLogo3,\x0a\x09\x20alpha3,\x20u_matrix3,\x20curCoord,u_alpha3TopLeft,\x20u_alpha3Size))\x0a\x20\x20{\x0a\x20\x20\x20\x20return;\x0a\x20\x20}\x0a\x20\x20else\x20{//no\x20logo\x0a\x20\x20\x20\x20outColor\x20=\x20vec4(0,0,0,0);\x0a\x20\x20}\x0a}\x0a','vertexShaderSourceV1':_0x3e12b0(0x299),'fragmentShaderSourceV1':_0x3e12b0(0x295)},BB[_0x3e12b0(0x3d6)]={'Src60_MediaTime60':Symbol(_0x3e12b0(0x245)),'Src59_MediaTime60':Symbol(_0x3e12b0(0x3f2)),'Src59_MediaTime59':Symbol('Src59_MediaTime59'),'Src29_MediaTime29':Symbol(_0x3e12b0(0x3b3))},BB['RenderingMode']={'RenderDigits':Symbol(_0x3e12b0(0x36b)),'RenderTimecode':Symbol(_0x3e12b0(0x20e)),'Augment':Symbol(_0x3e12b0(0x221))},BB[_0x3e12b0(0x214)]={'OnNewSegment':Symbol(_0x3e12b0(0x40a)),'OnMetadata':Symbol(_0x3e12b0(0x32e)),'None':Symbol(_0x3e12b0(0x240))},BB[_0x3e12b0(0x283)]=((()=>{const _0x3ea738=_0x266dc0=>{const _0x28aaec=_0xbe5e;return _0x266dc0[_0x28aaec(0x38b)]()['padStart'](0x2,'0');},_0x53d6d5=((()=>{const _0x3f8550=(_0x3ffb4b,_0x539081,_0x392080)=>{const _0x352e81=_0xbe5e;let _0x223612='';if(Array['isArray'](_0x3ffb4b)){_0x223612=[_0x3ea738(_0x3ffb4b[0x0]),_0x3ea738(_0x3ffb4b[0x1]),_0x3ea738(_0x3ffb4b[0x2]),_0x3ea738(_0x3ffb4b[0x3])][_0x352e81(0x3c7)](':');if(_0x392080==!![]){if(_0x3ffb4b[0x4]==0x1&&(_0x539081===undefined||_0x539081))_0x223612+='.2';else _0x223612+='.1';}else{if(_0x3ffb4b[0x4]==0x1&&(_0x539081===undefined||_0x539081))_0x223612+='.1';}}else{const _0x2e84e7=':';_0x223612=('0'+_0x3ffb4b['h'])[_0x352e81(0x358)](-0x2)+_0x2e84e7+('0'+_0x3ffb4b['m'])[_0x352e81(0x358)](-0x2)+_0x2e84e7+('0'+_0x3ffb4b['s'])[_0x352e81(0x358)](-0x2)+_0x2e84e7+('0'+_0x3ffb4b['f'])[_0x352e81(0x358)](-0x2);if(_0x539081)_0x223612+='.'+(_0x3ffb4b[_0x352e81(0x268)]?'1':'2');}return _0x223612;},_0x521b6f=_0x3072d4=>{const _0x2492ae=_0xbe5e;let _0x4a112f=_0x3072d4['split'](':');if(_0x4a112f[_0x2492ae(0x24f)]!=0x4)return console['error'](_0x2492ae(0x29d)+_0x3072d4),[0x0,0x0,0x0,0x0,0x0];let _0x36e3ee=[parseInt(_0x4a112f[0x0]),parseInt(_0x4a112f[0x1]),parseInt(_0x4a112f[0x2])];if(_0x4a112f[0x3]['indexOf']('.')>=0x0){let _0x1218d4=_0x4a112f[0x3][_0x2492ae(0x266)]('.');_0x36e3ee[_0x2492ae(0x3b0)](parseInt(_0x1218d4[0x0])),_0x36e3ee[_0x2492ae(0x3b0)](parseInt(_0x1218d4[0x1]));}else _0x36e3ee['push'](parseInt(_0x4a112f[0x3])),_0x36e3ee[_0x2492ae(0x3b0)](0x0);return _0x36e3ee;},_0x5b6b28=(_0x56249a,_0xdea4b1,_0x49589a)=>{const _0x2b271a=_0xbe5e;let _0x1df3e6=0x3c,_0x519f60=0x0;if(Math['floor'](_0xdea4b1)==0x3c)_0x1df3e6=0x3c,_0x519f60=0x0;else{if(Math[_0x2b271a(0x1dd)](_0xdea4b1)==0x3b)_0x1df3e6=0x3c,_0x519f60=0x4;else{if(Math[_0x2b271a(0x1dd)](_0xdea4b1)==0x1e)_0x1df3e6=0x1e,_0x519f60=0x0;else Math[_0x2b271a(0x1dd)](_0xdea4b1)==0x1d&&(_0x1df3e6=0x1e,_0x519f60=0x2);}}let _0x828bbc=0x0,_0x5dcbb8=Math[_0x2b271a(0x1dd)](_0xdea4b1*0x3c),_0x54a5f6=Math[_0x2b271a(0x1dd)](_0xdea4b1*0x3c*0xa),_0x3f52dd=_0x54a5f6*0x6,_0x48d774=_0x56249a[0x0],_0x571ff5=_0x56249a[0x1],_0x55fd43=_0x56249a[0x2],_0x562660=_0x56249a[0x3],_0x43e6bc=_0x56249a[0x4];_0x828bbc+=_0x48d774*_0x3f52dd,_0x828bbc+=_0x571ff5*(_0x1df3e6*0x3c),_0x828bbc+=_0x55fd43*_0x1df3e6;if(_0x49589a)_0x828bbc+=_0x562660*0x2+_0x43e6bc;else _0x828bbc+=_0x562660;return _0x828bbc-=_0x519f60*_0x571ff5,_0x828bbc+=_0x519f60*Math['floor'](_0x571ff5/0xa),_0x828bbc;},_0x1876f6=(_0x552a98,_0x2f3536,_0x47e8bc)=>{const _0x265ef=_0xbe5e;let _0x3403cf=0x3c,_0x412784=0x0;if(Math[_0x265ef(0x1dd)](_0x2f3536)==0x3c)_0x3403cf=0x3c,_0x412784=0x0;else{if(Math[_0x265ef(0x1dd)](_0x2f3536)==0x3b)_0x3403cf=0x3c,_0x412784=0x4;else{if(Math[_0x265ef(0x1dd)](_0x2f3536)==0x1e)_0x3403cf=0x1e,_0x412784=0x0;else Math['floor'](_0x2f3536)==0x1d&&(_0x3403cf=0x1e,_0x412784=0x2);}}let _0x22d51f=0x0,_0x352d96=Math[_0x265ef(0x1dd)](_0x2f3536*0x3c),_0x121ff9=Math[_0x265ef(0x1dd)](_0x2f3536*0x3c*0xa),_0x29802a=_0x121ff9*0x6,_0x3a116b=_0x552a98,_0xaccbfa=Math[_0x265ef(0x1dd)](_0x3a116b/_0x29802a);_0x3a116b-=_0xaccbfa*_0x29802a;let _0x385d4c=Math[_0x265ef(0x1dd)](_0x3a116b/_0x121ff9);_0x3a116b-=_0x385d4c*_0x121ff9;if(_0x3a116b>=_0x3403cf*0x3c)_0x3a116b+=_0x412784*(Math[_0x265ef(0x1dd)]((_0x3a116b-_0x3403cf*0x3c)/_0x352d96)+0x1);let _0x1649e2=Math['floor'](_0x3a116b/(_0x3403cf*0x3c));_0x3a116b-=_0x1649e2*(_0x3403cf*0x3c);let _0x370151=Math[_0x265ef(0x1dd)](_0x3a116b/_0x3403cf);_0x3a116b-=_0x370151*_0x3403cf;let _0x279c84=_0x3a116b;_0x1649e2+=_0x385d4c*0xa,dotOne=0x0;_0x47e8bc&&(dotOne=_0x279c84%0x2,_0x279c84=Math[_0x265ef(0x1dd)](_0x279c84/0x2));let _0x2ece38=[_0xaccbfa,_0x1649e2,_0x370151,_0x279c84,dotOne];return _0x2ece38;},_0x228cb8=(_0x5c9e07,_0x2c5591,_0x2c2fb3)=>{let _0x500271=_0x2c2fb3>0x1e,_0x6465e=_0x5b6b28(_0x5c9e07,_0x2c2fb3,_0x500271);return _0x6465e+=_0x2c5591,_0x1876f6(_0x6465e,_0x2c2fb3,_0x500271);},_0x5ecfcc=_0x38d1c0=>{return{'h':_0x38d1c0[0x0],'m':_0x38d1c0[0x1],'s':_0x38d1c0[0x2],'f':_0x38d1c0[0x3],'field':_0x38d1c0[0x4]};},_0x51acd5=(_0x1c0aff,_0x3145c4)=>{const _0x19efd4=_0xbe5e;let _0x28d161=BB[_0x19efd4(0x283)][_0x19efd4(0x385)](_0x1c0aff,_0x3145c4);return _0x3145c4>0x3b?BB['Utils'][_0x19efd4(0x3aa)][_0x19efd4(0x3a5)](tcFromMessage,!![]):BB['Utils'][_0x19efd4(0x3aa)]['printTimecode'](tcFromMessage,![]);let _0xf401dd=BB[_0x19efd4(0x283)][_0x19efd4(0x29f)],_0x1ad7f3='';_0xf401dd['isApple']()?_0x1ad7f3=_0x1c0aff:_0x1ad7f3=_0x1c0aff[_0x19efd4(0x3b1)]();let _0x25f4d5=_0x1ad7f3['split']('T')[0x1],_0x5b6067=_0x25f4d5['split'](':'),_0x1506ae=parseInt(_0x5b6067[0x0]),_0x4095d4=parseInt(_0x5b6067[0x1]),_0x3fa7b4=_0x5b6067[0x2][_0x19efd4(0x266)]('.'),_0x49bd02=parseInt(_0x3fa7b4[0x0]),_0x1ad96c=parseInt(_0x3fa7b4[0x1][_0x19efd4(0x24a)](0x0,0x3)),_0x339b89=Math[_0x19efd4(0x1e5)](_0x1ad96c/0x3e8*_0x3145c4);if(_0x3145c4>0x3b){let _0x583385=_0x339b89%0x2==0x0?0x1:0x2;_0x339b89=Math['floor'](_0x339b89/0x2);let _0x2deb65=_0x1506ae[_0x19efd4(0x38b)]()['padStart'](0x2,'0')+':'+_0x4095d4['toString']()[_0x19efd4(0x390)](0x2,'0')+':'+_0x49bd02[_0x19efd4(0x38b)]()[_0x19efd4(0x390)](0x2,'0')+':'+_0x339b89[_0x19efd4(0x38b)]()[_0x19efd4(0x390)](0x2,'0')+'.'+_0x583385[_0x19efd4(0x38b)]();return _0x2deb65;}else{let _0x5832e2=_0x1506ae[_0x19efd4(0x38b)]()['padStart'](0x2,'0')+':'+_0x4095d4['toString']()[_0x19efd4(0x390)](0x2,'0')+':'+_0x49bd02[_0x19efd4(0x38b)]()['padStart'](0x2,'0')+':'+_0x339b89[_0x19efd4(0x38b)]()[_0x19efd4(0x390)](0x2,'0');return _0x5832e2;}return str;},_0x3bdb59=(_0x7ca8c1,_0x45a674)=>{const _0x40461a=_0xbe5e;let _0x52e4a5=BB[_0x40461a(0x283)]['Platform'],_0x283293='';_0x52e4a5[_0x40461a(0x1ec)]()?_0x283293=_0x7ca8c1:_0x283293=_0x7ca8c1[_0x40461a(0x3b1)]();let _0x193a76=_0x283293[_0x40461a(0x266)]('T')[0x1],_0x3967e0=_0x193a76[_0x40461a(0x266)](':'),_0x34feb7=parseInt(_0x3967e0[0x0]),_0x35ccc4=parseInt(_0x3967e0[0x1]),_0x81ead3=_0x3967e0[0x2][_0x40461a(0x266)]('.'),_0x4bc267=parseInt(_0x81ead3[0x0]),_0x1f5d17=parseInt(_0x81ead3[0x1][_0x40461a(0x24a)](0x0,0x3));if(_0x45a674>0x3b){let _0x1cc8d2=Math[_0x40461a(0x1e5)]((_0x1f5d17/0x3e8+_0x4bc267+_0x35ccc4*0x3c+_0x34feb7*0x3c*0x3c)*_0x45a674),_0x1d6c5a=BB[_0x40461a(0x283)][_0x40461a(0x3aa)][_0x40461a(0x29a)](_0x1cc8d2,_0x45a674,!![]);return _0x1d6c5a;}else{let _0x2a35dc=Math['round']((_0x1f5d17/0x3e8+_0x4bc267+_0x35ccc4*0x3c+_0x34feb7*0x3c*0x3c)*_0x45a674),_0x22043c=BB[_0x40461a(0x283)][_0x40461a(0x3aa)][_0x40461a(0x29a)](_0x2a35dc,_0x45a674,![]);return _0x22043c;}};return{'printTimecode':_0x3f8550,'timeCodeStr2TimeCodeArray':_0x521b6f,'Timecode2Frames':_0x5b6b28,'Frames2Timecode':_0x1876f6,'TimeCodeAddFrames':_0x228cb8,'TimeCodeArray2TimeCodeJson':_0x5ecfcc,'timeDate2TCString':_0x51acd5,'timeDate2TC':_0x3bdb59};})()),_0x2abea2=_0x5bd83c=>{let _0x59557a=_0x5bd83c||0x2540be3ff,_0x484d08=[],_0x26b9b2=0x0;const _0x2c010a=_0x29d262=>{const _0xd289ef=_0xbe5e;++_0x26b9b2,_0x484d08[_0xd289ef(0x3b0)](_0x29d262);while(_0x484d08[_0xd289ef(0x24f)]>_0x59557a)_0x484d08[_0xd289ef(0x3e4)]();},_0x3965f7=()=>{const _0x526ec3=_0xbe5e;if(_0x484d08[_0x526ec3(0x24f)]==0x0)return-0x1;let _0x4a7728=Array['from'](_0x484d08)['sort']((_0x2f8941,_0x9dea5b)=>{return _0x2f8941-_0x9dea5b;});return _0x4a7728[parseInt(_0x4a7728[_0x526ec3(0x24f)]/0x2)];},_0x5bb40a=()=>{return _0x26b9b2;};return{'add':_0x2c010a,'getMedian':_0x3965f7,'howMany':_0x5bb40a};},_0x3fc5a1=((()=>{const _0x3df110=()=>{const _0x506774=_0xbe5e,_0x19965e=navigator[_0x506774(0x3d3)];if(/windows/i[_0x506774(0x342)](_0x19965e))return _0x506774(0x393);else{if(/android/i[_0x506774(0x342)](_0x19965e))return _0x506774(0x334);else{if(/iphone|ipad|ipod/i[_0x506774(0x342)](_0x19965e))return'iOS';else{if(/mac/i[_0x506774(0x342)](_0x19965e)){let _0x4af7b2=_0x506774(0x238)in window||navigator[_0x506774(0x3a6)]>0x0||navigator[_0x506774(0x37c)]>0x0;if(_0x4af7b2)return _0x506774(0x202);else return _0x506774(0x2b7);}else return/ipad/i['test'](_0x19965e)?'iPad':_0x506774(0x34c);}}}},_0x5dfd45=()=>{const _0x1c89a6=_0xbe5e;let _0xa851c2=_0x3df110();return _0xa851c2==_0x1c89a6(0x2b7);},_0x441e5d=()=>{const _0x438f19=_0xbe5e;let _0x5afe27=_0x3df110();return _0x5afe27==_0x438f19(0x202);},_0x32ebab=()=>{const _0x590629=_0xbe5e;let _0x4cdc55=_0x3df110();return _0x4cdc55==_0x590629(0x3fd);},_0x2dfa14=()=>{const _0x34a86e=_0xbe5e;let _0x321169=_0x3df110();return _0x321169==_0x34a86e(0x3fd)||_0x321169==_0x34a86e(0x2b7)||_0x321169==_0x34a86e(0x202);},_0x160bcc=()=>{let _0x11eef4=_0x3df110();return _0x11eef4=='Windows';},_0x4e5b32=()=>{const _0x558e70=_0xbe5e;let _0x169cba=_0x3df110();return _0x169cba==_0x558e70(0x334);},_0x4e93cd=()=>{const _0x6792f8=_0xbe5e;let _0xb89ec9=_0x3df110();if(_0xb89ec9==_0x6792f8(0x393))return'a\x20Windows\x20PC';else{if(_0xb89ec9==_0x6792f8(0x334))return _0x6792f8(0x207);else{if(_0xb89ec9==_0x6792f8(0x3fd))return _0x6792f8(0x33e);else{if(_0xb89ec9==_0x6792f8(0x2b7))return _0x6792f8(0x1f2);else{if(_0xb89ec9==_0x6792f8(0x202))return'an\x20iPad';else return _0x6792f8(0x388);}}}}},_0x1ee738=()=>{const _0x3d80be=_0xbe5e;let _0x25f863={'options':[],'header':[navigator['platform'],navigator[_0x3d80be(0x3d3)],navigator[_0x3d80be(0x373)],navigator['vendor'],window[_0x3d80be(0x1e1)]],'dataos':[{'name':'Windows\x20Phone','value':'Windows\x20Phone','version':'OS'},{'name':_0x3d80be(0x393),'value':_0x3d80be(0x3c0),'version':'NT'},{'name':_0x3d80be(0x2f5),'value':_0x3d80be(0x2f5),'version':'OS'},{'name':_0x3d80be(0x202),'value':_0x3d80be(0x202),'version':'OS'},{'name':_0x3d80be(0x32d),'value':_0x3d80be(0x2de),'version':_0x3d80be(0x2de)},{'name':_0x3d80be(0x334),'value':_0x3d80be(0x334),'version':_0x3d80be(0x334)},{'name':'PlayBook','value':_0x3d80be(0x2fb),'version':'OS'},{'name':'BlackBerry','value':_0x3d80be(0x3bf),'version':'/'},{'name':_0x3d80be(0x2d8),'value':_0x3d80be(0x2b7),'version':_0x3d80be(0x37d)},{'name':_0x3d80be(0x384),'value':_0x3d80be(0x384),'version':'rv'},{'name':_0x3d80be(0x3c5),'value':'Palm','version':_0x3d80be(0x362)}],'databrowser':[{'name':_0x3d80be(0x293),'value':_0x3d80be(0x293),'version':'Chrome'},{'name':'Firefox','value':_0x3d80be(0x2e2),'version':_0x3d80be(0x2e2)},{'name':'Safari','value':'Safari','version':_0x3d80be(0x23e)},{'name':_0x3d80be(0x31c),'value':'MSIE','version':_0x3d80be(0x2b8)},{'name':_0x3d80be(0x2b2),'value':_0x3d80be(0x2b2),'version':_0x3d80be(0x2b2)},{'name':'BlackBerry','value':_0x3d80be(0x235),'version':_0x3d80be(0x235)},{'name':_0x3d80be(0x25c),'value':_0x3d80be(0x25c),'version':_0x3d80be(0x25c)}],'init':function(){const _0xcfe578=_0x3d80be;let _0x556ed8=this['header'][_0xcfe578(0x3c7)]('\x20'),_0x39e7c=this['matchItem'](_0x556ed8,this['dataos']),_0x4aae01=this['matchItem'](_0x556ed8,this[_0xcfe578(0x3d4)]);return{'os':_0x39e7c,'browser':_0x4aae01};},'matchItem':function(_0x33cdc7,_0x1c3f86){const _0x1554bc=_0x3d80be;let _0x565bf9=0x0,_0x404de9=0x0,_0x4fcad0='',_0x235f22,_0x41806c,_0x77ffe9,_0xe7bd52,_0x434e9b;for(_0x565bf9=0x0;_0x565bf9<_0x1c3f86[_0x1554bc(0x24f)];_0x565bf9+=0x1){_0x235f22=new RegExp(_0x1c3f86[_0x565bf9]['value'],'i'),_0x77ffe9=_0x235f22['test'](_0x33cdc7);if(_0x77ffe9){_0x41806c=new RegExp(_0x1c3f86[_0x565bf9][_0x1554bc(0x3fc)]+_0x1554bc(0x382),'i'),_0xe7bd52=_0x33cdc7[_0x1554bc(0x325)](_0x41806c),_0x434e9b='';_0xe7bd52&&(_0xe7bd52[0x1]&&(_0xe7bd52=_0xe7bd52[0x1]));if(_0xe7bd52){_0xe7bd52=_0xe7bd52['split'](/[._]+/);for(_0x404de9=0x0;_0x404de9<_0xe7bd52['length'];_0x404de9+=0x1){_0x404de9===0x0?_0x434e9b+=_0xe7bd52[_0x404de9]+'.':_0x434e9b+=_0xe7bd52[_0x404de9];}}else _0x434e9b='0';return{'name':_0x1c3f86[_0x565bf9]['name'],'version':parseFloat(_0x434e9b)};}}return{'name':_0x1554bc(0x3f9),'version':0x0};}},_0x346659=_0x25f863[_0x3d80be(0x3cb)]();return _0x346659['os']['name'];},_0x1a94bd=()=>{const _0x281898=_0xbe5e,_0x58631b=navigator[_0x281898(0x3d3)];if(_0x58631b[_0x281898(0x285)](_0x281898(0x293))>-0x1&&_0x58631b['indexOf'](_0x281898(0x408))===-0x1)return _0x281898(0x293);else{if(_0x58631b[_0x281898(0x285)](_0x281898(0x3e5))>-0x1&&_0x58631b[_0x281898(0x285)]('Chrome')===-0x1)return _0x281898(0x3e5);else{if(_0x58631b[_0x281898(0x285)]('Firefox')>-0x1)return'Firefox';else{if(_0x58631b[_0x281898(0x285)](_0x281898(0x2b8))>-0x1||_0x58631b['indexOf']('Trident')>-0x1)return _0x281898(0x31c);else return _0x58631b[_0x281898(0x285)](_0x281898(0x408))>-0x1?_0x281898(0x408):_0x281898(0x2a3);}}}},_0x528f20=()=>{const _0x48ff68=_0xbe5e;return _0x5dfd45()&&_0x1a94bd()==_0x48ff68(0x3e5);},_0x5c6fa9=()=>{const _0x5f1fd2=_0xbe5e;return _0x5dfd45()&&_0x1a94bd()==_0x5f1fd2(0x293);},_0x1c9a3a=()=>{const _0x4c7760=_0xbe5e;return _0x160bcc()&&_0x1a94bd()==_0x4c7760(0x293);};return{'getDeviceName':_0x1ee738,'getCurrentPlatform':_0x3df110,'isApple':_0x2dfa14,'isWindows':_0x160bcc,'isAndroid':_0x4e5b32,'isMac':_0x5dfd45,'isiPhone':_0x32ebab,'isiPad':_0x441e5d,'getDeviceDescription':_0x4e93cd,'getBrowserName':_0x1a94bd,'isSafariMac':_0x528f20,'isChromeMac':_0x5c6fa9,'isChromeWin':_0x1c9a3a};})()),_0x52f68c=_0x2d1376=>{const _0x643fcc=_0xbe5e;let _0x555d99=0x3c;switch(_0x2d1376){case BB[_0x643fcc(0x3d6)]['Src60_MediaTime60']:_0x555d99=0x3c;break;case BB[_0x643fcc(0x3d6)]['Src59_MediaTime60']:_0x555d99=0x3c;break;case BB['FrameRateMode'][_0x643fcc(0x356)]:_0x555d99=0xea60/0x3e9;break;case BB['FrameRateMode'][_0x643fcc(0x3b3)]:_0x555d99=0x7530/0x3e9;break;default:console[_0x643fcc(0x361)](_0x643fcc(0x2f7));break;};return _0x555d99;},_0x40c00b=_0xc83660=>{const _0x12783c=_0xbe5e;let _0x1dcf18=0x3c;switch(_0xc83660){case BB[_0x12783c(0x3d6)]['Src60_MediaTime60']:_0x1dcf18=0x3c;break;case BB[_0x12783c(0x3d6)][_0x12783c(0x3f2)]:_0x1dcf18=0xea60/0x3e9;break;case BB[_0x12783c(0x3d6)][_0x12783c(0x356)]:_0x1dcf18=0xea60/0x3e9;break;case BB[_0x12783c(0x3d6)][_0x12783c(0x3b3)]:_0x1dcf18=0x7530/0x3e9;break;default:console['error'](_0x12783c(0x28c));break;};return _0x1dcf18;},_0x4d728b=(_0x515552,_0x345db4)=>{const _0x54162c=_0xbe5e,_0x51afb5=(_0x4d08d6,_0x395d5e)=>{const _0x300686=_0xbe5e;if(Math[_0x300686(0x2d3)](_0x4d08d6-_0x395d5e)<0.01)return!![];else return![];};if(_0x51afb5(_0x515552,0x3c)){if(_0x51afb5(BB[_0x54162c(0x283)][_0x54162c(0x3db)](_0x345db4[_0x54162c(0x360)]),0x3c))_0x345db4['frameRateMode']=BB[_0x54162c(0x3d6)][_0x54162c(0x245)];else{if(_0x51afb5(BB[_0x54162c(0x283)][_0x54162c(0x3db)](_0x345db4[_0x54162c(0x360)]),0xea60/0x3e9))_0x345db4[_0x54162c(0x360)]=BB[_0x54162c(0x3d6)][_0x54162c(0x3f2)];else console[_0x54162c(0x361)]('setMediaFPS:\x20Unknown\x20Source\x20FrameRate\x20mode');}}else{if(_0x51afb5(_0x515552,0xea60/0x3e9)){if(_0x51afb5(BB[_0x54162c(0x283)][_0x54162c(0x3db)](_0x345db4[_0x54162c(0x360)]),0x3c))_0x345db4['frameRateMode']=BB[_0x54162c(0x3d6)][_0x54162c(0x243)];else{if(_0x51afb5(BB[_0x54162c(0x283)][_0x54162c(0x3db)](_0x345db4[_0x54162c(0x360)]),0xea60/0x3e9))_0x345db4['frameRateMode']=BB[_0x54162c(0x3d6)][_0x54162c(0x356)];else console[_0x54162c(0x361)](_0x54162c(0x321));}}else{if(_0x51afb5(_0x515552,0x7530/0x3e9)){if(_0x51afb5(BB[_0x54162c(0x283)]['getSourceFPS'](_0x345db4[_0x54162c(0x360)]),0x7530/0x3e9))_0x345db4[_0x54162c(0x360)]=BB[_0x54162c(0x3d6)][_0x54162c(0x3b3)];else console['error']('setMediaFPS:\x20Unknown\x20Source\x20FrameRate\x20mode,\x20fps\x20=\x20'+_0x515552);}else console[_0x54162c(0x361)](_0x54162c(0x1db));}}},_0x168853=()=>{const _0xe427cd=[0x7530/0x3e9,0x1e/0x1],_0x2a1696=[0xea60/0x3e9,0x3c/0x1];let _0x48b3b1=[],_0x32c250=[],_0x570cca=0x0,_0x50bad7=-0x1,_0x230851=0x0;const _0x5c208e=_0x459f62=>{const _0x52a3f7=_0xbe5e;_0x230851++;let _0x45bb93=0x3e7,_0x496526=0x0;if(_0x50bad7==-0x1){_0x50bad7=_0x459f62;return;}else{let _0xc25c0b=_0x459f62-_0x50bad7;if(_0x570cca<0x64){_0x32c250[_0x52a3f7(0x3b0)](_0xc25c0b),_0x570cca++;return;}else _0x32c250[_0x52a3f7(0x3b0)](_0xc25c0b),_0x32c250['shift']();let _0x54b817=0x0;for(let _0x495e66=0x0;_0x495e66<_0x32c250[_0x52a3f7(0x24f)];_0x495e66++){_0x54b817+=_0x32c250[_0x495e66];}_0xc25c0b=_0x54b817/_0x32c250[_0x52a3f7(0x24f)];if(0x1/_0xc25c0b<0x28)possibleFps=_0xe427cd;else possibleFps=_0x2a1696;}_0x50bad7=_0x459f62;for(let _0xdc0d3=0x0;_0xdc0d3<possibleFps[_0x52a3f7(0x24f)];++_0xdc0d3){let _0x5f3310=possibleFps[_0xdc0d3],_0x16faa8=_0x459f62*_0x5f3310,_0x46621b=Math['round'](_0x16faa8),_0x16b545=Math[_0x52a3f7(0x2d3)](_0x16faa8-_0x46621b);_0x16b545<_0x45bb93&&(_0x45bb93=_0x16b545,_0x496526=_0x5f3310);}let _0x42a7af=_0x496526;_0x48b3b1['push'](_0x42a7af);if(_0x230851>0x3e8)_0x48b3b1['shift']();},_0x2f7b07=()=>{const _0x3c99fa=_0xbe5e;let _0x2d29f4={},_0x3d118c,_0x533ef5=0x0;for(let _0x2065c7=0x0;_0x2065c7<_0x48b3b1[_0x3c99fa(0x24f)];_0x2065c7++){let _0x1f1a5a=_0x48b3b1[_0x2065c7];_0x2d29f4[_0x1f1a5a]=(_0x2d29f4[_0x1f1a5a]||0x0)+0x1,_0x2d29f4[_0x1f1a5a]>_0x533ef5&&(_0x3d118c=_0x1f1a5a,_0x533ef5=_0x2d29f4[_0x1f1a5a]);}return _0x3d118c;},_0x16b6b9=()=>{return _0x230851;};return{'addTime':_0x5c208e,'getProbableFPS':_0x2f7b07,'howMany':_0x16b6b9};};return{'TimeCodesFramesTranslator':_0x53d6d5,'MedianCalculator':_0x2abea2,'Platform':_0x3fc5a1,'getMediaTimeFPS':_0x52f68c,'getSourceFPS':_0x40c00b,'setMediaFPS':_0x4d728b,'FPSGetter':_0x168853};})()),BB['Socket']=class{constructor(_0x13438f){const _0x1158da=_0x3e12b0;this[_0x1158da(0x2b6)]=![],this[_0x1158da(0x2be)]='',this[_0x1158da(0x3c2)]=_0x13438f,this[_0x1158da(0x37f)]='';}[_0x3e12b0(0x2cb)](_0x4eaf8f){const _0x3ef5b1=_0x3e12b0;if(typeof io=='undefined'||this['isConnected'])return;this[_0x3ef5b1(0x2b6)]=!![];const _0x35f685=io(_0x3ef5b1(0x40b));_0x35f685['on'](_0x3ef5b1(0x369),()=>{const _0x3fd012=_0x3ef5b1;console[_0x3fd012(0x3dd)](_0x3fd012(0x340));let _0x4b70db=BB[_0x3fd012(0x283)]['Platform'];_0x35f685[_0x3fd012(0x208)](_0x3fd012(0x1de),{'device':_0x4b70db[_0x3fd012(0x2e5)]()},_0x2bdec1=>{const _0x5b3169=_0x3fd012;this[_0x5b3169(0x37f)]=_0x2bdec1[_0x5b3169(0x37f)],_0x35f685['emit'](_0x5b3169(0x3c7),_0x4eaf8f,_0x204b64=>{const _0x898768=_0x5b3169;console[_0x898768(0x3dd)](_0x898768(0x33f)+_0x4eaf8f+_0x898768(0x376)),this[_0x898768(0x3c2)]('join',_0x204b64);});});}),_0x35f685['on'](_0x3ef5b1(0x361),_0xbf221d=>{const _0x5cd129=_0x3ef5b1;console['error'](_0x5cd129(0x249)+_0xbf221d);}),_0x35f685['on']('disconnect',_0x4cef52=>{const _0x23770c=_0x3ef5b1;console[_0x23770c(0x361)](_0x23770c(0x2bf)+_0x4cef52);}),_0x35f685['on']('messageroom',_0xe2861c=>{const _0x5ee982=_0x3ef5b1;this[_0x5ee982(0x3c2)](_0x5ee982(0x367),_0xe2861c),console[_0x5ee982(0x3dd)](_0x5ee982(0x2ae),_0xe2861c);}),_0x35f685['on'](_0x3ef5b1(0x3e9),_0x1fe89c=>{const _0x14118d=_0x3ef5b1;this[_0x14118d(0x3c2)](_0x14118d(0x3e9),_0x1fe89c),console['log']('ads:',_0x1fe89c);});}},BB['Augmenter']=(_0x1bcaa5,_0x37a3fc,_0x5749ab)=>{const _0x5a8e85=_0x3e12b0;console['log']('BB.Augmenter\x20Start');function _0x2f843e(_0x3d5016,_0x5ceeec){const _0x3ca537=_0xbe5e;let _0x4ad98e='';if(_0x3d5016&&_0x3d5016[_0x3ca537(0x40c)]('www.mediakind.com/NTC')){const _0x3a7473=_0x3d5016[_0x3ca537(0x27a)](/.*NTC./,'');let _0x4afdc4=0x0;while(_0x4afdc4+0x8<=_0x3a7473['length']){const _0x586209=_0x3a7473['substring'](_0x4afdc4,_0x4afdc4+0x4),_0x8e427f=((_0x3a7473[_0x3ca537(0x378)](_0x4afdc4+0x4)*0x100+_0x3a7473['charCodeAt'](_0x4afdc4+0x5))*0x100+_0x3a7473[_0x3ca537(0x378)](_0x4afdc4+0x6))*0x100+_0x3a7473[_0x3ca537(0x378)](_0x4afdc4+0x7);if(_0x4afdc4+0x8+_0x8e427f>_0x3a7473['length'])break;const _0x430cde=_0x3a7473[_0x3ca537(0x24a)](_0x4afdc4+0x8,_0x4afdc4+0x8+_0x8e427f);_0x586209==_0x3ca537(0x280)&&(timecodeDateTime=new Date(parseInt(_0x430cde))[_0x3ca537(0x300)]()/0x3e8,timecodeDelta=timecodeDateTime-_0x5ceeec);_0x586209==_0x3ca537(0x2e9)&&(tcTimeStamp=new Date(parseInt(_0x430cde))[_0x3ca537(0x300)]());if(_0x586209===_0x3ca537(0x2c7)){timecode_offset=parseInt(_0x430cde)/0x5a;if(_0x5749ab[_0x3ca537(0x2a1)])console[_0x3ca537(0x3dd)](_0x3ca537(0x348),timecode_offset);}_0x4afdc4+=0x8+_0x8e427f;}}return _0x4ad98e;}let _0x5b2d85=[0x0,0x0,0x0,0x0,0x0];function _0x51e578(_0x4184f1){const _0x4db8c9=_0xbe5e;if(_0x4184f1&&_0x4184f1[_0x4db8c9(0x2fa)]&&_0x4184f1['metadata']['id']==0x0||_0xb84bbe[_0x4db8c9(0x3e0)]()){if(_0x4184f1['metadata']['messageData'])_0x4184f1['metadata'][_0x4db8c9(0x3fa)]=_0x2f843e(_0x4184f1['metadata'][_0x4db8c9(0x3fa)],_0x4184f1['metadata'][_0x4db8c9(0x2a9)]);else{if(_0x4184f1[_0x4db8c9(0x2fa)]['frames']&&_0x4184f1[_0x4db8c9(0x2fa)]['frames'][_0x4db8c9(0x24f)]&&_0x4184f1[_0x4db8c9(0x2fa)][_0x4db8c9(0x22e)][0x0][_0x4db8c9(0x3ed)]&&_0x4184f1[_0x4db8c9(0x2fa)]['frames'][0x0][_0x4db8c9(0x3ed)][_0x4db8c9(0x267)]()===_0x4db8c9(0x25d)){const _0x2fc43f=_0x4184f1[_0x4db8c9(0x2fa)]['frames']['filter'](_0x4119ee=>{const _0x3699a5=_0x4db8c9;return _0x4119ee[_0x3699a5(0x213)]&&_0x4119ee[_0x3699a5(0x213)]['toLowerCase']()['includes'](_0x3699a5(0x2c6));});_0x2fc43f['length']&&(messageData=_0x2fc43f[_0x2fc43f[_0x4db8c9(0x24f)]-0x1][_0x4db8c9(0x213)]+'\x00'+String[_0x4db8c9(0x26e)](..._0x2fc43f[_0x2fc43f[_0x4db8c9(0x24f)]-0x1][_0x4db8c9(0x319)]),_0x4184f1['metadata'][_0x4db8c9(0x3fa)]=_0x2f843e(messageData,_0x4184f1[_0x4db8c9(0x2fa)][_0x4db8c9(0x2a9)]));}}(_0x4184f1[_0x4db8c9(0x2fa)]['id']==0x0||_0xb84bbe['isSafariMac']()&&timecode_offset==0x0)&&(presentationTime=_0x4184f1[_0x4db8c9(0x2fa)][_0x4db8c9(0x2a9)]*0x3e8,offsetTimeCode=new Date(tcTimeStamp-timecode_offset),offsetTimeCodeframeNumber=Math[_0x4db8c9(0x1e5)](offsetTimeCode[_0x4db8c9(0x205)]()*0x1e*0x2/0x3e9)/0x2,decimalPartOff=offsetTimeCodeframeNumber%0x1,partoff=0x1,decimalPartOff==0.5&&(offsetTimeCodeframeNumber=Math['floor'](offsetTimeCodeframeNumber),partoff=0x2),_0x5b2d85=[offsetTimeCode[_0x4db8c9(0x3e7)](),offsetTimeCode[_0x4db8c9(0x225)](),offsetTimeCode[_0x4db8c9(0x3b4)](),parseInt(offsetTimeCodeframeNumber),partoff==0x1?0x0:0x1]);}}function _0x379537(_0x29a1d2){const _0xaabf86=_0xbe5e;if(typeof globalConfig!==_0xaabf86(0x2bd)){if(typeof globalConfig[_0xaabf86(0x244)]!==_0xaabf86(0x2bd)){if(globalConfig[_0xaabf86(0x244)]=='no')return;}}if(BB[_0xaabf86(0x283)][_0xaabf86(0x3db)](_0x5749ab[_0xaabf86(0x360)])==0x7530/0x3e9){let _0x4025e2={'frame':0x0,'playerTime':0x0};_0x4025e2[_0xaabf86(0x2ed)]=BB['Utils']['TimeCodesFramesTranslator']['Timecode2Frames'](_0x5b2d85,0x7530/0x3e9,![]),_0x4025e2[_0xaabf86(0x27b)]=BB[_0xaabf86(0x283)][_0xaabf86(0x3aa)]['printTimecode'](_0x5b2d85,![],![]),console[_0xaabf86(0x3dd)](_0xaabf86(0x2d2)+_0x29a1d2[_0xaabf86(0x28e)]+_0xaabf86(0x1ef)+_0x4025e2[_0xaabf86(0x27b)]+'\x20('+_0x4025e2[_0xaabf86(0x2ed)]+')'+'\x20playing\x20at\x20'+_0x29a1d2[_0xaabf86(0x30f)]),_0x4025e2[_0xaabf86(0x270)]=_0x29a1d2[_0xaabf86(0x30f)],_0x5749ab[_0xaabf86(0x28d)]=_0x4025e2;}else{if(BB[_0xaabf86(0x283)][_0xaabf86(0x3db)](_0x5749ab[_0xaabf86(0x360)])==0xea60/0x3e9){let _0x4971c3={'frame':0x0,'playerTime':0x0};_0x4971c3[_0xaabf86(0x2ed)]=BB[_0xaabf86(0x283)][_0xaabf86(0x3aa)][_0xaabf86(0x40e)](_0x5b2d85,0xea60/0x3e9,!![]),_0x4971c3[_0xaabf86(0x27b)]=BB[_0xaabf86(0x283)][_0xaabf86(0x3aa)][_0xaabf86(0x3a5)](_0x5b2d85,!![],!![]),console[_0xaabf86(0x3dd)]('New\x20segment\x20('+_0x29a1d2[_0xaabf86(0x28e)]+_0xaabf86(0x1ef)+_0x4971c3['stringTime']+'\x20('+_0x4971c3[_0xaabf86(0x2ed)]+')'+_0xaabf86(0x20c)+_0x29a1d2[_0xaabf86(0x30f)]),_0x4971c3['playerTime']=_0x29a1d2[_0xaabf86(0x30f)],_0x5749ab[_0xaabf86(0x28d)]=_0x4971c3;}}_0x29a1d2[_0xaabf86(0x1fa)][_0xaabf86(0x40c)](_0xaabf86(0x216))&&console[_0xaabf86(0x3dd)](_0xaabf86(0x25a)+_0x29a1d2[_0xaabf86(0x28e)]);}function _0x55a3f9(_0x56b8a0){const _0x48d9c3=_0xbe5e;switch(_0x56b8a0['eventType']){case wmcEvents[_0x48d9c3(0x39d)]:let _0x55c054={'frame':0x0,'playerTime':0x0};BB[_0x48d9c3(0x283)][_0x48d9c3(0x3db)](_0x5749ab[_0x48d9c3(0x360)])==0x7530/0x3e9&&(console[_0x48d9c3(0x3dd)](_0x48d9c3(0x2d2)+_0x56b8a0[_0x48d9c3(0x28e)]+_0x48d9c3(0x1ef)+BB['Utils'][_0x48d9c3(0x3aa)][_0x48d9c3(0x366)](_0x56b8a0[_0x48d9c3(0x3f7)],0x7530/0x3e9)+_0x48d9c3(0x20c)+_0x56b8a0[_0x48d9c3(0x30f)]),_0x55c054['frame']=BB[_0x48d9c3(0x283)][_0x48d9c3(0x3aa)][_0x48d9c3(0x40e)](BB[_0x48d9c3(0x283)][_0x48d9c3(0x3aa)][_0x48d9c3(0x385)](_0x56b8a0[_0x48d9c3(0x3f7)],0x7530/0x3e9),0x7530/0x3e9,![]),_0x55c054[_0x48d9c3(0x27b)]=BB[_0x48d9c3(0x283)][_0x48d9c3(0x3aa)][_0x48d9c3(0x366)](_0x56b8a0[_0x48d9c3(0x3f7)],0x7530/0x3e9));BB[_0x48d9c3(0x283)][_0x48d9c3(0x3db)](_0x5749ab[_0x48d9c3(0x360)])==0xea60/0x3e9&&(console['log']('New\x20segment\x20('+_0x56b8a0[_0x48d9c3(0x28e)]+_0x48d9c3(0x1ef)+BB[_0x48d9c3(0x283)][_0x48d9c3(0x3aa)][_0x48d9c3(0x366)](_0x56b8a0['dateTime'],0xea60/0x3e9)+_0x48d9c3(0x20c)+_0x56b8a0[_0x48d9c3(0x30f)]),_0x55c054[_0x48d9c3(0x2ed)]=BB[_0x48d9c3(0x283)][_0x48d9c3(0x3aa)][_0x48d9c3(0x40e)](BB[_0x48d9c3(0x283)][_0x48d9c3(0x3aa)][_0x48d9c3(0x385)](_0x56b8a0[_0x48d9c3(0x3f7)]),fps,!![]),_0x55c054[_0x48d9c3(0x27b)]=BB[_0x48d9c3(0x283)][_0x48d9c3(0x3aa)][_0x48d9c3(0x366)](_0x56b8a0[_0x48d9c3(0x3f7)],0xea60/0x3e9));_0x55c054['playerTime']=_0x56b8a0['playbackTime'],_0x5749ab['syncPoint']=_0x55c054;break;default:}}let _0x4f7d9e=BB[_0x5a8e85(0x283)][_0x5a8e85(0x3aa)],_0x11573f=BB[_0x5a8e85(0x283)][_0x5a8e85(0x3db)](_0x5749ab[_0x5a8e85(0x360)]),_0x25c0f2=BB[_0x5a8e85(0x283)]['getMediaTimeFPS'](_0x5749ab[_0x5a8e85(0x360)]);refreshRate=_0x5749ab[_0x5a8e85(0x402)];let _0x3423a5=null,_0x206516=null,_0x1c4855=null;if(_0x5749ab['renderingMode']==BB[_0x5a8e85(0x211)]['Augment']){}else{let _0x36504c=document['createElement'](_0x5a8e85(0x2f6));_0x36504c[_0x5a8e85(0x365)]=0x1f4,_0x36504c[_0x5a8e85(0x27c)]=0x1f4,document[_0x5a8e85(0x200)][_0x5a8e85(0x264)](_0x36504c),_0x1c4855=_0x36504c['getContext'](_0x5a8e85(0x399));}let _0xb84bbe=BB[_0x5a8e85(0x283)][_0x5a8e85(0x29f)],_0x6e521b=-0x1,_0x2787d1=![];const _0x3abacd=(_0x3ca95f,_0x316a7e)=>{const _0x23430b=_0x5a8e85;let _0x460aef=![];if(_0x5749ab['debug']){var _0x1ce9a0=document[_0x23430b(0x223)](_0x23430b(0x391));_0x460aef=_0x1ce9a0[_0x23430b(0x40d)];}if(_0x460aef)return 0x0;const _0x1d23fc=performance[_0x23430b(0x3bc)]();if(_0x6e521b==_0x3ca95f&&_0x316a7e==_0x2787d1){if(_0x5749ab[_0x23430b(0x2a1)])console['BBlog'](_0x23430b(0x1e4)+_0x3ca95f);return 0x0;}if(!_0x5749ab[_0x23430b(0x313)]||_0x5749ab[_0x23430b(0x3a0)])return _0x206516[_0x23430b(0x3c4)](),0x0;if(_0x5749ab[_0x23430b(0x2b9)]==BB[_0x23430b(0x211)][_0x23430b(0x36b)])renderDigit(_0x1c4855,_0x3ca95f);else{if(_0x5749ab[_0x23430b(0x2b9)]==BB[_0x23430b(0x211)][_0x23430b(0x20e)]){if(_0x11573f==0xea60/0x3e9||_0x11573f==0x3c)renderTimecode(_0x1c4855,_0x4f7d9e['Frames2Timecode'](_0x3ca95f,_0x11573f,!![]),!![]);else{if(_0x11573f==0x7530/0x3e9||_0x11573f==0x1e)renderTimecode(_0x1c4855,_0x4f7d9e[_0x23430b(0x29a)](_0x3ca95f,_0x11573f,![]),![]);}}else{if(_0x5749ab['renderingMode']==BB[_0x23430b(0x211)]['Augment']){if(_0x11573f==0xea60/0x3e9||_0x11573f==0x3c)_0x206516[_0x23430b(0x21f)](_0x4f7d9e[_0x23430b(0x3a5)](_0x4f7d9e[_0x23430b(0x29a)](_0x3ca95f,_0x11573f,!![])));else(_0x11573f==0x7530/0x3e9||_0x11573f==0x1e)&&(_0x316a7e?_0x206516[_0x23430b(0x21f)](_0x4f7d9e[_0x23430b(0x3a5)](_0x4f7d9e[_0x23430b(0x29a)](_0x3ca95f*0x2+0x1,_0x11573f*0x2,!![]),!![])):_0x206516['renderAugmentation'](_0x4f7d9e[_0x23430b(0x3a5)](_0x4f7d9e[_0x23430b(0x29a)](_0x3ca95f,_0x11573f,![]),![])));}}}_0x6e521b=_0x3ca95f,_0x2787d1=_0x316a7e;const _0x207b9e=performance[_0x23430b(0x3bc)]();return _0x207b9e-_0x1d23fc;};let _0x3f43a0=0x0,_0x9a0d43=0x0,_0x4e1d80=0x20,_0x562541=0x20,_0x27ba71='',_0x23a0f5=0x0,_0x5628c6,_0x53b99b=0x0,_0x2210d6=function(_0x1eac66,_0x4fc275){const _0x1a9050=_0x5a8e85;if(_0x5749ab[_0x1a9050(0x20d)]!=0xea60/0x3e9&&_0x5749ab['hls_fps']!=0x7530/0x3e9){console[_0x1a9050(0x263)](_0x1a9050(0x364)+_0x5749ab['hls_fps']),_0x37a3fc[_0x1a9050(0x3c9)](_0x2210d6);return;}if(_0x27ba71==_0x1a9050(0x2a5)&&_0x5749ab[_0x1a9050(0x20d)]==0xea60/0x3e9){if(_0x5749ab['debug'])console['BBlog'](_0x1a9050(0x403));_0x37a3fc['requestVideoFrameCallback'](_0x2210d6);return;}_0x5749ab[_0x1a9050(0x20d)]==0x7530/0x3e9?_0x27ba71=='ANI3'&&_0x53b99b<=0x0?(_0x27ba71=_0x1a9050(0x316),_0x53b99b++):(_0x27ba71=_0x1a9050(0x277),_0x53b99b=0x0):_0x27ba71=_0x1a9050(0x277);lastNow=_0x1eac66;let _0x5501bc=(_0x4fc275[_0x1a9050(0x328)]-_0x5749ab['syncPoint']['playerTime'])%(0x3c*0x3c*0x18)*_0x25c0f2,_0x8077ee=_0x4fc275['mediaTime']-_0x5749ab[_0x1a9050(0x28d)][_0x1a9050(0x270)];lastFrameFromVideoCallback=Math['floor'](_0x5501bc+0.1)+_0x5749ab['syncPoint'][_0x1a9050(0x2ed)];if(_0x5749ab[_0x1a9050(0x2a1)]){var _0x37b5df=document['getElementById']('numberInput')['value'],_0x43f49a=parseInt(_0x37b5df);lastFrameFromVideoCallback+=_0x43f49a;}else lastFrameFromVideoCallback+=0x1;_0x55bac8=_0x4fc275[_0x1a9050(0x328)];let _0x14d6fc=_0x37a3fc[_0x1a9050(0x3f6)],_0x1d0710=document[_0x1a9050(0x223)](_0x1a9050(0x324));var _0x5d4ff2='';if(BB['Utils'][_0x1a9050(0x3db)](_0x5749ab[_0x1a9050(0x360)])==0xea60/0x3e9)_0x5d4ff2=_0x4f7d9e[_0x1a9050(0x3a5)](_0x4f7d9e['Frames2Timecode'](lastFrameFromVideoCallback,_0x11573f,!![]),!![],!![]);else BB[_0x1a9050(0x283)][_0x1a9050(0x3db)](_0x5749ab[_0x1a9050(0x360)])==0x7530/0x3e9?_0x5d4ff2=_0x4f7d9e['printTimecode'](_0x4f7d9e['Frames2Timecode'](lastFrameFromVideoCallback,_0x11573f,![]),![],![]):_0x5d4ff2=_0x1a9050(0x3d1);var _0x2fde59='';if(BB[_0x1a9050(0x283)][_0x1a9050(0x3db)](_0x5749ab[_0x1a9050(0x360)])==0xea60/0x3e9)_0x2fde59=_0x4f7d9e['printTimecode'](_0x4f7d9e[_0x1a9050(0x29a)](_0x5749ab[_0x1a9050(0x30d)][_0x1a9050(0x3b2)],_0x11573f,!![]),!![],!![]);else BB[_0x1a9050(0x283)][_0x1a9050(0x3db)](_0x5749ab['frameRateMode'])==0x7530/0x3e9?_0x2fde59=_0x4f7d9e[_0x1a9050(0x3a5)](_0x4f7d9e[_0x1a9050(0x29a)](_0x5749ab[_0x1a9050(0x30d)][_0x1a9050(0x3b2)],_0x11573f,![]),![],![]):_0x2fde59=_0x1a9050(0x3d1);let _0x29014c=lastFrameFromVideoCallback-_0x5749ab[_0x1a9050(0x30d)][_0x1a9050(0x3b2)];if(_0x3423a5)_0x3423a5['setLastFrame'](_0x29014c);var _0x2b6ce9='';if(BB[_0x1a9050(0x283)][_0x1a9050(0x3db)](_0x5749ab[_0x1a9050(0x360)])==0xea60/0x3e9)_0x2b6ce9=_0x4f7d9e[_0x1a9050(0x3a5)](_0x4f7d9e[_0x1a9050(0x29a)](_0x29014c,_0x11573f,!![]),!![],!![]);else BB[_0x1a9050(0x283)][_0x1a9050(0x3db)](_0x5749ab[_0x1a9050(0x360)])==0x7530/0x3e9?_0x2b6ce9=_0x4f7d9e[_0x1a9050(0x3a5)](_0x4f7d9e['Frames2Timecode'](_0x29014c,_0x11573f,![]),![],![]):_0x2b6ce9=_0x1a9050(0x3d1);let _0x41042a=Date[_0x1a9050(0x3bc)]()-_0x9a0d43,_0x1b1873=new Date(),_0x23f5bc=String(_0x1b1873[_0x1a9050(0x212)]())[_0x1a9050(0x390)](0x2,'0'),_0x514348=String(_0x1b1873['getMinutes']())[_0x1a9050(0x390)](0x2,'0'),_0x1d1b89=String(_0x1b1873[_0x1a9050(0x239)]())[_0x1a9050(0x390)](0x2,'0'),_0x435b20=String(_0x1b1873[_0x1a9050(0x1ff)]())[_0x1a9050(0x390)](0x3,'0'),_0x2300b0=_0x23f5bc+':'+_0x514348+':'+_0x1d1b89+'.'+_0x435b20;if(_0x5749ab[_0x1a9050(0x2a1)]){var _0x18a484=_0x1a9050(0x206);if(_0x5749ab[_0x1a9050(0x30d)][_0x1a9050(0x3b2)]!=_0x23a0f5||_0x5628c6<0xa*0x3c)var _0x18a484=_0x1a9050(0x39a);_0x1d0710[_0x1a9050(0x273)]=_0x1a9050(0x29c)+_0x3f43a0+_0x1a9050(0x2e0)+_0x5749ab['gameId']+_0x1a9050(0x22a)+_0x2300b0+_0x1a9050(0x335)+_0x4fc275[_0x1a9050(0x328)][_0x1a9050(0x379)](0x4)+_0x1a9050(0x2cc)+_0x5501bc['toFixed'](0x4)+_0x1a9050(0x380)+_0x5d4ff2+_0x1a9050(0x21d)+_0x18a484+'\x27>'+_0x5749ab[_0x1a9050(0x30d)][_0x1a9050(0x3b2)]+'('+_0x2fde59+_0x1a9050(0x22b)+_0x1a9050(0x36e)+_0x1a9050(0x36e)+_0x1a9050(0x2c4)+_0x2b6ce9+_0x1a9050(0x253)+_0x29014c+_0x1a9050(0x3cc)+_0x1a9050(0x36e)+_0x1a9050(0x36e)+_0x1a9050(0x257)+_0x4fc275[_0x1a9050(0x35e)][_0x1a9050(0x379)](0x4)+_0x1a9050(0x34d)+_0x4fc275['presentationTime'][_0x1a9050(0x379)](0x4)+_0x1a9050(0x32a)+(_0x4fc275['presentationTime']-_0x4fc275[_0x1a9050(0x35e)])[_0x1a9050(0x379)](0x4)+_0x1a9050(0x2ab)+(_0x4fc275[_0x1a9050(0x35e)]-_0x1eac66)[_0x1a9050(0x379)](0x4)+',\x20TimeFromLastSync:'+_0x8077ee[_0x1a9050(0x379)](0x4)+_0x1a9050(0x1d9)+_0x5749ab[_0x1a9050(0x28d)]['playerTime']['toFixed'](0x4)+_0x1a9050(0x332)+_0x5749ab[_0x1a9050(0x28d)][_0x1a9050(0x2ed)]+',\x20LastSyncPoint:'+_0x5749ab['syncPoint']['stringTime']+_0x1a9050(0x36e),_0x5749ab[_0x1a9050(0x30d)][_0x1a9050(0x3b2)]!=_0x23a0f5&&(_0x5628c6=0x0),_0x23a0f5=_0x5749ab[_0x1a9050(0x30d)][_0x1a9050(0x3b2)],_0x5628c6++;}_0x3f43a0++,_0x9a0d43=Date[_0x1a9050(0x3bc)]();let _0x42697c=![];if(_0x5749ab[_0x1a9050(0x2a1)]){var _0x5c426f=document[_0x1a9050(0x223)](_0x1a9050(0x3ff));_0x42697c=_0x5c426f['checked'];}let _0x49c93b=0x0;if(BB[_0x1a9050(0x283)][_0x1a9050(0x3db)](_0x5749ab['frameRateMode'])==0x7530/0x3e9){let _0x514e14=0x18,_0x77e860=0x21+(0x21-_0x514e14);_0x41042a<_0x514e14&&_0x4e1d80<_0x77e860||_0x4e1d80<_0x514e14&&_0x41042a<_0x77e860||_0x562541<_0x514e14&&_0x4e1d80<_0x77e860&&_0x41042a<_0x77e860||_0x42697c==!![]?(_0x1d0710[_0x1a9050(0x273)]+=_0x1a9050(0x349),setTimeout(function(){_0x3abacd(_0x29014c,![]);},0xa)):_0x3abacd(_0x29014c,![]);}else BB['Utils']['getSourceFPS'](_0x5749ab[_0x1a9050(0x360)])==0xea60/0x3e9?_0x5749ab['hls_fps']==0x7530/0x3e9?_0x367241=_0x29014c:_0x49c93b=_0x3abacd(_0x29014c,![]):console[_0x1a9050(0x263)](_0x1a9050(0x3dc));_0x562541=_0x4e1d80,_0x4e1d80=_0x41042a;_0x5749ab[_0x1a9050(0x2a1)]&&console[_0x1a9050(0x263)](_0x1a9050(0x3cd)+_0x1a9050(0x3a7)+_0x2300b0+_0x1a9050(0x323)+_0x5d4ff2+_0x1a9050(0x3e8)+_0x49c93b[_0x1a9050(0x379)](0x4)+_0x1a9050(0x34a));_0x37a3fc[_0x1a9050(0x3c9)](_0x2210d6);return;},_0x17fd7e=0x0;const _0x3e6142=_0x288c0f=>{const _0x3284ed=_0x5a8e85;_0x17fd7e++;let _0x1bbb79=new Date(),_0x5e619d=String(_0x1bbb79[_0x3284ed(0x212)]())[_0x3284ed(0x390)](0x2,'0'),_0x5740ca=String(_0x1bbb79[_0x3284ed(0x2cd)]())[_0x3284ed(0x390)](0x2,'0'),_0x9887a0=String(_0x1bbb79['getSeconds']())[_0x3284ed(0x390)](0x2,'0'),_0x571f9b=String(_0x1bbb79[_0x3284ed(0x1ff)]())['padStart'](0x3,'0'),_0x4dede4=_0x5e619d+':'+_0x5740ca+':'+_0x9887a0+'.'+_0x571f9b;if(_0x37a3fc[_0x3284ed(0x24d)]){window['requestAnimationFrame'](_0x3e6142);return;}let _0x48860f=document[_0x3284ed(0x223)](_0x3284ed(0x352));if(_0x5749ab[_0x3284ed(0x2a1)])_0x48860f[_0x3284ed(0x273)]=_0x3284ed(0x2a8)+_0x17fd7e+_0x3284ed(0x226)+_0x4dede4;if(_0x5749ab['hls_fps']==0x7530/0x3e9){_0x48860f[_0x3284ed(0x273)]+=_0x3284ed(0x33d)+_0x37a3fc[_0x3284ed(0x3f6)][_0x3284ed(0x379)](0x4);if(_0x27ba71==_0x3284ed(0x277))_0x48860f[_0x3284ed(0x273)]+='\x20\x20rendering\x20on\x20the\x20current\x20frame\x20',_0x3abacd(_0x367241,![]),_0x27ba71=_0x3284ed(0x316);else{if(_0x27ba71=='ANI')_0x27ba71=_0x3284ed(0x2a5);else _0x27ba71==_0x3284ed(0x2a5)&&(_0x48860f[_0x3284ed(0x273)]+=_0x3284ed(0x344),_0x3abacd(_0x367241+0x2,![]),_0x27ba71=_0x3284ed(0x3d9));}_0x48860f['innerHTML']+=_0x3284ed(0x3cf)+_0x27ba71,console[_0x3284ed(0x263)](_0x3284ed(0x289)+_0x3284ed(0x226)+_0x4dede4+_0x3284ed(0x281)+_0x27ba71),window[_0x3284ed(0x3c1)](_0x3e6142);return;}else{if(_0x5749ab[_0x3284ed(0x20d)]==0xea60/0x3e9){if(_0x27ba71=='ANI'||_0x27ba71==_0x3284ed(0x2a5)){var _0x32a43d='';if(BB[_0x3284ed(0x283)]['getSourceFPS'](_0x5749ab[_0x3284ed(0x360)])==0xea60/0x3e9)_0x32a43d=_0x4f7d9e[_0x3284ed(0x3a5)](_0x4f7d9e['Frames2Timecode'](_0x6e521b+0x1,_0x11573f,!![]),!![],!![]);else BB[_0x3284ed(0x283)][_0x3284ed(0x3db)](_0x5749ab[_0x3284ed(0x360)])==0x7530/0x3e9?_0x32a43d=_0x4f7d9e['printTimecode'](_0x4f7d9e[_0x3284ed(0x29a)](_0x6e521b+0x1,_0x11573f,![]),![],![]):_0x32a43d=_0x3284ed(0x3d1);var _0x561f6f='';if(BB[_0x3284ed(0x283)][_0x3284ed(0x3db)](_0x5749ab[_0x3284ed(0x360)])==0xea60/0x3e9)_0x561f6f=_0x4f7d9e['printTimecode'](_0x4f7d9e[_0x3284ed(0x29a)](_0x5749ab['augmentation'][_0x3284ed(0x3b2)],_0x11573f,!![]),!![],!![]);else BB[_0x3284ed(0x283)][_0x3284ed(0x3db)](_0x5749ab[_0x3284ed(0x360)])==0x7530/0x3e9?_0x561f6f=_0x4f7d9e[_0x3284ed(0x3a5)](_0x4f7d9e[_0x3284ed(0x29a)](_0x5749ab[_0x3284ed(0x30d)][_0x3284ed(0x3b2)],_0x11573f,![]),![],![]):_0x561f6f=_0x3284ed(0x3d1);let _0x204754=_0x6e521b-_0x5749ab['augmentation'][_0x3284ed(0x3b2)];var _0x32c131='';if(BB[_0x3284ed(0x283)][_0x3284ed(0x3db)](_0x5749ab[_0x3284ed(0x360)])==0xea60/0x3e9)_0x32c131=_0x4f7d9e[_0x3284ed(0x3a5)](_0x4f7d9e[_0x3284ed(0x29a)](_0x204754,_0x11573f,!![]),!![],!![]);else BB[_0x3284ed(0x283)][_0x3284ed(0x3db)](_0x5749ab[_0x3284ed(0x360)])==0x7530/0x3e9?_0x32c131=_0x4f7d9e[_0x3284ed(0x3a5)](_0x4f7d9e[_0x3284ed(0x29a)](_0x204754,_0x11573f,![]),![],![]):_0x32c131=_0x3284ed(0x3d1);_0x5749ab[_0x3284ed(0x2a1)]&&(console['BBlog'](_0x3284ed(0x34b)+_0x32a43d+')'+_0x3284ed(0x28b)+_0x27ba71),_0x48860f[_0x3284ed(0x273)]+='\x20\x20correction');let _0x5b04ea=_0x3abacd(_0x6e521b+0x1,![]);if(_0x5749ab[_0x3284ed(0x2a1)])console[_0x3284ed(0x263)](_0x3284ed(0x289)+_0x3284ed(0x226)+_0x4dede4+',\x20correction'+',\x20time:\x20'+_0x32a43d+_0x3284ed(0x38e)+_0x5749ab[_0x3284ed(0x30d)][_0x3284ed(0x3b2)]+'('+_0x561f6f+')'+_0x3284ed(0x355)+_0x32c131+',\x20took:\x20'+_0x5b04ea[_0x3284ed(0x379)](0x4)+_0x3284ed(0x34a));if(_0x27ba71==_0x3284ed(0x316))_0x27ba71=_0x3284ed(0x2a5);else{if(_0x27ba71=='ANI2')_0x27ba71=_0x3284ed(0x316);}}else{if(_0x5749ab['debug'])console[_0x3284ed(0x263)](_0x3284ed(0x289)+_0x3284ed(0x226)+_0x4dede4);_0x27ba71='ANI';}}else console[_0x3284ed(0x263)](_0x3284ed(0x364)+_0x5749ab[_0x3284ed(0x20d)]);}window[_0x3284ed(0x3c1)](_0x3e6142);};let _0x3d726a=_0x5749ab[_0x5a8e85(0x360)]==BB['FrameRateMode'][_0x5a8e85(0x3f2)]?-0.04:+0.05,_0x53270e=0x0,_0xa89c49={},_0x611f43=0x0,_0xb9237c=0x0,_0x7116e4=0x0,_0x367389=0x0,_0x18a891=0x0,_0x55bac8=-0x1,_0x5f5abf=0x0,_0xbe4512=![],_0x17ad19=0x0,_0x6b1f1f=0x0,_0x42e3ff=0x0,_0x28fa46=0x0,_0x3f6aaa=0x0;const _0x33d8d8=(_0x501aa7,_0x387697)=>{const _0x5af0e3=_0x5a8e85;let _0x36fdf9=performance[_0x5af0e3(0x3bc)]();_0x548f78=_0x387697,_0x28fa46=new Date();let _0x4c9a83=String(_0x28fa46[_0x5af0e3(0x212)]())[_0x5af0e3(0x390)](0x2,'0'),_0x2c94c5=String(_0x28fa46['getMinutes']())[_0x5af0e3(0x390)](0x2,'0'),_0x2d084d=String(_0x28fa46[_0x5af0e3(0x239)]())[_0x5af0e3(0x390)](0x2,'0'),_0x3b99c7=String(_0x28fa46[_0x5af0e3(0x1ff)]())['padStart'](0x3,'0'),_0xdcd63e=_0x4c9a83+':'+_0x2c94c5+':'+_0x2d084d+'.'+_0x3b99c7;if(_0x5749ab['debug']){let _0x467066=document[_0x5af0e3(0x223)]('debugText2');_0x467066[_0x5af0e3(0x273)]='\x20VID:\x20'+_0x367389+_0x5af0e3(0x22a)+_0xdcd63e+_0x5af0e3(0x284)+(_0x36fdf9-_0x3f6aaa)[_0x5af0e3(0x379)](0x4)+_0x5af0e3(0x257)+_0x387697[_0x5af0e3(0x35e)]['toFixed'](0x4)+_0x5af0e3(0x34d)+_0x387697[_0x5af0e3(0x2a9)][_0x5af0e3(0x379)](0x4)+',\x20mediaTime-lastMediaTime:\x20'+(_0x387697[_0x5af0e3(0x328)]-_0x55bac8)[_0x5af0e3(0x379)](0x4)+_0x5af0e3(0x2ab)+(_0x387697['expectedDisplayTime']-_0x501aa7)[_0x5af0e3(0x379)](0x4)+'\x20</br>'+_0x5af0e3(0x3ef)+_0x387697[_0x5af0e3(0x37b)]+_0x5af0e3(0x2c3)+(_0x387697[_0x5af0e3(0x37b)]-_0x42e3ff);}_0x42e3ff=_0x387697[_0x5af0e3(0x37b)],_0x55bac8=_0x387697[_0x5af0e3(0x328)],_0x3f6aaa=_0x36fdf9,_0x367389++,_0x37a3fc[_0x5af0e3(0x3c9)](_0x33d8d8);return;};let _0x14b6fa=![],_0x548f78={};_0x548f78[_0x5a8e85(0x328)]=0x0,_0x548f78[_0x5a8e85(0x2a9)]=0x0,_0x548f78[_0x5a8e85(0x35e)]=0x0,_0x548f78[_0x5a8e85(0x37b)]=0x0;let _0x20713d=0.99,_0x2bdc23=0x0,_0x259fb3=0x0;const _0x402639=_0x385c5b=>{const _0x419726=_0x5a8e85;let _0x2bb2c6=new Date(),_0x133fed=String(_0x2bb2c6['getHours']())['padStart'](0x2,'0'),_0x335285=String(_0x2bb2c6['getMinutes']())[_0x419726(0x390)](0x2,'0'),_0x398b4b=String(_0x2bb2c6[_0x419726(0x239)]())[_0x419726(0x390)](0x2,'0'),_0xc9bab9=String(_0x2bb2c6[_0x419726(0x1ff)]())[_0x419726(0x390)](0x3,'0'),_0x4076c4=_0x133fed+':'+_0x335285+':'+_0x398b4b+'.'+_0xc9bab9;var _0x3dc834=0x2;let _0x4e12b4;if(_0x5749ab[_0x419726(0x2a1)]){_0x4e12b4=document[_0x419726(0x223)](_0x419726(0x352));var _0x24e2e2=document[_0x419726(0x223)](_0x419726(0x3d2))[_0x419726(0x315)];_0x3dc834=parseInt(_0x24e2e2);}var _0x58bdf5=0x0,_0x107f56=(_0x37a3fc['currentTime']-_0x5749ab[_0x419726(0x28d)][_0x419726(0x270)])%(0x3c*0x3c*0x18)*_0x25c0f2;_0x58bdf5=Math[_0x419726(0x1dd)](_0x107f56)+_0x5749ab[_0x419726(0x28d)][_0x419726(0x2ed)];var _0xfe4ca9=![];_0x58bdf5-_0x259fb3==0x2&&_0x107f56-_0x2bdc23<1.5&&(_0x259fb3=_0x58bdf5,_0x58bdf5--,_0xfe4ca9=!![]);_0xfe4ca9?_0x259fb3=_0x58bdf5+0x1:_0x259fb3=_0x58bdf5;_0x2bdc23=_0x107f56,_0x58bdf5+=_0x3dc834;var _0x4f39bd=_0x107f56-Math[_0x419726(0x1dd)](_0x107f56);if(_0x14b6fa||_0x4f39bd<0.226&&_0x20713d<0.226)_0x14b6fa=!![];if(_0x4f39bd>0.8)_0x14b6fa=![];_0x20713d=_0x4f39bd;if(_0x14b6fa)_0x58bdf5--;var _0x15d244='';if(BB[_0x419726(0x283)][_0x419726(0x3db)](_0x5749ab[_0x419726(0x360)])==0xea60/0x3e9)_0x15d244=_0x4f7d9e['printTimecode'](_0x4f7d9e[_0x419726(0x29a)](_0x58bdf5,_0x11573f,!![]),!![],!![]);else BB[_0x419726(0x283)][_0x419726(0x3db)](_0x5749ab[_0x419726(0x360)])==0x7530/0x3e9?_0x15d244=_0x4f7d9e[_0x419726(0x3a5)](_0x4f7d9e[_0x419726(0x29a)](_0x58bdf5,_0x11573f,![]),![],![]):_0x15d244='NOT\x20SUPPORTED';var _0x562bfb='';if(BB[_0x419726(0x283)][_0x419726(0x3db)](_0x5749ab[_0x419726(0x360)])==0xea60/0x3e9)_0x562bfb=_0x4f7d9e[_0x419726(0x3a5)](_0x4f7d9e['Frames2Timecode'](_0x5749ab[_0x419726(0x30d)][_0x419726(0x3b2)],_0x11573f,!![]),!![],!![]);else BB['Utils'][_0x419726(0x3db)](_0x5749ab[_0x419726(0x360)])==0x7530/0x3e9?_0x562bfb=_0x4f7d9e[_0x419726(0x3a5)](_0x4f7d9e[_0x419726(0x29a)](_0x5749ab[_0x419726(0x30d)][_0x419726(0x3b2)],_0x11573f,![]),![],![]):_0x562bfb='NOT\x20SUPPORTED';let _0x49f74a=_0x58bdf5-_0x5749ab['augmentation'][_0x419726(0x3b2)];var _0x118d4a='';if(BB[_0x419726(0x283)]['getSourceFPS'](_0x5749ab[_0x419726(0x360)])==0xea60/0x3e9)_0x118d4a=_0x4f7d9e['printTimecode'](_0x4f7d9e[_0x419726(0x29a)](_0x49f74a,_0x11573f,!![]),!![],!![]);else BB['Utils'][_0x419726(0x3db)](_0x5749ab[_0x419726(0x360)])==0x7530/0x3e9?_0x118d4a=_0x4f7d9e['printTimecode'](_0x4f7d9e[_0x419726(0x29a)](_0x49f74a,_0x11573f,![]),![],![]):oresultFramesStr=_0x419726(0x3d1);if(_0x5749ab[_0x419726(0x2a1)]){var _0x42db99='black';if(_0x5749ab['augmentation'][_0x419726(0x3b2)]!=_0x23a0f5||_0x5628c6<0xa*0x3c)var _0x42db99=_0x419726(0x39a);_0x4e12b4[_0x419726(0x273)]=_0x419726(0x201)+_0x42f242+_0x419726(0x22a)+_0x4076c4+_0x419726(0x2cc)+_0x107f56[_0x419726(0x379)](0x4)+',\x20ANI-VID:\x20'+(_0x2bb2c6-_0x28fa46)+_0x419726(0x407)+_0x5749ab[_0x419726(0x39f)]+_0x419726(0x33c)+_0x15d244+_0x419726(0x253)+_0x58bdf5+_0x419726(0x3f5)+_0x419726(0x21d)+_0x42db99+'\x27>'+_0x5749ab[_0x419726(0x30d)][_0x419726(0x3b2)]+'('+_0x562bfb+')</span>'+_0x419726(0x36e)+_0x419726(0x36e)+_0x419726(0x3ba)+_0x118d4a+'('+_0x49f74a+_0x419726(0x22b)+_0x419726(0x36e)+'\x20</br>'+',\x20LastSyncPointTime:'+_0x5749ab[_0x419726(0x28d)]['playerTime'][_0x419726(0x379)](0x4)+_0x419726(0x332)+_0x5749ab['syncPoint'][_0x419726(0x2ed)]+_0x419726(0x1fd)+_0x5749ab[_0x419726(0x28d)][_0x419726(0x27b)]+_0x419726(0x1df)+_0x14b6fa+_0x419726(0x1e9)+_0xfe4ca9;}if(_0x3423a5)_0x3423a5['setLastFrame'](_0x49f74a);_0x3abacd(_0x49f74a),_0x42f242++,window[_0x419726(0x3c1)](_0x402639);return;};let _0x367241=-0x1,_0x541ba0=0x270f,_0x510856=0x0,_0x42f242=0x0,_0xba3645=0x0;function _0x1be40c(_0x14814f){const _0x158af9=_0x5a8e85;console[_0x158af9(0x263)]('resizing\x20Window');var _0x1ef3cf=parseInt(window[_0x158af9(0x392)](_0x14814f)[_0x158af9(0x220)](_0x158af9(0x365)),0xa),_0x879a42=parseInt(window[_0x158af9(0x392)](_0x14814f)['getPropertyValue']('height'),0xa),_0x17d77d=_0x14814f['videoWidth'],_0x377e81=_0x14814f['videoHeight'],_0x496189=_0x1ef3cf/_0x879a42,_0x4aefdd=_0x17d77d/_0x377e81,_0x1230c0={'top':0x0,'bottom':0x0,'left':0x0,'right':0x0};if(_0x496189>_0x4aefdd){var _0x41e983=_0x879a42*_0x4aefdd;_0x1230c0[_0x158af9(0x363)]=(_0x1ef3cf-_0x41e983)/0x2,_0x1230c0[_0x158af9(0x24c)]=_0x1230c0[_0x158af9(0x363)];}else{if(_0x496189<_0x4aefdd){var _0x4cadd6=_0x1ef3cf/_0x4aefdd;_0x1230c0[_0x158af9(0x275)]=(_0x879a42-_0x4cadd6)/0x2,_0x1230c0[_0x158af9(0x292)]=_0x1230c0['top'];}}return _0x206516[_0x158af9(0x36f)]()[_0x158af9(0x224)][_0x158af9(0x275)]=Math[_0x158af9(0x1e5)](_0x1230c0[_0x158af9(0x275)])+'px',_0x206516[_0x158af9(0x36f)]()[_0x158af9(0x224)][_0x158af9(0x363)]=Math[_0x158af9(0x1e5)](_0x1230c0['left'])+'px',_0x1230c0;}console[_0x5a8e85(0x263)](_0x5a8e85(0x2f0)),console['BBlog']('Checking\x20window\x20and\x20methods');typeof window!==_0x5a8e85(0x2bd)?console[_0x5a8e85(0x263)](_0x5a8e85(0x230)):console[_0x5a8e85(0x263)](_0x5a8e85(0x22d));_0x5a8e85(0x3c1)in window?console['BBlog'](_0x5a8e85(0x3b8)):console['BBlog']('requestAnimationFrame\x20is\x20not\x20supported');typeof _0x37a3fc!==_0x5a8e85(0x2bd)?console[_0x5a8e85(0x263)]('Video\x20object\x20is\x20defined.\x20This\x20script\x20is\x20running\x20in\x20a\x20browser\x20environment.'):console[_0x5a8e85(0x263)](_0x5a8e85(0x27e));_0x5a8e85(0x3c9)in _0x37a3fc?console[_0x5a8e85(0x263)]('requestVideoFrameCallback\x20is\x20supported'):console[_0x5a8e85(0x263)](_0x5a8e85(0x3fb));if(_0xb84bbe[_0x5a8e85(0x246)]()||_0xb84bbe[_0x5a8e85(0x31e)]()||_0xb84bbe[_0x5a8e85(0x36d)]())!_0xb84bbe[_0x5a8e85(0x36d)]()&&window[_0x5a8e85(0x3c1)](_0x3e6142),_0x37a3fc['readyState']>=0x1?(console['BBlog'](_0x5a8e85(0x345)),_0x37a3fc[_0x5a8e85(0x3c9)](_0x2210d6),console[_0x5a8e85(0x263)](_0x5a8e85(0x3b6)),window['addEventListener'](_0x5a8e85(0x1e8),function(){_0x1be40c(_0x37a3fc);})):(console[_0x5a8e85(0x263)]('video\x20element\x20is\x20not\x20yet\x20loaded.\x20Setting\x20up\x20loadedmetadata\x20event\x20to\x20wait\x20until\x20it\x27s\x20loaded.\x20video.readyState='+_0x37a3fc['readyState']),_0x37a3fc[_0x5a8e85(0x29e)]('loadedmetadata',()=>{const _0x398040=_0x5a8e85;console['BBlog'](_0x398040(0x2bb)),_0x37a3fc[_0x398040(0x3c9)](_0x2210d6),console['BBlog'](_0x398040(0x2e4)),window[_0x398040(0x29e)](_0x398040(0x1e8),function(){_0x1be40c(_0x37a3fc);});}));else _0xb84bbe[_0x5a8e85(0x3e0)]()?(window[_0x5a8e85(0x3c1)](_0x402639),_0x37a3fc['requestVideoFrameCallback'](_0x33d8d8)):console[_0x5a8e85(0x263)]('Platform\x20not\x20supported');console['BBlog'](_0x5a8e85(0x25b)),console['BBlog'](_0x5a8e85(0x2ea));function _0x76d90d(){return new Promise(_0x50b3be=>{let _0x19a85a=0x0;const _0x2c2a98=[],_0x3dbeca=0x14;function _0x1366a9(_0x1f5c1d){const _0x271da5=_0xbe5e;if(_0x19a85a){const _0x2034d6=_0x1f5c1d-_0x19a85a,_0x23139f=0x3e8/_0x2034d6;if(!(_0x23139f===undefined)){if(_0x23139f>0x0&&_0x23139f<0xc8)_0x2c2a98[_0x271da5(0x3b0)](_0x23139f);}if(_0x2c2a98[_0x271da5(0x24f)]===_0x3dbeca){const _0x388530=_0x2c2a98[_0x271da5(0x2bc)]((_0x5e81a8,_0x581da7)=>_0x5e81a8+_0x581da7,0x0)/_0x3dbeca;_0x50b3be(Math['round'](_0x388530));return;}}_0x19a85a=_0x1f5c1d,requestAnimationFrame(_0x1366a9);}requestAnimationFrame(_0x1366a9);});}_0xb84bbe[_0x5a8e85(0x246)]()&&_0x76d90d()['then'](_0x4398a=>{const _0x2dfaab=_0x5a8e85;_0x5749ab[_0x2dfaab(0x2f2)]=_0x4398a,_0x5749ab[_0x2dfaab(0x2f2)]>0x46||_0x5749ab[_0x2dfaab(0x2f2)]<0x32?(console[_0x2dfaab(0x218)](_0x2dfaab(0x1f7)+_0x4398a+_0x2dfaab(0x329)),_0x5749ab[_0x2dfaab(0x3a0)]=!![]):console[_0x2dfaab(0x263)](_0x2dfaab(0x1f7)+_0x4398a+_0x2dfaab(0x24b));});const _0x143350=()=>{const _0xbb99c1=_0x5a8e85;let _0xa8ca60=_0x37a3fc[_0xbb99c1(0x272)];_0x206516=new BB[(_0xbb99c1(0x31a))](_0xa8ca60,_0x37a3fc,_0x5749ab),ads=BB[_0xbb99c1(0x2d6)](_0x206516,_0x5749ab),_0x3423a5=BB['MetaDataFetcher'](_0x5749ab,_0x206516);},_0x3ae527=()=>{const _0x2693a8=_0x5a8e85;return _0x206516[_0x2693a8(0x36f)]();},_0x2e8cf3=_0x69467a=>{_0x379537(_0x69467a);},_0x139467=_0x451bcd=>{_0x51e578(_0x451bcd);};return{'getCanvas':_0x3ae527,'onNewSegmentInterface':_0x2e8cf3,'onNewMetadataInterface':_0x139467,'initializeComponents':_0x143350};},BB[_0x3e12b0(0x31a)]=class{constructor(_0x2ea8e8,_0x17ed42,_0x411fd3){const _0x4d6b5c=_0x3e12b0;if(_0x411fd3[_0x4d6b5c(0x30d)][_0x4d6b5c(0x254)]){this[_0x4d6b5c(0x3b7)]={};for(let _0x175620=0x0;_0x175620<0xa;++_0x175620){let _0x49694a=_0x175620+'.1',_0x17608a=_0x175620+'.2';this['digitImg'][_0x49694a]=this[_0x4d6b5c(0x1d8)](_0x49694a),this[_0x4d6b5c(0x3b7)][_0x17608a]=this['CreateDigitImg'](_0x17608a);}}this['options']=Object[_0x4d6b5c(0x336)]({'adLoopTime':0x1388,'isAdLoop':![]},_0x411fd3||{}),this[_0x4d6b5c(0x2dc)]=BB['Utils'][_0x4d6b5c(0x3db)](this['options']['frameRateMode']),this[_0x4d6b5c(0x341)]=[],this[_0x4d6b5c(0x2ad)]={},this[_0x4d6b5c(0x312)]=![],this['advertisementMap']={},this[_0x4d6b5c(0x1e7)]={},this['videoCopier']=null,this[_0x4d6b5c(0x2f6)]=document[_0x4d6b5c(0x2c2)](_0x4d6b5c(0x2f6)),this[_0x4d6b5c(0x3f4)]=this['canvas'][_0x4d6b5c(0x291)](_0x4d6b5c(0x338),{'premultipliedAlpha':![]});this['ctx']==null?(this[_0x4d6b5c(0x3f4)]=this[_0x4d6b5c(0x2f6)][_0x4d6b5c(0x291)](_0x4d6b5c(0x399),{'premultipliedAlpha':![]}),this['webGLVersion']=0x1):this['webGLVersion']=0x2;console[_0x4d6b5c(0x3dd)](_0x4d6b5c(0x287)+this[_0x4d6b5c(0x3f4)]+_0x4d6b5c(0x22c)+this[_0x4d6b5c(0x357)]);let _0xf8569d=_0x2ea8e8['offsetTop'],_0x7acbef=_0x2ea8e8[_0x4d6b5c(0x26f)],_0xf39d02=_0x2ea8e8['getElementsByTagName'](_0x4d6b5c(0x216))[0x0];this[_0x4d6b5c(0x2f6)][_0x4d6b5c(0x224)]['top']=0x0,this[_0x4d6b5c(0x2f6)]['style']['left']=0x0,this['canvas'][_0x4d6b5c(0x224)][_0x4d6b5c(0x365)]='100%',this[_0x4d6b5c(0x2f6)]['style'][_0x4d6b5c(0x3a2)]=0x186a0,this[_0x4d6b5c(0x2f6)][_0x4d6b5c(0x365)]=_0x2ea8e8[_0x4d6b5c(0x1d7)],this[_0x4d6b5c(0x2f6)][_0x4d6b5c(0x27c)]=_0x2ea8e8['clientHeight'],this[_0x4d6b5c(0x2f6)][_0x4d6b5c(0x224)][_0x4d6b5c(0x290)]='absolute';let _0x2f6a0d=_0xf39d02[_0x4d6b5c(0x1dc)];if(_0x2f6a0d)_0x2ea8e8[_0x4d6b5c(0x305)](this[_0x4d6b5c(0x2f6)],_0x2f6a0d);else _0x2ea8e8['appendChild'](this[_0x4d6b5c(0x2f6)]);this[_0x4d6b5c(0x2f6)][_0x4d6b5c(0x224)][_0x4d6b5c(0x3fe)]=_0x4d6b5c(0x2eb),_0xf39d02[_0x4d6b5c(0x29e)](_0x4d6b5c(0x317),_0x49fc31=>{const _0x2340dc=_0x4d6b5c;this[_0x2340dc(0x374)](_0x49fc31);}),this['canvas'][_0x4d6b5c(0x29e)](_0x4d6b5c(0x251),this[_0x4d6b5c(0x3c8)]),this[_0x4d6b5c(0x297)](),this['adTexture']=null,this[_0x4d6b5c(0x21a)]={},this[_0x4d6b5c(0x31f)]={},this['ad2place']={},this[_0x4d6b5c(0x3a1)]=[],this[_0x4d6b5c(0x3ac)]=0x0,this['autoAddIndex']=null;}[_0x3e12b0(0x2a0)](_0x4a42cd){return(_0x4a42cd&_0x4a42cd-0x1)==0x0;}[_0x3e12b0(0x1d8)](_0xabbbcd){const _0x422255=_0x3e12b0;let _0xf3d3f=document[_0x422255(0x2c2)](_0x422255(0x2f6));_0xf3d3f[_0x422255(0x365)]=0x32,_0xf3d3f[_0x422255(0x27c)]=0x32;let _0x1e637e=_0xf3d3f[_0x422255(0x291)]('2d');_0x1e637e[_0x422255(0x26a)]=_0x422255(0x206),_0x1e637e['fillRect'](0x0,0x0,_0xf3d3f[_0x422255(0x365)],_0xf3d3f['height']),_0x1e637e[_0x422255(0x2c9)]=_0x422255(0x311),_0x1e637e['fillStyle']=_0x422255(0x232),_0x1e637e['fillText'](_0xabbbcd,0xa,0x23);let _0x2e9f0d=_0xf3d3f['toDataURL'](),_0x3654f4=document[_0x422255(0x2c2)](_0x422255(0x1f9));return _0x3654f4[_0x422255(0x2e1)]=_0x2e9f0d,_0x3654f4;}[_0x3e12b0(0x374)](_0x18b5e3){const _0x971256=_0x3e12b0,_0x2fa17c=this['canvas'][_0x971256(0x229)]();let _0x19ea90=event[_0x971256(0x236)]-_0x2fa17c[_0x971256(0x363)],_0x4ccd0b=event[_0x971256(0x20a)]-_0x2fa17c[_0x971256(0x275)];_0x19ea90=_0x19ea90/(_0x2fa17c[_0x971256(0x24c)]-_0x2fa17c[_0x971256(0x363)]),_0x4ccd0b=_0x4ccd0b/(_0x2fa17c[_0x971256(0x292)]-_0x2fa17c[_0x971256(0x275)]);for(let _0x3844df of this[_0x971256(0x3a1)]){if(_0x3844df[_0x971256(0x3a3)]['l']<=_0x19ea90&&_0x3844df[_0x971256(0x3a3)]['r']>=_0x19ea90&&_0x3844df['rect']['t']<=_0x4ccd0b&&_0x3844df[_0x971256(0x3a3)]['b']>=_0x4ccd0b){let _0x1d2088=_0x3844df[_0x971256(0x37f)][_0x971256(0x24a)](0x1);if(this[_0x971256(0x1e7)][_0x1d2088]){let _0x5a0a8e=this['ad2Url'][_0x1d2088];console['log'](_0x971256(0x394)+_0x1d2088+_0x971256(0x386)+_0x5a0a8e+_0x971256(0x354)),window[_0x971256(0x396)](_0x5a0a8e,'_blank');}return;}}}[_0x3e12b0(0x400)](){return 0x0;}['TexUnitForAdInPlace'](_0x572863){const _0x15781d=_0x3e12b0;let _0xf93f2f=Object[_0x15781d(0x2d5)](this[_0x15781d(0x31f)]);for(let _0x57f0e4=0x0;_0x57f0e4<_0xf93f2f['length'];++_0x57f0e4){if(_0x572863==_0xf93f2f[_0x57f0e4])return _0x57f0e4+0x1;}return 0x0;}[_0x3e12b0(0x1ee)](_0x27126b){const _0x332b2d=_0x3e12b0;let _0xab77c3=Object[_0x332b2d(0x2d5)](this[_0x332b2d(0x31f)]);for(let _0x14613e=0x0;_0x14613e<_0xab77c3[_0x332b2d(0x24f)];++_0x14613e){let _0x1a82ef=_0xab77c3[_0x14613e];if(_0x27126b[_0x332b2d(0x37f)][_0x332b2d(0x285)](_0x1a82ef)>=0x0)return _0x14613e;}return 0x0;}[_0x3e12b0(0x217)](_0x471901){const _0x315d4d=_0x3e12b0;let _0x1923cd=Object[_0x315d4d(0x2d5)](this[_0x315d4d(0x31f)]);for(let _0x1d4c2a=0x0;_0x1d4c2a<_0x1923cd['length'];++_0x1d4c2a){let _0x15ce3c=_0x1923cd[_0x1d4c2a];if(_0x471901['name'][_0x315d4d(0x285)](_0x15ce3c)>=0x0&&this['place2AdTexture']&&this[_0x315d4d(0x21a)][_0x15ce3c]&&this['place2AdTexture'][_0x15ce3c][_0x315d4d(0x37f)])return this[_0x315d4d(0x21a)][_0x15ce3c][_0x315d4d(0x37f)];}return this[_0x315d4d(0x23c)];}[_0x3e12b0(0x409)](){const _0x19ef06=_0x3e12b0;return 0x1+Object[_0x19ef06(0x2d5)](this[_0x19ef06(0x31f)])[_0x19ef06(0x24f)];}[_0x3e12b0(0x297)](){const _0x2dcc55=_0x3e12b0;let _0x447577=BB['GL']['fragmentShaderSource'];if(BB[_0x2dcc55(0x283)][_0x2dcc55(0x29f)][_0x2dcc55(0x3e0)]())_0x447577=BB['GL'][_0x2dcc55(0x274)]['replace'](_0x2dcc55(0x26d),_0x2dcc55(0x3c6));this[_0x2dcc55(0x204)]=webglUtils[_0x2dcc55(0x2e6)](this[_0x2dcc55(0x3f4)],this[_0x2dcc55(0x357)]==0x2?[BB['GL'][_0x2dcc55(0x371)],_0x447577]:[BB['GL'][_0x2dcc55(0x3ec)],BB['GL'][_0x2dcc55(0x231)]]),this['ctx'][_0x2dcc55(0x3e1)](0x0,0x0,0x0,0x0),this[_0x2dcc55(0x3f4)]['clear'](this[_0x2dcc55(0x3f4)]['COLOR_BUFFER_BIT']),this[_0x2dcc55(0x3f4)][_0x2dcc55(0x2c8)](this[_0x2dcc55(0x204)]),this[_0x2dcc55(0x381)]=0x0,this[_0x2dcc55(0x3c4)]();}[_0x3e12b0(0x3c4)](){const _0x336115=_0x3e12b0;this[_0x336115(0x2f6)][_0x336115(0x224)]['display']='none',this['alphaFound']=0x0;}['GenerateTexture'](_0xa0b899,_0x1d0d4b,_0xa18a5d,_0x42f94f,_0x19a3e9,_0x554d45,_0x59cae3){const _0x1c06b9=_0x3e12b0;_0x59cae3?this['ctx'][_0x1c06b9(0x2b0)](this[_0x1c06b9(0x3f4)]['UNPACK_ALIGNMENT'],0x1):this[_0x1c06b9(0x3f4)][_0x1c06b9(0x2b0)](this[_0x1c06b9(0x3f4)][_0x1c06b9(0x1e2)],0x4);this[_0x1c06b9(0x3f4)][_0x1c06b9(0x2b0)](this[_0x1c06b9(0x3f4)][_0x1c06b9(0x298)],![]);const _0x50b992=this[_0x1c06b9(0x3f4)][_0x1c06b9(0x2ca)]();this['ctx']['activeTexture'](this[_0x1c06b9(0x3f4)][_0x1c06b9(0x2a6)]+_0x1d0d4b),this[_0x1c06b9(0x3f4)][_0x1c06b9(0x3ad)](this['ctx'][_0x1c06b9(0x26c)],_0x50b992);try{_0x19a3e9&&_0x554d45?this['ctx'][_0x1c06b9(0x1f4)](this['ctx']['TEXTURE_2D'],0x0,_0x42f94f==null?this[_0x1c06b9(0x3f4)][_0x1c06b9(0x260)]:_0x42f94f,_0x19a3e9,_0x554d45,0x0,_0x42f94f==null?this[_0x1c06b9(0x3f4)][_0x1c06b9(0x260)]:_0x42f94f,this[_0x1c06b9(0x3f4)][_0x1c06b9(0x308)],_0xa0b899):this[_0x1c06b9(0x3f4)][_0x1c06b9(0x1f4)](this['ctx'][_0x1c06b9(0x26c)],0x0,_0x42f94f==null?this[_0x1c06b9(0x3f4)]['RGBA']:_0x42f94f,this[_0x1c06b9(0x3f4)][_0x1c06b9(0x260)],this['ctx'][_0x1c06b9(0x308)],_0xa0b899);}catch(_0x117aca){return console[_0x1c06b9(0x361)](_0x117aca),null;}if(this[_0x1c06b9(0x357)]==0x1){let _0x339c5e=_0x19a3e9||_0xa0b899[_0x1c06b9(0x365)],_0x1d4bd0=_0x554d45||_0xa0b899[_0x1c06b9(0x27c)];_0x339c5e&&this[_0x1c06b9(0x2a0)](_0x339c5e)&&_0x1d4bd0&&this[_0x1c06b9(0x2a0)](_0x1d4bd0)?this[_0x1c06b9(0x3f4)][_0x1c06b9(0x1e0)](this[_0x1c06b9(0x3f4)]['TEXTURE_2D']):(this[_0x1c06b9(0x3f4)][_0x1c06b9(0x398)](this[_0x1c06b9(0x3f4)][_0x1c06b9(0x26c)],this[_0x1c06b9(0x3f4)][_0x1c06b9(0x228)],this[_0x1c06b9(0x3f4)][_0x1c06b9(0x3d0)]),this['ctx'][_0x1c06b9(0x398)](this[_0x1c06b9(0x3f4)][_0x1c06b9(0x26c)],this[_0x1c06b9(0x3f4)][_0x1c06b9(0x1f5)],this[_0x1c06b9(0x3f4)][_0x1c06b9(0x3d0)]),this[_0x1c06b9(0x3f4)][_0x1c06b9(0x398)](this['ctx'][_0x1c06b9(0x26c)],this[_0x1c06b9(0x3f4)]['TEXTURE_MIN_FILTER'],this[_0x1c06b9(0x3f4)][_0x1c06b9(0x346)]));}else this[_0x1c06b9(0x3f4)][_0x1c06b9(0x398)](this[_0x1c06b9(0x3f4)][_0x1c06b9(0x26c)],this['ctx'][_0x1c06b9(0x228)],this[_0x1c06b9(0x3f4)][_0x1c06b9(0x3d0)]),this[_0x1c06b9(0x3f4)][_0x1c06b9(0x398)](this[_0x1c06b9(0x3f4)][_0x1c06b9(0x26c)],this[_0x1c06b9(0x3f4)][_0x1c06b9(0x1f5)],this['ctx'][_0x1c06b9(0x3d0)]),this[_0x1c06b9(0x3f4)][_0x1c06b9(0x398)](this[_0x1c06b9(0x3f4)][_0x1c06b9(0x26c)],this[_0x1c06b9(0x3f4)][_0x1c06b9(0x1d3)],this[_0x1c06b9(0x3f4)][_0x1c06b9(0x346)]),this[_0x1c06b9(0x3f4)][_0x1c06b9(0x398)](this[_0x1c06b9(0x3f4)]['TEXTURE_2D'],this[_0x1c06b9(0x3f4)][_0x1c06b9(0x247)],this[_0x1c06b9(0x3f4)][_0x1c06b9(0x346)]);let _0x8e0169=this[_0x1c06b9(0x3f4)][_0x1c06b9(0x3b5)](this['program'],_0xa18a5d);return _0x8e0169&&this[_0x1c06b9(0x3f4)][_0x1c06b9(0x2fe)](_0x8e0169,_0x1d0d4b),_0x50b992;}[_0x3e12b0(0x31d)](){const _0x375b90=_0x3e12b0;this[_0x375b90(0x1d4)]=setTimeout(()=>{const _0x543cd8=_0x375b90,_0x571dae=Object[_0x543cd8(0x2d5)](this['advertisementMap']);_0x571dae['length']&&(this[_0x543cd8(0x322)](_0x571dae[Math['floor'](Math['random']()*_0x571dae[_0x543cd8(0x24f)])]),this[_0x543cd8(0x31d)]());},this[_0x375b90(0x30c)][_0x375b90(0x339)]);}['AddAdvertisement'](_0x13be08,_0x298473,_0x3f5648=null){const _0x17f04f=_0x3e12b0;if(_0x13be08['indexOf'](_0x17f04f(0x2ec))>-0x1){fetch(_0x298473)['then'](async _0x18c99f=>{const _0x568aad=_0x17f04f;this[_0x568aad(0x31f)]=await _0x18c99f[_0x568aad(0x2df)](),this['ad2place']={};let _0x60b34f=Object[_0x568aad(0x2d5)](this[_0x568aad(0x31f)]);for(let _0x4176a3=0x0;_0x4176a3<_0x60b34f[_0x568aad(0x24f)];++_0x4176a3){let _0x281d1d=_0x60b34f[_0x4176a3];if(_0x281d1d==_0x568aad(0x219)){this['ad2Url']=this['place2ad'][_0x281d1d],delete this[_0x568aad(0x31f)][_0x281d1d];continue;}let _0x137ff6=this[_0x568aad(0x31f)][_0x281d1d];for(let _0x44ea79=0x0;_0x44ea79<_0x137ff6['length'];++_0x44ea79){let _0x384bdf=_0x137ff6[_0x44ea79];this[_0x568aad(0x3a9)]['#'+_0x384bdf]=_0x281d1d;}}Object[_0x568aad(0x2d5)](this['place2ad'])[_0x568aad(0x24f)]>0x0&&(console[_0x568aad(0x3dd)](_0x568aad(0x3d5),this[_0x568aad(0x31f)]),console[_0x568aad(0x3dd)]('composer::AddAdvertisement:\x20ads-to-place\x20mapping:\x20',this[_0x568aad(0x3a9)]),setTimeout(()=>{const _0x39f6b6=_0x568aad;this[_0x39f6b6(0x35b)]();},0xbb8));});if(_0x3f5648)_0x3f5648();return;}const _0x4a992f=new Image();return _0x4a992f[_0x17f04f(0x248)]='Anonymous',_0x4a992f[_0x17f04f(0x1f1)]=()=>{const _0x1bf392=_0x17f04f;let _0x1b6651=Object['keys'](this[_0x1bf392(0x304)])[_0x1bf392(0x24f)]===0x0;this['advertisementMap'][_0x13be08]=_0x4a992f;_0x1b6651&&(this[_0x1bf392(0x322)](_0x13be08),this[_0x1bf392(0x30c)][_0x1bf392(0x401)]&&(clearTimeout(this[_0x1bf392(0x1d4)]),this[_0x1bf392(0x31d)]()));if(_0x3f5648)_0x3f5648();},_0x4a992f[_0x17f04f(0x278)]=()=>{const _0x1947e7=_0x17f04f;alert(_0x1947e7(0x2b4)+_0x298473+'\x20.');},_0x4a992f[_0x17f04f(0x2e1)]=_0x298473,_0x4a992f;}[_0x3e12b0(0x35b)](){const _0x6c0e44=_0x3e12b0;if(this[_0x6c0e44(0x31f)]){let _0x55603d=Object[_0x6c0e44(0x2d5)](this[_0x6c0e44(0x31f)]);for(let _0x446412=0x0;_0x446412<_0x55603d['length'];++_0x446412){let _0xb7d547=_0x55603d[_0x446412];!this[_0x6c0e44(0x21a)][_0xb7d547]&&this[_0x6c0e44(0x31f)][_0xb7d547][_0x6c0e44(0x24f)]>0x0&&(console[_0x6c0e44(0x3dd)](_0x6c0e44(0x28f)+this[_0x6c0e44(0x31f)][_0xb7d547][0x0]+'\x20for\x20place\x20'+_0xb7d547),this[_0x6c0e44(0x322)]('#'+this[_0x6c0e44(0x31f)][_0xb7d547][0x0]));}}}[_0x3e12b0(0x322)](_0x212993){const _0x3f9bc2=_0x3e12b0;console[_0x3f9bc2(0x3dd)](_0x3f9bc2(0x318)+_0x212993);let _0x5bb63b=this[_0x3f9bc2(0x304)][_0x212993];if(!_0x5bb63b)console[_0x3f9bc2(0x361)](_0x3f9bc2(0x406)+_0x212993+'\x27');else{if(this[_0x3f9bc2(0x3a9)]&&this[_0x3f9bc2(0x3a9)][_0x212993]){let _0x5f39bc=this[_0x3f9bc2(0x3a9)][_0x212993];console[_0x3f9bc2(0x3dd)](_0x3f9bc2(0x3df)+_0x5f39bc);let _0x27e3da=this['TexUnitForAdInPlace'](_0x5f39bc),_0x399cd1='ad'+(_0x27e3da-0x1);if(this[_0x3f9bc2(0x21a)][_0x5f39bc])this[_0x3f9bc2(0x3f4)]['deleteTexture'](this[_0x3f9bc2(0x21a)][_0x5f39bc]['tex']);this['place2AdTexture'][_0x5f39bc]={'tex':this[_0x3f9bc2(0x1fb)](_0x5bb63b,_0x27e3da,_0x399cd1),'texUnitId':_0x27e3da,'texName':_0x399cd1,'name':_0x212993};}else this[_0x3f9bc2(0x296)]!=null&&this['ctx']['deleteTexture'](this['adTexture']),this['adTexture']=this[_0x3f9bc2(0x1fb)](_0x5bb63b,this[_0x3f9bc2(0x400)](),_0x3f9bc2(0x368)),this[_0x3f9bc2(0x29b)]=_0x5bb63b,this[_0x3f9bc2(0x23c)]=_0x212993;}}[_0x3e12b0(0x3b9)](_0xdec79f){const _0x338796=_0x3e12b0;this[_0x338796(0x2ad)][_0xdec79f[_0x338796(0x2d7)]]=_0xdec79f,this['metadataArr']['push'](_0xdec79f[_0x338796(0x2d7)]);}[_0x3e12b0(0x3c8)](){const _0x485250=_0x3e12b0;(this[_0x485250(0x255)]||this['webkitRequestFullscreen'])['call'](this)['catch'](_0x54be68=>{const _0x5b5fc6=_0x485250;console[_0x5b5fc6(0x361)](_0x54be68);});}['RenderFrame'](){const _0x5e4b57=_0x3e12b0;let _0x5f56d4=this[_0x5e4b57(0x3f4)]['getAttribLocation'](this[_0x5e4b57(0x204)],_0x5e4b57(0x34f)),_0x48af0b=this['ctx'][_0x5e4b57(0x3b5)](this[_0x5e4b57(0x204)],_0x5e4b57(0x38c)),_0x470bfa=this[_0x5e4b57(0x3f4)]['getUniformLocation'](this[_0x5e4b57(0x204)],_0x5e4b57(0x1d2));this[_0x5e4b57(0x3f4)][_0x5e4b57(0x35f)](_0x48af0b,this['ctx'][_0x5e4b57(0x2f6)]['width'],this[_0x5e4b57(0x3f4)][_0x5e4b57(0x2f6)][_0x5e4b57(0x27c)]),this['ctx']['uniform2f'](_0x470bfa,this[_0x5e4b57(0x3f4)][_0x5e4b57(0x2f6)]['width'],this[_0x5e4b57(0x3f4)][_0x5e4b57(0x2f6)][_0x5e4b57(0x27c)]);if(this[_0x5e4b57(0x357)]==0x2){let _0x384ab5=this[_0x5e4b57(0x3f4)][_0x5e4b57(0x3b5)](this['program'],_0x5e4b57(0x2c1)),_0xb2a780=[0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1];this[_0x5e4b57(0x3f4)][_0x5e4b57(0x387)](_0x384ab5,![],_0xb2a780);}let _0x4aaf0f=null;this[_0x5e4b57(0x357)]==0x2&&(_0x4aaf0f=this[_0x5e4b57(0x3f4)][_0x5e4b57(0x353)](),this['ctx'][_0x5e4b57(0x3e6)](_0x4aaf0f));let _0x2d0d14=this[_0x5e4b57(0x3f4)][_0x5e4b57(0x30e)]();this[_0x5e4b57(0x3f4)][_0x5e4b57(0x343)](_0x5f56d4),this['ctx'][_0x5e4b57(0x359)](this[_0x5e4b57(0x3f4)][_0x5e4b57(0x3bb)],_0x2d0d14);let _0x425c1c=0x2,_0x1a62ee=this[_0x5e4b57(0x3f4)]['FLOAT'],_0x60b69d=![],_0x1251fc=0x0,_0x188297=0x0;this['ctx'][_0x5e4b57(0x314)](_0x5f56d4,_0x425c1c,_0x1a62ee,_0x60b69d,_0x1251fc,_0x188297);let _0x30dc91=this[_0x5e4b57(0x3f4)][_0x5e4b57(0x30e)]();this['ctx']['bindBuffer'](this[_0x5e4b57(0x3f4)][_0x5e4b57(0x3bb)],_0x30dc91),this['ctx'][_0x5e4b57(0x2f8)](this[_0x5e4b57(0x3f4)][_0x5e4b57(0x3bb)],new Float32Array([0x0,0x0,0x1,0x0,0x0,0x1,0x0,0x1,0x1,0x0,0x1,0x1]),this[_0x5e4b57(0x3f4)][_0x5e4b57(0x2da)]),this[_0x5e4b57(0x3f4)]['viewport'](0x0,0x0,this[_0x5e4b57(0x3f4)][_0x5e4b57(0x2f6)][_0x5e4b57(0x365)],this['ctx'][_0x5e4b57(0x2f6)]['height']),this[_0x5e4b57(0x3f4)][_0x5e4b57(0x3e1)](0x0,0x0,0x0,0x0),this['ctx'][_0x5e4b57(0x25e)](this['ctx'][_0x5e4b57(0x27f)]|this[_0x5e4b57(0x3f4)]['DEPTH_BUFFER_BIT']),this[_0x5e4b57(0x3f4)]['bindBuffer'](this[_0x5e4b57(0x3f4)]['ARRAY_BUFFER'],_0x2d0d14),this[_0x5e4b57(0x37a)](this['ctx'],0x0,0x0,this[_0x5e4b57(0x2f6)][_0x5e4b57(0x365)],this[_0x5e4b57(0x2f6)][_0x5e4b57(0x27c)]);let _0xa0c1b5=this[_0x5e4b57(0x3f4)][_0x5e4b57(0x331)],_0x53b9f4=0x6;this[_0x5e4b57(0x3f4)]['drawArrays'](_0xa0c1b5,_0x188297,_0x53b9f4);}['SetRectangle'](_0x2e9c34,_0x360e26,_0x40bdf2,_0x30e257,_0x2aa722){const _0xab331f=_0x3e12b0;let _0x1ffc97=_0x360e26,_0x21985c=_0x360e26+_0x30e257,_0xcf1449=_0x40bdf2,_0x5dc333=_0x40bdf2+_0x2aa722;this[_0xab331f(0x3f4)][_0xab331f(0x2f8)](this[_0xab331f(0x3f4)]['ARRAY_BUFFER'],new Float32Array([_0x1ffc97,_0xcf1449,_0x21985c,_0xcf1449,_0x1ffc97,_0x5dc333,_0x1ffc97,_0x5dc333,_0x21985c,_0xcf1449,_0x21985c,_0x5dc333]),this[_0xab331f(0x3f4)]['STATIC_DRAW']);}[_0x3e12b0(0x21f)](_0x3ebeec){const _0x5ec3d4=_0x3e12b0;let _0x546489=BB[_0x5ec3d4(0x283)]['TimeCodesFramesTranslator'],_0x3e92d7=_0x546489[_0x5ec3d4(0x2ba)](_0x3ebeec),_0x5c4c0d=_0x546489[_0x5ec3d4(0x1ea)](_0x3e92d7,0x1,this[_0x5ec3d4(0x2dc)]),_0x484598=_0x546489[_0x5ec3d4(0x1ea)](_0x3e92d7,0x2,this[_0x5ec3d4(0x2dc)]),_0x18663c=_0x546489['printTimecode'](_0x5c4c0d),_0x243e29=_0x546489[_0x5ec3d4(0x3a5)](_0x484598);this[_0x5ec3d4(0x312)]=!![];const _0x9ddad9=performance[_0x5ec3d4(0x3bc)]();let _0x214647=null,_0x5a765b=[];if(this[_0x5ec3d4(0x2ad)][_0x3ebeec]){_0x214647=this[_0x5ec3d4(0x2ad)][_0x3ebeec];this[_0x5ec3d4(0x2ad)][_0x18663c]&&_0x5a765b[_0x5ec3d4(0x3b0)]({'nextVideo':this[_0x5ec3d4(0x2ad)][_0x18663c],'nextTimeCode':_0x18663c});this['metadataMap'][_0x243e29]&&_0x5a765b['push']({'nextVideo':this[_0x5ec3d4(0x2ad)][_0x243e29],'nextTimeCode':_0x243e29});const _0x1e677d=this['metadataArr'][_0x5ec3d4(0x285)](_0x3ebeec);if(_0x1e677d>-0x5)this[_0x5ec3d4(0x341)][_0x5ec3d4(0x288)](0x0,_0x1e677d-0x4)['forEach'](_0x5b3c5f=>{delete this['metadataMap'][_0x5b3c5f];});this[_0x5ec3d4(0x37e)]++;}else this['counter']++,this[_0x5ec3d4(0x381)]>0x3c&&(this[_0x5ec3d4(0x381)]=0x0,console[_0x5ec3d4(0x361)](_0x5ec3d4(0x333)+_0x3ebeec)),this['alphaFound']++;this[_0x5ec3d4(0x37e)]>0x1e&&this[_0x5ec3d4(0x2f6)][_0x5ec3d4(0x224)]['display']==_0x5ec3d4(0x2eb)&&(this['canvas'][_0x5ec3d4(0x224)][_0x5ec3d4(0x282)]='');let _0x22ef39=[];this[_0x5ec3d4(0x2f6)][_0x5ec3d4(0x365)]=0x500,this['canvas'][_0x5ec3d4(0x27c)]=0x2d0;let _0x19592a=0x0;this[_0x5ec3d4(0x3a1)]=[];if(_0x214647){let _0x56abcc=![];if(this[_0x5ec3d4(0x30c)][_0x5ec3d4(0x2a1)]){var _0x39b5e7=document[_0x5ec3d4(0x223)]('doNotRenderAugmentationCheckbox');_0x56abcc=_0x39b5e7[_0x5ec3d4(0x40d)];}if(!_0x56abcc)for(const _0x3cbf3c in _0x214647['placeholders']){const _0x37abed=_0x214647[_0x5ec3d4(0x389)][_0x3cbf3c];if(!_0x37abed[_0x5ec3d4(0x2db)])continue;let _0xcfcde4=_0x5ec3d4(0x1fe)+_0x19592a,_0x4e26c0=this['TexUnitBaseForAlpha']()+_0x19592a;_0x37abed['alphaTex']=this[_0x5ec3d4(0x1fb)](_0x37abed['alphaAsUint8Array'],_0x4e26c0,_0xcfcde4,this[_0x5ec3d4(0x3f4)][_0x5ec3d4(0x3d8)],_0x37abed[_0x5ec3d4(0x365)],_0x37abed[_0x5ec3d4(0x27c)],!![]),_0x37abed[_0x5ec3d4(0x2db)]=null;if(!_0x37abed[_0x5ec3d4(0x2d4)]){console[_0x5ec3d4(0x361)]('Failed\x20to\x20create\x20alpha\x20texture');continue;}_0x22ef39[_0x5ec3d4(0x3b0)](_0x37abed[_0x5ec3d4(0x2d4)]);let _0x2a32f8=_0x5ec3d4(0x234)+_0x19592a,_0x192893=this[_0x5ec3d4(0x3f4)]['getUniformLocation'](this['program'],_0x2a32f8);this[_0x5ec3d4(0x3f4)][_0x5ec3d4(0x2fe)](_0x192893,0x1);let _0x2b4a50=_0x5ec3d4(0x294)+_0x19592a,_0x544604=this['ctx'][_0x5ec3d4(0x3b5)](this['program'],_0x2b4a50),_0x1f62a6=![];_0x37abed[_0x5ec3d4(0x37f)][_0x5ec3d4(0x285)]('blur')>=0x0?(this[_0x5ec3d4(0x3f4)]['uniform1i'](_0x544604,0x63),_0x1f62a6=!![]):this[_0x5ec3d4(0x3f4)]['uniform1i'](_0x544604,this[_0x5ec3d4(0x1ee)](_0x37abed));let _0x522d58=_0x5ec3d4(0x1e6)+_0x19592a+_0x5ec3d4(0x2f4),_0x2a1b38=this[_0x5ec3d4(0x3f4)][_0x5ec3d4(0x3b5)](this[_0x5ec3d4(0x204)],_0x522d58);this[_0x5ec3d4(0x3f4)][_0x5ec3d4(0x302)](_0x2a1b38,[_0x37abed['maskX'],_0x37abed[_0x5ec3d4(0x24e)]]);let _0x3120f5=_0x5ec3d4(0x1e6)+_0x19592a+_0x5ec3d4(0x2e8),_0x28814e=this[_0x5ec3d4(0x3f4)][_0x5ec3d4(0x3b5)](this[_0x5ec3d4(0x204)],_0x3120f5);this[_0x5ec3d4(0x3f4)][_0x5ec3d4(0x302)](_0x28814e,[_0x37abed[_0x5ec3d4(0x365)],_0x37abed[_0x5ec3d4(0x27c)]]);let _0x50b60e=_0x5ec3d4(0x2c1)+_0x19592a,_0x27104c=this[_0x5ec3d4(0x3f4)][_0x5ec3d4(0x3b5)](this[_0x5ec3d4(0x204)],_0x50b60e);this['ctx'][_0x5ec3d4(0x387)](_0x27104c,![],_0x37abed['tranform']);if(!_0x1f62a6){let _0x43ca0e={'l':-0x1,'t':-0x1,'r':-0x1,'b':-0x1};for(let _0x20b2ed of _0x37abed[_0x5ec3d4(0x23a)]){if(_0x20b2ed['x']<_0x43ca0e['l']||_0x43ca0e['l']==-0x1)_0x43ca0e['l']=_0x20b2ed['x'];if(_0x20b2ed['x']>_0x43ca0e['r']||_0x43ca0e['r']==-0x1)_0x43ca0e['r']=_0x20b2ed['x'];if(_0x20b2ed['y']<_0x43ca0e['t']||_0x43ca0e['t']==-0x1)_0x43ca0e['t']=_0x20b2ed['y'];if(_0x20b2ed['y']>_0x43ca0e['b']||_0x43ca0e['b']==-0x1)_0x43ca0e['b']=_0x20b2ed['y'];}_0x43ca0e['l']/=_0x214647[_0x5ec3d4(0x20f)][_0x5ec3d4(0x365)],_0x43ca0e['r']/=_0x214647[_0x5ec3d4(0x20f)][_0x5ec3d4(0x365)],_0x43ca0e['t']/=_0x214647['canvasSize'][_0x5ec3d4(0x27c)],_0x43ca0e['b']/=_0x214647[_0x5ec3d4(0x20f)][_0x5ec3d4(0x27c)],this[_0x5ec3d4(0x3a1)][_0x5ec3d4(0x3b0)]({'name':this['AdNameForPlaceHolder'](_0x37abed),'rect':_0x43ca0e});}_0x19592a++;}}else{}for(;_0x19592a<BB['MAX_LOGOS'];++_0x19592a){let _0x2f0305=_0x5ec3d4(0x234)+_0x19592a,_0x697648=this['ctx']['getUniformLocation'](this[_0x5ec3d4(0x204)],_0x2f0305);this[_0x5ec3d4(0x3f4)][_0x5ec3d4(0x2fe)](_0x697648,0x0);let _0x3c5f93=_0x5ec3d4(0x1fe)+_0x19592a,_0x427e00=this[_0x5ec3d4(0x3f4)]['getUniformLocation'](this['program'],_0x3c5f93);this['ctx']['uniform1i'](_0x427e00,0x0);}if(this['options'][_0x5ec3d4(0x30d)][_0x5ec3d4(0x254)]){let _0x2d415c=_0x3ebeec[_0x5ec3d4(0x266)](':')[0x3],_0x2d7d27=_0x2d415c[_0x5ec3d4(0x285)]('.')>=0x0?0x2:0x1,_0x4eedca=parseInt(_0x2d415c[_0x5ec3d4(0x266)]('.')[0x0])%0xa,_0x5ed221=_0x4eedca+'.'+_0x2d7d27,_0x5ac4a4=this[_0x5ec3d4(0x409)]()+0x5,_0x1d735e=this[_0x5ec3d4(0x1fb)](this[_0x5ec3d4(0x3b7)][_0x5ed221],_0x5ac4a4,_0x5ec3d4(0x36c));_0x22ef39[_0x5ec3d4(0x3b0)](_0x1d735e);let _0x349f77='hasDigit',_0x24b79e=this['ctx'][_0x5ec3d4(0x3b5)](this[_0x5ec3d4(0x204)],_0x349f77);this[_0x5ec3d4(0x3f4)][_0x5ec3d4(0x2fe)](_0x24b79e,0x1);let _0x3e625b=_0x5ec3d4(0x1d5),_0x4da1f6=this[_0x5ec3d4(0x3f4)][_0x5ec3d4(0x3b5)](this[_0x5ec3d4(0x204)],_0x3e625b);this[_0x5ec3d4(0x3f4)]['uniform2fv'](_0x4da1f6,[0x0,0x0]);let _0x5967dd=_0x5ec3d4(0x203),_0x288516=this[_0x5ec3d4(0x3f4)][_0x5ec3d4(0x3b5)](this[_0x5ec3d4(0x204)],_0x5967dd);this[_0x5ec3d4(0x3f4)][_0x5ec3d4(0x302)](_0x288516,[0xc8,0xc8]);}else{let _0x47772c=_0x5ec3d4(0x20b),_0x206418=this[_0x5ec3d4(0x3f4)][_0x5ec3d4(0x3b5)](this['program'],_0x47772c);this['ctx'][_0x5ec3d4(0x2fe)](_0x206418,0x0);}this[_0x5ec3d4(0x2ce)]();for(const _0x2b3ecf of _0x22ef39){this[_0x5ec3d4(0x3f4)][_0x5ec3d4(0x301)](_0x2b3ecf);}}[_0x3e12b0(0x36f)](){const _0x30b4f7=_0x3e12b0;return this[_0x30b4f7(0x2f6)];}},BB[_0x3e12b0(0x2d6)]=(_0xae3b15,_0x4f7a97)=>{const _0x30de94=_0x3e12b0;let _0x2c1eef=[];const _0x5a95c0=new BB['Socket']((_0x32039a,_0x31ee45)=>{const _0x43852f=_0xbe5e;switch(_0x32039a){case _0x43852f(0x2d0):console[_0x43852f(0x3dd)](_0x43852f(0x33a),_0x31ee45);break;case'join':const _0x278a7a=document['getElementById']('name');_0x278a7a&&(_0x278a7a['textContent']=_0x5a95c0[_0x43852f(0x37f)]);break;case _0x43852f(0x367):if(_0x31ee45[_0x43852f(0x2d9)]===_0x5a95c0[_0x43852f(0x37f)]){if(_0x31ee45[_0x43852f(0x28e)]){const _0x430f7c=_0x43852f(0x3f3);_0xae3b15[_0x43852f(0x3be)](_0x430f7c,_0x31ee45[_0x43852f(0x28e)],()=>{const _0x32940=_0x43852f;_0xae3b15[_0x32940(0x322)](_0x430f7c);});}else _0x2c1eef=_0x31ee45['ads'],_0x2c1eef[_0x43852f(0x24f)]&&_0xae3b15[_0x43852f(0x322)](_0x2c1eef[0x0]);}break;case'ads':_0x2c1eef=_0x31ee45;_0x2c1eef[_0x43852f(0x24f)]&&_0xae3b15[_0x43852f(0x322)](_0x2c1eef[0x0]);break;}});var _0x49a191=document[_0x30de94(0x2c2)](_0x30de94(0x330));_0x49a191[_0x30de94(0x2e1)]='https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.3.0/socket.io.js',document[_0x30de94(0x2af)](_0x30de94(0x256))[0x0]['appendChild'](_0x49a191),_0x49a191[_0x30de94(0x1f1)]=function(){const _0x36ef83=_0x30de94;_0x5a95c0[_0x36ef83(0x2cb)](_0x4f7a97[_0x36ef83(0x30d)][_0x36ef83(0x38d)]);},_0x4f7a97[_0x30de94(0x30d)][_0x30de94(0x286)]?_0xae3b15['AddAdvertisement']('#ad',_0x4f7a97[_0x30de94(0x30d)][_0x30de94(0x286)]):fetch(_0x30de94(0x1f3)+_0x4f7a97['augmentation'][_0x30de94(0x38d)])['then'](async _0x41b8e7=>{const _0x27d30c=_0x30de94,_0x1883a1=await _0x41b8e7[_0x27d30c(0x2df)]();_0x1883a1[_0x27d30c(0x23f)](_0x4f02db=>{const _0x7fa79f=_0x27d30c;_0xae3b15[_0x7fa79f(0x3be)]('#'+_0x4f02db[_0x7fa79f(0x37f)],_0x4f02db[_0x7fa79f(0x28e)]);});});},BB[_0x3e12b0(0x259)]=(_0x5cd097,_0x218313)=>{const _0x584cdd=_0x3e12b0;let _0x2546a3=BB[_0x584cdd(0x283)]['TimeCodesFramesTranslator'],_0x5b8ae7=BB[_0x584cdd(0x283)][_0x584cdd(0x3db)](_0x5cd097['frameRateMode']),_0x9a088,_0x5878f3,_0x434559=null,_0x37ff06=null;console[_0x584cdd(0x3dd)](_0x584cdd(0x1fc)+_0x5cd097[_0x584cdd(0x39f)]);const _0x22fbdc=_0x3dba3e=>{const _0x4c5ba1=_0x584cdd;_0x9a088=_0x3dba3e,console[_0x4c5ba1(0x3dd)](_0x4c5ba1(0x1f6)+_0x5cd097[_0x4c5ba1(0x39f)]+':\x20'+_0x9a088),_0x5878f3&&_0x5c559d(_0x5878f3);};async function _0x305a48(){const _0x3a2130=_0x584cdd,_0x52fad0=await fetch(_0x5cd097[_0x3a2130(0x21b)]),_0x5920a6=await _0x52fad0[_0x3a2130(0x2df)]();_0x22fbdc(_0x5cd097[_0x3a2130(0x39f)]);}_0x305a48();const _0x22723a=_0x519087=>{_0x5878f3=_0x519087,_0x9a088&&_0x5c559d(_0x5878f3);},_0x5c559d=_0x5210f6=>{const _0x4ef9a7=_0x584cdd;if(_0x434559==null){console[_0x4ef9a7(0x263)](_0x4ef9a7(0x370));let _0x34cf39=new Blob([META_WORKER],{'type':'application/javascript'});_0x434559=new Worker(URL[_0x4ef9a7(0x222)](_0x34cf39)),_0x434559[_0x4ef9a7(0x278)]=function(_0x39f26a){console['error']('Error\x20from\x20worker:',_0x39f26a);},_0x434559[_0x4ef9a7(0x29e)]('error',function(_0x49cbf9){const _0x43030e=_0x4ef9a7;console[_0x43030e(0x361)](_0x43030e(0x279),_0x49cbf9[_0x43030e(0x1da)]);});if(_0x434559)console[_0x4ef9a7(0x263)](_0x4ef9a7(0x21e));else console['BBlog']('Error\x20in\x20creating\x20MetaDataDownloaderThread');_0x434559['addEventListener']('message',_0x124b4e=>{const _0x5c320f=_0x4ef9a7;if(_0x124b4e['data'][_0x5c320f(0x2e7)]){}else _0x218313[_0x5c320f(0x3b9)](_0x124b4e[_0x5c320f(0x319)]);});let _0x3735ad=_0x2546a3[_0x4ef9a7(0x395)](_0x2546a3[_0x4ef9a7(0x29a)](_0x5210f6,_0x5b8ae7,!![]));_0x434559[_0x4ef9a7(0x3ce)]({'cloudFrontURL':_0x5cd097[_0x4ef9a7(0x2ef)],'folderName':_0x9a088,'tc':_0x2546a3[_0x4ef9a7(0x3a5)](_0x3735ad,![])});}else{let _0x56bb13=_0x2546a3[_0x4ef9a7(0x395)](_0x2546a3['Frames2Timecode'](_0x5210f6,_0x5b8ae7,!![]));_0x434559[_0x4ef9a7(0x3ce)]({'tc':_0x2546a3[_0x4ef9a7(0x3a5)](_0x56bb13,![]),'enabled':_0x5cd097['enabled']});}};return{'setLastFrame':_0x22723a};},BB[_0x3e12b0(0x38a)]=class{constructor(_0x10c765,_0x3c31a3,_0x5e18cf){const _0x3a69db=_0x3e12b0;this[_0x3a69db(0x216)]=_0x10c765,this[_0x3a69db(0x3af)]=_0x3c31a3,console['log'](_0x3a69db(0x337),_0x5e18cf),this['options']=Object[_0x3a69db(0x336)]({'enabled':!![],'stopAugment':![],'gameId':_0x3a69db(0x2a3),'medialook':![],'allGamesURL':_0x3a69db(0x350),'cloudFrontURL':_0x3a69db(0x3f8),'mediaIdJsonURL':_0x3a69db(0x327),'offsetJsonURL':'https://games-prod.virtualott.com/offset','frameRateMode':BB[_0x3a69db(0x3d6)][_0x3a69db(0x3f2)],'renderingMode':BB[_0x3a69db(0x211)]['Augment'],'SynchMethod':BB[_0x3a69db(0x214)][_0x3a69db(0x240)],'debug':![],'hls_fps':0xea60/0x3e9,'augmentation':{'renderTimecode':!![],'offset':0x0},'syncPoint':{'frame':0x0,'playerTime':0x0,'mediaTimeMS':0x0}},_0x5e18cf||{}),console['log'](_0x3a69db(0x32c),this['options']),this[_0x3a69db(0x30c)][_0x3a69db(0x30d)][_0x3a69db(0x38d)]='nba',console[_0x3a69db(0x263)]=function(_0x3fd967){const _0x52537c=_0x3a69db;console[_0x52537c(0x3dd)](_0x52537c(0x307)+_0x3fd967);},console[_0x3a69db(0x218)]=function(_0x33ceb4){const _0x1e773d=_0x3a69db;console[_0x1e773d(0x361)]('OTTPlayer:\x20'+_0x33ceb4);};function _0x5e07d5(_0x4bacdb,_0x4afa71){const _0x238571=_0x3a69db,_0x466ab2=_0x4bacdb[_0x238571(0x266)]('.')[_0x238571(0x1f0)](Number),_0x49f1ce=_0x4afa71[_0x238571(0x266)]('.')[_0x238571(0x1f0)](Number);for(let _0x4ddce1=0x0;_0x4ddce1<Math[_0x238571(0x32b)](_0x466ab2['length'],_0x49f1ce[_0x238571(0x24f)]);_0x4ddce1++){const _0x21e900=_0x466ab2[_0x4ddce1]||0x0,_0x2d9b3a=_0x49f1ce[_0x4ddce1]||0x0;if(_0x21e900<_0x2d9b3a)return-0x1;else{if(_0x21e900>_0x2d9b3a)return 0x1;}}return 0x0;}this['getGlobalConfig']();}[_0x3e12b0(0x3cb)](){const _0x589693=_0x3e12b0;if(typeof globalConfig===_0x589693(0x2bd))this[_0x589693(0x30c)]=Object['assign'](this[_0x589693(0x30c)],{});else this[_0x589693(0x30c)]=Object[_0x589693(0x336)](this[_0x589693(0x30c)],globalConfig);this[_0x589693(0x30c)][_0x589693(0x30d)][_0x589693(0x3b2)]=0x0;var _0x572f09={};_0x572f09[_0x589693(0x2cf)]=this[_0x589693(0x30c)][_0x589693(0x20d)],this[_0x589693(0x38f)](_0x572f09),console['log'](_0x589693(0x3ca),this[_0x589693(0x30c)]);if(!this[_0x589693(0x30c)][_0x589693(0x2a1)]){let _0x4c4e2c=['debugText',_0x589693(0x39b),_0x589693(0x3de),_0x589693(0x324),'toggleBtn',_0x589693(0x3d2),'plus05CorrectionCheckbox',_0x589693(0x391),_0x589693(0x303),_0x589693(0x271),'br1',_0x589693(0x35d)];for(let _0x29f9ee=0x0;_0x29f9ee<_0x4c4e2c[_0x589693(0x24f)];_0x29f9ee++){const _0x13e3a7=document['getElementById'](_0x4c4e2c[_0x29f9ee]);_0x13e3a7&&(_0x13e3a7['style'][_0x589693(0x282)]='none');}}let _0x2639f2=BB[_0x589693(0x283)][_0x589693(0x29f)],_0x517df4=BB[_0x589693(0x283)][_0x589693(0x3aa)];if(this[_0x589693(0x3af)])this[_0x589693(0x310)](this['srcFrameRate']);this[_0x589693(0x372)](this['options'][_0x589693(0x39f)]);}[_0x3e12b0(0x1d6)](){const _0x559963=_0x3e12b0;let _0xa7c16={};this['frameDrawer']=BB[_0x559963(0x2ff)](_0xa7c16,this['video'],this[_0x559963(0x30c)]),this['options'][_0x559963(0x2b9)]==BB[_0x559963(0x211)][_0x559963(0x221)]&&this['frameDrawer'][_0x559963(0x258)]();}async[_0x3e12b0(0x397)](){const _0x26704e=_0x3e12b0,_0x202ff0=new URL(document[_0x26704e(0x3ab)]),_0x25550d=_0x202ff0[_0x26704e(0x227)]['get'](_0x26704e(0x2d1))||'';if(_0x25550d!=='')try{const _0x404b0f=await fetch(_0x25550d);if(!_0x404b0f['ok'])throw new Error(_0x26704e(0x242));const _0x30e504=await _0x404b0f['json']();console[_0x26704e(0x3dd)](_0x26704e(0x3e2),_0x30e504);if(typeof globalConfig==_0x26704e(0x2bd))window[_0x26704e(0x2fd)]={};globalConfig=Object[_0x26704e(0x336)]({},globalConfig,_0x30e504);}catch(_0x1c26e5){console[_0x26704e(0x218)](_0x26704e(0x31b),_0x1c26e5);}this[_0x26704e(0x3cb)]();}async[_0x3e12b0(0x372)](_0x47d0b5){const _0x4c77e9=_0x3e12b0;if(this[_0x4c77e9(0x30c)][_0x4c77e9(0x265)]==_0x4c77e9(0x342)){this['weHaveTheGameID']();return;}try{const _0x393f10=await fetch(this[_0x4c77e9(0x30c)][_0x4c77e9(0x265)]+'/'+_0x47d0b5);if(!_0x393f10['ok'])throw new Error(_0x4c77e9(0x233)+_0x393f10[_0x4c77e9(0x3ae)]);const _0x27fe12=await _0x393f10[_0x4c77e9(0x2df)]();if(_0x27fe12[_0x4c77e9(0x269)](_0x4c77e9(0x36a))){const _0xce4e18=_0x27fe12[_0x4c77e9(0x36a)];console[_0x4c77e9(0x263)](_0x4c77e9(0x3f1)+_0x47d0b5+':\x20'+_0xce4e18),this['options'][_0x4c77e9(0x39f)]=_0xce4e18,console[_0x4c77e9(0x3dd)](_0x4c77e9(0x3da)+this[_0x4c77e9(0x30c)][_0x4c77e9(0x39f)]+',\x20so\x20I\x27m\x20launching\x20the\x20meta-data\x20fetcher\x20web-worker'),this[_0x4c77e9(0x1d6)](),this['fetchOffsetForGameId'](this[_0x4c77e9(0x30c)][_0x4c77e9(0x39f)]);}else console[_0x4c77e9(0x218)](_0x4c77e9(0x27d)+_0x47d0b5+_0x4c77e9(0x2e3)),this[_0x4c77e9(0x30c)][_0x4c77e9(0x3a0)]=!![];}catch(_0x5aacf4){console['BBerror'](_0x4c77e9(0x1e3),_0x5aacf4);}}async[_0x3e12b0(0x30a)](_0x1e869f){const _0x1ebb0a=_0x3e12b0;if(this[_0x1ebb0a(0x30c)][_0x1ebb0a(0x241)]==_0x1ebb0a(0x342))return 0x0;try{const _0xe1f00e=await fetch(this[_0x1ebb0a(0x30c)][_0x1ebb0a(0x241)]+'/'+this[_0x1ebb0a(0x30c)]['gameId']);!_0xe1f00e['ok']&&(console[_0x1ebb0a(0x263)](_0x1ebb0a(0x233)+_0xe1f00e[_0x1ebb0a(0x3ae)]),setTimeout(()=>{const _0x4a588f=_0x1ebb0a;this[_0x4a588f(0x30a)](_0x1e869f);},0x1388));const _0x52f95c=await _0xe1f00e['json']();if(_0x52f95c[_0x1ebb0a(0x269)](_0x1ebb0a(0x3b2))&&_0x52f95c[_0x1ebb0a(0x269)]('found')){const _0x5ad897=_0x52f95c[_0x1ebb0a(0x3b2)],_0x527061=_0x52f95c[_0x1ebb0a(0x2a4)];_0x527061==!![]&&(console['BBlog'](_0x1ebb0a(0x3a4)+_0x1e869f+':\x20'+_0x5ad897),this[_0x1ebb0a(0x30c)][_0x1ebb0a(0x30d)][_0x1ebb0a(0x3b2)]=_0x5ad897,setTimeout(()=>{const _0xf81a0e=_0x1ebb0a;this[_0xf81a0e(0x30a)](_0x1e869f);},0xea60));}else console[_0x1ebb0a(0x263)](_0x1ebb0a(0x3a8)+mediaID+_0x1ebb0a(0x2e3)),setTimeout(()=>{const _0x588b91=_0x1ebb0a;this[_0x588b91(0x30a)](_0x1e869f);},0x1388);}catch(_0x341769){console['BBerror'](_0x1ebb0a(0x351),_0x341769),setTimeout(()=>{const _0x141a2f=_0x1ebb0a;this[_0x141a2f(0x30a)](_0x1e869f);},0x1388);}}['toggle'](_0x51a36d){const _0x4bc108=_0x3e12b0;this[_0x4bc108(0x30c)][_0x4bc108(0x313)]=_0x51a36d;}[_0x3e12b0(0x36f)](){const _0x3d9951=_0x3e12b0;return this[_0x3d9951(0x39c)][_0x3d9951(0x36f)]();}[_0x3e12b0(0x310)](_0xf62c9e){const _0x442e3f=_0x3e12b0;let _0x46fa35=BB['Utils']['Platform'];switch(_0xf62c9e){case 0x3c:this[_0x442e3f(0x30c)][_0x442e3f(0x360)]=BB['FrameRateMode']['Src60_MediaTime60'];break;case 0xea60/0x3e9:case 59.94:_0x46fa35[_0x442e3f(0x246)]()||_0x46fa35['isAndroid']()||_0x46fa35['isChromeMac']()?this[_0x442e3f(0x30c)][_0x442e3f(0x360)]=BB[_0x442e3f(0x3d6)][_0x442e3f(0x356)]:this[_0x442e3f(0x30c)][_0x442e3f(0x360)]=BB[_0x442e3f(0x3d6)][_0x442e3f(0x356)];break;case 0x7530/0x3e9:case 29.97:this[_0x442e3f(0x30c)][_0x442e3f(0x360)]=BB[_0x442e3f(0x3d6)][_0x442e3f(0x3b3)];break;default:console[_0x442e3f(0x361)]('Unsupported\x20calculation\x20frame-rate:\x20'+_0xf62c9e+'fps');break;}}[_0x3e12b0(0x38f)](_0xf1adc3){const _0x48f182=_0x3e12b0;var _0x44887f=_0xf1adc3[_0x48f182(0x2cf)];switch(_0x44887f){case 59.94:case 0xea60/0x3e9:this['options'][_0x48f182(0x20d)]=0xea60/0x3e9;break;case 29.97:case 0x7530/0x3e9:this['options']['hls_fps']=0x7530/0x3e9;break;default:console[_0x48f182(0x361)](_0x48f182(0x252)+_0x44887f+_0x48f182(0x2c5)),this['options'][_0x48f182(0x20d)]=_0x44887f;break;}}[_0x3e12b0(0x2ac)](_0x14b926){const _0x3199fe=_0x3e12b0;this[_0x3199fe(0x30c)][_0x3199fe(0x28d)]=_0x14b926;}[_0x3e12b0(0x39e)](_0x11ab2f){const _0x53e23d=_0x3e12b0;this['frameDrawer'][_0x53e23d(0x2fc)](_0x11ab2f);}['onNewMetadata'](_0x58aac3){const _0x1845e9=_0x3e12b0;this['frameDrawer'][_0x1845e9(0x262)](_0x58aac3);}};
|
|
1
|
+
function _0x92df(_0x5bcaff,_0xe0b53b){const _0x5a5079=_0x5a50();return _0x92df=function(_0x92dfe6,_0x1adc8d){_0x92dfe6=_0x92dfe6-0x14b;let _0x534612=_0x5a5079[_0x92dfe6];return _0x534612;},_0x92df(_0x5bcaff,_0xe0b53b);}const _0x1ce293=_0x92df;(function(_0xa6e839,_0x5a3da9){const _0x104805=_0x92df,_0xf4bf3f=_0xa6e839();while(!![]){try{const _0x3365ad=-parseInt(_0x104805(0x24a))/0x1+-parseInt(_0x104805(0x152))/0x2*(-parseInt(_0x104805(0x1bf))/0x3)+parseInt(_0x104805(0x38a))/0x4+-parseInt(_0x104805(0x260))/0x5+parseInt(_0x104805(0x15d))/0x6+parseInt(_0x104805(0x176))/0x7+-parseInt(_0x104805(0x1c6))/0x8;if(_0x3365ad===_0x5a3da9)break;else _0xf4bf3f['push'](_0xf4bf3f['shift']());}catch(_0x524426){_0xf4bf3f['push'](_0xf4bf3f['shift']());}}}(_0x5a50,0x8d010));const OTTPLAYER_VERSION='v1.0.41',printVersion=()=>{const _0x4057e2=_0x92df;console[_0x4057e2(0x271)](_0x4057e2(0x2d3)+OTTPLAYER_VERSION);};printVersion();const COMPOSER_WORKER='\x0a//importScripts(\x22../OTTPlayer_with_worker.js\x22);\x0a\x0a\x0a\x0a\x0alet\x20debug_lastFrameFromVideoCallback=-1;\x0alet\x20debug_tc\x20=\x20\x22\x22;\x0a\x0a/*\x20global\x20define\x20*/\x0a(function(root,\x20factory)\x20{\x20\x20//\x20eslint-disable-line\x0a\x20\x20if\x20(typeof\x20define\x20===\x20\x27function\x27\x20&&\x20define.amd)\x20{\x0a\x20\x20\x20\x20//\x20AMD.\x20Register\x20as\x20an\x20anonymous\x20module.\x0a\x20\x20\x20\x20define([],\x20function()\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20factory.call(root);\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20//\x20Browser\x20globals\x0a\x20\x20\x20\x20root.webglUtils\x20=\x20factory.call(root);\x0a\x20\x20}\x0a}(this,\x20function()\x20{\x0a\x20\x20\x22use\x20strict\x22;\x0a\x0a\x20\x20const\x20topWindow\x20=\x20this;\x0a\x0a\x20\x20/**\x20@module\x20webgl-utils\x20*/\x0a\x0a\x20\x20function\x20isInIFrame(w)\x20{\x0a\x20\x20\x20\x20w\x20=\x20w\x20||\x20topWindow;\x0a\x20\x20\x20\x20return\x20w\x20!==\x20w.top;\x0a\x20\x20}\x0a\x0a\x20\x20if\x20(!isInIFrame())\x20{\x0a\x20\x20\x20\x20console.log(\x22%c%s\x22,\x20\x27color:blue;font-weight:bold;\x27,\x20\x27for\x20more\x20about\x20webgl-utils.js\x20see:\x27);\x20\x20//\x20eslint-disable-line\x0a\x20\x20\x20\x20console.log(\x22%c%s\x22,\x20\x27color:blue;font-weight:bold;\x27,\x20\x27http://webgl2fundamentals.org/webgl/lessons/webgl-boilerplate.html\x27);\x20\x20//\x20eslint-disable-line\x0a\x20\x20}\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Wrapped\x20logging\x20function.\x0a\x20\x20\x20*\x20@param\x20{string}\x20msg\x20The\x20message\x20to\x20log.\x0a\x20\x20\x20*/\x0a\x20\x20function\x20error(msg)\x20{\x0a\x20\x20\x20\x20if\x20(topWindow.console)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(topWindow.console.error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20topWindow.console.error(msg);\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20if\x20(topWindow.console.log)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20topWindow.console.log(msg);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x0a\x20\x20const\x20errorRE\x20=\x20/ERROR:s*d+:(d+)/gi;\x0a\x20\x20function\x20addLineNumbersWithError(src,\x20log\x20=\x20\x27\x27)\x20{\x0a\x20\x20\x20\x20//\x20Note:\x20Error\x20message\x20formats\x20are\x20not\x20defined\x20by\x20any\x20spec\x20so\x20this\x20may\x20or\x20may\x20not\x20work.\x0a\x20\x20\x20\x20const\x20matches\x20=\x20[...log.matchAll(errorRE)];\x0a\x20\x20\x20\x20const\x20lineNoToErrorMap\x20=\x20new\x20Map(matches.map((m,\x20ndx)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20lineNo\x20=\x20parseInt(m[1]);\x0a\x20\x20\x20\x20\x20\x20const\x20next\x20=\x20matches[ndx\x20+\x201];\x0a\x20\x20\x20\x20\x20\x20const\x20end\x20=\x20next\x20?\x20next.index\x20:\x20log.length;\x0a\x20\x20\x20\x20\x20\x20const\x20msg\x20=\x20log.substring(m.index,\x20end);\x0a\x20\x20\x20\x20\x20\x20return\x20[lineNo\x20-\x201,\x20msg];\x0a\x20\x20\x20\x20}));\x0areturn\x20src.split(\x27\x5cn\x27).map((line,\x20lineNo)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20err\x20=\x20lineNoToErrorMap.get(lineNo);\x0a\x20\x20\x20\x20\x20\x20return\x20`${lineNo\x20+\x201}:\x20${line}${err\x20?\x20`\x5cn\x5cn^^^\x20${err}`\x20:\x20\x27\x27}`;\x0a\x20\x20\x20\x20}).join(\x27\x5cn\x27);\x0a\x20\x20}\x0a\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Error\x20Callback\x0a\x20\x20\x20*\x20@callback\x20ErrorCallback\x0a\x20\x20\x20*\x20@param\x20{string}\x20msg\x20error\x20message.\x0a\x20\x20\x20*\x20@memberOf\x20module:webgl-utils\x0a\x20\x20\x20*/\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Loads\x20a\x20shader.\x0a\x20\x20\x20*\x20@param\x20{WebGLRenderingContext}\x20gl\x20The\x20WebGLRenderingContext\x20to\x20use.\x0a\x20\x20\x20*\x20@param\x20{string}\x20shaderSource\x20The\x20shader\x20source.\x0a\x20\x20\x20*\x20@param\x20{number}\x20shaderType\x20The\x20type\x20of\x20shader.\x0a\x20\x20\x20*\x20@param\x20{module:webgl-utils.ErrorCallback}\x20opt_errorCallback\x20callback\x20for\x20errors.\x0a\x20\x20\x20*\x20@return\x20{WebGLShader}\x20The\x20created\x20shader.\x0a\x20\x20\x20*/\x0a\x20\x20function\x20loadShader(gl,\x20shaderSource,\x20shaderType,\x20opt_errorCallback)\x20{\x0a\x20\x20\x20\x20const\x20errFn\x20=\x20opt_errorCallback\x20||\x20error;\x0a\x20\x20\x20\x20//\x20Create\x20the\x20shader\x20object\x0a\x20\x20\x20\x20const\x20shader\x20=\x20gl.createShader(shaderType);\x0a\x0a\x20\x20\x20\x20//\x20Load\x20the\x20shader\x20source\x0a\x20\x20\x20\x20gl.shaderSource(shader,\x20shaderSource);\x0a\x0a\x20\x20\x20\x20//\x20Compile\x20the\x20shader\x0a\x20\x20\x20\x20gl.compileShader(shader);\x0a\x0a\x20\x20\x20\x20//\x20Check\x20the\x20compile\x20status\x0a\x20\x20\x20\x20const\x20compiled\x20=\x20gl.getShaderParameter(shader,\x20gl.COMPILE_STATUS);\x0a\x20\x20\x20\x20if\x20(!compiled)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Something\x20went\x20wrong\x20during\x20compilation;\x20get\x20the\x20error\x0a\x20\x20\x20\x20\x20\x20const\x20lastError\x20=\x20gl.getShaderInfoLog(shader);\x0a\x20\x20\x20\x20\x20\x20errFn(`Error\x20compiling\x20shader:\x20${lastError}\x0a${addLineNumbersWithError(shaderSource,\x20lastError)}`);\x0a\x20\x20\x20\x20\x20\x20gl.deleteShader(shader);\x0a\x20\x20\x20\x20\x20\x20return\x20null;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20shader;\x0a\x20\x20}\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Creates\x20a\x20program,\x20attaches\x20shaders,\x20binds\x20attrib\x20locations,\x20links\x20the\x0a\x20\x20\x20*\x20program\x20and\x20calls\x20useProgram.\x0a\x20\x20\x20*\x20@param\x20{WebGLShader[]}\x20shaders\x20The\x20shaders\x20to\x20attach\x0a\x20\x20\x20*\x20@param\x20{string[]}\x20[opt_attribs]\x20An\x20array\x20of\x20attribs\x20names.\x20Locations\x20will\x20be\x20assigned\x20by\x20index\x20if\x20not\x20passed\x20in\x0a\x20\x20\x20*\x20@param\x20{number[]}\x20[opt_locations]\x20The\x20locations\x20for\x20the.\x20A\x20parallel\x20array\x20to\x20opt_attribs\x20letting\x20you\x20assign\x20locations.\x0a\x20\x20\x20*\x20@param\x20{module:webgl-utils.ErrorCallback}\x20opt_errorCallback\x20callback\x20for\x20errors.\x20By\x20default\x20it\x20just\x20prints\x20an\x20error\x20to\x20the\x20console\x0a\x20\x20\x20*\x20\x20\x20\x20\x20\x20\x20\x20on\x20error.\x20If\x20you\x20want\x20something\x20else\x20pass\x20an\x20callback.\x20It\x27s\x20passed\x20an\x20error\x20message.\x0a\x20\x20\x20*\x20@memberOf\x20module:webgl-utils\x0a\x20\x20\x20*/\x0a\x20\x20function\x20createProgram(\x0a\x20\x20\x20\x20\x20\x20gl,\x20shaders,\x20opt_attribs,\x20opt_locations,\x20opt_errorCallback)\x20{\x0a\x20\x20\x20\x20const\x20errFn\x20=\x20opt_errorCallback\x20||\x20error;\x0a\x20\x20\x20\x20const\x20program\x20=\x20gl.createProgram();\x0a\x20\x20\x20\x20shaders.forEach(function(shader)\x20{\x0a\x20\x20\x20\x20\x20\x20gl.attachShader(program,\x20shader);\x0a\x20\x20\x20\x20});\x0a\x20\x20\x20\x20if\x20(opt_attribs)\x20{\x0a\x20\x20\x20\x20\x20\x20opt_attribs.forEach(function(attrib,\x20ndx)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20gl.bindAttribLocation(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20program,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20opt_locations\x20?\x20opt_locations[ndx]\x20:\x20ndx,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20attrib);\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20gl.linkProgram(program);\x0a\x0a\x20\x20\x20\x20//\x20Check\x20the\x20link\x20status\x0a\x20\x20\x20\x20const\x20linked\x20=\x20gl.getProgramParameter(program,\x20gl.LINK_STATUS);\x0a\x20\x20\x20\x20if\x20(!linked)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20something\x20went\x20wrong\x20with\x20the\x20link\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20lastError\x20=\x20gl.getProgramInfoLog(program);\x0a\x20\x20\x20\x20\x20\x20\x20\x20errFn(`Error\x20in\x20program\x20linking:\x20${lastError}\x5cn${\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20shaders.map(shader\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20src\x20=\x20addLineNumbersWithError(gl.getShaderSource(shader));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20type\x20=\x20gl.getShaderParameter(shader,\x20gl.SHADER_TYPE);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20`${glEnumToString(gl,\x20type)}:\x5cn${src}`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}).join(\x27\x5cn\x27)\x0a\x20\x20\x20\x20\x20\x20\x20\x20}`);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20gl.deleteProgram(program);\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20null;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20program;\x0a\x20\x20}\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Loads\x20a\x20shader\x20from\x20a\x20script\x20tag.\x0a\x20\x20\x20*\x20@param\x20{WebGLRenderingContext}\x20gl\x20The\x20WebGLRenderingContext\x20to\x20use.\x0a\x20\x20\x20*\x20@param\x20{string}\x20scriptId\x20The\x20id\x20of\x20the\x20script\x20tag.\x0a\x20\x20\x20*\x20@param\x20{number}\x20opt_shaderType\x20The\x20type\x20of\x20shader.\x20If\x20not\x20passed\x20in\x20it\x20will\x0a\x20\x20\x20*\x20\x20\x20\x20\x20be\x20derived\x20from\x20the\x20type\x20of\x20the\x20script\x20tag.\x0a\x20\x20\x20*\x20@param\x20{module:webgl-utils.ErrorCallback}\x20opt_errorCallback\x20callback\x20for\x20errors.\x0a\x20\x20\x20*\x20@return\x20{WebGLShader}\x20The\x20created\x20shader.\x0a\x20\x20\x20*/\x0a\x20\x20function\x20createShaderFromScript(\x0a\x20\x20\x20\x20\x20\x20gl,\x20scriptId,\x20opt_shaderType,\x20opt_errorCallback)\x20{\x0a\x20\x20\x20\x20let\x20shaderSource\x20=\x20\x22\x22;\x0a\x20\x20\x20\x20let\x20shaderType;\x0a\x20\x20\x20\x20const\x20shaderScript\x20=\x20document.getElementById(scriptId);\x0a\x20\x20\x20\x20if\x20(!shaderScript)\x20{\x0a\x20\x20\x20\x20\x20\x20throw\x20(\x22***\x20Error:\x20unknown\x20script\x20element\x22\x20+\x20scriptId);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20shaderSource\x20=\x20shaderScript.text;\x0a\x0a\x20\x20\x20\x20if\x20(!opt_shaderType)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(shaderScript.type\x20===\x20\x22x-shader/x-vertex\x22)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20shaderType\x20=\x20gl.VERTEX_SHADER;\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20if\x20(shaderScript.type\x20===\x20\x22x-shader/x-fragment\x22)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20shaderType\x20=\x20gl.FRAGMENT_SHADER;\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20if\x20(shaderType\x20!==\x20gl.VERTEX_SHADER\x20&&\x20shaderType\x20!==\x20gl.FRAGMENT_SHADER)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20(\x22***\x20Error:\x20unknown\x20shader\x20type\x22);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20loadShader(\x0a\x20\x20\x20\x20\x20\x20\x20\x20gl,\x20shaderSource,\x20opt_shaderType\x20?\x20opt_shaderType\x20:\x20shaderType,\x0a\x20\x20\x20\x20\x20\x20\x20\x20opt_errorCallback);\x0a\x20\x20}\x0a\x0a\x20\x20const\x20defaultShaderType\x20=\x20[\x0a\x20\x20\x20\x20\x22VERTEX_SHADER\x22,\x0a\x20\x20\x20\x20\x22FRAGMENT_SHADER\x22,\x0a\x20\x20];\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Creates\x20a\x20program\x20from\x202\x20script\x20tags.\x0a\x20\x20\x20*\x0a\x20\x20\x20*\x20@param\x20{WebGLRenderingContext}\x20gl\x20The\x20WebGLRenderingContext\x0a\x20\x20\x20*\x20\x20\x20\x20\x20\x20\x20\x20to\x20use.\x0a\x20\x20\x20*\x20@param\x20{string[]}\x20shaderScriptIds\x20Array\x20of\x20ids\x20of\x20the\x20script\x0a\x20\x20\x20*\x20\x20\x20\x20\x20\x20\x20\x20tags\x20for\x20the\x20shaders.\x20The\x20first\x20is\x20assumed\x20to\x20be\x20the\x0a\x20\x20\x20*\x20\x20\x20\x20\x20\x20\x20\x20vertex\x20shader,\x20the\x20second\x20the\x20fragment\x20shader.\x0a\x20\x20\x20*\x20@param\x20{string[]}\x20[opt_attribs]\x20An\x20array\x20of\x20attribs\x20names.\x20Locations\x20will\x20be\x20assigned\x20by\x20index\x20if\x20not\x20passed\x20in\x0a\x20\x20\x20*\x20@param\x20{number[]}\x20[opt_locations]\x20The\x20locations\x20for\x20the.\x20A\x20parallel\x20array\x20to\x20opt_attribs\x20letting\x20you\x20assign\x20locations.\x0a\x20\x20\x20*\x20@param\x20{module:webgl-utils.ErrorCallback}\x20opt_errorCallback\x20callback\x20for\x20errors.\x20By\x20default\x20it\x20just\x20prints\x20an\x20error\x20to\x20the\x20console\x0a\x20\x20\x20*\x20\x20\x20\x20\x20\x20\x20\x20on\x20error.\x20If\x20you\x20want\x20something\x20else\x20pass\x20an\x20callback.\x20It\x27s\x20passed\x20an\x20error\x20message.\x0a\x20\x20\x20*\x20@return\x20{WebGLProgram}\x20The\x20created\x20program.\x0a\x20\x20\x20*\x20@memberOf\x20module:webgl-utils\x0a\x20\x20\x20*/\x0a\x20\x20function\x20createProgramFromScripts(\x0a\x20\x20\x20\x20\x20\x20gl,\x20shaderScriptIds,\x20opt_attribs,\x20opt_locations,\x20opt_errorCallback)\x20{\x0a\x20\x20\x20\x20const\x20shaders\x20=\x20[];\x0a\x20\x20\x20\x20for\x20(let\x20ii\x20=\x200;\x20ii\x20<\x20shaderScriptIds.length;\x20++ii)\x20{\x0a\x20\x20\x20\x20\x20\x20shaders.push(createShaderFromScript(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20gl,\x20shaderScriptIds[ii],\x20gl[defaultShaderType[ii]],\x20opt_errorCallback));\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20createProgram(gl,\x20shaders,\x20opt_attribs,\x20opt_locations,\x20opt_errorCallback);\x0a\x20\x20}\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Creates\x20a\x20program\x20from\x202\x20sources.\x0a\x20\x20\x20*\x0a\x20\x20\x20*\x20@param\x20{WebGLRenderingContext}\x20gl\x20The\x20WebGLRenderingContext\x0a\x20\x20\x20*\x20\x20\x20\x20\x20\x20\x20\x20to\x20use.\x0a\x20\x20\x20*\x20@param\x20{string[]}\x20shaderSourcess\x20Array\x20of\x20sources\x20for\x20the\x0a\x20\x20\x20*\x20\x20\x20\x20\x20\x20\x20\x20shaders.\x20The\x20first\x20is\x20assumed\x20to\x20be\x20the\x20vertex\x20shader,\x0a\x20\x20\x20*\x20\x20\x20\x20\x20\x20\x20\x20the\x20second\x20the\x20fragment\x20shader.\x0a\x20\x20\x20*\x20@param\x20{string[]}\x20[opt_attribs]\x20An\x20array\x20of\x20attribs\x20names.\x20Locations\x20will\x20be\x20assigned\x20by\x20index\x20if\x20not\x20passed\x20in\x0a\x20\x20\x20*\x20@param\x20{number[]}\x20[opt_locations]\x20The\x20locations\x20for\x20the.\x20A\x20parallel\x20array\x20to\x20opt_attribs\x20letting\x20you\x20assign\x20locations.\x0a\x20\x20\x20*\x20@param\x20{module:webgl-utils.ErrorCallback}\x20opt_errorCallback\x20callback\x20for\x20errors.\x20By\x20default\x20it\x20just\x20prints\x20an\x20error\x20to\x20the\x20console\x0a\x20\x20\x20*\x20\x20\x20\x20\x20\x20\x20\x20on\x20error.\x20If\x20you\x20want\x20something\x20else\x20pass\x20an\x20callback.\x20It\x27s\x20passed\x20an\x20error\x20message.\x0a\x20\x20\x20*\x20@return\x20{WebGLProgram}\x20The\x20created\x20program.\x0a\x20\x20\x20*\x20@memberOf\x20module:webgl-utils\x0a\x20\x20\x20*/\x0a\x20\x20function\x20createProgramFromSources(\x0a\x20\x20\x20\x20\x20\x20gl,\x20shaderSources,\x20opt_attribs,\x20opt_locations,\x20opt_errorCallback)\x20{\x0a\x20\x20\x20\x20const\x20shaders\x20=\x20[];\x0a\x20\x20\x20\x20for\x20(let\x20ii\x20=\x200;\x20ii\x20<\x20shaderSources.length;\x20++ii)\x20{\x0a\x20\x20\x20\x20\x20\x20shaders.push(loadShader(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20gl,\x20shaderSources[ii],\x20gl[defaultShaderType[ii]],\x20opt_errorCallback));\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20createProgram(gl,\x20shaders,\x20opt_attribs,\x20opt_locations,\x20opt_errorCallback);\x0a\x20\x20}\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Resize\x20a\x20canvas\x20to\x20match\x20the\x20size\x20its\x20displayed.\x0a\x20\x20\x20*\x20@param\x20{HTMLCanvasElement}\x20canvas\x20The\x20canvas\x20to\x20resize.\x0a\x20\x20\x20*\x20@param\x20{number}\x20[multiplier]\x20amount\x20to\x20multiply\x20by.\x0a\x20\x20\x20*\x20\x20\x20\x20Pass\x20in\x20window.devicePixelRatio\x20for\x20native\x20pixels.\x0a\x20\x20\x20*\x20@return\x20{boolean}\x20true\x20if\x20the\x20canvas\x20was\x20resized.\x0a\x20\x20\x20*\x20@memberOf\x20module:webgl-utils\x0a\x20\x20\x20*/\x0a\x20\x20function\x20resizeCanvasToDisplaySize(canvas,\x20multiplier)\x20{\x0a\x20\x20\x20\x20multiplier\x20=\x20multiplier\x20||\x201;\x0a\x20\x20\x20\x20const\x20width\x20\x20=\x20canvas.clientWidth\x20\x20*\x20multiplier\x20|\x200;\x0a\x20\x20\x20\x20const\x20height\x20=\x20canvas.clientHeight\x20*\x20multiplier\x20|\x200;\x0a\x20\x20\x20\x20if\x20(canvas.width\x20!==\x20width\x20||\x20\x20canvas.height\x20!==\x20height)\x20{\x0a\x20\x20\x20\x20\x20\x20canvas.width\x20\x20=\x20width;\x0a\x20\x20\x20\x20\x20\x20canvas.height\x20=\x20height;\x0a\x20\x20\x20\x20\x20\x20return\x20true;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20false;\x0a\x20\x20}\x0a\x0a\x20\x20return\x20{\x0a\x20\x20\x20\x20createProgram:\x20createProgram,\x0a\x20\x20\x20\x20createProgramFromScripts:\x20createProgramFromScripts,\x0a\x20\x20\x20\x20createProgramFromSources:\x20createProgramFromSources,\x0a\x20\x20\x20\x20resizeCanvasToDisplaySize:\x20resizeCanvasToDisplaySize,\x0a\x20\x20};\x0a\x0a}));\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0aconst\x20BB\x20=\x20{MAX_LOGOS:4};\x20\x0a\x0a//temprorary\x20it\x20is\x20here.\x20Cannot\x20transfer\x20it\x20from\x20main\x20thread\x0aBB.Utils\x20=\x20(()\x20=>\x20{\x0a\x09const\x20padZero\x20=\x20(num)\x20=>\x20{\x0a\x09\x09return\x20num.toString().padStart(2,\x20\x270\x27);\x0a\x09}\x0a\x09const\x20TimeCodesFramesTranslator\x20=\x20(()\x20=>\x20{\x0a\x09\x09const\x20printTimecode\x20=\x20(timecode,\x20duplicated,\x20dot2)\x20=>\x20{\x0a\x09\x09\x09let\x20str\x20=\x20\x22\x22;\x0a\x09\x09\x09if\x20(Array.isArray(timecode))\x20{\x0a\x09\x09\x09\x09str\x20=\x20[\x0a\x09\x09\x09\x09\x09padZero(timecode[0]),\x0a\x09\x09\x09\x09\x09padZero(timecode[1]),\x0a\x09\x09\x09\x09\x09padZero(timecode[2]),\x0a\x09\x09\x09\x09\x09padZero(timecode[3])\x0a\x09\x09\x09\x09\x20\x20].join(\x27:\x27);\x0a\x09\x09\x09\x09if\x20(dot2==true){\x0a\x09\x09\x09\x09\x09if(timecode[4]==1\x20&&\x20(duplicated\x20===\x20undefined\x20||\x20duplicated))\x0a\x09\x09\x09\x09\x09\x09str\x20+=\x20\x22.2\x22;\x0a\x09\x09\x09\x09\x09else\x0a\x09\x09\x09\x09\x09\x09str\x20+=\x20\x22.1\x22;\x0a\x09\x09\x09\x09}\x0a\x09\x09\x09\x09else{\x0a\x09\x09\x09\x09\x09if(timecode[4]==1\x20&&\x20(duplicated\x20===\x20undefined\x20||\x20duplicated))\x0a\x09\x09\x09\x09\x09\x09str\x20+=\x20\x22.1\x22;\x0a\x09\x09\x09\x09}\x0a\x09\x09\x09}\x0a\x09\x09\x09else\x20{\x0a\x09\x09\x09\x09const\x20delimiter\x20=\x20\x22:\x22;\x0a\x09\x09\x09\x09str\x20=\x20(\x220\x22\x20+\x20timecode.h).slice(-2)\x20+\x20delimiter\x20+\x20(\x220\x22\x20+\x20timecode.m).slice(-2)\x20+\x20delimiter\x20+\x20(\x220\x22\x20+\x20timecode.s).slice(-2)\x20+\x20delimiter\x20+\x20(\x220\x22\x20+\x20timecode.f).slice(-2);\x0a\x09\x09\x09\x09if\x20(duplicated)\x20str\x20+=\x20\x22.\x22\x20+\x20(timecode.field\x20?\x20\x221\x22\x20:\x20\x222\x22);\x0a\x09\x09\x09}\x0a\x09\x09\x20\x20\x0a\x09\x09\x09return\x20str;\x0a\x09\x09}\x0a\x0a\x09\x09const\x20timeCodeStr2TimeCodeArray\x20=\x20(timecodeStr)\x20=>\x20{\x0a\x09\x09\x09let\x20tokens\x20=\x20timecodeStr.split(\x22:\x22);\x0a\x09\x09\x09if\x20(tokens.length\x20!=\x204)\x20{\x0a\x09\x09\x09\x09console.error(\x22timeCodeStr2TimeCodeArray:\x20Failed\x20to\x20parse\x20\x22\x20+\x20timecodeStr);\x0a\x09\x09\x09\x09return\x20[0,0,0,0,0];\x0a\x09\x09\x09}\x0a\x09\x09\x09let\x20timeCodeArray\x20=\x20[\x0a\x09\x09\x09\x09parseInt(tokens[0]),//hours\x0a\x09\x09\x09\x09parseInt(tokens[1]),//minutes\x0a\x09\x09\x09\x09parseInt(tokens[2])];//seconds\x0a\x09\x09\x09if\x20(tokens[3].indexOf(\x22.\x22)\x20>=\x200)\x20{\x0a\x09\x09\x09\x09let\x20framesAndField\x20=\x20tokens[3].split(\x22.\x22);\x0a\x09\x09\x09\x09timeCodeArray.push(parseInt(framesAndField[0]));//frames\x0a\x09\x09\x09\x09timeCodeArray.push(parseInt(framesAndField[1]));//field\x0a\x09\x09\x09}\x0a\x09\x09\x09else\x20{\x0a\x09\x09\x09\x09timeCodeArray.push(parseInt(tokens[3]));//frames\x0a\x09\x09\x09\x09timeCodeArray.push(0);//field\x0a\x09\x09\x09}\x0a\x09\x09\x09return\x20timeCodeArray;\x0a\x09\x09}\x0a\x0a\x0a\x09\x09const\x20Timecode2Frames\x20=\x20(timecode,\x20fps,\x20duplicated)\x20=>\x20{\x20//timecode\x20[hh,mm,ss,ff,.1]\x20//.1=\x201|0,\x20fps\x20(60,59.94,30.29.96),\x20duplicated\x20(true|false)\x0a\x09\x09\x09//\x20finding\x20counting\x20fps\x20and\x20dropped\x20frames\x0a\x09\x09\x09let\x20countingFps=60;\x0a\x09\x09\x09let\x20dropFrames=0;\x0a\x09\x09\x09if\x20(Math.floor(fps)==60)\x20\x0a\x09\x09\x09{\x0a\x09\x09\x09\x09countingFps\x20=\x2060;\x0a\x09\x09\x09\x09dropFrames=0;\x0a\x09\x09\x09}\x0a\x09\x09\x09else\x20if\x20(Math.floor(fps)==59)\x20\x0a\x09\x09\x09{\x0a\x09\x09\x09\x09countingFps\x20=\x2060;\x0a\x09\x09\x09\x09dropFrames=4;\x0a\x09\x09\x09}\x0a\x09\x09\x09else\x20if\x20(Math.floor(fps)==30)\x20\x0a\x09\x09\x09{\x0a\x09\x09\x09\x09countingFps\x20=\x2030;\x0a\x09\x09\x09\x09dropFrames=0;\x0a\x09\x09\x09}\x0a\x09\x09\x09else\x20if\x20(Math.floor(fps)==29)\x20\x0a\x09\x09\x09{\x0a\x09\x09\x09\x09countingFps\x20=\x2030;\x0a\x09\x09\x09\x09dropFrames=2;\x0a\x09\x09\x09}\x0a\x09\x09\x09let\x20result=0;\x0a\x09\x09\x09let\x20framesPerMinute\x20=\x20Math.floor(fps*60);\x20//3600|3596|1800|1798\x0a\x09\x09\x09let\x20framesPer10Minutes\x20=\x20Math.floor(fps*60*10);\x20//36000|35964|18000|17982\x20\x0a\x09\x09\x09let\x20framesPerHour\x20=\x20framesPer10Minutes*6;\x0a\x09\x09\x09let\x20hh=timecode[0];\x0a\x09\x09\x09let\x20mm=timecode[1];\x0a\x09\x09\x09let\x20ss=timecode[2];\x0a\x09\x09\x09let\x20ff=timecode[3];\x0a\x09\x09\x09let\x20dotOne\x20=\x20timecode[4];//(timecode[4]==0)?false:true;\x0a\x09\x09\x09result\x20+=\x20hh*framesPerHour;\x0a\x09\x09\x09result\x20+=\x20mm*(countingFps*60);\x0a\x09\x09\x09result\x20+=\x20ss*countingFps;\x0a\x09\x09\x09if\x20(duplicated)\x0a\x09\x09\x09\x09result\x20+=\x20ff\x20*\x202\x20+\x20dotOne;\x0a\x09\x09\x09else\x0a\x09\x09\x09\x09result\x20+=\x20ff;\x0a\x09\x09\x09result\x20-=\x20dropFrames*(mm);\x0a\x09\x09\x09result\x20+=\x20dropFrames*(Math.floor(mm/10));//drop\x20Frames\x20on\x20every\x20minute\x20exept\x20every\x2010th\x0a\x09\x09\x09return\x20result;\x0a\x09\x09}\x0a\x0a\x09\x09const\x20Frames2Timecode\x20=\x20(frames,\x20fps,\x20duplicated)\x20=>\x20{\x20//timecode\x20[hh,mm,ss,ff,.1]\x20//.1=\x201|0,\x20fps\x20(60,59.94,30.29.96),\x20duplicated\x20(true|false)\x0a\x09\x09\x09\x0a\x09\x09\x09\x09//\x20finding\x20counting\x20fps\x20and\x20dropped\x20frames\x0a\x09\x09\x09let\x20countingFps=60;\x0a\x09\x09\x09let\x20dropFrames=0;\x0a\x09\x09\x09if\x20(Math.floor(fps)==60)\x20\x0a\x09\x09\x09{\x0a\x09\x09\x09\x09countingFps\x20=\x2060;\x0a\x09\x09\x09\x09dropFrames=0;\x0a\x09\x09\x09}\x0a\x09\x09\x09else\x20if\x20(Math.floor(fps)==59)\x20\x0a\x09\x09\x09{\x0a\x09\x09\x09\x09countingFps\x20=\x2060;\x0a\x09\x09\x09\x09dropFrames=4;\x0a\x09\x09\x09}\x0a\x09\x09\x09else\x20if\x20(Math.floor(fps)==30)\x20\x0a\x09\x09\x09{\x0a\x09\x09\x09\x09countingFps\x20=\x2030;\x0a\x09\x09\x09\x09dropFrames=0;\x0a\x09\x09\x09}\x0a\x09\x09\x09else\x20if\x20(Math.floor(fps)==29)\x20\x0a\x09\x09\x09{\x0a\x09\x09\x09\x09countingFps\x20=\x2030;\x0a\x09\x09\x09\x09dropFrames=2;\x0a\x09\x09\x09}\x0a\x09\x09\x09let\x20result=0;\x0a\x09\x09\x09let\x20framesPerMinute\x20=\x20Math.floor(fps*60);\x20//3600|3596|1800|1798\x0a\x09\x09\x09let\x20framesPer10Minutes\x20=\x20Math.floor(fps*60*10)\x20//36000|35964|18000|17982\x0a\x09\x09\x09let\x20framesPerHour\x20=\x20framesPer10Minutes*6;\x0a\x09\x09\x09\x0a\x09\x09\x09let\x20framesLeft=frames;\x0a\x09\x09\x09let\x20hh\x20=\x20Math.floor(framesLeft\x20/\x20framesPerHour);\x0a\x09\x09\x09framesLeft-=hh*framesPerHour;\x0a\x09\x09\x09let\x20mm10\x20=\x20Math.floor(framesLeft\x20/\x20framesPer10Minutes);\x0a\x09\x09\x09\x0a\x09\x09\x09framesLeft-=mm10*framesPer10Minutes;\x0a\x09\x09\x09\x0a\x09\x09\x09if\x20(framesLeft\x20>=\x20countingFps*60)\x20//3600\x20(in\x2059.94fps)\x0a\x09\x09\x09\x09framesLeft+=\x20dropFrames*(Math.floor((framesLeft-countingFps*60)/framesPerMinute)+1);\x20//3600\x20/3596\x20(in\x2059.94fps)\x0a\x09\x09\x09\x0a\x09\x09\x09//framesLeft-=\x20Math.floor(framesLeft\x20/\x20framesPerMinute)*(dropFrames)\x0a\x09\x09\x09\x0a\x09\x09\x09let\x20mm\x20=\x20Math.floor(framesLeft\x20/\x20(countingFps*60));\x20//3600\x20(in\x2059.94fps)\x0a\x09\x09\x09\x20\x0a\x09\x09\x09framesLeft-=mm*(countingFps*60);\x20//3600\x20(in\x2059.94fps)\x0a\x0a\x09\x09\x09let\x20ss\x20=\x20Math.floor((framesLeft)\x20/\x20countingFps);\x0a\x09\x09\x09framesLeft-=ss*countingFps;\x0a\x09\x09\x09let\x20ff\x20=\x20framesLeft;\x0a\x09\x09\x09mm+=mm10*10;\x0a\x09\x09\x09\x0a\x09\x09\x09dotOne=0;\x0a\x09\x09\x09if\x20(duplicated)\x0a\x09\x09\x09{\x0a\x09\x09\x09\x09dotOne\x20=\x20ff\x20%\x202;\x0a\x09\x09\x09\x09ff=Math.floor(ff/2);\x0a\x09\x09\x09}\x0a\x09\x09\x09let\x20returnTimecode\x20=\x20[hh,mm,ss,ff,dotOne];\x0a\x09\x09\x09return\x20returnTimecode;\x0a\x0a\x09\x09}\x0a\x0a\x09\x09const\x20TimeCodeAddFrames\x20=\x20(tc,\x20framesToAdd,\x20fps)\x20=>\x20{\x0a\x09\x09\x09let\x20duplicated\x20=\x20fps\x20>\x2030;\x0a\x09\x09\x09let\x20frames\x20=\x20Timecode2Frames(tc,\x20fps,\x20duplicated);\x0a\x09\x09\x09frames\x20+=\x20framesToAdd;\x0a\x09\x09\x09return\x20Frames2Timecode(frames,\x20fps,\x20duplicated);\x0a\x09\x09}\x0a\x0a\x09\x09const\x20TimeCodeArray2TimeCodeJson\x20=\x20(timeCodeArray)\x20=>\x20{\x0a\x09\x09\x09return\x20{h:timeCodeArray[0],m:timeCodeArray[1],s:timeCodeArray[2],f:timeCodeArray[3],field:timeCodeArray[4]};\x0a\x09\x09}\x0a\x0a\x09\x09const\x20timeDate2TCString\x20=\x20\x20(timeDate,\x20fps)\x20=>\x20{\x0a\x09\x09\x09let\x20tc\x20=\x20BB.Utils.timeDate2TC(timeDate,fps);\x0a\x09\x09\x09//didn\x27t\x20check\x20new\x20version\x0a\x09\x09\x09if\x20(fps>59){\x0a\x09\x09\x09\x09return\x20BB.Utils.TimeCodesFramesTranslator.printTimecode(tcFromMessage,true);\x0a\x09\x09\x09}\x0a\x09\x09\x09else{\x0a\x09\x09\x09\x09return\x20BB.Utils.TimeCodesFramesTranslator.printTimecode(tcFromMessage,false);\x0a\x09\x09\x09}\x0a\x09\x09\x09//--------------\x0a\x09\x09\x09//old\x0a\x09\x09\x09let\x20platform\x20=\x20BB.Utils.Platform;\x0a\x09\x09\x09\x0a\x09\x09\x09let\x20timeStampStr\x20=\x20\x22\x22;\x0a\x09\x09\x09if\x20(platform.isApple()){\x0a\x09\x09\x09\x09timeStampStr\x20=\x20timeDate;\x0a\x09\x09\x09}else{\x0a\x09\x09\x09\x09timeStampStr\x20=\x20timeDate.toISOString();\x0a\x09\x09\x09}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20timeStr\x20=\x20timeStampStr.split(\x22T\x22)[1];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20arr1\x20=\x20timeStr.split(\x22:\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20hrs\x20=\x20parseInt(arr1[0]);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20mins\x20=\x20parseInt(arr1[1]);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20arr2\x20=\x20arr1[2].split(\x22.\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20secs\x20=\x20parseInt(arr2[0]);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20msec\x20=\x20parseInt(arr2[1].substring(0,\x203));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20frames\x20=\x20Math.round(((msec\x20/\x201000)\x20*\x20fps)\x20/*+\x200.45*/);\x0a\x09\x09\x09if\x20(fps>59){\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20field\x20=\x20(frames\x20%\x202\x20==\x200\x20?\x201\x20:\x202);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20frames\x20=\x20Math.floor(frames\x20/\x202);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20str\x20=\x20hrs.toString().padStart(2,\x20\x270\x27)\x20+\x20\x22:\x22\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20mins.toString().padStart(2,\x20\x270\x27)\x20+\x20\x22:\x22\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20secs.toString().padStart(2,\x20\x270\x27)\x20+\x20\x22:\x22\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20frames.toString().padStart(2,\x20\x270\x27)\x20+\x20\x22.\x22\x20+\x20field.toString();\x0a\x09\x09\x09\x09return\x20str;\x0a\x09\x09\x09}\x0a\x09\x09\x09else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20str\x20=\x20hrs.toString().padStart(2,\x20\x270\x27)\x20+\x20\x22:\x22\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20mins.toString().padStart(2,\x20\x270\x27)\x20+\x20\x22:\x22\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20secs.toString().padStart(2,\x20\x270\x27)\x20+\x20\x22:\x22\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20frames.toString().padStart(2,\x20\x270\x27);\x0a\x09\x09\x09\x09return\x20str;\x0a\x09\x09\x09}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20str;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x09\x0a\x09\x09const\x20timeDate2TC\x20=\x20\x20(timeDate,\x20fps)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20platform\x20=\x20BB.Utils.Platform;\x0a\x09\x09\x09let\x20timeStampStr\x20=\x20\x22\x22;\x0a\x09\x09\x09if\x20(platform.isApple()){\x0a\x09\x09\x09\x09timeStampStr\x20=\x20timeDate;\x0a\x09\x09\x09}else{\x0a\x09\x09\x09\x09timeStampStr\x20=\x20timeDate.toISOString();\x0a\x09\x09\x09}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20timeStr\x20=\x20timeStampStr.split(\x22T\x22)[1];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20arr1\x20=\x20timeStr.split(\x22:\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20hrs\x20=\x20parseInt(arr1[0]);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20mins\x20=\x20parseInt(arr1[1]);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20arr2\x20=\x20arr1[2].split(\x22.\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20secs\x20=\x20parseInt(arr2[0]);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20msec\x20=\x20parseInt(arr2[1].substring(0,\x203));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//let\x20frames\x20=\x20Math.round(((msec\x20/\x201000)\x20*\x20fps)+0.02\x20/*+\x200.45*/);\x0a\x09\x09if\x20(fps>59){\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//let\x20field\x20=\x20(frames\x20%\x202\x20==\x200\x20?\x201\x20:\x202);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//frames\x20=\x20Math.floor(frames\x20/\x202);\x0a\x09\x09\x09\x09//let\x20returnTimecode\x20=\x20[hrs,mins,secs,frames,field-1];\x0a\x09\x09\x09\x09let\x20allFrames\x20=\x20Math.round((msec/1000+secs+mins*60+hrs*60*60)*fps);\x0a\x09\x09\x09\x09let\x20returnTimecode\x20=\x20BB.Utils.TimeCodesFramesTranslator.Frames2Timecode(allFrames,fps,true);\x0a\x09\x09\x09\x09return\x20returnTimecode;\x0a\x09\x09\x09}\x0a\x09\x09\x09else\x0a\x09\x09\x09{\x0a\x09\x09\x09\x09//let\x20returnTimecode\x20=\x20[hrs,mins,secs,frames,0];\x0a\x09\x09\x09\x09//let\x20returnTimecode\x20=\x20BB.Utils.TimeCodesFramesTranslator.Frames2Timecode(frames+secs*fps+mins*fps*60+hrs*fps*60*60,fps,false);\x0a\x09\x09\x09\x09let\x20allFrames\x20=\x20Math.round((msec/1000+secs+mins*60+hrs*60*60)*fps);\x0a\x09\x09\x09\x09let\x20returnTimecode\x20=\x20BB.Utils.TimeCodesFramesTranslator.Frames2Timecode(allFrames,fps,false);\x0a\x09\x09\x09\x09return\x20returnTimecode;\x0a\x09\x09\x09}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x0a\x09\x09return\x20{\x0a\x09\x09\x09printTimecode:printTimecode,\x0a\x09\x09\x09timeCodeStr2TimeCodeArray:timeCodeStr2TimeCodeArray,\x0a\x09\x09\x09Timecode2Frames:Timecode2Frames,\x0a\x09\x09\x09Frames2Timecode:Frames2Timecode,\x0a\x09\x09\x09TimeCodeAddFrames:TimeCodeAddFrames,\x0a\x09\x09\x09TimeCodeArray2TimeCodeJson:TimeCodeArray2TimeCodeJson,\x0a\x09\x09\x09timeDate2TCString:timeDate2TCString,\x0a\x09\x09\x09timeDate2TC:timeDate2TC\x0a\x09\x09};\x0a\x09\x09\x0a\x09})();\x0a\x0a\x09const\x20MedianCalculator\x20=\x20(maxSize_)\x20=>\x20{\x0a\x09\x09let\x20maxSize\x20=\x20maxSize_\x20||\x209999999999;\x0a\x09\x09let\x20values\x20=\x20[];\x0a\x09\x09let\x20count\x20=\x200;\x0a\x09\x09\x0a\x09\x09const\x20add\x20=\x20(value)\x20=>\x20{\x0a\x09\x09\x09++count;\x0a\x09\x09\x09values.push(value);\x0a\x09\x09\x09while\x20(values.length\x20>\x20maxSize)\x20values.shift();\x0a\x09\x09};\x0a\x09\x09const\x20getMedian\x20=\x20()\x20=>\x20{\x0a\x09\x09\x09if\x20(values.length\x20==\x200)\x20return\x20-1;\x0a\x09\x09\x09let\x20sortedValues\x20=\x20Array.from(values).sort((a,b)\x20=>\x20{\x20return\x20a\x20-\x20b;\x20});\x0a\x09\x09\x09return\x20sortedValues[parseInt(sortedValues.length/2)];\x0a\x09\x09};\x0a\x09\x09const\x20howMany\x20=\x20()\x20=>\x20{\x0a\x09\x09\x09return\x20count;\x0a\x09\x09};\x0a\x09\x09\x0a\x09\x09return\x20{\x0a\x09\x09\x09add,\x0a\x09\x09\x09getMedian,\x0a\x09\x09\x09howMany\x0a\x09\x09};\x0a\x09};\x0a\x0a//todo:\x20make\x20it\x20use\x20one\x20function.\x20Now\x20they\x20are\x20similar\x0a\x09const\x20Platform\x20=\x20(()\x20=>\x20{\x0a\x09\x09const\x20getCurrentPlatform\x20=\x20()\x20=>\x20{\x0a\x09\x09\x09const\x20userAgent\x20=\x20navigator.userAgent;\x0a\x09\x09\x09if\x20(/windows/i.test(userAgent))\x20{\x0a\x09\x09\x09\x09return\x20\x27Windows\x27;\x0a\x09\x09\x09}\x20else\x20if\x20(/android/i.test(userAgent))\x20{\x0a\x09\x09\x09\x09return\x20\x27Android\x27;\x0a\x09\x09\x09}\x20else\x20if\x20(/iphone|ipad|ipod/i.test(userAgent))\x20{\x0a\x09\x09\x09\x09return\x20\x27iOS\x27;\x0a\x09\x09\x09}\x20else\x20if\x20(/mac/i.test(userAgent))\x20{\x0a\x09\x09\x09\x09return\x20\x27Mac\x27;\x20//tmp\x20alal\x0a\x09\x09\x09\x09let\x20isIPadAnyhow\x20=\x20\x27ontouchstart\x27\x20in\x20window\x20||\x20navigator.maxTouchPoints\x20>\x200\x20||\x20navigator.msMaxTouchPoints\x20>\x200;\x0a\x09\x09\x09\x09if\x20(isIPadAnyhow)\x20return\x20\x27iPad\x27;\x0a\x09\x09\x09\x09else\x20return\x20\x27Mac\x27;\x0a\x09\x09\x09}\x20else\x20if\x20(/ipad/i.test(userAgent))\x20{\x0a\x09\x09\x09\x09return\x20\x27iPad\x27;\x0a\x09\x09\x09}\x20else\x20{\x0a\x09\x09\x09\x09return\x20\x27Something\x20else\x27;\x0a\x09\x09\x09}\x0a\x09\x09}\x0a\x09\x09const\x20isMac\x20=\x20()\x20=>\x20{\x0a\x09\x09\x09let\x20platform\x20=\x20getCurrentPlatform();\x0a\x09\x09\x09return\x20platform\x20==\x27Mac\x27;\x0a\x09\x09};\x0a\x09\x09const\x20isiPad\x20=\x20()\x20=>\x20{\x0a\x09\x09\x09let\x20platform\x20=\x20getCurrentPlatform();\x0a\x09\x09\x09return\x20platform\x20==\x27iPad\x27;\x0a\x09\x09};\x0a\x09\x09const\x20isiPhone\x20=\x20()\x20=>\x20{\x0a\x09\x09\x09let\x20platform\x20=\x20getCurrentPlatform();\x0a\x09\x09\x09return\x20platform\x20==\x27iOS\x27;\x0a\x09\x09};\x0a\x09\x09const\x20isApple\x20=\x20()\x20=>\x20{\x0a\x09\x09\x09let\x20platform\x20=\x20getCurrentPlatform();\x0a\x09\x09\x09return\x20platform\x20==\x20\x27iOS\x27\x20||\x20platform\x20==\x20\x27Mac\x27\x20||\x20platform\x20==\x20\x27iPad\x27;\x0a\x09\x09}\x0a\x09\x09const\x20isWindows\x20=\x20()\x20=>\x20{\x0a\x09\x09\x09//return\x20true;\x0a\x09\x09\x09let\x20platform\x20=\x20getCurrentPlatform();\x0a\x09\x09\x09return\x20platform\x20==\x20\x27Windows\x27;\x0a\x09\x09}\x0a\x09\x09const\x20isAndroid\x20=\x20()\x20=>\x20{\x0a\x09\x09\x09let\x20platform\x20=\x20getCurrentPlatform();\x0a\x09\x09\x09return\x20platform\x20==\x20\x27Android\x27;\x0a\x09\x09}\x0a\x09\x09const\x20getDeviceDescription\x20=\x20()\x20=>\x20{\x0a\x09\x09\x09let\x20deviceType\x20=\x20getCurrentPlatform();\x0a\x09\x09\x09if\x20(deviceType\x20==\x20\x27Windows\x27)\x20return\x20\x22a\x20Windows\x20PC\x22;\x0a\x09\x09\x09else\x20if\x20(deviceType\x20==\x20\x27Android\x27)\x20return\x20\x22an\x20Android\x20phone\x22;\x0a\x09\x09\x09else\x20if\x20(deviceType\x20==\x20\x27iOS\x27)\x20return\x20\x22an\x20iPhone\x22;\x0a\x09\x09\x09else\x20if\x20(deviceType\x20==\x20\x27Mac\x27)\x20return\x20\x22a\x20Mac\x22;\x0a\x09\x09\x09else\x20if\x20(deviceType\x20==\x20\x27iPad\x27)\x20return\x20\x22an\x20iPad\x22;\x0a\x09\x09\x09else\x20return\x20\x22an\x20Unknown\x20device\x22;\x0a\x09\x09};\x0a\x09\x09const\x20getDeviceName\x20=\x20()\x20=>\x20{\x0a\x09\x09\x09let\x20module\x20=\x20{\x0a\x09\x09\x09\x09options:\x20[],\x0a\x09\x09\x09\x09header:\x20[navigator.platform,\x20navigator.userAgent,\x20navigator.appVersion,\x20navigator.vendor,\x20window.opera],\x0a\x09\x09\x09\x09dataos:\x20[\x0a\x09\x09\x09\x09\x09{\x20name:\x20\x27Windows\x20Phone\x27,\x20value:\x20\x27Windows\x20Phone\x27,\x20version:\x20\x27OS\x27\x20},\x0a\x09\x09\x09\x09\x09{\x20name:\x20\x27Windows\x27,\x20value:\x20\x27Win\x27,\x20version:\x20\x27NT\x27\x20},\x0a\x09\x09\x09\x09\x09{\x20name:\x20\x27iPhone\x27,\x20value:\x20\x27iPhone\x27,\x20version:\x20\x27OS\x27\x20},\x0a\x09\x09\x09\x09\x09{\x20name:\x20\x27iPad\x27,\x20value:\x20\x27iPad\x27,\x20version:\x20\x27OS\x27\x20},\x0a\x09\x09\x09\x09\x09{\x20name:\x20\x27Kindle\x27,\x20value:\x20\x27Silk\x27,\x20version:\x20\x27Silk\x27\x20},\x0a\x09\x09\x09\x09\x09{\x20name:\x20\x27Android\x27,\x20value:\x20\x27Android\x27,\x20version:\x20\x27Android\x27\x20},\x0a\x09\x09\x09\x09\x09{\x20name:\x20\x27PlayBook\x27,\x20value:\x20\x27PlayBook\x27,\x20version:\x20\x27OS\x27\x20},\x0a\x09\x09\x09\x09\x09{\x20name:\x20\x27BlackBerry\x27,\x20value:\x20\x27BlackBerry\x27,\x20version:\x20\x27/\x27\x20},\x0a\x09\x09\x09\x09\x09{\x20name:\x20\x27Macintosh\x27,\x20value:\x20\x27Mac\x27,\x20version:\x20\x27OS\x20X\x27\x20},\x0a\x09\x09\x09\x09\x09{\x20name:\x20\x27Linux\x27,\x20value:\x20\x27Linux\x27,\x20version:\x20\x27rv\x27\x20},\x0a\x09\x09\x09\x09\x09{\x20name:\x20\x27Palm\x27,\x20value:\x20\x27Palm\x27,\x20version:\x20\x27PalmOS\x27\x20}\x0a\x09\x09\x09\x09],\x0a\x09\x09\x09\x09databrowser:\x20[\x0a\x09\x09\x09\x09\x09{\x20name:\x20\x27Chrome\x27,\x20value:\x20\x27Chrome\x27,\x20version:\x20\x27Chrome\x27\x20},\x0a\x09\x09\x09\x09\x09{\x20name:\x20\x27Firefox\x27,\x20value:\x20\x27Firefox\x27,\x20version:\x20\x27Firefox\x27\x20},\x0a\x09\x09\x09\x09\x09{\x20name:\x20\x27Safari\x27,\x20value:\x20\x27Safari\x27,\x20version:\x20\x27Version\x27\x20},\x0a\x09\x09\x09\x09\x09{\x20name:\x20\x27Internet\x20Explorer\x27,\x20value:\x20\x27MSIE\x27,\x20version:\x20\x27MSIE\x27\x20},\x0a\x09\x09\x09\x09\x09{\x20name:\x20\x27Opera\x27,\x20value:\x20\x27Opera\x27,\x20version:\x20\x27Opera\x27\x20},\x0a\x09\x09\x09\x09\x09{\x20name:\x20\x27BlackBerry\x27,\x20value:\x20\x27CLDC\x27,\x20version:\x20\x27CLDC\x27\x20},\x0a\x09\x09\x09\x09\x09{\x20name:\x20\x27Mozilla\x27,\x20value:\x20\x27Mozilla\x27,\x20version:\x20\x27Mozilla\x27\x20}\x0a\x09\x09\x09\x09],\x0a\x09\x09\x09\x09init:\x20function\x20()\x20{\x0a\x09\x09\x09\x09\x09let\x20agent\x20=\x20this.header.join(\x27\x20\x27),\x0a\x09\x09\x09\x09\x09\x09os\x20=\x20this.matchItem(agent,\x20this.dataos),\x0a\x09\x09\x09\x09\x09\x09browser\x20=\x20this.matchItem(agent,\x20this.databrowser);\x0a\x09\x09\x09\x09\x09\x0a\x09\x09\x09\x09\x09return\x20{\x20os:\x20os,\x20browser:\x20browser\x20};\x0a\x09\x09\x09\x09},\x0a\x09\x09\x09\x09matchItem:\x20function\x20(string,\x20data)\x20{\x0a\x09\x09\x09\x09\x09let\x20i\x20=\x200,\x0a\x09\x09\x09\x09\x09\x09j\x20=\x200,\x0a\x09\x09\x09\x09\x09\x09html\x20=\x20\x27\x27,\x0a\x09\x09\x09\x09\x09\x09regex,\x0a\x09\x09\x09\x09\x09\x09regexv,\x0a\x09\x09\x09\x09\x09\x09match,\x0a\x09\x09\x09\x09\x09\x09matches,\x0a\x09\x09\x09\x09\x09\x09version;\x0a\x09\x09\x09\x09\x09\x0a\x09\x09\x09\x09\x09for\x20(i\x20=\x200;\x20i\x20<\x20data.length;\x20i\x20+=\x201)\x20{\x0a\x09\x09\x09\x09\x09\x09regex\x20=\x20new\x20RegExp(data[i].value,\x20\x27i\x27);\x0a\x09\x09\x09\x09\x09\x09match\x20=\x20regex.test(string);\x0a\x09\x09\x09\x09\x09\x09if\x20(match)\x20{\x0a\x09\x09\x09\x09\x09\x09\x09regexv\x20=\x20new\x20RegExp(data[i].version\x20+\x20\x27[-\x20/:;]([\x5cd._]+)\x27,\x20\x27i\x27);\x0a\x09\x09\x09\x09\x09\x09\x09matches\x20=\x20string.match(regexv);\x0a\x09\x09\x09\x09\x09\x09\x09version\x20=\x20\x27\x27;\x0a\x09\x09\x09\x09\x09\x09\x09if\x20(matches)\x20{\x20if\x20(matches[1])\x20{\x20matches\x20=\x20matches[1];\x20}\x20}\x0a\x09\x09\x09\x09\x09\x09\x09if\x20(matches)\x20{\x0a\x09\x09\x09\x09\x09\x09\x09\x09matches\x20=\x20matches.split(/[._]+/);\x0a\x09\x09\x09\x09\x09\x09\x09\x09for\x20(j\x20=\x200;\x20j\x20<\x20matches.length;\x20j\x20+=\x201)\x20{\x0a\x09\x09\x09\x09\x09\x09\x09\x09\x09if\x20(j\x20===\x200)\x20{\x0a\x09\x09\x09\x09\x09\x09\x09\x09\x09\x09version\x20+=\x20matches[j]\x20+\x20\x27.\x27;\x0a\x09\x09\x09\x09\x09\x09\x09\x09\x09}\x20else\x20{\x0a\x09\x09\x09\x09\x09\x09\x09\x09\x09\x09version\x20+=\x20matches[j];\x0a\x09\x09\x09\x09\x09\x09\x09\x09\x09}\x0a\x09\x09\x09\x09\x09\x09\x09\x09}\x0a\x09\x09\x09\x09\x09\x09\x09}\x20else\x20{\x0a\x09\x09\x09\x09\x09\x09\x09\x09version\x20=\x20\x270\x27;\x0a\x09\x09\x09\x09\x09\x09\x09}\x0a\x09\x09\x09\x09\x09\x09\x09return\x20{\x0a\x09\x09\x09\x09\x09\x09\x09\x09name:\x20data[i].name,\x0a\x09\x09\x09\x09\x09\x09\x09\x09version:\x20parseFloat(version)\x0a\x09\x09\x09\x09\x09\x09\x09};\x0a\x09\x09\x09\x09\x09\x09}\x0a\x09\x09\x09\x09\x09}\x0a\x09\x09\x09\x09\x09return\x20{\x20name:\x20\x27unknown\x27,\x20version:\x200\x20};\x0a\x09\x09\x09\x09}\x0a\x09\x09\x09};\x0a\x09\x09\x09\x0a\x09\x09\x09let\x20e\x20=\x20module.init();\x0a\x09\x09\x09return\x20e.os.name;\x0a\x09\x09};\x0a\x09\x09const\x20getBrowserName\x20=\x20()\x20=>\x20{\x0a\x09\x09\x09const\x20userAgent\x20=\x20navigator.userAgent;\x0a\x0a\x09\x09\x09if\x20(userAgent.indexOf(\x22Chrome\x22)\x20>\x20-1\x20&&\x20userAgent.indexOf(\x22Edge\x22)\x20===\x20-1)\x20{\x0a\x09\x09\x09\x20\x20return\x20\x22Chrome\x22;\x0a\x09\x09\x09}\x20else\x20if\x20(userAgent.indexOf(\x22Safari\x22)\x20>\x20-1\x20&&\x20userAgent.indexOf(\x22Chrome\x22)\x20===\x20-1)\x20{\x0a\x09\x09\x09\x20\x20return\x20\x22Safari\x22;\x0a\x09\x09\x09}\x20else\x20if\x20(userAgent.indexOf(\x22Firefox\x22)\x20>\x20-1)\x20{\x0a\x09\x09\x09\x20\x20return\x20\x22Firefox\x22;\x0a\x09\x09\x09}\x20else\x20if\x20(userAgent.indexOf(\x22MSIE\x22)\x20>\x20-1\x20||\x20userAgent.indexOf(\x22Trident\x22)\x20>\x20-1)\x20{\x0a\x09\x09\x09\x20\x20return\x20\x22Internet\x20Explorer\x22;\x0a\x09\x09\x09}\x20else\x20if\x20(userAgent.indexOf(\x22Edge\x22)\x20>\x20-1)\x20{\x0a\x09\x09\x09\x20\x20return\x20\x22Edge\x22;\x0a\x09\x09\x09}\x20else\x20{\x0a\x09\x09\x09\x20\x20return\x20\x22Unknown\x22;\x0a\x09\x09\x09}\x0a\x09\x09}\x0a\x09\x09const\x20isSafariMac\x20=\x20()\x20=>\x20{\x0a\x09\x09\x09return\x20(isMac()&&(getBrowserName()\x20==\x20\x22Safari\x22))\x0a\x09\x09}\x0a\x09\x09const\x20isChromeMac\x20=\x20()\x20=>\x20{\x0a\x09\x09\x09return\x20(isMac()&&(getBrowserName()\x20==\x20\x22Chrome\x22))\x0a\x09\x09}\x0a\x09\x09const\x20isChromeWin\x20=\x20()\x20=>\x20{\x0a\x09\x09\x09return\x20(isWindows()&&(getBrowserName()\x20==\x20\x22Chrome\x22))\x0a\x09\x09}\x0a\x09\x09return\x20{\x0a\x09\x09\x09getDeviceName,\x0a\x09\x09\x09getCurrentPlatform,\x0a\x09\x09\x09isApple,\x0a\x09\x09\x09isWindows,\x0a\x09\x09\x09isAndroid,\x0a\x09\x09\x09isMac,\x0a\x09\x09\x09isiPhone,\x0a\x09\x09\x09isiPad,\x0a\x09\x09\x09getDeviceDescription,\x0a\x09\x09\x09getBrowserName,\x0a\x09\x09\x09isSafariMac,\x0a\x09\x09\x09isChromeMac,\x0a\x09\x09\x09isChromeWin\x0a\x09\x09}\x0a\x09})();\x0a\x0a\x09const\x20getMediaTimeFPS\x20=\x20(frameRateMode)\x20=>\x20{\x0a\x09\x09let\x20fps\x20=\x2060;\x0a\x09\x09switch(frameRateMode)\x20{\x0a\x09\x09\x09case\x20BB.FrameRateMode.Src60_MediaTime60:\x20\x0a\x09\x09\x09\x09fps\x20=\x2060;\x0a\x09\x09\x09\x09break;\x0a\x09\x09\x09case\x20BB.FrameRateMode.Src59_MediaTime60:\x0a\x09\x09\x09\x09fps\x20=\x2060;\x0a\x09\x09\x09\x09break;\x0a\x09\x09\x09case\x20BB.FrameRateMode.Src59_MediaTime59:\x0a\x09\x09\x09\x09fps\x20=\x2060000/1001;\x0a\x09\x09\x09\x09break;\x0a\x09\x09\x09case\x20BB.FrameRateMode.Src29_MediaTime29:\x0a\x09\x09\x09\x09fps\x20=\x2030000/1001;\x0a\x09\x09\x09\x09break;\x0a\x09\x09\x09default:\x0a\x09\x09\x09\x09console.error(\x22BB.Utils.getMediaTimeFPS:\x20Unknown\x20FrameRate\x20mode\x22);\x0a\x09\x09\x09\x09break;\x0a\x09\x09};\x0a\x09\x09return\x20fps;\x0a\x09};\x0a\x09const\x20getSourceFPS\x20=\x20(frameRateMode)\x20=>\x20{\x0a\x09\x09let\x20fps\x20=\x2060;\x0a\x09\x09switch(frameRateMode)\x20{\x0a\x09\x09\x09case\x20BB.FrameRateMode.Src60_MediaTime60:\x20\x0a\x09\x09\x09\x09fps\x20=\x2060;\x0a\x09\x09\x09\x09break;\x0a\x09\x09\x09case\x20BB.FrameRateMode.Src59_MediaTime60:\x0a\x09\x09\x09\x09fps\x20=\x2060000/1001;\x0a\x09\x09\x09\x09break;\x0a\x09\x09\x09case\x20BB.FrameRateMode.Src59_MediaTime59:\x0a\x09\x09\x09\x09fps\x20=\x2060000/1001;\x0a\x09\x09\x09\x09break;\x0a\x09\x09\x09case\x20BB.FrameRateMode.Src29_MediaTime29:\x0a\x09\x09\x09\x09fps\x20=\x2030000/1001;\x0a\x09\x09\x09\x09break;\x0a\x09\x09\x09default:\x0a\x09\x09\x09\x09console.error(\x22BB.Utils.getSourceFPS:\x20Unknown\x20FrameRate\x20mode\x22);\x0a\x09\x09\x09\x09break;\x0a\x09\x09};\x0a\x09\x09return\x20fps;\x0a\x09};\x0a\x09const\x20setMediaFPS\x20=\x20(newFPS,\x20options)\x20=>\x20{\x0a\x09\x09const\x20equil\x20=\x20(one,\x20two)\x20=>\x20{\x0a\x09\x09\x09if\x20(Math.abs(one-two)<0.01)\x0a\x09\x09\x09\x09return\x20true;\x0a\x09\x09\x09else\x20\x0a\x09\x09\x09\x09return\x20false;\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09if\x20(equil(newFPS,60)){\x0a\x09\x09\x09if\x20(equil(BB.Utils.getSourceFPS(options.frameRateMode),60))\x0a\x09\x09\x09\x09options.frameRateMode\x20=\x20BB.FrameRateMode.Src60_MediaTime60;\x0a\x09\x09\x09else\x20if(equil(BB.Utils.getSourceFPS(options.frameRateMode),60000/1001))\x0a\x09\x09\x09\x09options.frameRateMode\x20=\x20BB.FrameRateMode.Src59_MediaTime60;\x0a\x09\x09\x09else\x0a\x09\x09\x09\x09console.error(\x22setMediaFPS:\x20Unknown\x20Source\x20FrameRate\x20mode\x22);\x0a\x09\x09}\x0a\x09\x09else\x20if\x20(equil(newFPS,60000/1001)){\x0a\x09\x09\x09if\x20(equil(BB.Utils.getSourceFPS(options.frameRateMode),60))\x0a\x09\x09\x09\x09options.frameRateMode\x20=\x20BB.FrameRateMode.Src60_MediaTime59;\x0a\x09\x09\x09else\x20if(equil(BB.Utils.getSourceFPS(options.frameRateMode),60000/1001))\x0a\x09\x09\x09\x09options.frameRateMode\x20=\x20BB.FrameRateMode.Src59_MediaTime59;\x0a\x09\x09\x09else\x0a\x09\x09\x09\x09console.error(\x22setMediaFPS:\x20Unknown\x20Source\x20FrameRate\x20mode\x22);\x0a\x09\x09}\x0a\x09\x09else\x20if\x20(equil(newFPS,30000/1001)){\x0a\x09\x09\x09if\x20(equil(BB.Utils.getSourceFPS(options.frameRateMode),30000/1001))\x0a\x09\x09\x09\x09options.frameRateMode\x20=\x20BB.FrameRateMode.Src29_MediaTime29;\x0a\x09\x09\x09else\x20\x0a\x09\x09\x09\x09console.error(\x22setMediaFPS:\x20Unknown\x20Source\x20FrameRate\x20mode,\x20fps\x20=\x20\x22\x20+\x20newFPS);\x0a\x09\x09}\x0a\x09\x09else\x0a\x09\x09\x09console.error(\x22setMediaFPS:\x20Unknown\x20Media\x20FrameRate\x20mode\x22);\x0a\x09};\x0a\x0a\x0a\x09const\x20FPSGetter\x20=\x20()\x20=>\x20{\x0a\x0a\x09\x09const\x20possibleFps29_30\x20=\x20[\x0a\x09\x09\x0930000/1001,//29.97\x0a\x09\x09\x0930/1//30,0\x0a\x0a\x09\x09];\x0a\x09\x09const\x20possibleFps59_60\x20=\x20[\x0a\x09\x09\x0960000/1001,//59.94\x0a\x09\x09\x0960/1///60\x0a\x09\x09];\x0a\x09\x09let\x20bestFPSMatches\x20=\x20[];\x0a\x09\x09let\x20deltaStorage\x20=\x20[];\x0a\x09\x09let\x20deltaCount\x20=0;\x0a\x09\x09let\x20lastMediaTimeForFPSGetting\x20=\x20-1;\x0a\x09\x09//let\x20fps\x20=\x2060;\x0a\x09\x09let\x20count\x20=\x200;\x0a\x09\x09const\x20addTime\x20=\x20(mediaTime)\x20=>\x20{\x0a\x09\x09\x09count++;\x0a\x09\x09\x09//let\x20fraction2PossibleFPS\x20=\x20new\x20Map();\x0a\x09\x09\x09let\x20minFraction=999;\x0a\x09\x09\x09let\x20minCandidateFps=0;\x0a\x09\x09\x09if\x20(lastMediaTimeForFPSGetting\x20==\x20-1){\x0a\x09\x09\x09\x09lastMediaTimeForFPSGetting\x20=\x20mediaTime;\x0a\x09\x09\x09\x09return;\x0a\x09\x09\x09}\x0a\x09\x09\x09else\x0a\x09\x09\x09{\x0a\x09\x09\x09\x09let\x20delta\x20=\x20mediaTime\x20-\x20lastMediaTimeForFPSGetting;\x0a\x09\x09\x09\x09if\x20(deltaCount<100){\x0a\x09\x09\x09\x09\x09deltaStorage.push(delta);\x0a\x09\x09\x09\x09\x09deltaCount++;\x0a\x09\x09\x09\x09\x09return;\x0a\x09\x09\x09\x09}\x0a\x09\x09\x09\x09else{\x0a\x09\x09\x09\x09\x09deltaStorage.push(delta);\x0a\x09\x09\x09\x09\x09deltaStorage.shift();\x0a\x09\x09\x09\x09}\x0a\x09\x09\x09\x09let\x20total\x20=\x200;\x0a\x09\x09\x09\x09for(let\x20i\x20=\x200;\x20i\x20<\x20deltaStorage.length;\x20i++)\x20{\x0a\x09\x09\x09\x09\x09total\x20+=\x20deltaStorage[i];\x0a\x09\x09\x09\x09}\x0a\x09\x09\x09\x09delta\x20=\x20total\x20/\x20deltaStorage.length;\x0a\x09\x09\x09\x09//console.log(\x22delta=\x20\x22\x20+\x20\x20delta.toFixed(5)\x20+\x20\x22\x20fps=\x20\x22\x20+\x20(1/delta).toFixed(2));\x0a\x09\x09\x09\x09if\x20((1/delta)\x20<\x2040)\x0a\x09\x09\x09\x09\x09possibleFps\x20=\x20possibleFps29_30;\x20\x0a\x09\x09\x09\x09else\x20\x0a\x09\x09\x09\x09\x09possibleFps\x20=\x20possibleFps59_60;\x0a\x09\x09\x09}\x0a\x09\x09\x09//possibleFps\x20=\x20possibleFps59_60;\x0a\x09\x09\x09lastMediaTimeForFPSGetting\x20=\x20mediaTime;\x0a\x09\x09\x09\x0a\x09\x09\x09for\x20(let\x20i\x20=\x200;\x20i\x20<\x20possibleFps.length;\x20++i)\x20{\x0a\x09\x09\x09\x09let\x20candidateFps\x20=\x20possibleFps[i];\x0a\x09\x09\x09\x09let\x20dblFrame\x20=\x20mediaTime*candidateFps;\x0a\x09\x09\x09\x09let\x20intFrame\x20=\x20Math.round(dblFrame);\x0a\x09\x09\x09\x09let\x20fraction\x20=\x20Math.abs(dblFrame\x20-\x20intFrame);\x0a\x09\x09\x09\x09if\x20(fraction\x20<\x20minFraction)\x0a\x09\x09\x09\x09{\x0a\x09\x09\x09\x09\x09minFraction\x20=\x20fraction;\x0a\x09\x09\x09\x09\x09minCandidateFps\x20=\x20candidateFps;\x0a\x09\x09\x09\x09}\x0a\x09\x09\x09\x09\x09\x0a\x09\x09\x09\x09//fraction2PossibleFPS.set(fraction,\x20candidateFps);\x0a\x09\x09\x09}\x0a\x09\x09\x09let\x20bestFPSMatch\x20=\x20minCandidateFps;//fraction2PossibleFPS.entries().next().value[1];\x0a\x09\x09\x09bestFPSMatches.push(bestFPSMatch);\x0a\x09\x09\x09//console.log(\x22bestFPSMatch\x20=\x20\x22\x20+\x20bestFPSMatch);\x0a\x09\x09\x09if(count>1000)\x0a\x09\x09\x09\x09bestFPSMatches.shift();\x20//deleting\x20the\x20first\x20el\x0a\x09\x09}\x0a\x09\x09const\x20getProbableFPS\x20=\x20()\x20=>\x20{\x0a\x09\x09\x20\x20let\x20count\x20=\x20{};\x0a\x09\x09\x20\x20let\x20mostOccurringValue;\x0a\x09\x09\x20\x20let\x20maxCount\x20=\x200;\x0a\x09\x09\x20\x20\x0a\x09\x09\x20\x20//\x20Count\x20the\x20occurrences\x20of\x20each\x20value\x20in\x20the\x20array\x0a\x09\x09\x20\x20for\x20(let\x20i\x20=\x200;\x20i\x20<\x20bestFPSMatches.length;\x20i++)\x20{\x0a\x09\x09\x09let\x20value\x20=\x20bestFPSMatches[i];\x0a\x09\x09\x09count[value]\x20=\x20(count[value]\x20||\x200)\x20+\x201;\x0a\x09\x09\x09\x0a\x09\x09\x09//\x20Update\x20the\x20most\x20occurring\x20value\x20and\x20its\x20count\x20if\x20necessary\x0a\x09\x09\x09if\x20(count[value]\x20>\x20maxCount)\x20{\x0a\x09\x09\x09\x20\x20mostOccurringValue\x20=\x20value;\x0a\x09\x09\x09\x20\x20maxCount\x20=\x20count[value];\x0a\x09\x09\x09}\x0a\x09\x09\x20\x20}\x0a\x09\x09\x20\x20\x0a\x09\x09\x20\x20return\x20mostOccurringValue;\x0a\x09\x09}\x0a\x0a\x09\x09const\x20howMany\x20=\x20()\x20=>\x20{\x0a\x09\x09\x09\x09return\x20count;\x0a\x09\x09\x09};\x0a\x09\x09\x09\x0a\x09\x09\x09return\x20{\x0a\x09\x09\x09\x09addTime:addTime,\x0a\x09\x09\x09\x09getProbableFPS:getProbableFPS,\x0a\x09\x09\x09\x09howMany:howMany\x0a\x09\x09\x09};\x0a\x09\x09\x09\x0a\x09\x09\x09\x0a\x09\x09};\x0a\x09\x0a\x09return\x20\x20{\x0a\x09\x09TimeCodesFramesTranslator,\x0a\x09\x09MedianCalculator,\x0a\x09\x09Platform,\x0a\x09\x09getMediaTimeFPS,\x0a\x09\x09getSourceFPS,\x0a\x09\x09setMediaFPS,\x0a\x09\x09FPSGetter\x0a\x09}\x0a})();\x0a////////^temp\x20code.\x20Need\x20to\x20transfer\x20from\x20main\x20thread\x0a\x0aBB.Composer3d\x20=\x20class\x20{\x0a\x20\x20\x20\x20constructor(GL,\x20canvas,\x20sourceFPS,renderTimecode/*,\x20videoContainer,video,options*/)\x20{\x0a\x09\x09//BB.Utils\x20=\x20new\x20Function(\x27return\x20\x27\x20+\x20BBUtilsString)();\x0a\x09\x09BB.GL\x20=\x20GL;\x0a\x09\x09this.canvas\x20=\x20canvas;\x0a\x09\x09//let\x20renderTimecode\x20=\x20true;\x20//alal\x0a\x09\x09//this.digitImg\x20=\x20digitImg;\x09\x0a\x09\x09//\x20if\x20(options.augmentation.renderTimecode)\x20{\x0a\x09\x09\x09//\x20this.digitImg\x20=\x20{};\x0a\x09\x09\x09//\x20for\x20(let\x20i\x20=\x200;\x20i\x20<\x2010;\x20++i)\x20{\x0a\x09\x09\x09//\x20\x09let\x20str1\x20=\x20i\x20+\x20\x22.1\x22;\x0a\x09\x09\x09//\x20\x09let\x20str2\x20=\x20i\x20+\x20\x22.2\x22;\x0a\x09\x09\x09//\x20\x09this.digitImg[str1]\x20=\x20this.CreateDigitImg(str1);\x0a\x09\x09\x09//\x20\x09this.digitImg[str2]\x20=\x20this.CreateDigitImg(str2);\x0a\x09\x09\x09//\x20}\x0a\x0a\x09\x09\x09//\x20Function\x20to\x20create\x20ImageBitmap\x20instead\x20of\x20Blob\x0a\x09\x09async\x20function\x20CreateDigitImg2(str)\x20{\x0a\x09\x09\x09let\x20canvas\x20=\x20new\x20OffscreenCanvas(50,\x2050);\x0a\x09\x09\x09let\x20ctx\x20=\x20canvas.getContext(\x272d\x27);\x0a\x0a\x09\x09\x09//\x20Fill\x20the\x20canvas\x20background\x20with\x20black\x0a\x09\x09\x09ctx.fillStyle\x20=\x20\x27black\x27;\x0a\x09\x09\x09ctx.fillRect(0,\x200,\x20canvas.width,\x20canvas.height);\x0a\x0a\x09\x09\x09//\x20Set\x20the\x20font\x20properties\x20and\x20fill\x20with\x20white\x20text\x0a\x09\x09\x09ctx.font\x20=\x20\x2730px\x20Arial\x27;\x0a\x09\x09\x09ctx.fillStyle\x20=\x20\x27white\x27;\x0a\x09\x09\x09ctx.fillText(str,\x2010,\x2035);\x0a\x0a\x09\x09\x09//\x20Convert\x20canvas\x20to\x20ImageBitmap\x20(instead\x20of\x20Blob)\x0a\x09\x09\x09return\x20await\x20canvas.transferToImageBitmap();\x0a\x09\x09}\x0a\x09\x09\x09this.digitImg\x20=\x20{};\x0a\x09\x09\x09for\x20(let\x20i\x20=\x200;\x20i\x20<\x2010;\x20++i)\x20{\x0a\x09\x09\x09\x09let\x20str1\x20=\x20i\x20+\x20\x22.1\x22;\x0a\x09\x09\x09\x09let\x20str2\x20=\x20i\x20+\x20\x22.2\x22;\x0a\x09\x09\x09\x09//\x20Call\x20the\x20async\x20CreateDigitImg\x20and\x20handle\x20the\x20result\x20with\x20.then()\x0a\x09\x09\x09\x09CreateDigitImg2(str1).then(imageBitmap\x20=>\x20{\x0a\x09\x09\x09\x09\x09this.digitImg[str1]\x20=\x20imageBitmap;\x0a\x09\x09\x09\x09});\x0a\x09\x09\x09\x0a\x09\x09\x09\x09CreateDigitImg2(str2).then(imageBitmap\x20=>\x20{\x0a\x09\x09\x09\x09\x09this.digitImg[str2]\x20=\x20imageBitmap;\x0a\x09\x09\x09\x09});\x0a\x09\x09\x09}\x09\x09\x09\x0a\x09\x09//}\x0a\x20\x20\x20\x20\x20\x20\x20\x20//this.options\x20=\x20Object.assign({adLoopTime:5000,isAdLoop:\x20false},options\x20||\x20{});\x0a\x09\x09//this.sourceFPS\x20=\x20BB.Utils.getSourceFPS(this.options.frameRateMode);\x0a\x09\x09this.options\x20=\x20{adLoopTime:5000,isAdLoop:\x20false,\x20sourceFPS:\x20sourceFPS,\x20renderTimecode:\x20renderTimecode};\x0a\x09\x09this.sourceFPS\x20=\x20sourceFPS;//BB.Utils.getSourceFPS(this.options.frameRateMode);\x0a\x20\x20\x20\x20\x20\x20\x20\x20this.metadataArr\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20this.metadataMap\x20=\x20{};\x0a\x20\x20\x20\x20\x20\x20\x20\x20this.videoStarted\x20=\x20false;\x0a\x20\x20\x20\x20\x20\x20\x20\x20this.advertisementMap\x20=\x20{};\x0a\x09\x09this.ad2Url\x20=\x20{};//map\x20an\x20ad\x20to\x20its\x20url\x0a\x09\x09this.videoCopier\x20=\x20null;\x0a\x09\x09//create\x20a\x20webgl\x20canvas:\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20//this.canvas\x20=\x20document.createElement(\x27canvas\x27);\x0a\x09\x09this.ctx\x20=\x20this.canvas.getContext(\x27webgl2\x27,\x20{premultipliedAlpha:\x20false});\x0a\x09\x09if\x20(this.ctx\x20==\x20null)\x0a\x09\x09{\x0a\x09\x09\x09this.ctx\x20=\x20this.canvas.getContext(\x27webgl\x27,\x20{premultipliedAlpha:\x20false});\x0a\x09\x09\x09this.webGLVersion\x20=\x201;\x0a\x09\x09}\x0a\x09\x09else\x0a\x09\x09{\x0a\x09\x09\x09this.webGLVersion\x20=\x202;\x0a\x09\x09}\x0a\x09\x09console.log(\x22Created\x20webgl1\x20context:\x20\x22\x20+\x20this.ctx\x20+\x20\x22\x20version\x20\x22\x20+\x20this.webGLVersion);//@oror\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x09\x09//place\x20it\x20on\x20top\x20of\x20the\x20video\x20player:\x0a\x09\x09//\x20let\x20oTop\x20=\x20videoContainer.offsetTop;\x0a\x09\x09//\x20let\x20oLeft\x20=\x20videoContainer.offsetLeft;\x0a\x09\x09//\x20let\x20videoTag\x20=\x20videoContainer.getElementsByTagName(\x22video\x22)[0];\x0a\x09\x09//\x20this.canvas.style.top\x20=\x200;\x0a\x09\x09//\x20this.canvas.style.left\x20=\x200;\x09\x0a\x09\x09\x0a\x0a\x09\x09//\x20Create\x20a\x20<style>\x20element\x20for\x20fullscreen\x20styles\x0a//\x20let\x20style\x20=\x20document.createElement(\x27style\x27);\x0a//\x20style.textContent\x20=\x20`\x0a//\x20\x20\x20\x20\x20canvas:fullscreen\x20{\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20position:\x20absolute;\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20width:\x20100%;\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20height:\x20100%;\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20top:\x200;\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20left:\x200;\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20z-index:\x2010;\x20/*\x20Adjust\x20as\x20needed\x20*/\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20/*\x20Additional\x20styles\x20*/\x0a//\x20\x20\x20\x20\x20}\x0a//\x20\x20\x20\x20\x20/*\x20For\x20vendor-prefixed\x20fullscreen\x20pseudo-classes\x20(older\x20browsers)\x20*/\x0a//\x20\x20\x20\x20\x20canvas:-webkit-full-screen\x20{\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20position:\x20absolute;\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20width:\x20100%;\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20height:\x20100%;\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20top:\x200;\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20left:\x200;\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20z-index:\x2010;\x0a//\x20\x20\x20\x20\x20}\x0a//\x20\x20\x20\x20\x20canvas:-moz-full-screen\x20{\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20position:\x20absolute;\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20width:\x20100%;\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20height:\x20100%;\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20top:\x200;\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20left:\x200;\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20z-index:\x2010;\x0a//\x20\x20\x20\x20\x20}\x0a//\x20\x20\x20\x20\x20canvas:-ms-fullscreen\x20{\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20position:\x20absolute;\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20width:\x20100%;\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20height:\x20100%;\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20top:\x200;\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20left:\x200;\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20z-index:\x2010;\x0a//\x20\x20\x20\x20\x20}\x0a//\x20`;\x0a//\x20document.head.appendChild(style);\x0a\x0a//\x20Request\x20fullscreen\x20mode\x20for\x20the\x20canvas\x0a//\x20this.canvas.requestFullscreen().catch(err\x20=>\x20{\x0a//\x20\x20\x20\x20\x20console.log(`Error\x20attempting\x20to\x20enable\x20fullscreen\x20mode:\x20${err.message}\x20(${err.name})`);\x0a//\x20});\x0a\x0a\x0a\x0a\x0a\x09\x09//\x20if\x20(typeof\x20wmcPlayer\x20!=\x27undefined\x27)\x0a\x09\x09//\x20{\x0a\x09\x09//\x20\x09this.canvas.style.top\x20=\x200;\x0a\x09\x09//\x20\x09this.canvas.style.left\x20=\x200;\x09\x0a\x09\x09//\x20}\x0a\x09\x09//\x20else\x0a\x09\x09//\x20{\x0a\x09\x09//\x20\x09this.canvas.style.top\x20=\x20oTop\x20+\x20\x22px\x22;\x0a\x09\x09//\x20\x09this.canvas.style.left\x20=\x20oLeft\x20+\x20\x22px\x22;\x09\x0a\x09\x09//\x20}\x0a\x09\x09\x0a\x09\x09//\x20if\x20(videoTag.readyState\x20>=\x202)\x20\x0a\x09\x09//\x20{\x0a\x09\x09\x09//\x20this.canvas.style.top\x20=\x20videoTag.style.top;\x0a\x09\x09\x09//\x20this.canvas.style.left\x20=\x20videoTag.style.left;\x09\x0a\x09\x09//\x20}\x0a\x09\x09//\x20else\x0a\x09\x09//\x20{\x0a\x09\x09\x09//\x20videoTag.addEventListener(\x27loadedmetadata\x27,\x20()\x20=>\x20{\x0a\x09\x09\x09\x09//\x20this.canvas.style.top\x20=\x20videoTag.offsetTop\x20+\x20\x22px\x22;\x0a\x09\x09\x09\x09//\x20this.canvas.style.left\x20=\x20videoTag.offsetLeft\x20+\x20\x22px\x22;\x09\x0a\x09\x09\x09//\x20});\x0a\x09\x09//\x20}\x0a\x09\x09//\x20this.canvas.style.width\x20=\x20\x22100%\x22;\x0a\x09\x09//\x20this.canvas.style.zIndex\x20=\x20100000;\x0a\x09\x09//\x20this.canvas.width\x20=\x20videoContainer.clientWidth;\x0a\x09\x09//\x20this.canvas.height\x20=\x20videoContainer.clientHeight;\x0a\x09\x09//\x20this.canvas.style.position\x20=\x20\x22absolute\x22;\x0a\x09\x09\x0a\x09\x09//\x20let\x20nextElement\x20=\x20videoTag.nextSibling;\x0a\x09\x09\x0a\x09\x09//\x20if(nextElement)\x20\x0a\x09\x09//\x20\x09videoContainer.insertBefore(\x20this.canvas,nextElement);\x0a\x09\x09//\x20else\x20\x0a\x09\x09//\x20\x09videoContainer.appendChild(this.canvas);\x0a\x09\x09//\x20this.canvas.style[\x22pointer-events\x22]\x20=\x20\x22none\x22;\x0a\x09\x09//\x20videoTag.addEventListener(\x22click\x22,\x20(e)\x20=>\x20{\x0a\x09\x09//\x20\x09this.OnUserClickOnCanvas(e);\x0a\x09\x09//\x20});\x0a\x09\x09//\x20this.canvas.addEventListener(\x22dblclick\x22,\x20this.ToggleFullscreen);\x0a\x09\x09//let\x20that\x20=\x20this;\x0a\x09\x09//this.canvas.addEventListener(\x22mousedown\x22,\x20function(e)\x20{\x0a\x09\x09\x09//that.OnUserClickOnCanvas(e);\x0a\x09\x09//});\x0a\x20\x20\x20\x20\x20\x20\x20\x20this.InitGL();\x0a\x20\x20\x20\x20\x20\x20\x20\x20this.adTexture\x20=\x20null;//general\x20ad\x20texture\x0a\x09\x09this.place2AdTexture\x20=\x20{};//mapping\x20specific\x20places\x20to\x20their\x20texture\x0a\x09\x09this.place2ad\x20=\x20{};//mapping\x20which\x20ads\x20belong\x20to\x20whcih\x20place\x0a\x09\x09this.ad2place\x20=\x20{};//other\x20way\x20around\x0a\x09\x09this.currentAds2BoundingRect\x20=\x20[];//array\x20of\x20current-frame\x20ads\x20to\x20their\x20bounding\x20rect\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20this.lastTimeReportedIncomingTC\x20=\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20this.autoAddIndex\x20=\x20null;\x0a\x20\x20\x20\x20}\x0a\x09\x0a\x09isPowerOf2(value)\x20{\x0a\x09\x20\x20return\x20(value\x20&\x20(value\x20-\x201))\x20==\x200;\x0a\x09}\x0a\x09CreateDigitImg(str)\x20{\x0a\x09\x09//\x20Create\x20an\x20OffscreenCanvas\x20instead\x20of\x20a\x20regular\x20canvas\x0a\x09\x09let\x20canvas\x20=\x20new\x20OffscreenCanvas(50,\x2050);\x20//\x20Width\x20and\x20height\x20are\x20set\x20to\x2050x50\x0a\x09\x09let\x20ctx\x20=\x20canvas.getContext(\x272d\x27);\x20//\x20Get\x20the\x202D\x20rendering\x20context\x0a\x09\x0a\x09\x09//\x20Set\x20the\x20background\x20color\x20to\x20black\x0a\x09\x09ctx.fillStyle\x20=\x20\x27black\x27;\x0a\x09\x09ctx.fillRect(0,\x200,\x20canvas.width,\x20canvas.height);\x0a\x09\x0a\x09\x09//\x20Set\x20the\x20font\x20properties\x0a\x09\x09ctx.font\x20=\x20\x2730px\x20Arial\x27;\x0a\x09\x09ctx.fillStyle\x20=\x20\x27white\x27;\x0a\x09\x0a\x09\x09//\x20Draw\x20the\x20string\x20(digit)\x20on\x20the\x20canvas\x0a\x09\x09ctx.fillText(str,\x2010,\x2035);\x20//\x20Adjust\x20the\x20position\x20as\x20needed\x0a\x09\x0a\x09\x09//\x20Convert\x20canvas\x20to\x20ImageBitmap\x20(instead\x20of\x20Blob)\x0a\x09\x09return\x20canvas.transferToImageBitmap();\x0a\x09\x09//\x20Convert\x20the\x20canvas\x20to\x20a\x20Blob\x0a\x09\x09//return\x20canvas.convertToBlob();\x20//\x20Returns\x20a\x20promise\x20for\x20a\x20Blob\x0a\x09}\x0a\x0a\x09CreateDigitImg_old(str)\x20{\x0a\x09\x09//\x20Create\x20a\x20canvas\x20element\x0a\x09\x09let\x20canvas\x20=\x20document.createElement(\x27canvas\x27);\x0a\x09\x09canvas.width\x20=\x2050;\x20//\x20Set\x20the\x20width\x20of\x20the\x20canvas\x0a\x09\x09canvas.height\x20=\x2050;\x20//\x20Set\x20the\x20height\x20of\x20the\x20canvas\x0a\x0a\x09\x09//\x20Get\x20the\x202D\x20rendering\x20context\x0a\x09\x09let\x20ctx\x20=\x20canvas.getContext(\x272d\x27);\x0a\x09\x09//\x20Set\x20the\x20fill\x20style\x20to\x20black\x0a\x09\x09ctx.fillStyle\x20=\x20\x27black\x27;\x0a\x0a\x09\x09//\x20Fill\x20the\x20entire\x20canvas\x20with\x20black\x0a\x09\x09ctx.fillRect(0,\x200,\x20canvas.width,\x20canvas.height);\x0a\x0a\x09\x09//\x20Set\x20the\x20font\x20properties\x0a\x09\x09ctx.font\x20=\x20\x2730px\x20Arial\x27;\x0a\x09\x09ctx.fillStyle\x20=\x20\x27white\x27;\x0a\x0a\x09\x09//\x20Draw\x20the\x20number\x20on\x20the\x20canvas\x0a\x09\x09ctx.fillText(str,\x2010,\x2035);\x20//\x20Adjust\x20the\x20position\x20as\x20needed\x0a\x09\x09\x0a\x0a\x09\x09//\x20Convert\x20the\x20canvas\x20to\x20a\x20data\x20URL\x0a\x09\x09let\x20dataURL\x20=\x20canvas.toDataURL();\x0a\x0a\x09\x09//\x20Create\x20an\x20image\x20element\x20and\x20set\x20its\x20source\x20to\x20the\x20data\x20URL\x0a\x09\x09let\x20img\x20=\x20document.createElement(\x27img\x27);\x0a\x09\x09img.src\x20=\x20dataURL;\x0a\x09\x09\x0a\x09\x09return\x20img;\x0a\x09}\x0a\x09OnUserClickOnCanvas(event)\x20{\x0a\x09\x09const\x20rect\x20=\x20event.rect;//this.canvas.getBoundingClientRect();\x0a\x09\x09let\x20x\x20=\x20event.clientX\x20-\x20rect.left;\x0a\x09\x09let\x20y\x20=\x20event.clientY\x20-\x20rect.top;\x0a\x09\x09x\x20=\x20x/(rect.right\x20-\x20rect.left);\x0a\x09\x09y\x20=\x20y/(rect.bottom\x20-\x20rect.top);\x0a\x09\x09//console.log(\x22CANVAS\x20CLICKED\x20!\x20x:\x20\x22\x20+\x20x\x20+\x20\x22\x20y:\x20\x22\x20+\x20y);\x0a\x09\x09for\x20(let\x20currentAd\x20of\x20this.currentAds2BoundingRect)\x20{\x0a\x09\x09\x09if\x20(currentAd.rect.l\x20<=\x20x\x20&&\x20currentAd.rect.r\x20>=\x20x\x20&&\x20\x0a\x09\x09\x09currentAd.rect.t\x20<=\x20y\x20&&\x20currentAd.rect.b\x20>=\x20y)\x0a\x09\x09\x09{\x0a\x09\x09\x09\x09let\x20adNameWithoutThatStupidHashSign\x20=\x20currentAd.name.substring(1);\x0a\x09\x09\x09\x09if\x20(this.ad2Url[adNameWithoutThatStupidHashSign])\x20{\x0a\x09\x09\x09\x09\x09let\x20urlToGo\x20=\x20this.ad2Url[adNameWithoutThatStupidHashSign];\x0a\x09\x09\x09\x09\x09console.log(\x22Clicked\x20on\x20ad:\x20\x22\x20+\x20adNameWithoutThatStupidHashSign\x20+\x20\x22\x20so\x20should\x20navigate\x20to\x20\x22\x20+\x20urlToGo\x20+\x20\x22\x20!!!!!!!!!!!!!!!!!!!!!!\x22);\x09\x0a\x09\x09\x09\x09\x09postMessage({\x20action:\x20\x27open-uri\x27,\x20url:\x20urlToGo\x20});\x0a\x09\x09\x09\x09\x09//window.open(urlToGo,\x20\x27_blank\x27);\x0a\x09\x09\x09\x09}\x0a\x09\x09\x09\x09return;\x0a\x09\x09\x09}\x0a\x09\x09}\x0a\x09\x09\x0a\x09}\x0a\x09/*TexUnitForInjectoLogo(){\x0a\x09\x09return\x200;\x0a\x09}*/\x0a\x09TexUnitForGenericAd(){\x0a\x09\x09return\x200;\x0a\x09}\x0a\x09TexUnitForAdInPlace(place){\x0a\x09\x09let\x20placesArr\x20=\x20Object.keys(this.place2ad);\x0a\x09\x09for\x20(let\x20i\x20=\x200;\x20i\x20<\x20placesArr.length;\x20++i)\x0a\x09\x09{\x0a\x09\x09\x09if\x20(place\x20==\x20placesArr[i])\x20return\x20i\x20+\x201;\x0a\x09\x09}\x0a\x09\x09return\x200;\x0a\x09}\x0a\x09/*TexUnitForVideo()\x20{\x0a\x09\x09let\x20placesArr\x20=\x20Object.keys(this.place2ad);\x0a\x09\x09return\x201\x20+\x20placesArr.length;\x0a\x09}*/\x0a\x09TexUnitForPlaceHolder(placeHolder)\x20{\x0a\x09\x09let\x20placesArr\x20=\x20Object.keys(this.place2ad);\x0a\x09\x09for\x20(let\x20i\x20=\x200;\x20i\x20<\x20placesArr.length;\x20++i)\x0a\x09\x09{\x0a\x09\x09\x09let\x20place\x20=\x20placesArr[i];//wall\x0a\x09\x09\x09if\x20(placeHolder.name.indexOf(place)\x20>=\x200)\x20return\x20i;//\x20+\x201;\x0a\x09\x09}\x0a\x09\x09return\x200;\x0a\x09\x09\x0a\x09}\x0a\x09AdNameForPlaceHolder(placeHolder)\x20{\x0a\x09\x09let\x20placesArr\x20=\x20Object.keys(this.place2ad);\x0a\x09\x09for\x20(let\x20i\x20=\x200;\x20i\x20<\x20placesArr.length;\x20++i)\x0a\x09\x09{\x0a\x09\x09\x09let\x20place\x20=\x20placesArr[i];//wall\x0a\x09\x09\x09if\x20(placeHolder.name.indexOf(place)\x20>=\x200\x20&&\x20this.place2AdTexture\x20&&\x20this.place2AdTexture[place]\x20&&\x20this.place2AdTexture[place].name)\x20\x0a\x09\x09\x09{\x0a\x09\x09\x09\x09return\x20this.place2AdTexture[place].name;\x0a\x09\x09\x09}\x0a\x09\x09}\x0a\x09\x09return\x20this.lastAdName;\x0a\x09}\x0a\x09TexUnitBaseForAlpha()\x20{\x0a\x09\x09return\x201\x20+\x20Object.keys(this.place2ad).length;//\x20+\x201;\x0a\x09}\x0a\x20\x20\x20\x20InitGL()\x20{\x0a\x09\x09//\x20setup\x20GLSL\x20this.program\x0a\x09\x09let\x20newFragmentShaderSource\x20=\x20BB.GL.fragmentShaderSource;\x0a\x09\x09//FIX\x20for\x20MAC\x20(it\x20has\x20bugs\x20with\x20transparensy\x20with\x20light\x20and\x20bright\x20colors\x20so\x20didabling\x20transparensy\x20if\x20alpha\x20in\x20shader\x20is\x20less\x20then\x200.8)\x0a\x09\x09if\x20(BB.Utils.Platform.isSafariMac())\x0a\x09\x09\x09newFragmentShaderSource\x20=\x20BB.GL.fragmentShaderSource.replace(\x22if\x20(alpha\x20==\x200.0)\x22,\x20\x22if\x20(alpha\x20<\x200.8)\x22);\x0a\x09\x09this.program\x20=\x20webglUtils.createProgramFromSources(this.ctx,\x0a\x09\x09this.webGLVersion\x20==\x202\x20?\x20[BB.GL.vertexShaderSource,\x20newFragmentShaderSource]\x20:\x0a\x09\x09\x09\x09\x09\x09\x09\x09\x20[BB.GL.vertexShaderSourceV1,\x20BB.GL.fragmentShaderSourceV1]);\x0a\x09\x09this.ctx.clearColor(0.0,\x200.0,\x200.0,\x200.0);//Set\x20clear\x20color\x20to\x20black,\x20fully\x20opaque\x0a\x09\x09this.ctx.clear(this.ctx.COLOR_BUFFER_BIT);//\x20Clear\x20the\x20color\x20buffer\x20with\x20specified\x20clear\x20color\x0a\x09\x09this.ctx.useProgram(this.program);//\x20Tell\x20it\x20to\x20use\x20our\x20this.program\x20(pair\x20of\x20shaders)\x0a\x09\x09this.counter\x20=\x200;\x0a\x09\x09this.CleanGL();\x0a\x20\x20\x20\x20}\x0a\x09CleanGL()\x20{\x0a\x09\x09//this.canvas.style.display=\x22none\x22;\x0a\x09\x09this.ctx.clearColor(0.0,\x200.0,\x200.0,\x200.0);//Set\x20clear\x20color\x20to\x20black,\x20fully\x20opaque\x0a\x09\x09this.ctx.clear(this.ctx.COLOR_BUFFER_BIT);//\x20Clear\x20the\x20color\x20buffer\x20with\x20specified\x20clear\x20color\x0a\x09\x09this.alphaFound\x20=\x200;\x0a\x09}\x0a\x20\x20\x20\x20GenerateTexture(\x0a\x20\x20\x20\x20\x20\x20\x20\x20imageData,\x0a\x20\x20\x20\x20\x20\x20\x20\x20textureUnit,\x0a\x20\x20\x20\x20\x20\x20\x20\x20uniformName,\x0a\x20\x20\x20\x20\x20\x20\x20\x20internalFormat,\x0a\x20\x20\x20\x20\x20\x20\x20\x20width,\x0a\x20\x20\x20\x20\x20\x20\x20\x20height,\x0a\x20\x20\x20\x20\x20\x20\x20\x20oneByteAlignment)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//void\x20this.ctx.texImage2D(target,\x20level,\x20internalformat,\x20width,\x20height,\x20border,\x20format,\x20type,\x20ImageData\x20source);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(oneByteAlignment)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20this.ctx.pixelStorei(this.ctx.UNPACK_ALIGNMENT,\x201);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20this.ctx.pixelStorei(this.ctx.UNPACK_ALIGNMENT,\x204);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x09\x09this.ctx.pixelStorei(this.ctx.UNPACK_FLIP_Y_WEBGL,\x20false);\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20texture\x20=\x20this.ctx.createTexture();\x0a\x20\x20\x20\x20\x20\x20\x20\x20this.ctx.activeTexture(this.ctx.TEXTURE0\x20+\x20textureUnit);\x0a\x20\x20\x20\x20\x20\x20\x20\x20this.ctx.bindTexture(this.ctx.TEXTURE_2D,\x20texture);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(width\x20&&\x20height)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20this.ctx.texImage2D(this.ctx.TEXTURE_2D,\x200,\x20(internalFormat\x20==\x20null\x20?\x20this.ctx.RGBA\x20:\x20internalFormat),\x20width,\x20height,\x200,\x20(internalFormat\x20==\x20null\x20?\x20this.ctx.RGBA\x20:\x20internalFormat),\x20this.ctx.UNSIGNED_BYTE,\x20imageData);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20this.ctx.texImage2D(this.ctx.TEXTURE_2D,\x200,\x20(internalFormat\x20==\x20null\x20?\x20this.ctx.RGBA\x20:\x20internalFormat),\x20this.ctx.RGBA,\x20this.ctx.UNSIGNED_BYTE,\x20imageData);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(ex)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.error(ex);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20null;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x09\x09if\x20(this.webGLVersion\x20==\x201)\x0a\x09\x09{\x0a\x09\x09\x09let\x20widthToInspect\x20=\x20width\x20||\x20imageData.width;\x0a\x09\x09\x09let\x20heightToInspect\x20=\x20height\x20||\x20imageData.height;\x0a\x09\x09\x09if\x20(widthToInspect\x20&&\x20this.isPowerOf2(widthToInspect)\x20&&\x20heightToInspect\x20&&\x20this.isPowerOf2(heightToInspect))\x20{\x0a\x09\x09\x09\x09//\x20Yes,\x20it\x27s\x20a\x20power\x20of\x202.\x20Generate\x20mips.\x0a\x09\x09\x09\x20\x20\x20this.ctx.generateMipmap(this.ctx.TEXTURE_2D);\x0a\x09\x09\x09}\x20else\x20{\x0a\x09\x09\x09\x20\x20\x20//\x20No,\x20it\x27s\x20not\x20a\x20power\x20of\x202.\x20Turn\x20off\x20mips\x20and\x20set\x0a\x09\x09\x09\x20\x20\x20//\x20wrapping\x20to\x20clamp\x20to\x20edge\x0a\x09\x09\x09\x20\x20\x20this.ctx.texParameteri(this.ctx.TEXTURE_2D,\x20this.ctx.TEXTURE_WRAP_S,\x20this.ctx.CLAMP_TO_EDGE);\x0a\x09\x09\x09\x20\x20\x20this.ctx.texParameteri(this.ctx.TEXTURE_2D,\x20this.ctx.TEXTURE_WRAP_T,\x20this.ctx.CLAMP_TO_EDGE);\x0a\x09\x09\x09\x20\x20\x20this.ctx.texParameteri(this.ctx.TEXTURE_2D,\x20this.ctx.TEXTURE_MIN_FILTER,\x20this.ctx.LINEAR);\x0a\x09\x09\x09}\x0a\x09\x09}\x0a\x09\x09else\x0a\x09\x09{\x0a\x09\x09\x09//\x20Set\x20the\x20parameters\x20so\x20we\x20can\x20render\x20any\x20size\x20image.\x0a\x09\x09\x09this.ctx.texParameteri(this.ctx.TEXTURE_2D,\x20this.ctx.TEXTURE_WRAP_S,\x20this.ctx.CLAMP_TO_EDGE);\x0a\x09\x09\x09this.ctx.texParameteri(this.ctx.TEXTURE_2D,\x20this.ctx.TEXTURE_WRAP_T,\x20this.ctx.CLAMP_TO_EDGE);\x0a\x09\x09\x09this.ctx.texParameteri(this.ctx.TEXTURE_2D,\x20this.ctx.TEXTURE_MIN_FILTER,\x20this.ctx.LINEAR);\x0a\x09\x09\x09this.ctx.texParameteri(this.ctx.TEXTURE_2D,\x20this.ctx.TEXTURE_MAG_FILTER,\x20this.ctx.LINEAR);\x0a\x09\x09}\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20location\x20=\x20this.ctx.getUniformLocation(this.program,\x20uniformName);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(location)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20this.ctx.uniform1i(location,\x20textureUnit);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20texture;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20_nextAdvertisement()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20this.autoAddIndex\x20=\x20setTimeout(()=>{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20ads\x20=\x20Object.keys(this.advertisementMap);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(ads.length){\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20this.SelectAd(ads[Math.floor(Math.random()\x20*\x20ads.length)]);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20this._nextAdvertisement();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20},this.options.adLoopTime);\x0a\x20\x20\x20\x20}\x0a\x09async\x20AddAdvertisement(params)\x20{\x0a\x09\x09let\x20{\x20name,\x20path,\x20isSelected}\x20=\x20params;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(name.indexOf(\x22.json\x22)\x20>\x20-1)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20fetch(path).then(async\x20res\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20this.place2ad\x20=\x20await\x20res.json();\x0a\x09\x09\x09\x09this.ad2place\x20=\x20{}\x0a\x09\x09\x09\x09//create\x20also\x20the\x20reverse\x20mapping\x0a\x09\x09\x09\x09let\x20placesArr\x20=\x20Object.keys(this.place2ad);\x0a\x09\x09\x09\x09for\x20(let\x20i\x20=\x200;\x20i\x20<\x20placesArr.length;\x20++i)\x20{\x0a\x09\x09\x09\x09\x09let\x20place\x20=\x20placesArr[i];\x0a\x09\x09\x09\x09\x09if\x20(place\x20==\x20\x22urls\x22)\x0a\x09\x09\x09\x09\x09{\x0a\x09\x09\x09\x09\x09\x09this.ad2Url\x20=\x20this.place2ad[place];\x0a\x09\x09\x09\x09\x09\x09delete\x20this.place2ad[place];\x0a\x09\x09\x09\x09\x09\x09continue;\x0a\x09\x09\x09\x09\x09}\x0a\x09\x09\x09\x09\x09let\x20adsForThisPlace\x20=\x20this.place2ad[place];\x0a\x09\x09\x09\x09\x09for\x20(let\x20j\x20=\x200;\x20j\x20<\x20adsForThisPlace.length;\x20++j)\x20{\x0a\x09\x09\x09\x09\x09\x09let\x20ad\x20=\x20adsForThisPlace[j];\x0a\x09\x09\x09\x09\x09\x09this.ad2place[\x22#\x22\x20+\x20ad]\x20=\x20place;\x0a\x09\x09\x09\x09\x09}\x0a\x09\x09\x09\x09}\x0a\x09\x09\x09\x09if\x20(Object.keys(this.place2ad).length\x20>\x200)\x20{\x0a\x09\x09\x09\x09\x09console.log(\x22composer::AddAdvertisement:\x20place-to-ads\x20mapping:\x20\x22,\x20this.place2ad);\x0a\x09\x09\x09\x09\x09console.log(\x22composer::AddAdvertisement:\x20ads-to-place\x20mapping:\x20\x22,\x20this.ad2place);\x0a\x09\x09\x09\x09\x09setTimeout(()=>{this.MakeSureAdPerPlace();},\x203000);//make\x20sure\x20its\x20ad\x20is\x20in\x20the\x20right\x20place\x20once\x20all\x20ads\x20are\x20loaded\x0a\x09\x09\x09\x09}\x0a\x09\x09\x09\x09\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(isSelected)\x20this.SelectAd(name);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x09\x09//\x20Fetch\x20the\x20image\x20data\x20from\x20the\x20path\x0a\x09\x09const\x20response\x20=\x20await\x20fetch(path);\x0a\x09\x09const\x20blob\x20=\x20await\x20response.blob();\x0a\x0a\x09\x09//\x20Create\x20an\x20ImageBitmap\x20from\x20the\x20Blob\x0a\x09\x09const\x20imageBitmap\x20=\x20await\x20createImageBitmap(blob);\x0a\x0a\x09\x09let\x20isFirst\x20=\x20Object.keys(this.advertisementMap).length\x20===\x200;\x0a\x09\x09this.advertisementMap[name]\x20=\x20imageBitmap;\x0a\x09\x09if\x20(isFirst)\x20{\x0a\x09\x09\x09this.SelectAd(name);\x0a\x09\x09\x09if(this.options.isAdLoop)\x20{\x0a\x09\x09\x09\x09clearTimeout(this.autoAddIndex);\x0a\x09\x09\x09\x09this._nextAdvertisement();\x0a\x09\x09\x09}\x0a\x09\x20}\x0a\x20\x20\x20\x20}\x0a\x09MakeSureAdPerPlace()\x20{\x0a\x09\x09//in\x20case\x20we\x20have\x20places,\x20make\x20sure\x20each\x20place\x20has\x20its\x20initial\x20ad\x0a\x09\x09if\x20(this.place2ad)\x20{\x0a\x09\x09\x09let\x20placesArr\x20=\x20Object.keys(this.place2ad);\x0a\x09\x09\x09for\x20(let\x20i\x20=\x200;\x20i\x20<\x20placesArr.length;\x20++i)\x20{\x0a\x09\x09\x09\x09let\x20place\x20=\x20placesArr[i];\x0a\x09\x09\x09\x09//do\x20we\x20have\x20a\x20texture\x20for\x20that\x20place\x20?\x0a\x09\x09\x09\x09if\x20(!this.place2AdTexture[place]\x20&&\x20this.place2ad[place].length\x20>\x200)\x20{//no\x20we\x20don\x27t,\x20add\x20one\x0a\x09\x09\x09\x09\x09console.log(\x22MakeSureAdPerPlace:\x20Set\x20default\x20image\x20\x22\x20+\x20this.place2ad[place][0]\x20+\x20\x22\x20for\x20place\x20\x22\x20+\x20place);\x0a\x09\x09\x09\x09\x09this.SelectAd(\x22#\x22\x20+\x20this.place2ad[place][0]);\x0a\x09\x09\x09\x09}\x0a\x09\x09\x09}\x0a\x09\x09}\x0a\x09}\x0a\x20\x20\x20\x20SelectAd(name)\x20{\x0a\x09\x09console.log(\x22composer::SelectAd:\x20selected\x20ad\x20is\x20\x22\x20+\x20name);\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20adImage\x20=\x20this.advertisementMap[name];\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!adImage)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x22SelectAd:\x20Failed\x20to\x20find\x20image\x20\x27\x22\x20+\x20name\x20+\x20\x22\x27\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x09\x09\x09//is\x20it\x20for\x20specific\x20place\x20?\x0a\x09\x09\x09if\x20(this.ad2place\x20&&\x20this.ad2place[name])\x20{//ad\x20for\x20a\x20particular\x20place\x0a\x09\x09\x09\x09let\x20place\x20=\x20this.ad2place[name];\x0a\x09\x09\x09\x09console.log(\x22composer::SelectAd:\x20The\x20selected\x20ad\x20should\x20be\x20in\x20place\x20\x22\x20+\x20place);\x0a\x09\x09\x09\x09let\x20texUnitId\x20=\x20this.TexUnitForAdInPlace(place);\x0a\x09\x09\x09\x09let\x20texName\x20=\x20\x22ad\x22\x20+\x20(texUnitId-1);\x0a\x09\x09\x09\x09if\x20(this.place2AdTexture[place])\x20this.ctx.deleteTexture(this.place2AdTexture[place].tex);\x0a\x09\x09\x09\x09this.place2AdTexture[place]\x20=\x20\x0a\x09\x09\x09\x09{\x09\x0a\x09\x09\x09\x09\x09tex:this.GenerateTexture(adImage,\x20texUnitId,\x20texName),\x0a\x09\x09\x09\x09\x09texUnitId:texUnitId,\x0a\x09\x09\x09\x09\x09texName:texName,\x0a\x09\x09\x09\x09\x09name:name\x0a\x09\x09\x09\x09};\x0a\x09\x09\x09\x09\x0a\x09\x09\x09}\x0a\x09\x09\x09else\x20{//general\x20ad\x0a\x09\x09\x09\x09if\x20(this.adTexture\x20!=\x20null)\x20{\x0a\x09\x09\x09\x09\x09this.ctx.deleteTexture(this.adTexture)\x0a\x09\x09\x09\x09}\x0a\x09\x09\x09\x09this.adTexture\x20=\x20this.GenerateTexture(adImage,\x20this.TexUnitForGenericAd(),\x20\x22ad0\x22);\x0a\x09\x09\x09\x09this.lastAd\x20=\x20adImage;\x0a\x09\x09\x09\x09this.lastAdName\x20=\x20name;\x0a\x09\x09\x09}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20OnMetaData(frameMetaData)\x20{\x0a\x09\x09//console.BBlog(\x22OnMetaData\x20\x22\x20+\x20frameMetaData.timecode);\x0a\x09\x09this.metadataMap[frameMetaData.timecode]\x20=\x20frameMetaData;\x0a\x09\x09this.metadataArr.push(frameMetaData.timecode);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20ToggleFullscreen\x20()\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20(this.requestFullscreen\x20||\x20this.webkitRequestFullscreen).call(this).catch((err)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.error(err)\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20RenderFrame()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20look\x20up\x20where\x20the\x20vertex\x20data\x20needs\x20to\x20go.\x0a\x20\x20\x20\x20\x20\x20\x20\x20//let\x20texCoordAttributeLocation\x20=\x20this.ctx.getAttribLocation(this.program,\x20\x22a_texCoord\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20positionAttributeLocation\x20=\x20this.ctx.getAttribLocation(this.program,\x20\x22a_position\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20set\x20the\x20resolution\x20for\x20both\x20vertex\x20and\x20fragment\x20shaders\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20resolutionLocation\x20=\x20this.ctx.getUniformLocation(this.program,\x20\x22u_resolution\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20resolutionLocation2\x20=\x20this.ctx.getUniformLocation(this.program,\x20\x22u_resolution2\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20this.ctx.uniform2f(resolutionLocation,\x20this.ctx.canvas.width,\x20this.ctx.canvas.height);\x0a\x20\x20\x20\x20\x20\x20\x20\x20this.ctx.uniform2f(resolutionLocation2,\x20this.ctx.canvas.width,\x20this.ctx.canvas.height);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//shader\x20matrix\x20(unity):\x0a\x09\x09if\x20(this.webGLVersion\x20==\x202)\x0a\x09\x09{\x0a\x09\x09\x09let\x20matrixLocation\x20=\x20this.ctx.getUniformLocation(this.program,\x20\x22u_matrix\x22);\x0a\x09\x09\x09let\x20matrix\x20=\x20[\x0a\x09\x09\x09\x091,\x200,\x200,\x0a\x09\x09\x09\x090,\x201,\x200,\x0a\x09\x09\x09\x090,\x200,\x201\x0a\x09\x09\x09];\x0a\x09\x09\x09this.ctx.uniformMatrix3fv(matrixLocation,\x20false,\x20matrix);\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09let\x20vao\x20=\x20null;\x0a\x09\x09if\x20(this.webGLVersion\x20==\x202)\x0a\x09\x09{\x0a\x09\x09\x09//\x20Create\x20a\x20vertex\x20array\x20object\x20(attribute\x20state)\x0a\x09\x09\x09vao\x20=\x20this.ctx.createVertexArray();\x0a\x0a\x09\x09\x09//\x20and\x20make\x20it\x20the\x20one\x20we\x27re\x20currently\x20working\x20with\x0a\x09\x09\x09this.ctx.bindVertexArray(vao);\x0a\x09\x09}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Create\x20a\x20buffer\x20and\x20put\x20a\x20single\x20pixel\x20space\x20rectangle\x20in\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20it\x20(2\x20triangles)\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20positionBuffer\x20=\x20this.ctx.createBuffer();\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Turn\x20on\x20the\x20attribute\x0a\x20\x20\x20\x20\x20\x20\x20\x20this.ctx.enableVertexAttribArray(positionAttributeLocation);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Bind\x20it\x20to\x20ARRAY_BUFFER\x20(think\x20of\x20it\x20as\x20ARRAY_BUFFER\x20=\x20positionBuffer)\x0a\x20\x20\x20\x20\x20\x20\x20\x20this.ctx.bindBuffer(this.ctx.ARRAY_BUFFER,\x20positionBuffer);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Tell\x20the\x20attribute\x20how\x20to\x20get\x20data\x20out\x20of\x20positionBuffer\x20(ARRAY_BUFFER)\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20size\x20=\x202;\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x202\x20components\x20per\x20iteration\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20type\x20=\x20this.ctx.FLOAT;\x20\x20\x20//\x20the\x20data\x20is\x2032bit\x20floats\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20normalize\x20=\x20false;\x20//\x20don\x27t\x20normalize\x20the\x20data\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20stride\x20=\x200;\x20\x20\x20\x20\x20\x20\x20\x20//\x200\x20=\x20move\x20forward\x20size\x20*\x20sizeof(type)\x20each\x20iteration\x20to\x20get\x20the\x20next\x20position\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20offset\x20=\x200;\x20\x20\x20\x20\x20\x20\x20\x20//\x20start\x20at\x20the\x20beginning\x20of\x20the\x20buffer\x0a\x20\x20\x20\x20\x20\x20\x20\x20this.ctx.vertexAttribPointer(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20positionAttributeLocation,\x20size,\x20type,\x20normalize,\x20stride,\x20offset);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20provide\x20texture\x20coordinates\x20for\x20the\x20rectangle.\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20texCoordBuffer\x20=\x20this.ctx.createBuffer();\x0a\x20\x20\x20\x20\x20\x20\x20\x20this.ctx.bindBuffer(this.ctx.ARRAY_BUFFER,\x20texCoordBuffer);\x0a\x20\x20\x20\x20\x20\x20\x20\x20this.ctx.bufferData(this.ctx.ARRAY_BUFFER,\x20new\x20Float32Array([\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x200.0,\x200.0,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x201.0,\x200.0,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x200.0,\x201.0,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x200.0,\x201.0,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x201.0,\x200.0,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x201.0,\x201.0,\x0a\x20\x20\x20\x20\x20\x20\x20\x20]),\x20this.ctx.STATIC_DRAW);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x09\x09/*\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Turn\x20on\x20the\x20attribute\x0a\x20\x20\x20\x20\x20\x20\x20\x20this.ctx.enableVertexAttribArray(texCoordAttributeLocation);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Tell\x20the\x20attribute\x20how\x20to\x20get\x20data\x20out\x20of\x20texCoordBuffer\x20(ARRAY_BUFFER)\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20size\x20=\x202;\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x202\x20components\x20per\x20iteration\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20type\x20=\x20this.ctx.FLOAT;\x20\x20\x20//\x20the\x20data\x20is\x2032bit\x20floats\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20normalize\x20=\x20false;\x20//\x20don\x27t\x20normalize\x20the\x20data\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20stride\x20=\x200;\x20\x20\x20\x20\x20\x20\x20\x20//\x200\x20=\x20move\x20forward\x20size\x20*\x20sizeof(type)\x20each\x20iteration\x20to\x20get\x20the\x20next\x20position\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20offset\x20=\x200;\x20\x20\x20\x20\x20\x20\x20\x20//\x20start\x20at\x20the\x20beginning\x20of\x20the\x20buffer\x0a\x20\x20\x20\x20\x20\x20\x20\x20this.ctx.vertexAttribPointer(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20texCoordAttributeLocation,\x20size,\x20type,\x20normalize,\x20stride,\x20offset);\x0a\x09\x09*/\x0a\x20\x20\x20\x20\x20\x20\x20\x20//webglUtils.resizeCanvasToDisplaySize(this.ctx.canvas);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Tell\x20WebGL\x20how\x20to\x20convert\x20from\x20clip\x20space\x20to\x20pixels\x0a\x20\x20\x20\x20\x20\x20\x20\x20this.ctx.viewport(0,\x200,\x20this.ctx.canvas.width,\x20this.ctx.canvas.height);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Clear\x20the\x20canvas\x0a\x20\x20\x20\x20\x20\x20\x20\x20this.ctx.clearColor(0,\x200,\x200,\x200);\x0a\x20\x20\x20\x20\x20\x20\x20\x20this.ctx.clear(this.ctx.COLOR_BUFFER_BIT\x20|\x20this.ctx.DEPTH_BUFFER_BIT);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Bind\x20the\x20attribute/buffer\x20set\x20we\x20want.\x0a\x20\x20\x20\x20\x20\x20\x20\x20//this.ctx.bindVertexArray(vao);\x0a\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Bind\x20the\x20position\x20buffer\x20so\x20this.ctx.bufferData\x20that\x20will\x20be\x20called\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20in\x20setRectangle\x20puts\x20data\x20in\x20the\x20position\x20buffer\x0a\x20\x20\x20\x20\x20\x20\x20\x20this.ctx.bindBuffer(this.ctx.ARRAY_BUFFER,\x20positionBuffer);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Set\x20a\x20rectangle\x20the\x20same\x20size\x20as\x20the\x20image.\x0a\x20\x20\x20\x20\x20\x20\x20\x20this.SetRectangle(this.ctx,\x200,\x200,\x20this.canvas.width,\x20this.canvas.height);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Draw\x20the\x20rectangle.\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20primitiveType\x20=\x20this.ctx.TRIANGLES;\x0a\x20\x20\x20\x20\x20\x20\x20\x20//let\x20offset\x20=\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20count\x20=\x206;\x0a\x20\x20\x20\x20\x20\x20\x20\x20this.ctx.drawArrays(primitiveType,\x20offset,\x20count);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20SetRectangle(gl,\x20x,\x20y,\x20width,\x20height)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20x1\x20=\x20x;\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20x2\x20=\x20x\x20+\x20width;\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20y1\x20=\x20y;\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20y2\x20=\x20y\x20+\x20height;\x0a\x20\x20\x20\x20\x20\x20\x20\x20this.ctx.bufferData(this.ctx.ARRAY_BUFFER,\x20new\x20Float32Array([\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20x1,\x20y1,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20x2,\x20y1,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20x1,\x20y2,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20x1,\x20y2,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20x2,\x20y1,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20x2,\x20y2,\x0a\x20\x20\x20\x20\x20\x20\x20\x20]),\x20this.ctx.STATIC_DRAW);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20renderAugmentation(nextTimeCode)\x20{\x0a\x09\x09let\x20tcTranslator\x20=\x20BB.Utils.TimeCodesFramesTranslator;\x0a\x09\x09//console.log(\x22nextTimeCode:\x20\x22\x20+\x20nextTimeCode);//@oror\x20\x20\x2200:00:14:02.1\x22\x0a\x09\x09let\x20tc\x20=\x20tcTranslator.timeCodeStr2TimeCodeArray(nextTimeCode);\x0a\x09\x09let\x20tcPlus1\x20=\x20tcTranslator.TimeCodeAddFrames(tc,\x201,\x20this.sourceFPS);\x0a\x09\x09let\x20tcPlus2\x20=\x20tcTranslator.TimeCodeAddFrames(tc,\x202,\x20this.sourceFPS);\x0a\x09\x09let\x20tcPlus1Str\x20=\x20tcTranslator.printTimecode(tcPlus1);\x0a\x09\x09let\x20tcPlus2Str\x20=\x20tcTranslator.printTimecode(tcPlus2);\x0a\x09\x09\x0a\x09\x09\x0a\x09\x09this.videoStarted\x20=\x20true;\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20t1\x20=\x20performance.now();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x09\x09//clean\x20all\x20the\x20earliest\x20meta:\x0a\x09\x09/*\x0a\x09\x09while\x20(this.metadataArr.length\x20>\x200\x20&&\x0a\x09\x09\x09this.metadataArr[0]\x20<\x20nextTimeCode)\x20{\x0a\x09\x09\x09let\x20toDeleteFrameMetaData\x20=\x20this.metadataMap[this.metadataArr[0]];\x0a\x09\x09\x09for\x20(const\x20key\x20in\x20toDeleteFrameMetaData.placeholders)\x20{\x0a\x09\x09\x09\x09let\x20holderToDelete\x20=\x20toDeleteFrameMetaData.placeholders[key];\x0a\x09\x09\x09\x09if\x20(holderToDelete.alphaAsUint8Array)\x20{\x0a\x09\x09\x09\x09\x09holderToDelete.alphaAsUint8Array\x20=\x20null;\x0a\x09\x09\x09\x09}\x0a\x09\x09\x09}\x0a\x09\x09\x09delete\x20this.metadataArr[this.metadataArr[0]];\x0a\x09\x09\x09this.metadataArr.shift();\x0a\x09\x09}\x0a\x09\x09*/\x0a\x0a\x09\x09//get\x20the\x20next\x20meta\x20frame\x0a\x09\x09let\x20frameMetaData\x20=\x20null;\x0a\x09\x09let\x20next\x20=\x20[];\x0a\x09\x09if\x20(this.metadataMap[nextTimeCode])\x20{\x0a\x09\x09\x09frameMetaData\x20=\x20this.metadataMap[nextTimeCode];\x0a\x09\x09\x09/*delete\x20this.metadataMap[nextTimeCode];\x0a\x09\x09\x09if\x20(this.sourceFPS\x20<\x2040)\x20{\x0a\x09\x09\x09\x09delete\x20this.metadataMap[nextTimeCode\x20+\x20\x22.1\x22];\x0a\x09\x09\x09}*/\x0a\x09\x09\x09\x09\x0a\x09\x09\x09if\x20(this.metadataMap[tcPlus1Str])\x20{\x0a\x09\x09\x09\x09next.push({nextVideo:this.metadataMap[tcPlus1Str],nextTimeCode:tcPlus1Str});\x0a\x09\x09\x09}\x0a\x09\x09\x09if\x20(this.metadataMap[tcPlus2Str])\x20{\x0a\x09\x09\x09\x09next.push({nextVideo:this.metadataMap[tcPlus2Str],nextTimeCode:tcPlus2Str});\x0a\x09\x09\x09}\x0a\x09\x09\x09const\x20metaArrIndex\x20=\x20this.metadataArr.indexOf(nextTimeCode);\x0a\x09\x09\x09\x0a\x09\x09\x09//if\x20(metaArrIndex\x20>\x20-1)\x20this.metadataArr.splice(metaArrIndex,\x201);\x20//was\x0a\x09\x09\x09if\x20(metaArrIndex\x20>\x20-5)\x20this.metadataArr.splice(0,\x20metaArrIndex-4).forEach(item\x20=>\x20{\x0a\x09\x09\x09\x09delete\x20this.metadataMap[item];\x0a\x09\x09\x09});\x0a\x09\x09\x09this.alphaFound++;\x0a\x09\x09}\x0a\x09\x09else\x20{\x0a\x09\x09\x09this.counter++;\x0a\x09\x09\x09if(this.counter\x20>\x2060)\x0a\x09\x09\x09{\x0a\x09\x09\x09\x09this.counter\x20=\x200;\x0a\x09\x09\x09\x09console.error(\x22Missing\x20meta\x20data\x20at\x20time\x20code\x20\x22\x20+\x20nextTimeCode);\x0a\x09\x09\x09}\x0a\x09\x09\x09this.alphaFound++;\x20//test\x20for\x20drawing\x20number\x20always\x0a\x09\x09\x09//this.alphaFound\x20=\x200;\x0a\x09\x09\x09////nextImageData.buffer\x20=\x20null;\x0a\x09\x09\x09//return;\x0a\x09\x09}\x0a\x09\x09//alal\x20comment\x20for\x20test\x0a\x09\x09//\x20if\x20(this.alphaFound\x20>\x2030\x20&&\x20this.canvas.style.display\x20==\x20\x22none\x22)\x20{\x0a\x09\x09//\x20\x09this.canvas.style.display\x20=\x20\x22\x22;\x0a\x09\x09//\x20}\x0a\x09\x09\x0a\x09\x09let\x20texturesForThisFrame\x20=\x20[];\x0a\x09\x09this.canvas.width\x20=\x201280;\x0a\x09\x09this.canvas.height\x20=\x20720;\x0a\x09\x09\x09\x09\x0a\x09\x09let\x20placeHolderIndex\x20=\x200;\x0a\x09\x09this.currentAds2BoundingRect\x20=\x20[];//reset\x20the\x20coordinates\x0a\x09\x09if\x20(frameMetaData)\x20{\x0a\x09\x09\x09//set\x20the\x20canvas\x20size\x20according\x20the\x20engine\x27s\x20canvas\x20size\x0a\x09\x09\x09//\x20if\x20(frameMetaData.canvasSize\x20&&\x20(\x0a\x09\x09\x09//\x20\x20\x20\x20\x20frameMetaData.canvasSize.width\x20!=\x20this.ctx.canvas.width\x20||\x0a\x09\x09\x09//\x20\x20\x20\x20\x20frameMetaData.canvasSize.height\x20!=\x20this.ctx.canvas.height))\x20{\x0a\x09\x09\x09//\x20\x20\x20\x20\x20this.ctx.canvas.width\x20=\x20frameMetaData.canvasSize.width;\x0a\x09\x09\x09//\x20\x20\x20\x20\x20this.ctx.canvas.height\x20=\x20frameMetaData.canvasSize.height;\x0a\x09\x09\x09//\x20}\x0a\x0a\x09\x09\x09//for\x20each\x20place-holder,\x20create\x20an\x20alpha\x20texture\x20and\x20inform\x20the\x20shader\x20of\x20the\x20alpha\x20mate\x27s\x20position\x20and\x20size\x0a\x09\x09\x09//if\x20(false)\x0a\x09\x09\x09let\x20doNotRenderAugmentation\x20=\x20false;\x0a\x09\x09\x09if\x20(this.options.debug)\x0a\x09\x09\x09{\x0a\x09\x09\x09\x09var\x20checkbox_doNotRenderAugmentation\x20=\x20document.getElementById(\x27doNotRenderAugmentationCheckbox\x27);\x0a\x09\x09\x09\x09doNotRenderAugmentation\x20=\x20checkbox_doNotRenderAugmentation.checked;\x0a\x09\x09\x09}\x0a\x09\x09\x09if(!doNotRenderAugmentation)\x0a\x09\x09\x09for\x20(const\x20key\x20in\x20frameMetaData.placeholders)\x20{\x0a\x09\x09\x09\x09const\x20holder\x20=\x20frameMetaData.placeholders[key];\x0a\x09\x09\x09\x09if\x20(!holder.alphaAsUint8Array)\x20continue;\x0a\x09\x09\x09\x09//create\x20the\x20alpha\x20texture\x0a\x09\x09\x09\x09let\x20alphaUnfiromName\x20=\x20\x22alpha\x22\x20+\x20placeHolderIndex;\x0a\x09\x09\x09\x09let\x20alphaTextureNum\x20=\x20this.TexUnitBaseForAlpha()\x20+\x20placeHolderIndex;\x0a\x09\x09\x09\x09holder.alphaTex\x20=\x20this.GenerateTexture(holder.alphaAsUint8Array,\x0a\x09\x09\x09\x09\x09alphaTextureNum,\x0a\x09\x09\x09\x09\x09alphaUnfiromName,\x0a\x09\x09\x09\x09\x09this.ctx.ALPHA,\x0a\x09\x09\x09\x09\x09holder.width,\x0a\x09\x09\x09\x09\x09holder.height,\x0a\x09\x09\x09\x09\x09true);\x0a\x09\x09\x09\x09holder.alphaAsUint8Array\x20=\x20null;\x0a\x09\x09\x09\x09if\x20(!holder.alphaTex)\x20{\x0a\x09\x09\x09\x09\x09console.error(\x22Failed\x20to\x20create\x20alpha\x20texture\x22);\x0a\x09\x09\x09\x09\x09continue;\x0a\x09\x09\x09\x09}\x0a\x09\x09\x09\x09texturesForThisFrame.push(holder.alphaTex);\x0a\x09\x09\x09\x09//notify\x20the\x20shader\x20that\x20this\x20place-holder\x20exist\x0a\x09\x09\x09\x09let\x20hasLogoUniformName\x20=\x20\x22hasLogo\x22\x20+\x20placeHolderIndex;\x0a\x09\x09\x09\x09let\x20hasLogoLoc\x20=\x20this.ctx.getUniformLocation(this.program,\x20hasLogoUniformName);\x0a\x09\x09\x09\x09this.ctx.uniform1i(hasLogoLoc,\x201);\x0a\x09\x09\x09\x09//tell\x20the\x20shader\x20whcih\x20add\x20to\x20use\x20for\x20this\x20placeholder\x0a\x09\x09\x09\x09let\x20adForLogoUniformName\x20=\x20\x22adForLogo\x22\x20+\x20placeHolderIndex;\x0a\x09\x09\x09\x09let\x20adForLogoUniform\x20=\x20this.ctx.getUniformLocation(this.program,\x20adForLogoUniformName);\x0a\x09\x09\x09\x09let\x20isBlur\x20=\x20false;\x0a\x09\x09\x09\x09if\x20(holder.name.indexOf(\x22blur\x22)\x20>=\x200)\x0a\x09\x09\x09\x09{\x0a\x09\x09\x09\x09\x09this.ctx.uniform1i(adForLogoUniform,\x2099);\x0a\x09\x09\x09\x09\x09\x20isBlur\x20=\x20true;\x0a\x09\x09\x09\x09}\x0a\x09\x09\x09\x09else\x0a\x09\x09\x09\x09{\x0a\x09\x09\x09\x09\x09this.ctx.uniform1i(adForLogoUniform,\x20this.TexUnitForPlaceHolder(holder));\x0a\x09\x09\x09\x09}\x0a\x09\x09\x09\x09\x0a\x09\x09\x09\x09//set\x20that\x20alpha\x20top-left\x20and\x20size\x0a\x09\x09\x09\x09let\x20alphaTopLeftUniformName\x20=\x20\x22u_alpha\x22\x20+\x20placeHolderIndex\x20+\x20\x22TopLeft\x22;\x0a\x09\x09\x09\x09let\x20alphaTopLeftLoc\x20=\x20this.ctx.getUniformLocation(this.program,\x20alphaTopLeftUniformName);\x0a\x09\x09\x09\x09this.ctx.uniform2fv(alphaTopLeftLoc,\x20[holder.maskX,\x20holder.maskY]);\x0a\x09\x09\x09\x09let\x20alphaSizeUniformName\x20=\x20\x22u_alpha\x22\x20+\x20placeHolderIndex\x20+\x20\x22Size\x22;\x0a\x09\x09\x09\x09let\x20alphaSizeLoc\x20=\x20this.ctx.getUniformLocation(this.program,\x20alphaSizeUniformName);\x0a\x09\x09\x09\x09this.ctx.uniform2fv(alphaSizeLoc,\x20[holder.width,\x20holder.height]);\x0a\x09\x09\x09\x09//homography:\x0a\x09\x09\x09\x09let\x20homographyMatrixUniformName\x20=\x20\x22u_matrix\x22\x20+\x20placeHolderIndex;\x0a\x09\x09\x09\x09let\x20placeHolderHomographyLocation\x20=\x20this.ctx.getUniformLocation(this.program,\x20homographyMatrixUniformName);\x0a\x09\x09\x09\x09this.ctx.uniformMatrix3fv(placeHolderHomographyLocation,\x20false,\x20holder.tranform);\x0a\x09\x09\x09\x09//bounding\x20rect:\x0a\x09\x09\x09\x09if\x20(!isBlur)\x0a\x09\x09\x09\x09{\x0a\x09\x09\x09\x09\x09let\x20boundingRect\x20=\x20{l:-1,t:-1,r:-1,b:-1};\x0a\x09\x09\x09\x09\x09for\x20(let\x20corner\x20of\x20holder.corners)\x20{\x0a\x09\x09\x09\x09\x09\x09if\x20(corner.x\x20<\x20boundingRect.l\x20||boundingRect.l\x20==\x20-1)\x20boundingRect.l\x20=\x20corner.x;\x0a\x09\x09\x09\x09\x09\x09if\x20(corner.x\x20>\x20boundingRect.r\x20||boundingRect.r\x20==\x20-1)\x20boundingRect.r\x20=\x20corner.x;\x0a\x09\x09\x09\x09\x09\x09if\x20(corner.y\x20<\x20boundingRect.t\x20||boundingRect.t\x20==\x20-1)\x20boundingRect.t\x20=\x20corner.y;\x0a\x09\x09\x09\x09\x09\x09if\x20(corner.y\x20>\x20boundingRect.b\x20||boundingRect.b\x20==\x20-1)\x20boundingRect.b\x20=\x20corner.y;\x0a\x09\x09\x09\x09\x09}\x0a\x09\x09\x09\x09\x09boundingRect.l\x20/=\x20frameMetaData.canvasSize.width;\x0a\x09\x09\x09\x09\x09boundingRect.r\x20/=\x20frameMetaData.canvasSize.width;\x0a\x09\x09\x09\x09\x09boundingRect.t\x20/=\x20frameMetaData.canvasSize.height;\x0a\x09\x09\x09\x09\x09boundingRect.b\x20/=\x20frameMetaData.canvasSize.height;\x0a\x09\x09\x09\x09\x09this.currentAds2BoundingRect.push({\x0a\x09\x09\x09\x09\x09\x09name:this.AdNameForPlaceHolder(holder),\x0a\x09\x09\x09\x09\x09\x09rect:boundingRect\x0a\x09\x09\x09\x09\x09});\x0a\x09\x09\x09\x09}\x0a\x09\x09\x09\x09/*\x0a\x09\x09\x09\x09//This\x20code\x20create\x20the\x20perspective\x20transform\x20in\x20JS\x0a\x09\x09\x09\x09//Currently\x20we\x20use\x20the\x20transformation\x20supplied\x20with\x20the\x20frameMetaData\x20instead\x0a\x09\x09\x09\x09let\x20srcCorners\x20=\x20[\x0a\x09\x09\x09\x09\x090,\x200,\x0a\x09\x09\x09\x09\x09this.canvas.width,\x200,\x0a\x09\x09\x09\x09\x09this.canvas.width,\x20this.canvas.height,\x0a\x09\x09\x09\x09\x090,\x20this.canvas.height];\x0a\x09\x09\x09\x20\x20\x20\x0a\x09\x09\x09\x09let\x20dstCorners\x20=\x20[];\x0a\x09\x09\x09\x09let\x20ratioX\x20=\x20this.canvas.width\x20/\x20frameMetaData.processingWidth;\x0a\x09\x09\x09\x09let\x20ratioY\x20=\x20this.canvas.height\x20/\x20frameMetaData.processingHeight;\x0a\x09\x09\x09\x09for\x20(let\x20corner\x20of\x20holder.corners)\x20{\x0a\x09\x09\x09\x09\x09corner.x\x20*=\x20ratioX;\x0a\x09\x09\x09\x09\x09corner.y\x20*=\x20ratioY;\x0a\x09\x09\x09\x09\x09dstCorners[dstCorners.length]\x20=\x20corner.x;\x0a\x09\x09\x09\x09\x09dstCorners[dstCorners.length]\x20=\x20corner.y;\x0a\x09\x09\x09\x09}\x0a\x09\x09\x09\x20\x20\x20\x0a\x09\x09\x09\x09let\x20perspT\x20=\x20PerspT(srcCorners,\x20dstCorners);\x0a\x09\x09\x09\x09this.ctx.uniformMatrix3fv(placeHolderHomographyLocation,\x20false,\x20perspT.coeffsInv);\x0a\x09\x09\x09\x09*/\x0a\x09\x09\x09\x09placeHolderIndex++;\x0a\x09\x09\x09}\x0a\x09\x09}\x20else\x20{\x0a\x09\x09\x09//\x20\x20\x20\x20console.log(`No\x20data\x20at\x20${tc}`);\x0a\x09\x09}\x0a\x0a\x09\x09//mark\x20the\x20other\x20logo\x20as\x20\x22not\x20exist\x22\x0a\x09\x09for\x20(;\x20placeHolderIndex\x20<\x20BB.MAX_LOGOS;\x20++placeHolderIndex)\x20{\x0a\x09\x09\x09let\x20hasLogoUniformName\x20=\x20\x22hasLogo\x22\x20+\x20placeHolderIndex;\x0a\x09\x09\x09let\x20hasLogoLoc\x20=\x20this.ctx.getUniformLocation(this.program,\x20hasLogoUniformName);\x0a\x09\x09\x09this.ctx.uniform1i(hasLogoLoc,\x200);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//unbind\x20the\x20textures\x20that\x20are\x20not\x20required\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20alphaUnfiromName\x20=\x20\x22alpha\x22\x20+\x20placeHolderIndex;\x0a\x09\x09\x09let\x20location\x20=\x20this.ctx.getUniformLocation(this.program,\x20alphaUnfiromName);\x0a\x09\x09\x09this.ctx.uniform1i(location,\x200);\x0a\x09\x09}\x0a\x09\x09//render\x20the\x20timecode\x20on\x20the\x20canvas\x20(for\x20debug)\x0a\x09\x09if\x20(this.options.renderTimecode)\x20\x0a\x09\x09{{\x0a\x09\x09\x09let\x20framesAndField\x20=\x20nextTimeCode.split(\x22:\x22)[3];\x0a\x09\x09\x09let\x20field\x20=\x20(framesAndField.indexOf(\x22.\x22)\x20>=\x200)\x20?\x202\x20:\x201;\x0a\x09\x09\x09let\x20frameLastDigit\x20=\x20parseInt(framesAndField.split(\x22.\x22)[0])%10;\x0a\x09\x09\x09let\x20debugImgStr\x20=\x20frameLastDigit\x20+\x20\x22.\x22\x20+\x20field;//\x221.1\x22;\x0a\x09\x09\x09//console.log(\x22render\x20\x22\x20+\x20debugImgStr\x20+\x20\x22\x20tc\x20=\x20\x22\x20+\x20nextTimeCode\x20+\x20\x22\x20scedueled\x20on\x20frame\x20\x22\x20+\x20debug_lastFrameFromVideoCallback\x20+\x20\x22(\x22\x20+\x20debug_tc\x20+\x20\x22)\x22);\x0a\x09\x09\x09let\x20digitTextureNum\x20=\x20this.TexUnitBaseForAlpha()\x20+\x205;\x0a\x09\x09\x09let\x20digitTex\x20=\x20this.GenerateTexture(\x0a\x09\x09\x09\x09this.digitImg[debugImgStr],\x0a\x09\x09\x09\x09digitTextureNum,\x0a\x09\x09\x09\x09\x22digitTex\x22);\x0a\x09\x09\x09texturesForThisFrame.push(digitTex);\x0a\x09\x09\x09let\x20hasDigitUniformName\x20=\x20\x22hasDigit\x22;\x0a\x09\x09\x09let\x20hasDigitLoc\x20=\x20this.ctx.getUniformLocation(this.program,\x20hasDigitUniformName);\x0a\x09\x09\x09this.ctx.uniform1i(hasDigitLoc,\x201);\x0a\x09\x09\x09//set\x20that\x20digit\x27s\x20top-left\x20and\x20size\x0a\x09\x09\x09let\x20digitTopLeftUniformName\x20=\x20\x22u_digitTopLeft\x22;\x0a\x09\x09\x09let\x20digitTopLeftLoc\x20=\x20this.ctx.getUniformLocation(this.program,\x20digitTopLeftUniformName);\x0a\x09\x09\x09this.ctx.uniform2fv(digitTopLeftLoc,\x20[0,\x200]);\x0a\x09\x09\x09\x0a\x09\x09\x09let\x20digitSizeUniformName\x20=\x20\x22u_digitSize\x22;\x0a\x09\x09\x09let\x20digitSizeLoc\x20=\x20this.ctx.getUniformLocation(this.program,\x20digitSizeUniformName);\x0a\x09\x09\x09this.ctx.uniform2fv(digitSizeLoc,\x20[200,\x20200]);\x0a\x09\x09\x09\x0a\x09\x09\x09//let\x20digitTopLeftUniformName2\x20=\x20\x22u_digitTopLeft2\x22;\x0a\x09\x09\x09//let\x20digitTopLeftLoc2\x20=\x20this.ctx.getUniformLocation(this.program,\x20digitTopLeftUniformName2);\x0a\x09\x09\x09//this.ctx.uniform2fv(digitTopLeftLoc2,\x20[1000,\x200]);\x0a\x09\x09\x09\x0a\x09\x09\x09\x0a\x09\x09}\x0a\x09\x09/*{\x0a\x09\x09\x09let\x20framesAndField\x20=\x20nextTimeCode.split(\x22:\x22)[3];\x0a\x09\x09\x09let\x20field\x20=\x20(framesAndField.indexOf(\x22.\x22)\x20>=\x200)\x20?\x202\x20:\x201;\x0a\x09\x09\x09let\x20frameLastDigit\x20=\x20parseInt(framesAndField.split(\x22.\x22)[0])%10;\x0a\x09\x09\x09let\x20debugImgStr\x20=\x20frameLastDigit\x20+\x20\x22.\x22\x20+\x20field;//\x221.1\x22;\x0a\x09\x09\x09//console.log(\x22render\x20\x22\x20+\x20debugImgStr\x20+\x20\x22\x20tc\x20=\x20\x22\x20+\x20nextTimeCode\x20+\x20\x22\x20scedueled\x20on\x20frame\x20\x22\x20+\x20debug_lastFrameFromVideoCallback\x20+\x20\x22(\x22\x20+\x20debug_tc\x20+\x20\x22)\x22);\x0a\x09\x09\x09let\x20digitTextureNum\x20=\x20this.TexUnitBaseForAlpha()\x20+\x205;\x0a\x09\x09\x09let\x20digitTex\x20=\x20this.GenerateTexture(\x0a\x09\x09\x09\x09this.digitImg[debugImgStr],\x0a\x09\x09\x09\x09digitTextureNum,\x0a\x09\x09\x09\x09\x22digitTex\x22);\x0a\x09\x09\x09texturesForThisFrame.push(digitTex);\x0a\x09\x09\x09let\x20hasDigitUniformName\x20=\x20\x22hasDigit\x22;\x0a\x09\x09\x09let\x20hasDigitLoc\x20=\x20this.ctx.getUniformLocation(this.program,\x20hasDigitUniformName);\x0a\x09\x09\x09this.ctx.uniform1i(hasDigitLoc,\x201);\x0a\x09\x09\x09//set\x20that\x20digit\x27s\x20top-left\x20and\x20size\x0a\x09\x09\x09let\x20digitTopLeftUniformName\x20=\x20\x22u_digitTopLeft2\x22;\x0a\x09\x09\x09let\x20digitTopLeftLoc2\x20=\x20this.ctx.getUniformLocation(this.program,\x20digitTopLeftUniformName);\x0a\x09\x09\x09this.ctx.uniform2fv(digitTopLeftLoc2,\x20[1000,\x200]);\x0a\x09\x09\x09let\x20digitSizeUniformName\x20=\x20\x22u_digitSize\x22;\x0a\x09\x09\x09let\x20digitSizeLoc\x20=\x20this.ctx.getUniformLocation(this.program,\x20digitSizeUniformName);\x0a\x09\x09\x09this.ctx.uniform2fv(digitSizeLoc,\x20[200,\x20200]);\x0a\x09\x09}*/\x0a\x09\x09\x09/*\x0a\x09\x09\x09let\x20adForLogoUniformName\x20=\x20\x22adForLogo\x22\x20+\x20placeHolderIndex;\x0a\x09\x09\x09let\x20adForLogoUniform\x20=\x20this.ctx.getUniformLocation(this.program,\x20adForLogoUniformName);\x0a\x09\x09\x09let\x20isBlur\x20=\x20false;\x0a\x09\x09\x09if\x20(holder.name.indexOf(\x22blur\x22)\x20>=\x200)\x0a\x09\x09\x09{\x0a\x09\x09\x09\x09this.ctx.uniform1i(adForLogoUniform,\x2099);\x0a\x09\x09\x09\x09\x20isBlur\x20=\x20true;\x0a\x09\x09\x09}\x0a\x09\x09\x09else\x0a\x09\x09\x09{\x0a\x09\x09\x09\x09this.ctx.uniform1i(adForLogoUniform,\x20this.TexUnitForPlaceHolder(holder));\x0a\x09\x09\x09}\x0a\x09\x09\x09*/\x0a\x09\x09}\x09\x0a\x09\x09else\x20//no\x20digit\x0a\x09\x09{\x0a\x09\x09\x09let\x20hasDigitUniformName\x20=\x20\x22hasDigit\x22;\x0a\x09\x09\x09let\x20hasDigitLoc\x20=\x20this.ctx.getUniformLocation(this.program,\x20hasDigitUniformName);\x0a\x09\x09\x09this.ctx.uniform1i(hasDigitLoc,\x200);\x0a\x09\x09}\x0a\x0a\x09\x09//render\x20the\x20frame\x0a\x09\x09this.RenderFrame();\x0a\x0a\x09\x09//cleanup:\x0a\x09\x09//delete\x20the\x20texture\x20created\x20for\x20this\x20frame\x0a\x09\x09for\x20(const\x20texture\x20of\x20texturesForThisFrame)\x20{\x0a\x09\x09\x09this.ctx.deleteTexture(texture);\x0a\x09\x09}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20}\x0a\x09getCanvas()\x20{\x0a\x09\x09return\x20this.canvas;\x0a\x09}\x0a}\x0a\x0alet\x20composer\x20=\x20null;\x0aonmessage\x20=\x20(evt)\x20=>\x20{\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20switch\x20(evt.data.method){\x0a\x20\x20\x20\x20\x20\x20\x20\x20case\x20\x22OnUserClickOnCanvas\x22:\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(composer)\x20composer.OnUserClickOnCanvas(evt.data.data);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x20\x20\x20\x20\x20\x20\x20\x20case\x20\x22CleanGL\x22:\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(composer)\x20composer.CleanGL();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x20\x20\x20\x20\x20\x20\x20\x20case\x20\x22AddAdvertisement\x22:\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(composer)\x20composer.AddAdvertisement(evt.data.data);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x20\x20\x20\x20\x20\x20\x20\x20case\x20\x22SelectAd\x22:\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(composer)\x20composer.SelectAd(evt.data.data);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x20\x20\x20\x20\x20\x20\x20\x20case\x20\x22OnMetaData\x22:\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(composer)\x20composer.OnMetaData(evt.data.data);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x20\x20\x20\x20\x20\x20\x20\x20case\x20\x22renderAugmentation\x22:\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(composer)\x20composer.renderAugmentation(evt.data.data);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x20\x20\x20\x20\x20\x20\x20\x20case\x20\x22constructor\x22:\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20composer\x20=\x20new\x20BB.Composer3d(evt.data.GL,evt.data.canvas,evt.data.sourceFPS,\x20evt.data.renderTimecodes,\x20evt.data.digitImg);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x20\x20\x20\x20\x20\x20\x20\x20default:\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x22Wrong\x20Thread\x20Message\x22);\x0a\x20\x20\x20\x20}\x0a}\x0a',META_WORKER='try\x20{\x0a\x0alet\x20UZIP\x20=\x20{};\x0aif(typeof\x20module\x20==\x20\x22object\x22)\x20module.exports\x20=\x20UZIP;\x0aUZIP[\x22parse\x22]\x20=\x20function(buf,\x20onlyNames)\x09//\x20ArrayBuffer\x0a{\x0a\x20\x20\x20\x20let\x20rUs\x20=\x20UZIP.bin.readUshort,\x20rUi\x20=\x20UZIP.bin.readUint,\x20o\x20=\x200,\x20out\x20=\x20{};\x0a\x20\x20\x20\x20let\x20data\x20=\x20new\x20Uint8Array(buf);\x0a\x20\x20\x20\x20let\x20eocd\x20=\x20data.length-4;\x0a\x0a\x20\x20\x20\x20while(rUi(data,\x20eocd)!=0x06054b50)\x20eocd--;\x0a\x0a\x20\x20\x20\x20o\x20=\x20eocd;\x0a\x20\x20\x20\x20o+=4;\x09//\x20sign\x20\x20=\x200x06054b50\x0a\x20\x20\x20\x20o+=4;\x20\x20//\x20disks\x20=\x200;\x0a\x20\x20\x20\x20let\x20cnu\x20=\x20rUs(data,\x20o);\x20\x20o+=2;\x0a\x20\x20\x20\x20let\x20cnt\x20=\x20rUs(data,\x20o);\x20\x20o+=2;\x0a\x0a\x20\x20\x20\x20let\x20csize\x20=\x20rUi(data,\x20o);\x20\x20o+=4;\x0a\x20\x20\x20\x20let\x20coffs\x20=\x20rUi(data,\x20o);\x20\x20o+=4;\x0a\x0a\x20\x20\x20\x20o\x20=\x20coffs;\x0a\x20\x20\x20\x20for(let\x20i=0;\x20i<cnu;\x20i++)\x0a\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20sign\x20=\x20rUi(data,\x20o);\x20\x20o+=4;\x0a\x20\x20\x20\x20\x20\x20\x20\x20o\x20+=\x204;\x20\x20//\x20versions;\x0a\x20\x20\x20\x20\x20\x20\x20\x20o\x20+=\x204;\x20\x20//\x20flag\x20+\x20compr\x0a\x20\x20\x20\x20\x20\x20\x20\x20o\x20+=\x204;\x20\x20//\x20time\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20crc32\x20=\x20rUi(data,\x20o);\x20\x20o+=4;\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20csize\x20=\x20rUi(data,\x20o);\x20\x20o+=4;\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20usize\x20=\x20rUi(data,\x20o);\x20\x20o+=4;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20nl\x20=\x20rUs(data,\x20o),\x20el\x20=\x20rUs(data,\x20o+2),\x20cl\x20=\x20rUs(data,\x20o+4);\x20\x20o\x20+=\x206;\x20\x20//\x20name,\x20extra,\x20comment\x0a\x20\x20\x20\x20\x20\x20\x20\x20o\x20+=\x208;\x20\x20//\x20disk,\x20attribs\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20roff\x20=\x20rUi(data,\x20o);\x20\x20o+=4;\x0a\x20\x20\x20\x20\x20\x20\x20\x20o\x20+=\x20nl\x20+\x20el\x20+\x20cl;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20UZIP._readLocal(data,\x20roff,\x20out,\x20csize,\x20usize,\x20onlyNames);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20//console.log(out);\x0a\x20\x20\x20\x20return\x20out;\x0a}\x0a\x0aUZIP._readLocal\x20=\x20function(data,\x20o,\x20out,\x20csize,\x20usize,\x20onlyNames)\x0a{\x0a\x20\x20\x20\x20let\x20rUs\x20=\x20UZIP.bin.readUshort,\x20rUi\x20=\x20UZIP.bin.readUint;\x0a\x20\x20\x20\x20let\x20sign\x20\x20=\x20rUi(data,\x20o);\x20\x20o+=4;\x0a\x20\x20\x20\x20let\x20ver\x20\x20\x20=\x20rUs(data,\x20o);\x20\x20o+=2;\x0a\x20\x20\x20\x20let\x20gpflg\x20=\x20rUs(data,\x20o);\x20\x20o+=2;\x0a\x20\x20\x20\x20//if((gpflg&8)!=0)\x20throw\x20\x22unknown\x20sizes\x22;\x0a\x20\x20\x20\x20let\x20cmpr\x20\x20=\x20rUs(data,\x20o);\x20\x20o+=2;\x0a\x0a\x20\x20\x20\x20let\x20time\x20\x20=\x20rUi(data,\x20o);\x20\x20o+=4;\x0a\x0a\x20\x20\x20\x20let\x20crc32\x20=\x20rUi(data,\x20o);\x20\x20o+=4;\x0a\x20\x20\x20\x20//let\x20csize\x20=\x20rUi(data,\x20o);\x20\x20o+=4;\x0a\x20\x20\x20\x20//let\x20usize\x20=\x20rUi(data,\x20o);\x20\x20o+=4;\x0a\x20\x20\x20\x20o+=8;\x0a\x0a\x20\x20\x20\x20let\x20nlen\x20\x20=\x20rUs(data,\x20o);\x20\x20o+=2;\x0a\x20\x20\x20\x20let\x20elen\x20\x20=\x20rUs(data,\x20o);\x20\x20o+=2;\x0a\x0a\x20\x20\x20\x20let\x20name\x20=\x20\x20UZIP.bin.readUTF8(data,\x20o,\x20nlen);\x20\x20o+=nlen;\x20\x20//console.log(name);\x0a\x20\x20\x20\x20o\x20+=\x20elen;\x0a\x0a\x20\x20\x20\x20//console.log(sign.toString(16),\x20ver,\x20gpflg,\x20cmpr,\x20crc32.toString(16),\x20\x22csize,\x20usize\x22,\x20csize,\x20usize,\x20nlen,\x20elen,\x20name,\x20o);\x0a\x20\x20\x20\x20if(onlyNames)\x20{\x20\x20out[name]={size:usize,\x20csize:csize};\x20\x20return;\x20\x20}\x0a\x20\x20\x20\x20let\x20file\x20=\x20new\x20Uint8Array(data.buffer,\x20o);\x0a\x20\x20\x20\x20if(false)\x20{}\x0a\x20\x20\x20\x20else\x20if(cmpr==0)\x20out[name]\x20=\x20new\x20Uint8Array(file.buffer.slice(o,\x20o+csize));\x0a\x20\x20\x20\x20else\x20if(cmpr==8)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20buf\x20=\x20new\x20Uint8Array(usize);\x20\x20UZIP.inflateRaw(file,\x20buf);\x0a\x20\x20\x20\x20\x20\x20\x20\x20/*let\x20nbuf\x20=\x20pako[\x22inflateRaw\x22](file);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(usize>8514000)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//console.log(PUtils.readASCII(buf\x20,\x208514500,\x20500));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//console.log(PUtils.readASCII(nbuf,\x208514500,\x20500));\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20for(let\x20i=0;\x20i<buf.length;\x20i++)\x20if(buf[i]!=nbuf[i])\x20{\x20\x20console.log(buf.length,\x20nbuf.length,\x20usize,\x20i);\x20\x20throw\x20\x22e\x22;\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20*/\x0a\x20\x20\x20\x20\x20\x20\x20\x20out[name]\x20=\x20buf;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20else\x20throw\x20\x22unknown\x20compression\x20method:\x20\x22+cmpr;\x0a}\x0a\x0aUZIP.inflateRaw\x20=\x20function(file,\x20buf)\x20{\x20\x20return\x20UZIP.F.inflate(file,\x20buf);\x20\x20}\x0aUZIP.inflate\x20\x20\x20\x20=\x20function(file,\x20buf)\x20{\x0a\x20\x20\x20\x20let\x20CMF\x20=\x20file[0],\x20FLG\x20=\x20file[1];\x0a\x20\x20\x20\x20let\x20CM\x20=\x20(CMF&15),\x20CINFO\x20=\x20(CMF>>>4);\x0a\x20\x20\x20\x20//console.log(CM,\x20CINFO,CMF,FLG);\x0a\x20\x20\x20\x20return\x20UZIP.inflateRaw(new\x20Uint8Array(file.buffer,\x20file.byteOffset+2,\x20file.length-6),\x20buf);\x0a}\x0aUZIP.deflate\x20\x20\x20\x20=\x20function(data,\x20opts/*,\x20buf,\x20off*/)\x20{\x0a\x20\x20\x20\x20if(opts==null)\x20opts={level:6};\x0a\x20\x20\x20\x20let\x20off=0,\x20buf=new\x20Uint8Array(50+Math.floor(data.length*1.1));\x0a\x20\x20\x20\x20buf[off]=120;\x20\x20buf[off+1]=156;\x20\x20off+=2;\x0a\x20\x20\x20\x20off\x20=\x20UZIP.F.deflateRaw(data,\x20buf,\x20off,\x20opts.level);\x0a\x20\x20\x20\x20let\x20crc\x20=\x20UZIP.adler(data,\x200,\x20data.length);\x0a\x20\x20\x20\x20buf[off+0]=((crc>>>24)&255);\x0a\x20\x20\x20\x20buf[off+1]=((crc>>>16)&255);\x0a\x20\x20\x20\x20buf[off+2]=((crc>>>\x208)&255);\x0a\x20\x20\x20\x20buf[off+3]=((crc>>>\x200)&255);\x0a\x20\x20\x20\x20return\x20new\x20Uint8Array(buf.buffer,\x200,\x20off+4);\x0a}\x0aUZIP.deflateRaw\x20=\x20function(data,\x20opts)\x20{\x0a\x20\x20\x20\x20if(opts==null)\x20opts={level:6};\x0a\x20\x20\x20\x20let\x20buf=new\x20Uint8Array(50+Math.floor(data.length*1.1));\x0a\x20\x20\x20\x20let\x20off\x20=\x20UZIP.F.deflateRaw(data,\x20buf,\x20off,\x20opts.level);\x0a\x20\x20\x20\x20return\x20new\x20Uint8Array(buf.buffer,\x200,\x20off);\x0a}\x0a\x0a\x0aUZIP.encode\x20=\x20function(obj,\x20noCmpr)\x20{\x0a\x20\x20\x20\x20if(noCmpr==null)\x20noCmpr=false;\x0a\x20\x20\x20\x20let\x20tot\x20=\x200,\x20wUi\x20=\x20UZIP.bin.writeUint,\x20wUs\x20=\x20UZIP.bin.writeUshort;\x0a\x20\x20\x20\x20let\x20zpd\x20=\x20{};\x0a\x20\x20\x20\x20for(let\x20p\x20in\x20obj)\x20{\x20\x20let\x20cpr\x20=\x20!UZIP._noNeed(p)\x20&&\x20!noCmpr,\x20buf\x20=\x20obj[p],\x20crc\x20=\x20UZIP.crc.crc(buf,0,buf.length);\x0a\x20\x20\x20\x20\x20\x20\x20\x20zpd[p]\x20=\x20{\x20\x20cpr:cpr,\x20usize:buf.length,\x20crc:crc,\x20file:\x20(cpr\x20?\x20UZIP.deflateRaw(buf)\x20:\x20buf)\x20\x20};\x20\x20}\x0a\x0a\x20\x20\x20\x20for(let\x20p\x20in\x20zpd)\x20tot\x20+=\x20zpd[p].file.length\x20+\x2030\x20+\x2046\x20+\x202*UZIP.bin.sizeUTF8(p);\x0a\x20\x20\x20\x20tot\x20+=\x20\x2022;\x0a\x0a\x20\x20\x20\x20let\x20data\x20=\x20new\x20Uint8Array(tot),\x20o\x20=\x200;\x0a\x20\x20\x20\x20let\x20fof\x20=\x20[]\x0a\x0a\x20\x20\x20\x20for(let\x20p\x20in\x20zpd)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20file\x20=\x20zpd[p];\x20\x20fof.push(o);\x0a\x20\x20\x20\x20\x20\x20\x20\x20o\x20=\x20UZIP._writeHeader(data,\x20o,\x20p,\x20file,\x200);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20let\x20i=0,\x20ioff\x20=\x20o;\x0a\x20\x20\x20\x20for(let\x20p\x20in\x20zpd)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20file\x20=\x20zpd[p];\x20\x20fof.push(o);\x0a\x20\x20\x20\x20\x20\x20\x20\x20o\x20=\x20UZIP._writeHeader(data,\x20o,\x20p,\x20file,\x201,\x20fof[i++]);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20let\x20csize\x20=\x20o-ioff;\x0a\x0a\x20\x20\x20\x20wUi(data,\x20o,\x200x06054b50);\x20\x20o+=4;\x0a\x20\x20\x20\x20o\x20+=\x204;\x20\x20//\x20disks\x0a\x20\x20\x20\x20wUs(data,\x20o,\x20i);\x20\x20o\x20+=\x202;\x0a\x20\x20\x20\x20wUs(data,\x20o,\x20i);\x20\x20o\x20+=\x202;\x09//\x20number\x20of\x20c\x20d\x20records\x0a\x20\x20\x20\x20wUi(data,\x20o,\x20csize);\x20\x20o\x20+=\x204;\x0a\x20\x20\x20\x20wUi(data,\x20o,\x20ioff\x20);\x20\x20o\x20+=\x204;\x0a\x20\x20\x20\x20o\x20+=\x202;\x0a\x20\x20\x20\x20return\x20data.buffer;\x0a}\x0a//\x20no\x20need\x20to\x20compress\x20.PNG,\x20.ZIP,\x20.JPEG\x20....\x0aUZIP._noNeed\x20=\x20function(fn)\x20{\x20\x20let\x20ext\x20=\x20fn.split(\x22.\x22).pop().toLowerCase();\x20\x20return\x20\x22png,jpg,jpeg,zip\x22.indexOf(ext)!=-1;\x20\x20}\x0a\x0aUZIP._writeHeader\x20=\x20function(data,\x20o,\x20p,\x20obj,\x20t,\x20roff)\x0a{\x0a\x20\x20\x20\x20let\x20wUi\x20=\x20UZIP.bin.writeUint,\x20wUs\x20=\x20UZIP.bin.writeUshort;\x0a\x20\x20\x20\x20let\x20file\x20=\x20obj.file;\x0a\x0a\x20\x20\x20\x20wUi(data,\x20o,\x20t==0\x20?\x200x04034b50\x20:\x200x02014b50);\x20\x20o+=4;\x20//\x20sign\x0a\x20\x20\x20\x20if(t==1)\x20o+=2;\x20\x20//\x20ver\x20made\x20by\x0a\x20\x20\x20\x20wUs(data,\x20o,\x2020);\x20\x20o+=2;\x09//\x20ver\x0a\x20\x20\x20\x20wUs(data,\x20o,\x20\x200);\x20\x20o+=2;\x20\x20\x20\x20//\x20gflip\x0a\x20\x20\x20\x20wUs(data,\x20o,\x20\x20obj.cpr?8:0);\x20\x20o+=2;\x09//\x20cmpr\x0a\x0a\x20\x20\x20\x20wUi(data,\x20o,\x20\x200);\x20\x20o+=4;\x09//\x20time\x0a\x20\x20\x20\x20wUi(data,\x20o,\x20obj.crc);\x20\x20o+=4;\x09//\x20crc32\x0a\x20\x20\x20\x20wUi(data,\x20o,\x20file.length);\x20\x20o+=4;\x09//\x20csize\x0a\x20\x20\x20\x20wUi(data,\x20o,\x20obj.usize);\x20\x20o+=4;\x09//\x20usize\x0a\x0a\x20\x20\x20\x20wUs(data,\x20o,\x20UZIP.bin.sizeUTF8(p));\x20\x20o+=2;\x09//\x20nlen\x0a\x20\x20\x20\x20wUs(data,\x20o,\x200);\x20\x20o+=2;\x09//\x20elen\x0a\x0a\x20\x20\x20\x20if(t==1)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20o\x20+=\x202;\x20\x20//\x20comment\x20length\x0a\x20\x20\x20\x20\x20\x20\x20\x20o\x20+=\x202;\x20\x20//\x20disk\x20number\x0a\x20\x20\x20\x20\x20\x20\x20\x20o\x20+=\x206;\x20\x20//\x20attributes\x0a\x20\x20\x20\x20\x20\x20\x20\x20wUi(data,\x20o,\x20roff);\x20\x20o+=4;\x09//\x20usize\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20let\x20nlen\x20=\x20UZIP.bin.writeUTF8(data,\x20o,\x20p);\x20\x20o+=\x20nlen;\x0a\x20\x20\x20\x20if(t==0)\x20{\x20\x20data.set(file,\x20o);\x20\x20o\x20+=\x20file.length;\x20\x20}\x0a\x20\x20\x20\x20return\x20o;\x0a}\x0aUZIP.crc\x20=\x20{\x0a\x20\x20\x20\x20table\x20:\x20(\x20function()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20tab\x20=\x20new\x20Uint32Array(256);\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(let\x20n=0;\x20n<256;\x20n++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20c\x20=\x20n;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(let\x20k=0;\x20k<8;\x20k++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(c\x20&\x201)\x20\x20c\x20=\x200xedb88320\x20^\x20(c\x20>>>\x201);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20else\x20\x20\x20\x20\x20\x20\x20\x20c\x20=\x20c\x20>>>\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20tab[n]\x20=\x20c;\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20tab;\x20\x20})(),\x0a\x20\x20\x20\x20update\x20:\x20function(c,\x20buf,\x20off,\x20len)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(let\x20i=0;\x20i<len;\x20i++)\x20\x20c\x20=\x20UZIP.crc.table[(c\x20^\x20buf[off+i])\x20&\x200xff]\x20^\x20(c\x20>>>\x208);\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20c;\x0a\x20\x20\x20\x20},\x0a\x20\x20\x20\x20crc\x20:\x20function(b,o,l)\x20\x20{\x20\x20return\x20UZIP.crc.update(0xffffffff,b,o,l)\x20^\x200xffffffff;\x20\x20}\x0a}\x0aUZIP.adler\x20=\x20function(data,o,len)\x20{\x0a\x20\x20\x20\x20let\x20a\x20=\x201,\x20b\x20=\x200;\x0a\x20\x20\x20\x20let\x20off\x20=\x20o,\x20end=o+len;\x0a\x20\x20\x20\x20while(off<end)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20eend\x20=\x20Math.min(off+5552,\x20end);\x0a\x20\x20\x20\x20\x20\x20\x20\x20while(off<eend)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20a\x20+=\x20data[off++];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20b\x20+=\x20a;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20a=a%65521;\x0a\x20\x20\x20\x20\x20\x20\x20\x20b=b%65521;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20(b\x20<<\x2016)\x20|\x20a;\x0a}\x0a\x0aUZIP.bin\x20=\x20{\x0a\x20\x20\x20\x20readUshort\x20:\x20function(buff,p)\x20\x20{\x20\x20return\x20(buff[p])\x20|\x20(buff[p+1]<<8);\x20\x20},\x0a\x20\x20\x20\x20writeUshort:\x20function(buff,p,n){\x20\x20buff[p]\x20=\x20(n)&255;\x20\x20buff[p+1]\x20=\x20(n>>8)&255;\x20\x20},\x0a\x20\x20\x20\x20readUint\x20\x20\x20:\x20function(buff,p)\x20\x20{\x20\x20return\x20(buff[p+3]*(256*256*256))\x20+\x20((buff[p+2]<<16)\x20|\x20(buff[p+1]<<\x208)\x20|\x20buff[p]);\x20\x20},\x0a\x20\x20\x20\x20writeUint\x20\x20:\x20function(buff,p,n){\x20\x20buff[p]=n&255;\x20\x20buff[p+1]=(n>>8)&255;\x20\x20buff[p+2]=(n>>16)&255;\x20\x20buff[p+3]=(n>>24)&255;\x20\x20},\x0a\x20\x20\x20\x20readASCII\x20\x20:\x20function(buff,p,l){\x20\x20let\x20s\x20=\x20\x22\x22;\x20\x20for(let\x20i=0;\x20i<l;\x20i++)\x20s\x20+=\x20String.fromCharCode(buff[p+i]);\x20\x20return\x20s;\x20\x20\x20\x20},\x0a\x20\x20\x20\x20writeASCII\x20:\x20function(data,p,s){\x20\x20for(let\x20i=0;\x20i<s.length;\x20i++)\x20data[p+i]\x20=\x20s.charCodeAt(i);\x20\x20},\x0a\x20\x20\x20\x20pad\x20:\x20function(n)\x20{\x20return\x20n.length\x20<\x202\x20?\x20\x220\x22\x20+\x20n\x20:\x20n;\x20},\x0a\x20\x20\x20\x20readUTF8\x20:\x20function(buff,\x20p,\x20l)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20s\x20=\x20\x22\x22,\x20ns;\x0a\x20\x20\x20\x20\x20\x20\x20\x20for(let\x20i=0;\x20i<l;\x20i++)\x20s\x20+=\x20\x22%\x22\x20+\x20UZIP.bin.pad(buff[p+i].toString(16));\x0a\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x20\x20ns\x20=\x20decodeURIComponent(s);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20catch(e)\x20{\x20\x20return\x20UZIP.bin.readASCII(buff,\x20p,\x20l);\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20\x20ns;\x0a\x20\x20\x20\x20},\x0a\x20\x20\x20\x20writeUTF8\x20:\x20function(buff,\x20p,\x20str)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20strl\x20=\x20str.length,\x20i=0;\x0a\x20\x20\x20\x20\x20\x20\x20\x20for(let\x20ci=0;\x20ci<strl;\x20ci++)\x0a\x20\x20\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20code\x20=\x20str.charCodeAt(ci);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20\x20\x20\x20\x20((code&(0xffffffff-(1<<\x207)+1))==0)\x20{\x20\x20buff[p+i]\x20=\x20(\x20\x20\x20\x20\x20code\x20\x20\x20\x20\x20);\x20\x20i++;\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20else\x20if((code&(0xffffffff-(1<<11)+1))==0)\x20{\x20\x20buff[p+i]\x20=\x20(192|(code>>\x206));\x20\x20buff[p+i+1]\x20=\x20(128|((code>>\x200)&63));\x20\x20i+=2;\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20else\x20if((code&(0xffffffff-(1<<16)+1))==0)\x20{\x20\x20buff[p+i]\x20=\x20(224|(code>>12));\x20\x20buff[p+i+1]\x20=\x20(128|((code>>\x206)&63));\x20\x20buff[p+i+2]\x20=\x20(128|((code>>0)&63));\x20\x20i+=3;\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20else\x20if((code&(0xffffffff-(1<<21)+1))==0)\x20{\x20\x20buff[p+i]\x20=\x20(240|(code>>18));\x20\x20buff[p+i+1]\x20=\x20(128|((code>>12)&63));\x20\x20buff[p+i+2]\x20=\x20(128|((code>>6)&63));\x20\x20buff[p+i+3]\x20=\x20(128|((code>>0)&63));\x20i+=4;\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20else\x20throw\x20\x22e\x22;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20i;\x0a\x20\x20\x20\x20},\x0a\x20\x20\x20\x20sizeUTF8\x20:\x20function(str)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20strl\x20=\x20str.length,\x20i=0;\x0a\x20\x20\x20\x20\x20\x20\x20\x20for(let\x20ci=0;\x20ci<strl;\x20ci++)\x0a\x20\x20\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20code\x20=\x20str.charCodeAt(ci);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20\x20\x20\x20\x20((code&(0xffffffff-(1<<\x207)+1))==0)\x20{\x20\x20i++\x20;\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20else\x20if((code&(0xffffffff-(1<<11)+1))==0)\x20{\x20\x20i+=2;\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20else\x20if((code&(0xffffffff-(1<<16)+1))==0)\x20{\x20\x20i+=3;\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20else\x20if((code&(0xffffffff-(1<<21)+1))==0)\x20{\x20\x20i+=4;\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20else\x20throw\x20\x22e\x22;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20i;\x0a\x20\x20\x20\x20}\x0a}\x0aUZIP.F\x20=\x20{};\x0a\x0aUZIP.F.deflateRaw\x20=\x20function(data,\x20out,\x20opos,\x20lvl)\x20{\x0a\x20\x20\x20\x20let\x20opts\x20=\x20[\x0a\x20\x20\x20\x20\x20\x20\x20\x20/*\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ush\x20good_length;\x20/*\x20reduce\x20lazy\x20search\x20above\x20this\x20match\x20length\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ush\x20max_lazy;\x20\x20\x20\x20/*\x20do\x20not\x20perform\x20lazy\x20search\x20above\x20this\x20match\x20length\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ush\x20nice_length;\x20/*\x20quit\x20search\x20above\x20this\x20match\x20length\x0a\x20\x20\x20\x20\x20\x20\x20\x20*/\x0a\x20\x20\x20\x20\x20\x20\x20\x20/*\x20\x20\x20\x20\x20\x20good\x20lazy\x20nice\x20chain\x20*/\x0a\x20\x20\x20\x20\x20\x20\x20\x20/*\x200\x20*/\x20[\x200,\x20\x20\x200,\x20\x20\x200,\x20\x20\x20\x200,0],\x20\x20/*\x20store\x20only\x20*/\x0a\x20\x20\x20\x20\x20\x20\x20\x20/*\x201\x20*/\x20[\x204,\x20\x20\x204,\x20\x20\x208,\x20\x20\x20\x204,0],\x20/*\x20max\x20speed,\x20no\x20lazy\x20matches\x20*/\x0a\x20\x20\x20\x20\x20\x20\x20\x20/*\x202\x20*/\x20[\x204,\x20\x20\x205,\x20\x2016,\x20\x20\x20\x208,0],\x0a\x20\x20\x20\x20\x20\x20\x20\x20/*\x203\x20*/\x20[\x204,\x20\x20\x206,\x20\x2016,\x20\x20\x2016,0],\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20/*\x204\x20*/\x20[\x204,\x20\x2010,\x20\x2016,\x20\x20\x2032,0],\x20\x20/*\x20lazy\x20matches\x20*/\x0a\x20\x20\x20\x20\x20\x20\x20\x20/*\x205\x20*/\x20[\x208,\x20\x2016,\x20\x2032,\x20\x20\x2032,0],\x0a\x20\x20\x20\x20\x20\x20\x20\x20/*\x206\x20*/\x20[\x208,\x20\x2016,\x20128,\x20\x20128,0],\x0a\x20\x20\x20\x20\x20\x20\x20\x20/*\x207\x20*/\x20[\x208,\x20\x2032,\x20128,\x20\x20256,0],\x0a\x20\x20\x20\x20\x20\x20\x20\x20/*\x208\x20*/\x20[32,\x20128,\x20258,\x201024,1],\x0a\x20\x20\x20\x20\x20\x20\x20\x20/*\x209\x20*/\x20[32,\x20258,\x20258,\x204096,1]];\x20/*\x20max\x20compression\x20*/\x0a\x0a\x20\x20\x20\x20let\x20opt\x20=\x20opts[lvl];\x0a\x0a\x0a\x20\x20\x20\x20let\x20U\x20=\x20UZIP.F.U,\x20goodIndex\x20=\x20UZIP.F._goodIndex,\x20hash\x20=\x20UZIP.F._hash,\x20putsE\x20=\x20UZIP.F._putsE;\x0a\x20\x20\x20\x20let\x20i\x20=\x200,\x20pos\x20=\x20opos<<3,\x20cvrd\x20=\x200,\x20dlen\x20=\x20data.length;\x0a\x0a\x20\x20\x20\x20if(lvl==0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20while(i<dlen)\x20{\x20\x20\x20let\x20len\x20=\x20Math.min(0xffff,\x20dlen-i);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20putsE(out,\x20pos,\x20(i+len==dlen\x20?\x201\x20:\x200));\x20\x20pos\x20=\x20UZIP.F._copyExact(data,\x20i,\x20len,\x20out,\x20pos+8);\x20\x20i\x20+=\x20len;\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20pos>>>3;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20lits\x20=\x20U.lits,\x20strt=U.strt,\x20prev=U.prev,\x20li=0,\x20lc=0,\x20bs=0,\x20ebits=0,\x20c=0,\x20nc=0;\x20\x20//\x20last_item,\x20literal_count,\x20block_start\x0a\x20\x20\x20\x20if(dlen>2)\x20{\x20\x20nc=UZIP.F._hash(data,0);\x20\x20strt[nc]=0;\x20\x20}\x0a\x20\x20\x20\x20let\x20nmch=0,nmci=0;\x0a\x0a\x20\x20\x20\x20for(i=0;\x20i<dlen;\x20i++)\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20c\x20=\x20nc;\x0a\x20\x20\x20\x20\x20\x20\x20\x20//*\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(i+1<dlen-2)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20nc\x20=\x20UZIP.F._hash(data,\x20i+1);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20ii\x20=\x20((i+1)&0x7fff);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20prev[ii]=strt[nc];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20strt[nc]=ii;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20//*/\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(cvrd<=i)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if((li>14000\x20||\x20lc>26697)\x20&&\x20(dlen-i)>100)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(cvrd<i)\x20{\x20\x20lits[li]=i-cvrd;\x20\x20li+=2;\x20\x20cvrd=i;\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20pos\x20=\x20UZIP.F._writeBlock(((i==dlen-1)\x20||\x20(cvrd==dlen))?1:0,\x20lits,\x20li,\x20ebits,\x20data,bs,i-bs,\x20out,\x20pos);\x20\x20li=lc=ebits=0;\x20\x20bs=i;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20mch\x20=\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//if(nmci==i)\x20mch=\x20nmch;\x20\x20else\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(i<dlen-2)\x20mch\x20=\x20UZIP.F._bestMatch(data,\x20i,\x20prev,\x20c,\x20Math.min(opt[2],dlen-i),\x20opt[3]);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/*\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(mch!=0\x20&&\x20opt[4]==1\x20&&\x20(mch>>>16)<opt[1]\x20&&\x20i+1<dlen-2)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20nmch\x20=\x20UZIP.F._bestMatch(data,\x20i+1,\x20prev,\x20nc,\x20opt[2],\x20opt[3]);\x20\x20nmci=i+1;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//let\x20mch2\x20=\x20UZIP.F._bestMatch(data,\x20i+2,\x20prev,\x20nnc);\x20\x20//nmci=i+1;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if((nmch>>>16)>(mch>>>16))\x20mch=0;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}//*/\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20len\x20=\x20mch>>>16,\x20dst\x20=\x20mch&0xffff;\x20\x20//if(i-dst<0)\x20throw\x20\x22e\x22;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(mch!=0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20len\x20=\x20mch>>>16,\x20dst\x20=\x20mch&0xffff;\x20\x20//if(i-dst<0)\x20throw\x20\x22e\x22;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20lgi\x20=\x20goodIndex(len,\x20U.of0);\x20\x20U.lhst[257+lgi]++;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20dgi\x20=\x20goodIndex(dst,\x20U.df0);\x20\x20U.dhst[\x20\x20\x20\x20dgi]++;\x20\x20ebits\x20+=\x20U.exb[lgi]\x20+\x20U.dxb[dgi];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20lits[li]\x20=\x20(len<<23)|(i-cvrd);\x20\x20lits[li+1]\x20=\x20(dst<<16)|(lgi<<8)|dgi;\x20\x20li+=2;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20cvrd\x20=\x20i\x20+\x20len;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20else\x20{\x09U.lhst[data[i]]++;\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20lc++;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if(bs!=i\x20||\x20data.length==0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(cvrd<i)\x20{\x20\x20lits[li]=i-cvrd;\x20\x20li+=2;\x20\x20cvrd=i;\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20pos\x20=\x20UZIP.F._writeBlock(1,\x20lits,\x20li,\x20ebits,\x20data,bs,i-bs,\x20out,\x20pos);\x20\x20li=0;\x20\x20lc=0;\x20\x20li=lc=ebits=0;\x20\x20bs=i;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20while((pos&7)!=0)\x20pos++;\x0a\x20\x20\x20\x20return\x20pos>>>3;\x0a}\x0aUZIP.F._bestMatch\x20=\x20function(data,\x20i,\x20prev,\x20c,\x20nice,\x20chain)\x20{\x0a\x20\x20\x20\x20let\x20ci\x20=\x20(i&0x7fff),\x20pi=prev[ci];\x0a\x20\x20\x20\x20//console.log(\x22----\x22,\x20i);\x0a\x20\x20\x20\x20let\x20dif\x20=\x20((ci-pi\x20+\x20(1<<15))\x20&\x200x7fff);\x20\x20if(pi==ci\x20||\x20c!=UZIP.F._hash(data,i-dif))\x20return\x200;\x0a\x20\x20\x20\x20let\x20tl=0,\x20td=0;\x20\x20//\x20top\x20length,\x20top\x20distance\x0a\x20\x20\x20\x20let\x20dlim\x20=\x20Math.min(0x7fff,\x20i);\x0a\x20\x20\x20\x20while(dif<=dlim\x20&&\x20--chain!=0\x20&&\x20pi!=ci\x20/*&&\x20c==UZIP.F._hash(data,i-dif)*/)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(tl==0\x20||\x20(data[i+tl]==data[i+tl-dif]))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20cl\x20=\x20UZIP.F._howLong(data,\x20i,\x20dif);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(cl>tl)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20tl=cl;\x20\x20td=dif;\x20\x20if(tl>=nice)\x20break;\x20\x20\x20\x20//*\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(dif+2<cl)\x20cl\x20=\x20dif+2;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20maxd\x20=\x200;\x20//\x20pi\x20does\x20not\x20point\x20to\x20the\x20start\x20of\x20the\x20word\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for(let\x20j=0;\x20j<cl-2;\x20j++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20ei\x20=\x20\x20(i-dif+j+\x20(1<<15))\x20&\x200x7fff;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20li\x20=\x20prev[ei];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20curd\x20=\x20(ei-li\x20+\x20(1<<15))\x20&\x200x7fff;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(curd>maxd)\x20{\x20\x20maxd=curd;\x20\x20pi\x20=\x20ei;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20\x20//*/\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20ci=pi;\x20\x20pi\x20=\x20prev[ci];\x0a\x20\x20\x20\x20\x20\x20\x20\x20dif\x20+=\x20((ci-pi\x20+\x20(1<<15))\x20&\x200x7fff);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20(tl<<16)|td;\x0a}\x0aUZIP.F._howLong\x20=\x20function(data,\x20i,\x20dif)\x20{\x0a\x20\x20\x20\x20if(data[i]!=data[i-dif]\x20||\x20data[i+1]!=data[i+1-dif]\x20||\x20data[i+2]!=data[i+2-dif])\x20return\x200;\x0a\x20\x20\x20\x20let\x20oi=i,\x20l\x20=\x20Math.min(data.length,\x20i+258);\x20\x20i+=3;\x0a\x20\x20\x20\x20//while(i+4<l\x20&&\x20data[i]==data[i-dif]\x20&&\x20data[i+1]==data[i+1-dif]\x20&&\x20data[i+2]==data[i+2-dif]\x20&&\x20data[i+3]==data[i+3-dif])\x20i+=4;\x0a\x20\x20\x20\x20while(i<l\x20&&\x20data[i]==data[i-dif])\x20i++;\x0a\x20\x20\x20\x20return\x20i-oi;\x0a}\x0aUZIP.F._hash\x20=\x20function(data,\x20i)\x20{\x0a\x20\x20\x20\x20return\x20(((data[i]<<8)\x20|\x20data[i+1])+(data[i+2]<<4))&0xffff;\x0a\x20\x20\x20\x20//let\x20hash_shift\x20=\x200,\x20hash_mask\x20=\x20255;\x0a\x20\x20\x20\x20//let\x20h\x20=\x20data[i+1]\x20%\x20251;\x0a\x20\x20\x20\x20//h\x20=\x20(((h\x20<<\x208)\x20+\x20data[i+2])\x20%\x20251);\x0a\x20\x20\x20\x20//h\x20=\x20(((h\x20<<\x208)\x20+\x20data[i+2])\x20%\x20251);\x0a\x20\x20\x20\x20//h\x20=\x20((h<<hash_shift)\x20^\x20(c)\x20)\x20&\x20hash_mask;\x0a\x20\x20\x20\x20//return\x20h\x20|\x20(data[i]<<8);\x0a\x20\x20\x20\x20//return\x20(data[i]\x20|\x20(data[i+1]<<8));\x0a}\x0a//UZIP.___toth\x20=\x200;\x0aUZIP.saved\x20=\x200;\x0aUZIP.F._writeBlock\x20=\x20function(BFINAL,\x20lits,\x20li,\x20ebits,\x20data,o0,l0,\x20out,\x20pos)\x20{\x0a\x20\x20\x20\x20let\x20U\x20=\x20UZIP.F.U,\x20putsF\x20=\x20UZIP.F._putsF,\x20putsE\x20=\x20UZIP.F._putsE;\x0a\x0a\x20\x20\x20\x20//*\x0a\x20\x20\x20\x20let\x20T,\x20ML,\x20MD,\x20MH,\x20numl,\x20numd,\x20numh,\x20lset,\x20dset;\x20\x20U.lhst[256]++;\x0a\x20\x20\x20\x20T\x20=\x20UZIP.F.getTrees();\x20ML=T[0];\x20MD=T[1];\x20MH=T[2];\x20numl=T[3];\x20numd=T[4];\x20numh=T[5];\x20lset=T[6];\x20dset=T[7];\x0a\x0a\x20\x20\x20\x20let\x20cstSize\x20=\x20(((pos+3)&7)==0\x20?\x200\x20:\x208-((pos+3)&7))\x20+\x2032\x20+\x20(l0<<3);\x0a\x20\x20\x20\x20let\x20fxdSize\x20=\x20ebits\x20+\x20UZIP.F.contSize(U.fltree,\x20U.lhst)\x20+\x20UZIP.F.contSize(U.fdtree,\x20U.dhst);\x0a\x20\x20\x20\x20let\x20dynSize\x20=\x20ebits\x20+\x20UZIP.F.contSize(U.ltree\x20,\x20U.lhst)\x20+\x20UZIP.F.contSize(U.dtree\x20,\x20U.dhst);\x0a\x20\x20\x20\x20dynSize\x20\x20\x20\x20+=\x2014\x20+\x203*numh\x20+\x20UZIP.F.contSize(U.itree,\x20U.ihst)\x20+\x20(U.ihst[16]*2\x20+\x20U.ihst[17]*3\x20+\x20U.ihst[18]*7);\x0a\x0a\x20\x20\x20\x20for(let\x20j=0;\x20j<286;\x20j++)\x20U.lhst[j]=0;\x20\x20\x20for(let\x20j=0;\x20j<30;\x20j++)\x20U.dhst[j]=0;\x20\x20\x20for(let\x20j=0;\x20j<19;\x20j++)\x20U.ihst[j]=0;\x0a\x20\x20\x20\x20//*/\x0a\x20\x20\x20\x20let\x20BTYPE\x20=\x20(cstSize<fxdSize\x20&&\x20cstSize<dynSize)\x20?\x200\x20:\x20(\x20fxdSize<dynSize\x20?\x201\x20:\x202\x20);\x0a\x20\x20\x20\x20putsF(out,\x20pos,\x20BFINAL);\x20\x20putsF(out,\x20pos+1,\x20BTYPE);\x20\x20pos+=3;\x0a\x0a\x20\x20\x20\x20let\x20opos\x20=\x20pos;\x0a\x20\x20\x20\x20if(BTYPE==0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20while((pos&7)!=0)\x20pos++;\x0a\x20\x20\x20\x20\x20\x20\x20\x20pos\x20=\x20UZIP.F._copyExact(data,\x20o0,\x20l0,\x20out,\x20pos);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20ltree,\x20dtree;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(BTYPE==1)\x20{\x20\x20ltree=U.fltree;\x20\x20dtree=U.fdtree;\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(BTYPE==2)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20UZIP.F.makeCodes(U.ltree,\x20ML);\x20\x20UZIP.F.revCodes(U.ltree,\x20ML);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20UZIP.F.makeCodes(U.dtree,\x20MD);\x20\x20UZIP.F.revCodes(U.dtree,\x20MD);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20UZIP.F.makeCodes(U.itree,\x20MH);\x20\x20UZIP.F.revCodes(U.itree,\x20MH);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ltree\x20=\x20U.ltree;\x20\x20dtree\x20=\x20U.dtree;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20putsE(out,\x20pos,numl-257);\x20\x20pos+=5;\x20\x20//\x20286\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20putsE(out,\x20pos,numd-\x20\x201);\x20\x20pos+=5;\x20\x20//\x2030\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20putsE(out,\x20pos,numh-\x20\x204);\x20\x20pos+=4;\x20\x20//\x2019\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for(let\x20i=0;\x20i<numh;\x20i++)\x20putsE(out,\x20pos+i*3,\x20U.itree[(U.ordr[i]<<1)+1]);\x20\x20\x20pos+=3*\x20numh;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20pos\x20=\x20UZIP.F._codeTiny(lset,\x20U.itree,\x20out,\x20pos);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20pos\x20=\x20UZIP.F._codeTiny(dset,\x20U.itree,\x20out,\x20pos);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20off=o0;\x0a\x20\x20\x20\x20\x20\x20\x20\x20for(let\x20si=0;\x20si<li;\x20si+=2)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20qb=lits[si],\x20len=(qb>>>23),\x20end\x20=\x20off+(qb&((1<<23)-1));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20while(off<end)\x20pos\x20=\x20UZIP.F._writeLit(data[off++],\x20ltree,\x20out,\x20pos);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(len!=0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20qc\x20=\x20lits[si+1],\x20dst=(qc>>16),\x20lgi=(qc>>8)&255,\x20dgi=(qc&255);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20pos\x20=\x20UZIP.F._writeLit(257+lgi,\x20ltree,\x20out,\x20pos);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20putsE(out,\x20pos,\x20len-U.of0[lgi]);\x20\x20pos+=U.exb[lgi];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20pos\x20=\x20UZIP.F._writeLit(dgi,\x20dtree,\x20out,\x20pos);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20putsF(out,\x20pos,\x20dst-U.df0[dgi]);\x20\x20pos+=U.dxb[dgi];\x20\x20off+=len;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20pos\x20=\x20UZIP.F._writeLit(256,\x20ltree,\x20out,\x20pos);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20//console.log(pos-opos,\x20fxdSize,\x20dynSize,\x20cstSize);\x0a\x20\x20\x20\x20return\x20pos;\x0a}\x0aUZIP.F._copyExact\x20=\x20function(data,off,len,out,pos)\x20{\x0a\x20\x20\x20\x20let\x20p8\x20=\x20(pos>>>3);\x0a\x20\x20\x20\x20out[p8]=(len);\x20\x20out[p8+1]=(len>>>8);\x20\x20out[p8+2]=255-out[p8];\x20\x20out[p8+3]=255-out[p8+1];\x20\x20p8+=4;\x0a\x20\x20\x20\x20out.set(new\x20Uint8Array(data.buffer,\x20off,\x20len),\x20p8);\x0a\x20\x20\x20\x20//for(let\x20i=0;\x20i<len;\x20i++)\x20out[p8+i]=data[off+i];\x0a\x20\x20\x20\x20return\x20pos\x20+\x20((len+4)<<3);\x0a}\x0a/*\x0a\x09Interesting\x20facts:\x0a\x09-\x20decompressed\x20block\x20can\x20have\x20bytes,\x20which\x20do\x20not\x20occur\x20in\x20a\x20Huffman\x20tree\x20(copied\x20from\x20the\x20previous\x20block\x20by\x20reference)\x0a*/\x0a\x0aUZIP.F.getTrees\x20=\x20function()\x20{\x0a\x20\x20\x20\x20let\x20U\x20=\x20UZIP.F.U;\x0a\x20\x20\x20\x20let\x20ML\x20=\x20UZIP.F._hufTree(U.lhst,\x20U.ltree,\x2015);\x0a\x20\x20\x20\x20let\x20MD\x20=\x20UZIP.F._hufTree(U.dhst,\x20U.dtree,\x2015);\x0a\x20\x20\x20\x20let\x20lset\x20=\x20[],\x20numl\x20=\x20UZIP.F._lenCodes(U.ltree,\x20lset);\x0a\x20\x20\x20\x20let\x20dset\x20=\x20[],\x20numd\x20=\x20UZIP.F._lenCodes(U.dtree,\x20dset);\x0a\x20\x20\x20\x20for(let\x20i=0;\x20i<lset.length;\x20i+=2)\x20U.ihst[lset[i]]++;\x0a\x20\x20\x20\x20for(let\x20i=0;\x20i<dset.length;\x20i+=2)\x20U.ihst[dset[i]]++;\x0a\x20\x20\x20\x20let\x20MH\x20=\x20UZIP.F._hufTree(U.ihst,\x20U.itree,\x20\x207);\x0a\x20\x20\x20\x20let\x20numh\x20=\x2019;\x20\x20while(numh>4\x20&&\x20U.itree[(U.ordr[numh-1]<<1)+1]==0)\x20numh--;\x0a\x20\x20\x20\x20return\x20[ML,\x20MD,\x20MH,\x20numl,\x20numd,\x20numh,\x20lset,\x20dset];\x0a}\x0aUZIP.F.getSecond=\x20function(a)\x20{\x20\x20let\x20b=[];\x20\x20for(let\x20i=0;\x20i<a.length;\x20i+=2)\x20b.push\x20\x20(a[i+1]);\x20\x20return\x20b;\x20\x20}\x0aUZIP.F.nonZero\x20\x20=\x20function(a)\x20{\x20\x20let\x20b=\x20\x22\x22;\x20\x20for(let\x20i=0;\x20i<a.length;\x20i+=2)\x20if(a[i+1]!=0)b+=(i>>1)+\x22,\x22;\x20\x20return\x20b;\x20\x20}\x0aUZIP.F.contSize\x20=\x20function(tree,\x20hst)\x20{\x20\x20let\x20s=0;\x20\x20for(let\x20i=0;\x20i<hst.length;\x20i++)\x20s+=\x20hst[i]*tree[(i<<1)+1];\x20\x20return\x20s;\x20\x20}\x0aUZIP.F._codeTiny\x20=\x20function(set,\x20tree,\x20out,\x20pos)\x20{\x0a\x20\x20\x20\x20for(let\x20i=0;\x20i<set.length;\x20i+=2)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20l\x20=\x20set[i],\x20rst\x20=\x20set[i+1];\x20\x20//console.log(l,\x20pos,\x20tree[(l<<1)+1]);\x0a\x20\x20\x20\x20\x20\x20\x20\x20pos\x20=\x20UZIP.F._writeLit(l,\x20tree,\x20out,\x20pos);\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20rsl\x20=\x20l==16\x20?\x202\x20:\x20(l==17\x20?\x203\x20:\x207);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(l>15)\x20{\x20\x20UZIP.F._putsE(out,\x20pos,\x20rst,\x20rsl);\x20\x20pos+=rsl;\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20pos;\x0a}\x0aUZIP.F._lenCodes\x20=\x20function(tree,\x20set)\x20{\x0a\x20\x20\x20\x20let\x20len=tree.length;\x20\x20while(len!=2\x20&&\x20tree[len-1]==0)\x20len-=2;\x20\x20//\x20when\x20no\x20distances,\x20keep\x20one\x20code\x20with\x20length\x200\x0a\x20\x20\x20\x20for(let\x20i=0;\x20i<len;\x20i+=2)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20l\x20=\x20tree[i+1],\x20nxt\x20=\x20(i+3<len\x20?\x20tree[i+3]:-1),\x20\x20nnxt\x20=\x20(i+5<len\x20?\x20tree[i+5]:-1),\x20\x20prv\x20=\x20(i==0\x20?\x20-1\x20:\x20tree[i-1]);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(l==0\x20&&\x20nxt==l\x20&&\x20nnxt==l)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20lz\x20=\x20i+5;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20while(lz+2<len\x20&&\x20tree[lz+2]==l)\x20lz+=2;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20zc\x20=\x20Math.min((lz+1-i)>>>1,\x20138);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(zc<11)\x20set.push(17,\x20zc-3);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20else\x20set.push(18,\x20zc-11);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20i\x20+=\x20zc*2-2;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20else\x20if(l==prv\x20&&\x20nxt==l\x20&&\x20nnxt==l)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20lz\x20=\x20i+5;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20while(lz+2<len\x20&&\x20tree[lz+2]==l)\x20lz+=2;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20zc\x20=\x20Math.min((lz+1-i)>>>1,\x206);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20set.push(16,\x20zc-3);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20i\x20+=\x20zc*2-2;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20else\x20set.push(l,\x200);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20len>>>1;\x0a}\x0aUZIP.F._hufTree\x20\x20\x20=\x20function(hst,\x20tree,\x20MAXL)\x20{\x0a\x20\x20\x20\x20let\x20list=[],\x20hl\x20=\x20hst.length,\x20tl=tree.length,\x20i=0;\x0a\x20\x20\x20\x20for(i=0;\x20i<tl;\x20i+=2)\x20{\x20\x20tree[i]=0;\x20\x20tree[i+1]=0;\x20\x20}\x0a\x20\x20\x20\x20for(i=0;\x20i<hl;\x20i++)\x20if(hst[i]!=0)\x20list.push({lit:i,\x20f:hst[i]});\x0a\x20\x20\x20\x20let\x20end\x20=\x20list.length,\x20l2=list.slice(0);\x0a\x20\x20\x20\x20if(end==0)\x20return\x200;\x20\x20//\x20empty\x20histogram\x20(usually\x20for\x20dist)\x0a\x20\x20\x20\x20if(end==1)\x20{\x20\x20let\x20lit=list[0].lit,\x20l2=lit==0?1:0;\x20\x20tree[(lit<<1)+1]=1;\x20\x20tree[(l2<<1)+1]=1;\x20\x20return\x201;\x20\x20}\x0a\x20\x20\x20\x20list.sort(function(a,b){return\x20a.f-b.f;});\x0a\x20\x20\x20\x20let\x20a=list[0],\x20b=list[1],\x20i0=0,\x20i1=1,\x20i2=2;\x20\x20list[0]={lit:-1,f:a.f+b.f,l:a,r:b,d:0};\x0a\x20\x20\x20\x20while(i1!=end-1)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(i0!=i1\x20&&\x20(i2==end\x20||\x20list[i0].f<list[i2].f))\x20{\x20\x20a=list[i0++];\x20\x20}\x20\x20else\x20{\x20\x20a=list[i2++];\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(i0!=i1\x20&&\x20(i2==end\x20||\x20list[i0].f<list[i2].f))\x20{\x20\x20b=list[i0++];\x20\x20}\x20\x20else\x20{\x20\x20b=list[i2++];\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20list[i1++]={lit:-1,f:a.f+b.f,\x20l:a,r:b};\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20let\x20maxl\x20=\x20UZIP.F.setDepth(list[i1-1],\x200);\x0a\x20\x20\x20\x20if(maxl>MAXL)\x20{\x20\x20UZIP.F.restrictDepth(l2,\x20MAXL,\x20maxl);\x20\x20maxl\x20=\x20MAXL;\x20\x20}\x0a\x20\x20\x20\x20for(i=0;\x20i<end;\x20i++)\x20tree[(l2[i].lit<<1)+1]=l2[i].d;\x0a\x20\x20\x20\x20return\x20maxl;\x0a}\x0a\x0aUZIP.F.setDepth\x20\x20=\x20function(t,\x20d)\x20{\x0a\x20\x20\x20\x20if(t.lit!=-1)\x20{\x20\x20t.d=d;\x20\x20return\x20d;\x20\x20}\x0a\x20\x20\x20\x20return\x20Math.max(\x20UZIP.F.setDepth(t.l,\x20d+1),\x20\x20UZIP.F.setDepth(t.r,\x20d+1)\x20);\x0a}\x0a\x0aUZIP.F.restrictDepth\x20=\x20function(dps,\x20MD,\x20maxl)\x20{\x0a\x20\x20\x20\x20let\x20i=0,\x20bCost=1<<(maxl-MD),\x20dbt=0;\x0a\x20\x20\x20\x20dps.sort(function(a,b){return\x20b.d==a.d\x20?\x20a.f-b.f\x20:\x20b.d-a.d;});\x0a\x0a\x20\x20\x20\x20for(i=0;\x20i<dps.length;\x20i++)\x20if(dps[i].d>MD)\x20{\x20\x20let\x20od=dps[i].d;\x20\x20dps[i].d=MD;\x20\x20dbt+=bCost-(1<<(maxl-od));\x20\x20}\x20\x20else\x20break;\x0a\x20\x20\x20\x20dbt\x20=\x20dbt>>>(maxl-MD);\x0a\x20\x20\x20\x20while(dbt>0)\x20{\x20\x20let\x20od=dps[i].d;\x20\x20if(od<MD)\x20{\x20\x20dps[i].d++;\x20\x20dbt-=(1<<(MD-od-1));\x20\x20}\x20\x20else\x20\x20i++;\x20\x20}\x0a\x20\x20\x20\x20for(;\x20i>=0;\x20i--)\x20if(dps[i].d==MD\x20&&\x20dbt<0)\x20{\x20\x20dps[i].d--;\x20\x20dbt++;\x20\x20}\x20\x20if(dbt!=0)\x20console.log(\x22debt\x20left\x22);\x0a}\x0a\x0aUZIP.F._goodIndex\x20=\x20function(v,\x20arr)\x20{\x0a\x20\x20\x20\x20let\x20i=0;\x20\x20if(arr[i|16]<=v)\x20i|=16;\x20\x20if(arr[i|8]<=v)\x20i|=8;\x20\x20if(arr[i|4]<=v)\x20i|=4;\x20\x20if(arr[i|2]<=v)\x20i|=2;\x20\x20if(arr[i|1]<=v)\x20i|=1;\x20\x20return\x20i;\x0a}\x0aUZIP.F._writeLit\x20=\x20function(ch,\x20ltree,\x20out,\x20pos)\x20{\x0a\x20\x20\x20\x20UZIP.F._putsF(out,\x20pos,\x20ltree[ch<<1]);\x0a\x20\x20\x20\x20return\x20pos+ltree[(ch<<1)+1];\x0a}\x0aUZIP.F.inflate\x20=\x20function(data,\x20buf)\x20{\x0a\x20\x20\x20\x20let\x20u8=Uint8Array;\x0a\x20\x20\x20\x20if(data[0]==3\x20&&\x20data[1]==0)\x20return\x20(buf\x20?\x20buf\x20:\x20new\x20u8(0));\x0a\x20\x20\x20\x20let\x20F=UZIP.F,\x20bitsF\x20=\x20F._bitsF,\x20bitsE\x20=\x20F._bitsE,\x20decodeTiny\x20=\x20F._decodeTiny,\x20makeCodes\x20=\x20F.makeCodes,\x20codes2map=F.codes2map,\x20get17\x20=\x20F._get17;\x0a\x20\x20\x20\x20let\x20U\x20=\x20F.U;\x0a\x0a\x20\x20\x20\x20let\x20noBuf\x20=\x20(buf==null);\x0a\x20\x20\x20\x20if(noBuf)\x20buf\x20=\x20new\x20u8((data.length>>>2)<<3);\x0a\x0a\x20\x20\x20\x20let\x20BFINAL=0,\x20BTYPE=0,\x20HLIT=0,\x20HDIST=0,\x20HCLEN=0,\x20ML=0,\x20MD=0;\x0a\x20\x20\x20\x20let\x20off\x20=\x200,\x20pos\x20=\x200;\x0a\x20\x20\x20\x20let\x20lmap,\x20dmap;\x0a\x0a\x20\x20\x20\x20while(BFINAL==0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20BFINAL\x20=\x20bitsF(data,\x20pos\x20\x20,\x201);\x0a\x20\x20\x20\x20\x20\x20\x20\x20BTYPE\x20\x20=\x20bitsF(data,\x20pos+1,\x202);\x20\x20pos+=3;\x0a\x20\x20\x20\x20\x20\x20\x20\x20//console.log(BFINAL,\x20BTYPE);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(BTYPE==0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if((pos&7)!=0)\x20pos+=8-(pos&7);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20p8\x20=\x20(pos>>>3)+4,\x20len\x20=\x20data[p8-4]|(data[p8-3]<<8);\x20\x20//console.log(len);//bitsF(data,\x20pos,\x2016),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(noBuf)\x20buf=UZIP.F._check(buf,\x20off+len);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20buf.set(new\x20u8(data.buffer,\x20data.byteOffset+p8,\x20len),\x20off);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//for(let\x20i=0;\x20i<len;\x20i++)\x20buf[off+i]\x20=\x20data[p8+i];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//for(let\x20i=0;\x20i<len;\x20i++)\x20if(buf[off+i]\x20!=\x20data[p8+i])\x20throw\x20\x22e\x22;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20pos\x20=\x20((p8+len)<<3);\x20\x20off+=len;\x20\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(noBuf)\x20buf=UZIP.F._check(buf,\x20off+(1<<17));\x20\x20//\x20really\x20not\x20enough\x20in\x20many\x20cases\x20(but\x20PNG\x20and\x20ZIP\x20provide\x20buffer\x20in\x20advance)\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(BTYPE==1)\x20{\x20\x20lmap\x20=\x20U.flmap;\x20\x20dmap\x20=\x20U.fdmap;\x20\x20ML\x20=\x20(1<<9)-1;\x20\x20MD\x20=\x20(1<<5)-1;\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(BTYPE==2)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20HLIT\x20\x20=\x20bitsE(data,\x20pos\x20\x20\x20,\x205)+257;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20HDIST\x20=\x20bitsE(data,\x20pos+\x205,\x205)+\x20\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20HCLEN\x20=\x20bitsE(data,\x20pos+10,\x204)+\x20\x204;\x20\x20pos+=14;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20ppos\x20=\x20pos;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for(let\x20i=0;\x20i<38;\x20i+=2)\x20{\x20\x20U.itree[i]=0;\x20\x20U.itree[i+1]=0;\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20tl\x20=\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for(let\x20i=0;\x20i<HCLEN;\x20i++)\x20{\x20\x20let\x20l=bitsE(data,\x20pos+i*3,\x203);\x20\x20U.itree[(U.ordr[i]<<1)+1]\x20=\x20l;\x20\x20if(l>tl)tl=l;\x20\x20}\x20\x20\x20\x20\x20pos+=3*HCLEN;\x20\x20//console.log(itree);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20makeCodes(U.itree,\x20tl);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20codes2map(U.itree,\x20tl,\x20U.imap);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20lmap\x20=\x20U.lmap;\x20\x20dmap\x20=\x20U.dmap;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20pos\x20=\x20decodeTiny(U.imap,\x20(1<<tl)-1,\x20HLIT+HDIST,\x20data,\x20pos,\x20U.ttree);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20mx0\x20=\x20F._copyOut(U.ttree,\x20\x20\x20\x200,\x20HLIT\x20,\x20U.ltree);\x20\x20ML\x20=\x20(1<<mx0)-1;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20mx1\x20=\x20F._copyOut(U.ttree,\x20HLIT,\x20HDIST,\x20U.dtree);\x20\x20MD\x20=\x20(1<<mx1)-1;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//let\x20ml\x20=\x20decodeTiny(U.imap,\x20(1<<tl)-1,\x20HLIT\x20,\x20data,\x20pos,\x20U.ltree);\x20ML\x20=\x20(1<<(ml>>>24))-1;\x20\x20pos+=(ml&0xffffff);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20makeCodes(U.ltree,\x20mx0);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20codes2map(U.ltree,\x20mx0,\x20lmap);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//let\x20md\x20=\x20decodeTiny(U.imap,\x20(1<<tl)-1,\x20HDIST,\x20data,\x20pos,\x20U.dtree);\x20MD\x20=\x20(1<<(md>>>24))-1;\x20\x20pos+=(md&0xffffff);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20makeCodes(U.dtree,\x20mx1);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20codes2map(U.dtree,\x20mx1,\x20dmap);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20//let\x20ooff=off,\x20opos=pos;\x0a\x20\x20\x20\x20\x20\x20\x20\x20while(true)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20code\x20=\x20lmap[get17(data,\x20pos)\x20&\x20ML];\x20\x20pos\x20+=\x20code&15;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20lit\x20=\x20code>>>4;\x20\x20//U.lhst[lit]++;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if((lit>>>8)==0)\x20{\x20\x20buf[off++]\x20=\x20lit;\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20else\x20if(lit==256)\x20{\x20\x20break;\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20end\x20=\x20off+lit-254;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(lit>264)\x20{\x20let\x20ebs\x20=\x20U.ldef[lit-257];\x20\x20end\x20=\x20off\x20+\x20(ebs>>>3)\x20+\x20bitsE(data,\x20pos,\x20ebs&7);\x20\x20pos\x20+=\x20ebs&7;\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//UZIP.F.dst[end-off]++;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20dcode\x20=\x20dmap[get17(data,\x20pos)\x20&\x20MD];\x20\x20pos\x20+=\x20dcode&15;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20dlit\x20=\x20dcode>>>4;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20dbs\x20=\x20U.ddef[dlit],\x20dst\x20=\x20(dbs>>>4)\x20+\x20bitsF(data,\x20pos,\x20dbs&15);\x20\x20pos\x20+=\x20dbs&15;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//let\x20o0\x20=\x20off-dst,\x20stp\x20=\x20Math.min(end-off,\x20dst);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//if(stp>20)\x20while(off<end)\x20{\x20\x20buf.copyWithin(off,\x20o0,\x20o0+stp);\x20\x20off+=stp;\x20\x20}\x20\x20else\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//if(end-dst<=off)\x20buf.copyWithin(off,\x20off-dst,\x20end-dst);\x20\x20else\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//if(dst==1)\x20buf.fill(buf[off-1],\x20off,\x20end);\x20\x20else\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(noBuf)\x20buf=UZIP.F._check(buf,\x20off+(1<<17));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20while(off<end)\x20{\x20\x20buf[off]=buf[off++-dst];\x20\x20\x20\x20buf[off]=buf[off++-dst];\x20\x20buf[off]=buf[off++-dst];\x20\x20buf[off]=buf[off++-dst];\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20off=end;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//while(off!=end)\x20{\x20\x20buf[off]=buf[off++-dst];\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20//console.log(off-ooff,\x20(pos-opos)>>>3);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20//console.log(UZIP.F.dst);\x0a\x20\x20\x20\x20//console.log(tlen,\x20dlen,\x20off-tlen+tcnt);\x0a\x20\x20\x20\x20return\x20buf.length==off\x20?\x20buf\x20:\x20buf.slice(0,off);\x0a}\x0aUZIP.F._check=function(buf,\x20len)\x20{\x0a\x20\x20\x20\x20let\x20bl=buf.length;\x20\x20if(len<=bl)\x20return\x20buf;\x0a\x20\x20\x20\x20let\x20nbuf\x20=\x20new\x20Uint8Array(Math.max(bl<<1,len));\x20\x20nbuf.set(buf,0);\x0a\x20\x20\x20\x20//for(let\x20i=0;\x20i<bl;\x20i+=4)\x20{\x20\x20nbuf[i]=buf[i];\x20\x20nbuf[i+1]=buf[i+1];\x20\x20nbuf[i+2]=buf[i+2];\x20\x20nbuf[i+3]=buf[i+3];\x20\x20}\x0a\x20\x20\x20\x20return\x20nbuf;\x0a}\x0a\x0aUZIP.F._decodeTiny\x20=\x20function(lmap,\x20LL,\x20len,\x20data,\x20pos,\x20tree)\x20{\x0a\x20\x20\x20\x20let\x20bitsE\x20=\x20UZIP.F._bitsE,\x20get17\x20=\x20UZIP.F._get17;\x0a\x20\x20\x20\x20let\x20i\x20=\x200;\x0a\x20\x20\x20\x20while(i<len)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20code\x20=\x20lmap[get17(data,\x20pos)&LL];\x20\x20pos+=code&15;\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20lit\x20=\x20code>>>4;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(lit<=15)\x20{\x20\x20tree[i]=lit;\x20\x20i++;\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20ll\x20=\x200,\x20n\x20=\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(lit==16)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20n\x20=\x20(3\x20\x20+\x20bitsE(data,\x20pos,\x202));\x20\x20pos\x20+=\x202;\x20\x20ll\x20=\x20tree[i-1];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20else\x20if(lit==17)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20n\x20=\x20(3\x20\x20+\x20bitsE(data,\x20pos,\x203));\x20\x20pos\x20+=\x203;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20else\x20if(lit==18)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20n\x20=\x20(11\x20+\x20bitsE(data,\x20pos,\x207));\x20\x20pos\x20+=\x207;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20ni\x20=\x20i+n;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20while(i<ni)\x20{\x20\x20tree[i]=ll;\x20\x20i++;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20pos;\x0a}\x0aUZIP.F._copyOut\x20=\x20function(src,\x20off,\x20len,\x20tree)\x20{\x0a\x20\x20\x20\x20let\x20mx=0,\x20i=0,\x20tl=tree.length>>>1;\x0a\x20\x20\x20\x20while(i<len)\x20{\x20\x20let\x20v=src[i+off];\x20\x20tree[(i<<1)]=0;\x20\x20tree[(i<<1)+1]=v;\x20\x20if(v>mx)mx=v;\x20\x20i++;\x20\x20}\x0a\x20\x20\x20\x20while(i<tl\x20)\x20{\x20\x20tree[(i<<1)]=0;\x20\x20tree[(i<<1)+1]=0;\x20\x20i++;\x20\x20}\x0a\x20\x20\x20\x20return\x20mx;\x0a}\x0a\x0aUZIP.F.makeCodes\x20=\x20function(tree,\x20MAX_BITS)\x20{\x20\x20//\x20code,\x20length\x0a\x20\x20\x20\x20let\x20U\x20=\x20UZIP.F.U;\x0a\x20\x20\x20\x20let\x20max_code\x20=\x20tree.length;\x0a\x20\x20\x20\x20let\x20code,\x20bits,\x20n,\x20i,\x20len;\x0a\x0a\x20\x20\x20\x20let\x20bl_count\x20=\x20U.bl_count;\x20\x20for(let\x20i=0;\x20i<=MAX_BITS;\x20i++)\x20bl_count[i]=0;\x0a\x20\x20\x20\x20for(i=1;\x20i<max_code;\x20i+=2)\x20bl_count[tree[i]]++;\x0a\x0a\x20\x20\x20\x20let\x20next_code\x20=\x20U.next_code;\x09//\x20smallest\x20code\x20for\x20each\x20length\x0a\x0a\x20\x20\x20\x20code\x20=\x200;\x0a\x20\x20\x20\x20bl_count[0]\x20=\x200;\x0a\x20\x20\x20\x20for\x20(bits\x20=\x201;\x20bits\x20<=\x20MAX_BITS;\x20bits++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20code\x20=\x20(code\x20+\x20bl_count[bits-1])\x20<<\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20next_code[bits]\x20=\x20code;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20for\x20(n\x20=\x200;\x20n\x20<\x20max_code;\x20n+=2)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20len\x20=\x20tree[n+1];\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(len\x20!=\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20tree[n]\x20=\x20next_code[len];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20next_code[len]++;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}\x0aUZIP.F.codes2map\x20=\x20function(tree,\x20MAX_BITS,\x20map)\x20{\x0a\x20\x20\x20\x20let\x20max_code\x20=\x20tree.length;\x0a\x20\x20\x20\x20let\x20U=UZIP.F.U,\x20r15\x20=\x20U.rev15;\x0a\x20\x20\x20\x20for(let\x20i=0;\x20i<max_code;\x20i+=2)\x20if(tree[i+1]!=0)\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20lit\x20=\x20i>>1;\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20cl\x20=\x20tree[i+1],\x20val\x20=\x20(lit<<4)|cl;\x20//\x20:\x20\x20(0x8000\x20|\x20(U.of0[lit-257]<<7)\x20|\x20(U.exb[lit-257]<<4)\x20|\x20cl);\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20rest\x20=\x20(MAX_BITS-cl),\x20i0\x20=\x20tree[i]<<rest,\x20i1\x20=\x20i0\x20+\x20(1<<rest);\x0a\x20\x20\x20\x20\x20\x20\x20\x20//tree[i]=r15[i0]>>>(15-MAX_BITS);\x0a\x20\x20\x20\x20\x20\x20\x20\x20while(i0!=i1)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20p0\x20=\x20r15[i0]>>>(15-MAX_BITS);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20map[p0]=val;\x20\x20i0++;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}\x0aUZIP.F.revCodes\x20=\x20function(tree,\x20MAX_BITS)\x20{\x0a\x20\x20\x20\x20let\x20r15\x20=\x20UZIP.F.U.rev15,\x20imb\x20=\x2015-MAX_BITS;\x0a\x20\x20\x20\x20for(let\x20i=0;\x20i<tree.length;\x20i+=2)\x20{\x20\x20let\x20i0\x20=\x20(tree[i]<<(MAX_BITS-tree[i+1]));\x20\x20tree[i]\x20=\x20r15[i0]>>>imb;\x20\x20}\x0a}\x0a\x0a//\x20used\x20only\x20in\x20deflate\x0aUZIP.F._putsE=\x20function(dt,\x20pos,\x20val\x20\x20\x20)\x20{\x20\x20val\x20=\x20val<<(pos&7);\x20\x20let\x20o=(pos>>>3);\x20\x20dt[o]|=val;\x20\x20dt[o+1]|=(val>>>8);\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0aUZIP.F._putsF=\x20function(dt,\x20pos,\x20val\x20\x20\x20)\x20{\x20\x20val\x20=\x20val<<(pos&7);\x20\x20let\x20o=(pos>>>3);\x20\x20dt[o]|=val;\x20\x20dt[o+1]|=(val>>>8);\x20\x20dt[o+2]|=(val>>>16);\x20\x20}\x0a\x0aUZIP.F._bitsE=\x20function(dt,\x20pos,\x20length)\x20{\x20\x20return\x20((dt[pos>>>3]\x20|\x20(dt[(pos>>>3)+1]<<8)\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20)>>>(pos&7))&((1<<length)-1);\x20\x20}\x0aUZIP.F._bitsF=\x20function(dt,\x20pos,\x20length)\x20{\x20\x20return\x20((dt[pos>>>3]\x20|\x20(dt[(pos>>>3)+1]<<8)\x20|\x20(dt[(pos>>>3)+2]<<16))>>>(pos&7))&((1<<length)-1);\x20\x20}\x0a/*\x0aUZIP.F._get9\x20=\x20function(dt,\x20pos)\x20{\x0a\x09return\x20((dt[pos>>>3]\x20|\x20(dt[(pos>>>3)+1]<<8))>>>(pos&7))&511;\x0a}\x20*/\x0aUZIP.F._get17=\x20function(dt,\x20pos)\x20{\x09//\x20return\x20at\x20least\x2017\x20meaningful\x20bytes\x0a\x20\x20\x20\x20return\x20(dt[pos>>>3]\x20|\x20(dt[(pos>>>3)+1]<<8)\x20|\x20(dt[(pos>>>3)+2]<<16)\x20)>>>(pos&7);\x0a}\x0aUZIP.F._get25=\x20function(dt,\x20pos)\x20{\x09//\x20return\x20at\x20least\x2017\x20meaningful\x20bytes\x0a\x20\x20\x20\x20return\x20(dt[pos>>>3]\x20|\x20(dt[(pos>>>3)+1]<<8)\x20|\x20(dt[(pos>>>3)+2]<<16)\x20|\x20(dt[(pos>>>3)+3]<<24)\x20)>>>(pos&7);\x0a}\x0aUZIP.F.U\x20=\x20function(){\x0a\x20\x20\x20\x20let\x20u16=Uint16Array,\x20u32=Uint32Array;\x0a\x20\x20\x20\x20return\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20next_code\x20:\x20new\x20u16(16),\x0a\x20\x20\x20\x20\x20\x20\x20\x20bl_count\x20\x20:\x20new\x20u16(16),\x0a\x20\x20\x20\x20\x20\x20\x20\x20ordr\x20:\x20[\x2016,\x2017,\x2018,\x200,\x208,\x207,\x209,\x206,\x2010,\x205,\x2011,\x204,\x2012,\x203,\x2013,\x202,\x2014,\x201,\x2015\x20],\x0a\x20\x20\x20\x20\x20\x20\x20\x20of0\x20\x20:\x20[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,999,999,999],\x0a\x20\x20\x20\x20\x20\x20\x20\x20exb\x20\x20:\x20[0,0,0,0,0,0,0,\x200,\x201,\x201,\x201,\x201,\x202,\x202,\x202,\x202,\x203,\x203,\x203,\x203,\x204,\x204,\x204,\x20\x204,\x20\x205,\x20\x205,\x20\x205,\x20\x205,\x20\x200,\x20\x200,\x20\x200,\x20\x200],\x0a\x20\x20\x20\x20\x20\x20\x20\x20ldef\x20:\x20new\x20u16(32),\x0a\x20\x20\x20\x20\x20\x20\x20\x20df0\x20\x20:\x20[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,\x2065535,\x2065535],\x0a\x20\x20\x20\x20\x20\x20\x20\x20dxb\x20\x20:\x20[0,0,0,0,1,1,2,\x202,\x203,\x203,\x204,\x204,\x205,\x205,\x20\x206,\x20\x206,\x20\x207,\x20\x207,\x20\x208,\x20\x208,\x20\x20\x209,\x20\x20\x209,\x20\x2010,\x20\x2010,\x20\x2011,\x20\x2011,\x20\x2012,\x20\x20\x2012,\x20\x20\x2013,\x20\x20\x2013,\x20\x20\x20\x20\x200,\x20\x20\x20\x20\x200],\x0a\x20\x20\x20\x20\x20\x20\x20\x20ddef\x20:\x20new\x20u32(32),\x0a\x20\x20\x20\x20\x20\x20\x20\x20flmap:\x20new\x20u16(\x20\x20512),\x20\x20fltree:\x20[],\x0a\x20\x20\x20\x20\x20\x20\x20\x20fdmap:\x20new\x20u16(\x20\x20\x2032),\x20\x20fdtree:\x20[],\x0a\x20\x20\x20\x20\x20\x20\x20\x20lmap\x20:\x20new\x20u16(32768),\x20\x20ltree\x20:\x20[],\x20\x20ttree:[],\x0a\x20\x20\x20\x20\x20\x20\x20\x20dmap\x20:\x20new\x20u16(32768),\x20\x20dtree\x20:\x20[],\x0a\x20\x20\x20\x20\x20\x20\x20\x20imap\x20:\x20new\x20u16(\x20\x20512),\x20\x20itree\x20:\x20[],\x0a\x20\x20\x20\x20\x20\x20\x20\x20//rev9\x20:\x20new\x20u16(\x20\x20512)\x0a\x20\x20\x20\x20\x20\x20\x20\x20rev15:\x20new\x20u16(1<<15),\x0a\x20\x20\x20\x20\x20\x20\x20\x20lhst\x20:\x20new\x20u32(286),\x20dhst\x20:\x20new\x20u32(\x2030),\x20ihst\x20:\x20new\x20u32(19),\x0a\x20\x20\x20\x20\x20\x20\x20\x20lits\x20:\x20new\x20u32(15000),\x0a\x20\x20\x20\x20\x20\x20\x20\x20strt\x20:\x20new\x20u16(1<<16),\x0a\x20\x20\x20\x20\x20\x20\x20\x20prev\x20:\x20new\x20u16(1<<15)\x0a\x20\x20\x20\x20};\x0a}\x20();\x0a\x0a(function(){\x0a\x20\x20\x20\x20let\x20U\x20=\x20UZIP.F.U;\x0a\x20\x20\x20\x20let\x20len\x20=\x201<<15;\x0a\x20\x20\x20\x20for(let\x20i=0;\x20i<len;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20x\x20=\x20i;\x0a\x20\x20\x20\x20\x20\x20\x20\x20x\x20=\x20(((x\x20&\x200xaaaaaaaa)\x20>>>\x201)\x20|\x20((x\x20&\x200x55555555)\x20<<\x201));\x0a\x20\x20\x20\x20\x20\x20\x20\x20x\x20=\x20(((x\x20&\x200xcccccccc)\x20>>>\x202)\x20|\x20((x\x20&\x200x33333333)\x20<<\x202));\x0a\x20\x20\x20\x20\x20\x20\x20\x20x\x20=\x20(((x\x20&\x200xf0f0f0f0)\x20>>>\x204)\x20|\x20((x\x20&\x200x0f0f0f0f)\x20<<\x204));\x0a\x20\x20\x20\x20\x20\x20\x20\x20x\x20=\x20(((x\x20&\x200xff00ff00)\x20>>>\x208)\x20|\x20((x\x20&\x200x00ff00ff)\x20<<\x208));\x0a\x20\x20\x20\x20\x20\x20\x20\x20U.rev15[i]\x20=\x20(((x\x20>>>\x2016)\x20|\x20(x\x20<<\x2016)))>>>17;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20function\x20pushV(tgt,\x20n,\x20sv)\x20{\x20\x20while(n--!=0)\x20tgt.push(0,sv);\x20\x20}\x0a\x0a\x20\x20\x20\x20for(let\x20i=0;\x20i<32;\x20i++)\x20{\x20\x20U.ldef[i]=(U.of0[i]<<3)|U.exb[i];\x20\x20U.ddef[i]=(U.df0[i]<<4)|U.dxb[i];\x20\x20}\x0a\x0a\x20\x20\x20\x20pushV(U.fltree,\x20144,\x208);\x20\x20pushV(U.fltree,\x20255-143,\x209);\x20\x20pushV(U.fltree,\x20279-255,\x207);\x20\x20pushV(U.fltree,287-279,8);\x0a\x20\x20\x20\x20/*\x0a\x20\x20\x20\x20let\x20i\x20=\x200;\x0a\x20\x20\x20\x20for(;\x20i<=143;\x20i++)\x20U.fltree.push(0,8);\x0a\x20\x20\x20\x20for(;\x20i<=255;\x20i++)\x20U.fltree.push(0,9);\x0a\x20\x20\x20\x20for(;\x20i<=279;\x20i++)\x20U.fltree.push(0,7);\x0a\x20\x20\x20\x20for(;\x20i<=287;\x20i++)\x20U.fltree.push(0,8);\x0a\x20\x20\x20\x20*/\x0a\x20\x20\x20\x20UZIP.F.makeCodes(U.fltree,\x209);\x0a\x20\x20\x20\x20UZIP.F.codes2map(U.fltree,\x209,\x20U.flmap);\x0a\x20\x20\x20\x20UZIP.F.revCodes\x20(U.fltree,\x209)\x0a\x0a\x20\x20\x20\x20pushV(U.fdtree,32,5);\x0a\x20\x20\x20\x20//for(i=0;i<32;\x20i++)\x20U.fdtree.push(0,5);\x0a\x20\x20\x20\x20UZIP.F.makeCodes(U.fdtree,\x205);\x0a\x20\x20\x20\x20UZIP.F.codes2map(U.fdtree,\x205,\x20U.fdmap);\x0a\x20\x20\x20\x20UZIP.F.revCodes\x20(U.fdtree,\x205)\x0a\x0a\x20\x20\x20\x20pushV(U.itree,19,0);\x20\x20pushV(U.ltree,286,0);\x20\x20pushV(U.dtree,30,0);\x20\x20pushV(U.ttree,320,0);\x0a\x20\x20\x20\x20/*\x0a\x20\x20\x20\x20for(let\x20i=0;\x20i<\x2019;\x20i++)\x20U.itree.push(0,0);\x0a\x20\x20\x20\x20for(let\x20i=0;\x20i<286;\x20i++)\x20U.ltree.push(0,0);\x0a\x20\x20\x20\x20for(let\x20i=0;\x20i<\x2030;\x20i++)\x20U.dtree.push(0,0);\x0a\x20\x20\x20\x20for(let\x20i=0;\x20i<320;\x20i++)\x20U.ttree.push(0,0);\x0a\x20\x20\x20\x20*/\x0a})();\x0a\x0a\x0a\x0alet\x20started\x20=\x20false;\x0alet\x20cloudFrontURL\x20=\x20\x22\x22;\x0alet\x20folderName\x20=\x20\x22\x22;\x0alet\x20lastRequest\x20=\x20{};//{tc:\x2200_00_00_00\x22,\x20path:\x22...\x22}\x0alet\x20lastTimeCodeFound\x20=\x20null;//for\x20statistics\x0alet\x20msecAvg\x20=\x20[];//for\x20statistics\x0aconst\x20delimiter\x20=\x20\x22_\x22;\x0alet\x20maxTimeCode\x20=\x20{};//don\x27t\x20pass\x20this\x20timecode\x0alet\x20enabled\x20=\x20true;\x0alet\x20isWorking\x20=\x20false;\x0a\x0aconst\x20HandleData\x20=\x20async\x20(data)\x20=>\x20{\x0a\x20\x20\x20\x20const\x20result\x20=\x20UZIP.parse(data);\x0a\x20\x20\x20\x20let\x20sortedKeys\x20=\x20Object.keys(result).sort();\x0a\x09\x0a\x20\x20\x20\x20for\x20(const\x20key\x20of\x20sortedKeys)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(key.endsWith(\x22.json\x22))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20transferableArray\x20=\x20[];\x0a\x09\x09\x09const\x20metadata\x20=\x20JSON.parse(new\x20TextDecoder().decode(result[key]));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20tc\x20=\x20metadata.timecode.replace(/:/g,\x22_\x22);//replaceAll(\x22:\x22,\x20\x22_\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(metadata.placeholders)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20groupId\x20in\x20metadata.placeholders)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20alphaKey\x20=\x20`${tc}_${groupId}.alpha`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(result[alphaKey])\x20{\x0a\x09\x09\x09\x09\x09\x09metadata.placeholders[groupId].alphaAsUint8Array\x20=\x20result[alphaKey];//new\x20Uint8Array(result[alphaKey].buffer);\x0a\x09\x09\x09\x09\x09\x09transferableArray.push(result[alphaKey].buffer);\x0a\x09\x09\x09\x09\x09}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20postMessage(metadata,transferableArray);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a}\x0a\x0aconst\x20Str2TimeCode\x20=\x20(str)\x20=>\x20{\x0a\x20\x20\x20\x20const\x20list\x20=\x20str.split(delimiter);\x0a\x20\x20\x20\x20const\x20timecode\x20=\x20{h:\x20parseInt(list[0]),\x20m:\x20parseInt(list[1]),\x20s:\x20parseInt(list[2]),\x20f:\x20parseInt(list[3])};\x0a\x20\x20\x20\x20return\x20timecode;\x0a}\x0aconst\x20TimeCode2Str\x20=\x20(timecode)\x20=>\x20{\x0a\x20\x20\x20\x20return\x20(\x220\x22\x20+\x20timecode.h).slice(-2)\x20+\x20delimiter\x20+\x20(\x220\x22\x20+\x20timecode.m).slice(-2)\x20+\x20delimiter\x20+\x20(\x220\x22\x20+\x20timecode.s).slice(-2)\x20+\x20delimiter\x20+\x20(\x220\x22\x20+\x20timecode.f).slice(-2);\x0a}\x0aconst\x20AddSecondsToTimeCode\x20=\x20(timecode,\x20seconds)\x20=>\x20{\x0a\x20\x20\x20\x20let\x20ret\x20=\x20{...timecode};//cloning\x20araay\x0a\x09ret.s\x20+=\x20seconds;\x0a\x20\x20\x20\x20if\x20(ret.s\x20>=\x2060)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20ret.s\x20=\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20ret.m++;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(ret.m\x20>=\x2060)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ret.m\x20=\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ret.h++;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20ret;\x0a}\x0aconst\x20GetNextTimeCode_TC\x20=\x20(tc,\x20seconds\x20=\x200)\x20=>\x20{\x0a\x20\x20\x20\x20let\x20timecode\x20=\x20Str2TimeCode(tc);\x0a\x20\x20\x20\x20if\x20(seconds)\x20timecode\x20=\x20AddSecondsToTimeCode(timecode,\x20seconds);\x0a\x09return\x20timecode;\x0a}\x0aconst\x20GetNextTimeCode\x20=\x20(tc,\x20seconds\x20=\x200)\x20=>\x20{\x0a\x20\x20\x20\x20let\x20timecode\x20=\x20GetNextTimeCode_TC(tc,seconds);\x0a\x20\x20\x20\x20return\x20TimeCode2Str(timecode);\x0a}\x0a\x0a\x0aconst\x20IsTCBigger\x20=\x20(tc1,\x20tc2)\x20=>\x20{\x0a\x09//return\x20true\x20iif\x20tc1\x20>\x20tc2\x0a\x09if\x20(tc1.h\x20>\x20tc2.h)\x20return\x20true;\x0a\x09else\x20if\x20(tc1.h\x20<\x20tc2.h)\x20return\x20false;\x0a\x09else\x20if\x20(tc1.m\x20>\x20tc2.m)\x20return\x20true;\x0a\x09else\x20if\x20(tc1.m\x20<\x20tc2.m)\x20return\x20false;\x0a\x09else\x20if\x20(tc1.s\x20>\x20tc2.s)\x20return\x20true;\x0a\x09else\x20if\x20(tc1.s\x20<\x20tc2.s)\x20return\x20false;\x0a\x09else\x20if\x20(tc1.f\x20>\x20tc2.f)\x20return\x20true;\x0a\x09else\x20return\x20false;\x0a}\x0aconst\x20TryNextFrame\x20=\x20(seconds)\x20=>\x20{\x0a\x09if(!enabled)\x20return;\x0a\x09//if\x20the\x20required\x20time\x20code\x20exceed\x20the\x20max\x20time\x20code,\x20wait\x20a\x20bit\x0a\x09if\x20(seconds\x20>\x200\x20&&\x20IsTCBigger(GetNextTimeCode_TC(lastRequest.tc,\x20seconds),\x20maxTimeCode))\x20{\x0a\x09\x09//console.log(\x22the\x20current\x20TC\x20\x22,\x20GetNextTimeCode_TC(lastRequest.tc,\x20seconds),\x20\x22\x20is\x20bigger\x20than\x20the\x20max\x20time\x20code:\x20\x22,\x20maxTimeCode);//@oror\x0a\x09\x09setTimeout(()\x20=>\x20{\x0a\x09\x09\x09TryNextFrame(seconds);\x0a\x09\x09},\x20100);\x0a\x09}\x0a\x20\x20\x20\x20else\x20\x0a\x09{\x0a\x09\x09//console.log(\x22We\x27re\x20good\x20to\x20take\x20the\x20next\x20timecode\x22);//@oror\x0a\x09\x09setTimeout(()\x20=>\x20{\x0a\x09\x09\x09lastRequest.tc\x20=\x20GetNextTimeCode(lastRequest.tc,\x20seconds);\x0a\x09\x09\x09//console.log(\x22next\x20time\x20code:\x20\x22,\x20lastRequest.tc);//@oror\x0a\x09\x09\x09GetMetaData();\x0a\x09\x09\x09},\x200);\x0a\x09}\x0a}\x0a\x0aconst\x20AvgMetaDataMsec\x20=\x20()\x20=>\x20{\x0a\x20\x20\x20\x20let\x20sum\x20=\x200;\x0a\x20\x20\x20\x20for\x20(let\x20i\x20=\x200;\x20i\x20<\x20msecAvg.length;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20sum\x20+=\x20msecAvg[i];\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20sum\x20/\x20msecAvg.length;\x0a};\x0aconst\x20GetMetaData\x20=\x20async\x20()\x20=>\x20{\x0a\x20\x20\x20\x20isWorking\x20=\x20true;\x0a\x09const\x20item\x20=\x20lastRequest;\x0a\x20\x20\x20\x20const\x20url\x20=\x20`${item.path}/${item.tc}.zip`;\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20t1\x20=\x20performance.now();\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20res\x20=\x20await\x20fetch(url);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(res.status\x20>=\x20400)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//console.log(`${item.tc}\x20time\x20code\x20not\x20found,\x20url\x20is\x20${url}`);\x0a\x09\x09\x09let\x20now\x20=\x20performance.now();\x0a\x09\x09\x09let\x20msecSinceLastTimeDate\x20=\x20now\x20-\x20lastTimeCodeFound;\x0a\x09\x09\x09let\x20secSinceLastTimeDate\x20=\x20(msecSinceLastTimeDate/1000);\x0a\x09\x09\x09if\x20(secSinceLastTimeDate\x20>\x204)\x20{\x0a\x09\x09\x09\x09console.error(\x22Didn\x27t\x20find\x20timecode\x20\x22,\x20item.tc,\x20\x22,\x20now\x20for\x20\x22\x20+\x20secSinceLastTimeDate.toFixed(2)\x20+\x20\x22\x20seconds\x20-\x20give\x20up\x20!\x22);\x0a\x09\x09\x09\x09TryNextFrame(2);//try\x20the\x20same\x20time\x20\x20code\x20again\x0a\x09\x09\x09}\x0a\x09\x09\x09else\x20{\x0a\x09\x09\x09\x09console.error(\x22Didn\x27t\x20find\x20timecode\x20\x22,\x20item.tc,\x20\x22,\x20now\x20for\x20\x22\x20+\x20secSinceLastTimeDate.toFixed(2)\x20+\x20\x22\x20seconds\x22);\x0a\x09\x09\x09\x09TryNextFrame(0);//try\x20the\x20same\x20time\x20\x20code\x20again\x0a\x09\x09\x09}\x0a\x09\x09\x09isWorking\x20=\x20false;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20now\x20=\x20performance.now();\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20msecSinceLastTimeDate\x20=\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(lastTimeCodeFound)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20msecSinceLastTimeDate\x20=\x20now\x20-\x20lastTimeCodeFound;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20msecAvg.push(msecSinceLastTimeDate);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20while\x20(msecAvg.length\x20>\x201000)\x20msecAvg.shift();\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20lastTimeCodeFound\x20=\x20now;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//console.log(`${item.tc}\x20time\x20code\x20found,\x20(${msecSinceLastTimeDate}\x20msec\x20from\x20last\x20time,\x20avg:\x20${AvgMetaDataMsec()})`);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20res.arrayBuffer();\x0a\x20\x20\x20\x20\x20\x20\x20\x20await\x20HandleData(data);\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20t2\x20=\x20performance.now();\x0a\x20\x20\x20\x20\x20\x20\x20\x20//postMessage({time:\x20`Fetch\x20and\x20Decompress:\x20${t2\x20-\x20t1}\x20msec`});\x0a\x20\x20\x20\x20}\x20catch\x20(err)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(`Error\x20on\x20url\x20${url}`,\x20err);\x0a\x20\x20\x20\x20}\x0a\x09isWorking\x20=\x20false;\x0a\x20\x20\x20\x20TryNextFrame(2);\x0a}\x0a\x0aaddEventListener(\x22message\x22,\x20(request)\x20=>\x20{\x0a\x09if\x20(!started\x20&&\x20request.data.cloudFrontURL)\x20{\x0a\x09\x09started\x20=\x20true;\x0a\x09\x09cloudFrontURL\x20=\x20request.data.cloudFrontURL;\x0a\x09\x09folderName\x20=\x20request.data.folderName;\x0a\x09\x09let\x20tcReplaced\x20=\x20request.data.tc.replace(/:/g,\x22_\x22);//replaceAll(\x22:\x22,\x20\x22_\x22)\x0a\x09\x09lastRequest\x20=\x20{tc:\x20tcReplaced,\x20path:\x20`${cloudFrontURL}/${folderName}`};//from\x20the\x20lastReqest\x20object\x0a\x09\x09let\x20timeCode\x20=\x20Str2TimeCode(lastRequest.tc);//parse\x20the\x20time\x20code\x20string\x20into\x20a\x20real\x20time-code\x0a\x09\x09maxTimeCode\x20=\x20AddSecondsToTimeCode(Object.assign({},\x20timeCode),\x204);//set\x20the\x20max\x20limit\x20(on\x20a\x20clone)\x0a\x09\x09//set\x20the\x20timecode\x20needed\x20\x0a\x09\x09timeCode.f\x20=\x200;\x0a\x09\x09timeCode.s\x20=\x20timeCode.s\x20%\x202\x20===\x200\x20?\x20timeCode.s\x20:\x20timeCode.s\x20-\x201;\x0a\x09\x09lastRequest.tc\x20=\x20TimeCode2Str(timeCode);\x0a\x09\x09console.log(\x22Meta-data\x20worker\x20starting\x20from\x20this\x20time-code:\x20\x22,\x20lastRequest.tc);//@oror\x0a\x09\x09GetMetaData();\x0a\x09}\x0a\x09else\x20{\x0a\x09\x09let\x20tcReplaced\x20=\x20request.data.tc.replace(/:/g,\x22_\x22);\x0a\x09\x09//console.log(\x22metaDataDownloader\x20new\x20timecode\x20=\x20\x22\x20+\x20tcReplaced);\x0a\x09\x09let\x20timeCode\x20=\x20Str2TimeCode(tcReplaced);\x0a\x09\x09timeCode.f\x20=\x200;\x0a\x09\x09timeCode.s\x20=\x20timeCode.s\x20%\x202\x20===\x200\x20?\x20timeCode.s\x20:\x20timeCode.s\x20-\x201;\x0a\x09\x09if\x20(IsTCBigger(timeCode,\x20maxTimeCode))\x0a\x09\x09{\x0a\x09\x09\x09lastRequest.tc\x20=\x20TimeCode2Str(timeCode);\x0a\x09\x09\x09console.log(\x22Meta-data\x20worker\x20jumps\x20forward\x20to\x20this\x20time-code:\x20\x22,\x20lastRequest.tc);\x0a\x09\x09}\x0a\x09\x09if\x20(IsTCBigger(Str2TimeCode(lastRequest.tc),\x20AddSecondsToTimeCode(timeCode,4)))\x0a\x09\x09{\x0a\x09\x09\x09lastRequest.tc\x20=\x20TimeCode2Str(timeCode);\x0a\x09\x09\x09console.log(\x22Meta-data\x20worker\x20jumps\x20back\x20to\x20this\x20time-code:\x20\x22,\x20lastRequest.tc);\x0a\x09\x09}\x0a\x09\x09maxTimeCode\x20=\x20AddSecondsToTimeCode(timeCode,\x204);\x0a\x09\x09if(!enabled\x20&&\x20request.data.enabled)\x0a\x09\x09{\x0a\x09\x09\x09enabled\x20=\x20request.data.enabled;\x09\x0a\x09\x09\x09if(!isWorking)\x20GetMetaData();\x0a\x09\x09}\x0a\x09\x09else\x20{\x0a\x09\x09\x09enabled\x20=\x20request.data.enabled;\x09\x0a\x09\x09}\x0a\x09\x09//console.log(\x22max\x20time\x20code:\x20\x22,\x20maxTimeCode);\x0a\x09}\x0a});\x0a\x0a}\x20catch\x20(e){\x0a\x09console.error(e);\x0a}';let debug_lastFrameFromVideoCallback=-0x1,debug_tc='';function _0x5a50(){const _0x16bb54=['\x20\x20)</span>','requestFullscreen','\x20so\x20should\x20navigate\x20to\x20','stopAugment','canvas','vertexShaderSourceV1','transferToImageBitmap','u_matrix','useProgram','onNewSegment','Windows\x20Phone','value','***\x20Error:\x20unknown\x20shader\x20type','value1','nba','callback',',\x20PlayerTime:','BBlog','requestVideoFrameCallback\x20is\x20supported','\x20\x20extra\x20call.\x20Correcting\x20','https://games-prod.virtualott.com/offset','stringTime','offsetJsonURL','deleteProgram','place2AdTexture','emit','frames','ARRAY_BUFFER','\x20for\x20place\x20','Clicked\x20on\x20ad:\x20','doNotRenderAugmentationCheckbox','webglUtils','counter','syncPoint','metadataMap','The\x20window\x20object\x20is\x20defined.\x20This\x20script\x20is\x20running\x20in\x20a\x20browser\x20environment.','getPropertyValue','TEXTURE0','getAttribLocation','unknown','type','ALPHA','AdNameForPlaceHolder',',\x20presentedFrames:\x20','plus05CorrectionCheckbox','playbackTime','_blank','getMinutes','getMilliseconds','from','x-shader/x-fragment','adLoopTime','innerHTML',',\x20Game:\x20','render():\x20lastVideoFrameRenderedInGL==currentFrame:\x20','presentationTime','videoCopier','onload','setMediaFPS:\x20Unknown\x20Source\x20FrameRate\x20mode','data','GenerateTexture','CleanGL','Utils','<span\x20style=\x27font-size:\x2030px;\x27>,\x20Brain\x20Time-Code:\x20','roommembers','globalConfig','split','Augment','shift','Checking\x20window\x20and\x20methods','GameId\x20for\x20mediaid=\x20','head','webgl2','renderAugmentation','currentTime','\x20\x20)','Linux','fromCharCode',',\x20LastSyncPointFrame:','TimeCodeArray2TimeCodeJson','createVertexArray','floor','ANI3','texParameteri','OnMetadata','https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.3.0/socket.io.js','video','enabled','TexUnitBaseForAlpha','right','addEventListener','Src29_MediaTime29','COMPILE_STATUS','folderName','Opera','Mac','Setting\x20Callbacks','texImage2D','digitTex','abs','bindVertexArray','onNewSegmentInterface','iOS','blur','bindAttribLocation','Unknown','requestVideoFrameCallback\x20is\x20not\x20supported','VERTEX_SHADER','red','createTexture','#ad','ad2place','Composer3dWorker','forEach','platform','275195cBsmuh','canvasSize','key','isChromeMac','videoStarted','uniform1i','fetchAndFindGameIdAndOffsetFromMediaId:\x20I\x20Know\x20what\x20is\x20the\x20game\x20id\x20!\x20Its\x20','InitGL','SynchMethod','fetchOffsetForGameId','VID.\x20','vertexShaderSource','font','\x20room','zIndex','urls','shaderSource','composer::AddAdvertisement:\x20ads-to-place\x20mapping:\x20','AddAdvertisement','info','name','RenderingMode','3044695gKcOwO','lastAdName','VideoTime:\x20',',\x20mediaTime-lastMediaTime:\x20','clientX','function','webkitRequestFullscreen','an\x20iPhone','\x20ms','u_resolution','Anonymous','iPad','ontouchstart','OTTPlayer:\x20','hls_fps','Trident','deleteTexture','log','now','u_digitSize','\x20FPS,\x20Continuing\x20augmentation','indexOf','uniform2f','alphaTex','json','color:blue;font-weight:bold;','checked','padStart','if\x20(alpha\x20<\x200.8)','height','VID','https://www.virtualott.com','messageroom','CLAMP_TO_EDGE','toggle','getElementById','setMediaFPS:\x20Unknown\x20Media\x20FrameRate\x20mode','Connect','fillStyle','insertBefore','alpha','toFixed','Got\x20the\x20following\x20config:\x20','ANI',',\x20presentationTime-expectedDisplayTime:\x20','iPhone','drawArrays','bottom','Ads','stage:','bindTexture','ads','getCanvas','MAX_LOGOS','frameRateMode','\x20VID:\x20','BlackBerry','cloudFrontURL','getUTCSeconds','channelName','ANI.','TexUnitForPlaceHolder','RenderTimecode','TEXTURE_WRAP_T','Palm','Video\x20object\x20is\x20defined.\x20This\x20script\x20is\x20running\x20in\x20a\x20browser\x20environment.','Platform\x20not\x20supported\x20yet','initializeComponents','Android','console','\x0a\x0a^^^\x20','TEXTURE_WRAP_S','an\x20Unknown\x20device','options\x20after\x20merge\x20with\x20the\x20global\x20options:\x20','augmentation','LINK_STATUS','Composer3d','Silk','\x20</br>','postMessage','ANI.\x20','eventType','textContent','fillRect',',\x20expectedDisplayTime:\x20','New\x20segment\x20(',',\x20LastSyncPoint:','video\x20element\x20is\x20not\x20yet\x20loaded.\x20Setting\x20up\x20loadedmetadata\x20event\x20to\x20wait\x20until\x20it\x27s\x20loaded.\x20video.readyState=','CLDC','clientY','30px\x20Arial','SelectAd:\x20Failed\x20to\x20find\x20image\x20\x27','isConnected','a_position','timeDate2TCString','Missing\x20meta\x20data\x20at\x20time\x20code\x20','sourceFPS','getUTCHours','\x20FPS,\x20Aborting\x20augmentation.\x20Only\x2060FPS\x20screens\x20supported','display','MakeSureAdPerPlace','offsetLeft','allGamesURL','requestAnimationFrame\x20is\x20supported','TRIANGLES','match','.json','mediaTime','None','ads:','player','url:\x20','fillText','charCodeAt','disconnect\x20from\x20signaling::','OTTPlayer:\x20version:\x20','tc__','none','userAgent','timecode','OnUserClickOnCanvas','\x20stage:\x20','\x20playing\x20at\x20','https://www.virtualott.com/games/','pointer-events','width','Folder\x20name\x20for\x20','crossOrigin','Kindle','placeholders','ScreenFPS','Platform','SHADER_TYPE','getProgramParameter','open',',\x20presentedFrames\x20-\x20lastPresentedFrames:\x20','parentElement','(\x20Security\x20)\x20We\x20cant\x20reach\x20','ad2Url','100%','ad0','Augmenter','Internet\x20Explorer','clientHeight','socket\x20connected','[-\x20/:;]([\x5cd._]+)','UNPACK_ALIGNMENT','BB.Utils.getSourceFPS:\x20Unknown\x20FrameRate\x20mode','offsetTop','MediaID\x20','lastAd','a\x20Mac','ANI2','test',',\x20expectedDisplayTime-now:\x20','clearColor','BB.Augmenter\x20Start','black','qualityButton','\x20version\x20','then','requestAnimationFrame\x20is\x20not\x20supported','an\x20Android\x20phone','TEXTURE_MIN_FILTER','CreateDigitImg','attachShader','AMC_EVENT_PLAYER_SEGMENT_PLAYBACK','NOT\x20SUPPORTED','error','options','createProgram','maskY','getHours',',\x20correction:\x20','deleteShader','databrowser','Project\x20name:\x20','Firefox','x-shader/x-vertex','RENDER_IN_WORKER','position',')</span>','numberInput','createElement','Chrome','video\x20element\x20is\x20already\x20loaded.\x20Setting\x20up\x20requestVideoFrameCallback','Src60_MediaTime59','timeCodeStr2TimeCodeArray','onNewMetadataInterface','COLOR_BUFFER_BIT','Win','round','webGLVersion','SetRectangle','getShaderSource','We\x20have\x20no\x20MetaDataDownloaderThread\x20yet.\x20Creating\x20it','metadata','br1','worker','UNPACK_FLIP_Y_WEBGL','Error\x20from\x20worker:','This\x20videoCallback\x20can\x20be\x20incorrect.\x20This\x20time\x20doing\x20stuff\x20in\x20requestAnimation\x20frame','forDoNotRender','replace','video\x20FPS\x20is\x20','\x20\x20rendering\x20on\x20the\x20current\x20frame\x20','PlayBook','dateTime','getShaderParameter','toggleBtn',',\x20took:\x20','getUTCMinutes','place2ad','<span\x20style=\x27font-size:\x2030px;\x27>,\x20resultTime:\x20','connect','catch','push','getElementsByTagName','reduce','\x20countAppleANI:\x20','status','slice','Src60_MediaTime60','opera','ctx','undefined','requestVideoFrameCallback','script','br2','videoHeight','expectedDisplayTime','autoAddIndex','isWindows','frame','field','join','constructor','LINEAR','Frames2Timecode','top','nextSibling','webgl','ntc','program','pixelStorei','readyState','fetchAndFindGameIdAndOffsetFromMediaId','VID.','splice','ToggleFullscreen','toLowerCase','mimeType','\x0a\x0a//High\x20precision\x20mode\x0aprecision\x20highp\x20float;\x0a\x0a//\x20an\x20attribute\x20is\x20an\x20input\x20(in)\x20to\x20a\x20vertex\x20shader.\x0a//\x20It\x20will\x20receive\x20vertex\x20data\x20from\x20the\x20buffer\x0aattribute\x20vec2\x20a_position;\x0aattribute\x20vec2\x20a_texCoord;\x0auniform\x20vec2\x20u_resolution;\x0avarying\x20vec2\x20v_texCoord;\x0a\x0a\x0a//\x20Main\x20vertex\x20shader\x0avoid\x20main()\x20{\x0a\x20\x20//\x20convert\x20the\x20rectangle\x20from\x20pixels\x20to\x200.0\x20to\x201.0\x0a\x20\x20\x20vec2\x20zeroToOne\x20=\x20a_position\x20/\x20u_resolution;\x0a\x0a\x20\x20\x20//\x20convert\x20from\x200->1\x20to\x200->2\x0a\x20\x20\x20vec2\x20zeroToTwo\x20=\x20zeroToOne\x20*\x202.0;\x0a\x0a\x20\x20\x20//\x20convert\x20from\x200->2\x20to\x20-1->+1\x20(clipspace)\x0a\x20\x20\x20vec2\x20clipSpace\x20=\x20zeroToTwo\x20-\x201.0;\x0a\x0a\x20\x20\x20gl_Position\x20=\x20vec4(clipSpace\x20*\x20vec2(1,\x20-1),\x200,\x201);\x0a\x0a\x20\x20\x20//\x20pass\x20the\x20texCoord\x20to\x20the\x20fragment\x20shader\x0a\x20\x20\x20//\x20The\x20GPU\x20will\x20interpolate\x20this\x20value\x20between\x20points.\x0a\x20\x20\x20v_texCoord\x20=\x20a_texCoord;\x0a}\x0a','uniformMatrix3fv','rect','setinfo','MetaDataFetcher','createProgramFromSources','DEPTH_BUFFER_BIT','debugText','CallBacks\x20are\x20set','Src59_MediaTime60','resize','TexUnitForAdInPlace','toDataURL','vendor','HTTP\x20error!\x20Status:\x20',',\x20dblFrame:\x20','Edge',',\x20offset:\x20<span\x20style=\x27color:','generateMipmap','BBerror','u_digitTopLeft','text','https://games-prod.virtualott.com/map','assign','SelectAd','isAndroid','Version','weHaveTheGameID','messageData','timeCodeStr2TimeCodeArray:\x20Failed\x20to\x20parse\x20','alphaAsUint8Array','TimeCodeAddFrames',',\x20TimeFromLastSync:','tex','src','currentAds2BoundingRect','Calculating\x20ScreenFrameRate','length','_nextAdvertisement','style','toISOString','FRAGMENT_SHADER','Unsupported\x20hls-src\x20frame-rate:\x20','white','hasOwnProperty','linkProgram','2423372MZSXOn','alphaFound','\x20TimeFired:\x20','getShaderInfoLog','priv','Average\x20refresh\x20screen\x20rate:\x20','transferControlToOffscreen','Probable\x20videoFrameCallback\x20was\x20not\x20fired.\x20Apllying\x20correction\x20mechanism\x20(','Video\x20object\x20is\x20not\x20defined.\x20This\x20script\x20might\x20not\x20be\x20running\x20in\x20a\x20browser\x20environment.','body','toString','31574TtEVfv','substring','onmessage','FLOAT','\x20Time\x20Fired:\x20',',\x20time:\x20','onNewMetadata','hasLogo','Mozilla','Safari','Unsupported\x20FPS:\x20','352404ozHcWG','metadataArr','matchItem','Timecode2Frames','RGBA','isPowerOf2','digitImg','getProgramInfoLog','TEXTURE_2D','composer::AddAdvertisement:\x20place-to-ads\x20mapping:\x20','timeDate2TC','Size','getUTCMilliseconds','isSafariMac','FrameRateMode','options\x20after\x20merge\x20with\x20MK\x27s\x20options:\x20','.\x20Is\x20not\x20supported\x20yet.','TexUnitForGenericAd','img','bindBuffer','enableVertexAttribArray','createBuffer','onerror','maxTouchPoints','):\x20','7387555jxacNq','bufferData','clientWidth','***\x20Error:\x20unknown\x20script\x20element','getUniformLocation','message','header','OTTPlayer',',\x20offset:\x20',',\x20presentationTime:\x20','location','index','Windows','RenderFrame','get','application/javascript','hasDigit',',\x20Time\x20Fired:\x20','adTexture','GAME_ID','mediaIdJsonURL','\x20Game:\x20','TopLeft','MSIE','MetaDataDownloaderThread\x20created','appendChild','viewport','printTimecode','left','url','plus05CorrectionLabel','srcFrameRate','disconnect','matchAll','logoURL','isApple','absolute','debugText2','#external','OnMetaData','gameId','getTime','u_alpha','found','%c%s','getComputedStyle','Src59_MediaTime59','getSourceFPS','renderingMode','We\x20are\x20HERE:TimeCode','getSeconds','getContext','map','init','Error\x20compiling\x20shader:\x20',',\x20ANI-VID:\x20','OnNewSegment','forplus','filter','Created\x20webgl1\x20context:\x20','Socket','loadedmetadata','time','config','Error\x20in\x20creating\x20MetaDataDownloaderThread','debug','getBoundingClientRect','keys','setSyncPoint',',\x20stage:\x20','corners','www.mediakind.com/NTC','a\x20Windows\x20PC','186PjgQew','setLastFrame','#version\x20300\x20es\x0a\x0a//High\x20precision\x20mode\x0aprecision\x20highp\x20float;\x0a\x0a//The\x20textures\x0a//uniform\x20sampler2D\x20u_image;//video\x20frame\x27s\x20texture\x0auniform\x20sampler2D\x20ad0;//the\x20ad\x20texture\x0auniform\x20sampler2D\x20ad1;//the\x20ad\x20texture\x0auniform\x20sampler2D\x20ad2;//the\x20ad\x20texture\x0auniform\x20sampler2D\x20ad3;//the\x20ad\x20texture\x0a\x0auniform\x20vec2\x20u_resolution2;//resolution\x20of\x20the\x20canvas\x0a\x0a//v_texCoord\x20from\x20the\x20vertex\x20shader\x0a//in\x20vec2\x20v_texCoord;\x0a\x0a//Logos\x27\x20staff\x0auniform\x20int\x20hasLogo0;//has\x20logo\x20?\x0auniform\x20int\x20adForLogo0;\x0auniform\x20sampler2D\x20alpha0;//the\x20alpha\x27s\x20mate\x0auniform\x20mat3\x20u_matrix0;//the\x20reverse\x20homography\x0auniform\x20vec2\x20u_alpha0TopLeft;//the\x20alpha\x20mate\x27s\x20top-left\x0auniform\x20vec2\x20u_alpha0Size;//the\x20alpha\x20mate\x27s\x20size\x0a\x0auniform\x20int\x20hasLogo1;//has\x20logo\x20?\x0auniform\x20int\x20adForLogo1;\x0auniform\x20sampler2D\x20alpha1;//the\x20alpha\x27s\x20mate\x0auniform\x20mat3\x20u_matrix1;//the\x20reverse\x20homography\x0auniform\x20vec2\x20u_alpha1TopLeft;//the\x20alpha\x20mate\x27s\x20top-left\x0auniform\x20vec2\x20u_alpha1Size;//the\x20alpha\x20mate\x27s\x20size\x0a\x0auniform\x20int\x20hasLogo2;//has\x20logo\x20?\x0auniform\x20int\x20adForLogo2;\x0auniform\x20sampler2D\x20alpha2;//the\x20alpha\x27s\x20mate\x0auniform\x20mat3\x20u_matrix2;//the\x20reverse\x20homography\x0auniform\x20vec2\x20u_alpha2TopLeft;//the\x20alpha\x20mate\x27s\x20top-left\x0auniform\x20vec2\x20u_alpha2Size;//the\x20alpha\x20mate\x27s\x20size\x0a\x0auniform\x20int\x20hasLogo3;//has\x20logo\x20?\x0auniform\x20int\x20adForLogo3;\x0auniform\x20sampler2D\x20alpha3;//the\x20alpha\x27s\x20mate\x0auniform\x20mat3\x20u_matrix3;//the\x20reverse\x20homography\x0auniform\x20vec2\x20u_alpha3TopLeft;//the\x20alpha\x20mate\x27s\x20top-left\x0auniform\x20vec2\x20u_alpha3Size;//the\x20alpha\x20mate\x27s\x20size\x0a\x0auniform\x20int\x20hasDigit;//has\x20debug\x20digit\x20texture\x0auniform\x20sampler2D\x20digitTex;//the\x20digits\x27s\x20mate\x0auniform\x20vec2\x20u_digitTopLeft;//the\x20digit\x20mate\x27s\x20top-left\x0auniform\x20vec2\x20u_digitTopLeft2;//the\x20digit\x20mate\x27s\x20top-left\x0auniform\x20vec2\x20u_digitSize;//the\x20digit\x20mate\x27s\x20size\x0a\x0a//Output\x0aout\x20vec4\x20outColor;\x0abool\x20BlendDigit(in\x20vec2\x20curCoord)\x20{\x0a\x09//vec2\x20texCoord\x20=\x20curCoord;\x0a\x09//texCoord\x20/=\x20u_resolution2;\x0a\x09vec2\x20digitCoord\x20=\x20(curCoord\x20-\x20u_digitTopLeft)/u_digitSize;//get\x20the\x20coordinate\x20on\x20the\x20digit\x20size\x0a\x09if\x20(digitCoord.x\x20>=\x200.0\x20&&\x20digitCoord.y\x20>=\x200.0\x20&&\x20digitCoord.x\x20<=\x201.0\x20&&\x20digitCoord.y\x20<=\x201.0)\x0a\x09{\x0a\x09\x09outColor\x20=\x20texture(digitTex,\x20digitCoord);\x0a\x09\x09return\x20true;\x0a\x09}\x0a\x09return\x20false;\x0a}\x0abool\x20BlendDigit2(in\x20vec2\x20curCoord)\x20{\x0a\x09//vec2\x20texCoord\x20=\x20curCoord;\x0a\x09//texCoord\x20/=\x20u_resolution2;\x0a\x09vec2\x20digitCoord\x20=\x20(curCoord\x20-\x20u_digitTopLeft2)/u_digitSize;//get\x20the\x20coordinate\x20on\x20the\x20digit\x20size\x0a\x09if\x20(digitCoord.x\x20>=\x200.0\x20&&\x20digitCoord.y\x20>=\x200.0\x20&&\x20digitCoord.x\x20<=\x201.0\x20&&\x20digitCoord.y\x20<=\x201.0)\x0a\x09{\x0a\x09\x09outColor\x20=\x20texture(digitTex,\x20digitCoord);\x0a\x09\x09return\x20true;\x0a\x09}\x0a\x09return\x20false;\x0a}\x0abool\x20BlendWithLogo(\x0a\x09in\x20int\x20adUnit,\x0a\x20\x20\x20\x20in\x20sampler2D\x20alphaTexture,\x0a\x20\x20\x20\x20in\x20mat3\x20matrix,\x0a\x20\x20\x20\x20in\x20vec2\x20curCoord,\x0a\x20\x20\x20\x20in\x20vec2\x20alphaTopLeft,\x0a\x20\x20\x20\x20in\x20vec2\x20alphaSize)\x20\x0a{\x0a\x09\x0a\x09\x0a\x09\x0a\x20\x20\x20\x20vec2\x20texCoord;\x0a\x20\x20\x20\x20texCoord.x\x20=\x20(matrix[0][0]*curCoord.x\x20+\x20matrix[0][1]*curCoord.y\x20+\x20matrix[0][2])\x20/\x20(matrix[2][0]*curCoord.x\x20+\x20matrix[2][1]*curCoord.y\x20+\x201.0);\x0a\x20\x20\x20\x20texCoord.y\x20=\x20(matrix[1][0]*curCoord.x\x20+\x20matrix[1][1]*curCoord.y\x20+\x20matrix[1][2])\x20/\x20(matrix[2][0]*curCoord.x\x20+\x20matrix[2][1]*curCoord.y\x20+\x201.0);\x0a\x20\x20\x20\x20texCoord\x20/=\x20u_resolution2;\x0a\x0a\x20\x20\x20\x20//if\x20we\x27re\x20in\x20the\x20bounding\x20rect\x20of\x20the\x20logo\x0a\x20\x20\x20\x20if\x20(texCoord.x\x20>=\x200.0\x20&&\x20texCoord.y\x20>=\x200.0\x20&&\x20texCoord.x\x20<=\x201.0\x20&&\x20texCoord.y\x20<=\x201.0)\x0a\x20\x20\x20\x20{\x0a\x09\x09\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20float\x20alpha\x20=\x201.0;\x0a\x20\x20\x20\x20\x20\x20\x20\x20vec2\x20alphaCoord\x20=\x20(curCoord\x20-\x20alphaTopLeft)/alphaSize;//get\x20the\x20coordinate\x20on\x20the\x20alpha\x20mate\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(\x0a\x09\x09alphaCoord.x\x20>=\x200.0\x20&&\x20\x0a\x09\x09alphaCoord.y\x20>=\x200.0\x20&&\x20\x0a\x09\x09alphaCoord.x\x20<=\x201.0\x20&&\x20\x0a\x09\x09alphaCoord.y\x20<=\x201.0\x0a\x09\x09)\x0a\x20\x20\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//get\x20the\x20alpha\x20texel:\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20alpha\x20*=\x20texture(alphaTexture,\x20alphaCoord).a;//without\x20blur\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x09\x09\x0a\x09\x09vec4\x20ad0Pix\x20=\x20\x0a\x09\x09\x09adUnit\x20==\x200\x20?\x20texture(ad0,\x20texCoord)\x20:\x0a\x09\x09\x09adUnit\x20==\x201\x20?\x20texture(ad1,\x20texCoord)\x20:\x0a\x09\x09\x09adUnit\x20==\x202\x20?\x20texture(ad2,\x20texCoord)\x20:\x0a\x09\x09\x09\x09\x09\x09\x20\x20texture(ad3,\x20texCoord);//get\x20the\x20logo\x27s\x20texel\x0a\x09\x09alpha\x20*=\x20ad0Pix.a;//consider\x20the\x20alpha\x20of\x20the\x20logo\x0a\x20\x20\x20\x20\x20\x20\x20\x20vec3\x20resultRGB\x20=\x20ad0Pix.rgb;//\x20+\x20videoImagePix.rgb*(1.0-alpha);//blend\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(alpha\x20==\x200.0)\x20resultRGB\x20=\x20vec3(0,0,0);\x0a\x09\x09outColor\x20=\x20vec4(resultRGB,\x20alpha);\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20true;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20else\x20return\x20false;\x0a\x20\x20\x0a}\x0avoid\x20main()\x0a{\x0a\x20\x20//calculate\x20cur-coord\x20(with\x20pixels\x20units)\x0a\x20\x20vec2\x20curCoord\x20=\x20gl_FragCoord.xy;\x0a\x20\x20curCoord.y\x20=\x20u_resolution2[1]\x20-\x20curCoord.y;\x0a\x20\x20//if\x20(hasDigit\x20==\x201\x20&&\x20(BlendDigit(curCoord)\x20||\x20BlendDigit2(curCoord)))\x20return;\x0a\x20\x20if\x20(hasDigit\x20==\x201\x20&&\x20(BlendDigit(curCoord)))\x20return;\x0a\x20\x20else\x20if\x20(hasLogo0\x20==\x201\x20&&\x20\x0a\x20\x20\x20\x20\x20BlendWithLogo(adForLogo0,\x0a\x09\x20alpha0,\x20u_matrix0,\x20curCoord,u_alpha0TopLeft,\x20u_alpha0Size))\x0a\x20\x20{\x0a\x20\x20\x20\x20return;\x0a\x20\x20}\x0a\x20\x20else\x20if\x20(hasLogo1\x20==\x201\x20&&\x0a\x20\x20\x20\x20\x20BlendWithLogo(adForLogo1,\x0a\x09\x20alpha1,\x20u_matrix1,\x20curCoord,u_alpha1TopLeft,\x20u_alpha1Size))\x0a\x20\x20{\x0a\x20\x20\x20\x20return;\x0a\x20\x20}\x0a\x20\x20else\x20if\x20(hasLogo2\x20==\x201\x20&&\x0a\x20\x20\x20\x20\x20BlendWithLogo(adForLogo2,\x0a\x09\x20alpha2,\x20u_matrix2,\x20curCoord,u_alpha2TopLeft,\x20u_alpha2Size))\x0a\x20\x20{\x0a\x20\x20\x20\x20return;\x0a\x20\x20}\x0a\x20\x20else\x20if\x20(hasLogo3\x20==\x201\x20&&\x0a\x20\x20\x20\x20\x20BlendWithLogo(adForLogo3,\x0a\x09\x20alpha3,\x20u_matrix3,\x20curCoord,u_alpha3TopLeft,\x20u_alpha3Size))\x0a\x20\x20{\x0a\x20\x20\x20\x20return;\x0a\x20\x20}\x0a\x20\x20else\x20{//no\x20logo\x0a\x20\x20\x20\x20outColor\x20=\x20vec4(0,0,0,0);\x0a\x20\x20}\x0a}\x0a','setMediaFPS:\x20Unknown\x20Source\x20FrameRate\x20mode,\x20fps\x20=\x20','playerTime','call','presentedFrames','9896400iZIrHI','maskX','videoWidth',',\x20performanceNow-lastPerformanceNow:\x20','frameDrawer','fragmentShaderSource','amd','offset','UNSIGNED_BYTE','click','Unsupported\x20FPS:\x20options.hls_fps\x20=\x20','Network\x20response\x20was\x20not\x20ok','PalmOS','renderTimecode','TimeCodesFramesTranslator','requestAnimationFrame','advertisementMap'];_0x5a50=function(){return _0x16bb54;};return _0x5a50();}(function(_0x12da7a,_0x1cc80e){const _0x1d1ff0=_0x92df;typeof define===_0x1d1ff0(0x265)&&define[_0x1d1ff0(0x1cc)]?define([],function(){const _0x508d71=_0x1d1ff0;return _0x1cc80e[_0x508d71(0x1c4)](_0x12da7a);}):_0x12da7a[_0x1d1ff0(0x1f6)]=_0x1cc80e[_0x1d1ff0(0x1c4)](_0x12da7a);}(this,function(){'use strict';const _0x381340=_0x92df;const _0x44b810=this;function _0x2cf664(_0x32746a){return _0x32746a=_0x32746a||_0x44b810,_0x32746a!==_0x32746a['top'];}!_0x2cf664()&&(console[_0x381340(0x271)]('%c%s',_0x381340(0x279),'for\x20more\x20about\x20webgl-utils.js\x20see:'),console['log'](_0x381340(0x1a2),_0x381340(0x279),'http://webgl2fundamentals.org/webgl/lessons/webgl-boilerplate.html'));function _0x5bda09(_0xfb574a){const _0xcd9ac1=_0x381340;if(_0x44b810[_0xcd9ac1(0x2a5)]){if(_0x44b810[_0xcd9ac1(0x2a5)][_0xcd9ac1(0x308)])_0x44b810[_0xcd9ac1(0x2a5)][_0xcd9ac1(0x308)](_0xfb574a);else _0x44b810[_0xcd9ac1(0x2a5)][_0xcd9ac1(0x271)]&&_0x44b810['console'][_0xcd9ac1(0x271)](_0xfb574a);}}const _0x241811=/ERROR:\s*\d+:(\d+)/gi;function _0x4b5007(_0x4e8521,_0x42ccb5=''){const _0x53f265=_0x381340,_0x3c7e0b=[..._0x42ccb5[_0x53f265(0x197)](_0x241811)],_0x45ad0f=new Map(_0x3c7e0b['map']((_0x1e2dba,_0xd689aa)=>{const _0x4501b0=_0x53f265,_0x429a23=parseInt(_0x1e2dba[0x1]),_0x1916c9=_0x3c7e0b[_0xd689aa+0x1],_0x415607=_0x1916c9?_0x1916c9[_0x4501b0(0x181)]:_0x42ccb5[_0x4501b0(0x381)],_0x36ea1b=_0x42ccb5[_0x4501b0(0x153)](_0x1e2dba[_0x4501b0(0x181)],_0x415607);return[_0x429a23-0x1,_0x36ea1b];}));return _0x4e8521[_0x53f265(0x219)]('\x0a')[_0x53f265(0x1aa)]((_0x1b7b45,_0xb8b9e9)=>{const _0x114eab=_0x53f265,_0xf1cf87=_0x45ad0f[_0x114eab(0x184)](_0xb8b9e9);return _0xb8b9e9+0x1+':\x20'+_0x1b7b45+(_0xf1cf87?_0x114eab(0x2a6)+_0xf1cf87:'');})[_0x53f265(0x34b)]('\x0a');}function _0x31c89c(_0x4d63e4,_0x3e19e5,_0x2b6a99,_0x43e68e){const _0x5ec9ab=_0x381340,_0x3f38e2=_0x43e68e||_0x5bda09,_0x4851e6=_0x4d63e4['createShader'](_0x2b6a99);_0x4d63e4[_0x5ec9ab(0x25a)](_0x4851e6,_0x3e19e5),_0x4d63e4['compileShader'](_0x4851e6);const _0x4317be=_0x4d63e4['getShaderParameter'](_0x4851e6,_0x4d63e4[_0x5ec9ab(0x233)]);if(!_0x4317be){const _0x364422=_0x4d63e4[_0x5ec9ab(0x38d)](_0x4851e6);return _0x3f38e2(_0x5ec9ab(0x1ac)+_0x364422+'\x0a'+_0x4b5007(_0x3e19e5,_0x364422)),_0x4d63e4[_0x5ec9ab(0x30e)](_0x4851e6),null;}return _0x4851e6;}function _0x4188eb(_0x54b219,_0x4dfb45,_0x28121f,_0x1a09d5,_0x2cbe11){const _0x519e2a=_0x381340,_0x5134b3=_0x2cbe11||_0x5bda09,_0x2f742=_0x54b219[_0x519e2a(0x30a)]();_0x4dfb45['forEach'](function(_0x3c2bb9){const _0x1f1eee=_0x519e2a;_0x54b219[_0x1f1eee(0x305)](_0x2f742,_0x3c2bb9);});_0x28121f&&_0x28121f['forEach'](function(_0x3cec0b,_0x53cedd){const _0x193eaa=_0x519e2a;_0x54b219[_0x193eaa(0x23f)](_0x2f742,_0x1a09d5?_0x1a09d5[_0x53cedd]:_0x53cedd,_0x3cec0b);});_0x54b219[_0x519e2a(0x389)](_0x2f742);const _0x45a35c=_0x54b219[_0x519e2a(0x2e5)](_0x2f742,_0x54b219[_0x519e2a(0x2ab)]);if(!_0x45a35c){const _0x1f6983=_0x54b219[_0x519e2a(0x164)](_0x2f742);return _0x5134b3('Error\x20in\x20program\x20linking:\x20'+_0x1f6983+'\x0a'+_0x4dfb45['map'](_0x5556ac=>{const _0x1ed9cf=_0x519e2a,_0xd3dad0=_0x4b5007(_0x54b219[_0x1ed9cf(0x322)](_0x5556ac)),_0x33d3ec=_0x54b219[_0x1ed9cf(0x330)](_0x5556ac,_0x54b219[_0x1ed9cf(0x2e4)]);return glEnumToString(_0x54b219,_0x33d3ec)+':\x0a'+_0xd3dad0;})[_0x519e2a(0x34b)]('\x0a')),_0x54b219[_0x519e2a(0x1ee)](_0x2f742),null;}return _0x2f742;}function _0x26d445(_0x1b6b36,_0xe5201f,_0x1c5d5c,_0x391c67){const _0x2edbe9=_0x381340;let _0x2b6bdb='',_0x47648b;const _0x198238=document[_0x2edbe9(0x283)](_0xe5201f);if(!_0x198238)throw _0x2edbe9(0x179)+_0xe5201f;_0x2b6bdb=_0x198238[_0x2edbe9(0x371)];if(!_0x1c5d5c){if(_0x198238[_0x2edbe9(0x1ff)]===_0x2edbe9(0x312))_0x47648b=_0x1b6b36[_0x2edbe9(0x242)];else{if(_0x198238[_0x2edbe9(0x1ff)]===_0x2edbe9(0x209))_0x47648b=_0x1b6b36['FRAGMENT_SHADER'];else{if(_0x47648b!==_0x1b6b36['VERTEX_SHADER']&&_0x47648b!==_0x1b6b36[_0x2edbe9(0x385)])throw _0x2edbe9(0x1e3);}}}return _0x31c89c(_0x1b6b36,_0x2b6bdb,_0x1c5d5c?_0x1c5d5c:_0x47648b,_0x391c67);}const _0x59abd8=[_0x381340(0x242),'FRAGMENT_SHADER'];function _0x11d227(_0x430c3b,_0x207783,_0x4bd523,_0x786c49,_0x1ab03c){const _0x77ca60=_0x381340,_0xa1bd2f=[];for(let _0x5e3ee6=0x0;_0x5e3ee6<_0x207783[_0x77ca60(0x381)];++_0x5e3ee6){_0xa1bd2f['push'](_0x26d445(_0x430c3b,_0x207783[_0x5e3ee6],_0x430c3b[_0x59abd8[_0x5e3ee6]],_0x1ab03c));}return _0x4188eb(_0x430c3b,_0xa1bd2f,_0x4bd523,_0x786c49,_0x1ab03c);}function _0x17643a(_0x3e8a0a,_0x2c8d35,_0x1b0117,_0x516d6e,_0x3b87eb){const _0x57b63d=_0x381340,_0x5edaf8=[];for(let _0x336124=0x0;_0x336124<_0x2c8d35[_0x57b63d(0x381)];++_0x336124){_0x5edaf8['push'](_0x31c89c(_0x3e8a0a,_0x2c8d35[_0x336124],_0x3e8a0a[_0x59abd8[_0x336124]],_0x3b87eb));}return _0x4188eb(_0x3e8a0a,_0x5edaf8,_0x1b0117,_0x516d6e,_0x3b87eb);}function _0x14b47f(_0x5cad0f,_0x1da2ea){const _0x186855=_0x381340;_0x1da2ea=_0x1da2ea||0x1;const _0x1ff3e7=_0x5cad0f[_0x186855(0x178)]*_0x1da2ea|0x0,_0x394ba0=_0x5cad0f[_0x186855(0x2ef)]*_0x1da2ea|0x0;if(_0x5cad0f[_0x186855(0x2dd)]!==_0x1ff3e7||_0x5cad0f[_0x186855(0x27d)]!==_0x394ba0)return _0x5cad0f[_0x186855(0x2dd)]=_0x1ff3e7,_0x5cad0f[_0x186855(0x27d)]=_0x394ba0,!![];return![];}return{'createProgram':_0x4188eb,'createProgramFromScripts':_0x11d227,'createProgramFromSources':_0x17643a,'resizeCanvasToDisplaySize':_0x14b47f};}));const BB={'MAX_LOGOS':0x4};BB[_0x1ce293(0x313)]=!![],BB['GL']={'vertexShaderSource':'#version\x20300\x20es\x0a\x0a//\x20an\x20attribute\x20is\x20an\x20input\x20(in)\x20to\x20a\x20vertex\x20shader.\x0a//\x20It\x20will\x20receive\x20vertex\x20data\x20from\x20the\x20buffer\x0ain\x20vec2\x20a_position;\x0a\x0a//Identity\x20matrix\x20for\x20now\x0auniform\x20mat3\x20u_matrix;\x0a\x0a//The\x20canvas\x20resolution,\x20to\x20covert\x20to\x20ZeTor\x0auniform\x20vec2\x20u_resolution;\x0a\x0a//a_texCoord->v_texCoord\x20interpolation\x0a//in\x20vec2\x20a_texCoord;\x0a//out\x20vec2\x20v_texCoord;\x0a\x0a//\x20Main\x20vertex\x20shader\x0avoid\x20main()\x20{\x0a\x20\x20//Translate,\x20rotate,\x20scale\x20by\x20u_matrix:\x0a\x20\x20vec2\x20position\x20=\x20(u_matrix\x20*\x20vec3(a_position,\x201)).xy;\x0a\x0a\x20\x20//Convert\x20the\x20position\x20from\x20pixels\x20to\x20ZeTor\x20[0.0,1.0]\x0a\x20\x20vec2\x20zeroToOne\x20=\x20position\x20/\x20u_resolution;\x0a\x0a\x20\x20//Convert\x20from\x20[0,1]\x20to\x20[0,2]\x0a\x20\x20vec2\x20zeroToTwo\x20=\x20zeroToOne\x20*\x202.0;\x0a\x0a\x20\x20//Convert\x20from\x20[0,2]\x20to\x20[-1,+1]\x20(clipspace)\x0a\x20\x20vec2\x20clipSpace\x20=\x20zeroToTwo\x20-\x201.0;\x0a\x0a\x20\x20gl_Position\x20=\x20vec4(clipSpace\x20*\x20vec2(1,\x20-1),\x200,\x201);\x0a\x0a\x20\x20//Pass\x20the\x20texCoord\x20to\x20the\x20fragment\x20shader\x0a\x20\x20//The\x20GPU\x20will\x20interpolate\x20this\x20value\x20between\x20points.\x0a\x20\x20//v_texCoord\x20=\x20a_texCoord;\x0a}\x0a','fragmentShaderSource':_0x1ce293(0x1c1),'vertexShaderSourceV1':_0x1ce293(0x35c),'fragmentShaderSourceV1':'\x0a\x0a//High\x20precision\x20mode\x0aprecision\x20highp\x20float;\x0a\x0a//The\x20textures\x0auniform\x20sampler2D\x20u_image;//video\x20frame\x27s\x20texture2D\x0auniform\x20sampler2D\x20ad0;//the\x20ad\x20texture2D\x0auniform\x20sampler2D\x20ad1;//the\x20ad\x20texture2D\x0auniform\x20sampler2D\x20ad2;//the\x20ad\x20texture2D\x0auniform\x20sampler2D\x20ad3;//the\x20ad\x20texture2D\x0a\x0auniform\x20vec2\x20u_resolution2;//resolution\x20of\x20the\x20canvas\x0a\x0a//v_texCoord\x20from\x20the\x20vertex\x20shader\x0avarying\x20vec2\x20v_texCoord;\x0a\x0a//Logos\x27\x20staff\x0auniform\x20int\x20hasLogo0;//has\x20logo\x20?\x0auniform\x20int\x20adForLogo0;\x0auniform\x20sampler2D\x20alpha0;//the\x20alpha\x27s\x20mate\x0auniform\x20mat3\x20u_matrix0;//the\x20reverse\x20homography\x0auniform\x20vec2\x20u_alpha0TopLeft;//the\x20alpha\x20mate\x27s\x20top-left\x0auniform\x20vec2\x20u_alpha0Size;//the\x20alpha\x20mate\x27s\x20size\x0a\x0auniform\x20int\x20hasLogo1;//has\x20logo\x20?\x0auniform\x20int\x20adForLogo1;\x0auniform\x20sampler2D\x20alpha1;//the\x20alpha\x27s\x20mate\x0auniform\x20mat3\x20u_matrix1;//the\x20reverse\x20homography\x0auniform\x20vec2\x20u_alpha1TopLeft;//the\x20alpha\x20mate\x27s\x20top-left\x0auniform\x20vec2\x20u_alpha1Size;//the\x20alpha\x20mate\x27s\x20size\x0a\x0auniform\x20int\x20hasLogo2;//has\x20logo\x20?\x0auniform\x20int\x20adForLogo2;\x0auniform\x20sampler2D\x20alpha2;//the\x20alpha\x27s\x20mate\x0auniform\x20mat3\x20u_matrix2;//the\x20reverse\x20homography\x0auniform\x20vec2\x20u_alpha2TopLeft;//the\x20alpha\x20mate\x27s\x20top-left\x0auniform\x20vec2\x20u_alpha2Size;//the\x20alpha\x20mate\x27s\x20size\x0a\x0auniform\x20int\x20hasLogo3;//has\x20logo\x20?\x0auniform\x20int\x20adForLogo3;\x0auniform\x20sampler2D\x20alpha3;//the\x20alpha\x27s\x20mate\x0auniform\x20mat3\x20u_matrix3;//the\x20reverse\x20homography\x0auniform\x20vec2\x20u_alpha3TopLeft;//the\x20alpha\x20mate\x27s\x20top-left\x0auniform\x20vec2\x20u_alpha3Size;//the\x20alpha\x20mate\x27s\x20size\x0a\x0auniform\x20sampler2D\x20injectoLogo;//the\x20injecto\x20logo\x20to\x20cover\x20the\x20timecode\x20watermark\x0a\x0aconst\x20float\x20Directions\x20=\x2016.0;\x20//\x20BLUR\x20DIRECTIONS\x20(Default\x2016.0\x20-\x20More\x20is\x20better\x20but\x20slower)\x0aconst\x20float\x20Quality\x20=\x203.0;\x20//\x20BLUR\x20QUALITY\x20(Default\x203.0\x20-\x20More\x20is\x20better\x20but\x20slower)\x0aconst\x20float\x20Size\x20=\x2012.0;\x20//\x20BLUR\x20SIZE\x20(Radius)\x0aconst\x20float\x20Pi\x20=\x206.28318530718;\x20//\x20Pi*2\x0a\x0avec3\x20BlurBGR(vec4\x20videoImagePix)\x0a{\x0a\x09vec3\x20res\x20=\x20videoImagePix.rgb;\x0a\x20//get\x20the\x20kernel\x20radius:\x0a\x20\x20\x20\x20vec2\x20Radius\x20=\x20Size/u_resolution2.xy;\x0a\x20\x20\x20\x0a\x20\x20\x20\x20//\x20Blur\x20around:\x0a\x20\x20\x20\x20for(\x20float\x20d=0.0;\x20d<Pi;\x20d+=Pi/Directions)\x0a\x20\x20\x20\x20{\x0a\x09\x09for(float\x20i=1.0/Quality;\x20i<=1.0;\x20i+=1.0/Quality)\x0a\x20\x20\x20\x20\x20\x20\x20\x20{\x0a\x09\x09\x09res\x20+=\x20texture2D(\x20u_image,\x20v_texCoord+vec2(cos(d),sin(d))*Radius*i).rgb;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20res\x20/=\x20Quality\x20*\x20Directions\x20-\x2015.0;\x0a\x0a\x20\x20\x20\x20return\x20res;\x0a}\x0a\x0abool\x20BlendWithLogo(\x0a\x09int\x20adUnit,\x0a\x20\x20\x20\x20\x20sampler2D\x20alphaTexture,\x0a\x20\x20\x20\x20\x20mat3\x20matrix,\x0a\x20\x20\x20\x20\x20vec2\x20curCoord,\x0a\x20\x20\x20\x20\x20vec2\x20alphaTopLeft,\x0a\x20\x20\x20\x20\x20vec2\x20alphaSize,\x0a\x20\x20\x20\x20\x20vec4\x20videoImagePix)\x20\x0a{\x0a\x20\x20\x20\x20vec2\x20texCoord;\x0a\x20\x20\x20\x20texCoord.x\x20=\x20(matrix[0][0]*curCoord.x\x20+\x20matrix[0][1]*curCoord.y\x20+\x20matrix[0][2])\x20/\x20(matrix[2][0]*curCoord.x\x20+\x20matrix[2][1]*curCoord.y\x20+\x201.0);\x0a\x20\x20\x20\x20texCoord.y\x20=\x20(matrix[1][0]*curCoord.x\x20+\x20matrix[1][1]*curCoord.y\x20+\x20matrix[1][2])\x20/\x20(matrix[2][0]*curCoord.x\x20+\x20matrix[2][1]*curCoord.y\x20+\x201.0);\x0a\x20\x20\x20\x20texCoord\x20/=\x20u_resolution2;\x0a\x0a\x20\x20\x20\x20//if\x20we\x27re\x20in\x20the\x20bounding\x20rect\x20of\x20the\x20logo\x0a\x20\x20\x20\x20if\x20(texCoord.x\x20>=\x200.0\x20&&\x20texCoord.y\x20>=\x200.0\x20&&\x20texCoord.x\x20<=\x201.0\x20&&\x20texCoord.y\x20<=\x201.0)\x0a\x20\x20\x20\x20{\x0a\x09\x09\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20float\x20alpha\x20=\x201.0;\x0a\x20\x20\x20\x20\x20\x20\x20\x20vec2\x20alphaCoord\x20=\x20(curCoord\x20-\x20alphaTopLeft)/alphaSize;//get\x20the\x20coordinate\x20on\x20the\x20alpha\x20mate\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(alphaCoord.x\x20>=\x200.0\x20&&\x20alphaCoord.y\x20>=\x200.0\x20&&\x20alphaCoord.x\x20<=\x201.0\x20&&\x20alphaCoord.y\x20<=\x201.0)\x0a\x20\x20\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//get\x20the\x20alpha\x20texel:\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//alpha\x20*=\x20BlurAlpha(alphaCoord);//blurred\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20alpha\x20*=\x20texture2D(alphaTexture,\x20alphaCoord).a;//without\x20blur\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x09\x09if\x20(adUnit\x20==\x2099)//blur\x0a\x09\x09{\x0a\x09\x09\x09gl_FragColor\x20=\x20vec4(BlurBGR(videoImagePix)*alpha\x20+\x20\x20videoImagePix.rgb*(1.0-alpha),\x201.0);\x0a\x09\x09\x09//outColor\x20=\x20vec4(BlurBGR(videoImagePix),\x201.0);\x0a\x09\x09\x09return\x20true;\x0a\x09\x09}\x0a\x09\x09vec4\x20ad0Pix\x20=\x20\x0a\x09\x09\x09adUnit\x20==\x200\x20?\x20texture2D(ad0,\x20texCoord)\x20:\x0a\x09\x09\x09adUnit\x20==\x201\x20?\x20texture2D(ad1,\x20texCoord)\x20:\x0a\x09\x09\x09adUnit\x20==\x202\x20?\x20texture2D(ad2,\x20texCoord)\x20:\x0a\x09\x09\x09\x09\x09\x09\x20\x20texture2D(ad3,\x20texCoord);//get\x20the\x20logo\x27s\x20texel\x0a\x09\x09alpha\x20*=\x20ad0Pix.a;//consider\x20the\x20alpha\x20of\x20the\x20logo\x0a\x20\x20\x20\x20\x20\x20\x20\x20vec3\x20resultRGB\x20=\x20ad0Pix.rgb*alpha\x20+\x20videoImagePix.rgb*(1.0-alpha);//blend\x0a\x20\x20\x20\x20\x20\x20\x20\x20gl_FragColor\x20=\x20vec4(resultRGB,\x201.0);\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20true;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20else\x20return\x20false;\x0a\x20\x20\x0a}\x0avoid\x20main()\x0a{\x0a\x20\x20//calculate\x20cur-coord\x20(with\x20pixels\x20units)\x0a\x20\x20vec2\x20curCoord\x20=\x20gl_FragCoord.xy;\x0a\x20\x20curCoord.y\x20=\x20u_resolution2[1]\x20-\x20curCoord.y;\x0a\x0a\x20\x20//cover\x20the\x20timecode\x20with\x20some\x20watermark\x0a\x20\x20if\x20(v_texCoord[0]\x20<=\x200.125\x20&&\x20(1.0-v_texCoord[1])\x20<=\x200.125)\x0a\x20\x20{\x20\x0a\x20\x20\x20\x20gl_FragColor\x20=\x20texture2D(injectoLogo,\x20vec2(v_texCoord[0]*8.0,\x201.0-(1.0-v_texCoord[1])*8.0));\x0a\x20\x20\x20\x20return;\x0a\x20\x20}\x0a\x0a\x20\x20vec4\x20videoImagePix\x20=\x20texture2D(u_image,\x20v_texCoord);\x0a\x20\x20\x0a\x20\x20if\x20(hasLogo0\x20==\x201\x20&&\x20\x0a\x20\x20\x20\x20\x20BlendWithLogo(\x0a\x09\x20adForLogo0,\x0a\x09\x20alpha0,\x20u_matrix0,\x20curCoord,u_alpha0TopLeft,\x20u_alpha0Size,\x20videoImagePix))\x0a\x20\x20{\x0a\x20\x20\x20\x20return;\x0a\x20\x20}\x0a\x20\x20else\x20if\x20(hasLogo1\x20==\x201\x20&&\x0a\x20\x20\x20\x20\x20BlendWithLogo(\x0a\x09\x20adForLogo1,\x0a\x09\x20alpha1,\x20u_matrix1,\x20curCoord,u_alpha1TopLeft,\x20u_alpha1Size,\x20videoImagePix))\x0a\x20\x20{\x0a\x20\x20\x20\x20return;\x0a\x20\x20}\x0a\x20\x20else\x20if\x20(hasLogo2\x20==\x201\x20&&\x0a\x20\x20\x20\x20\x20BlendWithLogo(\x0a\x09\x20adForLogo2,\x0a\x09\x20alpha2,\x20u_matrix2,\x20curCoord,u_alpha2TopLeft,\x20u_alpha2Size,\x20videoImagePix))\x0a\x20\x20{\x0a\x20\x20\x20\x20return;\x0a\x20\x20}\x0a\x20\x20else\x20if\x20(hasLogo3\x20==\x201\x20&&\x0a\x20\x20\x20\x20\x20BlendWithLogo(\x0a\x09\x20adForLogo3,\x0a\x09\x20alpha3,\x20u_matrix3,\x20curCoord,u_alpha3TopLeft,\x20u_alpha3Size,\x20videoImagePix))\x0a\x20\x20{\x0a\x20\x20\x20\x20return;\x0a\x20\x20}\x0a\x20\x20else\x20{//only\x20video\x20texel,\x20no\x20logo\x0a\x20\x20\x20\x20gl_FragColor\x20=\x20videoImagePix;\x0a\x20\x20}\x0a}\x0a'},BB['FrameRateMode']={'Src60_MediaTime60':Symbol(_0x1ce293(0x33e)),'Src59_MediaTime60':Symbol(_0x1ce293(0x365)),'Src59_MediaTime59':Symbol(_0x1ce293(0x1a4)),'Src29_MediaTime29':Symbol(_0x1ce293(0x232))},BB[_0x1ce293(0x25f)]={'RenderDigits':Symbol('RenderDigits'),'RenderTimecode':Symbol(_0x1ce293(0x29e)),'Augment':Symbol('Augment')},BB[_0x1ce293(0x252)]={'OnNewSegment':Symbol(_0x1ce293(0x1ae)),'OnMetadata':Symbol(_0x1ce293(0x22b)),'None':Symbol(_0x1ce293(0x2cc))},BB[_0x1ce293(0x215)]=((()=>{const _0x4b60b4=_0x3450e5=>{const _0x29b72a=_0x92df;return _0x3450e5[_0x29b72a(0x151)]()[_0x29b72a(0x27b)](0x2,'0');},_0x2d63ed=((()=>{const _0x2572ed=(_0x2c5ee0,_0x52cb6a,_0x52021e)=>{const _0x402c59=_0x92df;let _0x38be3b='';if(Array['isArray'](_0x2c5ee0)){_0x38be3b=[_0x4b60b4(_0x2c5ee0[0x0]),_0x4b60b4(_0x2c5ee0[0x1]),_0x4b60b4(_0x2c5ee0[0x2]),_0x4b60b4(_0x2c5ee0[0x3])][_0x402c59(0x34b)](':');if(_0x52021e==!![]){if(_0x2c5ee0[0x4]==0x1&&(_0x52cb6a===undefined||_0x52cb6a))_0x38be3b+='.2';else _0x38be3b+='.1';}else{if(_0x2c5ee0[0x4]==0x1&&(_0x52cb6a===undefined||_0x52cb6a))_0x38be3b+='.1';}}else{const _0x46a2fb=':';_0x38be3b=('0'+_0x2c5ee0['h'])['slice'](-0x2)+_0x46a2fb+('0'+_0x2c5ee0['m'])[_0x402c59(0x33d)](-0x2)+_0x46a2fb+('0'+_0x2c5ee0['s'])[_0x402c59(0x33d)](-0x2)+_0x46a2fb+('0'+_0x2c5ee0['f'])['slice'](-0x2);if(_0x52cb6a)_0x38be3b+='.'+(_0x2c5ee0[_0x402c59(0x34a)]?'1':'2');}return _0x38be3b;},_0x24a321=_0x9bc93b=>{const _0x282c07=_0x92df;let _0xb4bf00=_0x9bc93b[_0x282c07(0x219)](':');if(_0xb4bf00[_0x282c07(0x381)]!=0x4)return console[_0x282c07(0x308)](_0x282c07(0x379)+_0x9bc93b),[0x0,0x0,0x0,0x0,0x0];let _0x23e5ed=[parseInt(_0xb4bf00[0x0]),parseInt(_0xb4bf00[0x1]),parseInt(_0xb4bf00[0x2])];if(_0xb4bf00[0x3][_0x282c07(0x275)]('.')>=0x0){let _0x447f67=_0xb4bf00[0x3][_0x282c07(0x219)]('.');_0x23e5ed[_0x282c07(0x338)](parseInt(_0x447f67[0x0])),_0x23e5ed[_0x282c07(0x338)](parseInt(_0x447f67[0x1]));}else _0x23e5ed[_0x282c07(0x338)](parseInt(_0xb4bf00[0x3])),_0x23e5ed[_0x282c07(0x338)](0x0);return _0x23e5ed;},_0x94a301=(_0x1c28f6,_0x128216,_0x4f6dc2)=>{const _0x36d307=_0x92df;let _0x37596b=0x3c,_0x2e0818=0x0;if(Math[_0x36d307(0x228)](_0x128216)==0x3c)_0x37596b=0x3c,_0x2e0818=0x0;else{if(Math[_0x36d307(0x228)](_0x128216)==0x3b)_0x37596b=0x3c,_0x2e0818=0x4;else{if(Math[_0x36d307(0x228)](_0x128216)==0x1e)_0x37596b=0x1e,_0x2e0818=0x0;else Math[_0x36d307(0x228)](_0x128216)==0x1d&&(_0x37596b=0x1e,_0x2e0818=0x2);}}let _0x5b35f9=0x0,_0x2a0008=Math['floor'](_0x128216*0x3c),_0x132901=Math['floor'](_0x128216*0x3c*0xa),_0x24497d=_0x132901*0x6,_0x2e3cc6=_0x1c28f6[0x0],_0x1dbc29=_0x1c28f6[0x1],_0x430881=_0x1c28f6[0x2],_0x44cc02=_0x1c28f6[0x3],_0x25936d=_0x1c28f6[0x4];_0x5b35f9+=_0x2e3cc6*_0x24497d,_0x5b35f9+=_0x1dbc29*(_0x37596b*0x3c),_0x5b35f9+=_0x430881*_0x37596b;if(_0x4f6dc2)_0x5b35f9+=_0x44cc02*0x2+_0x25936d;else _0x5b35f9+=_0x44cc02;return _0x5b35f9-=_0x2e0818*_0x1dbc29,_0x5b35f9+=_0x2e0818*Math['floor'](_0x1dbc29/0xa),_0x5b35f9;},_0x234f3d=(_0x7e3f95,_0x10fa80,_0x1c5862)=>{const _0x315cfe=_0x92df;let _0x5aa6b6=0x3c,_0xda56dd=0x0;if(Math[_0x315cfe(0x228)](_0x10fa80)==0x3c)_0x5aa6b6=0x3c,_0xda56dd=0x0;else{if(Math[_0x315cfe(0x228)](_0x10fa80)==0x3b)_0x5aa6b6=0x3c,_0xda56dd=0x4;else{if(Math[_0x315cfe(0x228)](_0x10fa80)==0x1e)_0x5aa6b6=0x1e,_0xda56dd=0x0;else Math['floor'](_0x10fa80)==0x1d&&(_0x5aa6b6=0x1e,_0xda56dd=0x2);}}let _0x41ea22=0x0,_0x364b3b=Math[_0x315cfe(0x228)](_0x10fa80*0x3c),_0x30ca25=Math[_0x315cfe(0x228)](_0x10fa80*0x3c*0xa),_0x29f9b6=_0x30ca25*0x6,_0x55b9cf=_0x7e3f95,_0x275fc5=Math['floor'](_0x55b9cf/_0x29f9b6);_0x55b9cf-=_0x275fc5*_0x29f9b6;let _0x3c7e3a=Math[_0x315cfe(0x228)](_0x55b9cf/_0x30ca25);_0x55b9cf-=_0x3c7e3a*_0x30ca25;if(_0x55b9cf>=_0x5aa6b6*0x3c)_0x55b9cf+=_0xda56dd*(Math['floor']((_0x55b9cf-_0x5aa6b6*0x3c)/_0x364b3b)+0x1);let _0xc96520=Math[_0x315cfe(0x228)](_0x55b9cf/(_0x5aa6b6*0x3c));_0x55b9cf-=_0xc96520*(_0x5aa6b6*0x3c);let _0x234f37=Math[_0x315cfe(0x228)](_0x55b9cf/_0x5aa6b6);_0x55b9cf-=_0x234f37*_0x5aa6b6;let _0x29b3ae=_0x55b9cf;_0xc96520+=_0x3c7e3a*0xa,dotOne=0x0;_0x1c5862&&(dotOne=_0x29b3ae%0x2,_0x29b3ae=Math[_0x315cfe(0x228)](_0x29b3ae/0x2));let _0x40fe82=[_0x275fc5,_0xc96520,_0x234f37,_0x29b3ae,dotOne];return _0x40fe82;},_0x405453=(_0x87548e,_0x58c8ba,_0x5cf754)=>{let _0x1d5248=_0x5cf754>0x1e,_0x8bdb1=_0x94a301(_0x87548e,_0x5cf754,_0x1d5248);return _0x8bdb1+=_0x58c8ba,_0x234f3d(_0x8bdb1,_0x5cf754,_0x1d5248);},_0x218d99=_0x146886=>{return{'h':_0x146886[0x0],'m':_0x146886[0x1],'s':_0x146886[0x2],'f':_0x146886[0x3],'field':_0x146886[0x4]};},_0x59e631=(_0xa492e9,_0x25aa7f)=>{const _0x53f407=_0x92df;let _0x14436b=BB[_0x53f407(0x215)][_0x53f407(0x167)](_0xa492e9,_0x25aa7f);return _0x25aa7f>0x3b?BB[_0x53f407(0x215)][_0x53f407(0x1d4)]['printTimecode'](tcFromMessage,!![]):BB[_0x53f407(0x215)][_0x53f407(0x1d4)][_0x53f407(0x191)](tcFromMessage,![]);let _0x39aa80=BB[_0x53f407(0x215)][_0x53f407(0x2e3)],_0x195e4c='';_0x39aa80['isApple']()?_0x195e4c=_0xa492e9:_0x195e4c=_0xa492e9[_0x53f407(0x384)]();let _0x72438b=_0x195e4c['split']('T')[0x1],_0x3ad486=_0x72438b[_0x53f407(0x219)](':'),_0x531be=parseInt(_0x3ad486[0x0]),_0x51a6c8=parseInt(_0x3ad486[0x1]),_0x49a297=_0x3ad486[0x2][_0x53f407(0x219)]('.'),_0xd6aee8=parseInt(_0x49a297[0x0]),_0x553d20=parseInt(_0x49a297[0x1][_0x53f407(0x153)](0x0,0x3)),_0x25ed0e=Math[_0x53f407(0x31f)](_0x553d20/0x3e8*_0x25aa7f);if(_0x25aa7f>0x3b){let _0x46d8a7=_0x25ed0e%0x2==0x0?0x1:0x2;_0x25ed0e=Math['floor'](_0x25ed0e/0x2);let _0x2e6bf2=_0x531be[_0x53f407(0x151)]()[_0x53f407(0x27b)](0x2,'0')+':'+_0x51a6c8[_0x53f407(0x151)]()['padStart'](0x2,'0')+':'+_0xd6aee8[_0x53f407(0x151)]()['padStart'](0x2,'0')+':'+_0x25ed0e['toString']()[_0x53f407(0x27b)](0x2,'0')+'.'+_0x46d8a7[_0x53f407(0x151)]();return _0x2e6bf2;}else{let _0x3b7884=_0x531be['toString']()['padStart'](0x2,'0')+':'+_0x51a6c8[_0x53f407(0x151)]()[_0x53f407(0x27b)](0x2,'0')+':'+_0xd6aee8[_0x53f407(0x151)]()[_0x53f407(0x27b)](0x2,'0')+':'+_0x25ed0e['toString']()[_0x53f407(0x27b)](0x2,'0');return _0x3b7884;}return str;},_0x5d63fe=(_0x2bc1b8,_0x10bbec)=>{const _0x25068d=_0x92df;let _0x3c6684=BB['Utils'][_0x25068d(0x2e3)],_0x57821f='';_0x3c6684[_0x25068d(0x199)]()?_0x57821f=_0x2bc1b8:_0x57821f=_0x2bc1b8[_0x25068d(0x384)]();let _0x3c1ff1=_0x57821f[_0x25068d(0x219)]('T')[0x1],_0x104fdb=_0x3c1ff1[_0x25068d(0x219)](':'),_0x592c1c=parseInt(_0x104fdb[0x0]),_0x1c292b=parseInt(_0x104fdb[0x1]),_0x61c411=_0x104fdb[0x2]['split']('.'),_0x2d83a0=parseInt(_0x61c411[0x0]),_0x23efb0=parseInt(_0x61c411[0x1]['substring'](0x0,0x3));if(_0x10bbec>0x3b){let _0x4400f9=Math[_0x25068d(0x31f)]((_0x23efb0/0x3e8+_0x2d83a0+_0x1c292b*0x3c+_0x592c1c*0x3c*0x3c)*_0x10bbec),_0x37f8d1=BB[_0x25068d(0x215)][_0x25068d(0x1d4)][_0x25068d(0x34e)](_0x4400f9,_0x10bbec,!![]);return _0x37f8d1;}else{let _0xa00462=Math[_0x25068d(0x31f)]((_0x23efb0/0x3e8+_0x2d83a0+_0x1c292b*0x3c+_0x592c1c*0x3c*0x3c)*_0x10bbec),_0x50dad5=BB['Utils'][_0x25068d(0x1d4)][_0x25068d(0x34e)](_0xa00462,_0x10bbec,![]);return _0x50dad5;}};return{'printTimecode':_0x2572ed,'timeCodeStr2TimeCodeArray':_0x24a321,'Timecode2Frames':_0x94a301,'Frames2Timecode':_0x234f3d,'TimeCodeAddFrames':_0x405453,'TimeCodeArray2TimeCodeJson':_0x218d99,'timeDate2TCString':_0x59e631,'timeDate2TC':_0x5d63fe};})()),_0x1e33e0=_0x45688c=>{let _0x288e38=_0x45688c||0x2540be3ff,_0x4b242b=[],_0x256d6d=0x0;const _0x4a55f7=_0x4d4278=>{const _0x187fa1=_0x92df;++_0x256d6d,_0x4b242b[_0x187fa1(0x338)](_0x4d4278);while(_0x4b242b['length']>_0x288e38)_0x4b242b['shift']();},_0x16eb14=()=>{const _0x3484f9=_0x92df;if(_0x4b242b[_0x3484f9(0x381)]==0x0)return-0x1;let _0x4ab7f4=Array[_0x3484f9(0x208)](_0x4b242b)['sort']((_0x1b62b2,_0x586bd6)=>{return _0x1b62b2-_0x586bd6;});return _0x4ab7f4[parseInt(_0x4ab7f4['length']/0x2)];},_0x169361=()=>{return _0x256d6d;};return{'add':_0x4a55f7,'getMedian':_0x16eb14,'howMany':_0x169361};},_0x52c49d=((()=>{const _0x33b730=()=>{const _0x3a771a=_0x92df,_0x103208=navigator[_0x3a771a(0x2d6)];if(/windows/i[_0x3a771a(0x2f9)](_0x103208))return _0x3a771a(0x182);else{if(/android/i[_0x3a771a(0x2f9)](_0x103208))return _0x3a771a(0x2a4);else{if(/iphone|ipad|ipod/i[_0x3a771a(0x2f9)](_0x103208))return _0x3a771a(0x23d);else{if(/mac/i[_0x3a771a(0x2f9)](_0x103208)){return'Mac';let _0x34d39e=_0x3a771a(0x26c)in window||navigator[_0x3a771a(0x174)]>0x0||navigator['msMaxTouchPoints']>0x0;if(_0x34d39e)return _0x3a771a(0x26b);else return _0x3a771a(0x236);}else return/ipad/i[_0x3a771a(0x2f9)](_0x103208)?_0x3a771a(0x26b):'Something\x20else';}}}},_0x3e9f24=()=>{let _0x3833d9=_0x33b730();return _0x3833d9=='Mac';},_0x279c8a=()=>{const _0xc01afe=_0x92df;let _0x2a1281=_0x33b730();return _0x2a1281==_0xc01afe(0x26b);},_0x5097ed=()=>{const _0x43d8fd=_0x92df;let _0x3e9c85=_0x33b730();return _0x3e9c85==_0x43d8fd(0x23d);},_0xadfe7a=()=>{const _0x3adbaa=_0x92df;let _0x4e4022=_0x33b730();return _0x4e4022==_0x3adbaa(0x23d)||_0x4e4022==_0x3adbaa(0x236)||_0x4e4022==_0x3adbaa(0x26b);},_0x4c307b=()=>{const _0x595b85=_0x92df;let _0x1723cb=_0x33b730();return _0x1723cb==_0x595b85(0x182);},_0x175ada=()=>{const _0x5880cd=_0x92df;let _0x40a700=_0x33b730();return _0x40a700==_0x5880cd(0x2a4);},_0xb02b6e=()=>{const _0x29ac8d=_0x92df;let _0x235d8f=_0x33b730();if(_0x235d8f==_0x29ac8d(0x182))return _0x29ac8d(0x1be);else{if(_0x235d8f==_0x29ac8d(0x2a4))return _0x29ac8d(0x302);else{if(_0x235d8f==_0x29ac8d(0x23d))return _0x29ac8d(0x267);else{if(_0x235d8f==_0x29ac8d(0x236))return _0x29ac8d(0x2f7);else{if(_0x235d8f==_0x29ac8d(0x26b))return'an\x20iPad';else return _0x29ac8d(0x2a8);}}}}},_0x4d43e9=()=>{const _0x52e7b9=_0x92df;let _0x4555db={'options':[],'header':[navigator[_0x52e7b9(0x249)],navigator[_0x52e7b9(0x2d6)],navigator['appVersion'],navigator[_0x52e7b9(0x369)],window[_0x52e7b9(0x33f)]],'dataos':[{'name':'Windows\x20Phone','value':_0x52e7b9(0x1e1),'version':'OS'},{'name':_0x52e7b9(0x182),'value':_0x52e7b9(0x31e),'version':'NT'},{'name':'iPhone','value':_0x52e7b9(0x28d),'version':'OS'},{'name':'iPad','value':_0x52e7b9(0x26b),'version':'OS'},{'name':_0x52e7b9(0x2e0),'value':'Silk','version':_0x52e7b9(0x2ad)},{'name':'Android','value':_0x52e7b9(0x2a4),'version':_0x52e7b9(0x2a4)},{'name':_0x52e7b9(0x32e),'value':_0x52e7b9(0x32e),'version':'OS'},{'name':'BlackBerry','value':_0x52e7b9(0x298),'version':'/'},{'name':'Macintosh','value':_0x52e7b9(0x236),'version':'OS\x20X'},{'name':_0x52e7b9(0x223),'value':'Linux','version':'rv'},{'name':_0x52e7b9(0x2a0),'value':_0x52e7b9(0x2a0),'version':_0x52e7b9(0x1d2)}],'databrowser':[{'name':'Chrome','value':_0x52e7b9(0x318),'version':'Chrome'},{'name':'Firefox','value':_0x52e7b9(0x311),'version':_0x52e7b9(0x311)},{'name':'Safari','value':_0x52e7b9(0x15b),'version':_0x52e7b9(0x376)},{'name':_0x52e7b9(0x2ee),'value':_0x52e7b9(0x18d),'version':_0x52e7b9(0x18d)},{'name':_0x52e7b9(0x235),'value':_0x52e7b9(0x235),'version':_0x52e7b9(0x235)},{'name':_0x52e7b9(0x298),'value':_0x52e7b9(0x2b8),'version':'CLDC'},{'name':_0x52e7b9(0x15a),'value':_0x52e7b9(0x15a),'version':_0x52e7b9(0x15a)}],'init':function(){const _0x397efa=_0x52e7b9;let _0x193958=this[_0x397efa(0x17c)]['join']('\x20'),_0x10145c=this[_0x397efa(0x15f)](_0x193958,this['dataos']),_0x5e4f38=this['matchItem'](_0x193958,this[_0x397efa(0x30f)]);return{'os':_0x10145c,'browser':_0x5e4f38};},'matchItem':function(_0x1d44ae,_0x19c8ee){const _0x33fc33=_0x52e7b9;let _0x542f81=0x0,_0x388b0a=0x0,_0x54e417='',_0x28f1c7,_0x3f9188,_0x3c7e70,_0x5813e5,_0x1a2e5c;for(_0x542f81=0x0;_0x542f81<_0x19c8ee[_0x33fc33(0x381)];_0x542f81+=0x1){_0x28f1c7=new RegExp(_0x19c8ee[_0x542f81][_0x33fc33(0x1e2)],'i'),_0x3c7e70=_0x28f1c7['test'](_0x1d44ae);if(_0x3c7e70){_0x3f9188=new RegExp(_0x19c8ee[_0x542f81]['version']+_0x33fc33(0x2f1),'i'),_0x5813e5=_0x1d44ae[_0x33fc33(0x2c9)](_0x3f9188),_0x1a2e5c='';_0x5813e5&&(_0x5813e5[0x1]&&(_0x5813e5=_0x5813e5[0x1]));if(_0x5813e5){_0x5813e5=_0x5813e5[_0x33fc33(0x219)](/[._]+/);for(_0x388b0a=0x0;_0x388b0a<_0x5813e5[_0x33fc33(0x381)];_0x388b0a+=0x1){_0x388b0a===0x0?_0x1a2e5c+=_0x5813e5[_0x388b0a]+'.':_0x1a2e5c+=_0x5813e5[_0x388b0a];}}else _0x1a2e5c='0';return{'name':_0x19c8ee[_0x542f81]['name'],'version':parseFloat(_0x1a2e5c)};}}return{'name':_0x33fc33(0x1fe),'version':0x0};}},_0x3425d9=_0x4555db[_0x52e7b9(0x1ab)]();return _0x3425d9['os'][_0x52e7b9(0x25e)];},_0x261e52=()=>{const _0x12a731=_0x92df,_0x36c6bf=navigator[_0x12a731(0x2d6)];if(_0x36c6bf[_0x12a731(0x275)]('Chrome')>-0x1&&_0x36c6bf[_0x12a731(0x275)](_0x12a731(0x36c))===-0x1)return'Chrome';else{if(_0x36c6bf[_0x12a731(0x275)](_0x12a731(0x15b))>-0x1&&_0x36c6bf[_0x12a731(0x275)]('Chrome')===-0x1)return _0x12a731(0x15b);else{if(_0x36c6bf['indexOf'](_0x12a731(0x311))>-0x1)return'Firefox';else{if(_0x36c6bf[_0x12a731(0x275)](_0x12a731(0x18d))>-0x1||_0x36c6bf[_0x12a731(0x275)](_0x12a731(0x26f))>-0x1)return _0x12a731(0x2ee);else return _0x36c6bf[_0x12a731(0x275)](_0x12a731(0x36c))>-0x1?_0x12a731(0x36c):_0x12a731(0x240);}}}},_0x1f776f=()=>{return _0x3e9f24()&&_0x261e52()=='Safari';},_0x47da42=()=>{const _0x147ff6=_0x92df;return _0x3e9f24()&&_0x261e52()==_0x147ff6(0x318);},_0x253f63=()=>{const _0x8d29ed=_0x92df;return _0x4c307b()&&_0x261e52()==_0x8d29ed(0x318);};return{'getDeviceName':_0x4d43e9,'getCurrentPlatform':_0x33b730,'isApple':_0xadfe7a,'isWindows':_0x4c307b,'isAndroid':_0x175ada,'isMac':_0x3e9f24,'isiPhone':_0x5097ed,'isiPad':_0x279c8a,'getDeviceDescription':_0xb02b6e,'getBrowserName':_0x261e52,'isSafariMac':_0x1f776f,'isChromeMac':_0x47da42,'isChromeWin':_0x253f63};})()),_0xf87d6a=_0x4fa987=>{const _0x297cf0=_0x92df;let _0x4c4b24=0x3c;switch(_0x4fa987){case BB[_0x297cf0(0x16b)][_0x297cf0(0x33e)]:_0x4c4b24=0x3c;break;case BB['FrameRateMode'][_0x297cf0(0x365)]:_0x4c4b24=0x3c;break;case BB[_0x297cf0(0x16b)][_0x297cf0(0x1a4)]:_0x4c4b24=0xea60/0x3e9;break;case BB[_0x297cf0(0x16b)][_0x297cf0(0x232)]:_0x4c4b24=0x7530/0x3e9;break;default:console['error']('BB.Utils.getMediaTimeFPS:\x20Unknown\x20FrameRate\x20mode');break;};return _0x4c4b24;},_0xd93bc7=_0x2f0f1d=>{const _0x11aad7=_0x92df;let _0x729235=0x3c;switch(_0x2f0f1d){case BB[_0x11aad7(0x16b)][_0x11aad7(0x33e)]:_0x729235=0x3c;break;case BB[_0x11aad7(0x16b)][_0x11aad7(0x365)]:_0x729235=0xea60/0x3e9;break;case BB[_0x11aad7(0x16b)][_0x11aad7(0x1a4)]:_0x729235=0xea60/0x3e9;break;case BB[_0x11aad7(0x16b)][_0x11aad7(0x232)]:_0x729235=0x7530/0x3e9;break;default:console[_0x11aad7(0x308)](_0x11aad7(0x2f3));break;};return _0x729235;},_0x5d47fd=(_0x1ec95f,_0x5dfac7)=>{const _0x5b8a68=_0x92df,_0x2ba980=(_0x3a7416,_0x3656eb)=>{const _0x5e571e=_0x92df;if(Math[_0x5e571e(0x23a)](_0x3a7416-_0x3656eb)<0.01)return!![];else return![];};if(_0x2ba980(_0x1ec95f,0x3c)){if(_0x2ba980(BB[_0x5b8a68(0x215)][_0x5b8a68(0x1a5)](_0x5dfac7[_0x5b8a68(0x296)]),0x3c))_0x5dfac7[_0x5b8a68(0x296)]=BB['FrameRateMode'][_0x5b8a68(0x33e)];else{if(_0x2ba980(BB[_0x5b8a68(0x215)]['getSourceFPS'](_0x5dfac7['frameRateMode']),0xea60/0x3e9))_0x5dfac7['frameRateMode']=BB[_0x5b8a68(0x16b)][_0x5b8a68(0x365)];else console[_0x5b8a68(0x308)](_0x5b8a68(0x211));}}else{if(_0x2ba980(_0x1ec95f,0xea60/0x3e9)){if(_0x2ba980(BB[_0x5b8a68(0x215)][_0x5b8a68(0x1a5)](_0x5dfac7['frameRateMode']),0x3c))_0x5dfac7[_0x5b8a68(0x296)]=BB['FrameRateMode'][_0x5b8a68(0x31a)];else{if(_0x2ba980(BB[_0x5b8a68(0x215)][_0x5b8a68(0x1a5)](_0x5dfac7[_0x5b8a68(0x296)]),0xea60/0x3e9))_0x5dfac7[_0x5b8a68(0x296)]=BB[_0x5b8a68(0x16b)]['Src59_MediaTime59'];else console[_0x5b8a68(0x308)](_0x5b8a68(0x211));}}else{if(_0x2ba980(_0x1ec95f,0x7530/0x3e9)){if(_0x2ba980(BB[_0x5b8a68(0x215)][_0x5b8a68(0x1a5)](_0x5dfac7[_0x5b8a68(0x296)]),0x7530/0x3e9))_0x5dfac7['frameRateMode']=BB[_0x5b8a68(0x16b)][_0x5b8a68(0x232)];else console[_0x5b8a68(0x308)](_0x5b8a68(0x1c2)+_0x1ec95f);}else console[_0x5b8a68(0x308)](_0x5b8a68(0x284));}}},_0x35397d=()=>{const _0x3376b7=[0x7530/0x3e9,0x1e/0x1],_0x2e79f1=[0xea60/0x3e9,0x3c/0x1];let _0x2d8ad3=[],_0x5ded86=[],_0x2919df=0x0,_0x39da0f=-0x1,_0x4e4f5f=0x0;const _0x43b303=_0x2fec2e=>{const _0x8018a7=_0x92df;_0x4e4f5f++;let _0x162066=0x3e7,_0xd2e5f5=0x0;if(_0x39da0f==-0x1){_0x39da0f=_0x2fec2e;return;}else{let _0xc54676=_0x2fec2e-_0x39da0f;if(_0x2919df<0x64){_0x5ded86[_0x8018a7(0x338)](_0xc54676),_0x2919df++;return;}else _0x5ded86['push'](_0xc54676),_0x5ded86[_0x8018a7(0x21b)]();let _0x5e5502=0x0;for(let _0x1ba8c6=0x0;_0x1ba8c6<_0x5ded86[_0x8018a7(0x381)];_0x1ba8c6++){_0x5e5502+=_0x5ded86[_0x1ba8c6];}_0xc54676=_0x5e5502/_0x5ded86[_0x8018a7(0x381)];if(0x1/_0xc54676<0x28)possibleFps=_0x3376b7;else possibleFps=_0x2e79f1;}_0x39da0f=_0x2fec2e;for(let _0x1d56a0=0x0;_0x1d56a0<possibleFps[_0x8018a7(0x381)];++_0x1d56a0){let _0x2ea008=possibleFps[_0x1d56a0],_0x2f0fc2=_0x2fec2e*_0x2ea008,_0x17ecd0=Math['round'](_0x2f0fc2),_0x169568=Math[_0x8018a7(0x23a)](_0x2f0fc2-_0x17ecd0);_0x169568<_0x162066&&(_0x162066=_0x169568,_0xd2e5f5=_0x2ea008);}let _0x426add=_0xd2e5f5;_0x2d8ad3[_0x8018a7(0x338)](_0x426add);if(_0x4e4f5f>0x3e8)_0x2d8ad3[_0x8018a7(0x21b)]();},_0x2b96c9=()=>{const _0x47dd3e=_0x92df;let _0x354c9c={},_0x40cb91,_0x4fe261=0x0;for(let _0x1e64e7=0x0;_0x1e64e7<_0x2d8ad3[_0x47dd3e(0x381)];_0x1e64e7++){let _0x1a7380=_0x2d8ad3[_0x1e64e7];_0x354c9c[_0x1a7380]=(_0x354c9c[_0x1a7380]||0x0)+0x1,_0x354c9c[_0x1a7380]>_0x4fe261&&(_0x40cb91=_0x1a7380,_0x4fe261=_0x354c9c[_0x1a7380]);}return _0x40cb91;},_0x1376a0=()=>{return _0x4e4f5f;};return{'addTime':_0x43b303,'getProbableFPS':_0x2b96c9,'howMany':_0x1376a0};};return{'TimeCodesFramesTranslator':_0x2d63ed,'MedianCalculator':_0x1e33e0,'Platform':_0x52c49d,'getMediaTimeFPS':_0xf87d6a,'getSourceFPS':_0xd93bc7,'setMediaFPS':_0x5d47fd,'FPSGetter':_0x35397d};})()),BB[_0x1ce293(0x1b2)]=class{constructor(_0x472c36){const _0x434ea1=_0x1ce293;this['isConnected']=![],this[_0x434ea1(0x234)]='',this[_0x434ea1(0x1e6)]=_0x472c36,this[_0x434ea1(0x25e)]='';}[_0x1ce293(0x285)](_0x3f5ff5){const _0xf16719=_0x1ce293;if(typeof io==_0xf16719(0x341)||this[_0xf16719(0x2bc)])return;this['isConnected']=!![];const _0x386d5e=io(_0xf16719(0x27f));_0x386d5e['on'](_0xf16719(0x336),()=>{const _0x58ebf3=_0xf16719;console[_0x58ebf3(0x271)](_0x58ebf3(0x2f0));let _0x3c7648=BB[_0x58ebf3(0x215)]['Platform'];_0x386d5e[_0x58ebf3(0x1f0)](_0x58ebf3(0x35f),{'device':_0x3c7648['getDeviceName']()},_0x3912d0=>{const _0x4f64c3=_0x58ebf3;this[_0x4f64c3(0x25e)]=_0x3912d0['name'],_0x386d5e['emit'](_0x4f64c3(0x34b),_0x3f5ff5,_0x58dbf0=>{const _0x4e7f80=_0x4f64c3;console[_0x4e7f80(0x271)]('join\x20\x20'+_0x3f5ff5+_0x4e7f80(0x257)),this[_0x4e7f80(0x1e6)](_0x4e7f80(0x34b),_0x58dbf0);});});}),_0x386d5e['on'](_0xf16719(0x308),_0x190bb7=>{console['error']('error::'+_0x190bb7);}),_0x386d5e['on'](_0xf16719(0x196),_0x352c8e=>{const _0x376450=_0xf16719;console[_0x376450(0x308)](_0x376450(0x2d2)+_0x352c8e);}),_0x386d5e['on']('messageroom',_0xf7ffae=>{const _0x5cf774=_0xf16719;this[_0x5cf774(0x1e6)](_0x5cf774(0x280),_0xf7ffae),console[_0x5cf774(0x271)]('messageroom:\x20',_0xf7ffae);}),_0x386d5e['on'](_0xf16719(0x293),_0x2cc648=>{const _0xc52014=_0xf16719;this[_0xc52014(0x1e6)](_0xc52014(0x293),_0x2cc648),console['log'](_0xc52014(0x2cd),_0x2cc648);});}},BB[_0x1ce293(0x2ed)]=(_0x483e37,_0x3260c5,_0x3a2c68)=>{const _0x5af959=_0x1ce293;console[_0x5af959(0x271)](_0x5af959(0x2fc)),CreateDigitImg=_0x5a456a=>{const _0x1fb778=_0x5af959;let _0x4708d3=document[_0x1fb778(0x317)]('canvas');_0x4708d3['width']=0x32,_0x4708d3[_0x1fb778(0x27d)]=0x32;let _0x145c6b=_0x4708d3[_0x1fb778(0x1a9)]('2d');_0x145c6b[_0x1fb778(0x286)]='black',_0x145c6b['fillRect'](0x0,0x0,_0x4708d3[_0x1fb778(0x2dd)],_0x4708d3['height']),_0x145c6b[_0x1fb778(0x256)]=_0x1fb778(0x2ba),_0x145c6b[_0x1fb778(0x286)]=_0x1fb778(0x387),_0x145c6b[_0x1fb778(0x2d0)](_0x5a456a,0xa,0x23);return _0x4708d3[_0x1fb778(0x368)]();return _0x4708d3[_0x1fb778(0x1dd)]();return createImageBitmap(_0x4708d3);let _0x31b392=_0x4708d3[_0x1fb778(0x368)](),_0x1e5aff=document[_0x1fb778(0x317)]('img');return _0x1e5aff['src']=_0x31b392,_0x1e5aff;};function _0x592182(_0x3e86ab,_0x551aa9){const _0x1725ed=_0x5af959;let _0x5cbbd2='';if(_0x3e86ab&&_0x3e86ab['includes'](_0x1725ed(0x1bd))){const _0x2e9a39=_0x3e86ab[_0x1725ed(0x32b)](/.*NTC./,'');let _0x1db907=0x0;while(_0x1db907+0x8<=_0x2e9a39[_0x1725ed(0x381)]){const _0x141a23=_0x2e9a39[_0x1725ed(0x153)](_0x1db907,_0x1db907+0x4),_0x2953de=((_0x2e9a39[_0x1725ed(0x2d1)](_0x1db907+0x4)*0x100+_0x2e9a39[_0x1725ed(0x2d1)](_0x1db907+0x5))*0x100+_0x2e9a39['charCodeAt'](_0x1db907+0x6))*0x100+_0x2e9a39[_0x1725ed(0x2d1)](_0x1db907+0x7);if(_0x1db907+0x8+_0x2953de>_0x2e9a39['length'])break;const _0x102ff5=_0x2e9a39[_0x1725ed(0x153)](_0x1db907+0x8,_0x1db907+0x8+_0x2953de);_0x141a23=='utc_'&&(timecodeDateTime=new Date(parseInt(_0x102ff5))[_0x1725ed(0x19f)]()/0x3e8,timecodeDelta=timecodeDateTime-_0x551aa9);_0x141a23==_0x1725ed(0x2d4)&&(tcTimeStamp=new Date(parseInt(_0x102ff5))[_0x1725ed(0x19f)]());if(_0x141a23==='offs'){timecode_offset=parseInt(_0x102ff5)/0x5a;if(_0x3a2c68[_0x1725ed(0x1b7)])console[_0x1725ed(0x271)](_0x1725ed(0x1a7),timecode_offset);}_0x1db907+=0x8+_0x2953de;}}return _0x5cbbd2;}let _0x5c3ce4=[0x0,0x0,0x0,0x0,0x0];function _0x4d1614(_0x596070){const _0x18b975=_0x5af959;if(_0x596070&&_0x596070[_0x18b975(0x324)]&&_0x596070['metadata']['id']==0x0||_0xb15fc['isSafariMac']()){if(_0x596070[_0x18b975(0x324)][_0x18b975(0x378)])_0x596070['metadata']['messageData']=_0x592182(_0x596070[_0x18b975(0x324)][_0x18b975(0x378)],_0x596070[_0x18b975(0x324)][_0x18b975(0x20e)]);else{if(_0x596070[_0x18b975(0x324)]['frames']&&_0x596070[_0x18b975(0x324)]['frames']['length']&&_0x596070['metadata'][_0x18b975(0x1f1)][0x0][_0x18b975(0x24c)]&&_0x596070[_0x18b975(0x324)][_0x18b975(0x1f1)][0x0][_0x18b975(0x24c)][_0x18b975(0x35a)]()===_0x18b975(0x14b)){const _0x6539a7=_0x596070[_0x18b975(0x324)][_0x18b975(0x1f1)][_0x18b975(0x1b0)](_0x384ecb=>{const _0x318938=_0x18b975;return _0x384ecb['info']&&_0x384ecb['info'][_0x318938(0x35a)]()['includes'](_0x318938(0x352));});_0x6539a7[_0x18b975(0x381)]&&(messageData=_0x6539a7[_0x6539a7[_0x18b975(0x381)]-0x1][_0x18b975(0x25d)]+'\x00'+String[_0x18b975(0x224)](..._0x6539a7[_0x6539a7[_0x18b975(0x381)]-0x1][_0x18b975(0x212)]),_0x596070['metadata']['messageData']=_0x592182(messageData,_0x596070[_0x18b975(0x324)][_0x18b975(0x20e)]));}}(_0x596070[_0x18b975(0x324)]['id']==0x0||_0xb15fc[_0x18b975(0x16a)]()&&timecode_offset==0x0)&&(presentationTime=_0x596070[_0x18b975(0x324)][_0x18b975(0x20e)]*0x3e8,offsetTimeCode=new Date(tcTimeStamp-timecode_offset),offsetTimeCodeframeNumber=Math[_0x18b975(0x31f)](offsetTimeCode[_0x18b975(0x169)]()*0x1e*0x2/0x3e9)/0x2,decimalPartOff=offsetTimeCodeframeNumber%0x1,partoff=0x1,decimalPartOff==0.5&&(offsetTimeCodeframeNumber=Math[_0x18b975(0x228)](offsetTimeCodeframeNumber),partoff=0x2),_0x5c3ce4=[offsetTimeCode[_0x18b975(0x2c1)](),offsetTimeCode[_0x18b975(0x333)](),offsetTimeCode[_0x18b975(0x29a)](),parseInt(offsetTimeCodeframeNumber),partoff==0x1?0x0:0x1]);}}function _0x4d97fe(_0x1f648b){const _0x50621c=_0x5af959;if(typeof globalConfig!=='undefined'){if(typeof globalConfig['MKsync']!==_0x50621c(0x341)){if(globalConfig['MKsync']=='no')return;}}if(BB['Utils'][_0x50621c(0x1a5)](_0x3a2c68[_0x50621c(0x296)])==0x7530/0x3e9){let _0x1d7374={'frame':0x0,'playerTime':0x0};_0x1d7374[_0x50621c(0x349)]=BB[_0x50621c(0x215)][_0x50621c(0x1d4)][_0x50621c(0x160)](_0x5c3ce4,0x7530/0x3e9,![]),_0x1d7374[_0x50621c(0x1ec)]=BB[_0x50621c(0x215)][_0x50621c(0x1d4)]['printTimecode'](_0x5c3ce4,![],![]),console[_0x50621c(0x271)](_0x50621c(0x2b5)+_0x1f648b[_0x50621c(0x193)]+_0x50621c(0x175)+_0x1d7374[_0x50621c(0x1ec)]+'\x20('+_0x1d7374[_0x50621c(0x349)]+')'+_0x50621c(0x2da)+_0x1f648b['playbackTime']),_0x1d7374['playerTime']=_0x1f648b[_0x50621c(0x204)],_0x3a2c68[_0x50621c(0x1f8)]=_0x1d7374;}else{if(BB[_0x50621c(0x215)][_0x50621c(0x1a5)](_0x3a2c68[_0x50621c(0x296)])==0xea60/0x3e9){let _0x129905={'frame':0x0,'playerTime':0x0};_0x129905[_0x50621c(0x349)]=BB['Utils'][_0x50621c(0x1d4)][_0x50621c(0x160)](_0x5c3ce4,0xea60/0x3e9,!![]),_0x129905[_0x50621c(0x1ec)]=BB[_0x50621c(0x215)][_0x50621c(0x1d4)][_0x50621c(0x191)](_0x5c3ce4,!![],!![]),console['log'](_0x50621c(0x2b5)+_0x1f648b[_0x50621c(0x193)]+_0x50621c(0x175)+_0x129905['stringTime']+'\x20('+_0x129905['frame']+')'+'\x20playing\x20at\x20'+_0x1f648b[_0x50621c(0x204)]),_0x129905[_0x50621c(0x1c3)]=_0x1f648b['playbackTime'],_0x3a2c68[_0x50621c(0x1f8)]=_0x129905;}}_0x1f648b[_0x50621c(0x35b)]['includes'](_0x50621c(0x22d))&&console[_0x50621c(0x271)](_0x50621c(0x2cf)+_0x1f648b[_0x50621c(0x193)]);}function _0x3f830d(_0x4264ad){const _0x4110e8=_0x5af959;switch(_0x4264ad[_0x4110e8(0x2b1)]){case wmcEvents[_0x4110e8(0x306)]:let _0x326b6f={'frame':0x0,'playerTime':0x0};BB[_0x4110e8(0x215)][_0x4110e8(0x1a5)](_0x3a2c68[_0x4110e8(0x296)])==0x7530/0x3e9&&(console[_0x4110e8(0x271)]('New\x20segment\x20('+_0x4264ad[_0x4110e8(0x193)]+_0x4110e8(0x175)+BB[_0x4110e8(0x215)][_0x4110e8(0x1d4)]['timeDate2TCString'](_0x4264ad[_0x4110e8(0x32f)],0x7530/0x3e9)+_0x4110e8(0x2da)+_0x4264ad[_0x4110e8(0x204)]),_0x326b6f['frame']=BB[_0x4110e8(0x215)][_0x4110e8(0x1d4)]['Timecode2Frames'](BB[_0x4110e8(0x215)][_0x4110e8(0x1d4)][_0x4110e8(0x167)](_0x4264ad[_0x4110e8(0x32f)],0x7530/0x3e9),0x7530/0x3e9,![]),_0x326b6f['stringTime']=BB['Utils'][_0x4110e8(0x1d4)][_0x4110e8(0x2be)](_0x4264ad[_0x4110e8(0x32f)],0x7530/0x3e9));BB['Utils'][_0x4110e8(0x1a5)](_0x3a2c68[_0x4110e8(0x296)])==0xea60/0x3e9&&(console[_0x4110e8(0x271)]('New\x20segment\x20('+_0x4264ad[_0x4110e8(0x193)]+_0x4110e8(0x175)+BB[_0x4110e8(0x215)][_0x4110e8(0x1d4)][_0x4110e8(0x2be)](_0x4264ad['dateTime'],0xea60/0x3e9)+_0x4110e8(0x2da)+_0x4264ad['playbackTime']),_0x326b6f['frame']=BB['Utils']['TimeCodesFramesTranslator'][_0x4110e8(0x160)](BB['Utils'][_0x4110e8(0x1d4)]['timeDate2TC'](_0x4264ad['dateTime']),fps,!![]),_0x326b6f['stringTime']=BB['Utils'][_0x4110e8(0x1d4)][_0x4110e8(0x2be)](_0x4264ad[_0x4110e8(0x32f)],0xea60/0x3e9));_0x326b6f[_0x4110e8(0x1c3)]=_0x4264ad[_0x4110e8(0x204)],_0x3a2c68[_0x4110e8(0x1f8)]=_0x326b6f;break;default:}}let _0x4c2812=BB['Utils']['TimeCodesFramesTranslator'],_0x43ef4d=BB[_0x5af959(0x215)]['getSourceFPS'](_0x3a2c68[_0x5af959(0x296)]),_0x549ffd=BB['Utils']['getMediaTimeFPS'](_0x3a2c68[_0x5af959(0x296)]);refreshRate=_0x3a2c68['refreshRate'];let _0x3434cd=null,_0x1fae96=null,_0x4a1ddf=null;if(_0x3a2c68[_0x5af959(0x1a6)]==BB[_0x5af959(0x25f)][_0x5af959(0x21a)])BB[_0x5af959(0x313)]&&(this[_0x5af959(0x1db)]=document[_0x5af959(0x317)](_0x5af959(0x1db)));else{let _0x4ccabc=document[_0x5af959(0x317)]('canvas');_0x4ccabc['width']=0x1f4,_0x4ccabc[_0x5af959(0x27d)]=0x1f4,document[_0x5af959(0x150)]['appendChild'](_0x4ccabc),_0x4a1ddf=_0x4ccabc[_0x5af959(0x1a9)](_0x5af959(0x351));}let _0xb15fc=BB['Utils'][_0x5af959(0x2e3)],_0x4e2746=-0x1,_0x5531ea=![];const _0x1f57be=(_0x36fd8c,_0x2bc552)=>{const _0x325277=_0x5af959;let _0x27f7a6=![];if(_0x3a2c68['debug']){var _0x5bb012=document[_0x325277(0x283)]('doNotRenderAugmentationCheckbox');_0x27f7a6=_0x5bb012[_0x325277(0x27a)];}if(_0x27f7a6)return 0x0;const _0x4dc809=performance[_0x325277(0x272)]();if(_0x4e2746==_0x36fd8c&&_0x2bc552==_0x5531ea){if(_0x3a2c68[_0x325277(0x1b7)])console[_0x325277(0x1e8)](_0x325277(0x20d)+_0x36fd8c);return 0x0;}if(!_0x3a2c68[_0x325277(0x22e)]||_0x3a2c68[_0x325277(0x1da)])return _0x1fae96['CleanGL'](),0x0;if(_0x3a2c68[_0x325277(0x1a6)]==BB[_0x325277(0x25f)]['RenderDigits'])renderDigit(_0x4a1ddf,_0x36fd8c);else{if(_0x3a2c68[_0x325277(0x1a6)]==BB['RenderingMode']['RenderTimecode']){if(_0x43ef4d==0xea60/0x3e9||_0x43ef4d==0x3c)renderTimecode(_0x4a1ddf,_0x4c2812[_0x325277(0x34e)](_0x36fd8c,_0x43ef4d,!![]),!![]);else{if(_0x43ef4d==0x7530/0x3e9||_0x43ef4d==0x1e)renderTimecode(_0x4a1ddf,_0x4c2812[_0x325277(0x34e)](_0x36fd8c,_0x43ef4d,![]),![]);}}else{if(_0x3a2c68[_0x325277(0x1a6)]==BB['RenderingMode'][_0x325277(0x21a)]){if(_0x43ef4d==0xea60/0x3e9||_0x43ef4d==0x3c)_0x1fae96[_0x325277(0x220)](_0x4c2812[_0x325277(0x191)](_0x4c2812[_0x325277(0x34e)](_0x36fd8c,_0x43ef4d,!![])));else(_0x43ef4d==0x7530/0x3e9||_0x43ef4d==0x1e)&&(_0x2bc552?_0x1fae96[_0x325277(0x220)](_0x4c2812[_0x325277(0x191)](_0x4c2812[_0x325277(0x34e)](_0x36fd8c*0x2+0x1,_0x43ef4d*0x2,!![]),!![])):_0x1fae96[_0x325277(0x220)](_0x4c2812[_0x325277(0x191)](_0x4c2812['Frames2Timecode'](_0x36fd8c,_0x43ef4d,![]),![])));}}}_0x4e2746=_0x36fd8c,_0x5531ea=_0x2bc552;const _0x1036c1=performance[_0x325277(0x272)]();return _0x1036c1-_0x4dc809;};let _0x5afbdf=0x0,_0x557747=0x0,_0x4fed56=0x20,_0x140d11=0x20,_0xdb4d98='',_0x484991=0x0,_0x2bde84,_0x2b3b34=0x0,_0x525d35=[],_0x5f3376=0x14;function _0x46c25b(_0x2b7fef){const _0x17902f=_0x5af959;_0x525d35[_0x17902f(0x338)](_0x2b7fef);_0x525d35[_0x17902f(0x381)]>_0x5f3376&&_0x525d35['shift']();const _0x372333=_0x525d35[_0x17902f(0x33a)]((_0x50cb9b,_0x11b590)=>_0x50cb9b+_0x11b590,0x0),_0x846394=_0x372333/_0x525d35[_0x17902f(0x381)];return _0x846394;}let _0x3e6d92=function(_0x4c270f,_0x49918a){const _0x1dd64c=_0x5af959;if(_0x3a2c68['hls_fps']!=0xea60/0x3e9&&_0x3a2c68[_0x1dd64c(0x26e)]!=0x7530/0x3e9){console['BBlog'](_0x1dd64c(0x1d0)+_0x3a2c68[_0x1dd64c(0x26e)]),_0x3260c5['requestVideoFrameCallback'](_0x3e6d92);return;}if(_0xdb4d98==_0x1dd64c(0x2f8)&&_0x3a2c68[_0x1dd64c(0x26e)]==0xea60/0x3e9){if(_0x3a2c68[_0x1dd64c(0x1b7)])console['BBlog'](_0x1dd64c(0x329));_0x3260c5[_0x1dd64c(0x342)](_0x3e6d92);return;}_0x3a2c68[_0x1dd64c(0x26e)]==0x7530/0x3e9?_0xdb4d98==_0x1dd64c(0x229)&&_0x2b3b34<=0x0?(_0xdb4d98=_0x1dd64c(0x28b),_0x2b3b34++):(_0xdb4d98=_0x1dd64c(0x27e),_0x2b3b34=0x0):_0xdb4d98=_0x1dd64c(0x27e);_0xfb2021=_0x4c270f;let _0x34084e=(_0x49918a['mediaTime']-_0x3a2c68['syncPoint']['playerTime'])%(0x3c*0x3c*0x18)*_0x549ffd,_0x3a5d3c=_0x49918a[_0x1dd64c(0x2cb)]-_0x3a2c68[_0x1dd64c(0x1f8)][_0x1dd64c(0x1c3)];lastFrameFromVideoCallback=Math['floor'](_0x34084e+0.1)+_0x3a2c68[_0x1dd64c(0x1f8)][_0x1dd64c(0x349)];if(_0x3a2c68[_0x1dd64c(0x1b7)]){var _0x1fa5dd=document[_0x1dd64c(0x283)](_0x1dd64c(0x316))['value'],_0x46b47f=parseInt(_0x1fa5dd);lastFrameFromVideoCallback+=_0x46b47f;}else lastFrameFromVideoCallback+=0x1;_0xeaebfc=_0x49918a[_0x1dd64c(0x2cb)];let _0x38837e=_0x3260c5[_0x1dd64c(0x221)],_0x2648a7=document[_0x1dd64c(0x283)](_0x1dd64c(0x19b));var _0x44e584='';if(BB[_0x1dd64c(0x215)]['getSourceFPS'](_0x3a2c68['frameRateMode'])==0xea60/0x3e9)_0x44e584=_0x4c2812[_0x1dd64c(0x191)](_0x4c2812[_0x1dd64c(0x34e)](lastFrameFromVideoCallback,_0x43ef4d,!![]),!![],!![]);else BB[_0x1dd64c(0x215)][_0x1dd64c(0x1a5)](_0x3a2c68[_0x1dd64c(0x296)])==0x7530/0x3e9?_0x44e584=_0x4c2812[_0x1dd64c(0x191)](_0x4c2812[_0x1dd64c(0x34e)](lastFrameFromVideoCallback,_0x43ef4d,![]),![],![]):_0x44e584=_0x1dd64c(0x307);var _0x2f924c='';if(BB[_0x1dd64c(0x215)][_0x1dd64c(0x1a5)](_0x3a2c68[_0x1dd64c(0x296)])==0xea60/0x3e9)_0x2f924c=_0x4c2812[_0x1dd64c(0x191)](_0x4c2812[_0x1dd64c(0x34e)](_0x3a2c68[_0x1dd64c(0x2aa)][_0x1dd64c(0x1cd)],_0x43ef4d,!![]),!![],!![]);else BB[_0x1dd64c(0x215)]['getSourceFPS'](_0x3a2c68[_0x1dd64c(0x296)])==0x7530/0x3e9?_0x2f924c=_0x4c2812['printTimecode'](_0x4c2812[_0x1dd64c(0x34e)](_0x3a2c68['augmentation'][_0x1dd64c(0x1cd)],_0x43ef4d,![]),![],![]):_0x2f924c=_0x1dd64c(0x307);let _0x3a9239=lastFrameFromVideoCallback-_0x3a2c68[_0x1dd64c(0x2aa)][_0x1dd64c(0x1cd)];if(_0x3434cd)_0x3434cd['setLastFrame'](_0x3a9239);var _0x4046a4='';if(BB[_0x1dd64c(0x215)]['getSourceFPS'](_0x3a2c68[_0x1dd64c(0x296)])==0xea60/0x3e9)_0x4046a4=_0x4c2812[_0x1dd64c(0x191)](_0x4c2812[_0x1dd64c(0x34e)](_0x3a9239,_0x43ef4d,!![]),!![],!![]);else BB['Utils'][_0x1dd64c(0x1a5)](_0x3a2c68[_0x1dd64c(0x296)])==0x7530/0x3e9?_0x4046a4=_0x4c2812['printTimecode'](_0x4c2812[_0x1dd64c(0x34e)](_0x3a9239,_0x43ef4d,![]),![],![]):_0x4046a4=_0x1dd64c(0x307);let _0x22ce6f=Date[_0x1dd64c(0x272)]()-_0x557747;var _0x20a5fb=0x3e8/_0x46c25b(_0x22ce6f);let _0x1d13f6=new Date(),_0xe6ad64=String(_0x1d13f6[_0x1dd64c(0x30c)]())['padStart'](0x2,'0'),_0x544518=String(_0x1d13f6['getMinutes']())[_0x1dd64c(0x27b)](0x2,'0'),_0x5d1fdc=String(_0x1d13f6[_0x1dd64c(0x1a8)]())[_0x1dd64c(0x27b)](0x2,'0'),_0x22db9d=String(_0x1d13f6['getMilliseconds']())[_0x1dd64c(0x27b)](0x3,'0'),_0x49d678=_0xe6ad64+':'+_0x544518+':'+_0x5d1fdc+'.'+_0x22db9d;if(_0x3a2c68[_0x1dd64c(0x1b7)]){var _0x1c4907='black';if(_0x3a2c68[_0x1dd64c(0x2aa)][_0x1dd64c(0x1cd)]!=_0x484991||_0x2bde84<0xa*0x3c)var _0x1c4907='red';_0x2648a7['innerHTML']=_0x1dd64c(0x254)+_0x5afbdf+_0x1dd64c(0x18b)+_0x3a2c68[_0x1dd64c(0x19e)]+_0x1dd64c(0x187)+_0x49d678+_0x1dd64c(0x1e7)+_0x49918a['mediaTime'][_0x1dd64c(0x289)](0x4)+_0x1dd64c(0x36b)+_0x34084e[_0x1dd64c(0x289)](0x4)+',\x20Stream\x20Time-Code:\x20'+_0x44e584+_0x1dd64c(0x36d)+_0x1c4907+'\x27>'+_0x3a2c68[_0x1dd64c(0x2aa)][_0x1dd64c(0x1cd)]+'('+_0x2f924c+_0x1dd64c(0x315)+_0x1dd64c(0x2ae)+_0x1dd64c(0x2ae)+_0x1dd64c(0x216)+_0x4046a4+'(\x20\x20'+_0x3a9239+_0x1dd64c(0x1d7)+'\x20</br>'+_0x1dd64c(0x2ae)+_0x1dd64c(0x2b4)+_0x49918a[_0x1dd64c(0x346)][_0x1dd64c(0x289)](0x4)+_0x1dd64c(0x17f)+_0x49918a[_0x1dd64c(0x20e)]['toFixed'](0x4)+_0x1dd64c(0x28c)+(_0x49918a[_0x1dd64c(0x20e)]-_0x49918a[_0x1dd64c(0x346)])[_0x1dd64c(0x289)](0x4)+_0x1dd64c(0x2fa)+(_0x49918a[_0x1dd64c(0x346)]-_0x4c270f)['toFixed'](0x4)+_0x1dd64c(0x37c)+_0x3a5d3c['toFixed'](0x4)+',\x20LastSyncPointTime:'+_0x3a2c68[_0x1dd64c(0x1f8)][_0x1dd64c(0x1c3)][_0x1dd64c(0x289)](0x4)+_0x1dd64c(0x225)+_0x3a2c68[_0x1dd64c(0x1f8)][_0x1dd64c(0x349)]+_0x1dd64c(0x2b6)+_0x3a2c68[_0x1dd64c(0x1f8)][_0x1dd64c(0x1ec)]+'\x20</br>',_0x3a2c68[_0x1dd64c(0x2aa)][_0x1dd64c(0x1cd)]!=_0x484991&&(_0x2bde84=0x0),_0x484991=_0x3a2c68[_0x1dd64c(0x2aa)][_0x1dd64c(0x1cd)],_0x2bde84++;}_0x5afbdf++,_0x557747=Date[_0x1dd64c(0x272)]();let _0x400440=![];if(_0x3a2c68[_0x1dd64c(0x1b7)]){var _0x52ac86=document['getElementById'](_0x1dd64c(0x203));_0x400440=_0x52ac86[_0x1dd64c(0x27a)];}let _0x599ed6=0x0;if(BB[_0x1dd64c(0x215)][_0x1dd64c(0x1a5)](_0x3a2c68[_0x1dd64c(0x296)])==0x7530/0x3e9){let _0x10f76a=0x18,_0x592736=0x21+(0x21-_0x10f76a);_0x22ce6f<_0x10f76a&&_0x4fed56<_0x592736||_0x4fed56<_0x10f76a&&_0x22ce6f<_0x592736||_0x140d11<_0x10f76a&&_0x4fed56<_0x592736&&_0x22ce6f<_0x592736||_0x400440==!![]?(_0x2648a7[_0x1dd64c(0x20b)]+='\x20Setting\x20(some)\x20ms\x20timer',setTimeout(function(){_0x1f57be(_0x3a9239,![]);},0xa)):_0x1f57be(_0x3a9239,![]);}else{if(BB['Utils'][_0x1dd64c(0x1a5)](_0x3a2c68['frameRateMode'])==0xea60/0x3e9){if(_0x3a2c68[_0x1dd64c(0x26e)]==0x7530/0x3e9)_0x4530b1=_0x3a9239;else{if(_0x20a5fb>0x32&&_0x20a5fb<0x46)_0x599ed6=_0x1f57be(_0x3a9239,![]);else{if(_0x5afbdf%0x3c==0x0)console[_0x1dd64c(0x36f)](_0x1dd64c(0x32c)+_0x20a5fb[_0x1dd64c(0x289)](0x4)+_0x1dd64c(0x16d));_0x1fae96['CleanGL']();}}}else console[_0x1dd64c(0x1e8)]('FPS\x20not\x20supported');}_0x140d11=_0x4fed56,_0x4fed56=_0x22ce6f;_0x3a2c68[_0x1dd64c(0x1b7)]&&console[_0x1dd64c(0x1e8)](_0x1dd64c(0x357)+_0x1dd64c(0x38c)+_0x49d678+',\x20rendering:\x20'+_0x44e584+_0x1dd64c(0x332)+_0x599ed6[_0x1dd64c(0x289)](0x4)+_0x1dd64c(0x268));_0x3260c5['requestVideoFrameCallback'](_0x3e6d92);return;},_0x1a45de=0x0,_0x2d39e4=[],_0x3f4482=0x3c,_0x29ca1d=0x0;function _0x5e1652(_0x4937c6){const _0x1ca962=_0x5af959;_0x2d39e4[_0x1ca962(0x338)](_0x4937c6);_0x2d39e4[_0x1ca962(0x381)]>_0x3f4482&&_0x2d39e4[_0x1ca962(0x21b)]();const _0x1a9d29=_0x2d39e4[_0x1ca962(0x33a)]((_0xa8b345,_0x618b29)=>_0xa8b345+_0x618b29,0x0),_0x1486c4=_0x1a9d29/_0x2d39e4['length'];return _0x1486c4;}const _0x152d38=_0xa34afd=>{const _0x5b186f=_0x5af959;_0x1a45de++;let _0x170720=new Date();var _0x51904f=_0x170720-_0x29ca1d;_0x29ca1d=_0x170720;var _0x223a7e=0x3e8/_0x5e1652(_0x51904f);Math[_0x5b186f(0x23a)](_0x223a7e-0x3c)>0x5?(_0x3a2c68['stopAugment']=!![],_0x1a45de%0x1e==0x0&&console[_0x5b186f(0x36f)](_0x5b186f(0x15c)+_0x223a7e)):_0x3a2c68[_0x5b186f(0x1da)]=![];if(!_0x3a2c68[_0x5b186f(0x1b7)]){let _0x13945b=document[_0x5b186f(0x283)]('forceUpdate');if(_0x13945b!=null)_0x13945b[_0x5b186f(0x20b)]=_0x1a45de;window['requestAnimationFrame'](_0x152d38);return;}let _0x59c762=String(_0x170720[_0x5b186f(0x30c)]())[_0x5b186f(0x27b)](0x2,'0'),_0x3af28e=String(_0x170720[_0x5b186f(0x206)]())[_0x5b186f(0x27b)](0x2,'0'),_0x31569c=String(_0x170720[_0x5b186f(0x1a8)]())['padStart'](0x2,'0'),_0x4205c3=String(_0x170720[_0x5b186f(0x207)]())[_0x5b186f(0x27b)](0x3,'0'),_0x3b4795=_0x59c762+':'+_0x3af28e+':'+_0x31569c+'.'+_0x4205c3;if(_0x3260c5['paused']){window['requestAnimationFrame'](_0x152d38);return;}let _0x20e514=document[_0x5b186f(0x283)](_0x5b186f(0x363));if(_0x3a2c68[_0x5b186f(0x1b7)])_0x20e514[_0x5b186f(0x20b)]=_0x5b186f(0x2b0)+_0x1a45de+_0x5b186f(0x156)+_0x3b4795;if(_0x3a2c68[_0x5b186f(0x26e)]==0x7530/0x3e9){_0x20e514[_0x5b186f(0x20b)]+=_0x5b186f(0x262)+_0x3260c5[_0x5b186f(0x221)][_0x5b186f(0x289)](0x4);if(_0xdb4d98==_0x5b186f(0x27e))_0x20e514['innerHTML']+=_0x5b186f(0x32d),_0x1f57be(_0x4530b1,![]),_0xdb4d98=_0x5b186f(0x28b);else{if(_0xdb4d98==_0x5b186f(0x28b))_0xdb4d98=_0x5b186f(0x2f8);else _0xdb4d98==_0x5b186f(0x2f8)&&(_0x20e514[_0x5b186f(0x20b)]+=_0x5b186f(0x1ea),_0x1f57be(_0x4530b1+0x2,![]),_0xdb4d98=_0x5b186f(0x229));}_0x20e514[_0x5b186f(0x20b)]+=_0x5b186f(0x291)+_0xdb4d98,console[_0x5b186f(0x1e8)](_0x5b186f(0x29c)+_0x5b186f(0x156)+_0x3b4795+_0x5b186f(0x2d9)+_0xdb4d98),window[_0x5b186f(0x1d5)](_0x152d38);return;}else{if(_0x3a2c68[_0x5b186f(0x26e)]==0xea60/0x3e9){if(_0xdb4d98==_0x5b186f(0x28b)||_0xdb4d98==_0x5b186f(0x2f8)){var _0x3098c4='';if(BB[_0x5b186f(0x215)][_0x5b186f(0x1a5)](_0x3a2c68['frameRateMode'])==0xea60/0x3e9)_0x3098c4=_0x4c2812[_0x5b186f(0x191)](_0x4c2812[_0x5b186f(0x34e)](_0x4e2746+0x1,_0x43ef4d,!![]),!![],!![]);else BB[_0x5b186f(0x215)][_0x5b186f(0x1a5)](_0x3a2c68[_0x5b186f(0x296)])==0x7530/0x3e9?_0x3098c4=_0x4c2812[_0x5b186f(0x191)](_0x4c2812[_0x5b186f(0x34e)](_0x4e2746+0x1,_0x43ef4d,![]),![],![]):_0x3098c4=_0x5b186f(0x307);var _0x183d9c='';if(BB[_0x5b186f(0x215)]['getSourceFPS'](_0x3a2c68[_0x5b186f(0x296)])==0xea60/0x3e9)_0x183d9c=_0x4c2812[_0x5b186f(0x191)](_0x4c2812[_0x5b186f(0x34e)](_0x3a2c68['augmentation'][_0x5b186f(0x1cd)],_0x43ef4d,!![]),!![],!![]);else BB['Utils'][_0x5b186f(0x1a5)](_0x3a2c68['frameRateMode'])==0x7530/0x3e9?_0x183d9c=_0x4c2812['printTimecode'](_0x4c2812['Frames2Timecode'](_0x3a2c68[_0x5b186f(0x2aa)][_0x5b186f(0x1cd)],_0x43ef4d,![]),![],![]):_0x183d9c=_0x5b186f(0x307);let _0x12e8ac=_0x4e2746-_0x3a2c68[_0x5b186f(0x2aa)][_0x5b186f(0x1cd)];var _0x4450a5='';if(BB[_0x5b186f(0x215)][_0x5b186f(0x1a5)](_0x3a2c68['frameRateMode'])==0xea60/0x3e9)_0x4450a5=_0x4c2812['printTimecode'](_0x4c2812[_0x5b186f(0x34e)](_0x12e8ac,_0x43ef4d,!![]),!![],!![]);else BB[_0x5b186f(0x215)][_0x5b186f(0x1a5)](_0x3a2c68[_0x5b186f(0x296)])==0x7530/0x3e9?_0x4450a5=_0x4c2812['printTimecode'](_0x4c2812[_0x5b186f(0x34e)](_0x12e8ac,_0x43ef4d,![]),![],![]):_0x4450a5=_0x5b186f(0x307);_0x3a2c68['debug']&&(console['BBlog'](_0x5b186f(0x14e)+_0x3098c4+')'+_0x5b186f(0x1bb)+_0xdb4d98),_0x20e514[_0x5b186f(0x20b)]+='\x20\x20correction');let _0x18a1db=_0x1f57be(_0x4e2746+0x1,![]);if(_0x3a2c68[_0x5b186f(0x1b7)])console[_0x5b186f(0x1e8)](_0x5b186f(0x29c)+_0x5b186f(0x156)+_0x3b4795+',\x20correction'+_0x5b186f(0x157)+_0x3098c4+_0x5b186f(0x17e)+_0x3a2c68['augmentation'][_0x5b186f(0x1cd)]+'('+_0x183d9c+')'+',\x20resultTime:\x20'+_0x4450a5+_0x5b186f(0x332)+_0x18a1db[_0x5b186f(0x289)](0x4)+_0x5b186f(0x268));if(_0xdb4d98==_0x5b186f(0x28b))_0xdb4d98=_0x5b186f(0x2f8);else{if(_0xdb4d98==_0x5b186f(0x2f8))_0xdb4d98=_0x5b186f(0x28b);}}else{if(_0x3a2c68['debug'])console['BBlog'](_0x5b186f(0x29c)+_0x5b186f(0x156)+_0x3b4795);_0xdb4d98=_0x5b186f(0x28b);}}else console[_0x5b186f(0x1e8)]('Unsupported\x20FPS:\x20options.hls_fps\x20=\x20'+_0x3a2c68[_0x5b186f(0x26e)]);}window[_0x5b186f(0x1d5)](_0x152d38);};let _0x2d8e85=_0x3a2c68['frameRateMode']==BB[_0x5af959(0x16b)][_0x5af959(0x365)]?-0.04:+0.05,_0x266253=0x0,_0x258848={},_0x2d84e0=0x0,_0x526e94=0x0,_0x18642f=0x0,_0x171ee1=0x0,_0x4bf0a6=0x0,_0xeaebfc=-0x1,_0x1e7b7=0x0,_0x13b4e7=![],_0x13be75=0x0,_0x1f7f21=0x0,_0x4dd157=0x0,_0x1f3678=0x0,_0x2fce86=0x0;const _0xd5b0ac=(_0x57bf64,_0x2e626c)=>{const _0x302da8=_0x5af959;let _0x51fdab=performance['now']();_0x10259a=_0x2e626c,_0x1f3678=new Date();let _0x523bc5=String(_0x1f3678['getHours']())[_0x302da8(0x27b)](0x2,'0'),_0x1f838f=String(_0x1f3678[_0x302da8(0x206)]())[_0x302da8(0x27b)](0x2,'0'),_0x1537fa=String(_0x1f3678[_0x302da8(0x1a8)]())['padStart'](0x2,'0'),_0x15c352=String(_0x1f3678[_0x302da8(0x207)]())[_0x302da8(0x27b)](0x3,'0'),_0x16b7ef=_0x523bc5+':'+_0x1f838f+':'+_0x1537fa+'.'+_0x15c352;if(_0x3a2c68['debug']){let _0x3f5af6=document[_0x302da8(0x283)](_0x302da8(0x19b));_0x3f5af6[_0x302da8(0x20b)]=_0x302da8(0x297)+_0x171ee1+_0x302da8(0x187)+_0x16b7ef+_0x302da8(0x1c9)+(_0x51fdab-_0x2fce86)[_0x302da8(0x289)](0x4)+_0x302da8(0x2b4)+_0x2e626c['expectedDisplayTime'][_0x302da8(0x289)](0x4)+_0x302da8(0x17f)+_0x2e626c[_0x302da8(0x20e)][_0x302da8(0x289)](0x4)+_0x302da8(0x263)+(_0x2e626c[_0x302da8(0x2cb)]-_0xeaebfc)[_0x302da8(0x289)](0x4)+_0x302da8(0x2fa)+(_0x2e626c[_0x302da8(0x346)]-_0x57bf64)[_0x302da8(0x289)](0x4)+_0x302da8(0x2ae)+_0x302da8(0x202)+_0x2e626c[_0x302da8(0x1c5)]+_0x302da8(0x2e7)+(_0x2e626c[_0x302da8(0x1c5)]-_0x4dd157);}_0x4dd157=_0x2e626c[_0x302da8(0x1c5)],_0xeaebfc=_0x2e626c['mediaTime'],_0x2fce86=_0x51fdab,_0x171ee1++,_0x3260c5[_0x302da8(0x342)](_0xd5b0ac);return;};let _0x20995b=![],_0x10259a={};_0x10259a[_0x5af959(0x2cb)]=0x0,_0x10259a['presentationTime']=0x0,_0x10259a[_0x5af959(0x346)]=0x0,_0x10259a['presentedFrames']=0x0;let _0x34f5c5=0.99,_0x5ee120=0x0,_0xd1e1f1=0x0,_0xfb2021=0x0,_0x39983d=-0x63;const _0x4b5d3f=_0x3fc7e7=>{const _0x49cc2f=_0x5af959;_0x1a45de++;let _0x5ac2b0=new Date();var _0x3d5c96=_0x5ac2b0-_0xfb2021;_0xfb2021=_0x5ac2b0;var _0x4e3645=_0x5e1652(0x3e8/_0x3d5c96);if(Math['abs'](_0x4e3645-0x3c)>0x5)_0x39983d=0x1,_0x1a45de%0x1e==0x0&&console[_0x49cc2f(0x36f)](_0x49cc2f(0x15c)+_0x4e3645);else{if(_0x39983d>0x1f4||_0x39983d<0x0)_0x39983d=-0x63;}_0x39983d>=0x0&&_0x39983d<0x1f4?_0x3a2c68[_0x49cc2f(0x1da)]=!![]:_0x3a2c68[_0x49cc2f(0x1da)]=![];_0x39983d++;let _0x4ca7fa=String(_0x5ac2b0[_0x49cc2f(0x30c)]())[_0x49cc2f(0x27b)](0x2,'0'),_0xfe8447=String(_0x5ac2b0[_0x49cc2f(0x206)]())['padStart'](0x2,'0'),_0x410e07=String(_0x5ac2b0[_0x49cc2f(0x1a8)]())[_0x49cc2f(0x27b)](0x2,'0'),_0x164bdc=String(_0x5ac2b0[_0x49cc2f(0x207)]())['padStart'](0x3,'0'),_0x375678=_0x4ca7fa+':'+_0xfe8447+':'+_0x410e07+'.'+_0x164bdc;var _0x30a19c=0x2;let _0x3bf5be;if(_0x3a2c68['debug']){_0x3bf5be=document[_0x49cc2f(0x283)](_0x49cc2f(0x363));var _0x435deb=document[_0x49cc2f(0x283)](_0x49cc2f(0x316))['value'];_0x30a19c=parseInt(_0x435deb);}var _0x2f806c=0x0,_0x37b34e=(_0x3260c5['currentTime']-_0x3a2c68[_0x49cc2f(0x1f8)][_0x49cc2f(0x1c3)])%(0x3c*0x3c*0x18)*_0x549ffd;_0x2f806c=Math[_0x49cc2f(0x228)](_0x37b34e)+_0x3a2c68[_0x49cc2f(0x1f8)][_0x49cc2f(0x349)];var _0x957490=![];_0x2f806c-_0xd1e1f1==0x2&&_0x37b34e-_0x5ee120<1.5&&(_0xd1e1f1=_0x2f806c,_0x2f806c--,_0x957490=!![]);_0x957490?_0xd1e1f1=_0x2f806c+0x1:_0xd1e1f1=_0x2f806c;_0x5ee120=_0x37b34e,_0x2f806c+=_0x30a19c;var _0x5e06aa=_0x37b34e-Math[_0x49cc2f(0x228)](_0x37b34e);if(_0x20995b||_0x5e06aa<0.226&&_0x34f5c5<0.226)_0x20995b=!![];if(_0x5e06aa>0.8)_0x20995b=![];_0x34f5c5=_0x5e06aa;if(_0x20995b)_0x2f806c--;var _0x597d9d='';if(BB[_0x49cc2f(0x215)][_0x49cc2f(0x1a5)](_0x3a2c68['frameRateMode'])==0xea60/0x3e9)_0x597d9d=_0x4c2812[_0x49cc2f(0x191)](_0x4c2812['Frames2Timecode'](_0x2f806c,_0x43ef4d,!![]),!![],!![]);else BB[_0x49cc2f(0x215)]['getSourceFPS'](_0x3a2c68[_0x49cc2f(0x296)])==0x7530/0x3e9?_0x597d9d=_0x4c2812[_0x49cc2f(0x191)](_0x4c2812[_0x49cc2f(0x34e)](_0x2f806c,_0x43ef4d,![]),![],![]):_0x597d9d=_0x49cc2f(0x307);var _0x749c32='';if(BB['Utils'][_0x49cc2f(0x1a5)](_0x3a2c68[_0x49cc2f(0x296)])==0xea60/0x3e9)_0x749c32=_0x4c2812[_0x49cc2f(0x191)](_0x4c2812[_0x49cc2f(0x34e)](_0x3a2c68[_0x49cc2f(0x2aa)][_0x49cc2f(0x1cd)],_0x43ef4d,!![]),!![],!![]);else BB[_0x49cc2f(0x215)][_0x49cc2f(0x1a5)](_0x3a2c68[_0x49cc2f(0x296)])==0x7530/0x3e9?_0x749c32=_0x4c2812[_0x49cc2f(0x191)](_0x4c2812[_0x49cc2f(0x34e)](_0x3a2c68[_0x49cc2f(0x2aa)][_0x49cc2f(0x1cd)],_0x43ef4d,![]),![],![]):_0x749c32=_0x49cc2f(0x307);let _0xd4b16=_0x2f806c-_0x3a2c68[_0x49cc2f(0x2aa)]['offset'];var _0x5934e2='';if(BB[_0x49cc2f(0x215)][_0x49cc2f(0x1a5)](_0x3a2c68[_0x49cc2f(0x296)])==0xea60/0x3e9)_0x5934e2=_0x4c2812[_0x49cc2f(0x191)](_0x4c2812['Frames2Timecode'](_0xd4b16,_0x43ef4d,!![]),!![],!![]);else BB[_0x49cc2f(0x215)][_0x49cc2f(0x1a5)](_0x3a2c68['frameRateMode'])==0x7530/0x3e9?_0x5934e2=_0x4c2812[_0x49cc2f(0x191)](_0x4c2812['Frames2Timecode'](_0xd4b16,_0x43ef4d,![]),![],![]):oresultFramesStr=_0x49cc2f(0x307);if(_0x3a2c68[_0x49cc2f(0x1b7)]){var _0x16d21b=_0x49cc2f(0x2fd);if(_0x3a2c68[_0x49cc2f(0x2aa)][_0x49cc2f(0x1cd)]!=_0x484991||_0x2bde84<0xa*0x3c)var _0x16d21b=_0x49cc2f(0x243);_0x3bf5be[_0x49cc2f(0x20b)]=_0x49cc2f(0x33b)+_0x19be76+_0x49cc2f(0x187)+_0x375678+',\x20dblFrame:\x20'+_0x37b34e['toFixed'](0x4)+_0x49cc2f(0x1ad)+(_0x5ac2b0-_0x1f3678)+_0x49cc2f(0x20c)+_0x3a2c68[_0x49cc2f(0x19e)]+',\x20stremTime:\x20'+_0x597d9d+'(\x20\x20'+_0x2f806c+_0x49cc2f(0x222)+_0x49cc2f(0x36d)+_0x16d21b+'\x27>'+_0x3a2c68['augmentation']['offset']+'('+_0x749c32+_0x49cc2f(0x315)+_0x49cc2f(0x2ae)+_0x49cc2f(0x2ae)+_0x49cc2f(0x335)+_0x5934e2+'('+_0xd4b16+')</span>'+'\x20</br>'+_0x49cc2f(0x2ae)+',\x20LastSyncPointTime:'+_0x3a2c68['syncPoint'][_0x49cc2f(0x1c3)][_0x49cc2f(0x289)](0x4)+_0x49cc2f(0x225)+_0x3a2c68[_0x49cc2f(0x1f8)][_0x49cc2f(0x349)]+',\x20LastSyncPoint:'+_0x3a2c68['syncPoint'][_0x49cc2f(0x1ec)]+_0x49cc2f(0x30d)+_0x20995b+',\x20correction2FrameJump:\x20'+_0x957490;}if(_0x3434cd)_0x3434cd[_0x49cc2f(0x1c0)](_0xd4b16);_0x1f57be(_0xd4b16),_0x19be76++,window[_0x49cc2f(0x1d5)](_0x4b5d3f);return;};let _0x4530b1=-0x1,_0x40b812=0x270f,_0x2278b8=0x0,_0x19be76=0x0,_0x423ab1=0x0;function _0x25b7b1(_0x557204){const _0x5ed09e=_0x5af959;var _0x500f7f=parseInt(window['getComputedStyle'](_0x557204)[_0x5ed09e(0x1fb)](_0x5ed09e(0x2dd)),0xa),_0x7f206c=parseInt(window[_0x5ed09e(0x1a3)](_0x557204)['getPropertyValue'](_0x5ed09e(0x27d)),0xa),_0x28e1ce=_0x557204[_0x5ed09e(0x1c8)],_0x50f4a4=_0x557204[_0x5ed09e(0x345)],_0x36877c=_0x500f7f/_0x7f206c,_0x1cc134=_0x28e1ce/_0x50f4a4,_0xd0de43={'top':0x0,'bottom':0x0,'left':0x0,'right':0x0};if(_0x36877c>_0x1cc134){var _0x1a2b9a=_0x7f206c*_0x1cc134;_0xd0de43[_0x5ed09e(0x192)]=(_0x500f7f-_0x1a2b9a)/0x2,_0xd0de43[_0x5ed09e(0x230)]=_0xd0de43[_0x5ed09e(0x192)];}else{if(_0x36877c<_0x1cc134){var _0x199559=_0x500f7f/_0x1cc134;_0xd0de43[_0x5ed09e(0x34f)]=(_0x7f206c-_0x199559)/0x2,_0xd0de43[_0x5ed09e(0x28f)]=_0xd0de43[_0x5ed09e(0x34f)];}}return _0xd0de43;}function _0x2961c2(_0x1f02f9){const _0x58fe0e=_0x5af959;console[_0x58fe0e(0x1e8)]('resizing\x20Window');var _0x4806cd=_0x25b7b1(_0x1f02f9);return _0x1fae96[_0x58fe0e(0x294)]()[_0x58fe0e(0x383)][_0x58fe0e(0x34f)]=Math[_0x58fe0e(0x31f)](_0x4806cd[_0x58fe0e(0x34f)])+'px',_0x1fae96[_0x58fe0e(0x294)]()['style'][_0x58fe0e(0x192)]=Math['round'](_0x4806cd[_0x58fe0e(0x192)])+'px',_0x4806cd;}console['BBlog'](_0x5af959(0x237)),console[_0x5af959(0x1e8)](_0x5af959(0x21c));typeof window!==_0x5af959(0x341)?console[_0x5af959(0x1e8)](_0x5af959(0x1fa)):console[_0x5af959(0x1e8)]('The\x20window\x20object\x20is\x20not\x20defined.\x20This\x20script\x20might\x20not\x20be\x20running\x20in\x20a\x20browser\x20environment.');_0x5af959(0x1d5)in window?console[_0x5af959(0x1e8)](_0x5af959(0x2c7)):console[_0x5af959(0x1e8)](_0x5af959(0x301));typeof _0x3260c5!=='undefined'?console[_0x5af959(0x1e8)](_0x5af959(0x2a1)):console[_0x5af959(0x1e8)](_0x5af959(0x14f));_0x5af959(0x342)in _0x3260c5?console[_0x5af959(0x1e8)](_0x5af959(0x1e9)):console[_0x5af959(0x1e8)](_0x5af959(0x241));window[_0x5af959(0x231)](_0x5af959(0x366),function(){_0x2961c2(_0x3260c5);});if(_0xb15fc[_0x5af959(0x16a)]())BB[_0x5af959(0x313)]=![],window[_0x5af959(0x1d5)](_0x4b5d3f);else _0xb15fc[_0x5af959(0x24d)]()?(BB[_0x5af959(0x313)]=!![],window[_0x5af959(0x1d5)](_0x152d38),_0x3260c5[_0x5af959(0x355)]>=0x1?(console['BBlog'](_0x5af959(0x319)),_0x3260c5[_0x5af959(0x342)](_0x3e6d92)):(console[_0x5af959(0x1e8)](_0x5af959(0x2b7)+_0x3260c5[_0x5af959(0x355)]),_0x3260c5[_0x5af959(0x231)]('loadedmetadata',()=>{const _0x1a8975=_0x5af959;console[_0x1a8975(0x1e8)]('now\x20video\x20element\x20is\x20loaded\x20in\x20\x22loadedmetadata\x22\x20event.\x20Setting\x20up\x20requestVideoFrameCallback'),_0x3260c5['requestVideoFrameCallback'](_0x3e6d92);}))):console[_0x5af959(0x36f)](_0x5af959(0x2a2));console[_0x5af959(0x1e8)](_0x5af959(0x364)),console[_0x5af959(0x1e8)](_0x5af959(0x380));function _0x5551bd(){return new Promise(_0x296441=>{let _0x38cb7e=0x0;const _0x4af8b7=[],_0x393e2d=0x14;function _0x2b81e6(_0x5b1ab5){const _0x21a870=_0x92df;if(_0x38cb7e){const _0x25cb09=_0x5b1ab5-_0x38cb7e,_0x110858=0x3e8/_0x25cb09;if(!(_0x110858===undefined)){if(_0x110858>0x0&&_0x110858<0xc8)_0x4af8b7[_0x21a870(0x338)](_0x110858);}if(_0x4af8b7['length']===_0x393e2d){const _0x23519c=_0x4af8b7[_0x21a870(0x33a)]((_0x45bcf6,_0x2fed34)=>_0x45bcf6+_0x2fed34,0x0)/_0x393e2d;_0x296441(Math[_0x21a870(0x31f)](_0x23519c));return;}}_0x38cb7e=_0x5b1ab5,requestAnimationFrame(_0x2b81e6);}requestAnimationFrame(_0x2b81e6);});}(_0xb15fc['isSafariMac']()||_0xb15fc[_0x5af959(0x16a)]())&&_0x5551bd()['then'](_0x9bfa1a=>{const _0x4e8617=_0x5af959;_0x3a2c68['ScreenFPS']=_0x9bfa1a,_0x3a2c68[_0x4e8617(0x2e2)]>0x46||_0x3a2c68[_0x4e8617(0x2e2)]<0x32?(console[_0x4e8617(0x36f)]('Average\x20refresh\x20screen\x20rate:\x20'+_0x9bfa1a+_0x4e8617(0x2c2)),_0x3a2c68[_0x4e8617(0x1da)]=!![]):console[_0x4e8617(0x1e8)](_0x4e8617(0x14c)+_0x9bfa1a+_0x4e8617(0x274));});const _0x3302fd=()=>{const _0x3baca5=_0x5af959;BB[_0x3baca5(0x313)]?_0x1b47ea():_0x364c61();},_0x364c61=()=>{const _0x287449=_0x5af959;let _0x453e2b=_0x3260c5[_0x287449(0x2e8)];_0x1fae96=new BB[(_0x287449(0x2ac))](_0x453e2b,_0x3260c5,_0x3a2c68),ads=BB[_0x287449(0x290)](_0x1fae96,_0x3a2c68),_0x3434cd=BB[_0x287449(0x360)](_0x3a2c68,_0x1fae96);},_0x1b47ea=()=>{const _0x5e3f6d=_0x5af959;let _0x2d4c13=_0x3260c5[_0x5e3f6d(0x2e8)],_0x5530a8=_0x2d4c13[_0x5e3f6d(0x2f4)],_0x339f38=_0x2d4c13[_0x5e3f6d(0x2c5)];this[_0x5e3f6d(0x1db)][_0x5e3f6d(0x383)][_0x5e3f6d(0x34f)]=0x0,this[_0x5e3f6d(0x1db)][_0x5e3f6d(0x383)][_0x5e3f6d(0x192)]=0x0;var _0x36a74f=_0x25b7b1(_0x3260c5);if(_0x3260c5[_0x5e3f6d(0x355)]>=0x1){var _0x36a74f=_0x25b7b1(_0x3260c5);this[_0x5e3f6d(0x1db)][_0x5e3f6d(0x383)][_0x5e3f6d(0x34f)]=Math[_0x5e3f6d(0x31f)](_0x36a74f['top'])+'px',this['canvas'][_0x5e3f6d(0x383)]['left']=Math[_0x5e3f6d(0x31f)](_0x36a74f[_0x5e3f6d(0x192)])+'px';}else console['BBlog'](_0x5e3f6d(0x2b7)+_0x3260c5[_0x5e3f6d(0x355)]),_0x3260c5[_0x5e3f6d(0x231)](_0x5e3f6d(0x1b3),()=>{const _0x2c1624=_0x5e3f6d;var _0x12438a=_0x25b7b1(_0x3260c5);this[_0x2c1624(0x1db)][_0x2c1624(0x383)][_0x2c1624(0x34f)]=Math[_0x2c1624(0x31f)](_0x12438a[_0x2c1624(0x34f)])+'px',this[_0x2c1624(0x1db)]['style'][_0x2c1624(0x192)]=Math[_0x2c1624(0x31f)](_0x12438a[_0x2c1624(0x192)])+'px';});this[_0x5e3f6d(0x1db)]['style'][_0x5e3f6d(0x2dd)]=_0x5e3f6d(0x2eb),this['canvas'][_0x5e3f6d(0x383)][_0x5e3f6d(0x258)]=0x186a0,this[_0x5e3f6d(0x1db)]['width']=_0x2d4c13[_0x5e3f6d(0x178)],this[_0x5e3f6d(0x1db)][_0x5e3f6d(0x27d)]=_0x2d4c13[_0x5e3f6d(0x2ef)],this[_0x5e3f6d(0x1db)][_0x5e3f6d(0x383)][_0x5e3f6d(0x314)]=_0x5e3f6d(0x19a);let _0x3fac32=_0x2d4c13[_0x5e3f6d(0x339)](_0x5e3f6d(0x22d))[0x0],_0x30abe8=_0x3fac32[_0x5e3f6d(0x350)];if(_0x30abe8)_0x2d4c13[_0x5e3f6d(0x287)](this[_0x5e3f6d(0x1db)],_0x30abe8);else _0x2d4c13[_0x5e3f6d(0x18f)](this['canvas']);this[_0x5e3f6d(0x1db)]['style']['pointer-events']=_0x5e3f6d(0x2d5);let _0x53e2e5={};if(!![])for(let _0x3d31ba=0x0;_0x3d31ba<0xa;++_0x3d31ba){let _0x3cdaf0=_0x3d31ba+'.1',_0x369117=_0x3d31ba+'.2';_0x53e2e5[_0x3cdaf0]=this[_0x5e3f6d(0x304)](_0x3cdaf0),_0x53e2e5[_0x369117]=this['CreateDigitImg'](_0x369117);}_0x1fae96=new BB[(_0x5e3f6d(0x247))](this['canvas'],_0x3a2c68,_0x53e2e5),canvas=this[_0x5e3f6d(0x1db)],_0x3fac32[_0x5e3f6d(0x231)](_0x5e3f6d(0x1cf),_0x21d7c2=>{const _0x1a7756=_0x5e3f6d;var _0x5cb3e3=canvas[_0x1a7756(0x1b8)]();_0x1fae96[_0x1a7756(0x2d8)](_0x21d7c2[_0x1a7756(0x264)],_0x21d7c2[_0x1a7756(0x2b9)],_0x5cb3e3);}),ads=BB['Ads'](_0x1fae96,_0x3a2c68),_0x3434cd=BB[_0x5e3f6d(0x360)](_0x3a2c68,_0x1fae96);},_0x5a357f=()=>{return _0x1fae96['getCanvas']();},_0x2e4953=_0x3b5ff1=>{_0x4d97fe(_0x3b5ff1);},_0x18f5bb=_0x2a2388=>{_0x4d1614(_0x2a2388);};return{'getCanvas':_0x5a357f,'onNewSegmentInterface':_0x2e4953,'onNewMetadataInterface':_0x18f5bb,'initializeComponents':_0x3302fd};},BB[_0x1ce293(0x2ac)]=class{constructor(_0x63540d,_0x5594a3,_0x303eac){const _0x4d593=_0x1ce293;if(_0x303eac[_0x4d593(0x2aa)][_0x4d593(0x1d3)]){this[_0x4d593(0x163)]={};for(let _0x1ba3e5=0x0;_0x1ba3e5<0xa;++_0x1ba3e5){let _0x3a389a=_0x1ba3e5+'.1',_0x151062=_0x1ba3e5+'.2';this['digitImg'][_0x3a389a]=this['CreateDigitImg'](_0x3a389a),this['digitImg'][_0x151062]=this[_0x4d593(0x304)](_0x151062);}}this[_0x4d593(0x309)]=Object[_0x4d593(0x373)]({'adLoopTime':0x1388,'isAdLoop':![]},_0x303eac||{}),this[_0x4d593(0x2c0)]=BB[_0x4d593(0x215)][_0x4d593(0x1a5)](this[_0x4d593(0x309)][_0x4d593(0x296)]),this[_0x4d593(0x15e)]=[],this['metadataMap']={},this[_0x4d593(0x24e)]=![],this[_0x4d593(0x1d6)]={},this['ad2Url']={},this[_0x4d593(0x20f)]=null,this['canvas']=document[_0x4d593(0x317)](_0x4d593(0x1db)),this[_0x4d593(0x340)]=this[_0x4d593(0x1db)][_0x4d593(0x1a9)](_0x4d593(0x21f),{'premultipliedAlpha':![]});this['ctx']==null?(this[_0x4d593(0x340)]=this[_0x4d593(0x1db)]['getContext'](_0x4d593(0x351),{'premultipliedAlpha':![]}),this[_0x4d593(0x320)]=0x1):this['webGLVersion']=0x2;console['log'](_0x4d593(0x1b1)+this[_0x4d593(0x340)]+_0x4d593(0x2ff)+this[_0x4d593(0x320)]);let _0x4cbd31=_0x63540d[_0x4d593(0x2f4)],_0x2fdb20=_0x63540d[_0x4d593(0x2c5)],_0x3b3808=_0x63540d[_0x4d593(0x339)](_0x4d593(0x22d))[0x0];this['canvas'][_0x4d593(0x383)][_0x4d593(0x34f)]=0x0,this[_0x4d593(0x1db)]['style'][_0x4d593(0x192)]=0x0,this[_0x4d593(0x1db)][_0x4d593(0x383)]['width']='100%',this[_0x4d593(0x1db)][_0x4d593(0x383)][_0x4d593(0x258)]=0x186a0,this['canvas'][_0x4d593(0x2dd)]=_0x63540d[_0x4d593(0x178)],this[_0x4d593(0x1db)][_0x4d593(0x27d)]=_0x63540d[_0x4d593(0x2ef)],this['canvas'][_0x4d593(0x383)][_0x4d593(0x314)]='absolute';let _0x32d850=_0x3b3808[_0x4d593(0x350)];if(_0x32d850)_0x63540d[_0x4d593(0x287)](this['canvas'],_0x32d850);else _0x63540d[_0x4d593(0x18f)](this['canvas']);this[_0x4d593(0x1db)][_0x4d593(0x383)][_0x4d593(0x2dc)]=_0x4d593(0x2d5),_0x3b3808[_0x4d593(0x231)](_0x4d593(0x1cf),_0x4a6c95=>{const _0x3915fe=_0x4d593;this[_0x3915fe(0x2d8)](_0x4a6c95);}),this[_0x4d593(0x1db)][_0x4d593(0x231)]('dblclick',this[_0x4d593(0x359)]),this[_0x4d593(0x251)](),this['adTexture']=null,this[_0x4d593(0x1ef)]={},this[_0x4d593(0x334)]={},this[_0x4d593(0x246)]={},this[_0x4d593(0x37f)]=[],this['lastTimeReportedIncomingTC']=0x0,this[_0x4d593(0x347)]=null;}['isPowerOf2'](_0x50bfd1){return(_0x50bfd1&_0x50bfd1-0x1)==0x0;}[_0x1ce293(0x304)](_0x206bb0){const _0x342a00=_0x1ce293;let _0xb8f87b=document['createElement'](_0x342a00(0x1db));_0xb8f87b[_0x342a00(0x2dd)]=0x32,_0xb8f87b[_0x342a00(0x27d)]=0x32;let _0x47b4d7=_0xb8f87b[_0x342a00(0x1a9)]('2d');_0x47b4d7[_0x342a00(0x286)]=_0x342a00(0x2fd),_0x47b4d7[_0x342a00(0x2b3)](0x0,0x0,_0xb8f87b[_0x342a00(0x2dd)],_0xb8f87b[_0x342a00(0x27d)]),_0x47b4d7[_0x342a00(0x256)]=_0x342a00(0x2ba),_0x47b4d7[_0x342a00(0x286)]='white',_0x47b4d7[_0x342a00(0x2d0)](_0x206bb0,0xa,0x23);let _0x13c43c=_0xb8f87b[_0x342a00(0x368)](),_0x3ed834=document['createElement'](_0x342a00(0x16f));return _0x3ed834[_0x342a00(0x37e)]=_0x13c43c,_0x3ed834;}[_0x1ce293(0x2d8)](_0x18c190){const _0x1cc2b3=_0x1ce293,_0x3f7838=this[_0x1cc2b3(0x1db)][_0x1cc2b3(0x1b8)]();let _0x5240e5=event['clientX']-_0x3f7838[_0x1cc2b3(0x192)],_0x2f48b1=event[_0x1cc2b3(0x2b9)]-_0x3f7838[_0x1cc2b3(0x34f)];_0x5240e5=_0x5240e5/(_0x3f7838[_0x1cc2b3(0x230)]-_0x3f7838[_0x1cc2b3(0x192)]),_0x2f48b1=_0x2f48b1/(_0x3f7838[_0x1cc2b3(0x28f)]-_0x3f7838[_0x1cc2b3(0x34f)]);for(let _0x4a39fd of this['currentAds2BoundingRect']){if(_0x4a39fd[_0x1cc2b3(0x35e)]['l']<=_0x5240e5&&_0x4a39fd['rect']['r']>=_0x5240e5&&_0x4a39fd[_0x1cc2b3(0x35e)]['t']<=_0x2f48b1&&_0x4a39fd['rect']['b']>=_0x2f48b1){let _0x3b72dc=_0x4a39fd[_0x1cc2b3(0x25e)]['substring'](0x1);if(this[_0x1cc2b3(0x2ea)][_0x3b72dc]){let _0x2e1291=this[_0x1cc2b3(0x2ea)][_0x3b72dc];console[_0x1cc2b3(0x271)](_0x1cc2b3(0x1f4)+_0x3b72dc+_0x1cc2b3(0x1d9)+_0x2e1291+'\x20!!!!!!!!!!!!!!!!!!!!!!'),window[_0x1cc2b3(0x2e6)](_0x2e1291,_0x1cc2b3(0x205));}return;}}}['TexUnitForGenericAd'](){return 0x0;}[_0x1ce293(0x367)](_0x4a6aed){const _0x2cfebc=_0x1ce293;let _0x354420=Object[_0x2cfebc(0x1b9)](this[_0x2cfebc(0x334)]);for(let _0x66f592=0x0;_0x66f592<_0x354420[_0x2cfebc(0x381)];++_0x66f592){if(_0x4a6aed==_0x354420[_0x66f592])return _0x66f592+0x1;}return 0x0;}[_0x1ce293(0x29d)](_0x463b71){const _0x4998a9=_0x1ce293;let _0x3b424b=Object[_0x4998a9(0x1b9)](this[_0x4998a9(0x334)]);for(let _0x3d8b63=0x0;_0x3d8b63<_0x3b424b['length'];++_0x3d8b63){let _0xd13c17=_0x3b424b[_0x3d8b63];if(_0x463b71[_0x4998a9(0x25e)][_0x4998a9(0x275)](_0xd13c17)>=0x0)return _0x3d8b63;}return 0x0;}[_0x1ce293(0x201)](_0x4047c6){const _0x21c70c=_0x1ce293;let _0x425e5d=Object[_0x21c70c(0x1b9)](this['place2ad']);for(let _0x444857=0x0;_0x444857<_0x425e5d[_0x21c70c(0x381)];++_0x444857){let _0x23c83b=_0x425e5d[_0x444857];if(_0x4047c6['name'][_0x21c70c(0x275)](_0x23c83b)>=0x0&&this['place2AdTexture']&&this[_0x21c70c(0x1ef)][_0x23c83b]&&this[_0x21c70c(0x1ef)][_0x23c83b][_0x21c70c(0x25e)])return this[_0x21c70c(0x1ef)][_0x23c83b][_0x21c70c(0x25e)];}return this[_0x21c70c(0x261)];}[_0x1ce293(0x22f)](){const _0x50fcc7=_0x1ce293;return 0x1+Object[_0x50fcc7(0x1b9)](this[_0x50fcc7(0x334)])[_0x50fcc7(0x381)];}[_0x1ce293(0x251)](){const _0x909e01=_0x1ce293;let _0x3ca89e=BB['GL'][_0x909e01(0x1cb)];if(BB['Utils'][_0x909e01(0x2e3)][_0x909e01(0x16a)]())_0x3ca89e=BB['GL'][_0x909e01(0x1cb)][_0x909e01(0x32b)]('if\x20(alpha\x20==\x200.0)',_0x909e01(0x27c));this[_0x909e01(0x353)]=webglUtils[_0x909e01(0x361)](this[_0x909e01(0x340)],this[_0x909e01(0x320)]==0x2?[BB['GL'][_0x909e01(0x255)],_0x3ca89e]:[BB['GL'][_0x909e01(0x1dc)],BB['GL']['fragmentShaderSourceV1']]),this['ctx'][_0x909e01(0x2fb)](0x0,0x0,0x0,0x0),this[_0x909e01(0x340)]['clear'](this['ctx'][_0x909e01(0x31d)]),this[_0x909e01(0x340)][_0x909e01(0x1df)](this['program']),this['counter']=0x0,this[_0x909e01(0x214)]();}[_0x1ce293(0x214)](){const _0x174276=_0x1ce293;this['canvas'][_0x174276(0x383)][_0x174276(0x2c3)]='none',this['alphaFound']=0x0;}[_0x1ce293(0x213)](_0xe32cd4,_0x24ef00,_0x160324,_0x227759,_0x40ee39,_0xeee8db,_0x1ba413){const _0x4fdd76=_0x1ce293;_0x1ba413?this[_0x4fdd76(0x340)]['pixelStorei'](this['ctx'][_0x4fdd76(0x2f2)],0x1):this[_0x4fdd76(0x340)][_0x4fdd76(0x354)](this['ctx'][_0x4fdd76(0x2f2)],0x4);this[_0x4fdd76(0x340)]['pixelStorei'](this[_0x4fdd76(0x340)][_0x4fdd76(0x327)],![]);const _0x34d7d0=this[_0x4fdd76(0x340)][_0x4fdd76(0x244)]();this['ctx']['activeTexture'](this[_0x4fdd76(0x340)][_0x4fdd76(0x1fc)]+_0x24ef00),this[_0x4fdd76(0x340)][_0x4fdd76(0x292)](this[_0x4fdd76(0x340)][_0x4fdd76(0x165)],_0x34d7d0);try{_0x40ee39&&_0xeee8db?this[_0x4fdd76(0x340)][_0x4fdd76(0x238)](this['ctx']['TEXTURE_2D'],0x0,_0x227759==null?this[_0x4fdd76(0x340)]['RGBA']:_0x227759,_0x40ee39,_0xeee8db,0x0,_0x227759==null?this['ctx']['RGBA']:_0x227759,this[_0x4fdd76(0x340)]['UNSIGNED_BYTE'],_0xe32cd4):this[_0x4fdd76(0x340)][_0x4fdd76(0x238)](this['ctx'][_0x4fdd76(0x165)],0x0,_0x227759==null?this[_0x4fdd76(0x340)][_0x4fdd76(0x161)]:_0x227759,this[_0x4fdd76(0x340)][_0x4fdd76(0x161)],this['ctx'][_0x4fdd76(0x1ce)],_0xe32cd4);}catch(_0x4ba597){return console['error'](_0x4ba597),null;}if(this[_0x4fdd76(0x320)]==0x1){let _0x26e3a8=_0x40ee39||_0xe32cd4[_0x4fdd76(0x2dd)],_0x4f163e=_0xeee8db||_0xe32cd4[_0x4fdd76(0x27d)];_0x26e3a8&&this['isPowerOf2'](_0x26e3a8)&&_0x4f163e&&this[_0x4fdd76(0x162)](_0x4f163e)?this[_0x4fdd76(0x340)][_0x4fdd76(0x36e)](this['ctx'][_0x4fdd76(0x165)]):(this[_0x4fdd76(0x340)][_0x4fdd76(0x22a)](this['ctx'][_0x4fdd76(0x165)],this[_0x4fdd76(0x340)]['TEXTURE_WRAP_S'],this['ctx'][_0x4fdd76(0x281)]),this[_0x4fdd76(0x340)]['texParameteri'](this[_0x4fdd76(0x340)]['TEXTURE_2D'],this[_0x4fdd76(0x340)][_0x4fdd76(0x29f)],this[_0x4fdd76(0x340)][_0x4fdd76(0x281)]),this['ctx']['texParameteri'](this[_0x4fdd76(0x340)][_0x4fdd76(0x165)],this['ctx'][_0x4fdd76(0x303)],this[_0x4fdd76(0x340)][_0x4fdd76(0x34d)]));}else this[_0x4fdd76(0x340)][_0x4fdd76(0x22a)](this[_0x4fdd76(0x340)][_0x4fdd76(0x165)],this[_0x4fdd76(0x340)][_0x4fdd76(0x2a7)],this[_0x4fdd76(0x340)]['CLAMP_TO_EDGE']),this[_0x4fdd76(0x340)][_0x4fdd76(0x22a)](this['ctx'][_0x4fdd76(0x165)],this[_0x4fdd76(0x340)]['TEXTURE_WRAP_T'],this[_0x4fdd76(0x340)]['CLAMP_TO_EDGE']),this[_0x4fdd76(0x340)]['texParameteri'](this[_0x4fdd76(0x340)][_0x4fdd76(0x165)],this[_0x4fdd76(0x340)][_0x4fdd76(0x303)],this[_0x4fdd76(0x340)][_0x4fdd76(0x34d)]),this[_0x4fdd76(0x340)][_0x4fdd76(0x22a)](this[_0x4fdd76(0x340)]['TEXTURE_2D'],this['ctx']['TEXTURE_MAG_FILTER'],this['ctx'][_0x4fdd76(0x34d)]);let _0x4c64d0=this['ctx'][_0x4fdd76(0x17a)](this[_0x4fdd76(0x353)],_0x160324);return _0x4c64d0&&this[_0x4fdd76(0x340)][_0x4fdd76(0x24f)](_0x4c64d0,_0x24ef00),_0x34d7d0;}[_0x1ce293(0x382)](){const _0x5c6800=_0x1ce293;this[_0x5c6800(0x347)]=setTimeout(()=>{const _0x148402=_0x5c6800,_0x244675=Object['keys'](this[_0x148402(0x1d6)]);_0x244675[_0x148402(0x381)]&&(this['SelectAd'](_0x244675[Math['floor'](Math['random']()*_0x244675['length'])]),this[_0x148402(0x382)]());},this[_0x5c6800(0x309)][_0x5c6800(0x20a)]);}['AddAdvertisement'](_0xe8ecb5,_0x7fe195,_0x580089=null){const _0x27890e=_0x1ce293;if(_0xe8ecb5[_0x27890e(0x275)](_0x27890e(0x2ca))>-0x1){fetch(_0x7fe195)[_0x27890e(0x300)](async _0x53d181=>{const _0x5ed50a=_0x27890e;this['place2ad']=await _0x53d181[_0x5ed50a(0x278)](),this[_0x5ed50a(0x246)]={};let _0xeac7d3=Object[_0x5ed50a(0x1b9)](this[_0x5ed50a(0x334)]);for(let _0x141538=0x0;_0x141538<_0xeac7d3[_0x5ed50a(0x381)];++_0x141538){let _0x3c7348=_0xeac7d3[_0x141538];if(_0x3c7348==_0x5ed50a(0x259)){this[_0x5ed50a(0x2ea)]=this[_0x5ed50a(0x334)][_0x3c7348],delete this[_0x5ed50a(0x334)][_0x3c7348];continue;}let _0xbc475b=this[_0x5ed50a(0x334)][_0x3c7348];for(let _0x2b584a=0x0;_0x2b584a<_0xbc475b[_0x5ed50a(0x381)];++_0x2b584a){let _0x4737ad=_0xbc475b[_0x2b584a];this[_0x5ed50a(0x246)]['#'+_0x4737ad]=_0x3c7348;}}Object[_0x5ed50a(0x1b9)](this[_0x5ed50a(0x334)])[_0x5ed50a(0x381)]>0x0&&(console[_0x5ed50a(0x271)](_0x5ed50a(0x166),this['place2ad']),console[_0x5ed50a(0x271)](_0x5ed50a(0x25b),this[_0x5ed50a(0x246)]),setTimeout(()=>{const _0x4f7e85=_0x5ed50a;this[_0x4f7e85(0x2c4)]();},0xbb8));});if(_0x580089)_0x580089();return;}const _0x228211=new Image();return _0x228211[_0x27890e(0x2df)]=_0x27890e(0x26a),_0x228211['onload']=()=>{const _0xb4db86=_0x27890e;let _0x48e262=Object[_0xb4db86(0x1b9)](this[_0xb4db86(0x1d6)])[_0xb4db86(0x381)]===0x0;this[_0xb4db86(0x1d6)][_0xe8ecb5]=_0x228211;_0x48e262&&(this['SelectAd'](_0xe8ecb5),this[_0xb4db86(0x309)]['isAdLoop']&&(clearTimeout(this[_0xb4db86(0x347)]),this[_0xb4db86(0x382)]()));if(_0x580089)_0x580089();},_0x228211['onerror']=()=>{const _0x3a139f=_0x27890e;alert(_0x3a139f(0x2e9)+_0x7fe195+'\x20.');},_0x228211[_0x27890e(0x37e)]=_0x7fe195,_0x228211;}[_0x1ce293(0x2c4)](){const _0x3070f7=_0x1ce293;if(this[_0x3070f7(0x334)]){let _0xa86342=Object[_0x3070f7(0x1b9)](this[_0x3070f7(0x334)]);for(let _0x5e7982=0x0;_0x5e7982<_0xa86342[_0x3070f7(0x381)];++_0x5e7982){let _0x41539f=_0xa86342[_0x5e7982];!this[_0x3070f7(0x1ef)][_0x41539f]&&this[_0x3070f7(0x334)][_0x41539f][_0x3070f7(0x381)]>0x0&&(console[_0x3070f7(0x271)]('MakeSureAdPerPlace:\x20Set\x20default\x20image\x20'+this[_0x3070f7(0x334)][_0x41539f][0x0]+_0x3070f7(0x1f3)+_0x41539f),this['SelectAd']('#'+this[_0x3070f7(0x334)][_0x41539f][0x0]));}}}[_0x1ce293(0x374)](_0x502f46){const _0x1aed3b=_0x1ce293;console[_0x1aed3b(0x271)]('composer::SelectAd:\x20selected\x20ad\x20is\x20'+_0x502f46);let _0x1b4f3b=this['advertisementMap'][_0x502f46];if(!_0x1b4f3b)console[_0x1aed3b(0x308)](_0x1aed3b(0x2bb)+_0x502f46+'\x27');else{if(this[_0x1aed3b(0x246)]&&this['ad2place'][_0x502f46]){let _0x1d6918=this[_0x1aed3b(0x246)][_0x502f46];console['log']('composer::SelectAd:\x20The\x20selected\x20ad\x20should\x20be\x20in\x20place\x20'+_0x1d6918);let _0x253a83=this['TexUnitForAdInPlace'](_0x1d6918),_0x55da70='ad'+(_0x253a83-0x1);if(this[_0x1aed3b(0x1ef)][_0x1d6918])this[_0x1aed3b(0x340)]['deleteTexture'](this[_0x1aed3b(0x1ef)][_0x1d6918][_0x1aed3b(0x37d)]);this[_0x1aed3b(0x1ef)][_0x1d6918]={'tex':this[_0x1aed3b(0x213)](_0x1b4f3b,_0x253a83,_0x55da70),'texUnitId':_0x253a83,'texName':_0x55da70,'name':_0x502f46};}else this[_0x1aed3b(0x188)]!=null&&this[_0x1aed3b(0x340)][_0x1aed3b(0x270)](this[_0x1aed3b(0x188)]),this[_0x1aed3b(0x188)]=this[_0x1aed3b(0x213)](_0x1b4f3b,this[_0x1aed3b(0x16e)](),_0x1aed3b(0x2ec)),this[_0x1aed3b(0x2f6)]=_0x1b4f3b,this['lastAdName']=_0x502f46;}}[_0x1ce293(0x19d)](_0x3ba206){const _0x443fb1=_0x1ce293;this[_0x443fb1(0x1f9)][_0x3ba206[_0x443fb1(0x2d7)]]=_0x3ba206,this[_0x443fb1(0x15e)][_0x443fb1(0x338)](_0x3ba206[_0x443fb1(0x2d7)]);}['ToggleFullscreen'](){const _0x196407=_0x1ce293;(this[_0x196407(0x1d8)]||this[_0x196407(0x266)])[_0x196407(0x1c4)](this)[_0x196407(0x337)](_0x5c96f4=>{console['error'](_0x5c96f4);});}[_0x1ce293(0x183)](){const _0x13245c=_0x1ce293;let _0x1c0a15=this[_0x13245c(0x340)][_0x13245c(0x1fd)](this[_0x13245c(0x353)],_0x13245c(0x2bd)),_0x157098=this['ctx'][_0x13245c(0x17a)](this['program'],_0x13245c(0x269)),_0x44d31c=this[_0x13245c(0x340)]['getUniformLocation'](this[_0x13245c(0x353)],'u_resolution2');this['ctx'][_0x13245c(0x276)](_0x157098,this['ctx']['canvas'][_0x13245c(0x2dd)],this[_0x13245c(0x340)][_0x13245c(0x1db)][_0x13245c(0x27d)]),this[_0x13245c(0x340)][_0x13245c(0x276)](_0x44d31c,this[_0x13245c(0x340)][_0x13245c(0x1db)][_0x13245c(0x2dd)],this[_0x13245c(0x340)][_0x13245c(0x1db)][_0x13245c(0x27d)]);if(this['webGLVersion']==0x2){let _0x610af9=this['ctx'][_0x13245c(0x17a)](this[_0x13245c(0x353)],_0x13245c(0x1de)),_0x4200eb=[0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1];this[_0x13245c(0x340)]['uniformMatrix3fv'](_0x610af9,![],_0x4200eb);}let _0x1896bd=null;this[_0x13245c(0x320)]==0x2&&(_0x1896bd=this[_0x13245c(0x340)][_0x13245c(0x227)](),this[_0x13245c(0x340)][_0x13245c(0x23b)](_0x1896bd));let _0x22862d=this[_0x13245c(0x340)][_0x13245c(0x172)]();this[_0x13245c(0x340)][_0x13245c(0x171)](_0x1c0a15),this[_0x13245c(0x340)][_0x13245c(0x170)](this[_0x13245c(0x340)][_0x13245c(0x1f2)],_0x22862d);let _0x59e282=0x2,_0x920075=this['ctx'][_0x13245c(0x155)],_0x205e27=![],_0x4b346f=0x0,_0x2b9707=0x0;this['ctx']['vertexAttribPointer'](_0x1c0a15,_0x59e282,_0x920075,_0x205e27,_0x4b346f,_0x2b9707);let _0x7edcbc=this[_0x13245c(0x340)][_0x13245c(0x172)]();this[_0x13245c(0x340)][_0x13245c(0x170)](this[_0x13245c(0x340)][_0x13245c(0x1f2)],_0x7edcbc),this[_0x13245c(0x340)]['bufferData'](this[_0x13245c(0x340)][_0x13245c(0x1f2)],new Float32Array([0x0,0x0,0x1,0x0,0x0,0x1,0x0,0x1,0x1,0x0,0x1,0x1]),this[_0x13245c(0x340)]['STATIC_DRAW']),this[_0x13245c(0x340)][_0x13245c(0x190)](0x0,0x0,this[_0x13245c(0x340)][_0x13245c(0x1db)]['width'],this[_0x13245c(0x340)][_0x13245c(0x1db)][_0x13245c(0x27d)]),this[_0x13245c(0x340)][_0x13245c(0x2fb)](0x0,0x0,0x0,0x0),this['ctx']['clear'](this[_0x13245c(0x340)][_0x13245c(0x31d)]|this[_0x13245c(0x340)][_0x13245c(0x362)]),this[_0x13245c(0x340)]['bindBuffer'](this[_0x13245c(0x340)]['ARRAY_BUFFER'],_0x22862d),this['SetRectangle'](this[_0x13245c(0x340)],0x0,0x0,this[_0x13245c(0x1db)][_0x13245c(0x2dd)],this[_0x13245c(0x1db)]['height']);let _0x509475=this[_0x13245c(0x340)][_0x13245c(0x2c8)],_0x595ed9=0x6;this[_0x13245c(0x340)][_0x13245c(0x28e)](_0x509475,_0x2b9707,_0x595ed9);}[_0x1ce293(0x321)](_0x1d2090,_0x2486db,_0x3b5591,_0x54b3fd,_0x58d4c3){const _0x344a64=_0x1ce293;let _0x48c01e=_0x2486db,_0x5e74d3=_0x2486db+_0x54b3fd,_0x4a8818=_0x3b5591,_0x439270=_0x3b5591+_0x58d4c3;this[_0x344a64(0x340)][_0x344a64(0x177)](this[_0x344a64(0x340)][_0x344a64(0x1f2)],new Float32Array([_0x48c01e,_0x4a8818,_0x5e74d3,_0x4a8818,_0x48c01e,_0x439270,_0x48c01e,_0x439270,_0x5e74d3,_0x4a8818,_0x5e74d3,_0x439270]),this[_0x344a64(0x340)]['STATIC_DRAW']);}['renderAugmentation'](_0x136441){const _0x2164dd=_0x1ce293;let _0x599b58=BB[_0x2164dd(0x215)]['TimeCodesFramesTranslator'],_0x10fba6=_0x599b58[_0x2164dd(0x31b)](_0x136441),_0x58aa93=_0x599b58[_0x2164dd(0x37b)](_0x10fba6,0x1,this[_0x2164dd(0x2c0)]),_0x402118=_0x599b58[_0x2164dd(0x37b)](_0x10fba6,0x2,this[_0x2164dd(0x2c0)]),_0x2df554=_0x599b58[_0x2164dd(0x191)](_0x58aa93),_0x4f2f5f=_0x599b58['printTimecode'](_0x402118);this[_0x2164dd(0x24e)]=!![];const _0x54bbd1=performance[_0x2164dd(0x272)]();let _0x3cd594=null,_0x4bfb11=[];if(this['metadataMap'][_0x136441]){_0x3cd594=this[_0x2164dd(0x1f9)][_0x136441];this[_0x2164dd(0x1f9)][_0x2df554]&&_0x4bfb11['push']({'nextVideo':this[_0x2164dd(0x1f9)][_0x2df554],'nextTimeCode':_0x2df554});this[_0x2164dd(0x1f9)][_0x4f2f5f]&&_0x4bfb11['push']({'nextVideo':this[_0x2164dd(0x1f9)][_0x4f2f5f],'nextTimeCode':_0x4f2f5f});const _0xb19831=this[_0x2164dd(0x15e)][_0x2164dd(0x275)](_0x136441);if(_0xb19831>-0x5)this[_0x2164dd(0x15e)][_0x2164dd(0x358)](0x0,_0xb19831-0x4)[_0x2164dd(0x248)](_0x2887ed=>{const _0x312e00=_0x2164dd;delete this[_0x312e00(0x1f9)][_0x2887ed];});this[_0x2164dd(0x38b)]++;}else this[_0x2164dd(0x1f7)]++,this[_0x2164dd(0x1f7)]>0x3c&&(this[_0x2164dd(0x1f7)]=0x0,console[_0x2164dd(0x308)](_0x2164dd(0x2bf)+_0x136441)),this['alphaFound']++;this[_0x2164dd(0x38b)]>0x1e&&this['canvas'][_0x2164dd(0x383)][_0x2164dd(0x2c3)]==_0x2164dd(0x2d5)&&(this[_0x2164dd(0x1db)]['style']['display']='');let _0x423a4a=[];this[_0x2164dd(0x1db)][_0x2164dd(0x2dd)]=0x500,this['canvas']['height']=0x2d0;let _0xa14a92=0x0;this['currentAds2BoundingRect']=[];if(_0x3cd594){let _0x3ea89f=![];if(this[_0x2164dd(0x309)][_0x2164dd(0x1b7)]){var _0x4a66c5=document[_0x2164dd(0x283)]('doNotRenderAugmentationCheckbox');_0x3ea89f=_0x4a66c5[_0x2164dd(0x27a)];}if(!_0x3ea89f)for(const _0x438603 in _0x3cd594[_0x2164dd(0x2e1)]){const _0x3149ee=_0x3cd594[_0x2164dd(0x2e1)][_0x438603];if(!_0x3149ee[_0x2164dd(0x37a)])continue;let _0x2e30b7=_0x2164dd(0x288)+_0xa14a92,_0x42edc0=this['TexUnitBaseForAlpha']()+_0xa14a92;_0x3149ee[_0x2164dd(0x277)]=this[_0x2164dd(0x213)](_0x3149ee[_0x2164dd(0x37a)],_0x42edc0,_0x2e30b7,this[_0x2164dd(0x340)][_0x2164dd(0x200)],_0x3149ee[_0x2164dd(0x2dd)],_0x3149ee[_0x2164dd(0x27d)],!![]),_0x3149ee[_0x2164dd(0x37a)]=null;if(!_0x3149ee[_0x2164dd(0x277)]){console[_0x2164dd(0x308)]('Failed\x20to\x20create\x20alpha\x20texture');continue;}_0x423a4a['push'](_0x3149ee[_0x2164dd(0x277)]);let _0x1e6caf=_0x2164dd(0x159)+_0xa14a92,_0x2ce17e=this[_0x2164dd(0x340)][_0x2164dd(0x17a)](this[_0x2164dd(0x353)],_0x1e6caf);this['ctx'][_0x2164dd(0x24f)](_0x2ce17e,0x1);let _0x4ae8c4='adForLogo'+_0xa14a92,_0x124986=this[_0x2164dd(0x340)][_0x2164dd(0x17a)](this[_0x2164dd(0x353)],_0x4ae8c4),_0x138982=![];_0x3149ee[_0x2164dd(0x25e)][_0x2164dd(0x275)](_0x2164dd(0x23e))>=0x0?(this['ctx']['uniform1i'](_0x124986,0x63),_0x138982=!![]):this[_0x2164dd(0x340)][_0x2164dd(0x24f)](_0x124986,this[_0x2164dd(0x29d)](_0x3149ee));let _0x20f7c0=_0x2164dd(0x1a0)+_0xa14a92+_0x2164dd(0x18c),_0x4d0c19=this[_0x2164dd(0x340)][_0x2164dd(0x17a)](this['program'],_0x20f7c0);this['ctx']['uniform2fv'](_0x4d0c19,[_0x3149ee[_0x2164dd(0x1c7)],_0x3149ee[_0x2164dd(0x30b)]]);let _0xf8a21d=_0x2164dd(0x1a0)+_0xa14a92+_0x2164dd(0x168),_0x13a740=this[_0x2164dd(0x340)][_0x2164dd(0x17a)](this[_0x2164dd(0x353)],_0xf8a21d);this[_0x2164dd(0x340)]['uniform2fv'](_0x13a740,[_0x3149ee[_0x2164dd(0x2dd)],_0x3149ee[_0x2164dd(0x27d)]]);let _0xf1490f=_0x2164dd(0x1de)+_0xa14a92,_0x2b14e5=this[_0x2164dd(0x340)][_0x2164dd(0x17a)](this[_0x2164dd(0x353)],_0xf1490f);this[_0x2164dd(0x340)][_0x2164dd(0x35d)](_0x2b14e5,![],_0x3149ee['tranform']);if(!_0x138982){let _0x3e29d2={'l':-0x1,'t':-0x1,'r':-0x1,'b':-0x1};for(let _0x53bb7d of _0x3149ee[_0x2164dd(0x1bc)]){if(_0x53bb7d['x']<_0x3e29d2['l']||_0x3e29d2['l']==-0x1)_0x3e29d2['l']=_0x53bb7d['x'];if(_0x53bb7d['x']>_0x3e29d2['r']||_0x3e29d2['r']==-0x1)_0x3e29d2['r']=_0x53bb7d['x'];if(_0x53bb7d['y']<_0x3e29d2['t']||_0x3e29d2['t']==-0x1)_0x3e29d2['t']=_0x53bb7d['y'];if(_0x53bb7d['y']>_0x3e29d2['b']||_0x3e29d2['b']==-0x1)_0x3e29d2['b']=_0x53bb7d['y'];}_0x3e29d2['l']/=_0x3cd594['canvasSize']['width'],_0x3e29d2['r']/=_0x3cd594[_0x2164dd(0x24b)]['width'],_0x3e29d2['t']/=_0x3cd594[_0x2164dd(0x24b)][_0x2164dd(0x27d)],_0x3e29d2['b']/=_0x3cd594[_0x2164dd(0x24b)][_0x2164dd(0x27d)],this[_0x2164dd(0x37f)][_0x2164dd(0x338)]({'name':this[_0x2164dd(0x201)](_0x3149ee),'rect':_0x3e29d2});}_0xa14a92++;}}else{}for(;_0xa14a92<BB[_0x2164dd(0x295)];++_0xa14a92){let _0x433f0f=_0x2164dd(0x159)+_0xa14a92,_0xffbbd1=this[_0x2164dd(0x340)][_0x2164dd(0x17a)](this[_0x2164dd(0x353)],_0x433f0f);this[_0x2164dd(0x340)][_0x2164dd(0x24f)](_0xffbbd1,0x0);let _0x311f3d=_0x2164dd(0x288)+_0xa14a92,_0x3b4522=this[_0x2164dd(0x340)]['getUniformLocation'](this[_0x2164dd(0x353)],_0x311f3d);this[_0x2164dd(0x340)][_0x2164dd(0x24f)](_0x3b4522,0x0);}if(this[_0x2164dd(0x309)][_0x2164dd(0x2aa)]['renderTimecode']){let _0x414da1=_0x136441['split'](':')[0x3],_0x27724f=_0x414da1[_0x2164dd(0x275)]('.')>=0x0?0x2:0x1,_0x4d8cf8=parseInt(_0x414da1[_0x2164dd(0x219)]('.')[0x0])%0xa,_0x2f011f=_0x4d8cf8+'.'+_0x27724f,_0x24e64f=this[_0x2164dd(0x22f)]()+0x5,_0x206bb5=this[_0x2164dd(0x213)](this[_0x2164dd(0x163)][_0x2f011f],_0x24e64f,_0x2164dd(0x239));_0x423a4a[_0x2164dd(0x338)](_0x206bb5);let _0x281e98=_0x2164dd(0x186),_0x2403cc=this[_0x2164dd(0x340)]['getUniformLocation'](this[_0x2164dd(0x353)],_0x281e98);this[_0x2164dd(0x340)][_0x2164dd(0x24f)](_0x2403cc,0x1);let _0x1aaf03=_0x2164dd(0x370),_0x428bec=this[_0x2164dd(0x340)][_0x2164dd(0x17a)](this[_0x2164dd(0x353)],_0x1aaf03);this[_0x2164dd(0x340)]['uniform2fv'](_0x428bec,[0x0,0x0]);let _0x4c8b2a=_0x2164dd(0x273),_0xb19e15=this['ctx'][_0x2164dd(0x17a)](this[_0x2164dd(0x353)],_0x4c8b2a);this[_0x2164dd(0x340)]['uniform2fv'](_0xb19e15,[0xc8,0xc8]);}else{let _0x41c1df=_0x2164dd(0x186),_0x19ed1c=this[_0x2164dd(0x340)][_0x2164dd(0x17a)](this[_0x2164dd(0x353)],_0x41c1df);this['ctx'][_0x2164dd(0x24f)](_0x19ed1c,0x0);}this[_0x2164dd(0x183)]();for(const _0x2376f6 of _0x423a4a){this[_0x2164dd(0x340)][_0x2164dd(0x270)](_0x2376f6);}}[_0x1ce293(0x294)](){return this['canvas'];}},BB[_0x1ce293(0x247)]=class{constructor(_0x2d5d09,_0x35645b,_0x1b7606){const _0x145a24=_0x1ce293;this[_0x145a24(0x1db)]=_0x2d5d09;let _0x570547=new Blob([COMPOSER_WORKER],{'type':_0x145a24(0x185)});this[_0x145a24(0x326)]=new Worker(URL['createObjectURL'](_0x570547)),this['worker'][_0x145a24(0x154)]=function(_0x259335){const _0x5c97b2=_0x145a24,{action:_0x31ec65,url:_0x4e1cb4}=_0x259335[_0x5c97b2(0x212)];_0x31ec65==='open-uri'&&_0x4e1cb4&&window[_0x5c97b2(0x2e6)](_0x4e1cb4,'_blank');};const _0x6aa281=_0x2d5d09[_0x145a24(0x14d)]();let _0x64d7cb=BB[_0x145a24(0x215)][_0x145a24(0x1a5)](_0x35645b[_0x145a24(0x296)]),_0x515db9=_0x35645b[_0x145a24(0x2aa)][_0x145a24(0x1d3)];this['worker'][_0x145a24(0x2af)]({'method':_0x145a24(0x34c),'GL':BB['GL'],'canvas':_0x6aa281,'sourceFPS':_0x64d7cb,'renderTimecodes':_0x515db9,'digitImg':_0x1b7606},[_0x6aa281]);}[_0x1ce293(0x2d8)](_0x1cbb73,_0x576964,_0x493839){const _0x25fd21=_0x1ce293;this[_0x25fd21(0x326)][_0x25fd21(0x2af)]({'method':_0x25fd21(0x2d8),'data':{'clientX':_0x1cbb73,'clientY':_0x576964,'rect':_0x493839}});}[_0x1ce293(0x214)](){const _0x15aacf=_0x1ce293;this[_0x15aacf(0x326)][_0x15aacf(0x2af)]({'method':_0x15aacf(0x214),'data':''});}[_0x1ce293(0x220)](_0x2b98e7){const _0xaf703d=_0x1ce293;this['worker'][_0xaf703d(0x2af)]({'method':_0xaf703d(0x220),'data':_0x2b98e7});}[_0x1ce293(0x25c)](_0x14e53c){const _0x2c1138=_0x1ce293;this[_0x2c1138(0x326)][_0x2c1138(0x2af)]({'method':_0x2c1138(0x25c),'data':_0x14e53c});}[_0x1ce293(0x294)](){const _0x536250=_0x1ce293;return this[_0x536250(0x1db)];}['SelectAd'](_0x21b4ad){const _0x34f9e8=_0x1ce293;this['worker'][_0x34f9e8(0x2af)]({'method':_0x34f9e8(0x374),'data':_0x21b4ad});}[_0x1ce293(0x19d)](_0x4c00c3){const _0x1d6c24=_0x1ce293;this[_0x1d6c24(0x326)][_0x1d6c24(0x2af)]({'method':_0x1d6c24(0x19d),'data':_0x4c00c3});}},BB[_0x1ce293(0x290)]=(_0x17bef8,_0x12b61a)=>{const _0x43bb0d=_0x1ce293;let _0x1aa1c9=[];const _0x2aa2a9=new BB['Socket']((_0x349781,_0x806a76)=>{const _0x5f0fd3=_0x92df;switch(_0x349781){case _0x5f0fd3(0x217):console[_0x5f0fd3(0x271)]('roommembers\x20message:\x20',_0x806a76);break;case _0x5f0fd3(0x34b):const _0x29a9cd=document[_0x5f0fd3(0x283)]('name');_0x29a9cd&&(_0x29a9cd[_0x5f0fd3(0x2b2)]=_0x2aa2a9[_0x5f0fd3(0x25e)]);break;case _0x5f0fd3(0x280):if(_0x806a76[_0x5f0fd3(0x2ce)]===_0x2aa2a9['name']){if(_0x806a76[_0x5f0fd3(0x193)]){const _0x2c74cf=_0x5f0fd3(0x19c);BB[_0x5f0fd3(0x313)]?_0x17bef8[_0x5f0fd3(0x25c)]({'name':_0x2c74cf,'path':_0x806a76[_0x5f0fd3(0x193)],'isSelected':!![]}):_0x17bef8[_0x5f0fd3(0x25c)](_0x2c74cf,_0x806a76[_0x5f0fd3(0x193)],()=>{const _0x2693e3=_0x5f0fd3;_0x17bef8[_0x2693e3(0x374)](_0x2c74cf);});}else _0x1aa1c9=_0x806a76['ads'],_0x1aa1c9[_0x5f0fd3(0x381)]&&_0x17bef8['SelectAd'](_0x1aa1c9[0x0]);}break;case _0x5f0fd3(0x293):_0x1aa1c9=_0x806a76;_0x1aa1c9[_0x5f0fd3(0x381)]&&_0x17bef8[_0x5f0fd3(0x374)](_0x1aa1c9[0x0]);break;}});var _0x2f3b0f=document[_0x43bb0d(0x317)](_0x43bb0d(0x343));_0x2f3b0f[_0x43bb0d(0x37e)]=_0x43bb0d(0x22c),document[_0x43bb0d(0x339)](_0x43bb0d(0x21e))[0x0][_0x43bb0d(0x18f)](_0x2f3b0f),_0x2f3b0f[_0x43bb0d(0x210)]=function(){const _0x1802f3=_0x43bb0d;_0x2aa2a9[_0x1802f3(0x285)](_0x12b61a[_0x1802f3(0x2aa)]['channelName']);},_0x12b61a[_0x43bb0d(0x2aa)][_0x43bb0d(0x198)]?BB['RENDER_IN_WORKER']?_0x17bef8[_0x43bb0d(0x25c)]({'name':_0x43bb0d(0x245),'path':_0x12b61a[_0x43bb0d(0x2aa)][_0x43bb0d(0x198)],'isSelected':![]}):_0x17bef8[_0x43bb0d(0x25c)](_0x43bb0d(0x245),_0x12b61a[_0x43bb0d(0x2aa)][_0x43bb0d(0x198)]):fetch('https://www.virtualott.com/ads/'+_0x12b61a['augmentation'][_0x43bb0d(0x29b)])[_0x43bb0d(0x300)](async _0x12cf5c=>{const _0xaf20b1=_0x43bb0d,_0x35949a=await _0x12cf5c[_0xaf20b1(0x278)]();_0x35949a['forEach'](_0x3aac6c=>{const _0x1e1ed9=_0xaf20b1;BB[_0x1e1ed9(0x313)]?_0x17bef8[_0x1e1ed9(0x25c)]({'name':'#'+_0x3aac6c['name'],'path':_0x3aac6c[_0x1e1ed9(0x193)],'isSelected':!![]}):_0x17bef8['AddAdvertisement']('#'+_0x3aac6c[_0x1e1ed9(0x25e)],_0x3aac6c[_0x1e1ed9(0x193)]);});});},BB[_0x1ce293(0x360)]=(_0x4abde2,_0x58de01)=>{const _0x7b1400=_0x1ce293;let _0x44515f=BB[_0x7b1400(0x215)]['TimeCodesFramesTranslator'],_0x238073=BB[_0x7b1400(0x215)][_0x7b1400(0x1a5)](_0x4abde2[_0x7b1400(0x296)]),_0x316d49,_0x4bed0e,_0x6c8be6=null,_0x4103e4=null;console[_0x7b1400(0x271)](_0x7b1400(0x310)+_0x4abde2['gameId']);const _0x556788=_0x4f6f75=>{const _0x1a95c9=_0x7b1400;_0x316d49=_0x4f6f75,console[_0x1a95c9(0x271)](_0x1a95c9(0x2de)+_0x4abde2[_0x1a95c9(0x19e)]+':\x20'+_0x316d49),_0x4bed0e&&_0x113cf7(_0x4bed0e);};async function _0x33c6b6(){const _0x304e7b=_0x7b1400,_0xd0ccc9=await fetch(_0x4abde2[_0x304e7b(0x2c6)]),_0x51dab7=await _0xd0ccc9[_0x304e7b(0x278)]();_0x556788(_0x4abde2[_0x304e7b(0x19e)]);}_0x33c6b6();const _0x4bb1a2=_0x1a74fa=>{_0x4bed0e=_0x1a74fa,_0x316d49&&_0x113cf7(_0x4bed0e);},_0x113cf7=_0x2eec7d=>{const _0x42f370=_0x7b1400;if(_0x6c8be6==null){console[_0x42f370(0x1e8)](_0x42f370(0x323));let _0xe429ec=new Blob([META_WORKER],{'type':_0x42f370(0x185)});_0x6c8be6=new Worker(URL['createObjectURL'](_0xe429ec)),_0x6c8be6[_0x42f370(0x173)]=function(_0x5e0853){const _0x5481c6=_0x42f370;console[_0x5481c6(0x308)](_0x5481c6(0x328),_0x5e0853);},_0x6c8be6[_0x42f370(0x231)](_0x42f370(0x308),function(_0x321360){console['error']('Error\x20from\x20worker\x20(via\x20addEventListener):',_0x321360['message']);});if(_0x6c8be6)console[_0x42f370(0x1e8)](_0x42f370(0x18e));else console[_0x42f370(0x1e8)](_0x42f370(0x1b6));_0x6c8be6['addEventListener'](_0x42f370(0x17b),_0x5a7daa=>{const _0x2a2b0e=_0x42f370;if(_0x5a7daa[_0x2a2b0e(0x212)][_0x2a2b0e(0x1b4)]){}else _0x58de01[_0x2a2b0e(0x19d)](_0x5a7daa[_0x2a2b0e(0x212)]);});let _0x5d899f=_0x44515f[_0x42f370(0x226)](_0x44515f[_0x42f370(0x34e)](_0x2eec7d,_0x238073,!![]));_0x6c8be6[_0x42f370(0x2af)]({'cloudFrontURL':_0x4abde2[_0x42f370(0x299)],'folderName':_0x316d49,'tc':_0x44515f[_0x42f370(0x191)](_0x5d899f,![])});}else{let _0x4f72d0=_0x44515f['TimeCodeArray2TimeCodeJson'](_0x44515f[_0x42f370(0x34e)](_0x2eec7d,_0x238073,!![]));_0x6c8be6[_0x42f370(0x2af)]({'tc':_0x44515f['printTimecode'](_0x4f72d0,![]),'enabled':_0x4abde2[_0x42f370(0x22e)]});}};return{'setLastFrame':_0x4bb1a2};},BB[_0x1ce293(0x17d)]=class{constructor(_0x5b9651,_0x2b7cf5,_0x4a2279){const _0x8f91e6=_0x1ce293;this[_0x8f91e6(0x22d)]=_0x5b9651,this[_0x8f91e6(0x195)]=_0x2b7cf5,console[_0x8f91e6(0x271)]('optionsFromMK:\x20',_0x4a2279),this['options']=Object[_0x8f91e6(0x373)]({'enabled':!![],'stopAugment':![],'gameId':'Unknown','medialook':![],'allGamesURL':_0x8f91e6(0x2db),'cloudFrontURL':'https://db8igqxlbvayn.cloudfront.net/prod','mediaIdJsonURL':_0x8f91e6(0x372),'offsetJsonURL':_0x8f91e6(0x1eb),'frameRateMode':BB[_0x8f91e6(0x16b)][_0x8f91e6(0x365)],'renderingMode':BB[_0x8f91e6(0x25f)][_0x8f91e6(0x21a)],'SynchMethod':BB['SynchMethod'][_0x8f91e6(0x2cc)],'debug':![],'hls_fps':0xea60/0x3e9,'augmentation':{'renderTimecode':!![],'offset':0x0},'syncPoint':{'frame':0x0,'playerTime':0x0,'mediaTimeMS':0x0}},_0x4a2279||{}),console[_0x8f91e6(0x271)](_0x8f91e6(0x16c),this['options']),this[_0x8f91e6(0x309)][_0x8f91e6(0x2aa)][_0x8f91e6(0x29b)]=_0x8f91e6(0x1e5),console[_0x8f91e6(0x1e8)]=function(_0x240244){const _0x1088d6=_0x8f91e6;console[_0x1088d6(0x271)](_0x1088d6(0x26d)+_0x240244);},console[_0x8f91e6(0x36f)]=function(_0x8f75f1){const _0x2ab011=_0x8f91e6;console[_0x2ab011(0x308)]('OTTPlayer:\x20'+_0x8f75f1);};function _0x57bfb4(_0x430c55,_0x4f6323){const _0x577bf8=_0x8f91e6,_0x53dda2=_0x430c55[_0x577bf8(0x219)]('.')[_0x577bf8(0x1aa)](Number),_0x588dbb=_0x4f6323[_0x577bf8(0x219)]('.')[_0x577bf8(0x1aa)](Number);for(let _0x374268=0x0;_0x374268<Math['max'](_0x53dda2[_0x577bf8(0x381)],_0x588dbb['length']);_0x374268++){const _0x50a7eb=_0x53dda2[_0x374268]||0x0,_0x224f87=_0x588dbb[_0x374268]||0x0;if(_0x50a7eb<_0x224f87)return-0x1;else{if(_0x50a7eb>_0x224f87)return 0x1;}}return 0x0;}this['getGlobalConfig']();}[_0x1ce293(0x1ab)](){const _0xadae30=_0x1ce293;if(typeof globalConfig===_0xadae30(0x341))this[_0xadae30(0x309)]=Object[_0xadae30(0x373)](this[_0xadae30(0x309)],{});else this[_0xadae30(0x309)]=Object[_0xadae30(0x373)](this['options'],globalConfig);this[_0xadae30(0x309)][_0xadae30(0x2aa)]['offset']=0x0;var _0x31d53f={};_0x31d53f['value1']=this['options'][_0xadae30(0x26e)],this['setFps'](_0x31d53f),console['log'](_0xadae30(0x2a9),this[_0xadae30(0x309)]);if(!this[_0xadae30(0x309)][_0xadae30(0x1b7)]){let _0x5add63=[_0xadae30(0x363),_0xadae30(0x1af),_0xadae30(0x32a),_0xadae30(0x19b),_0xadae30(0x331),_0xadae30(0x316),_0xadae30(0x203),_0xadae30(0x1f5),_0xadae30(0x194),'doNotRenderAugmentationLabel',_0xadae30(0x325),_0xadae30(0x344),_0xadae30(0x2fe),'qualitySelect'];for(let _0x3db7ac=0x0;_0x3db7ac<_0x5add63[_0xadae30(0x381)];_0x3db7ac++){const _0x42c947=document['getElementById'](_0x5add63[_0x3db7ac]);_0x42c947&&(_0x42c947[_0xadae30(0x383)][_0xadae30(0x2c3)]=_0xadae30(0x2d5));}}let _0x41c6d1=BB[_0xadae30(0x215)]['Platform'],_0x39b8b7=BB[_0xadae30(0x215)][_0xadae30(0x1d4)];if(this[_0xadae30(0x195)])this['setCalculationFps'](this[_0xadae30(0x195)]);this[_0xadae30(0x356)](this[_0xadae30(0x309)]['gameId']);}[_0x1ce293(0x377)](){const _0x3253b0=_0x1ce293;let _0x306bf4={};this[_0x3253b0(0x1ca)]=BB['Augmenter'](_0x306bf4,this[_0x3253b0(0x22d)],this[_0x3253b0(0x309)]),this[_0x3253b0(0x309)][_0x3253b0(0x1a6)]==BB['RenderingMode']['Augment']&&this[_0x3253b0(0x1ca)][_0x3253b0(0x2a3)]();}async['getGlobalConfig'](){const _0x225326=_0x1ce293,_0x4341c4=new URL(document[_0x225326(0x180)]),_0x372d9f=_0x4341c4['searchParams'][_0x225326(0x184)](_0x225326(0x1b5))||'';if(_0x372d9f!=='')try{const _0x91f900=await fetch(_0x372d9f);if(!_0x91f900['ok'])throw new Error(_0x225326(0x1d1));const _0x3cf4d3=await _0x91f900['json']();console[_0x225326(0x271)](_0x225326(0x28a),_0x3cf4d3);if(typeof globalConfig==_0x225326(0x341))window[_0x225326(0x218)]={};globalConfig=Object['assign']({},globalConfig,_0x3cf4d3);}catch(_0x1df9b9){console[_0x225326(0x36f)]('Error\x20fetching\x20JSON:',_0x1df9b9);}this['init']();}async[_0x1ce293(0x356)](_0x5ee280){const _0x3b31d6=_0x1ce293;if(this['options']['mediaIdJsonURL']==_0x3b31d6(0x2f9)){this[_0x3b31d6(0x377)]();return;}try{const _0x559cf3=await fetch(this['options'][_0x3b31d6(0x18a)]+'/'+_0x5ee280);if(!_0x559cf3['ok'])throw new Error('HTTP\x20error!\x20Status:\x20'+_0x559cf3['status']);const _0x49ac30=await _0x559cf3[_0x3b31d6(0x278)]();if(_0x49ac30[_0x3b31d6(0x388)]('GAME_ID')){const _0x1386de=_0x49ac30[_0x3b31d6(0x189)];console[_0x3b31d6(0x1e8)](_0x3b31d6(0x21d)+_0x5ee280+':\x20'+_0x1386de),this['options'][_0x3b31d6(0x19e)]=_0x1386de,console[_0x3b31d6(0x271)](_0x3b31d6(0x250)+this[_0x3b31d6(0x309)][_0x3b31d6(0x19e)]+',\x20so\x20I\x27m\x20launching\x20the\x20meta-data\x20fetcher\x20web-worker'),this[_0x3b31d6(0x377)](),this[_0x3b31d6(0x253)](this[_0x3b31d6(0x309)][_0x3b31d6(0x19e)]);}else console[_0x3b31d6(0x36f)](_0x3b31d6(0x2f5)+_0x5ee280+'\x20not\x20found\x20in\x20JSON.'),this[_0x3b31d6(0x309)]['stopAugment']=!![];}catch(_0x55bda9){console[_0x3b31d6(0x36f)]('Error\x20fetching\x20and\x20processing\x20GameId\x20JSON:',_0x55bda9);}}async[_0x1ce293(0x253)](_0xe77e7c){const _0x42c7fe=_0x1ce293;if(this[_0x42c7fe(0x309)][_0x42c7fe(0x1ed)]=='test')return 0x0;try{const _0x3378bc=await fetch(this[_0x42c7fe(0x309)]['offsetJsonURL']+'/'+this[_0x42c7fe(0x309)][_0x42c7fe(0x19e)]);!_0x3378bc['ok']&&(console['BBlog'](_0x42c7fe(0x36a)+_0x3378bc[_0x42c7fe(0x33c)]),setTimeout(()=>{const _0x5ef525=_0x42c7fe;this[_0x5ef525(0x253)](_0xe77e7c);},0x1388));const _0xddec2c=await _0x3378bc[_0x42c7fe(0x278)]();if(_0xddec2c[_0x42c7fe(0x388)](_0x42c7fe(0x1cd))&&_0xddec2c[_0x42c7fe(0x388)](_0x42c7fe(0x1a1))){const _0x593f9d=_0xddec2c[_0x42c7fe(0x1cd)],_0xeacfc=_0xddec2c[_0x42c7fe(0x1a1)];_0xeacfc==!![]&&(console[_0x42c7fe(0x1e8)]('Offset\x20for\x20gameid=\x20'+_0xe77e7c+':\x20'+_0x593f9d),this[_0x42c7fe(0x309)][_0x42c7fe(0x2aa)][_0x42c7fe(0x1cd)]=_0x593f9d,setTimeout(()=>{const _0x17c654=_0x42c7fe;this[_0x17c654(0x253)](_0xe77e7c);},0xea60));}else console[_0x42c7fe(0x1e8)]('offset\x20for\x20'+mediaID+'\x20not\x20found\x20in\x20JSON.'),setTimeout(()=>{const _0x351d05=_0x42c7fe;this[_0x351d05(0x253)](_0xe77e7c);},0x1388);}catch(_0x6e75b6){console[_0x42c7fe(0x36f)]('Error\x20fetching\x20and\x20processing\x20JSON:',_0x6e75b6),setTimeout(()=>{const _0x6226b5=_0x42c7fe;this[_0x6226b5(0x253)](_0xe77e7c);},0x1388);}}[_0x1ce293(0x282)](_0x5e5710){const _0xb691ee=_0x1ce293;this[_0xb691ee(0x309)][_0xb691ee(0x22e)]=_0x5e5710;}[_0x1ce293(0x294)](){const _0x35b772=_0x1ce293;return this[_0x35b772(0x1ca)]['getCanvas']();}['setCalculationFps'](_0x4ece97){const _0x246c53=_0x1ce293;let _0x3ab1ef=BB['Utils']['Platform'];switch(_0x4ece97){case 0x3c:this['options'][_0x246c53(0x296)]=BB[_0x246c53(0x16b)]['Src60_MediaTime60'];break;case 0xea60/0x3e9:case 59.94:_0x3ab1ef[_0x246c53(0x348)]()||_0x3ab1ef[_0x246c53(0x375)]()||_0x3ab1ef[_0x246c53(0x24d)]()?this[_0x246c53(0x309)]['frameRateMode']=BB[_0x246c53(0x16b)][_0x246c53(0x1a4)]:this[_0x246c53(0x309)][_0x246c53(0x296)]=BB[_0x246c53(0x16b)][_0x246c53(0x1a4)];break;case 0x7530/0x3e9:case 29.97:this[_0x246c53(0x309)]['frameRateMode']=BB[_0x246c53(0x16b)][_0x246c53(0x232)];break;default:console[_0x246c53(0x308)]('Unsupported\x20calculation\x20frame-rate:\x20'+_0x4ece97+'fps');break;}}['setFps'](_0x4d3198){const _0x59a22c=_0x1ce293;var _0x32e7a=_0x4d3198[_0x59a22c(0x1e4)];switch(_0x32e7a){case 59.94:case 0xea60/0x3e9:this[_0x59a22c(0x309)][_0x59a22c(0x26e)]=0xea60/0x3e9;break;case 29.97:case 0x7530/0x3e9:this[_0x59a22c(0x309)][_0x59a22c(0x26e)]=0x7530/0x3e9;break;default:console[_0x59a22c(0x308)](_0x59a22c(0x386)+_0x32e7a+'fps'),this[_0x59a22c(0x309)]['hls_fps']=_0x32e7a;break;}}[_0x1ce293(0x1ba)](_0x496f71){const _0x2661ad=_0x1ce293;this[_0x2661ad(0x309)][_0x2661ad(0x1f8)]=_0x496f71;}[_0x1ce293(0x1e0)](_0x5decca){const _0x296874=_0x1ce293;this[_0x296874(0x1ca)][_0x296874(0x23c)](_0x5decca);}[_0x1ce293(0x158)](_0x445b6f){const _0x232fbf=_0x1ce293;this[_0x232fbf(0x1ca)][_0x232fbf(0x31c)](_0x445b6f);}};
|