earthsdk3-ue 3.4.0-beta.8 → 3.4.0
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/dist/earthsdk3-ue.iife.js +13 -13
- package/dist/earthsdk3-ue.js +683 -672
- package/dist/earthsdk3-ue.umd.cjs +3 -3
- package/dist/types/UeObjects/base/UeESSceneObject/index.d.ts.map +1 -1
- package/dist/types/UeObjects/general/UeES3DTileset/index.d.ts.map +1 -1
- package/dist/types/UeObjects/general/UeESImageryLayer/index.d.ts.map +1 -1
- package/dist/types/UeObjects/general/UeESPath/index.d.ts +0 -1
- package/dist/types/UeObjects/general/UeESPath/index.d.ts.map +1 -1
- package/dist/types/UeObjects/general/UeESUnrealActor/index.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var EarthSDK3_UE=function(v,p,w){"use strict";var jw=Object.defineProperty;var Ap=(v,p,w)=>p in v?jw(v,p,{enumerable:!0,configurable:!0,writable:!0,value:w}):v[p]=w;var C=(v,p,w)=>Ap(v,typeof p!="symbol"?p+"":p,w);const od={...p.ESViewer.defaults,geoReferenceOrigin:void 0,keepWorldOriginNearCamera:!1,useCache:!0,widgetInteractionDistance:200,memReportInterval:10,sceneControlled:!0,brightness:0,emissiveIntensity:1,statusUpdateInterval:.5,baseUrl:window.location.href??"",screenPercentage:-1,antiAliasingMethod:"default"},zi=()=>({...p.ESViewer.createCommonProps(),apiKey:"",apiUrl:"",secretKey:"",speechVoiceMode:"",geoReferenceOrigin:w.reactArrayWithUndefined(void 0),keepWorldOriginNearCamera:void 0,useCache:void 0,widgetInteractionDistance:void 0,memReportInterval:void 0,sceneControlled:void 0,brightness:void 0,emissiveIntensity:void 0,statusUpdateInterval:void 0,baseUrl:void 0,screenPercentage:void 0,antiAliasingMethod:void 0});function mr(){const r=zi(),A=[];return Object.keys(r).forEach(e=>{A.push(e)}),A}function Qn(r){const{defaults:A}=bA,e=mr(),t={};return e.forEach(n=>{t[n]=r[n]??A[n]}),t}const Be=async(r,A,e,t,n,s="default")=>{const i=await r.callUeFunc({f:"flyTo",p:{id:A,duration:e,flyToParam:t,position:n,flyMode:s}});if(i.error){console.error(i.error);return}return i.re},Yi=async(r,A)=>{const e=await r.callUeFunc({f:"destroy",p:{id:A}});return e.error&&console.error(e.error),e},$A=(r,A)=>{r.callUeFunc({f:"calcFlyToParam",p:{id:A}}).then(e=>{e.error&&console.error("calcFlyToParam:",e.error)}).catch(e=>{console.error("calcFlyToParam:",e)})},$i=(r,A)=>{r.callUeFunc({f:"refreshTileset",p:{id:A}}).then(e=>{e.error&&console.error("refreshTileset:",e.error)}).catch(e=>{console.error("refreshTileset:",e)})},xe=async(r,A,e,t,n,s="default")=>{const i=await r.callUeFunc({f:"flyIn",p:{id:A,position:e,rotation:t,duration:n,flyMode:s}});if(i.error){console.error(i.error);return}return i.re},Zi=async(r,A)=>{if(!r){console.warn("DefaultCameraFlyIn: viewer is undefined");return}const e=await r.callUeFunc({f:"DefaultCameraFlyIn",p:{Duration:A??1}});if(e.error){console.error("DefaultCameraFlyIn:",e.error);return}return e},qi=async r=>{if(!r){console.warn("StartVoice:viewer is undefined");return}const A=await r.callUeFunc({f:"StartVoice",p:{}});if(A.error){console.error("StartVoice:",A.error);return}return A},ji=async r=>{if(!r){console.warn("StopVoice:viewer is undefined");return}const A=await r.callUeFunc({f:"StopVoice",p:{}});if(A.error){console.error("StopVoice:",A.error);return}return A},Ao=async(r,A)=>{if(!r){console.warn("mountPakFiles:viewer is undefined");return}const e=await r.callUeFunc({f:"MountPakFiles",p:{json:A}});if(e.error){console.error("mountPakFiles:",e.error);return}return e},eo=async r=>{if(!r){console.warn("generateMemReport:viewer is undefined");return}const A=await r.callUeFunc({f:"GenerateMemReport",p:{}});if(A.error){console.error("generateMemReport:",A.error);return}return A},Un=async(r,A)=>{const e=await r.callUeFunc({f:"resetWithCurrentCamera",p:{id:A}});return e.error&&console.error("resetWithCurrentCamera:",e.error),e},ke=(r,A,e,t,n)=>{r.callUeFunc({f:"smoothMoveWithRotation",p:{id:A,Destination:e,NewRotation:t,Time:n}}).then(s=>{s.error&&console.error("smoothMoveWithRotation:",s.error)}).catch(s=>{console.error("smoothMoveWithRotation:",s)})},Ge=(r,A,e,t,n,s)=>{r.callUeFunc({f:"smoothMoveOnGround",p:{id:A,Lon:e,Lat:t,Ground:n,Time:s}}).then(i=>{i.error&&console.error("smoothMoveOnGround:",i.error)}).catch(i=>{console.error("smoothMoveOnGround:",i)})},Ne=(r,A,e,t,n,s,i)=>{r.callUeFunc({f:"smoothMoveWithRotationOnGround",p:{id:A,NewRotation:e,Lon:t,Lat:n,Time:s,Ground:i}}).then(o=>{o.error&&console.error("smoothMoveWithRotationOnGround:",o.error)}).catch(o=>{console.error("smoothMoveWithRotationOnGround:",o)})},to=(r,A,e)=>{r.callUeFunc({f:"HighlightFeature",p:{id:A,HlId:e}}).then(t=>{t.error&&console.error("HighlightFeature:",t.error)}).catch(t=>{console.error("HighlightFeature:",t)})},ro=(r,A,e,t)=>{r.callUeFunc({f:"HighlightFeatureAndFlyTo",p:{id:A,HlId:e,Duration:t}}).then(n=>{n.error&&console.error("HighlightFeatureAndFlyTo:",n.error)}).catch(n=>{console.error("HighlightFeatureAndFlyTo:",n)})},no=(r,A,e)=>{r.callUeFunc({f:"SetLayerVisible",p:{id:A,LayerJson:e}}).then(t=>{t.error&&console.error("SetLayerVisible:",t.error)}).catch(t=>{console.error("SetLayerVisible:",t)})},so=(r,A,e)=>{r.callUeFunc({f:"SetLayerColor",p:{id:A,LayerJson:e}}).then(t=>{t.error&&console.error("SetLayerColor:",t.error)}).catch(t=>{console.error("SetLayerColor:",t)})},_e=(r,A,e,t)=>{r.callUeFunc({f:"smoothMove",p:{id:A,Destination:e,Time:t}}).then(n=>{n.error&&console.error("smoothMove:",n.error)}).catch(n=>{console.error("smoothMove:",n)})},En=async(r,A,e,t)=>{const n=await r.callUeFunc({f:"callFunction",p:{id:A,fn:e,p:t}});return n.error&&(console.error("callFunction:",n.error),console.error(`id: ${A} fn: ${e} param: ${t}`)),n.re??void 0},io=(r,A,e,t)=>{r.callUeFunc({f:"SetNodePosition",p:{id:A,NodeName:e,NodePosition:t}}).then(n=>{n.error&&console.error("SetNodePosition:",n.error)}).catch(n=>{console.error("SetNodePosition:",n)})},oo=(r,A,e,t)=>{r.callUeFunc({f:"SetNodeRotation",p:{id:A,NodeName:e,NodeRotation:t}}).then(n=>{n.error&&console.error("SetNodeRotation:",n.error)}).catch(n=>{console.error("SetNodeRotation:",n)})},ao=(r,A,e,t)=>{r.callUeFunc({f:"SetNodeScale",p:{id:A,NodeName:e,NodeScale:t}}).then(n=>{n.error&&console.error("SetNodeScale:",n.error)}).catch(n=>{console.error("SetNodeScale:",n)})},HA=async(r,A)=>{if(A.mode=="Follow"){const t=p.ESSceneObject.getSceneObject(A.objectId);A.objectId=t?(t.components.main??t).id:A.objectId}else if(A.mode=="Line"){const t=p.ESSceneObject.getSceneObject(A.geoLineStringId);A.geoLineStringId=t?(t.components.main??t).id:A.geoLineStringId}const e=await r.callUeFunc({f:"ChangeNavigationMode",p:A});if(e.error){console.error("ChangeNavigationMode:",e.error);return}return e},lo=async(r,A)=>{const e=await r.callUeFunc({f:"setGlobalProperty",p:A});if(e.error){console.error("setGlobalProperty:",e.error);return}return e},co=async r=>{const A=await r.callUeFunc({f:"Quit",p:void 0});if(A.error){console.error("Quit:",A.error);return}return A},uo=async(r,A,e,t)=>{console.log("pickCallFunc",A,e,t);const n=await r.callUeFunc({f:"pick",p:{screenPosition:A,parentInfo:t}});if(!n.re&&(n.error||n.error=="")){console.error("pick:",n.error==""?"未获取到结果":n.error);return}let s=n.re.id,i,o=s?p.ESSceneObject.getSceneObject(s):void 0;return o&&o.parentID&&(o=p.ESSceneObject.getSceneObject(o.parentID)),i=new p.ESJPickedResult(n.re,o,n.re.features,n.re.add,e,A),o&&Reflect.has(o,"allowPicking")&&Reflect.has(o,"pickedEvent")&&(o.allowPicking??!1)&&o.pickedEvent.emit(i),o&&Reflect.has(o,"allowPicking")&&!o.allowPicking?new p.ESJPickedResult:i},ho=async(r,A)=>{const e=await r.callUeFunc({f:"pickPosition",p:{screenPosition:A}});if(!e.re&&(e.error||e.error=="")){console.error("pickPosition",e.error==""?"未获取到结果":e.error);return}const{position:t}=e.re;return t},go=async(r,A,e,t="ECC_Visibility")=>{const n=await r.callUeFunc({f:"GetHeightByLonLat",p:{Lon:A,Lat:e,Channel:t}});if(n.error){console.warn(`GetHeightByLonLat:${n.error}`);return}return n.re},Bo=async(r,A,e="ECC_Visibility")=>{const t=await r.callUeFunc({f:"GetHeightsByLonLats",p:{LonLats:A,Channel:e}});if(t.error){console.warn(`GetHeightsByLonLats:${t.error}`);return}t.re.heights.includes(null)&&console.warn("注意! GetHeightsByLonLats: 存在高度为null的点. there are points with a height of null");try{return t.re.heights}catch{return}},fo=async(r,A=64,e=64)=>{const t=await r.callUeFunc({f:"capture",p:{resx:A,resy:e}});if(t.error){console.warn(t.error);return}return t.re.image},wo=async(r,A,e=[64,64])=>{const t=await r.callUeFunc({f:"partialCapture",p:{startPos:A,size:e}});if(t.error){console.warn(t.error);return}return t.re.image},po=async(r,A)=>{const e=await r.callUeFunc({f:"LonLatAltToScreenPosition",p:{LonLatAlt:A}});return e.error&&console.warn(e.error),e.re},Co=async(r,A)=>{const e=await r.callUeFunc({f:"UEPositionToLonLatAlt",p:{UEPosition:A}});if(e.error){console.warn(e.error);return}return[...e.re.LonLatAlt]},vo=async(r,A)=>{const e=await r.callUeFunc({f:"GetAllSocketNamesByActorTag",p:{ActorTag:A}});if(e.error){console.warn(e.error);return}return[...e.re.socketNames]},mo=async r=>{const A=await r.callUeFunc({f:"GetVersion",p:void 0});if(A.error){console.warn("GetVersion:",A.error);return}return A.re.version},Fo=async(r,A)=>{const e=await r.callUeFunc({f:"GetBoundSphere",p:{id:A}});if(e.error){console.warn(e.error);return}return e.re},Qo=async(r,A)=>{const e=await r.callUeFunc({f:"GetBoundSphereWithChildren",p:{id:A}});if(e.error){console.warn(`GetBoundSphereWithChildren:${e.error}`);return}return e.re},Uo=async(r,A)=>{const e=await r.callUeFunc({f:"GetStrokeMaterialParamInfo",p:{id:A}});if(e.error){console.warn(`GetStrokeMaterialParamInfo:${e.error}`);return}return e.re},Eo=async(r,A)=>{const e=await r.callUeFunc({f:"GetFillMaterialParamInfo",p:{id:A}});if(e.error){console.warn(`GetFillMaterialParamInfo:${e.error}`);return}return e.re},yo=async(r,A)=>{const e=await r.callUeFunc({f:"getGlobalProperty",p:{props:A}});if(e.error){console.warn(`getGlobalProperty:${e.error}`);return}return e.re},So=async(r,A)=>{const e=await r.callUeFunc({f:"GetObjectByInfo",p:{info:A}});if(e.error){console.warn(`GetObjectByInfo:${e.error}`);return}return e.re},Io=async(r,A,e)=>await r.callUeFunc({f:"BindActorByTag",p:{ID:A,ActorTag:e}}),To=async r=>await r.callUeFunc({f:"RestoreOriginalScene",p:void 0}),Ho=async(r,A)=>await r.callUeFunc({f:"UnBindActorByID",p:{ID:A}}),Lo=async(r,A)=>await r.callUeFunc({f:"UnBindActorByTag",p:{ActorTag:A}}),bo=async(r,A,e)=>await r.callUeFunc({f:"CreateActorByClass",p:{ID:A,ActorClass:e}}),Mo=async function(r,A,e){return await r.callUeFunc({f:"Bind3DTilesetByTag",p:{ID:A,ActorTag:e}})},Do=async function(r,A){return await r.callUeFunc({f:"UnBind3DTilesetByTag",p:{ActorTag:A}})},Ro=async function(r,A){return await r.callUeFunc({f:"UnBind3DTilesetById",p:{ID:A}})},Po=async function(r,A,e,t){return await r.callUeFunc({f:"BindImageryByTag",p:{ID:A,ActorTag:e,ComponentTag:t}})},Ko=async function(r,A,e){return await r.callUeFunc({f:"UnBindImageryByTag",p:{ActorTag:A,ComponentTag:e}})},xo=async function(r,A){return await r.callUeFunc({f:"UnBindImageryById",p:{ID:A}})},ko=async function(r,A,e,t){return await r.callUeFunc({f:"GetIdByComponentNameAndHitItem",p:{id:A,ComponentName:e,HitItem:t}})},Go=async function(r,A="ECC_Visibility"){return await r.callUeFunc({f:"GetCameraRelativeHeight",p:{Channel:A}})},No=async function(r,A,e,t){const n=await r.callUeFunc({f:"SaveStringToFile",p:{String:A,Path:e??"undefine",File:t??"data.txt"}});return n.error!==""&&console.warn("SaveStringToFile: ",n.error),n},_o=async function(r,A,e=!0){const t=await r.callUeFunc({f:"HighlightActorByTag",p:{ActorTag:A,Highlight:e}});return t.error!==""&&console.warn("HighlightActorByTag: ",t.error),t},Vo=async function(r,A){const e=await r.callUeFunc({f:"SendCustomMessage",p:{Message:A}});return e.error!==""&&console.warn("SendCustomMessage: ",e.error),e},Oo=async function(r){const A=await r.callUeFunc({f:"GetStatus",p:void 0});if(A.error){console.warn(`GetStatus:${A.error}`);return}return A.re},Wo=async(r,A,e,t,n=!0)=>{const s=await r.callUeFunc({f:"startEditing",p:{sceneObjectID:A,editingID:e,modes:t,useKeyToSwitch:n}});if(s.error){console.error("startEditing:",s.error);return}return s},Xo=async r=>{const A=await r.callUeFunc({f:"stopEditing",p:void 0});if(A.error){console.error("stopEditing:",A.error);return}return A},Jo=async(r,A,e)=>{const t=await r.callUeFunc({f:"moveObjects",p:{sceneObjectIDs:A,editingID:e}});if(t.error){console.error("moveObjects:",t.error);return}return t},zo=async r=>{const A=await r.callUeFunc({f:"GetTilesetMaterialIDList",p:void 0});if(A.error){console.error("GetTilesetMaterialIDList:",A.error);return}return A.re.materialIDList};class Ve extends w.Destroyable{}var yn={exports:{}},Yo;function ad(){return Yo||(Yo=1,function(r){const A={};A.generateIdentifier=function(){return Math.random().toString(36).substring(2,12)},A.localCName=A.generateIdentifier(),A.splitLines=function(e){return e.trim().split(`
|
|
1
|
+
var EarthSDK3_UE=function(v,p,w){"use strict";var jw=Object.defineProperty;var Ap=(v,p,w)=>p in v?jw(v,p,{enumerable:!0,configurable:!0,writable:!0,value:w}):v[p]=w;var C=(v,p,w)=>Ap(v,typeof p!="symbol"?p+"":p,w);const od={...p.ESViewer.defaults,geoReferenceOrigin:void 0,keepWorldOriginNearCamera:!1,useCache:!0,widgetInteractionDistance:200,memReportInterval:10,sceneControlled:!0,brightness:0,emissiveIntensity:1,statusUpdateInterval:.5,baseUrl:window.location.href??"",screenPercentage:-1,antiAliasingMethod:"default"},Yi=()=>({...p.ESViewer.createCommonProps(),apiKey:"",apiUrl:"",secretKey:"",speechVoiceMode:"",geoReferenceOrigin:w.reactArrayWithUndefined(void 0),keepWorldOriginNearCamera:void 0,useCache:void 0,widgetInteractionDistance:void 0,memReportInterval:void 0,sceneControlled:void 0,brightness:void 0,emissiveIntensity:void 0,statusUpdateInterval:void 0,baseUrl:void 0,screenPercentage:void 0,antiAliasingMethod:void 0});function mr(){const r=Yi(),A=[];return Object.keys(r).forEach(e=>{A.push(e)}),A}function Qn(r){const{defaults:A}=bA,e=mr(),t={};return e.forEach(n=>{t[n]=r[n]??A[n]}),t}const Be=async(r,A,e,t,n,s="default")=>{const i=await r.callUeFunc({f:"flyTo",p:{id:A,duration:e,flyToParam:t,position:n,flyMode:s}});if(i.error){console.error(i.error);return}return i.re},Un=async(r,A)=>{const e=await r.callUeFunc({f:"destroy",p:{id:A}});return e.error&&console.error(e.error),e},$A=(r,A)=>{r.callUeFunc({f:"calcFlyToParam",p:{id:A}}).then(e=>{e.error&&console.error("calcFlyToParam:",e.error)}).catch(e=>{console.error("calcFlyToParam:",e)})},$i=(r,A)=>{r.callUeFunc({f:"refreshTileset",p:{id:A}}).then(e=>{e.error&&console.error("refreshTileset:",e.error)}).catch(e=>{console.error("refreshTileset:",e)})},xe=async(r,A,e,t,n,s="default")=>{const i=await r.callUeFunc({f:"flyIn",p:{id:A,position:e,rotation:t,duration:n,flyMode:s}});if(i.error){console.error(i.error);return}return i.re},Zi=async(r,A)=>{if(!r){console.warn("DefaultCameraFlyIn: viewer is undefined");return}const e=await r.callUeFunc({f:"DefaultCameraFlyIn",p:{Duration:A??1}});if(e.error){console.error("DefaultCameraFlyIn:",e.error);return}return e},qi=async r=>{if(!r){console.warn("StartVoice:viewer is undefined");return}const A=await r.callUeFunc({f:"StartVoice",p:{}});if(A.error){console.error("StartVoice:",A.error);return}return A},ji=async r=>{if(!r){console.warn("StopVoice:viewer is undefined");return}const A=await r.callUeFunc({f:"StopVoice",p:{}});if(A.error){console.error("StopVoice:",A.error);return}return A},Ao=async(r,A)=>{if(!r){console.warn("mountPakFiles:viewer is undefined");return}const e=await r.callUeFunc({f:"MountPakFiles",p:{json:A}});if(e.error){console.error("mountPakFiles:",e.error);return}return e},eo=async r=>{if(!r){console.warn("generateMemReport:viewer is undefined");return}const A=await r.callUeFunc({f:"GenerateMemReport",p:{}});if(A.error){console.error("generateMemReport:",A.error);return}return A},En=async(r,A)=>{const e=await r.callUeFunc({f:"resetWithCurrentCamera",p:{id:A}});return e.error&&console.error("resetWithCurrentCamera:",e.error),e},ke=(r,A,e,t,n)=>{r.callUeFunc({f:"smoothMoveWithRotation",p:{id:A,Destination:e,NewRotation:t,Time:n}}).then(s=>{s.error&&console.error("smoothMoveWithRotation:",s.error)}).catch(s=>{console.error("smoothMoveWithRotation:",s)})},Ge=(r,A,e,t,n,s)=>{r.callUeFunc({f:"smoothMoveOnGround",p:{id:A,Lon:e,Lat:t,Ground:n,Time:s}}).then(i=>{i.error&&console.error("smoothMoveOnGround:",i.error)}).catch(i=>{console.error("smoothMoveOnGround:",i)})},Ne=(r,A,e,t,n,s,i)=>{r.callUeFunc({f:"smoothMoveWithRotationOnGround",p:{id:A,NewRotation:e,Lon:t,Lat:n,Time:s,Ground:i}}).then(o=>{o.error&&console.error("smoothMoveWithRotationOnGround:",o.error)}).catch(o=>{console.error("smoothMoveWithRotationOnGround:",o)})},to=(r,A,e)=>{r.callUeFunc({f:"HighlightFeature",p:{id:A,HlId:e}}).then(t=>{t.error&&console.error("HighlightFeature:",t.error)}).catch(t=>{console.error("HighlightFeature:",t)})},ro=(r,A,e,t)=>{r.callUeFunc({f:"HighlightFeatureAndFlyTo",p:{id:A,HlId:e,Duration:t}}).then(n=>{n.error&&console.error("HighlightFeatureAndFlyTo:",n.error)}).catch(n=>{console.error("HighlightFeatureAndFlyTo:",n)})},no=(r,A,e)=>{r.callUeFunc({f:"SetLayerVisible",p:{id:A,LayerJson:e}}).then(t=>{t.error&&console.error("SetLayerVisible:",t.error)}).catch(t=>{console.error("SetLayerVisible:",t)})},so=(r,A,e)=>{r.callUeFunc({f:"SetLayerColor",p:{id:A,LayerJson:e}}).then(t=>{t.error&&console.error("SetLayerColor:",t.error)}).catch(t=>{console.error("SetLayerColor:",t)})},_e=(r,A,e,t)=>{r.callUeFunc({f:"smoothMove",p:{id:A,Destination:e,Time:t}}).then(n=>{n.error&&console.error("smoothMove:",n.error)}).catch(n=>{console.error("smoothMove:",n)})},yn=async(r,A,e,t)=>{const n=await r.callUeFunc({f:"callFunction",p:{id:A,fn:e,p:t}});return n.error&&(console.error("callFunction:",n.error),console.error(`id: ${A} fn: ${e} param: ${t}`)),n.re??void 0},io=(r,A,e,t)=>{r.callUeFunc({f:"SetNodePosition",p:{id:A,NodeName:e,NodePosition:t}}).then(n=>{n.error&&console.error("SetNodePosition:",n.error)}).catch(n=>{console.error("SetNodePosition:",n)})},oo=(r,A,e,t)=>{r.callUeFunc({f:"SetNodeRotation",p:{id:A,NodeName:e,NodeRotation:t}}).then(n=>{n.error&&console.error("SetNodeRotation:",n.error)}).catch(n=>{console.error("SetNodeRotation:",n)})},ao=(r,A,e,t)=>{r.callUeFunc({f:"SetNodeScale",p:{id:A,NodeName:e,NodeScale:t}}).then(n=>{n.error&&console.error("SetNodeScale:",n.error)}).catch(n=>{console.error("SetNodeScale:",n)})},HA=async(r,A)=>{if(A.mode=="Follow"){const t=p.ESSceneObject.getSceneObject(A.objectId);A.objectId=t?(t.components.main??t).id:A.objectId}else if(A.mode=="Line"){const t=p.ESSceneObject.getSceneObject(A.geoLineStringId);A.geoLineStringId=t?(t.components.main??t).id:A.geoLineStringId}const e=await r.callUeFunc({f:"ChangeNavigationMode",p:A});if(e.error){console.error("ChangeNavigationMode:",e.error);return}return e},lo=async(r,A)=>{const e=await r.callUeFunc({f:"setGlobalProperty",p:A});if(e.error){console.error("setGlobalProperty:",e.error);return}return e},co=async r=>{const A=await r.callUeFunc({f:"Quit",p:void 0});if(A.error){console.error("Quit:",A.error);return}return A},uo=async(r,A,e,t)=>{console.log("pickCallFunc",A,e,t);const n=await r.callUeFunc({f:"pick",p:{screenPosition:A,parentInfo:t}});if(!n.re&&(n.error||n.error=="")){console.error("pick:",n.error==""?"未获取到结果":n.error);return}let s=n.re.id,i,o=s?p.ESSceneObject.getSceneObject(s):void 0;return o&&o.parentID&&(o=p.ESSceneObject.getSceneObject(o.parentID)),i=new p.ESJPickedResult(n.re,o,n.re.features,n.re.add,e,A),o&&Reflect.has(o,"allowPicking")&&Reflect.has(o,"pickedEvent")&&(o.allowPicking??!1)&&o.pickedEvent.emit(i),o&&Reflect.has(o,"allowPicking")&&!o.allowPicking?new p.ESJPickedResult:i},ho=async(r,A)=>{const e=await r.callUeFunc({f:"pickPosition",p:{screenPosition:A}});if(!e.re&&(e.error||e.error=="")){console.error("pickPosition",e.error==""?"未获取到结果":e.error);return}const{position:t}=e.re;return t},go=async(r,A,e,t="ECC_Visibility")=>{const n=await r.callUeFunc({f:"GetHeightByLonLat",p:{Lon:A,Lat:e,Channel:t}});if(n.error){console.warn(`GetHeightByLonLat:${n.error}`);return}return n.re},Bo=async(r,A,e="ECC_Visibility")=>{const t=await r.callUeFunc({f:"GetHeightsByLonLats",p:{LonLats:A,Channel:e}});if(t.error){console.warn(`GetHeightsByLonLats:${t.error}`);return}t.re.heights.includes(null)&&console.warn("注意! GetHeightsByLonLats: 存在高度为null的点. there are points with a height of null");try{return t.re.heights}catch{return}},fo=async(r,A=64,e=64)=>{const t=await r.callUeFunc({f:"capture",p:{resx:A,resy:e}});if(t.error){console.warn(t.error);return}return t.re.image},wo=async(r,A,e=[64,64])=>{const t=await r.callUeFunc({f:"partialCapture",p:{startPos:A,size:e}});if(t.error){console.warn(t.error);return}return t.re.image},po=async(r,A)=>{const e=await r.callUeFunc({f:"LonLatAltToScreenPosition",p:{LonLatAlt:A}});return e.error&&console.warn(e.error),e.re},Co=async(r,A)=>{const e=await r.callUeFunc({f:"UEPositionToLonLatAlt",p:{UEPosition:A}});if(e.error){console.warn(e.error);return}return[...e.re.LonLatAlt]},vo=async(r,A)=>{const e=await r.callUeFunc({f:"GetAllSocketNamesByActorTag",p:{ActorTag:A}});if(e.error){console.warn(e.error);return}return[...e.re.socketNames]},mo=async r=>{const A=await r.callUeFunc({f:"GetVersion",p:void 0});if(A.error){console.warn("GetVersion:",A.error);return}return A.re.version},Fo=async(r,A)=>{const e=await r.callUeFunc({f:"GetBoundSphere",p:{id:A}});if(e.error){console.warn(e.error);return}return e.re},Qo=async(r,A)=>{const e=await r.callUeFunc({f:"GetBoundSphereWithChildren",p:{id:A}});if(e.error){console.warn(`GetBoundSphereWithChildren:${e.error}`);return}return e.re},Uo=async(r,A)=>{const e=await r.callUeFunc({f:"GetStrokeMaterialParamInfo",p:{id:A}});if(e.error){console.warn(`GetStrokeMaterialParamInfo:${e.error}`);return}return e.re},Eo=async(r,A)=>{const e=await r.callUeFunc({f:"GetFillMaterialParamInfo",p:{id:A}});if(e.error){console.warn(`GetFillMaterialParamInfo:${e.error}`);return}return e.re},yo=async(r,A)=>{const e=await r.callUeFunc({f:"getGlobalProperty",p:{props:A}});if(e.error){console.warn(`getGlobalProperty:${e.error}`);return}return e.re},So=async(r,A)=>{const e=await r.callUeFunc({f:"GetObjectByInfo",p:{info:A}});if(e.error){console.warn(`GetObjectByInfo:${e.error}`);return}return e.re},Io=async(r,A,e)=>await r.callUeFunc({f:"BindActorByTag",p:{ID:A,ActorTag:e}}),To=async r=>await r.callUeFunc({f:"RestoreOriginalScene",p:void 0}),Ho=async(r,A)=>await r.callUeFunc({f:"UnBindActorByID",p:{ID:A}}),Lo=async(r,A)=>await r.callUeFunc({f:"UnBindActorByTag",p:{ActorTag:A}}),bo=async(r,A,e)=>await r.callUeFunc({f:"CreateActorByClass",p:{ID:A,ActorClass:e}}),Mo=async function(r,A,e){return await r.callUeFunc({f:"Bind3DTilesetByTag",p:{ID:A,ActorTag:e}})},Do=async function(r,A){return await r.callUeFunc({f:"UnBind3DTilesetByTag",p:{ActorTag:A}})},Ro=async function(r,A){return await r.callUeFunc({f:"UnBind3DTilesetById",p:{ID:A}})},Po=async function(r,A,e,t){return await r.callUeFunc({f:"BindImageryByTag",p:{ID:A,ActorTag:e,ComponentTag:t}})},Ko=async function(r,A,e){return await r.callUeFunc({f:"UnBindImageryByTag",p:{ActorTag:A,ComponentTag:e}})},xo=async function(r,A){return await r.callUeFunc({f:"UnBindImageryById",p:{ID:A}})},ko=async function(r,A,e,t){return await r.callUeFunc({f:"GetIdByComponentNameAndHitItem",p:{id:A,ComponentName:e,HitItem:t}})},Go=async function(r,A="ECC_Visibility"){return await r.callUeFunc({f:"GetCameraRelativeHeight",p:{Channel:A}})},No=async function(r,A,e,t){const n=await r.callUeFunc({f:"SaveStringToFile",p:{String:A,Path:e??"undefine",File:t??"data.txt"}});return n.error!==""&&console.warn("SaveStringToFile: ",n.error),n},_o=async function(r,A,e=!0){const t=await r.callUeFunc({f:"HighlightActorByTag",p:{ActorTag:A,Highlight:e}});return t.error!==""&&console.warn("HighlightActorByTag: ",t.error),t},Vo=async function(r,A){const e=await r.callUeFunc({f:"SendCustomMessage",p:{Message:A}});return e.error!==""&&console.warn("SendCustomMessage: ",e.error),e},Oo=async function(r){const A=await r.callUeFunc({f:"GetStatus",p:void 0});if(A.error){console.warn(`GetStatus:${A.error}`);return}return A.re},Wo=async(r,A,e,t,n=!0)=>{const s=await r.callUeFunc({f:"startEditing",p:{sceneObjectID:A,editingID:e,modes:t,useKeyToSwitch:n}});if(s.error){console.error("startEditing:",s.error);return}return s},Xo=async r=>{const A=await r.callUeFunc({f:"stopEditing",p:void 0});if(A.error){console.error("stopEditing:",A.error);return}return A},Jo=async(r,A,e)=>{const t=await r.callUeFunc({f:"moveObjects",p:{sceneObjectIDs:A,editingID:e}});if(t.error){console.error("moveObjects:",t.error);return}return t},zo=async r=>{const A=await r.callUeFunc({f:"GetTilesetMaterialIDList",p:void 0});if(A.error){console.error("GetTilesetMaterialIDList:",A.error);return}return A.re.materialIDList};class Ve extends w.Destroyable{}var Sn={exports:{}},Yo;function ad(){return Yo||(Yo=1,function(r){const A={};A.generateIdentifier=function(){return Math.random().toString(36).substring(2,12)},A.localCName=A.generateIdentifier(),A.splitLines=function(e){return e.trim().split(`
|
|
2
2
|
`).map(t=>t.trim())},A.splitSections=function(e){return e.split(`
|
|
3
3
|
m=`).map((n,s)=>(s>0?"m="+n:n).trim()+`\r
|
|
4
4
|
`)},A.getDescription=function(e){const t=A.splitSections(e);return t&&t[0]},A.getMediaSections=function(e){const t=A.splitSections(e);return t.shift(),t},A.matchPrefix=function(e,t){return A.splitLines(e).filter(n=>n.indexOf(t)===0)},A.parseCandidate=function(e){let t;e.indexOf("a=candidate:")===0?t=e.substring(12).split(" "):t=e.substring(10).split(" ");const n={foundation:t[0],component:{1:"rtp",2:"rtcp"}[t[1]]||t[1],protocol:t[2].toLowerCase(),priority:parseInt(t[3],10),ip:t[4],address:t[4],port:parseInt(t[5],10),type:t[7]};for(let s=8;s<t.length;s+=2)switch(t[s]){case"raddr":n.relatedAddress=t[s+1];break;case"rport":n.relatedPort=parseInt(t[s+1],10);break;case"tcptype":n.tcpType=t[s+1];break;case"ufrag":n.ufrag=t[s+1],n.usernameFragment=t[s+1];break;default:n[t[s]]===void 0&&(n[t[s]]=t[s+1]);break}return n},A.writeCandidate=function(e){const t=[];t.push(e.foundation);const n=e.component;n==="rtp"?t.push(1):n==="rtcp"?t.push(2):t.push(n),t.push(e.protocol.toUpperCase()),t.push(e.priority),t.push(e.address||e.ip),t.push(e.port);const s=e.type;return t.push("typ"),t.push(s),s!=="host"&&e.relatedAddress&&e.relatedPort&&(t.push("raddr"),t.push(e.relatedAddress),t.push("rport"),t.push(e.relatedPort)),e.tcpType&&e.protocol.toLowerCase()==="tcp"&&(t.push("tcptype"),t.push(e.tcpType)),(e.usernameFragment||e.ufrag)&&(t.push("ufrag"),t.push(e.usernameFragment||e.ufrag)),"candidate:"+t.join(" ")},A.parseIceOptions=function(e){return e.substring(14).split(" ")},A.parseRtpMap=function(e){let t=e.substring(9).split(" ");const n={payloadType:parseInt(t.shift(),10)};return t=t[0].split("/"),n.name=t[0],n.clockRate=parseInt(t[1],10),n.channels=t.length===3?parseInt(t[2],10):1,n.numChannels=n.channels,n},A.writeRtpMap=function(e){let t=e.payloadType;e.preferredPayloadType!==void 0&&(t=e.preferredPayloadType);const n=e.channels||e.numChannels||1;return"a=rtpmap:"+t+" "+e.name+"/"+e.clockRate+(n!==1?"/"+n:"")+`\r
|
|
@@ -29,7 +29,7 @@ a=ice-pwd:`+e.password+`\r
|
|
|
29
29
|
o=`+(n||"thisisadapterortc")+" "+s+" "+i+` IN IP4 127.0.0.1\r
|
|
30
30
|
s=-\r
|
|
31
31
|
t=0 0\r
|
|
32
|
-
`},A.getDirection=function(e,t){const n=A.splitLines(e);for(let s=0;s<n.length;s++)switch(n[s]){case"a=sendrecv":case"a=sendonly":case"a=recvonly":case"a=inactive":return n[s].substring(2)}return t?A.getDirection(t):"sendrecv"},A.getKind=function(e){return A.splitLines(e)[0].split(" ")[0].substring(2)},A.isRejected=function(e){return e.split(" ",2)[1]==="0"},A.parseMLine=function(e){const n=A.splitLines(e)[0].substring(2).split(" ");return{kind:n[0],port:parseInt(n[1],10),protocol:n[2],fmt:n.slice(3).join(" ")}},A.parseOLine=function(e){const n=A.matchPrefix(e,"o=")[0].substring(2).split(" ");return{username:n[0],sessionId:n[1],sessionVersion:parseInt(n[2],10),netType:n[3],addressType:n[4],address:n[5]}},A.isValidSDP=function(e){if(typeof e!="string"||e.length===0)return!1;const t=A.splitLines(e);for(let n=0;n<t.length;n++)if(t[n].length<2||t[n].charAt(1)!=="=")return!1;return!0},r.exports=A}(
|
|
32
|
+
`},A.getDirection=function(e,t){const n=A.splitLines(e);for(let s=0;s<n.length;s++)switch(n[s]){case"a=sendrecv":case"a=sendonly":case"a=recvonly":case"a=inactive":return n[s].substring(2)}return t?A.getDirection(t):"sendrecv"},A.getKind=function(e){return A.splitLines(e)[0].split(" ")[0].substring(2)},A.isRejected=function(e){return e.split(" ",2)[1]==="0"},A.parseMLine=function(e){const n=A.splitLines(e)[0].substring(2).split(" ");return{kind:n[0],port:parseInt(n[1],10),protocol:n[2],fmt:n.slice(3).join(" ")}},A.parseOLine=function(e){const n=A.matchPrefix(e,"o=")[0].substring(2).split(" ");return{username:n[0],sessionId:n[1],sessionVersion:parseInt(n[2],10),netType:n[3],addressType:n[4],address:n[5]}},A.isValidSDP=function(e){if(typeof e!="string"||e.length===0)return!1;const t=A.splitLines(e);for(let n=0;n<t.length;n++)if(t[n].length<2||t[n].charAt(1)!=="=")return!1;return!0},r.exports=A}(Sn)),Sn.exports}var $o=ad(),mA,Z,Fr={d:(r,A)=>{for(var e in A)Fr.o(A,e)&&!Fr.o(r,e)&&Object.defineProperty(r,e,{enumerable:!0,get:A[e]})},o:(r,A)=>Object.prototype.hasOwnProperty.call(r,A)},H={};Fr.d(H,{Dz:()=>Ta,g$:()=>ta,Lt:()=>Aa,Q9:()=>ea,qf:()=>Hn,hV:()=>Pa,z$:()=>Da,J0:()=>bn,De:()=>Id,$C:()=>qA,al:()=>da,_W:()=>ua,tz:()=>ca,Nu:()=>Ma,zg:()=>Ga,vp:()=>Ia,vU:()=>U,wF:()=>ma,rv:()=>La,Nh:()=>ba,ss:()=>ka,qW:()=>Ea,QL:()=>Ua,cf:()=>_a,eM:()=>va,Yd:()=>h,iM:()=>Zo,qy:()=>LA,ce:()=>pd,sK:()=>M,Ok:()=>V,q5:()=>Ra,g:()=>Au,xl:()=>pa,I:()=>Ca,bx:()=>Ln,dD:()=>Sa,Ib:()=>Oe,Az:()=>z,Iw:()=>kA,qY:()=>Tn,db:()=>jo,mR:()=>We,Tn:()=>In,rV:()=>Fa,gh:()=>ga,Mi:()=>Ba,j:()=>fa,YB:()=>wa,i5:()=>Qa,x_:()=>ZA,Am:()=>Pn,eR:()=>ra,r8:()=>ha,u3:()=>Na,vd:()=>sa,iV:()=>oa,jZ:()=>ia,SW:()=>la,ZH:()=>aa,Ni:()=>Wa,lh:()=>na,bq:()=>qo,$f:()=>za,eu:()=>ya,Ax:()=>Qd,Mc:()=>Fd});let h=class{static GetStackTrace(){const A=new Error;let e="No Stack Available for this browser";return A.stack&&(e=A.stack.toString().replace(/Error/g,"")),e}static SetLoggerVerbosity(A){this.verboseLogLevel!=null&&(this.verboseLogLevel=A)}static Log(A,e,t){if(t>this.verboseLogLevel)return;const n=`Level: Log
|
|
33
33
|
Msg: ${e}
|
|
34
34
|
Caller: ${A}`;console.log(n)}static Info(A,e,t){if(t>this.verboseLogLevel)return;const n=`Level: Info
|
|
35
35
|
Msg: ${e}`;console.info(n)}static Error(A,e){const t=`Level: Error
|
|
@@ -38,17 +38,17 @@ Caller: ${A}`;console.error(t)}static Warning(A,e){const t=`Level: Warning
|
|
|
38
38
|
Caller: ${A}
|
|
39
39
|
Msg: ${e}`;console.warn(t)}};h.verboseLogLevel=5,function(r){r.LIST_STREAMERS="listStreamers",r.SUBSCRIBE="subscribe",r.UNSUBSCRIBE="unsubscribe",r.ICE_CANDIDATE="iceCandidate",r.OFFER="offer",r.ANSWER="answer",r.DATACHANNELREQUEST="dataChannelRequest",r.SFURECVDATACHANNELREADY="peerDataChannelsReady",r.PONG="pong"}(mA||(mA={}));class LA{payload(){return h.Log(h.GetStackTrace(),`Sending =>
|
|
40
40
|
`+JSON.stringify(this,void 0,4),6),JSON.stringify(this)}}let ld=class extends LA{constructor(){super(),this.type=mA.LIST_STREAMERS}};class cd extends LA{constructor(A){super(),this.type=mA.SUBSCRIBE,this.streamerId=A}}class dd extends LA{constructor(){super(),this.type=mA.UNSUBSCRIBE}}class ud extends LA{constructor(A){super(),this.type=mA.PONG,this.time=A}}class hd extends LA{constructor(A){super(),this.type=mA.OFFER,A&&(this.type=A.type,this.sdp=A.sdp)}}class gd extends LA{constructor(A){super(),this.type=mA.ANSWER,A&&(this.type=A.type,this.sdp=A.sdp)}}let Bd=class extends LA{constructor(){super(),this.type=mA.DATACHANNELREQUEST}};class fd extends LA{constructor(){super(),this.type=mA.SFURECVDATACHANNELREADY}}class wd{constructor(A){this.type=mA.ICE_CANDIDATE,this.candidate=A}payload(){return h.Log(h.GetStackTrace(),`Sending =>
|
|
41
|
-
`+JSON.stringify(this,void 0,4),6),JSON.stringify(this)}}(function(r){r.CONFIG="config",r.STREAMER_LIST="streamerList",r.PLAYER_COUNT="playerCount",r.OFFER="offer",r.ANSWER="answer",r.ICE_CANDIDATE="iceCandidate",r.PEER_DATA_CHANNELS="peerDataChannels",r.PING="ping",r.WARNING="warning"})(Z||(Z={}));class Zo{}class pd extends Zo{}class
|
|
42
|
-
`+JSON.stringify(JSON.parse(A.data),void 0,4),6),this.signallingProtocol.handleMessage(e.type,A.data)}handleOnOpen(A){h.Log(h.GetStackTrace(),"Connected to the signalling server via WebSocket",6),this.onOpen.dispatchEvent(new Event("open"))}handleOnError(){h.Error(h.GetStackTrace(),"WebSocket error")}handleOnClose(A){this.onWebSocketOncloseOverlayMessage(A),h.Log(h.GetStackTrace(),"Disconnected to the signalling server via WebSocket: "+JSON.stringify(A.code)+" - "+A.reason),this.onClose.dispatchEvent(new Event("close"))}requestStreamerList(){const A=new ld;this.webSocket.send(A.payload())}sendSubscribe(A){const e=new cd(A);this.webSocket.send(e.payload())}sendUnsubscribe(){const A=new dd;this.webSocket.send(A.payload())}sendWebRtcOffer(A){const e=new hd(A);this.webSocket.send(e.payload())}sendWebRtcAnswer(A){const e=new gd(A);this.webSocket.send(e.payload())}sendWebRtcDatachannelRequest(){const A=new Bd;this.webSocket.send(A.payload())}sendSFURecvDataChannelReady(){const A=new fd;this.webSocket.send(A.payload())}sendIceCandidate(A){if(h.Log(h.GetStackTrace(),"Sending Ice Candidate"),this.webSocket&&this.webSocket.readyState===this.WS_OPEN_STATE){const e=new wd(A);this.webSocket.send(e.payload())}}close(){var A;(A=this.webSocket)===null||A===void 0||A.close()}onWebSocketOncloseOverlayMessage(A){}onConfig(A){}onStreamerList(A){}onIceCandidate(A){}onWebRtcAnswer(A){}onWebRtcOffer(A){}onWebRtcPeerDataChannels(A){}onPlayerCount(A){}},Cd=class{constructor(A){this.videoElementProvider=A,this.audioElement=document.createElement("Audio"),this.videoElementProvider.setAudioElement(this.audioElement)}handleOnTrack(A){if(h.Log(h.GetStackTrace(),"handleOnTrack "+JSON.stringify(A.streams),6),A.track.id=="probator")return;const e=this.videoElementProvider.getVideoElement();if(A.track&&h.Log(h.GetStackTrace(),"Got track - "+A.track.kind+" id="+A.track.id+" readyState="+A.track.readyState,6),A.track.kind!="audio")return A.track.kind=="video"&&e.srcObject!==A.streams[0]?(e.srcObject=A.streams[0],void h.Log(h.GetStackTrace(),"Set video source from video track ontrack.")):void 0;this.CreateAudioTrack(A.streams[0])}CreateAudioTrack(A){const e=this.videoElementProvider.getVideoElement();e.srcObject!=A&&e.srcObject&&e.srcObject!==A&&(this.audioElement.srcObject=A,h.Log(h.GetStackTrace(),"Created new audio element to play separate audio stream."))}},vd=class{constructor(A){this.freezeFrameHeight=0,this.freezeFrameWidth=0,this.rootDiv=A,this.rootElement=document.createElement("div"),this.rootElement.id="freezeFrame",this.rootElement.style.display="none",this.rootElement.style.pointerEvents="none",this.rootElement.style.position="absolute",this.rootElement.style.zIndex="20",this.imageElement=document.createElement("img"),this.imageElement.style.position="absolute",this.rootElement.appendChild(this.imageElement),this.rootDiv.appendChild(this.rootElement)}setElementForShow(){this.rootElement.style.display="block"}setElementForHide(){this.rootElement.style.display="none"}updateImageElementSource(A){const e=btoa(A.reduce((t,n)=>t+String.fromCharCode(n),""));this.imageElement.src="data:image/jpeg;base64,"+e}setDimensionsFromElementAndResize(){this.freezeFrameHeight=this.imageElement.naturalHeight,this.freezeFrameWidth=this.imageElement.naturalWidth,this.resize()}resize(){if(this.freezeFrameWidth!==0&&this.freezeFrameHeight!==0){let A=0,e=0,t=0,n=0;const s=this.rootDiv.clientWidth/this.rootDiv.clientHeight,i=this.freezeFrameWidth/this.freezeFrameHeight;s<i?(A=this.rootDiv.clientWidth,e=Math.floor(this.rootDiv.clientWidth/i),t=Math.floor(.5*(this.rootDiv.clientHeight-e)),n=0):(A=Math.floor(this.rootDiv.clientHeight*i),e=this.rootDiv.clientHeight,t=0,n=Math.floor(.5*(this.rootDiv.clientWidth-A))),this.rootElement.style.width=this.rootDiv.offsetWidth+"px",this.rootElement.style.height=this.rootDiv.offsetHeight+"px",this.rootElement.style.left="0px",this.rootElement.style.top="0px",this.imageElement.style.width=A+"px",this.imageElement.style.height=e+"px",this.imageElement.style.left=n+"px",this.imageElement.style.top=t+"px"}}};class md{constructor(A){this.receiving=!1,this.size=0,this.jpeg=void 0,this.valid=!1,this.freezeFrameDelay=50,this.freezeFrame=new vd(A)}showFreezeFrame(){this.valid&&this.freezeFrame.setElementForShow()}hideFreezeFrame(){this.valid=!1,this.freezeFrame.setElementForHide()}updateFreezeFrameAndShow(A,e){this.freezeFrame.updateImageElementSource(A),this.freezeFrame.imageElement.onload=()=>{this.freezeFrame.setDimensionsFromElementAndResize(),e()}}processFreezeFrameMessage(A,e){this.receiving||(this.receiving=!0,this.valid=!1,this.size=0,this.jpeg=void 0),this.size=new DataView(A.slice(1,5).buffer).getInt32(0,!0);const t=A.slice(5);if(this.jpeg){const n=new Uint8Array(this.jpeg.length+t.length);n.set(this.jpeg,0),n.set(t,this.jpeg.length),this.jpeg=n}else this.jpeg=t,this.receiving=!0,h.Log(h.GetStackTrace(),`received first chunk of freeze frame: ${this.jpeg.length}/${this.size}`,6);this.jpeg.length===this.size?(this.receiving=!1,this.valid=!0,h.Log(h.GetStackTrace(),`received complete freeze frame ${this.size}`,6),this.updateFreezeFrameAndShow(this.jpeg,e)):this.jpeg.length>this.size&&(h.Error(h.GetStackTrace(),`received bigger freeze frame than advertised: ${this.jpeg.length}/${this.size}`),this.jpeg=void 0,this.receiving=!1)}}class Oe{constructor(A,e,t,n,s=()=>{}){this.onChange=s,this.onChangeEmit=()=>{},this.id=A,this.description=t,this.label=e,this.value=n}set label(A){this._label=A,this.onChangeEmit(this._value)}get label(){return this._label}get value(){return this._value}set value(A){this._value=A,this.onChange(this._value,this),this.onChangeEmit(this._value)}}class z extends Oe{constructor(A,e,t,n,s,i=()=>{}){super(A,e,t,n,i);const o=new URLSearchParams(window.location.search);if(s&&o.has(this.id)){const a=this.getUrlParamFlag();this.flag=a}else this.flag=n;this.useUrlParams=s}getUrlParamFlag(){const A=new URLSearchParams(window.location.search);return!!A.has(this.id)&&A.get(this.id)!=="false"&&A.get(this.id)!=="False"}updateURLParams(){if(this.useUrlParams){const A=new URLSearchParams(window.location.search);this.flag===!0?A.set(this.id,"true"):A.set(this.id,"false"),window.history.replaceState({},"",A.toString()!==""?`${location.pathname}?${A}`:`${location.pathname}`)}}enable(){this.flag=!0}get flag(){return!!this.value}set flag(A){this.value=A}}class kA extends Oe{constructor(A,e,t,n,s,i,o,a=()=>{}){super(A,e,t,i,a),this._min=n,this._max=s;const l=new URLSearchParams(window.location.search);if(o&&l.has(this.id)){const c=Number.parseInt(l.get(this.id));this.number=Number.isNaN(c)?i:c}else this.number=i;this.useUrlParams=o}updateURLParams(){if(this.useUrlParams){const A=new URLSearchParams(window.location.search);A.set(this.id,this.number.toString()),window.history.replaceState({},"",A.toString()!==""?`${location.pathname}?${A}`:`${location.pathname}`)}}set number(A){this.value=this.clamp(A)}get number(){return this.value}clamp(A){return this._min==null&&this._max==null?A:this._min==null?Math.min(this._max,A):this._max==null?Math.max(this._min,A):Math.max(Math.min(this._max,A),this._min)}get min(){return this._min}get max(){return this._max}addOnChangedListener(A){this.onChange=A}}class jo extends Oe{constructor(A,e,t,n,s,i=()=>{}){super(A,e,t,n,i);const o=new URLSearchParams(window.location.search);if(s&&o.has(this.id)){const a=this.getUrlParamText();this.text=a}else this.text=n;this.useUrlParams=s}getUrlParamText(){var A;const e=new URLSearchParams(window.location.search);return e.has(this.id)&&(A=e.get(this.id))!==null&&A!==void 0?A:""}updateURLParams(){if(this.useUrlParams){const A=new URLSearchParams(window.location.search);A.set(this.id,this.text),window.history.replaceState({},"",A.toString()!==""?`${location.pathname}?${A}`:`${location.pathname}`)}}get text(){return this.value}set text(A){this.value=A}}class In extends Oe{constructor(A,e,t,n,s,i,o=()=>{}){super(A,e,t,[n,n],o),this.options=s;const a=new URLSearchParams(window.location.search),l=i&&a.has(this.id)?this.getUrlParamText():n;this.selected=l,this.useUrlParams=i}getUrlParamText(){var A;const e=new URLSearchParams(window.location.search);return e.has(this.id)&&(A=e.get(this.id))!==null&&A!==void 0?A:""}updateURLParams(){if(this.useUrlParams){const A=new URLSearchParams(window.location.search);A.set(this.id,this.selected),window.history.replaceState({},"",A.toString()!==""?`${location.pathname}?${A}`:`${location.pathname}`)}}addOnChangedListener(A){this.onChange=A}get options(){return this._options}set options(A){this._options=A,this.onChangeEmit(this.selected)}get selected(){return this.value}set selected(A){let e=this.options.filter(t=>t.indexOf(A)!==-1);e.length?this.value=e[0]:(e=this.options.filter(t=>t.indexOf(A.split(" ")[0])!==-1),e.length&&(this.value=e[0]))}}class Aa extends Event{constructor(A){super("afkWarningActivate"),this.data=A}}let Tn=class extends Event{constructor(A){super("afkWarningUpdate"),this.data=A}};class ea extends Event{constructor(){super("afkWarningDeactivate")}}let ta=class extends Event{constructor(){super("afkTimedOut")}},ra=class extends Event{constructor(A){super("videoEncoderAvgQP"),this.data=A}};class na extends Event{constructor(){super("webRtcSdp")}}class sa extends Event{constructor(){super("webRtcAutoConnect")}}let ia=class extends Event{constructor(){super("webRtcConnecting")}};class oa extends Event{constructor(){super("webRtcConnected")}}class aa extends Event{constructor(){super("webRtcFailed")}}let la=class extends Event{constructor(A){super("webRtcDisconnected"),this.data=A}};class ca extends Event{constructor(A){super("dataChannelOpen"),this.data=A}}class da extends Event{constructor(A){super("dataChannelClose"),this.data=A}}class ua extends Event{constructor(A){super("dataChannelError"),this.data=A}}class ha extends Event{constructor(){super("videoInitialized")}}let ga=class extends Event{constructor(){super("streamLoading")}};class Ba extends Event{constructor(){super("streamConnect")}}class fa extends Event{constructor(){super("streamDisconnect")}}class wa extends Event{constructor(){super("streamReconnect")}}class pa extends Event{constructor(A){super("playStreamError"),this.data=A}}class Ca extends Event{constructor(){super("playStream")}}class Hn extends Event{constructor(A){super("playStreamRejected"),this.data=A}}class va extends Event{constructor(A){super("loadFreezeFrame"),this.data=A}}class ma extends Event{constructor(){super("hideFreezeFrame")}}class Fa extends Event{constructor(A){super("statsReceived"),this.data=A}}let Qa=class extends Event{constructor(A){super("streamerListMessage"),this.data=A}};class Ua extends Event{constructor(A){super("latencyTestResult"),this.data=A}}class Ea extends Event{constructor(A){super("initialSettings"),this.data=A}}class We extends Event{constructor(A){super("settingsChanged"),this.data=A}}class Fd extends Event{constructor(){super("xrSessionStarted")}}class Qd extends Event{constructor(){super("xrSessionEnded")}}class ya extends Event{constructor(A){super("xrFrame"),this.data=A}}class Sa extends Event{constructor(A){super("playerCount"),this.data=A}}class Ia extends EventTarget{dispatchEvent(A){return super.dispatchEvent(A)}addEventListener(A,e){super.addEventListener(A,e)}removeEventListener(A,e){super.removeEventListener(A,e)}}class U{}U.AutoConnect="AutoConnect",U.AutoPlayVideo="AutoPlayVideo",U.AFKDetection="TimeoutIfIdle",U.BrowserSendOffer="OfferToReceive",U.HoveringMouseMode="HoveringMouse",U.ForceMonoAudio="ForceMonoAudio",U.ForceTURN="ForceTURN",U.FakeMouseWithTouches="FakeMouseWithTouches",U.IsQualityController="ControlsQuality",U.MatchViewportResolution="MatchViewportRes",U.PreferSFU="preferSFU",U.StartVideoMuted="StartVideoMuted",U.SuppressBrowserKeys="SuppressBrowserKeys",U.UseMic="UseMic",U.KeyboardInput="KeyboardInput",U.MouseInput="MouseInput",U.TouchInput="TouchInput",U.GamepadInput="GamepadInput",U.XRControllerInput="XRControllerInput";const Ud=r=>Object.getOwnPropertyNames(U).some(A=>U[A]===r);class M{}M.AFKTimeoutSecs="AFKTimeout",M.MinQP="MinQP",M.MaxQP="MaxQP",M.WebRTCFPS="WebRTCFPS",M.WebRTCMinBitrate="WebRTCMinBitrate",M.WebRTCMaxBitrate="WebRTCMaxBitrate",M.MaxReconnectAttempts="MaxReconnectAttempts";const Ed=r=>Object.getOwnPropertyNames(M).some(A=>M[A]===r);class ZA{}ZA.SignallingServerUrl="ss";const yd=r=>Object.getOwnPropertyNames(ZA).some(A=>ZA[A]===r);class V{}V.PreferredCodec="PreferredCodec",V.StreamerId="StreamerId";const Sd=r=>Object.getOwnPropertyNames(V).some(A=>V[A]===r);class Id{constructor(A={}){this.flags=new Map,this.numericParameters=new Map,this.textParameters=new Map,this.optionParameters=new Map;const{initialSettings:e,useUrlParams:t}=A;this._useUrlParams=!!t,this.populateDefaultSettings(this._useUrlParams),e&&this.setSettings(e)}get useUrlParams(){return this._useUrlParams}populateDefaultSettings(A){this.textParameters.set(ZA.SignallingServerUrl,new jo(ZA.SignallingServerUrl,"Signalling url","Url of the signalling server",(location.protocol==="https:"?"wss://":"ws://")+window.location.hostname+(window.location.port==="80"||window.location.port===""?"":`:${window.location.port}`),A)),this.optionParameters.set(V.StreamerId,new In(V.StreamerId,"Streamer ID","The ID of the streamer to stream.","",[],A)),this.optionParameters.set(V.PreferredCodec,new In(V.PreferredCodec,"Preferred Codec","The preferred codec to be used during codec negotiation","H264 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f",function(){const e=[];if(!RTCRtpReceiver.getCapabilities)return e.push("Only available on Chrome"),e;const t=/(VP\d|H26\d|AV1).*/;return RTCRtpReceiver.getCapabilities("video").codecs.forEach(n=>{const s=n.mimeType.split("/")[1]+" "+(n.sdpFmtpLine||"");t.exec(s)!==null&&e.push(s)}),e}(),A)),this.flags.set(U.AutoConnect,new z(U.AutoConnect,"Auto connect to stream","Whether we should attempt to auto connect to the signalling server or show a click to start prompt.",!1,A)),this.flags.set(U.AutoPlayVideo,new z(U.AutoPlayVideo,"Auto play video","When video is ready automatically start playing it as opposed to showing a play button.",!0,A)),this.flags.set(U.BrowserSendOffer,new z(U.BrowserSendOffer,"Browser send offer","Browser will initiate the WebRTC handshake by sending the offer to the streamer",!1,A)),this.flags.set(U.UseMic,new z(U.UseMic,"Use microphone","Make browser request microphone access and open an input audio track.",!1,A)),this.flags.set(U.StartVideoMuted,new z(U.StartVideoMuted,"Start video muted","Video will start muted if true.",!1,A)),this.flags.set(U.SuppressBrowserKeys,new z(U.SuppressBrowserKeys,"Suppress browser keys","Suppress certain browser keys that we use in UE, for example F5 to show shader complexity instead of refresh the page.",!0,A)),this.flags.set(U.PreferSFU,new z(U.PreferSFU,"Prefer SFU","Try to connect to the SFU instead of P2P.",!1,A)),this.flags.set(U.IsQualityController,new z(U.IsQualityController,"Is quality controller?","True if this peer controls stream quality",!0,A)),this.flags.set(U.ForceMonoAudio,new z(U.ForceMonoAudio,"Force mono audio","Force browser to request mono audio in the SDP",!1,A)),this.flags.set(U.ForceTURN,new z(U.ForceTURN,"Force TURN","Only generate TURN/Relayed ICE candidates.",!1,A)),this.flags.set(U.AFKDetection,new z(U.AFKDetection,"AFK if idle","Timeout the experience if user is AFK for a period.",!1,A)),this.flags.set(U.MatchViewportResolution,new z(U.MatchViewportResolution,"Match viewport resolution","Pixel Streaming will be instructed to dynamically resize the video stream to match the size of the video element.",!1,A)),this.flags.set(U.HoveringMouseMode,new z(U.HoveringMouseMode,"Control Scheme: Locked Mouse","Either locked mouse, where the pointer is consumed by the video and locked to it, or hovering mouse, where the mouse is not consumed.",!1,A,(e,t)=>{t.label=`Control Scheme: ${e?"Hovering":"Locked"} Mouse`})),this.flags.set(U.FakeMouseWithTouches,new z(U.FakeMouseWithTouches,"Fake mouse with touches","A single finger touch is converted into a mouse event. This allows a non-touch application to be controlled partially via a touch device.",!1,A)),this.flags.set(U.KeyboardInput,new z(U.KeyboardInput,"Keyboard input","If enabled, send keyboard events to streamer",!0,A)),this.flags.set(U.MouseInput,new z(U.MouseInput,"Mouse input","If enabled, send mouse events to streamer",!0,A)),this.flags.set(U.TouchInput,new z(U.TouchInput,"Touch input","If enabled, send touch events to streamer",!0,A)),this.flags.set(U.GamepadInput,new z(U.GamepadInput,"Gamepad input","If enabled, send gamepad events to streamer",!0,A)),this.flags.set(U.XRControllerInput,new z(U.XRControllerInput,"XR controller input","If enabled, send XR controller events to streamer",!0,A)),this.numericParameters.set(M.AFKTimeoutSecs,new kA(M.AFKTimeoutSecs,"AFK timeout","The time (in seconds) it takes for the application to time out if AFK timeout is enabled.",0,null,120,A)),this.numericParameters.set(M.MaxReconnectAttempts,new kA(M.MaxReconnectAttempts,"Max Reconnects","Maximum number of reconnects the application will attempt when a streamer disconnects.",0,999,3,A)),this.numericParameters.set(M.MinQP,new kA(M.MinQP,"Min QP","The lower bound for the quantization parameter (QP) of the encoder. 0 = Best quality, 51 = worst quality.",0,51,0,A)),this.numericParameters.set(M.MaxQP,new kA(M.MaxQP,"Max QP","The upper bound for the quantization parameter (QP) of the encoder. 0 = Best quality, 51 = worst quality.",0,51,51,A)),this.numericParameters.set(M.WebRTCFPS,new kA(M.WebRTCFPS,"Max FPS","The maximum FPS that WebRTC will try to transmit frames at.",1,999,60,A)),this.numericParameters.set(M.WebRTCMinBitrate,new kA(M.WebRTCMinBitrate,"Min Bitrate (kbps)","The minimum bitrate that WebRTC should use.",0,5e5,0,A)),this.numericParameters.set(M.WebRTCMaxBitrate,new kA(M.WebRTCMaxBitrate,"Max Bitrate (kbps)","The maximum bitrate that WebRTC should use.",0,5e5,0,A))}_addOnNumericSettingChangedListener(A,e){this.numericParameters.has(A)&&this.numericParameters.get(A).addOnChangedListener(e)}_addOnOptionSettingChangedListener(A,e){this.optionParameters.has(A)&&this.optionParameters.get(A).addOnChangedListener(e)}getNumericSettingValue(A){if(this.numericParameters.has(A))return this.numericParameters.get(A).number;throw new Error(`There is no numeric setting with the id of ${A}`)}getTextSettingValue(A){if(this.textParameters.has(A))return this.textParameters.get(A).value;throw new Error(`There is no numeric setting with the id of ${A}`)}setNumericSetting(A,e){if(!this.numericParameters.has(A))throw new Error(`There is no numeric setting with the id of ${A}`);this.numericParameters.get(A).number=e}_addOnSettingChangedListener(A,e){this.flags.has(A)&&(this.flags.get(A).onChange=e)}_addOnTextSettingChangedListener(A,e){this.textParameters.has(A)&&(this.textParameters.get(A).onChange=e)}getSettingOption(A){return this.optionParameters.get(A)}isFlagEnabled(A){return this.flags.get(A).flag}setFlagEnabled(A,e){this.flags.has(A)?this.flags.get(A).flag=e:h.Warning(h.GetStackTrace(),`Cannot toggle flag called ${A} - it does not exist in the Config.flags map.`)}setTextSetting(A,e){this.textParameters.has(A)?this.textParameters.get(A).text=e:h.Warning(h.GetStackTrace(),`Cannot set text setting called ${A} - it does not exist in the Config.textParameters map.`)}setOptionSettingOptions(A,e){this.optionParameters.has(A)?this.optionParameters.get(A).options=e:h.Warning(h.GetStackTrace(),`Cannot set text setting called ${A} - it does not exist in the Config.optionParameters map.`)}setOptionSettingValue(A,e){this.optionParameters.has(A)?this.optionParameters.get(A).selected=e:h.Warning(h.GetStackTrace(),`Cannot set text setting called ${A} - it does not exist in the Config.enumParameters map.`)}setFlagLabel(A,e){this.flags.has(A)?this.flags.get(A).label=e:h.Warning(h.GetStackTrace(),`Cannot set label for flag called ${A} - it does not exist in the Config.flags map.`)}setSettings(A){for(const e of Object.keys(A))Ud(e)?this.setFlagEnabled(e,A[e]):Ed(e)?this.setNumericSetting(e,A[e]):yd(e)?this.setTextSetting(e,A[e]):Sd(e)&&this.setOptionSettingValue(e,A[e])}getSettings(){const A={};for(const[e,t]of this.flags.entries())A[e]=t.flag;for(const[e,t]of this.numericParameters.entries())A[e]=t.number;for(const[e,t]of this.textParameters.entries())A[e]=t.text;for(const[e,t]of this.optionParameters.entries())A[e]=t.selected;return A}getFlags(){return Array.from(this.flags.values())}getTextSettings(){return Array.from(this.textParameters.values())}getNumericSettings(){return Array.from(this.numericParameters.values())}getOptionSettings(){return Array.from(this.optionParameters.values())}_registerOnChangeEvents(A){for(const e of this.flags.keys()){const t=this.flags.get(e);t&&(t.onChangeEmit=n=>A.dispatchEvent(new We({id:t.id,type:"flag",value:n,target:t})))}for(const e of this.numericParameters.keys()){const t=this.numericParameters.get(e);t&&(t.onChangeEmit=n=>A.dispatchEvent(new We({id:t.id,type:"number",value:n,target:t})))}for(const e of this.textParameters.keys()){const t=this.textParameters.get(e);t&&(t.onChangeEmit=n=>A.dispatchEvent(new We({id:t.id,type:"text",value:n,target:t})))}for(const e of this.optionParameters.keys()){const t=this.optionParameters.get(e);t&&(t.onChangeEmit=n=>A.dispatchEvent(new We({id:t.id,type:"option",value:n,target:t})))}}}var qA;(function(r){r[r.LockedMouse=0]="LockedMouse",r[r.HoveringMouse=1]="HoveringMouse"})(qA||(qA={}));class Ta{constructor(A,e,t){this.closeTimeout=10,this.active=!1,this.countdownActive=!1,this.warnTimer=void 0,this.countDown=0,this.countDownTimer=void 0,this.config=A,this.pixelStreaming=e,this.onDismissAfk=t,this.onAFKTimedOutCallback=()=>{console.log("AFK timed out, did you want to override this callback?")}}onAfkClick(){clearInterval(this.countDownTimer),(this.active||this.countdownActive)&&(this.startAfkWarningTimer(),this.pixelStreaming.dispatchEvent(new ea))}startAfkWarningTimer(){this.config.getNumericSettingValue(M.AFKTimeoutSecs)>0&&this.config.isFlagEnabled(U.AFKDetection)?this.active=!0:this.active=!1,this.resetAfkWarningTimer()}stopAfkWarningTimer(){this.active=!1,this.countdownActive=!1,clearTimeout(this.warnTimer),clearInterval(this.countDownTimer)}pauseAfkWarningTimer(){this.active=!1}resetAfkWarningTimer(){this.active&&this.config.isFlagEnabled(U.AFKDetection)&&(clearTimeout(this.warnTimer),this.warnTimer=setTimeout(()=>this.activateAfkEvent(),1e3*this.config.getNumericSettingValue(M.AFKTimeoutSecs)))}activateAfkEvent(){this.pauseAfkWarningTimer(),this.pixelStreaming.dispatchEvent(new Aa({countDown:this.countDown,dismissAfk:this.onDismissAfk})),this.countDown=this.closeTimeout,this.countdownActive=!0,this.pixelStreaming.dispatchEvent(new Tn({countDown:this.countDown})),this.config.isFlagEnabled(U.HoveringMouseMode)||document.exitPointerLock&&document.exitPointerLock(),this.countDownTimer=setInterval(()=>{this.countDown--,this.countDown==0?(this.pixelStreaming.dispatchEvent(new ta),this.onAFKTimedOutCallback(),h.Log(h.GetStackTrace(),"You have been disconnected due to inactivity"),this.stopAfkWarningTimer()):this.pixelStreaming.dispatchEvent(new Tn({countDown:this.countDown}))},1e3)}}class Ha{constructor(){this.isReceivingFreezeFrame=!1}getDataChannelInstance(){return this}createDataChannel(A,e,t){this.peerConnection=A,this.label=e,this.datachannelOptions=t,t==null&&(this.datachannelOptions={},this.datachannelOptions.ordered=!0),this.dataChannel=this.peerConnection.createDataChannel(this.label,this.datachannelOptions),this.setupDataChannel()}setupDataChannel(){this.dataChannel.binaryType="arraybuffer",this.dataChannel.onopen=A=>this.handleOnOpen(A),this.dataChannel.onclose=A=>this.handleOnClose(A),this.dataChannel.onmessage=A=>this.handleOnMessage(A),this.dataChannel.onerror=A=>this.handleOnError(A)}handleOnOpen(A){var e;h.Log(h.GetStackTrace(),`Data Channel (${this.label}) opened.`,7),this.onOpen((e=this.dataChannel)===null||e===void 0?void 0:e.label,A)}handleOnClose(A){var e;h.Log(h.GetStackTrace(),`Data Channel (${this.label}) closed.`,7),this.onClose((e=this.dataChannel)===null||e===void 0?void 0:e.label,A)}handleOnMessage(A){h.Log(h.GetStackTrace(),`Data Channel (${this.label}) message: ${A}`,8)}handleOnError(A){var e;h.Log(h.GetStackTrace(),`Data Channel (${this.label}) error: ${A}`,7),this.onError((e=this.dataChannel)===null||e===void 0?void 0:e.label,A)}onOpen(A,e){}onClose(A,e){}onError(A,e){}}class La{}class ba{}class Ma{}class Ln{}class Da{}class Ra{}class Td{}class Hd{}class Pa{constructor(){this.inboundVideoStats=new ba,this.inboundAudioStats=new La,this.candidatePair=new Da,this.DataChannelStats=new Ma,this.outBoundVideoStats=new Ra,this.sessionStats=new Td,this.streamStats=new Hd,this.codecs=new Map}processStats(A){this.localCandidates=new Array,this.remoteCandidates=new Array,A.forEach(e=>{switch(e.type){case"candidate-pair":this.handleCandidatePair(e);break;case"certificate":case"media-source":case"media-playout":case"outbound-rtp":case"peer-connection":case"remote-inbound-rtp":case"transport":break;case"codec":this.handleCodec(e);break;case"data-channel":this.handleDataChannel(e);break;case"inbound-rtp":this.handleInBoundRTP(e);break;case"local-candidate":this.handleLocalCandidate(e);break;case"remote-candidate":this.handleRemoteCandidate(e);break;case"remote-outbound-rtp":this.handleRemoteOutBound(e);break;case"track":this.handleTrack(e);break;case"stream":this.handleStream(e);break;default:h.Error(h.GetStackTrace(),"unhandled Stat Type"),h.Log(h.GetStackTrace(),e)}})}handleStream(A){this.streamStats=A}handleCandidatePair(A){this.candidatePair.bytesReceived=A.bytesReceived,this.candidatePair.bytesSent=A.bytesSent,this.candidatePair.localCandidateId=A.localCandidateId,this.candidatePair.remoteCandidateId=A.remoteCandidateId,this.candidatePair.nominated=A.nominated,this.candidatePair.readable=A.readable,this.candidatePair.selected=A.selected,this.candidatePair.writable=A.writable,this.candidatePair.state=A.state,this.candidatePair.currentRoundTripTime=A.currentRoundTripTime}handleDataChannel(A){this.DataChannelStats.bytesReceived=A.bytesReceived,this.DataChannelStats.bytesSent=A.bytesSent,this.DataChannelStats.dataChannelIdentifier=A.dataChannelIdentifier,this.DataChannelStats.id=A.id,this.DataChannelStats.label=A.label,this.DataChannelStats.messagesReceived=A.messagesReceived,this.DataChannelStats.messagesSent=A.messagesSent,this.DataChannelStats.protocol=A.protocol,this.DataChannelStats.state=A.state,this.DataChannelStats.timestamp=A.timestamp}handleLocalCandidate(A){const e=new Ln;e.label="local-candidate",e.address=A.address,e.port=A.port,e.protocol=A.protocol,e.candidateType=A.candidateType,e.id=A.id,this.localCandidates.push(e)}handleRemoteCandidate(A){const e=new Ln;e.label="local-candidate",e.address=A.address,e.port=A.port,e.protocol=A.protocol,e.id=A.id,e.candidateType=A.candidateType,this.remoteCandidates.push(e)}handleInBoundRTP(A){switch(A.kind){case"video":this.inboundVideoStats=A,this.lastVideoStats!=null&&(this.inboundVideoStats.bitrate=8*(this.inboundVideoStats.bytesReceived-this.lastVideoStats.bytesReceived)/(this.inboundVideoStats.timestamp-this.lastVideoStats.timestamp),this.inboundVideoStats.bitrate=Math.floor(this.inboundVideoStats.bitrate)),this.lastVideoStats=Object.assign({},this.inboundVideoStats);break;case"audio":this.inboundAudioStats=A,this.lastAudioStats!=null&&(this.inboundAudioStats.bitrate=8*(this.inboundAudioStats.bytesReceived-this.lastAudioStats.bytesReceived)/(this.inboundAudioStats.timestamp-this.lastAudioStats.timestamp),this.inboundAudioStats.bitrate=Math.floor(this.inboundAudioStats.bitrate)),this.lastAudioStats=Object.assign({},this.inboundAudioStats);break;default:h.Log(h.GetStackTrace(),"Kind is not handled")}}handleRemoteOutBound(A){A.kind==="video"&&(this.outBoundVideoStats.bytesSent=A.bytesSent,this.outBoundVideoStats.id=A.id,this.outBoundVideoStats.localId=A.localId,this.outBoundVideoStats.packetsSent=A.packetsSent,this.outBoundVideoStats.remoteTimestamp=A.remoteTimestamp,this.outBoundVideoStats.timestamp=A.timestamp)}handleTrack(A){A.type!=="track"||A.trackIdentifier!=="video_label"&&A.kind!=="video"||(this.inboundVideoStats.framesDropped=A.framesDropped,this.inboundVideoStats.framesReceived=A.framesReceived,this.inboundVideoStats.frameHeight=A.frameHeight,this.inboundVideoStats.frameWidth=A.frameWidth)}handleCodec(A){const e=A.id,t=`${A.mimeType.replace("video/","").replace("audio/","")}${A.sdpFmtpLine?` ${A.sdpFmtpLine}`:""}`;this.codecs.set(e,t)}handleSessionStatistics(A,e,t){const n=Date.now()-A;this.sessionStats.runTime=new Date(n).toISOString().substr(11,8).toString();const s=e===null?"Not sent yet":e?"true":"false";this.sessionStats.controlsStreamInput=s,this.sessionStats.videoEncoderAvgQP=t}isNumber(A){return typeof A=="number"&&isFinite(A)}}const Ka=(xa={parseRtpParameters:()=>$o.parseRtpParameters,splitSections:()=>$o.splitSections},bn={},Fr.d(bn,xa),bn);var xa,bn,fe,b,Mn=function(r,A,e,t){return new(e||(e=Promise))(function(n,s){function i(l){try{a(t.next(l))}catch(c){s(c)}}function o(l){try{a(t.throw(l))}catch(c){s(c)}}function a(l){var c;l.done?n(l.value):(c=l.value,c instanceof e?c:new e(function(u){u(c)})).then(i,o)}a((t=t.apply(r,[])).next())})};class Ld{constructor(A,e,t){this.config=e,this.createPeerConnection(A,t)}createPeerConnection(A,e){this.config.isFlagEnabled(U.ForceTURN)&&(A.iceTransportPolicy="relay",h.Log(h.GetStackTrace(),"Forcing TURN usage by setting ICE Transport Policy in peer connection config.")),this.peerConnection=new RTCPeerConnection(A),this.peerConnection.onsignalingstatechange=t=>this.handleSignalStateChange(t),this.peerConnection.oniceconnectionstatechange=t=>this.handleIceConnectionStateChange(t),this.peerConnection.onicegatheringstatechange=t=>this.handleIceGatheringStateChange(t),this.peerConnection.ontrack=t=>this.handleOnTrack(t),this.peerConnection.onicecandidate=t=>this.handleIceCandidate(t),this.peerConnection.ondatachannel=t=>this.handleDataChannel(t),this.aggregatedStats=new Pa,this.preferredCodec=e,this.updateCodecSelection=!0}createOffer(A,e){return Mn(this,void 0,void 0,function*(){h.Log(h.GetStackTrace(),"Create Offer",6);const t=location.hostname==="localhost"||location.hostname==="127.0.0.1",n=location.protocol==="https:";let s=e.isFlagEnabled(U.UseMic);!s||t||n||(s=!1,h.Error(h.GetStackTrace(),"Microphone access in the browser will not work if you are not on HTTPS or localhost. Disabling mic access."),h.Error(h.GetStackTrace(),"For testing you can enable HTTP microphone access Chrome by visiting chrome://flags/ and enabling 'unsafely-treat-insecure-origin-as-secure'")),this.setupTransceiversAsync(s).finally(()=>{var i;(i=this.peerConnection)===null||i===void 0||i.createOffer(A).then(o=>{var a;this.showTextOverlayConnecting(),o.sdp=this.mungeSDP(o.sdp,s),(a=this.peerConnection)===null||a===void 0||a.setLocalDescription(o),this.onSendWebRTCOffer(o)}).catch(()=>{this.showTextOverlaySetupFailure()})})})}receiveOffer(A,e){var t;return Mn(this,void 0,void 0,function*(){h.Log(h.GetStackTrace(),"Receive Offer",6),(t=this.peerConnection)===null||t===void 0||t.setRemoteDescription(A).then(()=>{const n=location.hostname==="localhost"||location.hostname==="127.0.0.1",s=location.protocol==="https:";let i=e.isFlagEnabled(U.UseMic);!i||n||s||(i=!1,h.Error(h.GetStackTrace(),"Microphone access in the browser will not work if you are not on HTTPS or localhost. Disabling mic access."),h.Error(h.GetStackTrace(),"For testing you can enable HTTP microphone access Chrome by visiting chrome://flags/ and enabling 'unsafely-treat-insecure-origin-as-secure'")),this.config.setOptionSettingOptions(V.PreferredCodec,this.fuzzyIntersectUEAndBrowserCodecs(A)),this.setupTransceiversAsync(i).finally(()=>{var o;(o=this.peerConnection)===null||o===void 0||o.createAnswer().then(a=>{var l;return a.sdp=this.mungeSDP(a.sdp,i),(l=this.peerConnection)===null||l===void 0?void 0:l.setLocalDescription(a)}).then(()=>{var a;this.onSendWebRTCAnswer((a=this.peerConnection)===null||a===void 0?void 0:a.currentLocalDescription)}).catch(()=>{h.Error(h.GetStackTrace(),"createAnswer() failed")})})})})}receiveAnswer(A){var e;(e=this.peerConnection)===null||e===void 0||e.setRemoteDescription(A),this.config.setOptionSettingOptions(V.PreferredCodec,this.fuzzyIntersectUEAndBrowserCodecs(A))}generateStats(){var A;(A=this.peerConnection)===null||A===void 0||A.getStats(null).then(e=>{this.aggregatedStats.processStats(e),this.onVideoStats(this.aggregatedStats),this.updateCodecSelection&&this.config.setOptionSettingValue(V.PreferredCodec,this.aggregatedStats.codecs.get(this.aggregatedStats.inboundVideoStats.codecId))})}close(){this.peerConnection&&(this.peerConnection.close(),this.peerConnection=null)}mungeSDP(A,e){let t=A.replace(/(a=fmtp:\d+ .*level-asymmetry-allowed=.*)\r\n/gm,`$1;x-google-start-bitrate=10000;x-google-max-bitrate=100000\r
|
|
43
|
-
`),n="maxaveragebitrate=510000;";return e&&(n+="sprop-maxcapturerate=48000;"),n+=this.config.isFlagEnabled(U.ForceMonoAudio)?"stereo=0;":"stereo=1;",n+="useinbandfec=1",t=t.replace("useinbandfec=1",n),t}handleOnIce(A){var e;h.Log(h.GetStackTrace(),"peerconnection handleOnIce",6),this.config.isFlagEnabled(U.ForceTURN)&&A.candidate.indexOf("relay")<0?h.Info(h.GetStackTrace(),`Dropping candidate because it was not TURN relay. | Type= ${A.type} | Protocol= ${A.protocol} | Address=${A.address} | Port=${A.port} |`,6):(e=this.peerConnection)===null||e===void 0||e.addIceCandidate(A)}handleSignalStateChange(A){h.Log(h.GetStackTrace(),"signaling state change: "+A,6)}handleIceConnectionStateChange(A){h.Log(h.GetStackTrace(),"ice connection state change: "+A,6),this.onIceConnectionStateChange(A)}handleIceGatheringStateChange(A){h.Log(h.GetStackTrace(),"ice gathering state change: "+JSON.stringify(A),6)}handleOnTrack(A){this.onTrack(A)}handleIceCandidate(A){this.onPeerIceCandidate(A)}handleDataChannel(A){this.onDataChannel(A)}onTrack(A){}onIceConnectionStateChange(A){}onPeerIceCandidate(A){}onDataChannel(A){}fuzzyIntersectUEAndBrowserCodecs(A){const e=new Array,t=this.parseAvailableCodecs(A),n=this.config.getSettingOption(V.PreferredCodec).options;for(const s of t)if(n.includes(s))e.push(s);else{const i=s.split(" ")[0];for(const o of n)if(o.includes(i)){e.push(o);break}}return e}setupTransceiversAsync(A){var e,t,n,s,i,o,a,l,c,u,d,B;return
|
|
41
|
+
`+JSON.stringify(this,void 0,4),6),JSON.stringify(this)}}(function(r){r.CONFIG="config",r.STREAMER_LIST="streamerList",r.PLAYER_COUNT="playerCount",r.OFFER="offer",r.ANSWER="answer",r.ICE_CANDIDATE="iceCandidate",r.PEER_DATA_CHANNELS="peerDataChannels",r.PING="ping",r.WARNING="warning"})(Z||(Z={}));class Zo{}class pd extends Zo{}class In{constructor(){this.FromUEMessageHandlers=new Map}addMessageHandler(A,e){this.FromUEMessageHandlers.set(A,e)}handleMessage(A,e){this.FromUEMessageHandlers.has(A)?this.FromUEMessageHandlers.get(A)(e):h.Error(h.GetStackTrace(),`Message type of ${A} does not have a message handler registered on the frontend - ignoring message.`)}static setupDefaultHandlers(A){A.signallingProtocol.addMessageHandler(Z.PING,e=>{const t=new ud(new Date().getTime()).payload();h.Log(h.GetStackTrace(),Z.PING+": "+e,6),A.webSocket.send(t)}),A.signallingProtocol.addMessageHandler(Z.CONFIG,e=>{h.Log(h.GetStackTrace(),Z.CONFIG,6);const t=JSON.parse(e);A.onConfig(t)}),A.signallingProtocol.addMessageHandler(Z.STREAMER_LIST,e=>{h.Log(h.GetStackTrace(),Z.STREAMER_LIST,6);const t=JSON.parse(e);A.onStreamerList(t)}),A.signallingProtocol.addMessageHandler(Z.PLAYER_COUNT,e=>{h.Log(h.GetStackTrace(),Z.PLAYER_COUNT,6);const t=JSON.parse(e);h.Log(h.GetStackTrace(),"Player Count: "+t.count,6),A.onPlayerCount(t)}),A.signallingProtocol.addMessageHandler(Z.ANSWER,e=>{h.Log(h.GetStackTrace(),Z.ANSWER,6);const t=JSON.parse(e);A.onWebRtcAnswer(t)}),A.signallingProtocol.addMessageHandler(Z.OFFER,e=>{h.Log(h.GetStackTrace(),Z.OFFER,6);const t=JSON.parse(e);A.onWebRtcOffer(t)}),A.signallingProtocol.addMessageHandler(Z.ICE_CANDIDATE,e=>{h.Log(h.GetStackTrace(),Z.ICE_CANDIDATE,6);const t=JSON.parse(e);A.onIceCandidate(t.candidate)}),A.signallingProtocol.addMessageHandler(Z.WARNING,e=>{h.Warning(h.GetStackTrace(),`Warning received: ${e}`)}),A.signallingProtocol.addMessageHandler(Z.PEER_DATA_CHANNELS,e=>{h.Log(h.GetStackTrace(),Z.PEER_DATA_CHANNELS,6);const t=JSON.parse(e);A.onWebRtcPeerDataChannels(t)})}}let qo=class{constructor(){this.WS_OPEN_STATE=1,this.onOpen=new EventTarget,this.onClose=new EventTarget,this.signallingProtocol=new In,In.setupDefaultHandlers(this)}connect(A){h.Log(h.GetStackTrace(),A,6);try{return this.webSocket=new WebSocket(A),this.webSocket.onopen=e=>this.handleOnOpen(e),this.webSocket.onerror=()=>this.handleOnError(),this.webSocket.onclose=e=>this.handleOnClose(e),this.webSocket.onmessage=e=>this.handleOnMessage(e),this.webSocket.onmessagebinary=e=>this.handleOnMessageBinary(e),!0}catch(e){return h.Error(e,e),!1}}handleOnMessageBinary(A){A&&A.data&&A.data.text().then(e=>{const t=new MessageEvent("messageFromBinary",{data:e});this.handleOnMessage(t)}).catch(e=>{h.Error(h.GetStackTrace(),`Failed to parse binary blob from websocket, reason: ${e}`)})}handleOnMessage(A){if(A.data&&A.data instanceof Blob)return void this.handleOnMessageBinary(A);const e=JSON.parse(A.data);h.Log(h.GetStackTrace(),`received =>
|
|
42
|
+
`+JSON.stringify(JSON.parse(A.data),void 0,4),6),this.signallingProtocol.handleMessage(e.type,A.data)}handleOnOpen(A){h.Log(h.GetStackTrace(),"Connected to the signalling server via WebSocket",6),this.onOpen.dispatchEvent(new Event("open"))}handleOnError(){h.Error(h.GetStackTrace(),"WebSocket error")}handleOnClose(A){this.onWebSocketOncloseOverlayMessage(A),h.Log(h.GetStackTrace(),"Disconnected to the signalling server via WebSocket: "+JSON.stringify(A.code)+" - "+A.reason),this.onClose.dispatchEvent(new Event("close"))}requestStreamerList(){const A=new ld;this.webSocket.send(A.payload())}sendSubscribe(A){const e=new cd(A);this.webSocket.send(e.payload())}sendUnsubscribe(){const A=new dd;this.webSocket.send(A.payload())}sendWebRtcOffer(A){const e=new hd(A);this.webSocket.send(e.payload())}sendWebRtcAnswer(A){const e=new gd(A);this.webSocket.send(e.payload())}sendWebRtcDatachannelRequest(){const A=new Bd;this.webSocket.send(A.payload())}sendSFURecvDataChannelReady(){const A=new fd;this.webSocket.send(A.payload())}sendIceCandidate(A){if(h.Log(h.GetStackTrace(),"Sending Ice Candidate"),this.webSocket&&this.webSocket.readyState===this.WS_OPEN_STATE){const e=new wd(A);this.webSocket.send(e.payload())}}close(){var A;(A=this.webSocket)===null||A===void 0||A.close()}onWebSocketOncloseOverlayMessage(A){}onConfig(A){}onStreamerList(A){}onIceCandidate(A){}onWebRtcAnswer(A){}onWebRtcOffer(A){}onWebRtcPeerDataChannels(A){}onPlayerCount(A){}},Cd=class{constructor(A){this.videoElementProvider=A,this.audioElement=document.createElement("Audio"),this.videoElementProvider.setAudioElement(this.audioElement)}handleOnTrack(A){if(h.Log(h.GetStackTrace(),"handleOnTrack "+JSON.stringify(A.streams),6),A.track.id=="probator")return;const e=this.videoElementProvider.getVideoElement();if(A.track&&h.Log(h.GetStackTrace(),"Got track - "+A.track.kind+" id="+A.track.id+" readyState="+A.track.readyState,6),A.track.kind!="audio")return A.track.kind=="video"&&e.srcObject!==A.streams[0]?(e.srcObject=A.streams[0],void h.Log(h.GetStackTrace(),"Set video source from video track ontrack.")):void 0;this.CreateAudioTrack(A.streams[0])}CreateAudioTrack(A){const e=this.videoElementProvider.getVideoElement();e.srcObject!=A&&e.srcObject&&e.srcObject!==A&&(this.audioElement.srcObject=A,h.Log(h.GetStackTrace(),"Created new audio element to play separate audio stream."))}},vd=class{constructor(A){this.freezeFrameHeight=0,this.freezeFrameWidth=0,this.rootDiv=A,this.rootElement=document.createElement("div"),this.rootElement.id="freezeFrame",this.rootElement.style.display="none",this.rootElement.style.pointerEvents="none",this.rootElement.style.position="absolute",this.rootElement.style.zIndex="20",this.imageElement=document.createElement("img"),this.imageElement.style.position="absolute",this.rootElement.appendChild(this.imageElement),this.rootDiv.appendChild(this.rootElement)}setElementForShow(){this.rootElement.style.display="block"}setElementForHide(){this.rootElement.style.display="none"}updateImageElementSource(A){const e=btoa(A.reduce((t,n)=>t+String.fromCharCode(n),""));this.imageElement.src="data:image/jpeg;base64,"+e}setDimensionsFromElementAndResize(){this.freezeFrameHeight=this.imageElement.naturalHeight,this.freezeFrameWidth=this.imageElement.naturalWidth,this.resize()}resize(){if(this.freezeFrameWidth!==0&&this.freezeFrameHeight!==0){let A=0,e=0,t=0,n=0;const s=this.rootDiv.clientWidth/this.rootDiv.clientHeight,i=this.freezeFrameWidth/this.freezeFrameHeight;s<i?(A=this.rootDiv.clientWidth,e=Math.floor(this.rootDiv.clientWidth/i),t=Math.floor(.5*(this.rootDiv.clientHeight-e)),n=0):(A=Math.floor(this.rootDiv.clientHeight*i),e=this.rootDiv.clientHeight,t=0,n=Math.floor(.5*(this.rootDiv.clientWidth-A))),this.rootElement.style.width=this.rootDiv.offsetWidth+"px",this.rootElement.style.height=this.rootDiv.offsetHeight+"px",this.rootElement.style.left="0px",this.rootElement.style.top="0px",this.imageElement.style.width=A+"px",this.imageElement.style.height=e+"px",this.imageElement.style.left=n+"px",this.imageElement.style.top=t+"px"}}};class md{constructor(A){this.receiving=!1,this.size=0,this.jpeg=void 0,this.valid=!1,this.freezeFrameDelay=50,this.freezeFrame=new vd(A)}showFreezeFrame(){this.valid&&this.freezeFrame.setElementForShow()}hideFreezeFrame(){this.valid=!1,this.freezeFrame.setElementForHide()}updateFreezeFrameAndShow(A,e){this.freezeFrame.updateImageElementSource(A),this.freezeFrame.imageElement.onload=()=>{this.freezeFrame.setDimensionsFromElementAndResize(),e()}}processFreezeFrameMessage(A,e){this.receiving||(this.receiving=!0,this.valid=!1,this.size=0,this.jpeg=void 0),this.size=new DataView(A.slice(1,5).buffer).getInt32(0,!0);const t=A.slice(5);if(this.jpeg){const n=new Uint8Array(this.jpeg.length+t.length);n.set(this.jpeg,0),n.set(t,this.jpeg.length),this.jpeg=n}else this.jpeg=t,this.receiving=!0,h.Log(h.GetStackTrace(),`received first chunk of freeze frame: ${this.jpeg.length}/${this.size}`,6);this.jpeg.length===this.size?(this.receiving=!1,this.valid=!0,h.Log(h.GetStackTrace(),`received complete freeze frame ${this.size}`,6),this.updateFreezeFrameAndShow(this.jpeg,e)):this.jpeg.length>this.size&&(h.Error(h.GetStackTrace(),`received bigger freeze frame than advertised: ${this.jpeg.length}/${this.size}`),this.jpeg=void 0,this.receiving=!1)}}class Oe{constructor(A,e,t,n,s=()=>{}){this.onChange=s,this.onChangeEmit=()=>{},this.id=A,this.description=t,this.label=e,this.value=n}set label(A){this._label=A,this.onChangeEmit(this._value)}get label(){return this._label}get value(){return this._value}set value(A){this._value=A,this.onChange(this._value,this),this.onChangeEmit(this._value)}}class z extends Oe{constructor(A,e,t,n,s,i=()=>{}){super(A,e,t,n,i);const o=new URLSearchParams(window.location.search);if(s&&o.has(this.id)){const a=this.getUrlParamFlag();this.flag=a}else this.flag=n;this.useUrlParams=s}getUrlParamFlag(){const A=new URLSearchParams(window.location.search);return!!A.has(this.id)&&A.get(this.id)!=="false"&&A.get(this.id)!=="False"}updateURLParams(){if(this.useUrlParams){const A=new URLSearchParams(window.location.search);this.flag===!0?A.set(this.id,"true"):A.set(this.id,"false"),window.history.replaceState({},"",A.toString()!==""?`${location.pathname}?${A}`:`${location.pathname}`)}}enable(){this.flag=!0}get flag(){return!!this.value}set flag(A){this.value=A}}class kA extends Oe{constructor(A,e,t,n,s,i,o,a=()=>{}){super(A,e,t,i,a),this._min=n,this._max=s;const l=new URLSearchParams(window.location.search);if(o&&l.has(this.id)){const c=Number.parseInt(l.get(this.id));this.number=Number.isNaN(c)?i:c}else this.number=i;this.useUrlParams=o}updateURLParams(){if(this.useUrlParams){const A=new URLSearchParams(window.location.search);A.set(this.id,this.number.toString()),window.history.replaceState({},"",A.toString()!==""?`${location.pathname}?${A}`:`${location.pathname}`)}}set number(A){this.value=this.clamp(A)}get number(){return this.value}clamp(A){return this._min==null&&this._max==null?A:this._min==null?Math.min(this._max,A):this._max==null?Math.max(this._min,A):Math.max(Math.min(this._max,A),this._min)}get min(){return this._min}get max(){return this._max}addOnChangedListener(A){this.onChange=A}}class jo extends Oe{constructor(A,e,t,n,s,i=()=>{}){super(A,e,t,n,i);const o=new URLSearchParams(window.location.search);if(s&&o.has(this.id)){const a=this.getUrlParamText();this.text=a}else this.text=n;this.useUrlParams=s}getUrlParamText(){var A;const e=new URLSearchParams(window.location.search);return e.has(this.id)&&(A=e.get(this.id))!==null&&A!==void 0?A:""}updateURLParams(){if(this.useUrlParams){const A=new URLSearchParams(window.location.search);A.set(this.id,this.text),window.history.replaceState({},"",A.toString()!==""?`${location.pathname}?${A}`:`${location.pathname}`)}}get text(){return this.value}set text(A){this.value=A}}class Tn extends Oe{constructor(A,e,t,n,s,i,o=()=>{}){super(A,e,t,[n,n],o),this.options=s;const a=new URLSearchParams(window.location.search),l=i&&a.has(this.id)?this.getUrlParamText():n;this.selected=l,this.useUrlParams=i}getUrlParamText(){var A;const e=new URLSearchParams(window.location.search);return e.has(this.id)&&(A=e.get(this.id))!==null&&A!==void 0?A:""}updateURLParams(){if(this.useUrlParams){const A=new URLSearchParams(window.location.search);A.set(this.id,this.selected),window.history.replaceState({},"",A.toString()!==""?`${location.pathname}?${A}`:`${location.pathname}`)}}addOnChangedListener(A){this.onChange=A}get options(){return this._options}set options(A){this._options=A,this.onChangeEmit(this.selected)}get selected(){return this.value}set selected(A){let e=this.options.filter(t=>t.indexOf(A)!==-1);e.length?this.value=e[0]:(e=this.options.filter(t=>t.indexOf(A.split(" ")[0])!==-1),e.length&&(this.value=e[0]))}}class Aa extends Event{constructor(A){super("afkWarningActivate"),this.data=A}}let Hn=class extends Event{constructor(A){super("afkWarningUpdate"),this.data=A}};class ea extends Event{constructor(){super("afkWarningDeactivate")}}let ta=class extends Event{constructor(){super("afkTimedOut")}},ra=class extends Event{constructor(A){super("videoEncoderAvgQP"),this.data=A}};class na extends Event{constructor(){super("webRtcSdp")}}class sa extends Event{constructor(){super("webRtcAutoConnect")}}let ia=class extends Event{constructor(){super("webRtcConnecting")}};class oa extends Event{constructor(){super("webRtcConnected")}}class aa extends Event{constructor(){super("webRtcFailed")}}let la=class extends Event{constructor(A){super("webRtcDisconnected"),this.data=A}};class ca extends Event{constructor(A){super("dataChannelOpen"),this.data=A}}class da extends Event{constructor(A){super("dataChannelClose"),this.data=A}}class ua extends Event{constructor(A){super("dataChannelError"),this.data=A}}class ha extends Event{constructor(){super("videoInitialized")}}let ga=class extends Event{constructor(){super("streamLoading")}};class Ba extends Event{constructor(){super("streamConnect")}}class fa extends Event{constructor(){super("streamDisconnect")}}class wa extends Event{constructor(){super("streamReconnect")}}class pa extends Event{constructor(A){super("playStreamError"),this.data=A}}class Ca extends Event{constructor(){super("playStream")}}class Ln extends Event{constructor(A){super("playStreamRejected"),this.data=A}}class va extends Event{constructor(A){super("loadFreezeFrame"),this.data=A}}class ma extends Event{constructor(){super("hideFreezeFrame")}}class Fa extends Event{constructor(A){super("statsReceived"),this.data=A}}let Qa=class extends Event{constructor(A){super("streamerListMessage"),this.data=A}};class Ua extends Event{constructor(A){super("latencyTestResult"),this.data=A}}class Ea extends Event{constructor(A){super("initialSettings"),this.data=A}}class We extends Event{constructor(A){super("settingsChanged"),this.data=A}}class Fd extends Event{constructor(){super("xrSessionStarted")}}class Qd extends Event{constructor(){super("xrSessionEnded")}}class ya extends Event{constructor(A){super("xrFrame"),this.data=A}}class Sa extends Event{constructor(A){super("playerCount"),this.data=A}}class Ia extends EventTarget{dispatchEvent(A){return super.dispatchEvent(A)}addEventListener(A,e){super.addEventListener(A,e)}removeEventListener(A,e){super.removeEventListener(A,e)}}class U{}U.AutoConnect="AutoConnect",U.AutoPlayVideo="AutoPlayVideo",U.AFKDetection="TimeoutIfIdle",U.BrowserSendOffer="OfferToReceive",U.HoveringMouseMode="HoveringMouse",U.ForceMonoAudio="ForceMonoAudio",U.ForceTURN="ForceTURN",U.FakeMouseWithTouches="FakeMouseWithTouches",U.IsQualityController="ControlsQuality",U.MatchViewportResolution="MatchViewportRes",U.PreferSFU="preferSFU",U.StartVideoMuted="StartVideoMuted",U.SuppressBrowserKeys="SuppressBrowserKeys",U.UseMic="UseMic",U.KeyboardInput="KeyboardInput",U.MouseInput="MouseInput",U.TouchInput="TouchInput",U.GamepadInput="GamepadInput",U.XRControllerInput="XRControllerInput";const Ud=r=>Object.getOwnPropertyNames(U).some(A=>U[A]===r);class M{}M.AFKTimeoutSecs="AFKTimeout",M.MinQP="MinQP",M.MaxQP="MaxQP",M.WebRTCFPS="WebRTCFPS",M.WebRTCMinBitrate="WebRTCMinBitrate",M.WebRTCMaxBitrate="WebRTCMaxBitrate",M.MaxReconnectAttempts="MaxReconnectAttempts";const Ed=r=>Object.getOwnPropertyNames(M).some(A=>M[A]===r);class ZA{}ZA.SignallingServerUrl="ss";const yd=r=>Object.getOwnPropertyNames(ZA).some(A=>ZA[A]===r);class V{}V.PreferredCodec="PreferredCodec",V.StreamerId="StreamerId";const Sd=r=>Object.getOwnPropertyNames(V).some(A=>V[A]===r);class Id{constructor(A={}){this.flags=new Map,this.numericParameters=new Map,this.textParameters=new Map,this.optionParameters=new Map;const{initialSettings:e,useUrlParams:t}=A;this._useUrlParams=!!t,this.populateDefaultSettings(this._useUrlParams),e&&this.setSettings(e)}get useUrlParams(){return this._useUrlParams}populateDefaultSettings(A){this.textParameters.set(ZA.SignallingServerUrl,new jo(ZA.SignallingServerUrl,"Signalling url","Url of the signalling server",(location.protocol==="https:"?"wss://":"ws://")+window.location.hostname+(window.location.port==="80"||window.location.port===""?"":`:${window.location.port}`),A)),this.optionParameters.set(V.StreamerId,new Tn(V.StreamerId,"Streamer ID","The ID of the streamer to stream.","",[],A)),this.optionParameters.set(V.PreferredCodec,new Tn(V.PreferredCodec,"Preferred Codec","The preferred codec to be used during codec negotiation","H264 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f",function(){const e=[];if(!RTCRtpReceiver.getCapabilities)return e.push("Only available on Chrome"),e;const t=/(VP\d|H26\d|AV1).*/;return RTCRtpReceiver.getCapabilities("video").codecs.forEach(n=>{const s=n.mimeType.split("/")[1]+" "+(n.sdpFmtpLine||"");t.exec(s)!==null&&e.push(s)}),e}(),A)),this.flags.set(U.AutoConnect,new z(U.AutoConnect,"Auto connect to stream","Whether we should attempt to auto connect to the signalling server or show a click to start prompt.",!1,A)),this.flags.set(U.AutoPlayVideo,new z(U.AutoPlayVideo,"Auto play video","When video is ready automatically start playing it as opposed to showing a play button.",!0,A)),this.flags.set(U.BrowserSendOffer,new z(U.BrowserSendOffer,"Browser send offer","Browser will initiate the WebRTC handshake by sending the offer to the streamer",!1,A)),this.flags.set(U.UseMic,new z(U.UseMic,"Use microphone","Make browser request microphone access and open an input audio track.",!1,A)),this.flags.set(U.StartVideoMuted,new z(U.StartVideoMuted,"Start video muted","Video will start muted if true.",!1,A)),this.flags.set(U.SuppressBrowserKeys,new z(U.SuppressBrowserKeys,"Suppress browser keys","Suppress certain browser keys that we use in UE, for example F5 to show shader complexity instead of refresh the page.",!0,A)),this.flags.set(U.PreferSFU,new z(U.PreferSFU,"Prefer SFU","Try to connect to the SFU instead of P2P.",!1,A)),this.flags.set(U.IsQualityController,new z(U.IsQualityController,"Is quality controller?","True if this peer controls stream quality",!0,A)),this.flags.set(U.ForceMonoAudio,new z(U.ForceMonoAudio,"Force mono audio","Force browser to request mono audio in the SDP",!1,A)),this.flags.set(U.ForceTURN,new z(U.ForceTURN,"Force TURN","Only generate TURN/Relayed ICE candidates.",!1,A)),this.flags.set(U.AFKDetection,new z(U.AFKDetection,"AFK if idle","Timeout the experience if user is AFK for a period.",!1,A)),this.flags.set(U.MatchViewportResolution,new z(U.MatchViewportResolution,"Match viewport resolution","Pixel Streaming will be instructed to dynamically resize the video stream to match the size of the video element.",!1,A)),this.flags.set(U.HoveringMouseMode,new z(U.HoveringMouseMode,"Control Scheme: Locked Mouse","Either locked mouse, where the pointer is consumed by the video and locked to it, or hovering mouse, where the mouse is not consumed.",!1,A,(e,t)=>{t.label=`Control Scheme: ${e?"Hovering":"Locked"} Mouse`})),this.flags.set(U.FakeMouseWithTouches,new z(U.FakeMouseWithTouches,"Fake mouse with touches","A single finger touch is converted into a mouse event. This allows a non-touch application to be controlled partially via a touch device.",!1,A)),this.flags.set(U.KeyboardInput,new z(U.KeyboardInput,"Keyboard input","If enabled, send keyboard events to streamer",!0,A)),this.flags.set(U.MouseInput,new z(U.MouseInput,"Mouse input","If enabled, send mouse events to streamer",!0,A)),this.flags.set(U.TouchInput,new z(U.TouchInput,"Touch input","If enabled, send touch events to streamer",!0,A)),this.flags.set(U.GamepadInput,new z(U.GamepadInput,"Gamepad input","If enabled, send gamepad events to streamer",!0,A)),this.flags.set(U.XRControllerInput,new z(U.XRControllerInput,"XR controller input","If enabled, send XR controller events to streamer",!0,A)),this.numericParameters.set(M.AFKTimeoutSecs,new kA(M.AFKTimeoutSecs,"AFK timeout","The time (in seconds) it takes for the application to time out if AFK timeout is enabled.",0,null,120,A)),this.numericParameters.set(M.MaxReconnectAttempts,new kA(M.MaxReconnectAttempts,"Max Reconnects","Maximum number of reconnects the application will attempt when a streamer disconnects.",0,999,3,A)),this.numericParameters.set(M.MinQP,new kA(M.MinQP,"Min QP","The lower bound for the quantization parameter (QP) of the encoder. 0 = Best quality, 51 = worst quality.",0,51,0,A)),this.numericParameters.set(M.MaxQP,new kA(M.MaxQP,"Max QP","The upper bound for the quantization parameter (QP) of the encoder. 0 = Best quality, 51 = worst quality.",0,51,51,A)),this.numericParameters.set(M.WebRTCFPS,new kA(M.WebRTCFPS,"Max FPS","The maximum FPS that WebRTC will try to transmit frames at.",1,999,60,A)),this.numericParameters.set(M.WebRTCMinBitrate,new kA(M.WebRTCMinBitrate,"Min Bitrate (kbps)","The minimum bitrate that WebRTC should use.",0,5e5,0,A)),this.numericParameters.set(M.WebRTCMaxBitrate,new kA(M.WebRTCMaxBitrate,"Max Bitrate (kbps)","The maximum bitrate that WebRTC should use.",0,5e5,0,A))}_addOnNumericSettingChangedListener(A,e){this.numericParameters.has(A)&&this.numericParameters.get(A).addOnChangedListener(e)}_addOnOptionSettingChangedListener(A,e){this.optionParameters.has(A)&&this.optionParameters.get(A).addOnChangedListener(e)}getNumericSettingValue(A){if(this.numericParameters.has(A))return this.numericParameters.get(A).number;throw new Error(`There is no numeric setting with the id of ${A}`)}getTextSettingValue(A){if(this.textParameters.has(A))return this.textParameters.get(A).value;throw new Error(`There is no numeric setting with the id of ${A}`)}setNumericSetting(A,e){if(!this.numericParameters.has(A))throw new Error(`There is no numeric setting with the id of ${A}`);this.numericParameters.get(A).number=e}_addOnSettingChangedListener(A,e){this.flags.has(A)&&(this.flags.get(A).onChange=e)}_addOnTextSettingChangedListener(A,e){this.textParameters.has(A)&&(this.textParameters.get(A).onChange=e)}getSettingOption(A){return this.optionParameters.get(A)}isFlagEnabled(A){return this.flags.get(A).flag}setFlagEnabled(A,e){this.flags.has(A)?this.flags.get(A).flag=e:h.Warning(h.GetStackTrace(),`Cannot toggle flag called ${A} - it does not exist in the Config.flags map.`)}setTextSetting(A,e){this.textParameters.has(A)?this.textParameters.get(A).text=e:h.Warning(h.GetStackTrace(),`Cannot set text setting called ${A} - it does not exist in the Config.textParameters map.`)}setOptionSettingOptions(A,e){this.optionParameters.has(A)?this.optionParameters.get(A).options=e:h.Warning(h.GetStackTrace(),`Cannot set text setting called ${A} - it does not exist in the Config.optionParameters map.`)}setOptionSettingValue(A,e){this.optionParameters.has(A)?this.optionParameters.get(A).selected=e:h.Warning(h.GetStackTrace(),`Cannot set text setting called ${A} - it does not exist in the Config.enumParameters map.`)}setFlagLabel(A,e){this.flags.has(A)?this.flags.get(A).label=e:h.Warning(h.GetStackTrace(),`Cannot set label for flag called ${A} - it does not exist in the Config.flags map.`)}setSettings(A){for(const e of Object.keys(A))Ud(e)?this.setFlagEnabled(e,A[e]):Ed(e)?this.setNumericSetting(e,A[e]):yd(e)?this.setTextSetting(e,A[e]):Sd(e)&&this.setOptionSettingValue(e,A[e])}getSettings(){const A={};for(const[e,t]of this.flags.entries())A[e]=t.flag;for(const[e,t]of this.numericParameters.entries())A[e]=t.number;for(const[e,t]of this.textParameters.entries())A[e]=t.text;for(const[e,t]of this.optionParameters.entries())A[e]=t.selected;return A}getFlags(){return Array.from(this.flags.values())}getTextSettings(){return Array.from(this.textParameters.values())}getNumericSettings(){return Array.from(this.numericParameters.values())}getOptionSettings(){return Array.from(this.optionParameters.values())}_registerOnChangeEvents(A){for(const e of this.flags.keys()){const t=this.flags.get(e);t&&(t.onChangeEmit=n=>A.dispatchEvent(new We({id:t.id,type:"flag",value:n,target:t})))}for(const e of this.numericParameters.keys()){const t=this.numericParameters.get(e);t&&(t.onChangeEmit=n=>A.dispatchEvent(new We({id:t.id,type:"number",value:n,target:t})))}for(const e of this.textParameters.keys()){const t=this.textParameters.get(e);t&&(t.onChangeEmit=n=>A.dispatchEvent(new We({id:t.id,type:"text",value:n,target:t})))}for(const e of this.optionParameters.keys()){const t=this.optionParameters.get(e);t&&(t.onChangeEmit=n=>A.dispatchEvent(new We({id:t.id,type:"option",value:n,target:t})))}}}var qA;(function(r){r[r.LockedMouse=0]="LockedMouse",r[r.HoveringMouse=1]="HoveringMouse"})(qA||(qA={}));class Ta{constructor(A,e,t){this.closeTimeout=10,this.active=!1,this.countdownActive=!1,this.warnTimer=void 0,this.countDown=0,this.countDownTimer=void 0,this.config=A,this.pixelStreaming=e,this.onDismissAfk=t,this.onAFKTimedOutCallback=()=>{console.log("AFK timed out, did you want to override this callback?")}}onAfkClick(){clearInterval(this.countDownTimer),(this.active||this.countdownActive)&&(this.startAfkWarningTimer(),this.pixelStreaming.dispatchEvent(new ea))}startAfkWarningTimer(){this.config.getNumericSettingValue(M.AFKTimeoutSecs)>0&&this.config.isFlagEnabled(U.AFKDetection)?this.active=!0:this.active=!1,this.resetAfkWarningTimer()}stopAfkWarningTimer(){this.active=!1,this.countdownActive=!1,clearTimeout(this.warnTimer),clearInterval(this.countDownTimer)}pauseAfkWarningTimer(){this.active=!1}resetAfkWarningTimer(){this.active&&this.config.isFlagEnabled(U.AFKDetection)&&(clearTimeout(this.warnTimer),this.warnTimer=setTimeout(()=>this.activateAfkEvent(),1e3*this.config.getNumericSettingValue(M.AFKTimeoutSecs)))}activateAfkEvent(){this.pauseAfkWarningTimer(),this.pixelStreaming.dispatchEvent(new Aa({countDown:this.countDown,dismissAfk:this.onDismissAfk})),this.countDown=this.closeTimeout,this.countdownActive=!0,this.pixelStreaming.dispatchEvent(new Hn({countDown:this.countDown})),this.config.isFlagEnabled(U.HoveringMouseMode)||document.exitPointerLock&&document.exitPointerLock(),this.countDownTimer=setInterval(()=>{this.countDown--,this.countDown==0?(this.pixelStreaming.dispatchEvent(new ta),this.onAFKTimedOutCallback(),h.Log(h.GetStackTrace(),"You have been disconnected due to inactivity"),this.stopAfkWarningTimer()):this.pixelStreaming.dispatchEvent(new Hn({countDown:this.countDown}))},1e3)}}class Ha{constructor(){this.isReceivingFreezeFrame=!1}getDataChannelInstance(){return this}createDataChannel(A,e,t){this.peerConnection=A,this.label=e,this.datachannelOptions=t,t==null&&(this.datachannelOptions={},this.datachannelOptions.ordered=!0),this.dataChannel=this.peerConnection.createDataChannel(this.label,this.datachannelOptions),this.setupDataChannel()}setupDataChannel(){this.dataChannel.binaryType="arraybuffer",this.dataChannel.onopen=A=>this.handleOnOpen(A),this.dataChannel.onclose=A=>this.handleOnClose(A),this.dataChannel.onmessage=A=>this.handleOnMessage(A),this.dataChannel.onerror=A=>this.handleOnError(A)}handleOnOpen(A){var e;h.Log(h.GetStackTrace(),`Data Channel (${this.label}) opened.`,7),this.onOpen((e=this.dataChannel)===null||e===void 0?void 0:e.label,A)}handleOnClose(A){var e;h.Log(h.GetStackTrace(),`Data Channel (${this.label}) closed.`,7),this.onClose((e=this.dataChannel)===null||e===void 0?void 0:e.label,A)}handleOnMessage(A){h.Log(h.GetStackTrace(),`Data Channel (${this.label}) message: ${A}`,8)}handleOnError(A){var e;h.Log(h.GetStackTrace(),`Data Channel (${this.label}) error: ${A}`,7),this.onError((e=this.dataChannel)===null||e===void 0?void 0:e.label,A)}onOpen(A,e){}onClose(A,e){}onError(A,e){}}class La{}class ba{}class Ma{}class bn{}class Da{}class Ra{}class Td{}class Hd{}class Pa{constructor(){this.inboundVideoStats=new ba,this.inboundAudioStats=new La,this.candidatePair=new Da,this.DataChannelStats=new Ma,this.outBoundVideoStats=new Ra,this.sessionStats=new Td,this.streamStats=new Hd,this.codecs=new Map}processStats(A){this.localCandidates=new Array,this.remoteCandidates=new Array,A.forEach(e=>{switch(e.type){case"candidate-pair":this.handleCandidatePair(e);break;case"certificate":case"media-source":case"media-playout":case"outbound-rtp":case"peer-connection":case"remote-inbound-rtp":case"transport":break;case"codec":this.handleCodec(e);break;case"data-channel":this.handleDataChannel(e);break;case"inbound-rtp":this.handleInBoundRTP(e);break;case"local-candidate":this.handleLocalCandidate(e);break;case"remote-candidate":this.handleRemoteCandidate(e);break;case"remote-outbound-rtp":this.handleRemoteOutBound(e);break;case"track":this.handleTrack(e);break;case"stream":this.handleStream(e);break;default:h.Error(h.GetStackTrace(),"unhandled Stat Type"),h.Log(h.GetStackTrace(),e)}})}handleStream(A){this.streamStats=A}handleCandidatePair(A){this.candidatePair.bytesReceived=A.bytesReceived,this.candidatePair.bytesSent=A.bytesSent,this.candidatePair.localCandidateId=A.localCandidateId,this.candidatePair.remoteCandidateId=A.remoteCandidateId,this.candidatePair.nominated=A.nominated,this.candidatePair.readable=A.readable,this.candidatePair.selected=A.selected,this.candidatePair.writable=A.writable,this.candidatePair.state=A.state,this.candidatePair.currentRoundTripTime=A.currentRoundTripTime}handleDataChannel(A){this.DataChannelStats.bytesReceived=A.bytesReceived,this.DataChannelStats.bytesSent=A.bytesSent,this.DataChannelStats.dataChannelIdentifier=A.dataChannelIdentifier,this.DataChannelStats.id=A.id,this.DataChannelStats.label=A.label,this.DataChannelStats.messagesReceived=A.messagesReceived,this.DataChannelStats.messagesSent=A.messagesSent,this.DataChannelStats.protocol=A.protocol,this.DataChannelStats.state=A.state,this.DataChannelStats.timestamp=A.timestamp}handleLocalCandidate(A){const e=new bn;e.label="local-candidate",e.address=A.address,e.port=A.port,e.protocol=A.protocol,e.candidateType=A.candidateType,e.id=A.id,this.localCandidates.push(e)}handleRemoteCandidate(A){const e=new bn;e.label="local-candidate",e.address=A.address,e.port=A.port,e.protocol=A.protocol,e.id=A.id,e.candidateType=A.candidateType,this.remoteCandidates.push(e)}handleInBoundRTP(A){switch(A.kind){case"video":this.inboundVideoStats=A,this.lastVideoStats!=null&&(this.inboundVideoStats.bitrate=8*(this.inboundVideoStats.bytesReceived-this.lastVideoStats.bytesReceived)/(this.inboundVideoStats.timestamp-this.lastVideoStats.timestamp),this.inboundVideoStats.bitrate=Math.floor(this.inboundVideoStats.bitrate)),this.lastVideoStats=Object.assign({},this.inboundVideoStats);break;case"audio":this.inboundAudioStats=A,this.lastAudioStats!=null&&(this.inboundAudioStats.bitrate=8*(this.inboundAudioStats.bytesReceived-this.lastAudioStats.bytesReceived)/(this.inboundAudioStats.timestamp-this.lastAudioStats.timestamp),this.inboundAudioStats.bitrate=Math.floor(this.inboundAudioStats.bitrate)),this.lastAudioStats=Object.assign({},this.inboundAudioStats);break;default:h.Log(h.GetStackTrace(),"Kind is not handled")}}handleRemoteOutBound(A){A.kind==="video"&&(this.outBoundVideoStats.bytesSent=A.bytesSent,this.outBoundVideoStats.id=A.id,this.outBoundVideoStats.localId=A.localId,this.outBoundVideoStats.packetsSent=A.packetsSent,this.outBoundVideoStats.remoteTimestamp=A.remoteTimestamp,this.outBoundVideoStats.timestamp=A.timestamp)}handleTrack(A){A.type!=="track"||A.trackIdentifier!=="video_label"&&A.kind!=="video"||(this.inboundVideoStats.framesDropped=A.framesDropped,this.inboundVideoStats.framesReceived=A.framesReceived,this.inboundVideoStats.frameHeight=A.frameHeight,this.inboundVideoStats.frameWidth=A.frameWidth)}handleCodec(A){const e=A.id,t=`${A.mimeType.replace("video/","").replace("audio/","")}${A.sdpFmtpLine?` ${A.sdpFmtpLine}`:""}`;this.codecs.set(e,t)}handleSessionStatistics(A,e,t){const n=Date.now()-A;this.sessionStats.runTime=new Date(n).toISOString().substr(11,8).toString();const s=e===null?"Not sent yet":e?"true":"false";this.sessionStats.controlsStreamInput=s,this.sessionStats.videoEncoderAvgQP=t}isNumber(A){return typeof A=="number"&&isFinite(A)}}const Ka=(xa={parseRtpParameters:()=>$o.parseRtpParameters,splitSections:()=>$o.splitSections},Mn={},Fr.d(Mn,xa),Mn);var xa,Mn,fe,b,Dn=function(r,A,e,t){return new(e||(e=Promise))(function(n,s){function i(l){try{a(t.next(l))}catch(c){s(c)}}function o(l){try{a(t.throw(l))}catch(c){s(c)}}function a(l){var c;l.done?n(l.value):(c=l.value,c instanceof e?c:new e(function(u){u(c)})).then(i,o)}a((t=t.apply(r,[])).next())})};class Ld{constructor(A,e,t){this.config=e,this.createPeerConnection(A,t)}createPeerConnection(A,e){this.config.isFlagEnabled(U.ForceTURN)&&(A.iceTransportPolicy="relay",h.Log(h.GetStackTrace(),"Forcing TURN usage by setting ICE Transport Policy in peer connection config.")),this.peerConnection=new RTCPeerConnection(A),this.peerConnection.onsignalingstatechange=t=>this.handleSignalStateChange(t),this.peerConnection.oniceconnectionstatechange=t=>this.handleIceConnectionStateChange(t),this.peerConnection.onicegatheringstatechange=t=>this.handleIceGatheringStateChange(t),this.peerConnection.ontrack=t=>this.handleOnTrack(t),this.peerConnection.onicecandidate=t=>this.handleIceCandidate(t),this.peerConnection.ondatachannel=t=>this.handleDataChannel(t),this.aggregatedStats=new Pa,this.preferredCodec=e,this.updateCodecSelection=!0}createOffer(A,e){return Dn(this,void 0,void 0,function*(){h.Log(h.GetStackTrace(),"Create Offer",6);const t=location.hostname==="localhost"||location.hostname==="127.0.0.1",n=location.protocol==="https:";let s=e.isFlagEnabled(U.UseMic);!s||t||n||(s=!1,h.Error(h.GetStackTrace(),"Microphone access in the browser will not work if you are not on HTTPS or localhost. Disabling mic access."),h.Error(h.GetStackTrace(),"For testing you can enable HTTP microphone access Chrome by visiting chrome://flags/ and enabling 'unsafely-treat-insecure-origin-as-secure'")),this.setupTransceiversAsync(s).finally(()=>{var i;(i=this.peerConnection)===null||i===void 0||i.createOffer(A).then(o=>{var a;this.showTextOverlayConnecting(),o.sdp=this.mungeSDP(o.sdp,s),(a=this.peerConnection)===null||a===void 0||a.setLocalDescription(o),this.onSendWebRTCOffer(o)}).catch(()=>{this.showTextOverlaySetupFailure()})})})}receiveOffer(A,e){var t;return Dn(this,void 0,void 0,function*(){h.Log(h.GetStackTrace(),"Receive Offer",6),(t=this.peerConnection)===null||t===void 0||t.setRemoteDescription(A).then(()=>{const n=location.hostname==="localhost"||location.hostname==="127.0.0.1",s=location.protocol==="https:";let i=e.isFlagEnabled(U.UseMic);!i||n||s||(i=!1,h.Error(h.GetStackTrace(),"Microphone access in the browser will not work if you are not on HTTPS or localhost. Disabling mic access."),h.Error(h.GetStackTrace(),"For testing you can enable HTTP microphone access Chrome by visiting chrome://flags/ and enabling 'unsafely-treat-insecure-origin-as-secure'")),this.config.setOptionSettingOptions(V.PreferredCodec,this.fuzzyIntersectUEAndBrowserCodecs(A)),this.setupTransceiversAsync(i).finally(()=>{var o;(o=this.peerConnection)===null||o===void 0||o.createAnswer().then(a=>{var l;return a.sdp=this.mungeSDP(a.sdp,i),(l=this.peerConnection)===null||l===void 0?void 0:l.setLocalDescription(a)}).then(()=>{var a;this.onSendWebRTCAnswer((a=this.peerConnection)===null||a===void 0?void 0:a.currentLocalDescription)}).catch(()=>{h.Error(h.GetStackTrace(),"createAnswer() failed")})})})})}receiveAnswer(A){var e;(e=this.peerConnection)===null||e===void 0||e.setRemoteDescription(A),this.config.setOptionSettingOptions(V.PreferredCodec,this.fuzzyIntersectUEAndBrowserCodecs(A))}generateStats(){var A;(A=this.peerConnection)===null||A===void 0||A.getStats(null).then(e=>{this.aggregatedStats.processStats(e),this.onVideoStats(this.aggregatedStats),this.updateCodecSelection&&this.config.setOptionSettingValue(V.PreferredCodec,this.aggregatedStats.codecs.get(this.aggregatedStats.inboundVideoStats.codecId))})}close(){this.peerConnection&&(this.peerConnection.close(),this.peerConnection=null)}mungeSDP(A,e){let t=A.replace(/(a=fmtp:\d+ .*level-asymmetry-allowed=.*)\r\n/gm,`$1;x-google-start-bitrate=10000;x-google-max-bitrate=100000\r
|
|
43
|
+
`),n="maxaveragebitrate=510000;";return e&&(n+="sprop-maxcapturerate=48000;"),n+=this.config.isFlagEnabled(U.ForceMonoAudio)?"stereo=0;":"stereo=1;",n+="useinbandfec=1",t=t.replace("useinbandfec=1",n),t}handleOnIce(A){var e;h.Log(h.GetStackTrace(),"peerconnection handleOnIce",6),this.config.isFlagEnabled(U.ForceTURN)&&A.candidate.indexOf("relay")<0?h.Info(h.GetStackTrace(),`Dropping candidate because it was not TURN relay. | Type= ${A.type} | Protocol= ${A.protocol} | Address=${A.address} | Port=${A.port} |`,6):(e=this.peerConnection)===null||e===void 0||e.addIceCandidate(A)}handleSignalStateChange(A){h.Log(h.GetStackTrace(),"signaling state change: "+A,6)}handleIceConnectionStateChange(A){h.Log(h.GetStackTrace(),"ice connection state change: "+A,6),this.onIceConnectionStateChange(A)}handleIceGatheringStateChange(A){h.Log(h.GetStackTrace(),"ice gathering state change: "+JSON.stringify(A),6)}handleOnTrack(A){this.onTrack(A)}handleIceCandidate(A){this.onPeerIceCandidate(A)}handleDataChannel(A){this.onDataChannel(A)}onTrack(A){}onIceConnectionStateChange(A){}onPeerIceCandidate(A){}onDataChannel(A){}fuzzyIntersectUEAndBrowserCodecs(A){const e=new Array,t=this.parseAvailableCodecs(A),n=this.config.getSettingOption(V.PreferredCodec).options;for(const s of t)if(n.includes(s))e.push(s);else{const i=s.split(" ")[0];for(const o of n)if(o.includes(i)){e.push(o);break}}return e}setupTransceiversAsync(A){var e,t,n,s,i,o,a,l,c,u,d,B;return Dn(this,void 0,void 0,function*(){let g=!1;for(const m of(t=(e=this.peerConnection)===null||e===void 0?void 0:e.getTransceivers())!==null&&t!==void 0?t:[])if(m&&m.receiver&&m.receiver.track&&m.receiver.track.kind==="video"){g=!0;break}if(g||(n=this.peerConnection)===null||n===void 0||n.addTransceiver("video",{direction:"recvonly"}),RTCRtpReceiver.getCapabilities&&this.preferredCodec!=""){for(const m of(i=(s=this.peerConnection)===null||s===void 0?void 0:s.getTransceivers())!==null&&i!==void 0?i:[])if(m&&m.receiver&&m.receiver.track&&m.receiver.track.kind==="video"&&m.setCodecPreferences){const F=this.preferredCodec.split(" "),Q=[{mimeType:"video/"+F[0],clockRate:9e4,sdpFmtpLine:F[1]?F[1]:""}];this.config.getSettingOption(V.PreferredCodec).options.filter(y=>y!=this.preferredCodec).forEach(y=>{const L=y.split(" ");Q.push({mimeType:"video/"+L[0],clockRate:9e4,sdpFmtpLine:L[1]?L[1]:""})});for(const y of Q)y.sdpFmtpLine===""&&delete y.sdpFmtpLine;m.setCodecPreferences(Q)}}let f=!1;for(const m of(a=(o=this.peerConnection)===null||o===void 0?void 0:o.getTransceivers())!==null&&a!==void 0?a:[])if(m&&m.receiver&&m.receiver.track&&m.receiver.track.kind==="audio"){f=!0;break}if(A){const m={video:!1,audio:!!A&&{autoGainControl:!1,channelCount:1,echoCancellation:!1,latency:0,noiseSuppression:!1,sampleRate:48e3,sampleSize:16,volume:1}},F=yield navigator.mediaDevices.getUserMedia(m);if(F)if(f){for(const Q of(u=(c=this.peerConnection)===null||c===void 0?void 0:c.getTransceivers())!==null&&u!==void 0?u:[])if(Q&&Q.receiver&&Q.receiver.track&&Q.receiver.track.kind==="audio")for(const y of F.getTracks())y.kind&&y.kind=="audio"&&(Q.sender.replaceTrack(y),Q.direction="sendrecv")}else for(const Q of F.getTracks())Q.kind&&Q.kind=="audio"&&((d=this.peerConnection)===null||d===void 0||d.addTransceiver(Q,{direction:"sendrecv"}));else f||(B=this.peerConnection)===null||B===void 0||B.addTransceiver("audio",{direction:"recvonly"})}else f||(l=this.peerConnection)===null||l===void 0||l.addTransceiver("audio",{direction:"recvonly"})})}onVideoStats(A){}onSendWebRTCOffer(A){}onSendWebRTCAnswer(A){}showTextOverlayConnecting(){}showTextOverlaySetupFailure(){}parseAvailableCodecs(A){if(!RTCRtpReceiver.getCapabilities)return["Only available on Chrome"];const e=[],t=(0,Ka.splitSections)(A.sdp);return t.shift(),t.forEach(n=>{const{codecs:s}=(0,Ka.parseRtpParameters)(n),i=/(VP\d|H26\d|AV1).*/;s.forEach(o=>{const a=o.name+" "+Object.keys(o.parameters||{}).map(l=>l+"="+o.parameters[l]).join(";");if(i.exec(a)!==null){o.name=="VP9"&&(o.parameters={"profile-id":"0"});const l=o.name+" "+Object.keys(o.parameters||{}).map(c=>c+"="+o.parameters[c]).join(";");e.push(l)}})}),e}}class ka{constructor(){this.PixelStreamingSettings=new bd,this.EncoderSettings=new Ga,this.WebRTCSettings=new Na}ueCompatible(){this.WebRTCSettings.MaxFPS!=null&&(this.WebRTCSettings.FPS=this.WebRTCSettings.MaxFPS)}}class bd{}class Ga{}class Na{}class _a{constructor(){this.ReceiptTimeMs=null,this.TransmissionTimeMs=null,this.PreCaptureTimeMs=null,this.PostCaptureTimeMs=null,this.PreEncodeTimeMs=null,this.PostEncodeTimeMs=null,this.EncodeMs=null,this.CaptureToSendMs=null,this.testStartTimeMs=0,this.browserReceiptTimeMs=0,this.latencyExcludingDecode=0,this.testDuration=0,this.networkLatency=0,this.browserSendLatency=0,this.frameDisplayDeltaTimeMs=0,this.endToEndLatency=0,this.encodeLatency=0}setFrameDisplayDeltaTime(A){this.frameDisplayDeltaTimeMs==0&&(this.frameDisplayDeltaTimeMs=Math.round(A))}processFields(){this.EncodeMs!=null||this.PreEncodeTimeMs==null&&this.PostEncodeTimeMs==null||(h.Log(h.GetStackTrace(),`Setting Encode Ms
|
|
44
44
|
${this.PostEncodeTimeMs}
|
|
45
45
|
${this.PreEncodeTimeMs}`,6),this.EncodeMs=this.PostEncodeTimeMs-this.PreEncodeTimeMs),this.CaptureToSendMs!=null||this.PreCaptureTimeMs==null&&this.PostCaptureTimeMs==null||(h.Log(h.GetStackTrace(),`Setting CaptureToSendMs Ms
|
|
46
46
|
${this.PostCaptureTimeMs}
|
|
47
|
-
${this.PreCaptureTimeMs}`,6),this.CaptureToSendMs=this.PostCaptureTimeMs-this.PreCaptureTimeMs)}}class Dn{static setExtensionFromBytes(A,e){e.receiving||(e.mimetype="",e.extension="",e.receiving=!0,e.valid=!1,e.size=0,e.data=[],e.timestampStart=new Date().getTime(),h.Log(h.GetStackTrace(),"Received first chunk of file",6));const t=new TextDecoder("utf-16").decode(A.slice(1));h.Log(h.GetStackTrace(),t,6),e.extension=t}static setMimeTypeFromBytes(A,e){e.receiving||(e.mimetype="",e.extension="",e.receiving=!0,e.valid=!1,e.size=0,e.data=[],e.timestampStart=new Date().getTime(),h.Log(h.GetStackTrace(),"Received first chunk of file",6));const t=new TextDecoder("utf-16").decode(A.slice(1));h.Log(h.GetStackTrace(),t,6),e.mimetype=t}static setContentsFromBytes(A,e){if(!e.receiving)return;e.size=Math.ceil(new DataView(A.slice(1,5).buffer).getInt32(0,!0)/16379);const t=A.slice(5);if(e.data.push(t),h.Log(h.GetStackTrace(),`Received file chunk: ${e.data.length}/${e.size}`,6),e.data.length===e.size){e.receiving=!1,e.valid=!0,h.Log(h.GetStackTrace(),"Received complete file",6);const n=new Date().getTime()-e.timestampStart,s=Math.round(16*e.size*1024/n);h.Log(h.GetStackTrace(),`Average transfer bitrate: ${s}kb/s over ${n/1e3} seconds`,6);const i=new Blob(e.data,{type:e.mimetype}),o=document.createElement("a");o.setAttribute("href",URL.createObjectURL(i)),o.setAttribute("download",`transfer.${e.extension}`),document.body.append(o),o.remove()}else e.data.length>e.size&&(e.receiving=!1,h.Error(h.GetStackTrace(),`Received bigger file than advertised: ${e.data.length}/${e.size}`))}}class Md{constructor(){this.mimetype="",this.extension="",this.receiving=!1,this.size=0,this.data=[],this.valid=!1}}class eA{}eA.mainButton=0,eA.auxiliaryButton=1,eA.secondaryButton=2,eA.fourthButton=3,eA.fifthButton=4;class lA{}lA.primaryButton=1,lA.secondaryButton=2,lA.auxiliaryButton=4,lA.fourthButton=8,lA.fifthButton=16;class we{constructor(){this.unregisterCallbacks=[]}addUnregisterCallback(A){this.unregisterCallbacks.push(A)}unregisterAll(){for(const A of this.unregisterCallbacks)A();this.unregisterCallbacks=[]}}class Dd{constructor(A,e,t){this.touchEventListenerTracker=new we,this.toStreamerMessagesProvider=A,this.videoElementProvider=e,this.coordinateConverter=t;const n=o=>this.onTouchStart(o),s=o=>this.onTouchEnd(o),i=o=>this.onTouchMove(o);document.addEventListener("touchstart",n,{passive:!1}),document.addEventListener("touchend",s,{passive:!1}),document.addEventListener("touchmove",i,{passive:!1}),this.touchEventListenerTracker.addUnregisterCallback(()=>document.removeEventListener("touchstart",n)),this.touchEventListenerTracker.addUnregisterCallback(()=>document.removeEventListener("touchend",s)),this.touchEventListenerTracker.addUnregisterCallback(()=>document.removeEventListener("touchmove",i))}unregisterTouchEvents(){this.touchEventListenerTracker.unregisterAll()}setVideoElementParentClientRect(A){this.videoElementParentClientRect=A}onTouchStart(A){if(this.videoElementProvider.isVideoReady()){if(this.fakeTouchFinger==null){const e=A.changedTouches[0];this.fakeTouchFinger=new Rd(e.identifier,e.clientX-this.videoElementParentClientRect.left,e.clientY-this.videoElementParentClientRect.top);const t=this.videoElementProvider.getVideoParentElement(),n=new MouseEvent("mouseenter",e);t.dispatchEvent(n);const s=this.coordinateConverter.normalizeAndQuantizeUnsigned(this.fakeTouchFinger.x,this.fakeTouchFinger.y);this.toStreamerMessagesProvider.toStreamerHandlers.get("MouseDown")([eA.mainButton,s.x,s.y])}A.preventDefault()}}onTouchEnd(A){if(!this.videoElementProvider.isVideoReady())return;const e=this.videoElementProvider.getVideoParentElement(),t=this.toStreamerMessagesProvider.toStreamerHandlers;for(let n=0;n<A.changedTouches.length;n++){const s=A.changedTouches[n];if(s.identifier===this.fakeTouchFinger.id){const i=s.clientX-this.videoElementParentClientRect.left,o=s.clientY-this.videoElementParentClientRect.top,a=this.coordinateConverter.normalizeAndQuantizeUnsigned(i,o);t.get("MouseUp")([eA.mainButton,a.x,a.y]);const l=new MouseEvent("mouseleave",s);e.dispatchEvent(l),this.fakeTouchFinger=null;break}}A.preventDefault()}onTouchMove(A){if(!this.videoElementProvider.isVideoReady())return;const e=this.toStreamerMessagesProvider.toStreamerHandlers;for(let t=0;t<A.touches.length;t++){const n=A.touches[t];if(n.identifier===this.fakeTouchFinger.id){const s=n.clientX-this.videoElementParentClientRect.left,i=n.clientY-this.videoElementParentClientRect.top,o=this.coordinateConverter.normalizeAndQuantizeUnsigned(s,i),a=this.coordinateConverter.normalizeAndQuantizeSigned(s-this.fakeTouchFinger.x,i-this.fakeTouchFinger.y);e.get("MouseMove")([o.x,o.y,a.x,a.y]),this.fakeTouchFinger.x=s,this.fakeTouchFinger.y=i;break}}A.preventDefault()}}class Rd{constructor(A,e,t){this.id=A,this.x=e,this.y=t}}class cA{}cA.backSpace=8,cA.shift=16,cA.control=17,cA.alt=18,cA.rightShift=253,cA.rightControl=254,cA.rightAlt=255;class Pd{constructor(A,e,t){this.keyboardEventListenerTracker=new we,this.CodeToKeyCode={Escape:27,Digit0:48,Digit1:49,Digit2:50,Digit3:51,Digit4:52,Digit5:53,Digit6:54,Digit7:55,Digit8:56,Digit9:57,Minus:173,Equal:187,Backspace:8,Tab:9,KeyQ:81,KeyW:87,KeyE:69,KeyR:82,KeyT:84,KeyY:89,KeyU:85,KeyI:73,KeyO:79,KeyP:80,BracketLeft:219,BracketRight:221,Enter:13,ControlLeft:17,KeyA:65,KeyS:83,KeyD:68,KeyF:70,KeyG:71,KeyH:72,KeyJ:74,KeyK:75,KeyL:76,Semicolon:186,Quote:222,Backquote:192,ShiftLeft:16,Backslash:220,KeyZ:90,KeyX:88,KeyC:67,KeyV:86,KeyB:66,KeyN:78,KeyM:77,Comma:188,Period:190,Slash:191,ShiftRight:253,AltLeft:18,Space:32,CapsLock:20,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,Pause:19,ScrollLock:145,NumpadDivide:111,NumpadMultiply:106,NumpadSubtract:109,NumpadAdd:107,NumpadDecimal:110,Numpad9:105,Numpad8:104,Numpad7:103,Numpad6:102,Numpad5:101,Numpad4:100,Numpad3:99,Numpad2:98,Numpad1:97,Numpad0:96,NumLock:144,ControlRight:254,AltRight:255,Home:36,End:35,ArrowUp:38,ArrowLeft:37,ArrowRight:39,ArrowDown:40,PageUp:33,PageDown:34,Insert:45,Delete:46,ContextMenu:93},this.toStreamerMessagesProvider=A,this.config=e,this.activeKeysProvider=t}registerKeyBoardEvents(){const A=n=>this.handleOnKeyDown(n),e=n=>this.handleOnKeyUp(n),t=n=>this.handleOnKeyPress(n);document.addEventListener("keydown",A),document.addEventListener("keyup",e),document.addEventListener("keypress",t),this.keyboardEventListenerTracker.addUnregisterCallback(()=>document.removeEventListener("keydown",A)),this.keyboardEventListenerTracker.addUnregisterCallback(()=>document.removeEventListener("keyup",e)),this.keyboardEventListenerTracker.addUnregisterCallback(()=>document.removeEventListener("keypress",t))}unregisterKeyBoardEvents(){this.keyboardEventListenerTracker.unregisterAll()}handleOnKeyDown(A){const e=this.getKeycode(A);e&&(h.Log(h.GetStackTrace(),`key down ${e}, repeat = ${A.repeat}`,6),this.toStreamerMessagesProvider.toStreamerHandlers.get("KeyDown")([this.getKeycode(A),A.repeat?1:0]),this.activeKeysProvider.getActiveKeys().push(e),e===cA.backSpace&&document.dispatchEvent(new KeyboardEvent("keypress",{charCode:cA.backSpace})),this.config.isFlagEnabled(U.SuppressBrowserKeys)&&this.isKeyCodeBrowserKey(e)&&A.preventDefault())}handleOnKeyUp(A){const e=this.getKeycode(A);e&&(h.Log(h.GetStackTrace(),`key up ${e}`,6),this.toStreamerMessagesProvider.toStreamerHandlers.get("KeyUp")([e,A.repeat?1:0]),this.config.isFlagEnabled(U.SuppressBrowserKeys)&&this.isKeyCodeBrowserKey(e)&&A.preventDefault())}handleOnKeyPress(A){if(!("charCode"in A))return void h.Warning(h.GetStackTrace(),"KeyboardEvent.charCode is deprecated in this browser, cannot send key press.");const e=A.charCode;h.Log(h.GetStackTrace(),`key press ${e}`,6),this.toStreamerMessagesProvider.toStreamerHandlers.get("KeyPress")([e])}getKeycode(A){if(!("keyCode"in A)){const e=A;return e.code in this.CodeToKeyCode?this.CodeToKeyCode[e.code]:(h.Warning(h.GetStackTrace(),`Keyboard code of ${e.code} is not supported in our mapping, ignoring this key.`),null)}return A.keyCode===cA.shift&&A.code==="ShiftRight"?cA.rightShift:A.keyCode===cA.control&&A.code==="ControlRight"?cA.rightControl:A.keyCode===cA.alt&&A.code==="AltRight"?cA.rightAlt:A.keyCode}isKeyCodeBrowserKey(A){return A>=112&&A<=123||A===9}}class Kd{constructor(A,e,t){this.x=0,this.y=0,this.updateMouseMovePositionEvent=s=>{this.updateMouseMovePosition(s)},this.mouseEventListenerTracker=new we,this.videoElementProvider=A,this.mouseController=e,this.activeKeysProvider=t;const n=this.videoElementProvider.getVideoParentElement();this.x=n.getBoundingClientRect().width/2,this.y=n.getBoundingClientRect().height/2,this.coord=this.mouseController.coordinateConverter.normalizeAndQuantizeUnsigned(this.x,this.y)}unregisterMouseEvents(){this.mouseEventListenerTracker.unregisterAll()}lockStateChange(){const A=this.videoElementProvider.getVideoParentElement(),e=this.mouseController.toStreamerMessagesProvider.toStreamerHandlers;if(document.pointerLockElement===A||document.mozPointerLockElement===A)h.Log(h.GetStackTrace(),"Pointer locked",6),document.addEventListener("mousemove",this.updateMouseMovePositionEvent,!1),this.mouseEventListenerTracker.addUnregisterCallback(()=>document.removeEventListener("mousemove",this.updateMouseMovePositionEvent,!1));else{h.Log(h.GetStackTrace(),"The pointer lock status is now unlocked",6),document.removeEventListener("mousemove",this.updateMouseMovePositionEvent,!1);let t=this.activeKeysProvider.getActiveKeys();const n=new Set(t),s=[];n.forEach(i=>{}),s.forEach(i=>{e.get("KeyUp")([i])}),t=[]}}updateMouseMovePosition(A){if(!this.videoElementProvider.isVideoReady())return;const e=this.mouseController.toStreamerMessagesProvider.toStreamerHandlers,t=this.videoElementProvider.getVideoParentElement().clientWidth,n=this.videoElementProvider.getVideoParentElement().clientHeight;this.x+=A.movementX,this.y+=A.movementY,this.x>t&&(this.x-=t),this.y>n&&(this.y-=n),this.x<0&&(this.x=t+this.x),this.y<0&&(this.y=n-this.y),this.coord=this.mouseController.coordinateConverter.normalizeAndQuantizeUnsigned(this.x,this.y);const s=this.mouseController.coordinateConverter.normalizeAndQuantizeSigned(A.movementX,A.movementY);e.get("MouseMove")([this.coord.x,this.coord.y,s.x,s.y])}handleMouseDown(A){this.videoElementProvider.isVideoReady()&&this.mouseController.toStreamerMessagesProvider.toStreamerHandlers.get("MouseDown")([A.button,this.coord.x,this.coord.y])}handleMouseUp(A){this.videoElementProvider.isVideoReady()&&this.mouseController.toStreamerMessagesProvider.toStreamerHandlers.get("MouseUp")([A.button,this.coord.x,this.coord.y])}handleMouseWheel(A){this.videoElementProvider.isVideoReady()&&this.mouseController.toStreamerMessagesProvider.toStreamerHandlers.get("MouseWheel")([A.wheelDelta,this.coord.x,this.coord.y])}handleMouseDouble(A){this.videoElementProvider.isVideoReady()&&this.mouseController.toStreamerMessagesProvider.toStreamerHandlers.get("MouseDouble")([A.button,this.coord.x,this.coord.y])}handlePressMouseButtons(A){this.videoElementProvider.isVideoReady()&&this.mouseController.pressMouseButtons(A.buttons,this.x,this.y)}handleReleaseMouseButtons(A){this.videoElementProvider.isVideoReady()&&this.mouseController.releaseMouseButtons(A.buttons,this.x,this.y)}}class xd{constructor(A){this.mouseController=A}unregisterMouseEvents(){}updateMouseMovePosition(A){if(!this.mouseController.videoElementProvider.isVideoReady())return;h.Log(h.GetStackTrace(),"MouseMove",6);const e=this.mouseController.coordinateConverter.normalizeAndQuantizeUnsigned(A.offsetX,A.offsetY),t=this.mouseController.coordinateConverter.normalizeAndQuantizeSigned(A.movementX,A.movementY);this.mouseController.toStreamerMessagesProvider.toStreamerHandlers.get("MouseMove")([e.x,e.y,t.x,t.y]),A.preventDefault()}handleMouseDown(A){if(!this.mouseController.videoElementProvider.isVideoReady())return;h.Log(h.GetStackTrace(),"onMouse Down",6);const e=this.mouseController.coordinateConverter.normalizeAndQuantizeUnsigned(A.offsetX,A.offsetY);this.mouseController.toStreamerMessagesProvider.toStreamerHandlers.get("MouseDown")([A.button,e.x,e.y]),A.preventDefault()}handleMouseUp(A){if(!this.mouseController.videoElementProvider.isVideoReady())return;h.Log(h.GetStackTrace(),"onMouse Up",6);const e=this.mouseController.coordinateConverter.normalizeAndQuantizeUnsigned(A.offsetX,A.offsetY);this.mouseController.toStreamerMessagesProvider.toStreamerHandlers.get("MouseUp")([A.button,e.x,e.y]),A.preventDefault()}handleContextMenu(A){this.mouseController.videoElementProvider.isVideoReady()&&A.preventDefault()}handleMouseWheel(A){if(!this.mouseController.videoElementProvider.isVideoReady())return;const e=this.mouseController.coordinateConverter.normalizeAndQuantizeUnsigned(A.offsetX,A.offsetY);this.mouseController.toStreamerMessagesProvider.toStreamerHandlers.get("MouseWheel")([A.wheelDelta,e.x,e.y]),A.preventDefault()}handleMouseDouble(A){if(!this.mouseController.videoElementProvider.isVideoReady())return;const e=this.mouseController.coordinateConverter.normalizeAndQuantizeUnsigned(A.offsetX,A.offsetY);this.mouseController.toStreamerMessagesProvider.toStreamerHandlers.get("MouseDouble")([A.button,e.x,e.y])}handlePressMouseButtons(A){this.mouseController.videoElementProvider.isVideoReady()&&(h.Log(h.GetStackTrace(),"onMouse press",6),this.mouseController.pressMouseButtons(A.buttons,A.offsetX,A.offsetY))}handleReleaseMouseButtons(A){this.mouseController.videoElementProvider.isVideoReady()&&(h.Log(h.GetStackTrace(),"onMouse release",6),this.mouseController.releaseMouseButtons(A.buttons,A.offsetX,A.offsetY))}}class kd{constructor(A,e,t,n){this.mouseEventListenerTracker=new we,this.toStreamerMessagesProvider=A,this.coordinateConverter=t,this.videoElementProvider=e,this.activeKeysProvider=n,this.registerMouseEnterAndLeaveEvents()}unregisterMouseEvents(){this.mouseEventListenerTracker.unregisterAll()}registerLockedMouseEvents(A){const e=this.videoElementProvider.getVideoParentElement(),t=new Kd(this.videoElementProvider,A,this.activeKeysProvider);if(e.requestPointerLock=e.requestPointerLock||e.mozRequestPointerLock,document.exitPointerLock=document.exitPointerLock||document.mozExitPointerLock,e.requestPointerLock){const l=()=>{e.requestPointerLock()};e.addEventListener("click",l),this.mouseEventListenerTracker.addUnregisterCallback(()=>e.removeEventListener("click",l))}const n=()=>t.lockStateChange();document.addEventListener("pointerlockchange",n,!1),document.addEventListener("mozpointerlockchange",n,!1),this.mouseEventListenerTracker.addUnregisterCallback(()=>document.removeEventListener("pointerlockchange",n,!1)),this.mouseEventListenerTracker.addUnregisterCallback(()=>document.removeEventListener("mozpointerlockchange",n,!1));const s=l=>t.handleMouseDown(l),i=l=>t.handleMouseUp(l),o=l=>t.handleMouseWheel(l),a=l=>t.handleMouseDouble(l);e.addEventListener("mousedown",s),e.addEventListener("mouseup",i),e.addEventListener("wheel",o),e.addEventListener("dblclick",a),this.mouseEventListenerTracker.addUnregisterCallback(()=>e.removeEventListener("mousedown",s)),this.mouseEventListenerTracker.addUnregisterCallback(()=>e.removeEventListener("mouseup",i)),this.mouseEventListenerTracker.addUnregisterCallback(()=>e.removeEventListener("wheel",o)),this.mouseEventListenerTracker.addUnregisterCallback(()=>e.removeEventListener("dblclick",a)),this.mouseEventListenerTracker.addUnregisterCallback(()=>t.unregisterMouseEvents()),this.mouseEventListenerTracker.addUnregisterCallback(()=>{!document.exitPointerLock||document.pointerLockElement!==e&&document.mozPointerLockElement!==e||document.exitPointerLock()})}registerHoveringMouseEvents(A){const e=this.videoElementProvider.getVideoParentElement(),t=new xd(A),n=c=>t.updateMouseMovePosition(c),s=c=>t.handleMouseDown(c),i=c=>t.handleMouseUp(c),o=c=>t.handleContextMenu(c),a=c=>t.handleMouseWheel(c),l=c=>t.handleMouseDouble(c);e.addEventListener("mousemove",n),e.addEventListener("mousedown",s),e.addEventListener("mouseup",i),e.addEventListener("contextmenu",o),e.addEventListener("wheel",a),e.addEventListener("dblclick",l),this.mouseEventListenerTracker.addUnregisterCallback(()=>e.removeEventListener("mousemove",n)),this.mouseEventListenerTracker.addUnregisterCallback(()=>e.removeEventListener("mousedown",s)),this.mouseEventListenerTracker.addUnregisterCallback(()=>e.removeEventListener("mouseup",i)),this.mouseEventListenerTracker.addUnregisterCallback(()=>e.removeEventListener("contextmenu",o)),this.mouseEventListenerTracker.addUnregisterCallback(()=>e.removeEventListener("wheel",a)),this.mouseEventListenerTracker.addUnregisterCallback(()=>e.removeEventListener("dblclick",l)),this.mouseEventListenerTracker.addUnregisterCallback(()=>t.unregisterMouseEvents())}registerMouseEnterAndLeaveEvents(){const A=this.videoElementProvider.getVideoParentElement(),e=n=>{this.videoElementProvider.isVideoReady()&&(h.Log(h.GetStackTrace(),"Mouse Entered",6),this.sendMouseEnter(),this.pressMouseButtons(n.buttons,n.x,n.y))},t=n=>{this.videoElementProvider.isVideoReady()&&(h.Log(h.GetStackTrace(),"Mouse Left",6),this.sendMouseLeave(),this.releaseMouseButtons(n.buttons,n.x,n.y))};A.addEventListener("mouseenter",e),A.addEventListener("mouseleave",t),this.mouseEventListenerTracker.addUnregisterCallback(()=>A.removeEventListener("mouseenter",e)),this.mouseEventListenerTracker.addUnregisterCallback(()=>A.removeEventListener("mouseleave",t))}releaseMouseButtons(A,e,t){const n=this.coordinateConverter.normalizeAndQuantizeUnsigned(e,t);A&lA.primaryButton&&this.sendMouseUp(eA.mainButton,n.x,n.y),A&lA.secondaryButton&&this.sendMouseUp(eA.secondaryButton,n.x,n.y),A&lA.auxiliaryButton&&this.sendMouseUp(eA.auxiliaryButton,n.x,n.y),A&lA.fourthButton&&this.sendMouseUp(eA.fourthButton,n.x,n.y),A&lA.fifthButton&&this.sendMouseUp(eA.fifthButton,n.x,n.y)}pressMouseButtons(A,e,t){if(!this.videoElementProvider.isVideoReady())return;const n=this.coordinateConverter.normalizeAndQuantizeUnsigned(e,t);A&lA.primaryButton&&this.sendMouseDown(eA.mainButton,n.x,n.y),A&lA.secondaryButton&&this.sendMouseDown(eA.secondaryButton,n.x,n.y),A&lA.auxiliaryButton&&this.sendMouseDown(eA.auxiliaryButton,n.x,n.y),A&lA.fourthButton&&this.sendMouseDown(eA.fourthButton,n.x,n.y),A&lA.fifthButton&&this.sendMouseDown(eA.fifthButton,n.x,n.y)}sendMouseEnter(){this.videoElementProvider.isVideoReady()&&this.toStreamerMessagesProvider.toStreamerHandlers.get("MouseEnter")()}sendMouseLeave(){this.videoElementProvider.isVideoReady()&&this.toStreamerMessagesProvider.toStreamerHandlers.get("MouseLeave")()}sendMouseDown(A,e,t){this.videoElementProvider.isVideoReady()&&(h.Log(h.GetStackTrace(),`mouse button ${A} down at (${e}, ${t})`,6),this.toStreamerMessagesProvider.toStreamerHandlers.get("MouseDown")([A,e,t]))}sendMouseUp(A,e,t){if(!this.videoElementProvider.isVideoReady())return;h.Log(h.GetStackTrace(),`mouse button ${A} up at (${e}, ${t})`,6);const n=this.coordinateConverter.normalizeAndQuantizeUnsigned(e,t);this.toStreamerMessagesProvider.toStreamerHandlers.get("MouseUp")([A,n.x,n.y])}}class Gd{constructor(A,e,t){this.fingers=[9,8,7,6,5,4,3,2,1,0],this.fingerIds=new Map,this.maxByteValue=255,this.touchEventListenerTracker=new we,this.toStreamerMessagesProvider=A,this.videoElementProvider=e,this.coordinateConverter=t,this.videoElementParent=e.getVideoElement();const n=a=>this.onTouchStart(a),s=a=>this.onTouchEnd(a),i=a=>this.onTouchMove(a);this.videoElementParent.addEventListener("touchstart",n,{passive:!1}),this.videoElementParent.addEventListener("touchend",s,{passive:!1}),this.videoElementParent.addEventListener("touchmove",i,{passive:!1}),this.touchEventListenerTracker.addUnregisterCallback(()=>this.videoElementParent.removeEventListener("touchstart",n)),this.touchEventListenerTracker.addUnregisterCallback(()=>this.videoElementParent.removeEventListener("touchend",s)),this.touchEventListenerTracker.addUnregisterCallback(()=>this.videoElementParent.removeEventListener("touchmove",i)),h.Log(h.GetStackTrace(),"Touch Events Registered",6);const o=a=>{a.preventDefault()};document.addEventListener("touchmove",o,{passive:!1}),this.touchEventListenerTracker.addUnregisterCallback(()=>document.removeEventListener("touchmove",o))}unregisterTouchEvents(){this.touchEventListenerTracker.unregisterAll()}rememberTouch(A){const e=this.fingers.pop();e===void 0&&h.Log(h.GetStackTrace(),"exhausted touch identifiers",6),this.fingerIds.set(A.identifier,e)}forgetTouch(A){this.fingers.push(this.fingerIds.get(A.identifier)),this.fingers.sort(function(e,t){return t-e}),this.fingerIds.delete(A.identifier)}onTouchStart(A){if(this.videoElementProvider.isVideoReady()){for(let e=0;e<A.changedTouches.length;e++)this.rememberTouch(A.changedTouches[e]);h.Log(h.GetStackTrace(),"touch start",6),this.emitTouchData("TouchStart",A.changedTouches),A.preventDefault()}}onTouchEnd(A){if(this.videoElementProvider.isVideoReady()){h.Log(h.GetStackTrace(),"touch end",6),this.emitTouchData("TouchEnd",A.changedTouches);for(let e=0;e<A.changedTouches.length;e++)this.forgetTouch(A.changedTouches[e]);A.preventDefault()}}onTouchMove(A){this.videoElementProvider.isVideoReady()&&(h.Log(h.GetStackTrace(),"touch move",6),this.emitTouchData("TouchMove",A.touches),A.preventDefault())}emitTouchData(A,e){if(!this.videoElementProvider.isVideoReady())return;const t=this.videoElementProvider.getVideoParentElement().getBoundingClientRect(),n=this.toStreamerMessagesProvider.toStreamerHandlers;for(let s=0;s<e.length;s++){const o=e[s],a=o.clientX-t.left,l=o.clientY-t.top;h.Log(h.GetStackTrace(),`F${this.fingerIds.get(o.identifier)}=(${a}, ${l})`,6);const c=this.coordinateConverter.normalizeAndQuantizeUnsigned(a,l);switch(A){case"TouchStart":n.get("TouchStart")([1,c.x,c.y,this.fingerIds.get(o.identifier),this.maxByteValue*o.force,c.inRange?1:0]);break;case"TouchEnd":n.get("TouchEnd")([1,c.x,c.y,this.fingerIds.get(o.identifier),this.maxByteValue*o.force,c.inRange?1:0]);break;case"TouchMove":n.get("TouchMove")([1,c.x,c.y,this.fingerIds.get(o.identifier),this.maxByteValue*o.force,c.inRange?1:0])}}}}class Nd{constructor(A){this.gamePadEventListenerTracker=new we,this.toStreamerMessagesProvider=A,this.requestAnimationFrame=(window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.requestAnimationFrame).bind(window);const e=window;if("GamepadEvent"in e){const t=s=>this.gamePadConnectHandler(s),n=s=>this.gamePadDisconnectHandler(s);window.addEventListener("gamepadconnected",t),window.addEventListener("gamepaddisconnected",n),this.gamePadEventListenerTracker.addUnregisterCallback(()=>window.removeEventListener("gamepadconnected",t)),this.gamePadEventListenerTracker.addUnregisterCallback(()=>window.removeEventListener("gamepaddisconnected",n))}else if("WebKitGamepadEvent"in e){const t=s=>this.gamePadConnectHandler(s),n=s=>this.gamePadDisconnectHandler(s);window.addEventListener("webkitgamepadconnected",t),window.addEventListener("webkitgamepaddisconnected",n),this.gamePadEventListenerTracker.addUnregisterCallback(()=>window.removeEventListener("webkitgamepadconnected",t)),this.gamePadEventListenerTracker.addUnregisterCallback(()=>window.removeEventListener("webkitgamepaddisconnected",n))}if(this.controllers=[],navigator.getGamepads)for(const t of navigator.getGamepads())t&&this.gamePadConnectHandler(new GamepadEvent("gamepadconnected",{gamepad:t}))}unregisterGamePadEvents(){this.gamePadEventListenerTracker.unregisterAll();for(const A of this.controllers)A.id!==void 0&&this.onGamepadDisconnected(A.id);this.controllers=[],this.onGamepadConnected=()=>{},this.onGamepadDisconnected=()=>{}}gamePadConnectHandler(A){h.Log(h.GetStackTrace(),"Gamepad connect handler",6);const e=A.gamepad,t={currentState:e,prevState:e,id:void 0};this.controllers.push(t),this.controllers[e.index].currentState=e,this.controllers[e.index].prevState=e,h.Log(h.GetStackTrace(),"gamepad: "+e.id+" connected",6),window.requestAnimationFrame(()=>this.updateStatus()),this.onGamepadConnected()}gamePadDisconnectHandler(A){h.Log(h.GetStackTrace(),"Gamepad disconnect handler",6),h.Log(h.GetStackTrace(),"gamepad: "+A.gamepad.id+" disconnected",6);const e=this.controllers[A.gamepad.index];delete this.controllers[A.gamepad.index],this.controllers=this.controllers.filter(t=>t!==void 0),this.onGamepadDisconnected(e.id)}scanGamePads(){const A=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads():[];for(let e=0;e<A.length;e++)A[e]&&A[e].index in this.controllers&&(this.controllers[A[e].index].currentState=A[e])}updateStatus(){this.scanGamePads();const A=this.toStreamerMessagesProvider.toStreamerHandlers;for(const e of this.controllers){const t=e.id===void 0?this.controllers.indexOf(e):e.id,n=e.currentState;for(let s=0;s<e.currentState.buttons.length;s++){const i=e.currentState.buttons[s],o=e.prevState.buttons[s];i.pressed?s==fe.LeftTrigger?A.get("GamepadAnalog")([t,5,i.value]):s==fe.RightTrigger?A.get("GamepadAnalog")([t,6,i.value]):A.get("GamepadButtonPressed")([t,s,o.pressed?1:0]):!i.pressed&&o.pressed&&(s==fe.LeftTrigger?A.get("GamepadAnalog")([t,5,0]):s==fe.RightTrigger?A.get("GamepadAnalog")([t,6,0]):A.get("GamepadButtonReleased")([t,s]))}for(let s=0;s<n.axes.length;s+=2){const i=parseFloat(n.axes[s].toFixed(4)),o=-parseFloat(n.axes[s+1].toFixed(4));A.get("GamepadAnalog")([t,s+1,i]),A.get("GamepadAnalog")([t,s+2,o])}this.controllers[t].prevState=n}this.controllers.length>0&&this.requestAnimationFrame(()=>this.updateStatus())}onGamepadResponseReceived(A){for(const e of this.controllers)if(e.id===void 0){e.id=A;break}}onGamepadConnected(){}onGamepadDisconnected(A){}}(function(r){r[r.RightClusterBottomButton=0]="RightClusterBottomButton",r[r.RightClusterRightButton=1]="RightClusterRightButton",r[r.RightClusterLeftButton=2]="RightClusterLeftButton",r[r.RightClusterTopButton=3]="RightClusterTopButton",r[r.LeftShoulder=4]="LeftShoulder",r[r.RightShoulder=5]="RightShoulder",r[r.LeftTrigger=6]="LeftTrigger",r[r.RightTrigger=7]="RightTrigger",r[r.SelectOrBack=8]="SelectOrBack",r[r.StartOrForward=9]="StartOrForward",r[r.LeftAnalogPress=10]="LeftAnalogPress",r[r.RightAnalogPress=11]="RightAnalogPress",r[r.LeftClusterTopButton=12]="LeftClusterTopButton",r[r.LeftClusterBottomButton=13]="LeftClusterBottomButton",r[r.LeftClusterLeftButton=14]="LeftClusterLeftButton",r[r.LeftClusterRightButton=15]="LeftClusterRightButton",r[r.CentreButton=16]="CentreButton",r[r.LeftStickHorizontal=0]="LeftStickHorizontal",r[r.LeftStickVertical=1]="LeftStickVertical",r[r.RightStickHorizontal=2]="RightStickHorizontal",r[r.RightStickVertical=3]="RightStickVertical"})(fe||(fe={}));class _d{constructor(A,e,t){this.activeKeys=new Vd,this.toStreamerMessagesProvider=A,this.videoElementProvider=e,this.coordinateConverter=t}registerKeyBoard(A){h.Log(h.GetStackTrace(),"Register Keyboard Events",7);const e=new Pd(this.toStreamerMessagesProvider,A,this.activeKeys);return e.registerKeyBoardEvents(),e}registerMouse(A){h.Log(h.GetStackTrace(),"Register Mouse Events",7);const e=new kd(this.toStreamerMessagesProvider,this.videoElementProvider,this.coordinateConverter,this.activeKeys);switch(A){case qA.LockedMouse:e.registerLockedMouseEvents(e);break;case qA.HoveringMouse:e.registerHoveringMouseEvents(e);break;default:h.Info(h.GetStackTrace(),"unknown Control Scheme Type Defaulting to Locked Mouse Events"),e.registerLockedMouseEvents(e)}return e}registerTouch(A,e){if(h.Log(h.GetStackTrace(),"Registering Touch",6),A){const t=new Dd(this.toStreamerMessagesProvider,this.videoElementProvider,this.coordinateConverter);return t.setVideoElementParentClientRect(e),t}return new Gd(this.toStreamerMessagesProvider,this.videoElementProvider,this.coordinateConverter)}registerGamePad(){return h.Log(h.GetStackTrace(),"Register Game Pad",7),new Nd(this.toStreamerMessagesProvider)}}class Vd{constructor(){this.activeKeys=[],this.activeKeys=[]}getActiveKeys(){return this.activeKeys}}class Od{constructor(A,e){this.lastTimeResized=new Date().getTime(),this.videoElement=document.createElement("video"),this.config=e,this.videoElement.id="streamingVideo",this.videoElement.disablePictureInPicture=!0,this.videoElement.playsInline=!0,this.videoElement.style.width="100%",this.videoElement.style.height="100%",this.videoElement.style.position="absolute",this.videoElement.style.pointerEvents="all",A.appendChild(this.videoElement),this.onResizePlayerCallback=()=>{console.log("Resolution changed, restyling player, did you forget to override this function?")},this.onMatchViewportResolutionCallback=()=>{console.log("Resolution changed and match viewport resolution is turned on, did you forget to override this function?")},this.videoElement.onclick=()=>{this.audioElement!=null&&this.audioElement.paused&&this.audioElement.play(),this.videoElement.paused&&this.videoElement.play()},this.videoElement.onloadedmetadata=()=>{this.onVideoInitialized()},window.addEventListener("resize",()=>this.resizePlayerStyle(),!0),window.addEventListener("orientationchange",()=>this.onOrientationChange())}setAudioElement(A){this.audioElement=A}play(){return this.videoElement.muted=this.config.isFlagEnabled(U.StartVideoMuted),this.videoElement.autoplay=this.config.isFlagEnabled(U.AutoPlayVideo),this.videoElement.play()}isPaused(){return this.videoElement.paused}isVideoReady(){return this.videoElement.readyState!==void 0&&this.videoElement.readyState>0}hasVideoSource(){return this.videoElement.srcObject!==void 0&&this.videoElement.srcObject!==null}getVideoElement(){return this.videoElement}getVideoParentElement(){return this.videoElement.parentElement}setVideoEnabled(A){this.videoElement.srcObject.getTracks().forEach(e=>e.enabled=A)}onVideoInitialized(){}onOrientationChange(){clearTimeout(this.orientationChangeTimeout),this.orientationChangeTimeout=window.setTimeout(()=>{this.resizePlayerStyle()},500)}resizePlayerStyle(){const A=this.getVideoParentElement();A&&(this.updateVideoStreamSize(),A.classList.contains("fixed-size")||this.resizePlayerStyleToFillParentElement(),this.onResizePlayerCallback())}resizePlayerStyleToFillParentElement(){this.getVideoParentElement().setAttribute("style","top: 0px; left: 0px; width: 100%; height: 100%; cursor: default;")}updateVideoStreamSize(){if(this.config.isFlagEnabled(U.MatchViewportResolution))if(new Date().getTime()-this.lastTimeResized>300){const A=this.getVideoParentElement();if(!A)return;this.onMatchViewportResolutionCallback(A.clientWidth,A.clientHeight),this.lastTimeResized=new Date().getTime()}else h.Log(h.GetStackTrace(),"Resizing too often - skipping",6),clearTimeout(this.resizeTimeoutHandle),this.resizeTimeoutHandle=window.setTimeout(()=>this.updateVideoStreamSize(),100)}}class Va{constructor(){this.map=new Map,this.reverseMap=new Map}getFromKey(A){return this.map.get(A)}getFromValue(A){return this.reverseMap.get(A)}add(A,e){this.map.set(A,e),this.reverseMap.set(e,A)}remove(A,e){this.map.delete(A),this.reverseMap.delete(e)}}class Wd{constructor(){this.toStreamerHandlers=new Map,this.fromStreamerHandlers=new Map,this.toStreamerMessages=new Va,this.fromStreamerMessages=new Va}populateDefaultProtocol(){this.toStreamerMessages.add("IFrameRequest",{id:0,byteLength:0,structure:[]}),this.toStreamerMessages.add("RequestQualityControl",{id:1,byteLength:0,structure:[]}),this.toStreamerMessages.add("FpsRequest",{id:2,byteLength:0,structure:[]}),this.toStreamerMessages.add("AverageBitrateRequest",{id:3,byteLength:0,structure:[]}),this.toStreamerMessages.add("StartStreaming",{id:4,byteLength:0,structure:[]}),this.toStreamerMessages.add("StopStreaming",{id:5,byteLength:0,structure:[]}),this.toStreamerMessages.add("LatencyTest",{id:6,byteLength:0,structure:[]}),this.toStreamerMessages.add("RequestInitialSettings",{id:7,byteLength:0,structure:[]}),this.toStreamerMessages.add("TestEcho",{id:8,byteLength:0,structure:[]}),this.toStreamerMessages.add("UIInteraction",{id:50,byteLength:0,structure:[]}),this.toStreamerMessages.add("Command",{id:51,byteLength:0,structure:[]}),this.toStreamerMessages.add("KeyDown",{id:60,byteLength:2,structure:["uint8","uint8"]}),this.toStreamerMessages.add("KeyUp",{id:61,byteLength:1,structure:["uint8"]}),this.toStreamerMessages.add("KeyPress",{id:62,byteLength:2,structure:["uint16"]}),this.toStreamerMessages.add("MouseEnter",{id:70,byteLength:0,structure:[]}),this.toStreamerMessages.add("MouseLeave",{id:71,byteLength:0,structure:[]}),this.toStreamerMessages.add("MouseDown",{id:72,byteLength:5,structure:["uint8","uint16","uint16"]}),this.toStreamerMessages.add("MouseUp",{id:73,byteLength:5,structure:["uint8","uint16","uint16"]}),this.toStreamerMessages.add("MouseMove",{id:74,byteLength:8,structure:["uint16","uint16","int16","int16"]}),this.toStreamerMessages.add("MouseWheel",{id:75,byteLength:6,structure:["int16","uint16","uint16"]}),this.toStreamerMessages.add("MouseDouble",{id:76,byteLength:5,structure:["uint8","uint16","uint16"]}),this.toStreamerMessages.add("TouchStart",{id:80,byteLength:8,structure:["uint8","uint16","uint16","uint8","uint8","uint8"]}),this.toStreamerMessages.add("TouchEnd",{id:81,byteLength:8,structure:["uint8","uint16","uint16","uint8","uint8","uint8"]}),this.toStreamerMessages.add("TouchMove",{id:82,byteLength:8,structure:["uint8","uint16","uint16","uint8","uint8","uint8"]}),this.toStreamerMessages.add("GamepadConnected",{id:93,byteLength:0,structure:[]}),this.toStreamerMessages.add("GamepadButtonPressed",{id:90,byteLength:3,structure:["uint8","uint8","uint8"]}),this.toStreamerMessages.add("GamepadButtonReleased",{id:91,byteLength:3,structure:["uint8","uint8","uint8"]}),this.toStreamerMessages.add("GamepadAnalog",{id:92,byteLength:10,structure:["uint8","uint8","double"]}),this.toStreamerMessages.add("GamepadDisconnected",{id:94,byteLength:1,structure:["uint8"]}),this.fromStreamerMessages.add("QualityControlOwnership",0),this.fromStreamerMessages.add("Response",1),this.fromStreamerMessages.add("Command",2),this.fromStreamerMessages.add("FreezeFrame",3),this.fromStreamerMessages.add("UnfreezeFrame",4),this.fromStreamerMessages.add("VideoEncoderAvgQP",5),this.fromStreamerMessages.add("LatencyTest",6),this.fromStreamerMessages.add("InitialSettings",7),this.fromStreamerMessages.add("FileExtension",8),this.fromStreamerMessages.add("FileMimeType",9),this.fromStreamerMessages.add("FileContents",10),this.fromStreamerMessages.add("TestEcho",11),this.fromStreamerMessages.add("InputControlOwnership",12),this.fromStreamerMessages.add("GamepadResponse",13),this.fromStreamerMessages.add("Protocol",255)}registerMessageHandler(A,e,t){switch(A){case b.ToStreamer:this.toStreamerHandlers.set(e,t);break;case b.FromStreamer:this.fromStreamerHandlers.set(e,t);break;default:h.Log(h.GetStackTrace(),`Unknown message direction ${A}`)}}}(function(r){r[r.ToStreamer=0]="ToStreamer",r[r.FromStreamer=1]="FromStreamer"})(b||(b={}));class Xd{constructor(){this.responseEventListeners=new Map}addResponseEventListener(A,e){this.responseEventListeners.set(A,e)}removeResponseEventListener(A){this.responseEventListeners.delete(A)}onResponse(A){h.Log(h.GetStackTrace(),"DataChannelReceiveMessageType.Response",6);const e=new TextDecoder("utf-16").decode(A.slice(1));h.Log(h.GetStackTrace(),e,6),this.responseEventListeners.forEach(t=>{t(e)})}}class Jd{constructor(A,e){this.dataChannelSender=A,this.toStreamerMessagesMapProvider=e}sendLatencyTest(A){this.sendDescriptor("LatencyTest",A)}emitCommand(A){this.sendDescriptor("Command",A)}emitUIInteraction(A){this.sendDescriptor("UIInteraction",A)}sendDescriptor(A,e){const t=JSON.stringify(e),n=this.toStreamerMessagesMapProvider.toStreamerMessages.getFromKey(A);n===void 0&&h.Error(h.GetStackTrace(),`Attempted to emit descriptor with message type: ${A}, but the frontend hasn't been configured to send such a message. Check you've added the message type in your cpp`),h.Log(h.GetStackTrace(),"Sending: "+e,6);const s=new DataView(new ArrayBuffer(3+2*t.length));let i=0;s.setUint8(i,n.id),i++,s.setUint16(i,t.length,!0),i+=2;for(let o=0;o<t.length;o++)s.setUint16(i,t.charCodeAt(o),!0),i+=2;this.dataChannelSender.canSend()?this.dataChannelSender.sendData(s.buffer):h.Info(h.GetStackTrace(),`Data channel cannot send yet, skipping sending descriptor message: ${A} - ${t}`)}}class zd{constructor(A,e){this.dataChannelSender=A,this.toStreamerMessagesMapProvider=e}sendMessageToStreamer(A,e){e===void 0&&(e=[]);const t=this.toStreamerMessagesMapProvider.toStreamerMessages.getFromKey(A);if(t===void 0)return void h.Error(h.GetStackTrace(),`Attempted to send a message to the streamer with message type: ${A}, but the frontend hasn't been configured to send such a message. Check you've added the message type in your cpp`);const n=new DataView(new ArrayBuffer(t.byteLength+1));n.setUint8(0,t.id);let s=1;e.forEach((i,o)=>{switch(t.structure[o]){case"uint8":n.setUint8(s,i),s+=1;break;case"uint16":n.setUint16(s,i,!0),s+=2;break;case"int16":n.setInt16(s,i,!0),s+=2;break;case"float":n.setFloat32(s,i,!0),s+=4;break;case"double":n.setFloat64(s,i,!0),s+=8}}),this.dataChannelSender.canSend()?this.dataChannelSender.sendData(n.buffer):h.Info(h.GetStackTrace(),`Data channel cannot send yet, skipping sending message: ${A} - ${new Uint8Array(n.buffer)}`)}}class Yd{constructor(A){this.sendMessageController=A}SendRequestQualityControl(){this.sendMessageController.sendMessageToStreamer("RequestQualityControl")}SendMaxFpsRequest(){this.sendMessageController.sendMessageToStreamer("FpsRequest")}SendAverageBitrateRequest(){this.sendMessageController.sendMessageToStreamer("AverageBitrateRequest")}SendStartStreaming(){this.sendMessageController.sendMessageToStreamer("StartStreaming")}SendStopStreaming(){this.sendMessageController.sendMessageToStreamer("StopStreaming")}SendRequestInitialSettings(){this.sendMessageController.sendMessageToStreamer("RequestInitialSettings")}}class $d{constructor(A){this.dataChannelProvider=A}canSend(){return this.dataChannelProvider.getDataChannelInstance().dataChannel!==void 0&&this.dataChannelProvider.getDataChannelInstance().dataChannel.readyState=="open"}sendData(A){const e=this.dataChannelProvider.getDataChannelInstance();e.dataChannel.readyState=="open"?(e.dataChannel.send(A),h.Log(h.GetStackTrace(),`Message Sent: ${new Uint8Array(A)}`,6),this.resetAfkWarningTimerOnDataSend()):h.Error(h.GetStackTrace(),`Message Failed: ${new Uint8Array(A)}`)}resetAfkWarningTimerOnDataSend(){}}class Zd{constructor(A){this.videoElementProvider=A,this.normalizeAndQuantizeUnsignedFunc=()=>{throw new Error("Normalize and quantize unsigned, method not implemented.")},this.normalizeAndQuantizeSignedFunc=()=>{throw new Error("Normalize and unquantize signed, method not implemented.")},this.denormalizeAndUnquantizeUnsignedFunc=()=>{throw new Error("Denormalize and unquantize unsigned, method not implemented.")}}normalizeAndQuantizeUnsigned(A,e){return this.normalizeAndQuantizeUnsignedFunc(A,e)}unquantizeAndDenormalizeUnsigned(A,e){return this.denormalizeAndUnquantizeUnsignedFunc(A,e)}normalizeAndQuantizeSigned(A,e){return this.normalizeAndQuantizeSignedFunc(A,e)}setupNormalizeAndQuantize(){if(this.videoElementParent=this.videoElementProvider.getVideoParentElement(),this.videoElement=this.videoElementProvider.getVideoElement(),this.videoElementParent&&this.videoElement){const A=this.videoElementParent.clientWidth||1,e=this.videoElementParent.clientHeight||1,t=this.videoElement.videoWidth||1,n=e/A,s=(this.videoElement.videoHeight||1)/t;n>s?(h.Log(h.GetStackTrace(),"Setup Normalize and Quantize for playerAspectRatio > videoAspectRatio",6),this.ratio=n/s,this.normalizeAndQuantizeUnsignedFunc=(i,o)=>this.normalizeAndQuantizeUnsignedPlayerBigger(i,o),this.normalizeAndQuantizeSignedFunc=(i,o)=>this.normalizeAndQuantizeSignedPlayerBigger(i,o),this.denormalizeAndUnquantizeUnsignedFunc=(i,o)=>this.denormalizeAndUnquantizeUnsignedPlayerBigger(i,o)):(h.Log(h.GetStackTrace(),"Setup Normalize and Quantize for playerAspectRatio <= videoAspectRatio",6),this.ratio=s/n,this.normalizeAndQuantizeUnsignedFunc=(i,o)=>this.normalizeAndQuantizeUnsignedPlayerSmaller(i,o),this.normalizeAndQuantizeSignedFunc=(i,o)=>this.normalizeAndQuantizeSignedPlayerSmaller(i,o),this.denormalizeAndUnquantizeUnsignedFunc=(i,o)=>this.denormalizeAndUnquantizeUnsignedPlayerSmaller(i,o))}}normalizeAndQuantizeUnsignedPlayerBigger(A,e){const t=A/this.videoElementParent.clientWidth,n=this.ratio*(e/this.videoElementParent.clientHeight-.5)+.5;return t<0||t>1||n<0||n>1?new Qr(!1,65535,65535):new Qr(!0,65536*t,65536*n)}denormalizeAndUnquantizeUnsignedPlayerBigger(A,e){const t=A/65536,n=(e/65536-.5)/this.ratio+.5;return new Rn(t*this.videoElementParent.clientWidth,n*this.videoElementParent.clientHeight)}normalizeAndQuantizeSignedPlayerBigger(A,e){const t=A/(.5*this.videoElementParent.clientWidth),n=this.ratio*e/(.5*this.videoElementParent.clientHeight);return new Oa(32767*t,32767*n)}normalizeAndQuantizeUnsignedPlayerSmaller(A,e){const t=this.ratio*(A/this.videoElementParent.clientWidth-.5)+.5,n=e/this.videoElementParent.clientHeight;return t<0||t>1||n<0||n>1?new Qr(!1,65535,65535):new Qr(!0,65536*t,65536*n)}denormalizeAndUnquantizeUnsignedPlayerSmaller(A,e){const t=(A/65536-.5)/this.ratio+.5,n=e/65536;return new Rn(t*this.videoElementParent.clientWidth,n*this.videoElementParent.clientHeight)}normalizeAndQuantizeSignedPlayerSmaller(A,e){const t=this.ratio*A/(.5*this.videoElementParent.clientWidth),n=e/(.5*this.videoElementParent.clientHeight);return new Oa(32767*t,32767*n)}}class Qr{constructor(A,e,t){this.inRange=A,this.x=e,this.y=t}}class Rn{constructor(A,e){this.x=A,this.y=e}}class Oa{constructor(A,e){this.x=A,this.y=e}}class Wa{constructor(A,e){this.shouldShowPlayOverlay=!0,this.config=A,this.pixelStreaming=e,this.responseController=new Xd,this.file=new Md,this.sdpConstraints={offerToReceiveAudio:!0,offerToReceiveVideo:!0},this.afkController=new Ta(this.config,this.pixelStreaming,this.onAfkTriggered.bind(this)),this.afkController.onAFKTimedOutCallback=()=>{this.setDisconnectMessageOverride("You have been disconnected due to inactivity"),this.closeSignalingServer()},this.freezeFrameController=new md(this.pixelStreaming.videoElementParent),this.videoPlayer=new Od(this.pixelStreaming.videoElementParent,this.config),this.videoPlayer.onVideoInitialized=()=>this.handleVideoInitialized(),this.videoPlayer.onMatchViewportResolutionCallback=(t,n)=>{const s={"Resolution.Width":t,"Resolution.Height":n};this.sendDescriptorController.emitCommand(s)},this.videoPlayer.onResizePlayerCallback=()=>{this.setUpMouseAndFreezeFrame()},this.streamController=new Cd(this.videoPlayer),this.coordinateConverter=new Zd(this.videoPlayer),this.sendrecvDataChannelController=new Ha,this.recvDataChannelController=new Ha,this.registerDataChannelEventEmitters(this.sendrecvDataChannelController),this.registerDataChannelEventEmitters(this.recvDataChannelController),this.dataChannelSender=new $d(this.sendrecvDataChannelController),this.dataChannelSender.resetAfkWarningTimerOnDataSend=()=>this.afkController.resetAfkWarningTimer(),this.streamMessageController=new Wd,this.webSocketController=new qo,this.webSocketController.onConfig=t=>this.handleOnConfigMessage(t),this.webSocketController.onStreamerList=t=>this.handleStreamerListMessage(t),this.webSocketController.onWebSocketOncloseOverlayMessage=t=>{this.pixelStreaming._onDisconnect(`Websocket disconnect (${t.code}) ${t.reason!=""?"- "+t.reason:""}`),this.setVideoEncoderAvgQP(0)},this.webSocketController.onPlayerCount=t=>{this.pixelStreaming._onPlayerCount(t.count)},this.webSocketController.onOpen.addEventListener("open",()=>{this.config.isFlagEnabled(U.BrowserSendOffer)||this.webSocketController.requestStreamerList()}),this.webSocketController.onClose.addEventListener("close",()=>{this.afkController.stopAfkWarningTimer(),this.statsTimerHandle&&this.statsTimerHandle!==void 0&&window.clearInterval(this.statsTimerHandle),this.setTouchInputEnabled(!1),this.setMouseInputEnabled(!1),this.setKeyboardInputEnabled(!1),this.setGamePadInputEnabled(!1),this.shouldReconnect&&this.config.getNumericSettingValue(M.MaxReconnectAttempts)>0&&(this.isReconnecting=!0,this.reconnectAttempt++,this.restartStreamAutomatically())}),this.sendDescriptorController=new Jd(this.dataChannelSender,this.streamMessageController),this.sendMessageController=new zd(this.dataChannelSender,this.streamMessageController),this.toStreamerMessagesController=new Yd(this.sendMessageController),this.registerMessageHandlers(),this.streamMessageController.populateDefaultProtocol(),this.inputClassesFactory=new _d(this.streamMessageController,this.videoPlayer,this.coordinateConverter),this.isUsingSFU=!1,this.isQualityController=!1,this.preferredCodec="",this.shouldReconnect=!0,this.isReconnecting=!1,this.reconnectAttempt=0,this.config._addOnOptionSettingChangedListener(V.StreamerId,t=>{t!==""&&(this.peerConnectionController.peerConnection.close(),this.peerConnectionController.createPeerConnection(this.peerConfig,this.preferredCodec),this.subscribedStream=t,this.webSocketController.sendSubscribe(t))}),this.setVideoEncoderAvgQP(-1),this.signallingUrlBuilder=()=>{let t=this.config.getTextSettingValue(ZA.SignallingServerUrl);return this.config.isFlagEnabled(U.BrowserSendOffer)&&(t+="?"+U.BrowserSendOffer+"=true"),t}}requestUnquantizedAndDenormalizeUnsigned(A,e){return this.coordinateConverter.unquantizeAndDenormalizeUnsigned(A,e)}handleOnMessage(A){const e=new Uint8Array(A.data);h.Log(h.GetStackTrace(),"Message incoming:"+e,6);const t=this.streamMessageController.fromStreamerMessages.getFromValue(e[0]);this.streamMessageController.fromStreamerHandlers.get(t)(A.data)}registerMessageHandlers(){this.streamMessageController.registerMessageHandler(b.FromStreamer,"QualityControlOwnership",A=>this.onQualityControlOwnership(A)),this.streamMessageController.registerMessageHandler(b.FromStreamer,"Response",A=>this.responseController.onResponse(A)),this.streamMessageController.registerMessageHandler(b.FromStreamer,"Command",A=>{this.onCommand(A)}),this.streamMessageController.registerMessageHandler(b.FromStreamer,"FreezeFrame",A=>this.onFreezeFrameMessage(A)),this.streamMessageController.registerMessageHandler(b.FromStreamer,"UnfreezeFrame",()=>this.invalidateFreezeFrameAndEnableVideo()),this.streamMessageController.registerMessageHandler(b.FromStreamer,"VideoEncoderAvgQP",A=>this.handleVideoEncoderAvgQP(A)),this.streamMessageController.registerMessageHandler(b.FromStreamer,"LatencyTest",A=>this.handleLatencyTestResult(A)),this.streamMessageController.registerMessageHandler(b.FromStreamer,"InitialSettings",A=>this.handleInitialSettings(A)),this.streamMessageController.registerMessageHandler(b.FromStreamer,"FileExtension",A=>this.onFileExtension(A)),this.streamMessageController.registerMessageHandler(b.FromStreamer,"FileMimeType",A=>this.onFileMimeType(A)),this.streamMessageController.registerMessageHandler(b.FromStreamer,"FileContents",A=>this.onFileContents(A)),this.streamMessageController.registerMessageHandler(b.FromStreamer,"TestEcho",()=>{}),this.streamMessageController.registerMessageHandler(b.FromStreamer,"InputControlOwnership",A=>this.onInputControlOwnership(A)),this.streamMessageController.registerMessageHandler(b.FromStreamer,"GamepadResponse",A=>this.onGamepadResponse(A)),this.streamMessageController.registerMessageHandler(b.FromStreamer,"Protocol",A=>this.onProtocolMessage(A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"IFrameRequest",()=>this.sendMessageController.sendMessageToStreamer("IFrameRequest")),this.streamMessageController.registerMessageHandler(b.ToStreamer,"RequestQualityControl",()=>this.sendMessageController.sendMessageToStreamer("RequestQualityControl")),this.streamMessageController.registerMessageHandler(b.ToStreamer,"FpsRequest",()=>this.sendMessageController.sendMessageToStreamer("FpsRequest")),this.streamMessageController.registerMessageHandler(b.ToStreamer,"AverageBitrateRequest",()=>this.sendMessageController.sendMessageToStreamer("AverageBitrateRequest")),this.streamMessageController.registerMessageHandler(b.ToStreamer,"StartStreaming",()=>this.sendMessageController.sendMessageToStreamer("StartStreaming")),this.streamMessageController.registerMessageHandler(b.ToStreamer,"StopStreaming",()=>this.sendMessageController.sendMessageToStreamer("StopStreaming")),this.streamMessageController.registerMessageHandler(b.ToStreamer,"LatencyTest",()=>this.sendMessageController.sendMessageToStreamer("LatencyTest")),this.streamMessageController.registerMessageHandler(b.ToStreamer,"RequestInitialSettings",()=>this.sendMessageController.sendMessageToStreamer("RequestInitialSettings")),this.streamMessageController.registerMessageHandler(b.ToStreamer,"TestEcho",()=>{}),this.streamMessageController.registerMessageHandler(b.ToStreamer,"UIInteraction",A=>this.sendDescriptorController.emitUIInteraction(A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"Command",A=>this.sendDescriptorController.emitCommand(A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"KeyDown",A=>this.sendMessageController.sendMessageToStreamer("KeyDown",A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"KeyUp",A=>this.sendMessageController.sendMessageToStreamer("KeyUp",A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"KeyPress",A=>this.sendMessageController.sendMessageToStreamer("KeyPress",A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"MouseEnter",A=>this.sendMessageController.sendMessageToStreamer("MouseEnter",A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"MouseLeave",A=>this.sendMessageController.sendMessageToStreamer("MouseLeave",A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"MouseDown",A=>this.sendMessageController.sendMessageToStreamer("MouseDown",A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"MouseUp",A=>this.sendMessageController.sendMessageToStreamer("MouseUp",A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"MouseMove",A=>this.sendMessageController.sendMessageToStreamer("MouseMove",A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"MouseWheel",A=>this.sendMessageController.sendMessageToStreamer("MouseWheel",A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"MouseDouble",A=>this.sendMessageController.sendMessageToStreamer("MouseDouble",A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"TouchStart",A=>this.sendMessageController.sendMessageToStreamer("TouchStart",A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"TouchEnd",A=>this.sendMessageController.sendMessageToStreamer("TouchEnd",A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"TouchMove",A=>this.sendMessageController.sendMessageToStreamer("TouchMove",A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"GamepadConnected",()=>this.sendMessageController.sendMessageToStreamer("GamepadConnected")),this.streamMessageController.registerMessageHandler(b.ToStreamer,"GamepadButtonPressed",A=>this.sendMessageController.sendMessageToStreamer("GamepadButtonPressed",A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"GamepadButtonReleased",A=>this.sendMessageController.sendMessageToStreamer("GamepadButtonReleased",A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"GamepadAnalog",A=>this.sendMessageController.sendMessageToStreamer("GamepadAnalog",A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"GamepadDisconnected",A=>this.sendMessageController.sendMessageToStreamer("GamepadDisconnected",A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"XRHMDTransform",A=>this.sendMessageController.sendMessageToStreamer("XRHMDTransform",A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"XRControllerTransform",A=>this.sendMessageController.sendMessageToStreamer("XRControllerTransform",A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"XRSystem",A=>this.sendMessageController.sendMessageToStreamer("XRSystem",A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"XRButtonTouched",A=>this.sendMessageController.sendMessageToStreamer("XRButtonTouched",A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"XRButtonPressed",A=>this.sendMessageController.sendMessageToStreamer("XRButtonPressed",A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"XRButtonReleased",A=>this.sendMessageController.sendMessageToStreamer("XRButtonReleased",A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"XRAnalog",A=>this.sendMessageController.sendMessageToStreamer("XRAnalog",A))}onCommand(A){h.Log(h.GetStackTrace(),"DataChannelReceiveMessageType.Command",6);const e=new TextDecoder("utf-16").decode(A.slice(1));h.Log(h.GetStackTrace(),"Data Channel Command: "+e,6);const t=JSON.parse(e);t.command==="onScreenKeyboard"&&this.pixelStreaming._activateOnScreenKeyboard(t)}onProtocolMessage(A){try{const e=new TextDecoder("utf-16").decode(A.slice(1)),t=JSON.parse(e);Object.prototype.hasOwnProperty.call(t,"Direction")||h.Error(h.GetStackTrace(),"Malformed protocol received. Ensure the protocol message contains a direction");const n=t.Direction;delete t.Direction,h.Log(h.GetStackTrace(),`Received new ${n==b.FromStreamer?"FromStreamer":"ToStreamer"} protocol. Updating existing protocol...`),Object.keys(t).forEach(s=>{const i=t[s];switch(n){case b.ToStreamer:if(!Object.prototype.hasOwnProperty.call(i,"id")||!Object.prototype.hasOwnProperty.call(i,"byteLength"))return void h.Error(h.GetStackTrace(),`ToStreamer->${s} protocol definition was malformed as it didn't contain at least an id and a byteLength
|
|
47
|
+
${this.PreCaptureTimeMs}`,6),this.CaptureToSendMs=this.PostCaptureTimeMs-this.PreCaptureTimeMs)}}class Rn{static setExtensionFromBytes(A,e){e.receiving||(e.mimetype="",e.extension="",e.receiving=!0,e.valid=!1,e.size=0,e.data=[],e.timestampStart=new Date().getTime(),h.Log(h.GetStackTrace(),"Received first chunk of file",6));const t=new TextDecoder("utf-16").decode(A.slice(1));h.Log(h.GetStackTrace(),t,6),e.extension=t}static setMimeTypeFromBytes(A,e){e.receiving||(e.mimetype="",e.extension="",e.receiving=!0,e.valid=!1,e.size=0,e.data=[],e.timestampStart=new Date().getTime(),h.Log(h.GetStackTrace(),"Received first chunk of file",6));const t=new TextDecoder("utf-16").decode(A.slice(1));h.Log(h.GetStackTrace(),t,6),e.mimetype=t}static setContentsFromBytes(A,e){if(!e.receiving)return;e.size=Math.ceil(new DataView(A.slice(1,5).buffer).getInt32(0,!0)/16379);const t=A.slice(5);if(e.data.push(t),h.Log(h.GetStackTrace(),`Received file chunk: ${e.data.length}/${e.size}`,6),e.data.length===e.size){e.receiving=!1,e.valid=!0,h.Log(h.GetStackTrace(),"Received complete file",6);const n=new Date().getTime()-e.timestampStart,s=Math.round(16*e.size*1024/n);h.Log(h.GetStackTrace(),`Average transfer bitrate: ${s}kb/s over ${n/1e3} seconds`,6);const i=new Blob(e.data,{type:e.mimetype}),o=document.createElement("a");o.setAttribute("href",URL.createObjectURL(i)),o.setAttribute("download",`transfer.${e.extension}`),document.body.append(o),o.remove()}else e.data.length>e.size&&(e.receiving=!1,h.Error(h.GetStackTrace(),`Received bigger file than advertised: ${e.data.length}/${e.size}`))}}class Md{constructor(){this.mimetype="",this.extension="",this.receiving=!1,this.size=0,this.data=[],this.valid=!1}}class eA{}eA.mainButton=0,eA.auxiliaryButton=1,eA.secondaryButton=2,eA.fourthButton=3,eA.fifthButton=4;class lA{}lA.primaryButton=1,lA.secondaryButton=2,lA.auxiliaryButton=4,lA.fourthButton=8,lA.fifthButton=16;class we{constructor(){this.unregisterCallbacks=[]}addUnregisterCallback(A){this.unregisterCallbacks.push(A)}unregisterAll(){for(const A of this.unregisterCallbacks)A();this.unregisterCallbacks=[]}}class Dd{constructor(A,e,t){this.touchEventListenerTracker=new we,this.toStreamerMessagesProvider=A,this.videoElementProvider=e,this.coordinateConverter=t;const n=o=>this.onTouchStart(o),s=o=>this.onTouchEnd(o),i=o=>this.onTouchMove(o);document.addEventListener("touchstart",n,{passive:!1}),document.addEventListener("touchend",s,{passive:!1}),document.addEventListener("touchmove",i,{passive:!1}),this.touchEventListenerTracker.addUnregisterCallback(()=>document.removeEventListener("touchstart",n)),this.touchEventListenerTracker.addUnregisterCallback(()=>document.removeEventListener("touchend",s)),this.touchEventListenerTracker.addUnregisterCallback(()=>document.removeEventListener("touchmove",i))}unregisterTouchEvents(){this.touchEventListenerTracker.unregisterAll()}setVideoElementParentClientRect(A){this.videoElementParentClientRect=A}onTouchStart(A){if(this.videoElementProvider.isVideoReady()){if(this.fakeTouchFinger==null){const e=A.changedTouches[0];this.fakeTouchFinger=new Rd(e.identifier,e.clientX-this.videoElementParentClientRect.left,e.clientY-this.videoElementParentClientRect.top);const t=this.videoElementProvider.getVideoParentElement(),n=new MouseEvent("mouseenter",e);t.dispatchEvent(n);const s=this.coordinateConverter.normalizeAndQuantizeUnsigned(this.fakeTouchFinger.x,this.fakeTouchFinger.y);this.toStreamerMessagesProvider.toStreamerHandlers.get("MouseDown")([eA.mainButton,s.x,s.y])}A.preventDefault()}}onTouchEnd(A){if(!this.videoElementProvider.isVideoReady())return;const e=this.videoElementProvider.getVideoParentElement(),t=this.toStreamerMessagesProvider.toStreamerHandlers;for(let n=0;n<A.changedTouches.length;n++){const s=A.changedTouches[n];if(s.identifier===this.fakeTouchFinger.id){const i=s.clientX-this.videoElementParentClientRect.left,o=s.clientY-this.videoElementParentClientRect.top,a=this.coordinateConverter.normalizeAndQuantizeUnsigned(i,o);t.get("MouseUp")([eA.mainButton,a.x,a.y]);const l=new MouseEvent("mouseleave",s);e.dispatchEvent(l),this.fakeTouchFinger=null;break}}A.preventDefault()}onTouchMove(A){if(!this.videoElementProvider.isVideoReady())return;const e=this.toStreamerMessagesProvider.toStreamerHandlers;for(let t=0;t<A.touches.length;t++){const n=A.touches[t];if(n.identifier===this.fakeTouchFinger.id){const s=n.clientX-this.videoElementParentClientRect.left,i=n.clientY-this.videoElementParentClientRect.top,o=this.coordinateConverter.normalizeAndQuantizeUnsigned(s,i),a=this.coordinateConverter.normalizeAndQuantizeSigned(s-this.fakeTouchFinger.x,i-this.fakeTouchFinger.y);e.get("MouseMove")([o.x,o.y,a.x,a.y]),this.fakeTouchFinger.x=s,this.fakeTouchFinger.y=i;break}}A.preventDefault()}}class Rd{constructor(A,e,t){this.id=A,this.x=e,this.y=t}}class cA{}cA.backSpace=8,cA.shift=16,cA.control=17,cA.alt=18,cA.rightShift=253,cA.rightControl=254,cA.rightAlt=255;class Pd{constructor(A,e,t){this.keyboardEventListenerTracker=new we,this.CodeToKeyCode={Escape:27,Digit0:48,Digit1:49,Digit2:50,Digit3:51,Digit4:52,Digit5:53,Digit6:54,Digit7:55,Digit8:56,Digit9:57,Minus:173,Equal:187,Backspace:8,Tab:9,KeyQ:81,KeyW:87,KeyE:69,KeyR:82,KeyT:84,KeyY:89,KeyU:85,KeyI:73,KeyO:79,KeyP:80,BracketLeft:219,BracketRight:221,Enter:13,ControlLeft:17,KeyA:65,KeyS:83,KeyD:68,KeyF:70,KeyG:71,KeyH:72,KeyJ:74,KeyK:75,KeyL:76,Semicolon:186,Quote:222,Backquote:192,ShiftLeft:16,Backslash:220,KeyZ:90,KeyX:88,KeyC:67,KeyV:86,KeyB:66,KeyN:78,KeyM:77,Comma:188,Period:190,Slash:191,ShiftRight:253,AltLeft:18,Space:32,CapsLock:20,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,Pause:19,ScrollLock:145,NumpadDivide:111,NumpadMultiply:106,NumpadSubtract:109,NumpadAdd:107,NumpadDecimal:110,Numpad9:105,Numpad8:104,Numpad7:103,Numpad6:102,Numpad5:101,Numpad4:100,Numpad3:99,Numpad2:98,Numpad1:97,Numpad0:96,NumLock:144,ControlRight:254,AltRight:255,Home:36,End:35,ArrowUp:38,ArrowLeft:37,ArrowRight:39,ArrowDown:40,PageUp:33,PageDown:34,Insert:45,Delete:46,ContextMenu:93},this.toStreamerMessagesProvider=A,this.config=e,this.activeKeysProvider=t}registerKeyBoardEvents(){const A=n=>this.handleOnKeyDown(n),e=n=>this.handleOnKeyUp(n),t=n=>this.handleOnKeyPress(n);document.addEventListener("keydown",A),document.addEventListener("keyup",e),document.addEventListener("keypress",t),this.keyboardEventListenerTracker.addUnregisterCallback(()=>document.removeEventListener("keydown",A)),this.keyboardEventListenerTracker.addUnregisterCallback(()=>document.removeEventListener("keyup",e)),this.keyboardEventListenerTracker.addUnregisterCallback(()=>document.removeEventListener("keypress",t))}unregisterKeyBoardEvents(){this.keyboardEventListenerTracker.unregisterAll()}handleOnKeyDown(A){const e=this.getKeycode(A);e&&(h.Log(h.GetStackTrace(),`key down ${e}, repeat = ${A.repeat}`,6),this.toStreamerMessagesProvider.toStreamerHandlers.get("KeyDown")([this.getKeycode(A),A.repeat?1:0]),this.activeKeysProvider.getActiveKeys().push(e),e===cA.backSpace&&document.dispatchEvent(new KeyboardEvent("keypress",{charCode:cA.backSpace})),this.config.isFlagEnabled(U.SuppressBrowserKeys)&&this.isKeyCodeBrowserKey(e)&&A.preventDefault())}handleOnKeyUp(A){const e=this.getKeycode(A);e&&(h.Log(h.GetStackTrace(),`key up ${e}`,6),this.toStreamerMessagesProvider.toStreamerHandlers.get("KeyUp")([e,A.repeat?1:0]),this.config.isFlagEnabled(U.SuppressBrowserKeys)&&this.isKeyCodeBrowserKey(e)&&A.preventDefault())}handleOnKeyPress(A){if(!("charCode"in A))return void h.Warning(h.GetStackTrace(),"KeyboardEvent.charCode is deprecated in this browser, cannot send key press.");const e=A.charCode;h.Log(h.GetStackTrace(),`key press ${e}`,6),this.toStreamerMessagesProvider.toStreamerHandlers.get("KeyPress")([e])}getKeycode(A){if(!("keyCode"in A)){const e=A;return e.code in this.CodeToKeyCode?this.CodeToKeyCode[e.code]:(h.Warning(h.GetStackTrace(),`Keyboard code of ${e.code} is not supported in our mapping, ignoring this key.`),null)}return A.keyCode===cA.shift&&A.code==="ShiftRight"?cA.rightShift:A.keyCode===cA.control&&A.code==="ControlRight"?cA.rightControl:A.keyCode===cA.alt&&A.code==="AltRight"?cA.rightAlt:A.keyCode}isKeyCodeBrowserKey(A){return A>=112&&A<=123||A===9}}class Kd{constructor(A,e,t){this.x=0,this.y=0,this.updateMouseMovePositionEvent=s=>{this.updateMouseMovePosition(s)},this.mouseEventListenerTracker=new we,this.videoElementProvider=A,this.mouseController=e,this.activeKeysProvider=t;const n=this.videoElementProvider.getVideoParentElement();this.x=n.getBoundingClientRect().width/2,this.y=n.getBoundingClientRect().height/2,this.coord=this.mouseController.coordinateConverter.normalizeAndQuantizeUnsigned(this.x,this.y)}unregisterMouseEvents(){this.mouseEventListenerTracker.unregisterAll()}lockStateChange(){const A=this.videoElementProvider.getVideoParentElement(),e=this.mouseController.toStreamerMessagesProvider.toStreamerHandlers;if(document.pointerLockElement===A||document.mozPointerLockElement===A)h.Log(h.GetStackTrace(),"Pointer locked",6),document.addEventListener("mousemove",this.updateMouseMovePositionEvent,!1),this.mouseEventListenerTracker.addUnregisterCallback(()=>document.removeEventListener("mousemove",this.updateMouseMovePositionEvent,!1));else{h.Log(h.GetStackTrace(),"The pointer lock status is now unlocked",6),document.removeEventListener("mousemove",this.updateMouseMovePositionEvent,!1);let t=this.activeKeysProvider.getActiveKeys();const n=new Set(t),s=[];n.forEach(i=>{}),s.forEach(i=>{e.get("KeyUp")([i])}),t=[]}}updateMouseMovePosition(A){if(!this.videoElementProvider.isVideoReady())return;const e=this.mouseController.toStreamerMessagesProvider.toStreamerHandlers,t=this.videoElementProvider.getVideoParentElement().clientWidth,n=this.videoElementProvider.getVideoParentElement().clientHeight;this.x+=A.movementX,this.y+=A.movementY,this.x>t&&(this.x-=t),this.y>n&&(this.y-=n),this.x<0&&(this.x=t+this.x),this.y<0&&(this.y=n-this.y),this.coord=this.mouseController.coordinateConverter.normalizeAndQuantizeUnsigned(this.x,this.y);const s=this.mouseController.coordinateConverter.normalizeAndQuantizeSigned(A.movementX,A.movementY);e.get("MouseMove")([this.coord.x,this.coord.y,s.x,s.y])}handleMouseDown(A){this.videoElementProvider.isVideoReady()&&this.mouseController.toStreamerMessagesProvider.toStreamerHandlers.get("MouseDown")([A.button,this.coord.x,this.coord.y])}handleMouseUp(A){this.videoElementProvider.isVideoReady()&&this.mouseController.toStreamerMessagesProvider.toStreamerHandlers.get("MouseUp")([A.button,this.coord.x,this.coord.y])}handleMouseWheel(A){this.videoElementProvider.isVideoReady()&&this.mouseController.toStreamerMessagesProvider.toStreamerHandlers.get("MouseWheel")([A.wheelDelta,this.coord.x,this.coord.y])}handleMouseDouble(A){this.videoElementProvider.isVideoReady()&&this.mouseController.toStreamerMessagesProvider.toStreamerHandlers.get("MouseDouble")([A.button,this.coord.x,this.coord.y])}handlePressMouseButtons(A){this.videoElementProvider.isVideoReady()&&this.mouseController.pressMouseButtons(A.buttons,this.x,this.y)}handleReleaseMouseButtons(A){this.videoElementProvider.isVideoReady()&&this.mouseController.releaseMouseButtons(A.buttons,this.x,this.y)}}class xd{constructor(A){this.mouseController=A}unregisterMouseEvents(){}updateMouseMovePosition(A){if(!this.mouseController.videoElementProvider.isVideoReady())return;h.Log(h.GetStackTrace(),"MouseMove",6);const e=this.mouseController.coordinateConverter.normalizeAndQuantizeUnsigned(A.offsetX,A.offsetY),t=this.mouseController.coordinateConverter.normalizeAndQuantizeSigned(A.movementX,A.movementY);this.mouseController.toStreamerMessagesProvider.toStreamerHandlers.get("MouseMove")([e.x,e.y,t.x,t.y]),A.preventDefault()}handleMouseDown(A){if(!this.mouseController.videoElementProvider.isVideoReady())return;h.Log(h.GetStackTrace(),"onMouse Down",6);const e=this.mouseController.coordinateConverter.normalizeAndQuantizeUnsigned(A.offsetX,A.offsetY);this.mouseController.toStreamerMessagesProvider.toStreamerHandlers.get("MouseDown")([A.button,e.x,e.y]),A.preventDefault()}handleMouseUp(A){if(!this.mouseController.videoElementProvider.isVideoReady())return;h.Log(h.GetStackTrace(),"onMouse Up",6);const e=this.mouseController.coordinateConverter.normalizeAndQuantizeUnsigned(A.offsetX,A.offsetY);this.mouseController.toStreamerMessagesProvider.toStreamerHandlers.get("MouseUp")([A.button,e.x,e.y]),A.preventDefault()}handleContextMenu(A){this.mouseController.videoElementProvider.isVideoReady()&&A.preventDefault()}handleMouseWheel(A){if(!this.mouseController.videoElementProvider.isVideoReady())return;const e=this.mouseController.coordinateConverter.normalizeAndQuantizeUnsigned(A.offsetX,A.offsetY);this.mouseController.toStreamerMessagesProvider.toStreamerHandlers.get("MouseWheel")([A.wheelDelta,e.x,e.y]),A.preventDefault()}handleMouseDouble(A){if(!this.mouseController.videoElementProvider.isVideoReady())return;const e=this.mouseController.coordinateConverter.normalizeAndQuantizeUnsigned(A.offsetX,A.offsetY);this.mouseController.toStreamerMessagesProvider.toStreamerHandlers.get("MouseDouble")([A.button,e.x,e.y])}handlePressMouseButtons(A){this.mouseController.videoElementProvider.isVideoReady()&&(h.Log(h.GetStackTrace(),"onMouse press",6),this.mouseController.pressMouseButtons(A.buttons,A.offsetX,A.offsetY))}handleReleaseMouseButtons(A){this.mouseController.videoElementProvider.isVideoReady()&&(h.Log(h.GetStackTrace(),"onMouse release",6),this.mouseController.releaseMouseButtons(A.buttons,A.offsetX,A.offsetY))}}class kd{constructor(A,e,t,n){this.mouseEventListenerTracker=new we,this.toStreamerMessagesProvider=A,this.coordinateConverter=t,this.videoElementProvider=e,this.activeKeysProvider=n,this.registerMouseEnterAndLeaveEvents()}unregisterMouseEvents(){this.mouseEventListenerTracker.unregisterAll()}registerLockedMouseEvents(A){const e=this.videoElementProvider.getVideoParentElement(),t=new Kd(this.videoElementProvider,A,this.activeKeysProvider);if(e.requestPointerLock=e.requestPointerLock||e.mozRequestPointerLock,document.exitPointerLock=document.exitPointerLock||document.mozExitPointerLock,e.requestPointerLock){const l=()=>{e.requestPointerLock()};e.addEventListener("click",l),this.mouseEventListenerTracker.addUnregisterCallback(()=>e.removeEventListener("click",l))}const n=()=>t.lockStateChange();document.addEventListener("pointerlockchange",n,!1),document.addEventListener("mozpointerlockchange",n,!1),this.mouseEventListenerTracker.addUnregisterCallback(()=>document.removeEventListener("pointerlockchange",n,!1)),this.mouseEventListenerTracker.addUnregisterCallback(()=>document.removeEventListener("mozpointerlockchange",n,!1));const s=l=>t.handleMouseDown(l),i=l=>t.handleMouseUp(l),o=l=>t.handleMouseWheel(l),a=l=>t.handleMouseDouble(l);e.addEventListener("mousedown",s),e.addEventListener("mouseup",i),e.addEventListener("wheel",o),e.addEventListener("dblclick",a),this.mouseEventListenerTracker.addUnregisterCallback(()=>e.removeEventListener("mousedown",s)),this.mouseEventListenerTracker.addUnregisterCallback(()=>e.removeEventListener("mouseup",i)),this.mouseEventListenerTracker.addUnregisterCallback(()=>e.removeEventListener("wheel",o)),this.mouseEventListenerTracker.addUnregisterCallback(()=>e.removeEventListener("dblclick",a)),this.mouseEventListenerTracker.addUnregisterCallback(()=>t.unregisterMouseEvents()),this.mouseEventListenerTracker.addUnregisterCallback(()=>{!document.exitPointerLock||document.pointerLockElement!==e&&document.mozPointerLockElement!==e||document.exitPointerLock()})}registerHoveringMouseEvents(A){const e=this.videoElementProvider.getVideoParentElement(),t=new xd(A),n=c=>t.updateMouseMovePosition(c),s=c=>t.handleMouseDown(c),i=c=>t.handleMouseUp(c),o=c=>t.handleContextMenu(c),a=c=>t.handleMouseWheel(c),l=c=>t.handleMouseDouble(c);e.addEventListener("mousemove",n),e.addEventListener("mousedown",s),e.addEventListener("mouseup",i),e.addEventListener("contextmenu",o),e.addEventListener("wheel",a),e.addEventListener("dblclick",l),this.mouseEventListenerTracker.addUnregisterCallback(()=>e.removeEventListener("mousemove",n)),this.mouseEventListenerTracker.addUnregisterCallback(()=>e.removeEventListener("mousedown",s)),this.mouseEventListenerTracker.addUnregisterCallback(()=>e.removeEventListener("mouseup",i)),this.mouseEventListenerTracker.addUnregisterCallback(()=>e.removeEventListener("contextmenu",o)),this.mouseEventListenerTracker.addUnregisterCallback(()=>e.removeEventListener("wheel",a)),this.mouseEventListenerTracker.addUnregisterCallback(()=>e.removeEventListener("dblclick",l)),this.mouseEventListenerTracker.addUnregisterCallback(()=>t.unregisterMouseEvents())}registerMouseEnterAndLeaveEvents(){const A=this.videoElementProvider.getVideoParentElement(),e=n=>{this.videoElementProvider.isVideoReady()&&(h.Log(h.GetStackTrace(),"Mouse Entered",6),this.sendMouseEnter(),this.pressMouseButtons(n.buttons,n.x,n.y))},t=n=>{this.videoElementProvider.isVideoReady()&&(h.Log(h.GetStackTrace(),"Mouse Left",6),this.sendMouseLeave(),this.releaseMouseButtons(n.buttons,n.x,n.y))};A.addEventListener("mouseenter",e),A.addEventListener("mouseleave",t),this.mouseEventListenerTracker.addUnregisterCallback(()=>A.removeEventListener("mouseenter",e)),this.mouseEventListenerTracker.addUnregisterCallback(()=>A.removeEventListener("mouseleave",t))}releaseMouseButtons(A,e,t){const n=this.coordinateConverter.normalizeAndQuantizeUnsigned(e,t);A&lA.primaryButton&&this.sendMouseUp(eA.mainButton,n.x,n.y),A&lA.secondaryButton&&this.sendMouseUp(eA.secondaryButton,n.x,n.y),A&lA.auxiliaryButton&&this.sendMouseUp(eA.auxiliaryButton,n.x,n.y),A&lA.fourthButton&&this.sendMouseUp(eA.fourthButton,n.x,n.y),A&lA.fifthButton&&this.sendMouseUp(eA.fifthButton,n.x,n.y)}pressMouseButtons(A,e,t){if(!this.videoElementProvider.isVideoReady())return;const n=this.coordinateConverter.normalizeAndQuantizeUnsigned(e,t);A&lA.primaryButton&&this.sendMouseDown(eA.mainButton,n.x,n.y),A&lA.secondaryButton&&this.sendMouseDown(eA.secondaryButton,n.x,n.y),A&lA.auxiliaryButton&&this.sendMouseDown(eA.auxiliaryButton,n.x,n.y),A&lA.fourthButton&&this.sendMouseDown(eA.fourthButton,n.x,n.y),A&lA.fifthButton&&this.sendMouseDown(eA.fifthButton,n.x,n.y)}sendMouseEnter(){this.videoElementProvider.isVideoReady()&&this.toStreamerMessagesProvider.toStreamerHandlers.get("MouseEnter")()}sendMouseLeave(){this.videoElementProvider.isVideoReady()&&this.toStreamerMessagesProvider.toStreamerHandlers.get("MouseLeave")()}sendMouseDown(A,e,t){this.videoElementProvider.isVideoReady()&&(h.Log(h.GetStackTrace(),`mouse button ${A} down at (${e}, ${t})`,6),this.toStreamerMessagesProvider.toStreamerHandlers.get("MouseDown")([A,e,t]))}sendMouseUp(A,e,t){if(!this.videoElementProvider.isVideoReady())return;h.Log(h.GetStackTrace(),`mouse button ${A} up at (${e}, ${t})`,6);const n=this.coordinateConverter.normalizeAndQuantizeUnsigned(e,t);this.toStreamerMessagesProvider.toStreamerHandlers.get("MouseUp")([A,n.x,n.y])}}class Gd{constructor(A,e,t){this.fingers=[9,8,7,6,5,4,3,2,1,0],this.fingerIds=new Map,this.maxByteValue=255,this.touchEventListenerTracker=new we,this.toStreamerMessagesProvider=A,this.videoElementProvider=e,this.coordinateConverter=t,this.videoElementParent=e.getVideoElement();const n=a=>this.onTouchStart(a),s=a=>this.onTouchEnd(a),i=a=>this.onTouchMove(a);this.videoElementParent.addEventListener("touchstart",n,{passive:!1}),this.videoElementParent.addEventListener("touchend",s,{passive:!1}),this.videoElementParent.addEventListener("touchmove",i,{passive:!1}),this.touchEventListenerTracker.addUnregisterCallback(()=>this.videoElementParent.removeEventListener("touchstart",n)),this.touchEventListenerTracker.addUnregisterCallback(()=>this.videoElementParent.removeEventListener("touchend",s)),this.touchEventListenerTracker.addUnregisterCallback(()=>this.videoElementParent.removeEventListener("touchmove",i)),h.Log(h.GetStackTrace(),"Touch Events Registered",6);const o=a=>{a.preventDefault()};document.addEventListener("touchmove",o,{passive:!1}),this.touchEventListenerTracker.addUnregisterCallback(()=>document.removeEventListener("touchmove",o))}unregisterTouchEvents(){this.touchEventListenerTracker.unregisterAll()}rememberTouch(A){const e=this.fingers.pop();e===void 0&&h.Log(h.GetStackTrace(),"exhausted touch identifiers",6),this.fingerIds.set(A.identifier,e)}forgetTouch(A){this.fingers.push(this.fingerIds.get(A.identifier)),this.fingers.sort(function(e,t){return t-e}),this.fingerIds.delete(A.identifier)}onTouchStart(A){if(this.videoElementProvider.isVideoReady()){for(let e=0;e<A.changedTouches.length;e++)this.rememberTouch(A.changedTouches[e]);h.Log(h.GetStackTrace(),"touch start",6),this.emitTouchData("TouchStart",A.changedTouches),A.preventDefault()}}onTouchEnd(A){if(this.videoElementProvider.isVideoReady()){h.Log(h.GetStackTrace(),"touch end",6),this.emitTouchData("TouchEnd",A.changedTouches);for(let e=0;e<A.changedTouches.length;e++)this.forgetTouch(A.changedTouches[e]);A.preventDefault()}}onTouchMove(A){this.videoElementProvider.isVideoReady()&&(h.Log(h.GetStackTrace(),"touch move",6),this.emitTouchData("TouchMove",A.touches),A.preventDefault())}emitTouchData(A,e){if(!this.videoElementProvider.isVideoReady())return;const t=this.videoElementProvider.getVideoParentElement().getBoundingClientRect(),n=this.toStreamerMessagesProvider.toStreamerHandlers;for(let s=0;s<e.length;s++){const o=e[s],a=o.clientX-t.left,l=o.clientY-t.top;h.Log(h.GetStackTrace(),`F${this.fingerIds.get(o.identifier)}=(${a}, ${l})`,6);const c=this.coordinateConverter.normalizeAndQuantizeUnsigned(a,l);switch(A){case"TouchStart":n.get("TouchStart")([1,c.x,c.y,this.fingerIds.get(o.identifier),this.maxByteValue*o.force,c.inRange?1:0]);break;case"TouchEnd":n.get("TouchEnd")([1,c.x,c.y,this.fingerIds.get(o.identifier),this.maxByteValue*o.force,c.inRange?1:0]);break;case"TouchMove":n.get("TouchMove")([1,c.x,c.y,this.fingerIds.get(o.identifier),this.maxByteValue*o.force,c.inRange?1:0])}}}}class Nd{constructor(A){this.gamePadEventListenerTracker=new we,this.toStreamerMessagesProvider=A,this.requestAnimationFrame=(window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.requestAnimationFrame).bind(window);const e=window;if("GamepadEvent"in e){const t=s=>this.gamePadConnectHandler(s),n=s=>this.gamePadDisconnectHandler(s);window.addEventListener("gamepadconnected",t),window.addEventListener("gamepaddisconnected",n),this.gamePadEventListenerTracker.addUnregisterCallback(()=>window.removeEventListener("gamepadconnected",t)),this.gamePadEventListenerTracker.addUnregisterCallback(()=>window.removeEventListener("gamepaddisconnected",n))}else if("WebKitGamepadEvent"in e){const t=s=>this.gamePadConnectHandler(s),n=s=>this.gamePadDisconnectHandler(s);window.addEventListener("webkitgamepadconnected",t),window.addEventListener("webkitgamepaddisconnected",n),this.gamePadEventListenerTracker.addUnregisterCallback(()=>window.removeEventListener("webkitgamepadconnected",t)),this.gamePadEventListenerTracker.addUnregisterCallback(()=>window.removeEventListener("webkitgamepaddisconnected",n))}if(this.controllers=[],navigator.getGamepads)for(const t of navigator.getGamepads())t&&this.gamePadConnectHandler(new GamepadEvent("gamepadconnected",{gamepad:t}))}unregisterGamePadEvents(){this.gamePadEventListenerTracker.unregisterAll();for(const A of this.controllers)A.id!==void 0&&this.onGamepadDisconnected(A.id);this.controllers=[],this.onGamepadConnected=()=>{},this.onGamepadDisconnected=()=>{}}gamePadConnectHandler(A){h.Log(h.GetStackTrace(),"Gamepad connect handler",6);const e=A.gamepad,t={currentState:e,prevState:e,id:void 0};this.controllers.push(t),this.controllers[e.index].currentState=e,this.controllers[e.index].prevState=e,h.Log(h.GetStackTrace(),"gamepad: "+e.id+" connected",6),window.requestAnimationFrame(()=>this.updateStatus()),this.onGamepadConnected()}gamePadDisconnectHandler(A){h.Log(h.GetStackTrace(),"Gamepad disconnect handler",6),h.Log(h.GetStackTrace(),"gamepad: "+A.gamepad.id+" disconnected",6);const e=this.controllers[A.gamepad.index];delete this.controllers[A.gamepad.index],this.controllers=this.controllers.filter(t=>t!==void 0),this.onGamepadDisconnected(e.id)}scanGamePads(){const A=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads():[];for(let e=0;e<A.length;e++)A[e]&&A[e].index in this.controllers&&(this.controllers[A[e].index].currentState=A[e])}updateStatus(){this.scanGamePads();const A=this.toStreamerMessagesProvider.toStreamerHandlers;for(const e of this.controllers){const t=e.id===void 0?this.controllers.indexOf(e):e.id,n=e.currentState;for(let s=0;s<e.currentState.buttons.length;s++){const i=e.currentState.buttons[s],o=e.prevState.buttons[s];i.pressed?s==fe.LeftTrigger?A.get("GamepadAnalog")([t,5,i.value]):s==fe.RightTrigger?A.get("GamepadAnalog")([t,6,i.value]):A.get("GamepadButtonPressed")([t,s,o.pressed?1:0]):!i.pressed&&o.pressed&&(s==fe.LeftTrigger?A.get("GamepadAnalog")([t,5,0]):s==fe.RightTrigger?A.get("GamepadAnalog")([t,6,0]):A.get("GamepadButtonReleased")([t,s]))}for(let s=0;s<n.axes.length;s+=2){const i=parseFloat(n.axes[s].toFixed(4)),o=-parseFloat(n.axes[s+1].toFixed(4));A.get("GamepadAnalog")([t,s+1,i]),A.get("GamepadAnalog")([t,s+2,o])}this.controllers[t].prevState=n}this.controllers.length>0&&this.requestAnimationFrame(()=>this.updateStatus())}onGamepadResponseReceived(A){for(const e of this.controllers)if(e.id===void 0){e.id=A;break}}onGamepadConnected(){}onGamepadDisconnected(A){}}(function(r){r[r.RightClusterBottomButton=0]="RightClusterBottomButton",r[r.RightClusterRightButton=1]="RightClusterRightButton",r[r.RightClusterLeftButton=2]="RightClusterLeftButton",r[r.RightClusterTopButton=3]="RightClusterTopButton",r[r.LeftShoulder=4]="LeftShoulder",r[r.RightShoulder=5]="RightShoulder",r[r.LeftTrigger=6]="LeftTrigger",r[r.RightTrigger=7]="RightTrigger",r[r.SelectOrBack=8]="SelectOrBack",r[r.StartOrForward=9]="StartOrForward",r[r.LeftAnalogPress=10]="LeftAnalogPress",r[r.RightAnalogPress=11]="RightAnalogPress",r[r.LeftClusterTopButton=12]="LeftClusterTopButton",r[r.LeftClusterBottomButton=13]="LeftClusterBottomButton",r[r.LeftClusterLeftButton=14]="LeftClusterLeftButton",r[r.LeftClusterRightButton=15]="LeftClusterRightButton",r[r.CentreButton=16]="CentreButton",r[r.LeftStickHorizontal=0]="LeftStickHorizontal",r[r.LeftStickVertical=1]="LeftStickVertical",r[r.RightStickHorizontal=2]="RightStickHorizontal",r[r.RightStickVertical=3]="RightStickVertical"})(fe||(fe={}));class _d{constructor(A,e,t){this.activeKeys=new Vd,this.toStreamerMessagesProvider=A,this.videoElementProvider=e,this.coordinateConverter=t}registerKeyBoard(A){h.Log(h.GetStackTrace(),"Register Keyboard Events",7);const e=new Pd(this.toStreamerMessagesProvider,A,this.activeKeys);return e.registerKeyBoardEvents(),e}registerMouse(A){h.Log(h.GetStackTrace(),"Register Mouse Events",7);const e=new kd(this.toStreamerMessagesProvider,this.videoElementProvider,this.coordinateConverter,this.activeKeys);switch(A){case qA.LockedMouse:e.registerLockedMouseEvents(e);break;case qA.HoveringMouse:e.registerHoveringMouseEvents(e);break;default:h.Info(h.GetStackTrace(),"unknown Control Scheme Type Defaulting to Locked Mouse Events"),e.registerLockedMouseEvents(e)}return e}registerTouch(A,e){if(h.Log(h.GetStackTrace(),"Registering Touch",6),A){const t=new Dd(this.toStreamerMessagesProvider,this.videoElementProvider,this.coordinateConverter);return t.setVideoElementParentClientRect(e),t}return new Gd(this.toStreamerMessagesProvider,this.videoElementProvider,this.coordinateConverter)}registerGamePad(){return h.Log(h.GetStackTrace(),"Register Game Pad",7),new Nd(this.toStreamerMessagesProvider)}}class Vd{constructor(){this.activeKeys=[],this.activeKeys=[]}getActiveKeys(){return this.activeKeys}}class Od{constructor(A,e){this.lastTimeResized=new Date().getTime(),this.videoElement=document.createElement("video"),this.config=e,this.videoElement.id="streamingVideo",this.videoElement.disablePictureInPicture=!0,this.videoElement.playsInline=!0,this.videoElement.style.width="100%",this.videoElement.style.height="100%",this.videoElement.style.position="absolute",this.videoElement.style.pointerEvents="all",A.appendChild(this.videoElement),this.onResizePlayerCallback=()=>{console.log("Resolution changed, restyling player, did you forget to override this function?")},this.onMatchViewportResolutionCallback=()=>{console.log("Resolution changed and match viewport resolution is turned on, did you forget to override this function?")},this.videoElement.onclick=()=>{this.audioElement!=null&&this.audioElement.paused&&this.audioElement.play(),this.videoElement.paused&&this.videoElement.play()},this.videoElement.onloadedmetadata=()=>{this.onVideoInitialized()},window.addEventListener("resize",()=>this.resizePlayerStyle(),!0),window.addEventListener("orientationchange",()=>this.onOrientationChange())}setAudioElement(A){this.audioElement=A}play(){return this.videoElement.muted=this.config.isFlagEnabled(U.StartVideoMuted),this.videoElement.autoplay=this.config.isFlagEnabled(U.AutoPlayVideo),this.videoElement.play()}isPaused(){return this.videoElement.paused}isVideoReady(){return this.videoElement.readyState!==void 0&&this.videoElement.readyState>0}hasVideoSource(){return this.videoElement.srcObject!==void 0&&this.videoElement.srcObject!==null}getVideoElement(){return this.videoElement}getVideoParentElement(){return this.videoElement.parentElement}setVideoEnabled(A){this.videoElement.srcObject.getTracks().forEach(e=>e.enabled=A)}onVideoInitialized(){}onOrientationChange(){clearTimeout(this.orientationChangeTimeout),this.orientationChangeTimeout=window.setTimeout(()=>{this.resizePlayerStyle()},500)}resizePlayerStyle(){const A=this.getVideoParentElement();A&&(this.updateVideoStreamSize(),A.classList.contains("fixed-size")||this.resizePlayerStyleToFillParentElement(),this.onResizePlayerCallback())}resizePlayerStyleToFillParentElement(){this.getVideoParentElement().setAttribute("style","top: 0px; left: 0px; width: 100%; height: 100%; cursor: default;")}updateVideoStreamSize(){if(this.config.isFlagEnabled(U.MatchViewportResolution))if(new Date().getTime()-this.lastTimeResized>300){const A=this.getVideoParentElement();if(!A)return;this.onMatchViewportResolutionCallback(A.clientWidth,A.clientHeight),this.lastTimeResized=new Date().getTime()}else h.Log(h.GetStackTrace(),"Resizing too often - skipping",6),clearTimeout(this.resizeTimeoutHandle),this.resizeTimeoutHandle=window.setTimeout(()=>this.updateVideoStreamSize(),100)}}class Va{constructor(){this.map=new Map,this.reverseMap=new Map}getFromKey(A){return this.map.get(A)}getFromValue(A){return this.reverseMap.get(A)}add(A,e){this.map.set(A,e),this.reverseMap.set(e,A)}remove(A,e){this.map.delete(A),this.reverseMap.delete(e)}}class Wd{constructor(){this.toStreamerHandlers=new Map,this.fromStreamerHandlers=new Map,this.toStreamerMessages=new Va,this.fromStreamerMessages=new Va}populateDefaultProtocol(){this.toStreamerMessages.add("IFrameRequest",{id:0,byteLength:0,structure:[]}),this.toStreamerMessages.add("RequestQualityControl",{id:1,byteLength:0,structure:[]}),this.toStreamerMessages.add("FpsRequest",{id:2,byteLength:0,structure:[]}),this.toStreamerMessages.add("AverageBitrateRequest",{id:3,byteLength:0,structure:[]}),this.toStreamerMessages.add("StartStreaming",{id:4,byteLength:0,structure:[]}),this.toStreamerMessages.add("StopStreaming",{id:5,byteLength:0,structure:[]}),this.toStreamerMessages.add("LatencyTest",{id:6,byteLength:0,structure:[]}),this.toStreamerMessages.add("RequestInitialSettings",{id:7,byteLength:0,structure:[]}),this.toStreamerMessages.add("TestEcho",{id:8,byteLength:0,structure:[]}),this.toStreamerMessages.add("UIInteraction",{id:50,byteLength:0,structure:[]}),this.toStreamerMessages.add("Command",{id:51,byteLength:0,structure:[]}),this.toStreamerMessages.add("KeyDown",{id:60,byteLength:2,structure:["uint8","uint8"]}),this.toStreamerMessages.add("KeyUp",{id:61,byteLength:1,structure:["uint8"]}),this.toStreamerMessages.add("KeyPress",{id:62,byteLength:2,structure:["uint16"]}),this.toStreamerMessages.add("MouseEnter",{id:70,byteLength:0,structure:[]}),this.toStreamerMessages.add("MouseLeave",{id:71,byteLength:0,structure:[]}),this.toStreamerMessages.add("MouseDown",{id:72,byteLength:5,structure:["uint8","uint16","uint16"]}),this.toStreamerMessages.add("MouseUp",{id:73,byteLength:5,structure:["uint8","uint16","uint16"]}),this.toStreamerMessages.add("MouseMove",{id:74,byteLength:8,structure:["uint16","uint16","int16","int16"]}),this.toStreamerMessages.add("MouseWheel",{id:75,byteLength:6,structure:["int16","uint16","uint16"]}),this.toStreamerMessages.add("MouseDouble",{id:76,byteLength:5,structure:["uint8","uint16","uint16"]}),this.toStreamerMessages.add("TouchStart",{id:80,byteLength:8,structure:["uint8","uint16","uint16","uint8","uint8","uint8"]}),this.toStreamerMessages.add("TouchEnd",{id:81,byteLength:8,structure:["uint8","uint16","uint16","uint8","uint8","uint8"]}),this.toStreamerMessages.add("TouchMove",{id:82,byteLength:8,structure:["uint8","uint16","uint16","uint8","uint8","uint8"]}),this.toStreamerMessages.add("GamepadConnected",{id:93,byteLength:0,structure:[]}),this.toStreamerMessages.add("GamepadButtonPressed",{id:90,byteLength:3,structure:["uint8","uint8","uint8"]}),this.toStreamerMessages.add("GamepadButtonReleased",{id:91,byteLength:3,structure:["uint8","uint8","uint8"]}),this.toStreamerMessages.add("GamepadAnalog",{id:92,byteLength:10,structure:["uint8","uint8","double"]}),this.toStreamerMessages.add("GamepadDisconnected",{id:94,byteLength:1,structure:["uint8"]}),this.fromStreamerMessages.add("QualityControlOwnership",0),this.fromStreamerMessages.add("Response",1),this.fromStreamerMessages.add("Command",2),this.fromStreamerMessages.add("FreezeFrame",3),this.fromStreamerMessages.add("UnfreezeFrame",4),this.fromStreamerMessages.add("VideoEncoderAvgQP",5),this.fromStreamerMessages.add("LatencyTest",6),this.fromStreamerMessages.add("InitialSettings",7),this.fromStreamerMessages.add("FileExtension",8),this.fromStreamerMessages.add("FileMimeType",9),this.fromStreamerMessages.add("FileContents",10),this.fromStreamerMessages.add("TestEcho",11),this.fromStreamerMessages.add("InputControlOwnership",12),this.fromStreamerMessages.add("GamepadResponse",13),this.fromStreamerMessages.add("Protocol",255)}registerMessageHandler(A,e,t){switch(A){case b.ToStreamer:this.toStreamerHandlers.set(e,t);break;case b.FromStreamer:this.fromStreamerHandlers.set(e,t);break;default:h.Log(h.GetStackTrace(),`Unknown message direction ${A}`)}}}(function(r){r[r.ToStreamer=0]="ToStreamer",r[r.FromStreamer=1]="FromStreamer"})(b||(b={}));class Xd{constructor(){this.responseEventListeners=new Map}addResponseEventListener(A,e){this.responseEventListeners.set(A,e)}removeResponseEventListener(A){this.responseEventListeners.delete(A)}onResponse(A){h.Log(h.GetStackTrace(),"DataChannelReceiveMessageType.Response",6);const e=new TextDecoder("utf-16").decode(A.slice(1));h.Log(h.GetStackTrace(),e,6),this.responseEventListeners.forEach(t=>{t(e)})}}class Jd{constructor(A,e){this.dataChannelSender=A,this.toStreamerMessagesMapProvider=e}sendLatencyTest(A){this.sendDescriptor("LatencyTest",A)}emitCommand(A){this.sendDescriptor("Command",A)}emitUIInteraction(A){this.sendDescriptor("UIInteraction",A)}sendDescriptor(A,e){const t=JSON.stringify(e),n=this.toStreamerMessagesMapProvider.toStreamerMessages.getFromKey(A);n===void 0&&h.Error(h.GetStackTrace(),`Attempted to emit descriptor with message type: ${A}, but the frontend hasn't been configured to send such a message. Check you've added the message type in your cpp`),h.Log(h.GetStackTrace(),"Sending: "+e,6);const s=new DataView(new ArrayBuffer(3+2*t.length));let i=0;s.setUint8(i,n.id),i++,s.setUint16(i,t.length,!0),i+=2;for(let o=0;o<t.length;o++)s.setUint16(i,t.charCodeAt(o),!0),i+=2;this.dataChannelSender.canSend()?this.dataChannelSender.sendData(s.buffer):h.Info(h.GetStackTrace(),`Data channel cannot send yet, skipping sending descriptor message: ${A} - ${t}`)}}class zd{constructor(A,e){this.dataChannelSender=A,this.toStreamerMessagesMapProvider=e}sendMessageToStreamer(A,e){e===void 0&&(e=[]);const t=this.toStreamerMessagesMapProvider.toStreamerMessages.getFromKey(A);if(t===void 0)return void h.Error(h.GetStackTrace(),`Attempted to send a message to the streamer with message type: ${A}, but the frontend hasn't been configured to send such a message. Check you've added the message type in your cpp`);const n=new DataView(new ArrayBuffer(t.byteLength+1));n.setUint8(0,t.id);let s=1;e.forEach((i,o)=>{switch(t.structure[o]){case"uint8":n.setUint8(s,i),s+=1;break;case"uint16":n.setUint16(s,i,!0),s+=2;break;case"int16":n.setInt16(s,i,!0),s+=2;break;case"float":n.setFloat32(s,i,!0),s+=4;break;case"double":n.setFloat64(s,i,!0),s+=8}}),this.dataChannelSender.canSend()?this.dataChannelSender.sendData(n.buffer):h.Info(h.GetStackTrace(),`Data channel cannot send yet, skipping sending message: ${A} - ${new Uint8Array(n.buffer)}`)}}class Yd{constructor(A){this.sendMessageController=A}SendRequestQualityControl(){this.sendMessageController.sendMessageToStreamer("RequestQualityControl")}SendMaxFpsRequest(){this.sendMessageController.sendMessageToStreamer("FpsRequest")}SendAverageBitrateRequest(){this.sendMessageController.sendMessageToStreamer("AverageBitrateRequest")}SendStartStreaming(){this.sendMessageController.sendMessageToStreamer("StartStreaming")}SendStopStreaming(){this.sendMessageController.sendMessageToStreamer("StopStreaming")}SendRequestInitialSettings(){this.sendMessageController.sendMessageToStreamer("RequestInitialSettings")}}class $d{constructor(A){this.dataChannelProvider=A}canSend(){return this.dataChannelProvider.getDataChannelInstance().dataChannel!==void 0&&this.dataChannelProvider.getDataChannelInstance().dataChannel.readyState=="open"}sendData(A){const e=this.dataChannelProvider.getDataChannelInstance();e.dataChannel.readyState=="open"?(e.dataChannel.send(A),h.Log(h.GetStackTrace(),`Message Sent: ${new Uint8Array(A)}`,6),this.resetAfkWarningTimerOnDataSend()):h.Error(h.GetStackTrace(),`Message Failed: ${new Uint8Array(A)}`)}resetAfkWarningTimerOnDataSend(){}}class Zd{constructor(A){this.videoElementProvider=A,this.normalizeAndQuantizeUnsignedFunc=()=>{throw new Error("Normalize and quantize unsigned, method not implemented.")},this.normalizeAndQuantizeSignedFunc=()=>{throw new Error("Normalize and unquantize signed, method not implemented.")},this.denormalizeAndUnquantizeUnsignedFunc=()=>{throw new Error("Denormalize and unquantize unsigned, method not implemented.")}}normalizeAndQuantizeUnsigned(A,e){return this.normalizeAndQuantizeUnsignedFunc(A,e)}unquantizeAndDenormalizeUnsigned(A,e){return this.denormalizeAndUnquantizeUnsignedFunc(A,e)}normalizeAndQuantizeSigned(A,e){return this.normalizeAndQuantizeSignedFunc(A,e)}setupNormalizeAndQuantize(){if(this.videoElementParent=this.videoElementProvider.getVideoParentElement(),this.videoElement=this.videoElementProvider.getVideoElement(),this.videoElementParent&&this.videoElement){const A=this.videoElementParent.clientWidth||1,e=this.videoElementParent.clientHeight||1,t=this.videoElement.videoWidth||1,n=e/A,s=(this.videoElement.videoHeight||1)/t;n>s?(h.Log(h.GetStackTrace(),"Setup Normalize and Quantize for playerAspectRatio > videoAspectRatio",6),this.ratio=n/s,this.normalizeAndQuantizeUnsignedFunc=(i,o)=>this.normalizeAndQuantizeUnsignedPlayerBigger(i,o),this.normalizeAndQuantizeSignedFunc=(i,o)=>this.normalizeAndQuantizeSignedPlayerBigger(i,o),this.denormalizeAndUnquantizeUnsignedFunc=(i,o)=>this.denormalizeAndUnquantizeUnsignedPlayerBigger(i,o)):(h.Log(h.GetStackTrace(),"Setup Normalize and Quantize for playerAspectRatio <= videoAspectRatio",6),this.ratio=s/n,this.normalizeAndQuantizeUnsignedFunc=(i,o)=>this.normalizeAndQuantizeUnsignedPlayerSmaller(i,o),this.normalizeAndQuantizeSignedFunc=(i,o)=>this.normalizeAndQuantizeSignedPlayerSmaller(i,o),this.denormalizeAndUnquantizeUnsignedFunc=(i,o)=>this.denormalizeAndUnquantizeUnsignedPlayerSmaller(i,o))}}normalizeAndQuantizeUnsignedPlayerBigger(A,e){const t=A/this.videoElementParent.clientWidth,n=this.ratio*(e/this.videoElementParent.clientHeight-.5)+.5;return t<0||t>1||n<0||n>1?new Qr(!1,65535,65535):new Qr(!0,65536*t,65536*n)}denormalizeAndUnquantizeUnsignedPlayerBigger(A,e){const t=A/65536,n=(e/65536-.5)/this.ratio+.5;return new Pn(t*this.videoElementParent.clientWidth,n*this.videoElementParent.clientHeight)}normalizeAndQuantizeSignedPlayerBigger(A,e){const t=A/(.5*this.videoElementParent.clientWidth),n=this.ratio*e/(.5*this.videoElementParent.clientHeight);return new Oa(32767*t,32767*n)}normalizeAndQuantizeUnsignedPlayerSmaller(A,e){const t=this.ratio*(A/this.videoElementParent.clientWidth-.5)+.5,n=e/this.videoElementParent.clientHeight;return t<0||t>1||n<0||n>1?new Qr(!1,65535,65535):new Qr(!0,65536*t,65536*n)}denormalizeAndUnquantizeUnsignedPlayerSmaller(A,e){const t=(A/65536-.5)/this.ratio+.5,n=e/65536;return new Pn(t*this.videoElementParent.clientWidth,n*this.videoElementParent.clientHeight)}normalizeAndQuantizeSignedPlayerSmaller(A,e){const t=this.ratio*A/(.5*this.videoElementParent.clientWidth),n=e/(.5*this.videoElementParent.clientHeight);return new Oa(32767*t,32767*n)}}class Qr{constructor(A,e,t){this.inRange=A,this.x=e,this.y=t}}class Pn{constructor(A,e){this.x=A,this.y=e}}class Oa{constructor(A,e){this.x=A,this.y=e}}class Wa{constructor(A,e){this.shouldShowPlayOverlay=!0,this.config=A,this.pixelStreaming=e,this.responseController=new Xd,this.file=new Md,this.sdpConstraints={offerToReceiveAudio:!0,offerToReceiveVideo:!0},this.afkController=new Ta(this.config,this.pixelStreaming,this.onAfkTriggered.bind(this)),this.afkController.onAFKTimedOutCallback=()=>{this.setDisconnectMessageOverride("You have been disconnected due to inactivity"),this.closeSignalingServer()},this.freezeFrameController=new md(this.pixelStreaming.videoElementParent),this.videoPlayer=new Od(this.pixelStreaming.videoElementParent,this.config),this.videoPlayer.onVideoInitialized=()=>this.handleVideoInitialized(),this.videoPlayer.onMatchViewportResolutionCallback=(t,n)=>{const s={"Resolution.Width":t,"Resolution.Height":n};this.sendDescriptorController.emitCommand(s)},this.videoPlayer.onResizePlayerCallback=()=>{this.setUpMouseAndFreezeFrame()},this.streamController=new Cd(this.videoPlayer),this.coordinateConverter=new Zd(this.videoPlayer),this.sendrecvDataChannelController=new Ha,this.recvDataChannelController=new Ha,this.registerDataChannelEventEmitters(this.sendrecvDataChannelController),this.registerDataChannelEventEmitters(this.recvDataChannelController),this.dataChannelSender=new $d(this.sendrecvDataChannelController),this.dataChannelSender.resetAfkWarningTimerOnDataSend=()=>this.afkController.resetAfkWarningTimer(),this.streamMessageController=new Wd,this.webSocketController=new qo,this.webSocketController.onConfig=t=>this.handleOnConfigMessage(t),this.webSocketController.onStreamerList=t=>this.handleStreamerListMessage(t),this.webSocketController.onWebSocketOncloseOverlayMessage=t=>{this.pixelStreaming._onDisconnect(`Websocket disconnect (${t.code}) ${t.reason!=""?"- "+t.reason:""}`),this.setVideoEncoderAvgQP(0)},this.webSocketController.onPlayerCount=t=>{this.pixelStreaming._onPlayerCount(t.count)},this.webSocketController.onOpen.addEventListener("open",()=>{this.config.isFlagEnabled(U.BrowserSendOffer)||this.webSocketController.requestStreamerList()}),this.webSocketController.onClose.addEventListener("close",()=>{this.afkController.stopAfkWarningTimer(),this.statsTimerHandle&&this.statsTimerHandle!==void 0&&window.clearInterval(this.statsTimerHandle),this.setTouchInputEnabled(!1),this.setMouseInputEnabled(!1),this.setKeyboardInputEnabled(!1),this.setGamePadInputEnabled(!1),this.shouldReconnect&&this.config.getNumericSettingValue(M.MaxReconnectAttempts)>0&&(this.isReconnecting=!0,this.reconnectAttempt++,this.restartStreamAutomatically())}),this.sendDescriptorController=new Jd(this.dataChannelSender,this.streamMessageController),this.sendMessageController=new zd(this.dataChannelSender,this.streamMessageController),this.toStreamerMessagesController=new Yd(this.sendMessageController),this.registerMessageHandlers(),this.streamMessageController.populateDefaultProtocol(),this.inputClassesFactory=new _d(this.streamMessageController,this.videoPlayer,this.coordinateConverter),this.isUsingSFU=!1,this.isQualityController=!1,this.preferredCodec="",this.shouldReconnect=!0,this.isReconnecting=!1,this.reconnectAttempt=0,this.config._addOnOptionSettingChangedListener(V.StreamerId,t=>{t!==""&&(this.peerConnectionController.peerConnection.close(),this.peerConnectionController.createPeerConnection(this.peerConfig,this.preferredCodec),this.subscribedStream=t,this.webSocketController.sendSubscribe(t))}),this.setVideoEncoderAvgQP(-1),this.signallingUrlBuilder=()=>{let t=this.config.getTextSettingValue(ZA.SignallingServerUrl);return this.config.isFlagEnabled(U.BrowserSendOffer)&&(t+="?"+U.BrowserSendOffer+"=true"),t}}requestUnquantizedAndDenormalizeUnsigned(A,e){return this.coordinateConverter.unquantizeAndDenormalizeUnsigned(A,e)}handleOnMessage(A){const e=new Uint8Array(A.data);h.Log(h.GetStackTrace(),"Message incoming:"+e,6);const t=this.streamMessageController.fromStreamerMessages.getFromValue(e[0]);this.streamMessageController.fromStreamerHandlers.get(t)(A.data)}registerMessageHandlers(){this.streamMessageController.registerMessageHandler(b.FromStreamer,"QualityControlOwnership",A=>this.onQualityControlOwnership(A)),this.streamMessageController.registerMessageHandler(b.FromStreamer,"Response",A=>this.responseController.onResponse(A)),this.streamMessageController.registerMessageHandler(b.FromStreamer,"Command",A=>{this.onCommand(A)}),this.streamMessageController.registerMessageHandler(b.FromStreamer,"FreezeFrame",A=>this.onFreezeFrameMessage(A)),this.streamMessageController.registerMessageHandler(b.FromStreamer,"UnfreezeFrame",()=>this.invalidateFreezeFrameAndEnableVideo()),this.streamMessageController.registerMessageHandler(b.FromStreamer,"VideoEncoderAvgQP",A=>this.handleVideoEncoderAvgQP(A)),this.streamMessageController.registerMessageHandler(b.FromStreamer,"LatencyTest",A=>this.handleLatencyTestResult(A)),this.streamMessageController.registerMessageHandler(b.FromStreamer,"InitialSettings",A=>this.handleInitialSettings(A)),this.streamMessageController.registerMessageHandler(b.FromStreamer,"FileExtension",A=>this.onFileExtension(A)),this.streamMessageController.registerMessageHandler(b.FromStreamer,"FileMimeType",A=>this.onFileMimeType(A)),this.streamMessageController.registerMessageHandler(b.FromStreamer,"FileContents",A=>this.onFileContents(A)),this.streamMessageController.registerMessageHandler(b.FromStreamer,"TestEcho",()=>{}),this.streamMessageController.registerMessageHandler(b.FromStreamer,"InputControlOwnership",A=>this.onInputControlOwnership(A)),this.streamMessageController.registerMessageHandler(b.FromStreamer,"GamepadResponse",A=>this.onGamepadResponse(A)),this.streamMessageController.registerMessageHandler(b.FromStreamer,"Protocol",A=>this.onProtocolMessage(A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"IFrameRequest",()=>this.sendMessageController.sendMessageToStreamer("IFrameRequest")),this.streamMessageController.registerMessageHandler(b.ToStreamer,"RequestQualityControl",()=>this.sendMessageController.sendMessageToStreamer("RequestQualityControl")),this.streamMessageController.registerMessageHandler(b.ToStreamer,"FpsRequest",()=>this.sendMessageController.sendMessageToStreamer("FpsRequest")),this.streamMessageController.registerMessageHandler(b.ToStreamer,"AverageBitrateRequest",()=>this.sendMessageController.sendMessageToStreamer("AverageBitrateRequest")),this.streamMessageController.registerMessageHandler(b.ToStreamer,"StartStreaming",()=>this.sendMessageController.sendMessageToStreamer("StartStreaming")),this.streamMessageController.registerMessageHandler(b.ToStreamer,"StopStreaming",()=>this.sendMessageController.sendMessageToStreamer("StopStreaming")),this.streamMessageController.registerMessageHandler(b.ToStreamer,"LatencyTest",()=>this.sendMessageController.sendMessageToStreamer("LatencyTest")),this.streamMessageController.registerMessageHandler(b.ToStreamer,"RequestInitialSettings",()=>this.sendMessageController.sendMessageToStreamer("RequestInitialSettings")),this.streamMessageController.registerMessageHandler(b.ToStreamer,"TestEcho",()=>{}),this.streamMessageController.registerMessageHandler(b.ToStreamer,"UIInteraction",A=>this.sendDescriptorController.emitUIInteraction(A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"Command",A=>this.sendDescriptorController.emitCommand(A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"KeyDown",A=>this.sendMessageController.sendMessageToStreamer("KeyDown",A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"KeyUp",A=>this.sendMessageController.sendMessageToStreamer("KeyUp",A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"KeyPress",A=>this.sendMessageController.sendMessageToStreamer("KeyPress",A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"MouseEnter",A=>this.sendMessageController.sendMessageToStreamer("MouseEnter",A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"MouseLeave",A=>this.sendMessageController.sendMessageToStreamer("MouseLeave",A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"MouseDown",A=>this.sendMessageController.sendMessageToStreamer("MouseDown",A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"MouseUp",A=>this.sendMessageController.sendMessageToStreamer("MouseUp",A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"MouseMove",A=>this.sendMessageController.sendMessageToStreamer("MouseMove",A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"MouseWheel",A=>this.sendMessageController.sendMessageToStreamer("MouseWheel",A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"MouseDouble",A=>this.sendMessageController.sendMessageToStreamer("MouseDouble",A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"TouchStart",A=>this.sendMessageController.sendMessageToStreamer("TouchStart",A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"TouchEnd",A=>this.sendMessageController.sendMessageToStreamer("TouchEnd",A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"TouchMove",A=>this.sendMessageController.sendMessageToStreamer("TouchMove",A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"GamepadConnected",()=>this.sendMessageController.sendMessageToStreamer("GamepadConnected")),this.streamMessageController.registerMessageHandler(b.ToStreamer,"GamepadButtonPressed",A=>this.sendMessageController.sendMessageToStreamer("GamepadButtonPressed",A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"GamepadButtonReleased",A=>this.sendMessageController.sendMessageToStreamer("GamepadButtonReleased",A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"GamepadAnalog",A=>this.sendMessageController.sendMessageToStreamer("GamepadAnalog",A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"GamepadDisconnected",A=>this.sendMessageController.sendMessageToStreamer("GamepadDisconnected",A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"XRHMDTransform",A=>this.sendMessageController.sendMessageToStreamer("XRHMDTransform",A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"XRControllerTransform",A=>this.sendMessageController.sendMessageToStreamer("XRControllerTransform",A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"XRSystem",A=>this.sendMessageController.sendMessageToStreamer("XRSystem",A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"XRButtonTouched",A=>this.sendMessageController.sendMessageToStreamer("XRButtonTouched",A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"XRButtonPressed",A=>this.sendMessageController.sendMessageToStreamer("XRButtonPressed",A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"XRButtonReleased",A=>this.sendMessageController.sendMessageToStreamer("XRButtonReleased",A)),this.streamMessageController.registerMessageHandler(b.ToStreamer,"XRAnalog",A=>this.sendMessageController.sendMessageToStreamer("XRAnalog",A))}onCommand(A){h.Log(h.GetStackTrace(),"DataChannelReceiveMessageType.Command",6);const e=new TextDecoder("utf-16").decode(A.slice(1));h.Log(h.GetStackTrace(),"Data Channel Command: "+e,6);const t=JSON.parse(e);t.command==="onScreenKeyboard"&&this.pixelStreaming._activateOnScreenKeyboard(t)}onProtocolMessage(A){try{const e=new TextDecoder("utf-16").decode(A.slice(1)),t=JSON.parse(e);Object.prototype.hasOwnProperty.call(t,"Direction")||h.Error(h.GetStackTrace(),"Malformed protocol received. Ensure the protocol message contains a direction");const n=t.Direction;delete t.Direction,h.Log(h.GetStackTrace(),`Received new ${n==b.FromStreamer?"FromStreamer":"ToStreamer"} protocol. Updating existing protocol...`),Object.keys(t).forEach(s=>{const i=t[s];switch(n){case b.ToStreamer:if(!Object.prototype.hasOwnProperty.call(i,"id")||!Object.prototype.hasOwnProperty.call(i,"byteLength"))return void h.Error(h.GetStackTrace(),`ToStreamer->${s} protocol definition was malformed as it didn't contain at least an id and a byteLength
|
|
48
48
|
|
|
49
49
|
Definition was: ${JSON.stringify(i,null,2)}`);if(i.byteLength>0&&!Object.prototype.hasOwnProperty.call(i,"structure"))return void h.Error(h.GetStackTrace(),`ToStreamer->${s} protocol definition was malformed as it specified a byteLength but no accompanying structure`);this.streamMessageController.toStreamerHandlers.get(s)?this.streamMessageController.toStreamerMessages.add(s,i):h.Error(h.GetStackTrace(),`There was no registered handler for "${s}" - try adding one using registerMessageHandler(MessageDirection.ToStreamer, "${s}", myHandler)`);break;case b.FromStreamer:if(!Object.prototype.hasOwnProperty.call(i,"id"))return void h.Error(h.GetStackTrace(),`FromStreamer->${s} protocol definition was malformed as it didn't contain at least an id
|
|
50
50
|
|
|
51
|
-
Definition was: ${JSON.stringify(i,null,2)}`);this.streamMessageController.fromStreamerHandlers.get(s)?this.streamMessageController.fromStreamerMessages.add(s,i.id):h.Error(h.GetStackTrace(),`There was no registered handler for "${i}" - try adding one using registerMessageHandler(MessageDirection.FromStreamer, "${s}", myHandler)`);break;default:h.Error(h.GetStackTrace(),`Unknown direction: ${n}`)}}),this.toStreamerMessagesController.SendRequestInitialSettings(),this.toStreamerMessagesController.SendRequestQualityControl()}catch(e){h.Log(h.GetStackTrace(),e)}}onInputControlOwnership(A){const e=new Uint8Array(A);h.Log(h.GetStackTrace(),"DataChannelReceiveMessageType.InputControlOwnership",6);const t=new Boolean(e[1]).valueOf();h.Log(h.GetStackTrace(),`Received input controller message - will your input control the stream: ${t}`),this.pixelStreaming._onInputControlOwnership(t)}onGamepadResponse(A){const e=new TextDecoder("utf-16").decode(A.slice(1)),t=JSON.parse(e);this.gamePadController.onGamepadResponseReceived(t.controllerId)}onAfkTriggered(){this.afkController.onAfkClick(),this.videoPlayer.isPaused()&&this.videoPlayer.hasVideoSource()&&this.playStream()}setAfkEnabled(A){A?this.onAfkTriggered():this.afkController.stopAfkWarningTimer()}restartStreamAutomatically(){if(this.webSocketController)if(this.webSocketController.webSocket&&this.webSocketController.webSocket.readyState!==WebSocket.CLOSED){this.pixelStreaming._showActionOrErrorOnDisconnect=!1,this.setDisconnectMessageOverride("Restarting stream..."),this.closeSignalingServer();const A=setTimeout(()=>{this.pixelStreaming._onWebRtcAutoConnect(),this.connectToSignallingServer(),clearTimeout(A)},3e3)}else h.Log(h.GetStackTrace(),"A websocket connection has not been made yet so we will start the stream"),this.pixelStreaming._onWebRtcAutoConnect(),this.connectToSignallingServer();else h.Log(h.GetStackTrace(),"The Web Socket Controller does not exist so this will not work right now.")}loadFreezeFrameOrShowPlayOverlay(){this.pixelStreaming.dispatchEvent(new va({shouldShowPlayOverlay:this.shouldShowPlayOverlay,isValid:this.freezeFrameController.valid,jpegData:this.freezeFrameController.jpeg})),this.shouldShowPlayOverlay===!0?(h.Log(h.GetStackTrace(),"showing play overlay"),this.resizePlayerStyle()):(h.Log(h.GetStackTrace(),"showing freeze frame"),this.freezeFrameController.showFreezeFrame()),setTimeout(()=>{this.videoPlayer.setVideoEnabled(!1)},this.freezeFrameController.freezeFrameDelay)}onFreezeFrameMessage(A){h.Log(h.GetStackTrace(),"DataChannelReceiveMessageType.FreezeFrame",6);const e=new Uint8Array(A);this.freezeFrameController.processFreezeFrameMessage(e,()=>this.loadFreezeFrameOrShowPlayOverlay())}invalidateFreezeFrameAndEnableVideo(){h.Log(h.GetStackTrace(),"DataChannelReceiveMessageType.FreezeFrame",6),setTimeout(()=>{this.pixelStreaming.dispatchEvent(new ma),this.freezeFrameController.hideFreezeFrame()},this.freezeFrameController.freezeFrameDelay),this.videoPlayer.getVideoElement()&&this.videoPlayer.setVideoEnabled(!0)}onFileExtension(A){const e=new Uint8Array(A);Dn.setExtensionFromBytes(e,this.file)}onFileMimeType(A){const e=new Uint8Array(A);Dn.setMimeTypeFromBytes(e,this.file)}onFileContents(A){const e=new Uint8Array(A);Dn.setContentsFromBytes(e,this.file)}playStream(){if(!this.videoPlayer.getVideoElement()){const A="Could not play video stream because the video player was not initialized correctly.";return this.pixelStreaming.dispatchEvent(new pa({message:A})),h.Error(h.GetStackTrace(),A),this.setDisconnectMessageOverride("Stream not initialized correctly"),void this.closeSignalingServer()}if(this.videoPlayer.hasVideoSource()){if(this.setTouchInputEnabled(this.config.isFlagEnabled(U.TouchInput)),this.pixelStreaming.dispatchEvent(new Ca),this.streamController.audioElement.srcObject){const A=this.config.isFlagEnabled(U.StartVideoMuted);this.streamController.audioElement.muted=A,A?this.playVideo():this.streamController.audioElement.play().then(()=>{this.playVideo()}).catch(e=>{h.Log(h.GetStackTrace(),e),h.Log(h.GetStackTrace(),"Browser does not support autoplaying video without interaction - to resolve this we are going to show the play button overlay."),this.pixelStreaming.dispatchEvent(new Hn({reason:e}))})}else this.playVideo();this.shouldShowPlayOverlay=!1,this.freezeFrameController.showFreezeFrame()}else h.Warning(h.GetStackTrace(),"Cannot play stream, the video element has no srcObject to play.")}playVideo(){this.videoPlayer.play().catch(A=>{this.streamController.audioElement.srcObject&&this.streamController.audioElement.pause(),h.Log(h.GetStackTrace(),A),h.Log(h.GetStackTrace(),"Browser does not support autoplaying video without interaction - to resolve this we are going to show the play button overlay."),this.pixelStreaming.dispatchEvent(new Hn({reason:A}))})}autoPlayVideoOrSetUpPlayOverlay(){this.config.isFlagEnabled(U.AutoPlayVideo)&&this.playStream(),this.resizePlayerStyle()}connectToSignallingServer(){const A=this.signallingUrlBuilder();this.webSocketController.connect(A)}startSession(A){if(this.peerConfig=A,this.config.isFlagEnabled(U.ForceTURN)&&!this.checkTurnServerAvailability(A))return h.Info(h.GetStackTrace(),"No turn server was found in the Peer Connection Options. TURN cannot be forced, closing connection. Please use STUN instead"),this.setDisconnectMessageOverride("TURN cannot be forced, closing connection. Please use STUN instead."),void this.closeSignalingServer();this.peerConnectionController=new Ld(this.peerConfig,this.config,this.preferredCodec),this.peerConnectionController.onVideoStats=t=>this.handleVideoStats(t),this.peerConnectionController.onSendWebRTCOffer=t=>this.handleSendWebRTCOffer(t),this.peerConnectionController.onSendWebRTCAnswer=t=>this.handleSendWebRTCAnswer(t),this.peerConnectionController.onPeerIceCandidate=t=>this.handleSendIceCandidate(t),this.peerConnectionController.onDataChannel=t=>this.handleDataChannel(t),this.peerConnectionController.showTextOverlayConnecting=()=>this.pixelStreaming._onWebRtcConnecting(),this.peerConnectionController.showTextOverlaySetupFailure=()=>this.pixelStreaming._onWebRtcFailed();let e=!1;this.peerConnectionController.onIceConnectionStateChange=()=>{!e&&["connected","completed"].includes(this.peerConnectionController.peerConnection.iceConnectionState)&&(this.pixelStreaming._onWebRtcConnected(),e=!0)},this.peerConnectionController.onTrack=t=>this.streamController.handleOnTrack(t),this.config.isFlagEnabled(U.BrowserSendOffer)&&(this.sendrecvDataChannelController.createDataChannel(this.peerConnectionController.peerConnection,"cirrus",this.datachannelOptions),this.sendrecvDataChannelController.handleOnMessage=t=>this.handleOnMessage(t),this.peerConnectionController.createOffer(this.sdpConstraints,this.config))}checkTurnServerAvailability(A){if(!A.iceServers)return h.Info(h.GetStackTrace(),"A turn sever was not found"),!1;for(const e of A.iceServers)for(const t of e.urls)if(t.includes("turn"))return h.Log(h.GetStackTrace(),`A turn sever was found at ${t}`),!0;return h.Info(h.GetStackTrace(),"A turn sever was not found"),!1}handleOnConfigMessage(A){this.resizePlayerStyle(),this.startSession(A.peerConnectionOptions),this.webSocketController.onWebRtcAnswer=e=>this.handleWebRtcAnswer(e),this.webSocketController.onWebRtcOffer=e=>this.handleWebRtcOffer(e),this.webSocketController.onWebRtcPeerDataChannels=e=>this.handleWebRtcSFUPeerDatachannels(e),this.webSocketController.onIceCandidate=e=>this.handleIceCandidate(e)}handleStreamerListMessage(A){if(h.Log(h.GetStackTrace(),`Got streamer list ${A.ids}`,6),this.isReconnecting)A.ids.includes(this.subscribedStream)?(this.isReconnecting=!1,this.reconnectAttempt=0,this.webSocketController.sendSubscribe(this.subscribedStream)):this.reconnectAttempt<this.config.getNumericSettingValue(M.MaxReconnectAttempts)?(this.reconnectAttempt++,setTimeout(()=>{this.webSocketController.requestStreamerList()},2e3)):(this.reconnectAttempt=0,this.isReconnecting=!1,this.shouldReconnect=!1,this.webSocketController.close(),this.config.setOptionSettingValue(V.StreamerId,""),this.config.setOptionSettingOptions(V.StreamerId,[]));else{const e=[...A.ids];e.unshift(""),this.config.setOptionSettingOptions(V.StreamerId,e);const t=new URLSearchParams(window.location.search);let n=null;A.ids.length==1?n=A.ids[0]:this.config.isFlagEnabled(U.PreferSFU)&&A.ids.includes("SFU")?n="SFU":t.has(V.StreamerId)&&A.ids.includes(t.get(V.StreamerId))&&(n=t.get(V.StreamerId)),n!==null&&this.config.setOptionSettingValue(V.StreamerId,n),this.pixelStreaming.dispatchEvent(new Qa({messageStreamerList:A,autoSelectedStreamerId:n}))}}handleWebRtcAnswer(A){h.Log(h.GetStackTrace(),`Got answer sdp ${A.sdp}`,6);const e={sdp:A.sdp,type:"answer"};this.peerConnectionController.receiveAnswer(e),this.handlePostWebrtcNegotiation()}handleWebRtcOffer(A){h.Log(h.GetStackTrace(),`Got offer sdp ${A.sdp}`,6),this.isUsingSFU=!!A.sfu&&A.sfu,this.isUsingSFU&&(this.peerConnectionController.preferredCodec="");const e={sdp:A.sdp,type:"offer"};this.peerConnectionController.receiveOffer(e,this.config),this.handlePostWebrtcNegotiation()}handleWebRtcSFUPeerDatachannels(A){const e={ordered:!0,negotiated:!0,id:A.sendStreamId},t=A.sendStreamId!=A.recvStreamId;if(this.sendrecvDataChannelController.createDataChannel(this.peerConnectionController.peerConnection,t?"send-datachannel":"datachannel",e),t){const n={ordered:!0,negotiated:!0,id:A.recvStreamId};this.recvDataChannelController.createDataChannel(this.peerConnectionController.peerConnection,"recv-datachannel",n),this.recvDataChannelController.handleOnOpen=()=>this.webSocketController.sendSFURecvDataChannelReady(),this.recvDataChannelController.handleOnMessage=s=>this.handleOnMessage(s)}else this.sendrecvDataChannelController.handleOnMessage=n=>this.handleOnMessage(n)}handlePostWebrtcNegotiation(){this.afkController.startAfkWarningTimer(),this.pixelStreaming._onWebRtcSdp(),this.statsTimerHandle&&this.statsTimerHandle!==void 0&&window.clearInterval(this.statsTimerHandle),this.statsTimerHandle=window.setInterval(()=>this.getStats(),1e3),this.setMouseInputEnabled(this.config.isFlagEnabled(U.MouseInput)),this.setKeyboardInputEnabled(this.config.isFlagEnabled(U.KeyboardInput)),this.setGamePadInputEnabled(this.config.isFlagEnabled(U.GamepadInput))}handleIceCandidate(A){h.Log(h.GetStackTrace(),"Web RTC Controller: onWebRtcIce",6);const e=new RTCIceCandidate(A);this.peerConnectionController.handleOnIce(e)}handleSendIceCandidate(A){h.Log(h.GetStackTrace(),"OnIceCandidate",6),A.candidate&&A.candidate.candidate&&this.webSocketController.sendIceCandidate(A.candidate)}handleDataChannel(A){h.Log(h.GetStackTrace(),"Data channel created for us by browser as we are a receiving peer.",6),this.sendrecvDataChannelController.dataChannel=A.channel,this.sendrecvDataChannelController.setupDataChannel(),this.sendrecvDataChannelController.handleOnMessage=e=>this.handleOnMessage(e)}handleSendWebRTCOffer(A){h.Log(h.GetStackTrace(),"Sending the offer to the Server",6),this.webSocketController.sendWebRtcOffer(A)}handleSendWebRTCAnswer(A){h.Log(h.GetStackTrace(),"Sending the answer to the Server",6),this.webSocketController.sendWebRtcAnswer(A),this.isUsingSFU&&this.webSocketController.sendWebRtcDatachannelRequest()}setUpMouseAndFreezeFrame(){this.videoElementParentClientRect=this.videoPlayer.getVideoParentElement().getBoundingClientRect(),this.coordinateConverter.setupNormalizeAndQuantize(),this.freezeFrameController.freezeFrame.resize()}closeSignalingServer(){var A;this.shouldReconnect=!1,(A=this.webSocketController)===null||A===void 0||A.close()}closePeerConnection(){var A;(A=this.peerConnectionController)===null||A===void 0||A.close()}close(){this.closeSignalingServer(),this.closePeerConnection()}getStats(){this.peerConnectionController.generateStats()}sendLatencyTest(){this.latencyStartTime=Date.now(),this.sendDescriptorController.sendLatencyTest({StartTime:this.latencyStartTime})}sendEncoderMinQP(A){h.Log(h.GetStackTrace(),`MinQP=${A}
|
|
51
|
+
Definition was: ${JSON.stringify(i,null,2)}`);this.streamMessageController.fromStreamerHandlers.get(s)?this.streamMessageController.fromStreamerMessages.add(s,i.id):h.Error(h.GetStackTrace(),`There was no registered handler for "${i}" - try adding one using registerMessageHandler(MessageDirection.FromStreamer, "${s}", myHandler)`);break;default:h.Error(h.GetStackTrace(),`Unknown direction: ${n}`)}}),this.toStreamerMessagesController.SendRequestInitialSettings(),this.toStreamerMessagesController.SendRequestQualityControl()}catch(e){h.Log(h.GetStackTrace(),e)}}onInputControlOwnership(A){const e=new Uint8Array(A);h.Log(h.GetStackTrace(),"DataChannelReceiveMessageType.InputControlOwnership",6);const t=new Boolean(e[1]).valueOf();h.Log(h.GetStackTrace(),`Received input controller message - will your input control the stream: ${t}`),this.pixelStreaming._onInputControlOwnership(t)}onGamepadResponse(A){const e=new TextDecoder("utf-16").decode(A.slice(1)),t=JSON.parse(e);this.gamePadController.onGamepadResponseReceived(t.controllerId)}onAfkTriggered(){this.afkController.onAfkClick(),this.videoPlayer.isPaused()&&this.videoPlayer.hasVideoSource()&&this.playStream()}setAfkEnabled(A){A?this.onAfkTriggered():this.afkController.stopAfkWarningTimer()}restartStreamAutomatically(){if(this.webSocketController)if(this.webSocketController.webSocket&&this.webSocketController.webSocket.readyState!==WebSocket.CLOSED){this.pixelStreaming._showActionOrErrorOnDisconnect=!1,this.setDisconnectMessageOverride("Restarting stream..."),this.closeSignalingServer();const A=setTimeout(()=>{this.pixelStreaming._onWebRtcAutoConnect(),this.connectToSignallingServer(),clearTimeout(A)},3e3)}else h.Log(h.GetStackTrace(),"A websocket connection has not been made yet so we will start the stream"),this.pixelStreaming._onWebRtcAutoConnect(),this.connectToSignallingServer();else h.Log(h.GetStackTrace(),"The Web Socket Controller does not exist so this will not work right now.")}loadFreezeFrameOrShowPlayOverlay(){this.pixelStreaming.dispatchEvent(new va({shouldShowPlayOverlay:this.shouldShowPlayOverlay,isValid:this.freezeFrameController.valid,jpegData:this.freezeFrameController.jpeg})),this.shouldShowPlayOverlay===!0?(h.Log(h.GetStackTrace(),"showing play overlay"),this.resizePlayerStyle()):(h.Log(h.GetStackTrace(),"showing freeze frame"),this.freezeFrameController.showFreezeFrame()),setTimeout(()=>{this.videoPlayer.setVideoEnabled(!1)},this.freezeFrameController.freezeFrameDelay)}onFreezeFrameMessage(A){h.Log(h.GetStackTrace(),"DataChannelReceiveMessageType.FreezeFrame",6);const e=new Uint8Array(A);this.freezeFrameController.processFreezeFrameMessage(e,()=>this.loadFreezeFrameOrShowPlayOverlay())}invalidateFreezeFrameAndEnableVideo(){h.Log(h.GetStackTrace(),"DataChannelReceiveMessageType.FreezeFrame",6),setTimeout(()=>{this.pixelStreaming.dispatchEvent(new ma),this.freezeFrameController.hideFreezeFrame()},this.freezeFrameController.freezeFrameDelay),this.videoPlayer.getVideoElement()&&this.videoPlayer.setVideoEnabled(!0)}onFileExtension(A){const e=new Uint8Array(A);Rn.setExtensionFromBytes(e,this.file)}onFileMimeType(A){const e=new Uint8Array(A);Rn.setMimeTypeFromBytes(e,this.file)}onFileContents(A){const e=new Uint8Array(A);Rn.setContentsFromBytes(e,this.file)}playStream(){if(!this.videoPlayer.getVideoElement()){const A="Could not play video stream because the video player was not initialized correctly.";return this.pixelStreaming.dispatchEvent(new pa({message:A})),h.Error(h.GetStackTrace(),A),this.setDisconnectMessageOverride("Stream not initialized correctly"),void this.closeSignalingServer()}if(this.videoPlayer.hasVideoSource()){if(this.setTouchInputEnabled(this.config.isFlagEnabled(U.TouchInput)),this.pixelStreaming.dispatchEvent(new Ca),this.streamController.audioElement.srcObject){const A=this.config.isFlagEnabled(U.StartVideoMuted);this.streamController.audioElement.muted=A,A?this.playVideo():this.streamController.audioElement.play().then(()=>{this.playVideo()}).catch(e=>{h.Log(h.GetStackTrace(),e),h.Log(h.GetStackTrace(),"Browser does not support autoplaying video without interaction - to resolve this we are going to show the play button overlay."),this.pixelStreaming.dispatchEvent(new Ln({reason:e}))})}else this.playVideo();this.shouldShowPlayOverlay=!1,this.freezeFrameController.showFreezeFrame()}else h.Warning(h.GetStackTrace(),"Cannot play stream, the video element has no srcObject to play.")}playVideo(){this.videoPlayer.play().catch(A=>{this.streamController.audioElement.srcObject&&this.streamController.audioElement.pause(),h.Log(h.GetStackTrace(),A),h.Log(h.GetStackTrace(),"Browser does not support autoplaying video without interaction - to resolve this we are going to show the play button overlay."),this.pixelStreaming.dispatchEvent(new Ln({reason:A}))})}autoPlayVideoOrSetUpPlayOverlay(){this.config.isFlagEnabled(U.AutoPlayVideo)&&this.playStream(),this.resizePlayerStyle()}connectToSignallingServer(){const A=this.signallingUrlBuilder();this.webSocketController.connect(A)}startSession(A){if(this.peerConfig=A,this.config.isFlagEnabled(U.ForceTURN)&&!this.checkTurnServerAvailability(A))return h.Info(h.GetStackTrace(),"No turn server was found in the Peer Connection Options. TURN cannot be forced, closing connection. Please use STUN instead"),this.setDisconnectMessageOverride("TURN cannot be forced, closing connection. Please use STUN instead."),void this.closeSignalingServer();this.peerConnectionController=new Ld(this.peerConfig,this.config,this.preferredCodec),this.peerConnectionController.onVideoStats=t=>this.handleVideoStats(t),this.peerConnectionController.onSendWebRTCOffer=t=>this.handleSendWebRTCOffer(t),this.peerConnectionController.onSendWebRTCAnswer=t=>this.handleSendWebRTCAnswer(t),this.peerConnectionController.onPeerIceCandidate=t=>this.handleSendIceCandidate(t),this.peerConnectionController.onDataChannel=t=>this.handleDataChannel(t),this.peerConnectionController.showTextOverlayConnecting=()=>this.pixelStreaming._onWebRtcConnecting(),this.peerConnectionController.showTextOverlaySetupFailure=()=>this.pixelStreaming._onWebRtcFailed();let e=!1;this.peerConnectionController.onIceConnectionStateChange=()=>{!e&&["connected","completed"].includes(this.peerConnectionController.peerConnection.iceConnectionState)&&(this.pixelStreaming._onWebRtcConnected(),e=!0)},this.peerConnectionController.onTrack=t=>this.streamController.handleOnTrack(t),this.config.isFlagEnabled(U.BrowserSendOffer)&&(this.sendrecvDataChannelController.createDataChannel(this.peerConnectionController.peerConnection,"cirrus",this.datachannelOptions),this.sendrecvDataChannelController.handleOnMessage=t=>this.handleOnMessage(t),this.peerConnectionController.createOffer(this.sdpConstraints,this.config))}checkTurnServerAvailability(A){if(!A.iceServers)return h.Info(h.GetStackTrace(),"A turn sever was not found"),!1;for(const e of A.iceServers)for(const t of e.urls)if(t.includes("turn"))return h.Log(h.GetStackTrace(),`A turn sever was found at ${t}`),!0;return h.Info(h.GetStackTrace(),"A turn sever was not found"),!1}handleOnConfigMessage(A){this.resizePlayerStyle(),this.startSession(A.peerConnectionOptions),this.webSocketController.onWebRtcAnswer=e=>this.handleWebRtcAnswer(e),this.webSocketController.onWebRtcOffer=e=>this.handleWebRtcOffer(e),this.webSocketController.onWebRtcPeerDataChannels=e=>this.handleWebRtcSFUPeerDatachannels(e),this.webSocketController.onIceCandidate=e=>this.handleIceCandidate(e)}handleStreamerListMessage(A){if(h.Log(h.GetStackTrace(),`Got streamer list ${A.ids}`,6),this.isReconnecting)A.ids.includes(this.subscribedStream)?(this.isReconnecting=!1,this.reconnectAttempt=0,this.webSocketController.sendSubscribe(this.subscribedStream)):this.reconnectAttempt<this.config.getNumericSettingValue(M.MaxReconnectAttempts)?(this.reconnectAttempt++,setTimeout(()=>{this.webSocketController.requestStreamerList()},2e3)):(this.reconnectAttempt=0,this.isReconnecting=!1,this.shouldReconnect=!1,this.webSocketController.close(),this.config.setOptionSettingValue(V.StreamerId,""),this.config.setOptionSettingOptions(V.StreamerId,[]));else{const e=[...A.ids];e.unshift(""),this.config.setOptionSettingOptions(V.StreamerId,e);const t=new URLSearchParams(window.location.search);let n=null;A.ids.length==1?n=A.ids[0]:this.config.isFlagEnabled(U.PreferSFU)&&A.ids.includes("SFU")?n="SFU":t.has(V.StreamerId)&&A.ids.includes(t.get(V.StreamerId))&&(n=t.get(V.StreamerId)),n!==null&&this.config.setOptionSettingValue(V.StreamerId,n),this.pixelStreaming.dispatchEvent(new Qa({messageStreamerList:A,autoSelectedStreamerId:n}))}}handleWebRtcAnswer(A){h.Log(h.GetStackTrace(),`Got answer sdp ${A.sdp}`,6);const e={sdp:A.sdp,type:"answer"};this.peerConnectionController.receiveAnswer(e),this.handlePostWebrtcNegotiation()}handleWebRtcOffer(A){h.Log(h.GetStackTrace(),`Got offer sdp ${A.sdp}`,6),this.isUsingSFU=!!A.sfu&&A.sfu,this.isUsingSFU&&(this.peerConnectionController.preferredCodec="");const e={sdp:A.sdp,type:"offer"};this.peerConnectionController.receiveOffer(e,this.config),this.handlePostWebrtcNegotiation()}handleWebRtcSFUPeerDatachannels(A){const e={ordered:!0,negotiated:!0,id:A.sendStreamId},t=A.sendStreamId!=A.recvStreamId;if(this.sendrecvDataChannelController.createDataChannel(this.peerConnectionController.peerConnection,t?"send-datachannel":"datachannel",e),t){const n={ordered:!0,negotiated:!0,id:A.recvStreamId};this.recvDataChannelController.createDataChannel(this.peerConnectionController.peerConnection,"recv-datachannel",n),this.recvDataChannelController.handleOnOpen=()=>this.webSocketController.sendSFURecvDataChannelReady(),this.recvDataChannelController.handleOnMessage=s=>this.handleOnMessage(s)}else this.sendrecvDataChannelController.handleOnMessage=n=>this.handleOnMessage(n)}handlePostWebrtcNegotiation(){this.afkController.startAfkWarningTimer(),this.pixelStreaming._onWebRtcSdp(),this.statsTimerHandle&&this.statsTimerHandle!==void 0&&window.clearInterval(this.statsTimerHandle),this.statsTimerHandle=window.setInterval(()=>this.getStats(),1e3),this.setMouseInputEnabled(this.config.isFlagEnabled(U.MouseInput)),this.setKeyboardInputEnabled(this.config.isFlagEnabled(U.KeyboardInput)),this.setGamePadInputEnabled(this.config.isFlagEnabled(U.GamepadInput))}handleIceCandidate(A){h.Log(h.GetStackTrace(),"Web RTC Controller: onWebRtcIce",6);const e=new RTCIceCandidate(A);this.peerConnectionController.handleOnIce(e)}handleSendIceCandidate(A){h.Log(h.GetStackTrace(),"OnIceCandidate",6),A.candidate&&A.candidate.candidate&&this.webSocketController.sendIceCandidate(A.candidate)}handleDataChannel(A){h.Log(h.GetStackTrace(),"Data channel created for us by browser as we are a receiving peer.",6),this.sendrecvDataChannelController.dataChannel=A.channel,this.sendrecvDataChannelController.setupDataChannel(),this.sendrecvDataChannelController.handleOnMessage=e=>this.handleOnMessage(e)}handleSendWebRTCOffer(A){h.Log(h.GetStackTrace(),"Sending the offer to the Server",6),this.webSocketController.sendWebRtcOffer(A)}handleSendWebRTCAnswer(A){h.Log(h.GetStackTrace(),"Sending the answer to the Server",6),this.webSocketController.sendWebRtcAnswer(A),this.isUsingSFU&&this.webSocketController.sendWebRtcDatachannelRequest()}setUpMouseAndFreezeFrame(){this.videoElementParentClientRect=this.videoPlayer.getVideoParentElement().getBoundingClientRect(),this.coordinateConverter.setupNormalizeAndQuantize(),this.freezeFrameController.freezeFrame.resize()}closeSignalingServer(){var A;this.shouldReconnect=!1,(A=this.webSocketController)===null||A===void 0||A.close()}closePeerConnection(){var A;(A=this.peerConnectionController)===null||A===void 0||A.close()}close(){this.closeSignalingServer(),this.closePeerConnection()}getStats(){this.peerConnectionController.generateStats()}sendLatencyTest(){this.latencyStartTime=Date.now(),this.sendDescriptorController.sendLatencyTest({StartTime:this.latencyStartTime})}sendEncoderMinQP(A){h.Log(h.GetStackTrace(),`MinQP=${A}
|
|
52
52
|
`,6),A!=null&&this.sendDescriptorController.emitCommand({"Encoder.MinQP":A})}sendEncoderMaxQP(A){h.Log(h.GetStackTrace(),`MaxQP=${A}
|
|
53
53
|
`,6),A!=null&&this.sendDescriptorController.emitCommand({"Encoder.MaxQP":A})}sendWebRTCMinBitrate(A){h.Log(h.GetStackTrace(),`WebRTC Min Bitrate=${A}`,6),A!=null&&this.sendDescriptorController.emitCommand({"WebRTC.MinBitrate":A})}sendWebRTCMaxBitrate(A){h.Log(h.GetStackTrace(),`WebRTC Max Bitrate=${A}`,6),A!=null&&this.sendDescriptorController.emitCommand({"WebRTC.MaxBitrate":A})}sendWebRTCFps(A){h.Log(h.GetStackTrace(),`WebRTC FPS=${A}`,6),A!=null&&(this.sendDescriptorController.emitCommand({"WebRTC.Fps":A}),this.sendDescriptorController.emitCommand({"WebRTC.MaxFps":A}))}sendShowFps(){h.Log(h.GetStackTrace(),"---- Sending show stat to UE ----",6),this.sendDescriptorController.emitCommand({"stat.fps":""})}sendIframeRequest(){h.Log(h.GetStackTrace(),"---- Sending Request for an IFrame ----",6),this.streamMessageController.toStreamerHandlers.get("IFrameRequest")()}emitUIInteraction(A){h.Log(h.GetStackTrace(),"---- Sending custom UIInteraction message ----",6),this.sendDescriptorController.emitUIInteraction(A)}emitCommand(A){h.Log(h.GetStackTrace(),"---- Sending custom Command message ----",6),this.sendDescriptorController.emitCommand(A)}emitConsoleCommand(A){h.Log(h.GetStackTrace(),"---- Sending custom Command:ConsoleCommand message ----",6),this.sendDescriptorController.emitCommand({ConsoleCommand:A})}sendRequestQualityControlOwnership(){h.Log(h.GetStackTrace(),"---- Sending Request to Control Quality ----",6),this.toStreamerMessagesController.SendRequestQualityControl()}handleLatencyTestResult(A){h.Log(h.GetStackTrace(),"DataChannelReceiveMessageType.latencyTest",6);const e=new TextDecoder("utf-16").decode(A.slice(1)),t=new _a;Object.assign(t,JSON.parse(e)),t.processFields(),t.testStartTimeMs=this.latencyStartTime,t.browserReceiptTimeMs=Date.now(),t.latencyExcludingDecode=~~(t.browserReceiptTimeMs-t.testStartTimeMs),t.testDuration=~~(t.TransmissionTimeMs-t.ReceiptTimeMs),t.networkLatency=~~(t.latencyExcludingDecode-t.testDuration),t.frameDisplayDeltaTimeMs&&t.browserReceiptTimeMs&&(t.endToEndLatency=(t.frameDisplayDeltaTimeMs,t.networkLatency,~~+t.CaptureToSendMs)),this.pixelStreaming._onLatencyTestResult(t)}handleInitialSettings(A){h.Log(h.GetStackTrace(),"DataChannelReceiveMessageType.InitialSettings",6);const e=new TextDecoder("utf-16").decode(A.slice(1)),t=JSON.parse(e),n=new ka;t.Encoder&&(n.EncoderSettings=t.Encoder),t.WebRTC&&(n.WebRTCSettings=t.WebRTC),t.PixelStreaming&&(n.PixelStreamingSettings=t.PixelStreaming),t.ConfigOptions&&t.ConfigOptions.DefaultToHover!==void 0&&this.config.setFlagEnabled(U.HoveringMouseMode,!!t.ConfigOptions.DefaultToHover),n.ueCompatible(),h.Log(h.GetStackTrace(),e,6),this.pixelStreaming._onInitialSettings(n)}handleVideoEncoderAvgQP(A){h.Log(h.GetStackTrace(),"DataChannelReceiveMessageType.VideoEncoderAvgQP",6);const e=Number(new TextDecoder("utf-16").decode(A.slice(1)));this.setVideoEncoderAvgQP(e)}handleVideoInitialized(){this.pixelStreaming._onVideoInitialized(),this.autoPlayVideoOrSetUpPlayOverlay(),this.resizePlayerStyle(),this.videoPlayer.updateVideoStreamSize()}onQualityControlOwnership(A){const e=new Uint8Array(A);h.Log(h.GetStackTrace(),"DataChannelReceiveMessageType.QualityControlOwnership",6),this.isQualityController=new Boolean(e[1]).valueOf(),h.Log(h.GetStackTrace(),`Received quality controller message, will control quality: ${this.isQualityController}`),this.pixelStreaming._onQualityControlOwnership(this.isQualityController)}handleVideoStats(A){this.pixelStreaming._onVideoStats(A)}resizePlayerStyle(){this.videoPlayer.resizePlayerStyle()}getDisconnectMessageOverride(){return this.disconnectMessageOverride}setDisconnectMessageOverride(A){this.disconnectMessageOverride=A}setPreferredCodec(A){this.preferredCodec=A,this.peerConnectionController&&(this.peerConnectionController.preferredCodec=A,this.peerConnectionController.updateCodecSelection=!1)}setVideoEncoderAvgQP(A){this.videoAvgQp=A,this.pixelStreaming._onVideoEncoderAvgQP(this.videoAvgQp)}setKeyboardInputEnabled(A){var e;(e=this.keyboardController)===null||e===void 0||e.unregisterKeyBoardEvents(),A&&(this.keyboardController=this.inputClassesFactory.registerKeyBoard(this.config))}setMouseInputEnabled(A){var e;if((e=this.mouseController)===null||e===void 0||e.unregisterMouseEvents(),A){const t=this.config.isFlagEnabled(U.HoveringMouseMode)?qA.HoveringMouse:qA.LockedMouse;this.mouseController=this.inputClassesFactory.registerMouse(t)}}setTouchInputEnabled(A){var e;(e=this.touchController)===null||e===void 0||e.unregisterTouchEvents(),A&&(this.touchController=this.inputClassesFactory.registerTouch(this.config.isFlagEnabled(U.FakeMouseWithTouches),this.videoElementParentClientRect))}setGamePadInputEnabled(A){var e;(e=this.gamePadController)===null||e===void 0||e.unregisterGamePadEvents(),A&&(this.gamePadController=this.inputClassesFactory.registerGamePad(),this.gamePadController.onGamepadConnected=()=>{this.streamMessageController.toStreamerHandlers.get("GamepadConnected")()},this.gamePadController.onGamepadDisconnected=t=>{this.streamMessageController.toStreamerHandlers.get("GamepadDisconnected")([t])})}registerDataChannelEventEmitters(A){A.onOpen=(e,t)=>this.pixelStreaming.dispatchEvent(new ca({label:e,event:t})),A.onClose=(e,t)=>this.pixelStreaming.dispatchEvent(new da({label:e,event:t})),A.onError=(e,t)=>this.pixelStreaming.dispatchEvent(new ua({label:e,event:t}))}}class Xa{static vertexShader(){return`
|
|
54
54
|
attribute vec2 a_position;
|
|
@@ -88,7 +88,7 @@ Msg: ${e}`;console.warn(t)}};h.verboseLogLevel=5,function(r){r.LIST_STREAMERS="l
|
|
|
88
88
|
void main() {
|
|
89
89
|
gl_FragColor = texture2D(u_image, v_texCoord);
|
|
90
90
|
}
|
|
91
|
-
`}}class Ja{static deepCopyGamepad(A){return JSON.parse(JSON.stringify({buttons:A.buttons.map(e=>JSON.parse(JSON.stringify({pressed:e.pressed,touched:e.touched}))),axes:A.axes}))}}class qd{constructor(A){this.toStreamerMessagesProvider=A,this.controllers=[]}updateStatus(A,e,t){if(A.gamepad){const n=e.getPose(A.gripSpace,t);if(!n)return;let s=0;A.profiles.includes("htc-vive")?s=1:A.profiles.includes("oculus-touch")&&(s=2),this.toStreamerMessagesProvider.toStreamerHandlers.get("XRSystem")([s]);let i=2;switch(A.handedness){case"left":i=0;break;case"right":i=1}const o=n.transform.matrix,a=[];for(let d=0;d<16;d++)a[d]=new Float32Array([o[d]])[0];this.toStreamerMessagesProvider.toStreamerHandlers.get("XRControllerTransform")([a[0],a[4],a[8],a[12],a[1],a[5],a[9],a[13],a[2],a[6],a[10],a[14],a[3],a[7],a[11],a[15],i]),this.controllers[i]===void 0&&(this.controllers[i]={prevState:void 0,currentState:void 0,id:void 0},this.controllers[i].prevState=Ja.deepCopyGamepad(A.gamepad)),this.controllers[i].currentState=Ja.deepCopyGamepad(A.gamepad);const l=this.controllers[i],c=l.currentState,u=l.prevState;for(let d=0;d<c.buttons.length;d++){const B=c.buttons[d],g=u.buttons[d];B.pressed?this.toStreamerMessagesProvider.toStreamerHandlers.get("XRButtonPressed")([i,d,g.pressed?1:0]):!B.pressed&&g.pressed&&this.toStreamerMessagesProvider.toStreamerHandlers.get("XRButtonReleased")([i,d,0]),B.touched&&!B.pressed?this.toStreamerMessagesProvider.toStreamerHandlers.get("XRButtonPressed")([i,3,g.touched?1:0]):!B.touched&&g.touched&&this.toStreamerMessagesProvider.toStreamerHandlers.get("XRButtonReleased")([i,3,0])}for(let d=0;d<c.axes.length;d++)this.toStreamerMessagesProvider.toStreamerHandlers.get("XRAnalog")([i,d,c.axes[d]]);this.controllers[i].prevState=c}}}class za{constructor(A){this.xrSession=null,this.webRtcController=A,this.xrControllers=[],this.xrGamepadController=new qd(this.webRtcController.streamMessageController),this.onSessionEnded=new EventTarget,this.onSessionStarted=new EventTarget,this.onFrame=new EventTarget}xrClicked(){this.xrSession?this.xrSession.end():navigator.xr.requestSession("immersive-vr").then(A=>{this.onXrSessionStarted(A)})}onXrSessionEnded(){h.Log(h.GetStackTrace(),"XR Session ended"),this.xrSession=null,this.onSessionEnded.dispatchEvent(new Event("xrSessionEnded"))}onXrSessionStarted(A){h.Log(h.GetStackTrace(),"XR Session started"),this.xrSession=A,this.xrSession.addEventListener("end",()=>{this.onXrSessionEnded()});const e=document.createElement("canvas");this.gl=e.getContext("webgl2",{xrCompatible:!0}),this.xrSession.updateRenderState({baseLayer:new XRWebGLLayer(this.xrSession,this.gl)});const t=this.gl.createShader(this.gl.VERTEX_SHADER);this.gl.shaderSource(t,Xa.vertexShader()),this.gl.compileShader(t);const n=this.gl.createShader(this.gl.FRAGMENT_SHADER);this.gl.shaderSource(n,Xa.fragmentShader()),this.gl.compileShader(n);const s=this.gl.createProgram();this.gl.attachShader(s,t),this.gl.attachShader(s,n),this.gl.linkProgram(s),this.gl.useProgram(s),this.positionLocation=this.gl.getAttribLocation(s,"a_position"),this.texcoordLocation=this.gl.getAttribLocation(s,"a_texCoord"),this.positionBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.positionBuffer),this.gl.enableVertexAttribArray(this.positionLocation);const i=this.gl.createTexture();this.gl.bindTexture(this.gl.TEXTURE_2D,i),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_S,this.gl.CLAMP_TO_EDGE),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_T,this.gl.CLAMP_TO_EDGE),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MIN_FILTER,this.gl.NEAREST),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MAG_FILTER,this.gl.NEAREST),this.texcoordBuffer=this.gl.createBuffer(),this.resolutionLocation=this.gl.getUniformLocation(s,"u_resolution"),this.offsetLocation=this.gl.getUniformLocation(s,"u_offset"),A.requestReferenceSpace("local").then(o=>{this.xrRefSpace=o,this.xrSession.requestAnimationFrame((a,l)=>this.onXrFrame(a,l))}),this.onSessionStarted.dispatchEvent(new Event("xrSessionStarted"))}onXrFrame(A,e){const t=e.getViewerPose(this.xrRefSpace);if(t){const n=t.transform.matrix,s=[];for(let o=0;o<16;o++)s[o]=new Float32Array([n[o]])[0];this.webRtcController.streamMessageController.toStreamerHandlers.get("XRHMDTransform")([s[0],s[4],s[8],s[12],s[1],s[5],s[9],s[13],s[2],s[6],s[10],s[14],s[3],s[7],s[11],s[15]]);const i=this.xrSession.renderState.baseLayer;this.gl.bindFramebuffer(this.gl.FRAMEBUFFER,i.framebuffer),this.gl.texImage2D(this.gl.TEXTURE_2D,0,this.gl.RGBA,this.gl.RGBA,this.gl.UNSIGNED_BYTE,this.webRtcController.videoPlayer.getVideoElement()),this.render(this.webRtcController.videoPlayer.getVideoElement())}this.webRtcController.config.isFlagEnabled(U.XRControllerInput)&&this.xrSession.inputSources.forEach((n,s,i)=>{this.xrGamepadController.updateStatus(n,e,this.xrRefSpace)},this),this.xrSession.requestAnimationFrame((n,s)=>this.onXrFrame(n,s)),this.onFrame.dispatchEvent(new ya({time:A,frame:e}))}render(A){if(!this.gl)return;const e=this.xrSession.renderState.baseLayer;let t,n,s,i,o;this.gl.viewport(0,0,e.framebufferWidth,e.framebufferHeight),this.gl.uniform4f(this.offsetLocation,1,1,0,0),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([0,0,A.videoWidth,0,0,A.videoHeight,0,A.videoHeight,A.videoWidth,0,A.videoWidth,A.videoHeight]),this.gl.STATIC_DRAW),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.texcoordBuffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([0,0,1,0,0,1,0,1,1,0,1,1]),this.gl.STATIC_DRAW),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.positionBuffer),t=2,n=this.gl.FLOAT,s=!1,i=0,o=0,this.gl.vertexAttribPointer(this.positionLocation,t,n,s,i,o),this.gl.enableVertexAttribArray(this.texcoordLocation),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.texcoordBuffer),t=2,n=this.gl.FLOAT,s=!1,i=0,o=0,this.gl.vertexAttribPointer(this.texcoordLocation,t,n,s,i,o),this.gl.uniform2f(this.resolutionLocation,A.videoWidth,A.videoHeight);const a=this.gl.TRIANGLES;o=0,this.gl.drawArrays(a,o,6)}static isSessionSupported(A){return navigator.xr?navigator.xr.isSessionSupported(A):new Promise(()=>!1)}}class jd{constructor(A){this.editTextButton=null,this.hiddenInput=null,"ontouchstart"in document.documentElement&&this.createOnScreenKeyboardHelpers(A)}unquantizeAndDenormalizeUnsigned(A,e){return null}createOnScreenKeyboardHelpers(A){this.hiddenInput||(this.hiddenInput=document.createElement("input"),this.hiddenInput.id="hiddenInput",this.hiddenInput.maxLength=0,A.appendChild(this.hiddenInput)),this.editTextButton||(this.editTextButton=document.createElement("button"),this.editTextButton.id="editTextButton",this.editTextButton.innerHTML="edit text",A.appendChild(this.editTextButton),this.editTextButton.classList.add("hiddenState"),this.editTextButton.addEventListener("touchend",e=>{this.hiddenInput.focus(),e.preventDefault()}))}showOnScreenKeyboard(A){if(A.showOnScreenKeyboard){this.editTextButton.classList.remove("hiddenState");const e=this.unquantizeAndDenormalizeUnsigned(A.x,A.y);this.editTextButton.style.top=e.y.toString()+"px",this.editTextButton.style.left=(e.x-40).toString()+"px"}else this.editTextButton.classList.add("hiddenState"),this.hiddenInput.blur()}}class Au{constructor(A,e){this._showActionOrErrorOnDisconnect=!0,this.allowConsoleCommands=!1,this.config=A,e!=null&&e.videoElementParent&&(this._videoElementParent=e.videoElementParent),this._eventEmitter=new Ia,this.configureSettings(),this.setWebRtcPlayerController(new Wa(this.config,this)),this.onScreenKeyboardHelper=new jd(this.videoElementParent),this.onScreenKeyboardHelper.unquantizeAndDenormalizeUnsigned=(t,n)=>this._webRtcController.requestUnquantizedAndDenormalizeUnsigned(t,n),this._activateOnScreenKeyboard=t=>this.onScreenKeyboardHelper.showOnScreenKeyboard(t),this._webXrController=new za(this._webRtcController)}get videoElementParent(){return this._videoElementParent||(this._videoElementParent=document.createElement("div"),this._videoElementParent.id="videoElementParent"),this._videoElementParent}configureSettings(){this.config._addOnSettingChangedListener(U.IsQualityController,A=>{A!==!0||this._webRtcController.isQualityController||this._webRtcController.sendRequestQualityControlOwnership()}),this.config._addOnSettingChangedListener(U.AFKDetection,A=>{this._webRtcController.setAfkEnabled(A)}),this.config._addOnSettingChangedListener(U.MatchViewportResolution,()=>{this._webRtcController.videoPlayer.updateVideoStreamSize()}),this.config._addOnSettingChangedListener(U.HoveringMouseMode,A=>{this.config.setFlagLabel(U.HoveringMouseMode,`Control Scheme: ${A?"Hovering":"Locked"} Mouse`),this._webRtcController.setMouseInputEnabled(this.config.isFlagEnabled(U.MouseInput))}),this.config._addOnSettingChangedListener(U.KeyboardInput,A=>{this._webRtcController.setKeyboardInputEnabled(A)}),this.config._addOnSettingChangedListener(U.MouseInput,A=>{this._webRtcController.setMouseInputEnabled(A)}),this.config._addOnSettingChangedListener(U.TouchInput,A=>{this._webRtcController.setTouchInputEnabled(A)}),this.config._addOnSettingChangedListener(U.GamepadInput,A=>{this._webRtcController.setGamePadInputEnabled(A)}),this.config._addOnNumericSettingChangedListener(M.MinQP,A=>{h.Log(h.GetStackTrace(),"-------- Sending MinQP --------",7),this._webRtcController.sendEncoderMinQP(A),h.Log(h.GetStackTrace(),"-------------------------------------------",7)}),this.config._addOnNumericSettingChangedListener(M.MaxQP,A=>{h.Log(h.GetStackTrace(),"-------- Sending encoder settings --------",7),this._webRtcController.sendEncoderMaxQP(A),h.Log(h.GetStackTrace(),"-------------------------------------------",7)}),this.config._addOnNumericSettingChangedListener(M.WebRTCMinBitrate,A=>{h.Log(h.GetStackTrace(),"-------- Sending web rtc settings --------",7),this._webRtcController.sendWebRTCMinBitrate(1e3*A),h.Log(h.GetStackTrace(),"-------------------------------------------",7)}),this.config._addOnNumericSettingChangedListener(M.WebRTCMaxBitrate,A=>{h.Log(h.GetStackTrace(),"-------- Sending web rtc settings --------",7),this._webRtcController.sendWebRTCMaxBitrate(1e3*A),h.Log(h.GetStackTrace(),"-------------------------------------------",7)}),this.config._addOnNumericSettingChangedListener(M.WebRTCFPS,A=>{h.Log(h.GetStackTrace(),"-------- Sending web rtc settings --------",7),this._webRtcController.sendWebRTCFps(A),h.Log(h.GetStackTrace(),"-------------------------------------------",7)}),this.config._addOnOptionSettingChangedListener(V.PreferredCodec,A=>{this._webRtcController&&this._webRtcController.setPreferredCodec(A)}),this.config._registerOnChangeEvents(this._eventEmitter)}_activateOnScreenKeyboard(A){throw new Error("Method not implemented.")}_onInputControlOwnership(A){this._inputController=A}setWebRtcPlayerController(A){this._webRtcController=A,this._webRtcController.setPreferredCodec(this.config.getSettingOption(V.PreferredCodec).selected),this._webRtcController.resizePlayerStyle(),this.checkForAutoConnect()}connect(){this._eventEmitter.dispatchEvent(new Ba),this._webRtcController.connectToSignallingServer()}reconnect(){this._eventEmitter.dispatchEvent(new wa),this._webRtcController.restartStreamAutomatically()}disconnect(){this._eventEmitter.dispatchEvent(new fa),this._webRtcController.close()}play(){this._onStreamLoading(),this._webRtcController.playStream()}checkForAutoConnect(){this.config.isFlagEnabled(U.AutoConnect)&&(this._onWebRtcAutoConnect(),this._webRtcController.connectToSignallingServer())}_onWebRtcAutoConnect(){this._eventEmitter.dispatchEvent(new sa),this._showActionOrErrorOnDisconnect=!0}_onWebRtcSdp(){this._eventEmitter.dispatchEvent(new na)}_onStreamLoading(){this._eventEmitter.dispatchEvent(new ga)}_onDisconnect(A){this._webRtcController.getDisconnectMessageOverride()!=""&&this._webRtcController.getDisconnectMessageOverride()!==void 0&&this._webRtcController.getDisconnectMessageOverride()!=null&&(A=this._webRtcController.getDisconnectMessageOverride(),this._webRtcController.setDisconnectMessageOverride("")),this._eventEmitter.dispatchEvent(new la({eventString:A,showActionOrErrorOnDisconnect:this._showActionOrErrorOnDisconnect})),this._showActionOrErrorOnDisconnect==0&&(this._showActionOrErrorOnDisconnect=!0)}_onWebRtcConnecting(){this._eventEmitter.dispatchEvent(new ia)}_onWebRtcConnected(){this._eventEmitter.dispatchEvent(new oa)}_onWebRtcFailed(){this._eventEmitter.dispatchEvent(new aa)}_onVideoInitialized(){this._eventEmitter.dispatchEvent(new ha),this._videoStartTime=Date.now()}_onLatencyTestResult(A){this._eventEmitter.dispatchEvent(new Ua({latencyTimings:A}))}_onVideoStats(A){this._videoStartTime&&this._videoStartTime!==void 0||(this._videoStartTime=Date.now()),A.handleSessionStatistics(this._videoStartTime,this._inputController,this._webRtcController.videoAvgQp),this._eventEmitter.dispatchEvent(new Fa({aggregatedStats:A}))}_onVideoEncoderAvgQP(A){this._eventEmitter.dispatchEvent(new ra({avgQP:A}))}_onInitialSettings(A){var e;this._eventEmitter.dispatchEvent(new Ea({settings:A})),A.PixelStreamingSettings&&(this.allowConsoleCommands=(e=A.PixelStreamingSettings.AllowPixelStreamingCommands)!==null&&e!==void 0&&e,this.allowConsoleCommands===!1&&h.Info(h.GetStackTrace(),"-AllowPixelStreamingCommands=false, sending arbitrary console commands from browser to UE is disabled."));const t=this.config.useUrlParams,n=new URLSearchParams(window.location.search);A.EncoderSettings&&(this.config.setNumericSetting(M.MinQP,t&&n.has(M.MinQP)?Number.parseInt(n.get(M.MinQP)):A.EncoderSettings.MinQP),this.config.setNumericSetting(M.MaxQP,t&&n.has(M.MaxQP)?Number.parseInt(n.get(M.MaxQP)):A.EncoderSettings.MaxQP)),A.WebRTCSettings&&(this.config.setNumericSetting(M.WebRTCMinBitrate,t&&n.has(M.WebRTCMinBitrate)?Number.parseInt(n.get(M.WebRTCMinBitrate)):A.WebRTCSettings.MinBitrate/1e3),this.config.setNumericSetting(M.WebRTCMaxBitrate,t&&n.has(M.WebRTCMaxBitrate)?Number.parseInt(n.get(M.WebRTCMaxBitrate)):A.WebRTCSettings.MaxBitrate/1e3),this.config.setNumericSetting(M.WebRTCFPS,t&&n.has(M.WebRTCFPS)?Number.parseInt(n.get(M.WebRTCFPS)):A.WebRTCSettings.FPS))}_onQualityControlOwnership(A){this.config.setFlagEnabled(U.IsQualityController,A)}_onPlayerCount(A){this._eventEmitter.dispatchEvent(new Sa({count:A}))}requestLatencyTest(){return!!this._webRtcController.videoPlayer.isVideoReady()&&(this._webRtcController.sendLatencyTest(),!0)}requestShowFps(){return!!this._webRtcController.videoPlayer.isVideoReady()&&(this._webRtcController.sendShowFps(),!0)}requestIframe(){return!!this._webRtcController.videoPlayer.isVideoReady()&&(this._webRtcController.sendIframeRequest(),!0)}emitUIInteraction(A){return!!this._webRtcController.videoPlayer.isVideoReady()&&(this._webRtcController.emitUIInteraction(A),!0)}emitCommand(A){return!(!this._webRtcController.videoPlayer.isVideoReady()||!this.allowConsoleCommands&&"ConsoleCommand"in A||(this._webRtcController.emitCommand(A),0))}emitConsoleCommand(A){return!(!this.allowConsoleCommands||!this._webRtcController.videoPlayer.isVideoReady()||(this._webRtcController.emitConsoleCommand(A),0))}addResponseEventListener(A,e){this._webRtcController.responseController.addResponseEventListener(A,e)}removeResponseEventListener(A){this._webRtcController.responseController.removeResponseEventListener(A)}dispatchEvent(A){return this._eventEmitter.dispatchEvent(A)}addEventListener(A,e){this._eventEmitter.addEventListener(A,e)}removeEventListener(A,e){this._eventEmitter.removeEventListener(A,e)}toggleXR(){this.webXrController.xrClicked()}setSignallingUrlBuilder(A){this._webRtcController.signallingUrlBuilder=A}get webSocketController(){return this._webRtcController.webSocketController}get webXrController(){return this._webXrController}}H.Dz,H.g$,H.Lt,H.Q9,H.qf,H.hV,H.z$,H.J0;var Ya=H.De;H.$C,H.al,H._W,H.tz,H.Nu,H.zg,H.vp;var pe=H.vU;H.wF,H.rv,H.Nh,H.ss,H.qW,H.QL,H.cf,H.eM;var $a=H.Yd;H.iM,H.qy,H.ce;var Za=H.sK;H.Ok,H.q5;var qa=H.g;H.xl,H.I,H.bx,H.dD,H.Ib,H.Az,H.Iw,H.qY,H.db,H.mR,H.Tn,H.rV,H.gh,H.Mi,H.j,H.YB,H.i5;var eu=H.x_;H.Am,H.eR,H.r8,H.u3,H.vd,H.iV,H.jZ,H.SW,H.ZH,H.Ni,H.lh,H.bq,H.$f,H.eu,H.Ax,H.Mc;const tu={Response:1},Ur={UIInteraction:50,MouseWheel:75};class ru extends w.HasOwner{constructor(e,t){super(e);C(this,"_processResponseFn",e=>this.esUeViewer.processResponse(e));C(this,"_inner");this._uri=t,this._inner=new WebSocket(this._uri),this.d(()=>{this._inner.close()}),this._innerInit()}get esUeViewer(){return this.owner}get uri(){return this._uri}get inner(){return this._inner}_innerInit(){this.inner.onmessage=e=>{if(this.isDestroyed())return;let t=new FileReader;t.onload=n=>{if(this.isDestroyed())return;let s=n.target.result,i=new Uint32Array(s),o=0;if(i[0]===tu.Response){o+=4;let a=i[o/4];o+=4;for(let l=0;l<a;l++){let c=i[o/4];o+=4;let u=new TextDecoder("utf-8").decode(s.slice(o,o+c));o+=c,this._processResponseFn(u)}}},t.readAsArrayBuffer(e.data)},this.inner.onopen=()=>{this.isDestroyed()||(console.warn("earthsdk message websocket server connected:",this.uri),console.log("%c[EarthSDK websocket open]","background: #a6ec99; color: black","open"),this.owner.dispatchEvent(new CustomEvent("esmsgwsopen",{detail:"websocket open"})))},this._inner.onclose=e=>{this.isDestroyed()||(console.log("%c[EarthSDK websocket close ]","background: red; color: black","error"),this.owner.dispatchEvent(new CustomEvent("error",{detail:"websocket close"})))},this._inner.onerror=e=>{this.isDestroyed()||(console.log("%c[EarthSDK websocket error ]","background: red; color: black","error"),this.owner.dispatchEvent(new CustomEvent("error",{detail:"websocket error"})))}}sendInputData(e){const t=this.inner;if(t.readyState!==WebSocket.OPEN)return;const s=new Uint8Array(e)[0];if(s>=Ur.UIInteraction&&s<=Ur.MouseWheel){const i=new ArrayBuffer(e.byteLength+4);return new DataView(i).setUint32(0,e.byteLength,!0),new Uint8Array(i,4).set(new Uint8Array(e)),t.send(new DataView(i)),!0}else return!1}emitDescriptorWithString(e,t){let n=new TextEncoder().encode(t),s=new DataView(new ArrayBuffer(3+n.length)),i=0;s.setUint8(i,e),i++,s.setUint16(i,n.length,!0),i+=2;for(let o=0;o<n.length;o++)s.setUint8(i,n[o]),i+=1;try{this.sendInputData(s.buffer)}catch(o){console.error(`data.buffer.size: ${s.buffer.byteLength} 独立通道 sendInputData error: ${o}`,o)}}destroyImpl(){this._inner&&this._inner.close()}}window.g_emitDescriptor_maxBytes=3e4;let nu=-1;$a.SetLoggerVerbosity(1);class su extends w.Destroyable{constructor(e,t){super();C(this,"_eventTarget",new EventTarget);C(this,"debug",!1);C(this,"uiInteractionCallbacks",new Map);C(this,"_pixelStream");C(this,"_esMsgWsWrapper");this._domOrDomId=e,this._options=t;const n=typeof this._domOrDomId=="string"?document.getElementById(this._domOrDomId):this._domOrDomId;if(!n)throw new Error(`ESUEViewer container${this._domOrDomId} error!`);console.log(`PSUEViewer init _options ${this._options}`);const{url:s,esmsgWsUri:i}=this._options;this._pixelStream=this._initPixelStream(n,s),this.d(()=>{this._pixelStream.disconnect()}),this._handerPixelStreamEvent(),this._esMsgWsWrapper=this._initEsMsgWsWrapper(i);const o=this;if(o.esMsgWsWrapper){const a=o.webRtcController.sendMessageController.dataChannelSender.sendData;o.webRtcController.sendMessageController.dataChannelSender.constructor.prototype.sendData=function(l){o.esMsgWsWrapper?o.esMsgWsWrapper.sendInputData(l):a.call(this,l)}}}get eventTarget(){return this._eventTarget}addEventListener(e,t,n){return this.eventTarget.addEventListener(e,t,n)}removeEventListener(e,t,n){return this.eventTarget.removeEventListener(e,t,n)}dispatchEvent(e){return this.eventTarget.dispatchEvent(e)}_initPixelStream(e,t){const n=new Ya({initialSettings:{AutoPlayVideo:!0,AutoConnect:!0,StartVideoMuted:!1,SuppressBrowserKeys:!1,[eu.SignallingServerUrl]:t}});return n.setFlagEnabled(pe.BrowserSendOffer,!1),n.setFlagEnabled(pe.HoveringMouseMode,!0),n.setFlagEnabled(pe.MatchViewportResolution,!0),n.setNumericSetting(Za.MaxReconnectAttempts,0),new qa(n,{videoElementParent:e})}get pixelStream(){return this._pixelStream}_initEsMsgWsWrapper(e){return e?this.dv(new ru(this,e)):void 0}get esMsgWsWrapper(){return this._esMsgWsWrapper}get esWebSocketReady(){var e;return((e=this.esMsgWsWrapper)==null?void 0:e.inner.readyState)===1}_handerPixelStreamEvent(){this.pixelStream.addEventListener("videoInitialized",()=>{console.log("%c[EarthSDK webrtc videoInitialized]","background: #a6ec99; color: black","videoInitialized"),this.dispatchEvent(new CustomEvent("videoinited",{detail:"videoinited"}))}),this.pixelStream.addEventListener("webRtcFailed",()=>{this.isDestroyed()||(console.log("%c[EarthSDK webRtc webRtcFailed]","background: red; color: black","webRtcFailed"),this.dispatchEvent(new CustomEvent("error",{detail:"webRtcFailed"})),this.pixelStream.disconnect())}),this.pixelStream.addEventListener("webRtcDisconnected",()=>{this.isDestroyed()||(console.log("%c[EarthSDK webRtc webRtcDisconnected]","background: red; color: black","webRtcDisconnected"),this.dispatchEvent(new CustomEvent("error",{detail:"webRtcDisconnected"})),this.pixelStream.disconnect())}),this.pixelStream.addEventListener("webRtcConnected",()=>{this.isDestroyed()||(console.log("%c[EarthSDK webrtc webRtcConnected]","background: #a6ec99; color: black","webRtcConnected"),this.dispatchEvent(new CustomEvent("webRtcConnected",{detail:"webRtcConnected"})))}),this.pixelStream.addResponseEventListener("esueviewer",e=>{this.processResponse(e)})}resolveCallback(e){let t={};try{t=JSON.parse(e)}catch{return!1}let n=t.callid;if(typeof n!="string"||!this.uiInteractionCallbacks.has(n))return!1;let s=this.uiInteractionCallbacks.get(n);return typeof s!="function"?!1:(s(t),this.uiInteractionCallbacks.delete(n),!0)}processResponse(e){if(this.debug??!1)try{const t=JSON.parse(e);if(t.ers=t.ers&&t.ers.filter(n=>n.et!=="mouseMoveEvent"),!(t.ers&&t.ers.length>0||t.frs&&t.frs.length>0))return;console.group("%cUE => JS"," background-color:#006EFF;color:#ffffff;font-weight:bold;padding:4px;border-radius:5px;"),console.log(`%c${JSON.stringify(t,void 0,"")}`," border:1px dashed #006EFF;border-radius:5px;padding:10px;line-height:25px;color:#006EFF;"),console.groupEnd()}catch(t){console.error(`processResponse(${e}) error: ${t}`,t)}this.resolveCallback(e)||this.dispatchEvent(new CustomEvent("ueevent",{detail:e}))}emitUIInteraction(e,t){typeof t=="function"&&(e.callid=w.createGuid(),this.uiInteractionCallbacks.set(e.callid,t)),this.pixelStream.emitUIInteraction(e)}get webRtcController(){return this.pixelStream._webRtcController}emitUIInteractionForBigData(e,t){typeof t=="function"&&(e.callid=w.createGuid(),this.uiInteractionCallbacks.set(e.callid,t));const n=JSON.stringify(e),s=window.g_emitDescriptor_maxBytes,i=n.length,o=++nu;if(this.esMsgWsWrapper){if(i<s){this.esMsgWsWrapper.emitDescriptorWithString(Ur.UIInteraction,`${o}-0/1-`+n);return}const a=Math.ceil(i/s)|0;[...new Array(a).keys()].map(c=>n.slice(c*s,(c+1)*s)).forEach((c,u)=>{this.esMsgWsWrapper&&this.esMsgWsWrapper.emitDescriptorWithString(Ur.UIInteraction,`${o}-${u}/${a}-`+c)})}}emitCommand(e){this.pixelStream.emitCommand(e)}getVideoSize(){const e=this.webRtcController.videoPlayer.getVideoElement();return{width:e.videoWidth,height:e.videoHeight}}resizeUEVideo(e,t){let n={Resolution:{Width:e,Height:t}};console.log(`resizeUEVideo emitCommand ${e} ${t} begin`),this.emitCommand(n)}}class iu extends w.Destroyable{constructor(e,t,n){super();C(this,"_instance");C(this,"_event",this.dv(new w.Event));this._container=e,this._wsuri=t,this._esmsgWsUri=n,this._instance=this.dv(new su(this._container,{url:this._wsuri,esmsgWsUri:this._esmsgWsUri})),this.instanceInit()}get webSocketReady(){return this._instance.esWebSocketReady}get event(){return this._event}get debug(){return this._instance.debug}set debug(e){this._instance.debug=e}instanceInit(){if("addEventListener"in this._instance){["esmsgwsopen","error","videoinited","ueevent","webRtcConnected"].forEach(t=>{const n=s=>{this._event.emit(t,s.detail)};this._instance.addEventListener(t,n),this.dispose(()=>this._instance.removeEventListener(t,n))});return}this.dispose(this._instance.errorEvent.disposableOn(e=>{this._event.emit("error",e.detail)})),this.dispose(this._instance.webRtcConnectedEvent.disposableOn(e=>{this._event.emit("webRtcConnected",e.detail)})),this.dispose(this._instance.videoinitedEvent.disposableOn(e=>{this._event.emit("videoinited",e.detail)})),this.dispose(this._instance.ueevent.disposableOn(e=>{this._event.emit("ueevent",e.detail)}))}emitUIInteractionForBigData(e,t){return new Promise((n,s)=>{const i=(...o)=>{n(o),t&&t(...o)};try{this._instance.emitUIInteractionForBigData(e,i)}catch(o){console.warn(`emitUIInteraction发生错误:${o}`),s(o)}})}getVideoSize(){return this._instance.getVideoSize()}resize(e,t){this._instance.resizeUEVideo(e,t)}}class ou extends Ve{constructor(e,t,n,s){super();C(this,"_esueViewerWrapper");C(this,"_ueFuncResultWithIdsEvent",this.dv(new w.Event));C(this,"_ueFuncWithIdAndResultCallbacks",[]);C(this,"_waitingUeFuncIdAndResultCallbacks",new Map);C(this,"_waitingUeCalls",new Set);C(this,"_ueEvent",this.dv(new w.Event));C(this,"_errorEvent",this.dv(new w.Event));C(this,"_readyEvent",this.dv(new w.Event));C(this,"_esmsgwsopen",this.dv(w.react(!1)));C(this,"_videoinited",this.dv(w.react(!1)));C(this,"_webRtcConnected",this.dv(w.react(!1)));this._ueViewer=s,console.log("CSTMPSViewer init ! 以官方像素流 + 独立通信的模式启动!");const i=this._ueViewer;this._esueViewerWrapper=this.dv(new iu(e,t,n));const o=this._esueViewerWrapper;{const B=()=>o.debug=i.debug??!1;B(),this.d(i.debugChanged.don(B))}let a=!1;{const B=()=>{if(a)return;const g=o.webSocketReady;if(this.videoinited&&this.webRtcConnected&&g){console.log("%c[EarthSDK: esmsgWebSocket && videoinited && webRtcConnected]","background: #a6ec99; color: black");const f={eventType:"init",params:{}};o.emitUIInteractionForBigData(f),this._readyEvent.emit(),a=!0}};this.d(this.videoinitedChanged.don(()=>{B()})),this.d(this.webRtcConnectedChanged.don(()=>{B()})),this.d(this.esmsgwsopenChanged.don(()=>{B()}))}this.d(o.event.don((B,g)=>{if(B==="error")this._errorEvent.emit(g);else if(B==="ueevent"){const f=JSON.parse(g);if(f.t==="cr"){const m=f;if(m.frs&&this._ueFuncResultWithIdsEvent.emit(m.frs),m.ers)for(let F of m.ers)this._ueEvent.emit(F)}}else B==="webRtcConnected"?this.webRtcConnected=!0:B==="videoinited"?this.videoinited=!0:B==="esmsgwsopen"&&(this.esmsgwsopen=!0)}));{const B=this.dv(w.createAnimateFrame());let g,f;B.start(()=>{if(g!==e.offsetWidth||f!==e.offsetHeight){if(g=e.offsetWidth,f=e.offsetHeight,g===void 0||f===void 0||!Number.isFinite(g)||!Number.isFinite(f)||g<0||f<0){console.warn(`lastWidth === undefined || lastHeight === undefined || !Number.isFinite(lastWidth) || !Number.isFinite(lastHeight) || lastWidth < 0 || lastHeight < 0 ${g} ${f}`);return}o.resize(g,f),console.log(`resize: ${g} ${f}`)}})}this.d(this._ueFuncResultWithIdsEvent.don(B=>{for(const g of B){const f=this._waitingUeFuncIdAndResultCallbacks.get(g.fid);f&&(this._waitingUeFuncIdAndResultCallbacks.delete(g.fid),f.resultCallback(g.r))}}));let l=0;const c=B=>{const g={n:l++,tt:Date.now(),t:"c",fs:B};this._waitingUeCalls.add(g),i.debug&&(console.group("%cxe2 => ue"," background-color:green;color:#ffffff;font-weight:bold;padding:4px;border-radius:5px;"),console.log(`%c${JSON.stringify(g,void 0,"")}`," border:1px dashed green;border-radius:5px;padding:10px;line-height:25px;color:green;"),console.groupEnd()),this._esueViewerWrapper.emitUIInteractionForBigData(g,()=>{this._waitingUeCalls.delete(g)})},u=()=>{if(!a||this._ueFuncWithIdAndResultCallbacks.length===0)return;const B=this._ueFuncWithIdAndResultCallbacks.map(([g])=>g);for(const[g,f]of this._ueFuncWithIdAndResultCallbacks)this._waitingUeFuncIdAndResultCallbacks.set(g.fid,f);this._ueFuncWithIdAndResultCallbacks.length=0;{const g=window.g_emitDescriptor_maxBytes,f=B.map(L=>({f:L,s:JSON.stringify(L).length}));let m=f.length,F=0,Q=0,y=[];do{do{const{f:L,s:I}=f[F];if(y.push(L),++F,Q+I>g||y.length>=20)break}while(F<m);y.length>0&&(i.debug&&console.log(`传送${y.length}条消息...`),c([...y]),y.length=0,Q=0)}while(F<m)}};this.dv(w.createInterval()).start(u,50),this.d(()=>console.log("UeCloudViewer正在销毁..."))}get esueViewerWrapper(){return this._esueViewerWrapper}get errorEvent(){return this._errorEvent}get readyEvent(){return this._readyEvent}get esmsgwsopen(){return this._esmsgwsopen.value}set esmsgwsopen(e){this._esmsgwsopen.value=e}get esmsgwsopenChanged(){return this._esmsgwsopen.changed}get videoinited(){return this._videoinited.value}set videoinited(e){this._videoinited.value=e}get videoinitedChanged(){return this._videoinited.changed}get webRtcConnected(){return this._webRtcConnected.value}set webRtcConnected(e){this._webRtcConnected.value=e}get webRtcConnectedChanged(){return this._webRtcConnected.changed}resize(e,t){this.esueViewerWrapper.resize(e,t)}callUeFunc(e){return new Promise(t=>{const s={fid:w.createGuid(),...e};this._ueFuncWithIdAndResultCallbacks.push([s,{timeStamp:Date.now(),ueFunc:e,resultCallback:t}])})}disposableOnUeEvent(e,t){(this._ueViewer.debug??!1)&&console.log(`disposableOnUeEvent from UeCloudViewer, type:${e}`);const n=w.createGuid();this.callUeFunc({f:"addEventListener",p:{et:e,eid:n}});const s=()=>{this.callUeFunc({f:"removeEventListener",p:{eid:n}})},i=this._ueEvent.don(o=>{o.et===e&&o.eid===n&&t(o)});return()=>{i(),s()}}}function au(r){let A="";const e=new Uint8Array(r),t=e.length;for(let n=0;n<t;n++)A+=String.fromCharCode(e[n]);return btoa(A)}const lu=r=>{const A={type:"input",inputdata:au(r)};return JSON.stringify(A)};function cu(r){return typeof r=="string"?document.getElementById(r):r}window.g_emitDescriptor_maxBytes=3e4,console.log("全局可设置消息体最大字节, window.g_emitDescriptor_maxBytes 默认 30000 。");let du=-1;$a.SetLoggerVerbosity(1);class uu extends w.Destroyable{constructor(e,t){super();C(this,"debug",!1);C(this,"_error",this.dv(new w.Event));C(this,"_connected",this.dv(new w.Event));C(this,"_ueevent",this.dv(new w.Event));C(this,"_pixelStream");C(this,"uiInteractionCallbacks",new Map);this._container=e,this._option=t;const n=new Ya({initialSettings:{HoveringMouse:!0,AutoPlayVideo:!0,AutoConnect:!0,StartVideoMuted:!1,SuppressBrowserKeys:!1,ss:this._option.ws},useUrlParams:!0});n.setFlagEnabled(pe.BrowserSendOffer,!1),n.setFlagEnabled(pe.HoveringMouseMode,!0),n.setFlagEnabled(pe.MatchViewportResolution,!0),n.setNumericSetting(Za.MaxReconnectAttempts,0),this._pixelStream=new qa(n,{videoElementParent:this.container}),this.d(()=>{this._pixelStream.disconnect()});{const s=this.pixelStream.webSocketController.webSocket,i=this._pixelStream._webRtcController.sendMessageController.dataChannelSender.sendData;this._pixelStream._webRtcController.sendMessageController.dataChannelSender.constructor.prototype.sendData=function(o){s?s.send(lu(o)):i.call(this,o)}}{const s=i=>{const o=this._pixelStream._webRtcController.mouseController;setTimeout(()=>{const a=o.coordinateConverter.normalizeAndQuantizeUnsigned(i.offsetX,i.offsetY),c=o.toStreamerMessagesProvider.toStreamerHandlers.get("MouseUp");c&&c([i.button,a.x,a.y]),i.preventDefault()})};this.container.addEventListener("dblclick",s),this.d(()=>{this.container.removeEventListener("dblclick",s)})}["error","close","open"].forEach(i=>{const o=()=>{this.isDestroyed()||(i==="open"?this.connected.emit("webSocketOpen"):i==="close"?this.error.emit("webSocketClose"):i==="error"&&this.error.emit("webSocketError"))};this.pixelStream.webSocketController.webSocket.addEventListener(i,o),this.d(()=>{this.pixelStream.webSocketController.webSocket.removeEventListener(i,o)})}),["videoInitialized","webRtcConnected","webRtcDisconnected","webRtcFailed"].forEach(i=>{const o=()=>{this.isDestroyed()||(i==="webRtcConnected"||i==="videoInitialized"?this.connected.emit(i):(i==="webRtcDisconnected"||i==="webRtcFailed")&&(this.error.emit(i),this.pixelStream.disconnect()))};this.pixelStream.addEventListener(i,o),this.d(()=>{this.pixelStream.removeEventListener(i,o)})}),this.pixelStream.addResponseEventListener("handle_responses",s=>{this.processResponse(s)}),this.d(()=>{this.pixelStream.removeResponseEventListener("handle_responses")})}get error(){return this._error}get connected(){return this._connected}get ueevent(){return this._ueevent}get container(){return cu(this._container)}get pixelStream(){return this._pixelStream}get webSocketReady(){return this.pixelStream.webSocketController.webSocket.readyState===1}processResponse(e){if(this.debug??!1)try{const t=JSON.parse(e);console.group("%cUE => JS"," background-color:#006EFF;color:#ffffff;font-weight:bold;padding:4px;border-radius:5px;"),console.log(`%c${JSON.stringify(t,void 0,"")}`," border:1px dashed #006EFF;border-radius:5px;padding:10px;line-height:25px;color:#006EFF;"),console.groupEnd()}catch(t){console.error(`processResponse(${e}) error: ${t}`,t)}this.resolveCallback(e)||this.ueevent.emit(e)}emitUIInteractionForBigData(e,t){typeof t=="function"&&(e.callid=w.createGuid(),this.uiInteractionCallbacks.set(e.callid,t));const n=JSON.stringify(e),s=window.g_emitDescriptor_maxBytes??3e4,i=n.length,o=++du;if(i<s){const c={type:"earthsdk",time:new Date().getTime(),params:`${o}-0/1-`+n};this.sendData(JSON.stringify(c));return}const a=Math.ceil(i/s)|0;[...new Array(a).keys()].map(c=>n.slice(c*s,(c+1)*s)).forEach((c,u)=>{const d={type:"earthsdk",time:new Date().getTime(),params:`${o}-${u}/${a}-`+c};this.sendData(JSON.stringify(d))})}sendData(e){this.pixelStream.webSocketController.webSocket.send(e)}resolveCallback(e){let t={};try{t=JSON.parse(e)}catch{return!1}let n=t.callid;if(typeof n!="string"||!this.uiInteractionCallbacks.has(n))return!1;let s=this.uiInteractionCallbacks.get(n);return typeof s!="function"?!1:(s(t),this.uiInteractionCallbacks.delete(n),!0)}getVideoSize(){const e=this._pixelStream._webRtcController.videoPlayer.getVideoElement();return{width:e.videoWidth,height:e.videoHeight}}emitCommand(e){this.pixelStream.emitCommand(e)}emitUIInteraction(){console.log("emitUIInteraction 像素流初始化"),this.pixelStream.emitUIInteraction("像素流初始化")}resizeUEVideo(e,t){const n={Resolution:{Width:e,Height:t}};console.log(`resizeUEVideo emitCommand ${e} ${t} begin`),this.emitCommand(n)}}class hu extends w.Destroyable{constructor(e,t,n){super();C(this,"_instance");C(this,"_event",this.dv(new w.Event));this._container=e,this._wsuri=t,this._esmsgWsUri=n,this._instance=this.dv(new uu(this._container,{ws:this._wsuri})),this.d(this._instance.connected.don(s=>{this._event.emit(s,s),console.log(`%c[EarthSDK] ${s}`,"background: #a6ec99; color: black")})),this.d(this._instance.error.don(s=>{this._event.emit("errorEvent",s),console.log(`%c[EarthSDK] ${s}`,"background: red; color: black")})),this.d(this._instance.ueevent.don(s=>{this._event.emit("ueevent",s)}))}get instance(){return this._instance}get event(){return this._event}get debug(){return this._instance.debug}set debug(e){this._instance.debug=e}emitUIInteractionForBigData(e,t){return new Promise((n,s)=>{const i=(...o)=>{n(o),t&&t(...o)};try{this._instance.emitUIInteractionForBigData(e,i)}catch(o){console.warn(`emitUIInteraction发生错误:${o}`),s(o)}})}getVideoSize(){return this._instance.getVideoSize()}resize(e,t){this._instance.resizeUEVideo(e,t)}}class gu extends Ve{constructor(e,t,n,s){super();C(this,"_videoInitialized",this.dv(w.react(!1)));C(this,"_webRtcConnected",this.dv(w.react(!1)));C(this,"_webSocketOpen",this.dv(w.react(!1)));C(this,"_ue5ViewerWrapper");C(this,"_ueFuncResultWithIdsEvent",this.dv(new w.Event));C(this,"_ueFuncWithIdAndResultCallbacks",[]);C(this,"_waitingUeFuncIdAndResultCallbacks",new Map);C(this,"_waitingUeCalls",new Set);C(this,"_ueEvent",this.dv(new w.Event));C(this,"_errorEvent",this.dv(new w.Event));C(this,"_readyEvent",this.dv(new w.Event));this._ueViewer=s,console.log("INNPSViewer init ! 以内置信令服务器模式启动!");const i=this._ueViewer,o=this.dv(new hu(e,t,n));this._ue5ViewerWrapper=o;{const d=()=>o.debug=i.debug??!1;d(),this.d(i.debugChanged.don(d))}{let d=!1;const B=this.dv(w.createNextAnimateFrameEvent(this._videoInitialized.changed,this._webRtcConnected.changed,this._webSocketOpen.changed));this.d(B.don(()=>{if(d)return;const g=this._ue5ViewerWrapper.instance.webSocketReady;if(this.videoInitialized&&this.webRtcConnected&&g){this._ue5ViewerWrapper.instance.emitUIInteraction(),this._readyEvent.emit(),d=!0,console.log("%c[EarthSDK videoInitialized && webRtcConnected && webSocketReady]","background: #a6ec99; color: black");const f={eventType:"init",params:{}};this._ue5ViewerWrapper.emitUIInteractionForBigData(f)}else console.warn("webSocketReady",g),d=!1}))}this.d(o.event.don((d,B)=>{if(d==="errorEvent")this._errorEvent.emit(B);else if(d==="videoInitialized")this._videoInitialized.value=!0;else if(d==="webRtcConnected")this._webRtcConnected.value=!0;else if(d==="webSocketOpen")this._webSocketOpen.value=!0;else if(d==="ueevent"){const g=JSON.parse(B);if(g.t==="cr"){const f=g;if(f.frs&&this._ueFuncResultWithIdsEvent.emit(f.frs),f.ers)for(let m of f.ers)this._ueEvent.emit(m)}}}));{const d=this.dv(w.createAnimateFrame());let B,g,f;d.start(()=>{if(B!==e.offsetWidth||g!==e.offsetHeight||f!==i.resolutionScale){if(B=e.offsetWidth,g=e.offsetHeight,B===void 0||g===void 0||!Number.isFinite(B)||!Number.isFinite(g)||B<0||g<0){console.warn(`lastWidth === undefined || lastHeight === undefined || !Number.isFinite(lastWidth) || !Number.isFinite(lastHeight) || lastWidth < 0 || lastHeight < 0 ${B} ${g}`);return}f=i.resolutionScale,o.resize(B/f,g/f)}})}this.d(this._ueFuncResultWithIdsEvent.don(d=>{for(const B of d){const g=this._waitingUeFuncIdAndResultCallbacks.get(B.fid);g&&(this._waitingUeFuncIdAndResultCallbacks.delete(B.fid),g.resultCallback(B.r))}}));let a=0;const l=d=>{const B={n:a++,tt:Date.now(),t:"c",fs:d};this._waitingUeCalls.add(B),i.debug&&(console.group("%cxe2 => ue"," background-color:green;color:#ffffff;font-weight:bold;padding:4px;border-radius:5px;"),console.log(`%c${JSON.stringify(B,void 0,"")}`," border:1px dashed green;border-radius:5px;padding:10px;line-height:25px;color:green;"),console.groupEnd()),this._ue5ViewerWrapper.emitUIInteractionForBigData(B,()=>{this._waitingUeCalls.delete(B)})},c=()=>{if(!this._ue5ViewerWrapper.instance.webSocketReady||this._ueFuncWithIdAndResultCallbacks.length===0)return;const B=this._ueFuncWithIdAndResultCallbacks.map(([g])=>g);for(const[g,f]of this._ueFuncWithIdAndResultCallbacks)this._waitingUeFuncIdAndResultCallbacks.set(g.fid,f);this._ueFuncWithIdAndResultCallbacks.length=0;{const g=window.g_emitDescriptor_maxBytes,f=B.map(L=>({f:L,s:JSON.stringify(L).length}));let m=f.length,F=0,Q=0,y=[];do{do{const{f:L,s:I}=f[F];if(y.push(L),++F,Q+I>g||y.length>=20)break}while(F<m);y.length>0&&(i.debug&&console.log(`传送${y.length}条消息...`),l([...y]),y.length=0,Q=0)}while(F<m)}};this.dv(w.createInterval()).start(c,50),this.d(()=>console.log("UeCloudViewer正在销毁..."))}get videoInitialized(){return this._videoInitialized.value}get webRtcConnected(){return this._webRtcConnected.value}get webSocketOpen(){return this._webSocketOpen.value}get ue5ViewerWrapper(){return this._ue5ViewerWrapper}get errorEvent(){return this._errorEvent}get readyEvent(){return this._readyEvent}resize(e,t){this.ue5ViewerWrapper.resize(e,t)}callUeFunc(e){return new Promise(t=>{const s={fid:w.createGuid(),...e};this._ueFuncWithIdAndResultCallbacks.push([s,{timeStamp:Date.now(),ueFunc:e,resultCallback:t}])})}disposableOnUeEvent(e,t){const n=w.createGuid();this.callUeFunc({f:"addEventListener",p:{et:e,eid:n}});const s=()=>{this.callUeFunc({f:"removeEventListener",p:{eid:n}})},i=this._ueEvent.don(o=>{o.et===e&&o.eid===n&&t(o)});return()=>{i(),s()}}}class Bu extends w.Destroyable{constructor(e,t,n,s){super();C(this,"_onRuntimeInitialized",this.dv(new w.Event));C(this,"_vIframe",null);this._ueViewer=s;const i=this._ueViewer;{const o=document.createElement("iframe");this._vIframe=o,o.style.cssText="width: 100%; height: 100%; margin: 0; padding: 0; border: none; outline: none;",e.appendChild(o),this.d(()=>{o&&e.removeChild(o)});const a=p.ESSceneObject.getStrFromEnv(n+`/web/${t}.html`);o.src=a,o.onload=()=>{const l=o.contentWindow;if(!l){console.error("iframeWindow is null");return}console.log("iwindow.Module",l.Module),l.Module.onRuntimeInitialized=()=>{this._onRuntimeInitialized.emit(),i.setStatus("Created"),i.setStatusLog("创建成功"),l.Module.UE4_resizeCanvas(),l.console.log("创建成功__________________________________________")}}}}get onRuntimeInitialized(){return this._onRuntimeInitialized}get vIframe(){return this._vIframe}}const ja=typeof TextDecoder<"u"?new TextDecoder:void 0,fu=(r,A=0,e=NaN)=>{const t=A+e;let n=A;for(;r[n]&&!(n>=t);)++n;if(n-A>16&&r.buffer&&ja)return ja.decode(r.subarray(A,n));let s="";for(;A<n;){var i=r[A++];if(!(i&128)){s+=String.fromCharCode(i);continue}var o=r[A++]&63;if((i&224)==192){s+=String.fromCharCode((i&31)<<6|o);continue}var a=r[A++]&63;if((i&240)==224?i=(i&15)<<12|o<<6|a:((i&248)!=240&&console.warn("Invalid UTF-8 leading byte encountered when deserializing a UTF-8 string in wasm memory to a JS string!"),i=(i&7)<<18|o<<12|a<<6|r[A++]&63),i<65536)s+=String.fromCharCode(i);else{var l=i-65536;s+=String.fromCharCode(55296|l>>10,56320|l&1023)}}return s};class wu extends w.Destroyable{constructor(A,e,t){super();{const n=()=>{const a=Qn(e);e.setGlobalProperty(a)};n();const s=mr(),i=[];s.forEach(a=>{const l=e[a+"Changed"];i.push(l)});const o=this.dv(w.createNextAnimateFrameEvent(...i));this.d(o.don(n))}this.d(e.propChanged.don(n=>{if(n.objId==="")try{Object.keys(n.props).forEach(s=>{const i=n.props[s]===null?void 0:n.props[s];e[s]=i})}catch(s){console.error("ueViewer propChanged:"+s)}})),e.useCustomInteraction=!1,this.dv(new p.ViewerCustomInteraction(e,A)),this.dv(new w.ObjResettingWithEvent(e.statusUpdateIntervalChanged,n=>{if((e.statusUpdateInterval??.5)===0)return;const i=new w.Destroyable;return i.d(t.disposableOnUeEvent("statusUpdate",o=>{e.statusUpdateEvent.emit(o)})),i})),this.dv(new w.ObjResettingWithEvent(e.propChangedListeningChanged,()=>{if(!(e.propChangedListening??!0))return;const s=new w.Destroyable;return s.d(t.disposableOnUeEvent("propChanged",i=>{e.propChanged.emit(i)})),s})),this.dv(new w.ObjResettingWithEvent(e.objectEventListeningChanged,()=>{if(!(e.objectEventListening??!0))return;const s=new w.Destroyable;return s.d(t.disposableOnUeEvent("objectEvent",i=>{e.objectEvent.emit(i)})),s})),this.dv(new w.ObjResettingWithEvent(e.widgetEventListeningChanged,()=>{if(!(e.widgetEventListening??!0))return;const s=new w.Destroyable;return s.d(t.disposableOnUeEvent("widgetEvent",i=>{e.widgetEvent.emit(i)})),s})),this.dv(new w.ObjResettingWithEvent(e.speechRecognitionListeningChanged,()=>{if(!(e.speechRecognitionListening??!0))return;const s=new w.Destroyable;return s.d(t.disposableOnUeEvent("speechRecognition",i=>{e.speechRecognition.emit(i)})),s})),this.dv(new w.ObjResettingWithEvent(e.customMessageListeningChanged,()=>{if(!(e.customMessageListening??!0))return;const s=new w.Destroyable;return s.d(t.disposableOnUeEvent("customMessage",i=>{e.customMessage.emit(i)})),s})),this.dv(new w.ObjResettingWithEvent(e.editingEventListeningChanged,()=>{if(!(e.editingEventListening??!0))return;const s=new w.Destroyable;return s.d(t.disposableOnUeEvent("editingEvent",i=>{i.objectIDs=i.objectIDs.map(o=>{var a;return((a=p.ESSceneObject.getSceneObjById(o))==null?void 0:a.parentID)??o}),e.editingEvent.emit(i)})),s})),this.ad(t.disposableOnUeEvent("cameraChanged",()=>{e.cameraChanged.emit()}))}}let pu=-1;class Cu extends Ve{constructor(e,t,n="${earthsdk3-ue-h5-assets-script-dir}",s){super();C(this,"_ueFuncResultWithIdsEvent",this.dv(new w.Event));C(this,"_ueFuncWithIdAndResultCallbacks",[]);C(this,"_waitingUeFuncIdAndResultCallbacks",new Map);C(this,"_waitingUeCalls",new Map);C(this,"_ueEvent",this.dv(new w.Event));this._ueViewer=s;const i=this._ueViewer,o=this.dv(new Bu(e,t,n,i));let a=!1,l=null;this.d(o.onRuntimeInitialized.don(()=>{var B;if(a=!0,(B=o==null?void 0:o.vIframe)!=null&&B.contentWindow){l=o.vIframe.contentWindow;const g=o.vIframe.contentWindow.document.getElementById("mainarea");g?this.dv(new wu(g,i,this)):console.error("h5Container is null")}else{console.error("iframeWindow is null");return}l.UE_JSHTML5Communication?l.UE_JSHTML5Communication.UESendMessageToJS=g=>{try{const f=fu(l.HEAPU8,g),m=JSON.parse(f);if(i.debug&&(console.group("%cUE => JS"," background-color:#006EFF;color:#ffffff;font-weight:bold;padding:4px;border-radius:5px;"),console.log(`%c${JSON.stringify(m,void 0,"")}`," border:1px dashed #006EFF;border-radius:5px;padding:10px;line-height:25px;color:#006EFF;"),console.groupEnd()),m.t==="cr"){const F=m;if(F.frs&&this._ueFuncResultWithIdsEvent.emit(F.frs),F.ers)for(let Q of F.ers)this._ueEvent.emit(Q)}m.callid&&this._waitingUeCalls.has(m.callid)&&(this._waitingUeCalls.delete(m.callid),console.log(`waitingUeCalls.delete:${m.callid} end`))}catch(f){console.error("UE_JSHTML5Communication.UESendMessageToJS error:",f)}}:console.error("UE_JSHTML5Communication UESendMessageToJS not found")})),this.dispose(this._ueFuncResultWithIdsEvent.disposableOn(B=>{for(const g of B){const f=this._waitingUeFuncIdAndResultCallbacks.get(g.fid);f&&(this._waitingUeFuncIdAndResultCallbacks.delete(g.fid),f(g.r))}}));let c=0;const u=()=>{if(!a||!l||!l.UE_JSHTML5Communication||!l.UE_JSHTML5Communication.JSSendMessageToUE||this._ueFuncWithIdAndResultCallbacks.length===0)return;const B=this._ueFuncWithIdAndResultCallbacks.map(([I])=>I),g={n:c++,tt:Date.now(),t:"c",fs:B,callid:w.createGuid()};for(const[I,E]of this._ueFuncWithIdAndResultCallbacks)this._waitingUeFuncIdAndResultCallbacks.set(I.fid,E);this._ueFuncWithIdAndResultCallbacks.length=0,this._waitingUeCalls.set(g.callid,g),i.debug&&(console.group("%cxe2 => ue"," background-color:green;color:#ffffff;font-weight:bold;padding:4px;border-radius:5px;"),console.log(`%c${JSON.stringify(g,void 0,"")}`," border:1px dashed green;border-radius:5px;padding:10px;line-height:25px;color:green;"),console.groupEnd());const f=JSON.stringify(g),m=window.g_emitDescriptor_maxBytes??3e4,F=f.length,Q=++pu;if(F<m){const I=`${Q}-0/1-`+f;l.UE_JSHTML5Communication.JSSendMessageToUE(I);return}const y=Math.ceil(F/m)|0;[...new Array(y).keys()].map(I=>f.slice(I*m,(I+1)*m)).forEach((I,E)=>{const R=`${Q}-${E}/${y}-`+I;l.UE_JSHTML5Communication.JSSendMessageToUE(R)})};this.dv(w.createInterval()).start(u,50)}processResponse(e){if(this._ueViewer.debug??!1)try{const t=JSON.parse(e);console.group("%cUE => JS"," background-color:#006EFF;color:#ffffff;font-weight:bold;padding:4px;border-radius:5px;"),console.log(`%c${JSON.stringify(t,void 0,"")}`," border:1px dashed #006EFF;border-radius:5px;padding:10px;line-height:25px;color:#006EFF;"),console.groupEnd()}catch(t){console.error(`processResponse(${e}) error: ${t}`,t)}}callUeFunc(e){return new Promise(t=>{const s={fid:w.createGuid(),...e};this._ueFuncWithIdAndResultCallbacks.push([s,t])})}disposableOnUeEvent(e,t){const n=w.createGuid();this.callUeFunc({f:"addEventListener",p:{et:e,eid:n}});const s=()=>{this.callUeFunc({f:"removeEventListener",p:{eid:n}})},i=this._ueEvent.disposableOn(o=>{o.et===e&&o.eid===n&&((this._ueViewer.debug??!1)&&console.log(`callback, type:${e} eid:${n} ueEvent:${JSON.stringify(o)}`),t(o))});return()=>{i(),s()}}}let vu=-1;class mu extends Ve{constructor(e,t){super();C(this,"_ueFuncResultWithIdsEvent",this.dv(new w.Event));C(this,"_ueFuncWithIdAndResultCallbacks",[]);C(this,"_waitingUeFuncIdAndResultCallbacks",new Map);C(this,"_waitingUeCalls",new Set);C(this,"_ueEvent",this.dv(new w.Event));this._ueViewer=t;const n=this._ueViewer;let s=!1;const i={eventType:"init",params:{}};window.ue.es.oncommand(JSON.stringify(i)),s=!0,window.calljs=(c,u)=>{if(n.debug&&console.log(`calljs eventName:${c} eventDetailStr:${u}`),c==="ueevent"||c==="commanFinish")try{const d=JSON.parse(u);if(d.t==="cr"){const B=d;if(B.frs&&this._ueFuncResultWithIdsEvent.emit(B.frs),B.ers)for(let g of B.ers)this._ueEvent.emit(g)}}catch(d){console.error(d)}},this.dispose(this._ueFuncResultWithIdsEvent.disposableOn(c=>{for(const u of c){const d=this._waitingUeFuncIdAndResultCallbacks.get(u.fid);d&&(this._waitingUeFuncIdAndResultCallbacks.delete(u.fid),d(u.r))}}));let o=0;const a=()=>{if(!s||this._ueFuncWithIdAndResultCallbacks.length===0)return;const c=this._ueFuncWithIdAndResultCallbacks.map(([B])=>B),u={n:o++,tt:Date.now(),t:"c",fs:c};for(const[B,g]of this._ueFuncWithIdAndResultCallbacks)this._waitingUeFuncIdAndResultCallbacks.set(B.fid,g);this._ueFuncWithIdAndResultCallbacks.length=0,this._waitingUeCalls.add(u),n.debug&&(console.group("%cxe2 => ue"," background-color:green;color:#ffffff;font-weight:bold;padding:4px;border-radius:5px;"),console.log(`%c${JSON.stringify(u,void 0,"")}`," border:1px dashed green;border-radius:5px;padding:10px;line-height:25px;color:green;"),console.groupEnd());const d=++vu;window.ue.es.oncommand(`${d}-0/1-`+JSON.stringify(u)).then(()=>{this._waitingUeCalls.delete(u)})};this.dv(w.createInterval()).start(a,50)}callUeFunc(e){return new Promise(t=>{const s={fid:w.createGuid(),...e};this._ueFuncWithIdAndResultCallbacks.push([s,t])})}disposableOnUeEvent(e,t){const n=w.createGuid();this.callUeFunc({f:"addEventListener",p:{et:e,eid:n}});const s=()=>{this.callUeFunc({f:"removeEventListener",p:{eid:n}})},i=this._ueEvent.disposableOn(o=>{o.et===e&&o.eid===n&&((this._ueViewer.debug??!1)&&console.log(`callback, type:${e} eid:${n} ueEvent:${JSON.stringify(o)}`),t(o))});return()=>{i(),s()}}}class Fu extends w.Destroyable{constructor(A,e){super();{const t=()=>{const o=Qn(A);A.setGlobalProperty(o)};t();const n=mr(),s=[];n.forEach(o=>{const a=A[o+"Changed"];s.push(a)});const i=this.dv(w.createNextAnimateFrameEvent(...s));this.d(i.don(t))}this.d(A.propChanged.don(t=>{if(t.objId==="")try{Object.keys(t.props).forEach(n=>{const s=t.props[n]===null?void 0:t.props[n];A[n]=s})}catch(n){console.error("ueViewer propChanged:"+n)}})),this.dv(new w.ObjResettingWithEvent(A.statusUpdateIntervalChanged,t=>{if((A.statusUpdateInterval??.5)===0)return;const s=new w.Destroyable;return s.d(e.disposableOnUeEvent("statusUpdate",i=>{A.statusUpdateEvent.emit(i)})),s})),this.dv(new w.ObjResettingWithEvent(A.propChangedListeningChanged,()=>{if(!(A.propChangedListening??!0))return;const n=new w.Destroyable;return n.d(e.disposableOnUeEvent("propChanged",s=>{A.propChanged.emit(s)})),n})),this.dv(new w.ObjResettingWithEvent(A.objectEventListeningChanged,()=>{if(!(A.objectEventListening??!0))return;const n=new w.Destroyable;return n.d(e.disposableOnUeEvent("objectEvent",s=>{A.objectEvent.emit(s)})),n})),this.dv(new w.ObjResettingWithEvent(A.widgetEventListeningChanged,()=>{if(!(A.widgetEventListening??!0))return;const n=new w.Destroyable;return n.d(e.disposableOnUeEvent("widgetEvent",s=>{A.widgetEvent.emit(s)})),n})),this.dv(new w.ObjResettingWithEvent(A.speechRecognitionListeningChanged,()=>{if(!(A.speechRecognitionListening??!0))return;const n=new w.Destroyable;return n.d(e.disposableOnUeEvent("speechRecognition",s=>{A.speechRecognition.emit(s)})),n})),this.dv(new w.ObjResettingWithEvent(A.customMessageListeningChanged,()=>{if(!(A.customMessageListening??!0))return;const n=new w.Destroyable;return n.d(e.disposableOnUeEvent("customMessage",s=>{A.customMessage.emit(s)})),n})),this.dv(new w.ObjResettingWithEvent(A.editingEventListeningChanged,()=>{if(!(A.editingEventListening??!0))return;const n=new w.Destroyable;return n.d(e.disposableOnUeEvent("editingEvent",s=>{s.objectIDs=s.objectIDs.map(i=>{var o;return((o=p.ESSceneObject.getSceneObjById(i))==null?void 0:o.parentID)??i}),A.editingEvent.emit(s)})),n})),this.ad(e.disposableOnUeEvent("cameraChanged",()=>{A.cameraChanged.emit()}))}}class Qu extends w.Destroyable{constructor(A,e,t){super();{const s=()=>{const l=Qn(e);e.setGlobalProperty(l)};s();const i=mr(),o=[];i.forEach(l=>{const c=e[l+"Changed"];o.push(c)});const a=this.dv(w.createNextAnimateFrameEvent(...o));this.d(a.don(s))}this.d(e.propChanged.don(s=>{if(s.objId==="")try{Object.keys(s.props).forEach(i=>{const o=s.props[i]===null?void 0:s.props[i];e[i]=o})}catch(i){console.error("ueViewer propChanged:"+i)}}));const n=document.createElement("div");n.style.width="100%",n.style.height="100%",n.style.position="absolute",n.style.overflow="hidden",n.style.top="0",n.style.left="0",n.style.zIndex="0",n.style.backgroundColor="rgba(255,0,0,0)",n.setAttribute("masker","大屏顶层div,用于模拟鼠标事件和控制UE鼠标事件是否生效"),A.appendChild(n),this.d(()=>{n&&A&&A.removeChild(n)});{const s=(l,c)=>{window.ue.esinput.setinterceptevent(c),l.preventDefault()},i=l=>{s(l,!1)},o=l=>{s(l,!0)},a=l=>{s(l,!1)};n.addEventListener("mouseenter",i),n.addEventListener("mouseleave",o),n.addEventListener("mousemove",a),this.d(()=>{n.removeEventListener("mouseenter",i),n.removeEventListener("mouseleave",o),n.removeEventListener("mousemove",a)})}e.useCustomInteraction=!1,this.dv(new p.ViewerCustomInteraction(e,n)),this.dv(new w.ObjResettingWithEvent(e.statusUpdateIntervalChanged,s=>{if((e.statusUpdateInterval??.5)===0)return;const o=new w.Destroyable;return o.d(t.disposableOnUeEvent("statusUpdate",a=>{e.statusUpdateEvent.emit(a)})),o})),this.dv(new w.ObjResettingWithEvent(e.propChangedListeningChanged,()=>{if(!(e.propChangedListening??!0))return;const i=new w.Destroyable;return i.d(t.disposableOnUeEvent("propChanged",o=>{e.propChanged.emit(o)})),i})),this.dv(new w.ObjResettingWithEvent(e.objectEventListeningChanged,()=>{if(!(e.objectEventListening??!0))return;const i=new w.Destroyable;return i.d(t.disposableOnUeEvent("objectEvent",o=>{e.objectEvent.emit(o)})),i})),this.dv(new w.ObjResettingWithEvent(e.widgetEventListeningChanged,()=>{if(!(e.widgetEventListening??!0))return;const i=new w.Destroyable;return i.d(t.disposableOnUeEvent("widgetEvent",o=>{e.widgetEvent.emit(o)})),i})),this.dv(new w.ObjResettingWithEvent(e.speechRecognitionListeningChanged,()=>{if(!(e.speechRecognitionListening??!0))return;const i=new w.Destroyable;return i.d(t.disposableOnUeEvent("speechRecognition",o=>{e.speechRecognition.emit(o)})),i})),this.dv(new w.ObjResettingWithEvent(e.customMessageListeningChanged,()=>{if(!(e.customMessageListening??!0))return;const i=new w.Destroyable;return i.d(t.disposableOnUeEvent("customMessage",o=>{e.customMessage.emit(o)})),i})),this.dv(new w.ObjResettingWithEvent(e.editingEventListeningChanged,()=>{if(!(e.editingEventListening??!0))return;const i=new w.Destroyable;return i.d(t.disposableOnUeEvent("editingEvent",o=>{o.objectIDs=o.objectIDs.map(a=>{var l;return((l=p.ESSceneObject.getSceneObjById(a))==null?void 0:l.parentID)??a}),e.editingEvent.emit(o)})),i})),this.ad(t.disposableOnUeEvent("cameraChanged",()=>{e.cameraChanged.emit()}))}}class Uu extends w.Destroyable{constructor(e,t,n){super();C(this,"_reconnectEvent",this.dv(new w.Event));const s=(u,d)=>u.hasOwnProperty(d);let i=0,o;this.d(()=>{o&&clearTimeout(o)});const l=new URLSearchParams(window.location.search).get("eswebview")==="true",c=()=>{if(window.ue.esinput){n.setStatus("Creating"),console.log("存在(window.ue && window.ue.es && window.ue.esinput 需要适配新版ESWebView 鼠标穿透), 开始创建UeFalseCloudViewer..."),n.setStatusLog("开始创建本地视口...");const u=this.dv(new mu(e,n));this.d(()=>n.viewer=void 0),n.viewer=u,n.setStatus("Created"),n.setStatusLog("本地视口创建成功!"),this.dv(new Qu(e,n,u))}else n.setStatus("Error"),n.setStatusLog("请升级 ESWebView !"),this.d(()=>n.viewer=void 0),n.viewer=void 0};if(window.ue&&window.ue.es)c();else if(l){const u=setInterval(()=>{window.ue&&window.ue.es&&(clearInterval(u),c())},200)}else if(s(t.options,"ws")||s(t.options,"uri")&&s(t.options,"app")){n.setStatus("Creating"),n.setStatusLog("开始创建云渲染视口...");let u;this.d(()=>{n.setStatus("Raw"),n.setStatusLog(""),e&&u&&e.removeChild(u)&&(u=void 0)});const d=this.dv(w.createProcessingFromAsyncFunc(async B=>{n.viewer&&!n.viewer.isDestroyed()&&n.viewer.destroy(),n.viewer=void 0,u&&e.removeChild(u)&&(u=void 0),u=document.createElement("div"),u.setAttribute("earthsdk3-ue","earthsdk3-ue-videoContainer"),u.style.cssText="position:relative; height: 100%;width:100%;",e.appendChild(u);let g,f,m;if(s(t.options,"ws")){const{ws:L,esmsg:I,uselnternalSignallingServer:E}=t.options;g=L,f=I,m=E??!1}if(s(t.options,"uri")&&s(t.options,"app")){const{offsetWidth:L,offsetHeight:I}=u;let{uri:E,app:R,token:P}=t.options;E.endsWith("/")||(E+="/");const D=P?`?essstoken=${P}`:"",W=`/${R}/${L??1920}/${I??1080}`+D;console.log(`请求信令服务器: ${E}instance${W}`);const oA=await B.promise(fetch(`${E}instance${W}`,{method:"GET"})),$=await B.promise(oA.json());if($&&$.status!=="ok"){n.setStatus("Error"),n.setStatusLog(`信令服务器请求失败 ${$.status}`),this._reconnectEvent.emit(void 0);return}else{console.log(`信令服务器请求成功! ${JSON.stringify($,void 0," ")}`),await w.sleep(2e3);const{server:G,esmsg:j,instanceId:IA,useInternalSignallingServer:aA}=$;if(!IA){n.setStatus("Error"),n.setStatusLog("检查信令服务器版本,返回数据错误! "),console.log("信令服务器返回数据错误!不包含instanceId!请升级到 ESSS V3.0+ 版本!"),this._reconnectEvent.emit(void 0);return}g=G,f=j,m=aA??!1,n.esssResponse=$}}const F=this.dv(m?new gu(u,g,f,n):new ou(u,g,f,n));this.d(()=>n.viewer=void 0),this.d(F.errorEvent.don(L=>{const I=`[${L}]:像素流连接错误!`;n.setStatus("Error"),n.setStatusLog(I),this._reconnectEvent.emit(F)})),await B.promise(new Promise(L=>this.d(F.readyEvent.donce(L)))),n.setStatus("Created"),n.setStatusLog("云渲染视口创建成功!"),i=0,o&&clearTimeout(o),o=void 0;const{offsetWidth:Q,offsetHeight:y}=u;F.resize(Q*window.devicePixelRatio,y*window.devicePixelRatio),n.viewer=F,this.d(()=>n.viewer=void 0),this.dv(new Fu(n,F))}));d.start(),this.d(this._reconnectEvent.don(B=>{o===void 0&&(B&&!B.isDestroyed()&&B.destroy(),n.viewer&&!n.viewer.isDestroyed()&&n.viewer.destroy(),n.viewer=void 0,n.autoReconnect&&(n.setStatus("Reconnecting"),n.setStatusLog("正在尝试重新连接..."),i=i+5e3>3e4?3e4:i+5e3,console.warn(`间隔:${i/1e3}s,正在尝试重新连接...`),o=window.setTimeout(()=>{d.restart()},i)))})),this.d(d.errorEvent.don(B=>{n.setStatus("Error"),n.setStatusLog("云渲染视口创建失败!"),console.warn("云渲染视口创建失败!",B),this._reconnectEvent.emit(void 0)}))}else if(s(t.options,"project")){const u=t,d=u.options.project,B=u.options.baseUrl;n.setStatus("Creating"),n.setStatusLog("下载编译中...");const g=this.dv(new Cu(e,d,B,n));n.viewer=g,this.d(()=>n.viewer=void 0)}else n.setStatus("Error"),n.setStatusLog("视口创建失败!"),console.warn("视口创建失败: 参数错误!")}}const se=class se extends p.ESViewer{constructor(e){super(e);C(this,"_viewer",this.dv(w.react(void 0)));C(this,"_esssResponse");C(this,"_speechRecognition",this.dv(new w.Event));C(this,"_propChanged",this.dv(new w.Event));C(this,"_objectEvent",this.dv(new w.Event));C(this,"_widgetEvent",this.dv(new w.Event));C(this,"_customMessage",this.dv(new w.Event));C(this,"_statusUpdateEvent",this.dv(new w.Event));C(this,"_statusUpdateEventdon",(()=>{this.d(this.statusUpdateEvent.don(e=>{this._statusInfo.fps=e.FPS??0,this._statusInfo.length=e.length??0,this._statusInfo.position=e.position??[0,0,0],this._statusInfo.rotation=e.rotation??[0,0,0]}))})());if(e.type!=="ESUeViewer")throw new Error("option.type must be ESUeViewer");const t=e;this.d(this._viewer.changed.don(()=>{this.viewerChanged.emit(this.viewer)})),this.dv(new w.ObjResettingWithEvent(this.subContainerChanged,()=>{if(this.setStatus("Raw"),this.setStatusLog(""),!!this.subContainer)return new Uu(this.subContainer,t,this)}))}get defaultProps(){return se.createDefaultProps()}set viewer(e){this._viewer.value=e}get viewer(){return this._viewer.value}get esssResponse(){return this._esssResponse}set esssResponse(e){this._esssResponse=e}get speechRecognition(){return this._speechRecognition}get propChanged(){return this._propChanged}get objectEvent(){return this._objectEvent}get widgetEvent(){return this._widgetEvent}get customMessage(){return this._customMessage}get statusUpdateEvent(){return this._statusUpdateEvent}async uePositionToLonLatAlt(e){if(!this.viewer){console.warn("UEPositionToLonLatAlt: viewer is undefined");return}return await Co(this.viewer,e)}async changeNavigationMode(e){if(!this.viewer){console.warn("ChangeNavigationMode: viewer is undefined");return}const t=await HA(this.viewer,e);return t&&!t.error&&(this._navigationMode.value=e.mode),t}async resetWithCurrentCamera(e){if(!this.viewer){console.warn("resetWithCurrentCamera: viewer is undefined");return}return await Un(this.viewer,e)}async getAllSocketNamesByActorTag(e){if(!this.viewer){console.warn("GetAllSocketNamesByActorTag: viewer is undefined");return}return await vo(this.viewer,e)}async getBoundSphere(e){if(!this.viewer){console.warn("getBoundSphere: viewer is undefined");return}return await Fo(this.viewer,e)}async getBoundSphereWithChildren(e){if(!this.viewer){console.warn("getBoundSphereWithChildren: viewer is undefined");return}return await Qo(this.viewer,e)}async getStrokeMaterialParamInfo(e){if(!this.viewer){console.warn("GetStrokeMaterialParamInfo: viewer is undefined");return}return await Uo(this.viewer,e)}async getFillMaterialParamInfo(e){if(!this.viewer){console.warn("getFillMaterialParamInfo: viewer is undefined");return}return await Eo(this.viewer,e)}async getGlobalProperty(e){if(!this.viewer){console.warn("getGlobalProperty: viewer is undefined");return}return await yo(this.viewer,e)}async getObjectByInfo(e){if(!this.viewer){console.warn("GetObjectByInfo: viewer is undefined");return}return await So(this.viewer,e)}async defaultCameraFlyIn(e=1){if(!this.viewer){console.warn("DefaultCameraFlyIn: viewer is undefined");return}return await Zi(this.viewer,e)}async startVoice(){if(!this.viewer){console.warn("startVoice:viewer is undefined");return}return await qi(this.viewer)}async stopVoice(){if(!this.viewer){console.warn("startVoice:viewer is undefined");return}return await ji(this.viewer)}async mountPakFiles(e){if(!this.viewer){console.warn("mountPakFiles:viewer is undefined");return}return await Ao(this.viewer,e)}async generateMemReport(){if(!this.viewer){console.warn("generateMemReport:viewer is undefined");return}return await eo(this.viewer)}async quit(){if(!this.viewer){console.warn("Quit: viewer is undefined");return}return await co(this.viewer)}async bindActorByTag(e,t){if(!this.viewer){console.warn("BindActorByTag: viewer is undefined");return}return await Io(this.viewer,e,t)}async restoreOriginalScene(){if(!this.viewer){console.warn("RestoreOriginalScene: viewer is undefined");return}return await To(this.viewer)}async unBindActorByID(e){if(!this.viewer){console.warn("UnBindActorByID: viewer is undefined");return}return await Ho(this.viewer,e)}async unBindActorByTag(e){if(!this.viewer){console.warn("UnBindActorByTag: viewer is undefined");return}return await Lo(this.viewer,e)}async createActorByClass(e,t){if(!this.viewer){console.warn("CreateActorByClass: viewer is undefined");return}return await bo(this.viewer,e,t)}async bind3DTilesetByTag(e,t){if(!this.viewer){console.warn("Bind3DTilesetByTag: viewer is undefined");return}return await Mo(this.viewer,e,t)}async unBind3DTilesetByTag(e){if(!this.viewer){console.warn("UnBind3DTilesetByTag: viewer is undefined");return}return await Do(this.viewer,e)}async unBind3DTilesetById(e){if(!this.viewer){console.warn("UnBind3DTilesetById: viewer is undefined");return}return await Ro(this.viewer,e)}async bindImageryByTag(e,t,n){if(!this.viewer){console.warn("BindImageryByTag: viewer is undefined");return}return await Po(this.viewer,e,t,n)}async unBindImageryByTag(e,t){if(!this.viewer){console.warn("UnBindImageryByTag: viewer is undefined");return}return await Ko(this.viewer,e,t)}async unBindImageryById(e){if(!this.viewer){console.warn("UnBindImageryById: viewer is undefined");return}return await xo(this.viewer,e)}async getIdByComponentNameAndHitItem(e,t,n){if(!this.viewer){console.warn("GetIdByComponentNameAndHitItem: viewer is undefined");return}return await ko(this.viewer,e,t,n)}async getCameraRelativeHeight(e="ECC_Visibility"){if(!this.viewer){console.warn("GetCameraRelativeHeight: viewer is undefined");return}return await Go(this.viewer,e)}async saveStringToFile(e,t,n){if(!this.viewer){console.warn("SaveStringToFile: viewer is undefined");return}return await No(this.viewer,e,t,n)}async highlightActorByTag(e,t=!0){if(!this.viewer){console.warn("HighlightActorByTag: viewer is undefined");return}return await _o(this.viewer,e,t)}async sendCustomMessage(e){if(!this.viewer){console.warn("SendCustomMessage: viewer is undefined");return}return await Vo(this.viewer,e)}async getStatus(){if(!this.viewer){console.warn("GetStatus:viewer is undefined");return}return await Oo(this.viewer)}async getTilesetMaterialIDList(){if(!this.viewer){console.warn("GetTilesetMaterialIDList:viewer is undefined");return}return await zo(this.viewer)}async pick(e,t,n){if(!this.viewer)return;let s=e;if(e&&window.ue&&this.container){const[i,o]=e,{x:a,y:l}=this.container.getBoundingClientRect();s=[a+i,l+o]}return await uo(this.viewer,s,t,n)}async pickPosition(e){if(!this.viewer)return;let t=e;if(e&&window.ue&&this.container){const[n,s]=e,{x:i,y:o}=this.container.getBoundingClientRect();t=[i+n,o+s]}return await ho(this.viewer,t)}async quickPickPosition(e){return await this.pickPosition(e)}async getTerrainHeight(e){return await this.getHeightByLonLat(e[0],e[1])??void 0}async flyIn(e,t=[0,0,0],n=1,s="default"){if(!this.viewer)return;const i=await xe(this.viewer,void 0,e,t,n,s);if(i)return i.endType===0&&console.warn(`flyTo:flyTo is end! endType:${i.endType}`),i.endType===1&&console.warn(`flyTo:飞行中断! endType:${i.endType}`),i}async flyTo(e,t,n="default"){if(!this.viewer)return;const s=await Be(this.viewer,void 0,void 0,e,t,n);if(s)return s.endType===0&&console.warn(`flyTo:flyTo is end! endType:${s.endType}`),s.endType===1&&console.warn(`flyTo:飞行中断! endType:${s.endType}`),s}flyToBoundingSphere(e,t,n=1){const s=[[e[0],e[1],0],[e[0],e[3],0],[e[2],e[3],0],[e[2],e[1],0]],i=p.getGeoBoundingSphereFromPositions(s);if(!i)return;const{center:o,radius:a}=i,l={distance:t??a,heading:0,pitch:-90,flyDuration:n,hDelta:0,pDelta:0};this.flyTo(l,o)}getCurrentCameraInfo(){const{position:e,rotation:t}=this._statusInfo;return{position:e,rotation:t}}getLengthInPixel(){return this._statusInfo.length}async changeToWalk(e,t=4.2,n=1.6){if(!this.viewer)return;const s={mode:"Walk",position:e,jumpZVelocity:t,eyeHeight:n},i=await HA(this.viewer,s);return i&&!i.error&&(this._navigationMode.value=s.mode),i}async changeToMap(){if(!this.viewer)return;const e={mode:"Map"},t=await HA(this.viewer,e);return t&&!t.error&&(this._navigationMode.value=e.mode),t}async changeToRotateGlobe(e=38,t=1e7,n=60){if(!this.viewer)return;const s={mode:"RotateGlobe",latitude:e,height:t,cycleTime:n},i=await HA(this.viewer,s);return i&&!i.error&&(this._navigationMode.value=s.mode),i}async changeToLine(e,t=10,n=10,s=!0,i=10,o="auto"){if(!this.viewer)return;const a={mode:"Line",geoLineStringId:e,speed:t,heightOffset:n,loop:s,turnRateDPS:i,lineMode:o},l=await HA(this.viewer,a);return l&&!l.error&&(this._navigationMode.value=a.mode),l}async changeToUserDefined(e){if(!this.viewer)return;const t={mode:"UserDefined",userDefinedPawn:e},n=await HA(this.viewer,t);return n&&!n.error&&(this._navigationMode.value=t.mode),n}async changeToRotatePoint(e,t=5e4,n=60,s=0,i=-30){if(!this.viewer)return;const o={mode:"RotatePoint",position:e,distance:t,orbitPeriod:n,heading:s,pitch:i},a=await HA(this.viewer,o);return a&&!a.error&&(this._navigationMode.value=o.mode),a}async changeToFollow(e,t=0,n=0,s=-30,i=!0){if(!this.viewer)return;const o={mode:"Follow",objectId:e,distance:t,heading:n,pitch:s,relativeRotation:i},a=await HA(this.viewer,o);return a&&!a.error&&(this._navigationMode.value=o.mode),a}getFPS(){return this._statusInfo.fps}async getVersion(){const e=window.g_XE3CopyRights??{};if(!this.viewer)return e;const t=await mo(this.viewer);return e.esforue=t,e}async getHeightByLonLat(e,t,n="ECC_Visibility"){if(!this.viewer)return null;const s=await go(this.viewer,e,t,n);return s&&s.height!==void 0?s.height:null}async getHeightsByLonLats(e,t="ECC_Visibility"){return this.viewer?await Bo(this.viewer,e,t):void 0}async capture(e=64,t=64){return this.viewer?await fo(this.viewer,e,t):void 0}async partialCapture(e,t=[64,64]){if(!this.viewer){console.warn("partialCapture:viewer is undefined");return}return await wo(this.viewer,e,t)}async lonLatAltToScreenPosition(e){if(!this.viewer)return;const t=await po(this.viewer,e);return t&&[t.X,t.Y]}async setGlobalProperty(e){if(this.viewer)return await lo(this.viewer,e)}async startEditing(e,t,n){n=Object.assign({useKeyToSwitch:!0,callSource:"outer"},n);const s=e.components.main??e;if(!s||!this.viewer||t==null)return;const i=Array.isArray(t)?[...t]:[t];return s.editingID=`${n.callSource}_${w.createGuid()}`,await Wo(this.viewer,s.id,s.editingID,i,n.useKeyToSwitch)}async stopEditing(){if(this.viewer)return await Xo(this.viewer)}async moveObjects(e){if(!this.viewer)return;const t=[],n=w.createGuid();for(let s=0;s<e.length;s++){const i=e[s],o=i.components.main??i;o.editingID=n,o&&t.push(o.id)}if(t.length!==0)return await Jo(this.viewer,t,n)}};C(se,"type",se.register("ESUeViewer",se)),C(se,"defaults",{...od});let bA=se;(r=>{r.createDefaultProps=()=>({...p.ESViewer.createDefaultProps(),...zi(),resolutionScale:1,autoReconnect:!1,propChangedListening:void 0,objectEventListening:void 0,widgetEventListening:void 0,speechRecognitionListening:void 0,customMessageListening:void 0})})(bA||(bA={})),w.extendClassProps(bA.prototype,bA.createDefaultProps);class jA extends p.EngineObject{constructor(A,e){super(A,e);const t=e.viewer;t&&(A.components.main||this.d(this.createdEvent.don(()=>{const n=this.constructor.propValFuncs,s=A.defaultProps,i=Object.keys(s).filter(d=>n[d]!==null);i.push(...this.constructor.forceUeUpdateProps);const o=A.constructor.defaults,a={val:{}},l=[];for(let d of i){const B=d+"Changed",g=A[B];l.push(g);const f=n[d];if(f===null)throw console.error("vf === null error"),new Error("vf === null error");const m=()=>{const F=A[d]??o[d];let Q=f?f(F,this,e,A):F;if(Q===void 0){console.warn(`UE自动更新的属性,不应该为undefined! 属性名:${d} 对象名:${A.name} 对象id: ${A.id}`);return}a.val[d]=Q};m(),this.d(g.don(m))}const c=()=>{t.callUeFunc({f:"update",p:{id:A.id,...a.val}}),a.val={}},u=this.dv(w.createNextAnimateFrameEvent(...l));this.d(u.don(c)),this.d(A.createdEvent.don(c)),this.d(A.flushEvent.don(()=>u.flush()))})))}}C(jA,"propValFuncs",{ref:null,devTags:null,extras:null,execOnceFuncStr:null,updateFuncStr:null,toDestroyFuncStr:null}),C(jA,"forceUeUpdateProps",[]);class dA extends jA{constructor(A,e){super(A,e);const t=e.viewer;t&&(this.d(A.flyToEvent.don(n=>{Be(t,A.id,n)})),this.d(A.flyInEvent.don(n=>{var s,i;xe(t,A.id,(s=A.flyInParam)==null?void 0:s.position,(i=A.flyInParam)==null?void 0:i.rotation,n??1)})),this.d(A.calcFlyToParamEvent.don(()=>{$A(t,A.id)})),this.d(A.calcFlyInParamEvent.don(()=>{const n=e.getCurrentCameraInfo();if(!n)return;const{position:s,rotation:i}=n;A.flyInParam={position:s,rotation:i,flyDuration:1}})),this.d(e.propChanged.don(n=>{n.objId===A.id&&Object.keys(n.props).forEach(s=>{const i=n.props[s]===null?void 0:n.props[s];A[s]=i})})))}}class x extends dA{constructor(A,e){super(A,e);const t=e.viewer;if(!t)return;const n=()=>{A.editing||t.callUeFunc({f:"update",p:{id:A.id,position:A.position,rotation:A.rotation}})},s=this.dv(w.createNextAnimateFrameEvent(A.positionChanged,A.rotationChanged,A.editingChanged));this.d(s.don(()=>{setTimeout(n,0)})),this.d(A.smoothMoveEvent.don((a,l)=>{_e(t,A.id,a,l)})),this.d(A.smoothMoveWithRotationEvent.don((a,l,c)=>{ke(t,A.id,a,l,c)})),this.d(A.smoothMoveOnGroundEvent.don((a,l,c,u)=>{Ge(t,A.id,a,l,u,c)})),this.d(A.smoothMoveWithRotationOnGroundEvent.don((a,l,c,u,d)=>{Ne(t,A.id,a,l,c,u,d)})),this.d(A.smoothMoveKeepPitchEvent.don(async(a,l)=>{const c=await t.callUeFunc({f:"SmoothMoveKeepPitch",p:{id:A.id,Destination:a,Time:l}});c.error&&console.error("SmoothMoveKeepPitch:",c.error)})),this.d(A.automaticLandingEvent.don(a=>{const l=[A.position[0],A.position[1]];e.getHeightByLonLat(A.position[0],A.position[1],"Visibility").then(c=>{c!==null&&(A.position=[...l,c],A.collision=a)})}));const i=async(a,l,c,u)=>{const{viewer:d}=a;if(!d){console.error("SmoothMoveRelatively: ueViewer.viewer is undefined");return}const B=await d.callUeFunc({f:"SmoothMoveRelatively",p:{id:l,RelativePosition:c,Time:u}});return B.error&&console.error("SmoothMoveRelatively:",B.error),B};this.d(A.smoothMoveRelativelyEvent.don((a,l)=>{i(e,A.id,a,l)}));const o=async(a,l,c,u,d)=>{const{viewer:B}=a;if(!B){console.error("SmoothMoveRelativelyWithRotation: ueViewer.viewer is undefined");return}const g=await B.callUeFunc({f:"SmoothMoveRelativelyWithRotation",p:{id:l,RelativePosition:c,NewRotation:u,Time:d}});return g.error&&console.error("SmoothMoveRelativelyWithRotation:",g.error),g};this.d(A.smoothMoveRelativelyWithRotationEvent.don((a,l,c)=>{o(e,A.id,a,l,c)}))}}class nA extends dA{constructor(A,e){super(A,e);const t=e.viewer;if(!t)return;const n=()=>{A.editing||t.callUeFunc({f:"update",p:{id:A.id,points:A.points}})},s=this.dv(w.createNextAnimateFrameEvent(A.pointsChanged,A.editingChanged));this.d(s.don(()=>{setTimeout(n,0)}))}}C(nA,"propValFuncs",{...dA.propValFuncs,pointStyle:A=>({...A,materialParams:JSON.stringify(A.materialParams??{})}),strokeStyle:A=>({...A,materialParams:JSON.stringify(A.materialParams??{})}),fillStyle:A=>({...A,materialParams:JSON.stringify(A.materialParams??{})})});class UA extends x{constructor(A,e){super(A,e),e.viewer&&this.d(e.widgetEvent.don(n=>{if(n.objId!==A.id)return;const{type:s,add:i}=n;A.widgetEvent.emit({type:s,add:i})}))}}class Pn extends x{constructor(A,e){super(A,e),e.viewer}}C(Pn,"propValFuncs",{...x.propValFuncs,pointStyle:A=>({...A,materialParams:JSON.stringify(A.materialParams??{})}),strokeStyle:A=>({...A,materialParams:JSON.stringify(A.materialParams??{})}),fillStyle:A=>({...A,materialParams:JSON.stringify(A.materialParams??{})})});class Er extends Pn{constructor(A,e){super(A,e),e.viewer}}const Al=r=>{switch(r){case 0:return"成功绑定";case 1:return"解绑之前的内容,成功绑定";case 2:return"没搜索到ActorTag,无法绑定";case 3:return"搜索到ActorTag但对应的Actor不是3dTileset,无法绑定";default:return"未知错误"}},ht=class ht extends p.EngineObject{constructor(e,t){super(e,t);C(this,"_styleColor",this.dv(w.react([])));C(this,"_styleVisable",this.dv(w.react([])));const n=t.viewer;if(!n){console.warn("UeES3DTileset: viewer is undefined!");return}let s,i;const o=async()=>{!s&&!i||await n.callUeFunc({f:"update",p:{id:e.id,url:e.url,show:e.show,collision:e.collision,allowPicking:e.allowPicking,flyToParam:e.flyToParam??p.defaultFlyToParam,flyInParam:e.flyInParam??p.defaultFlyInParam,highlightID:e.highlightID,highlightColor:e.highlightColor,highlight:e.highlight,materialMode:e.materialMode,maximumScreenSpaceError:e.maximumScreenSpaceError,colorMode:Reflect.has(e,"colorMode")?e.colorMode:void 0,offset:e.offset,rotation:e.rotation,cacheBytes:e.cacheBytes,colorBlendMode:e.colorBlendMode,materialOverrideMap:e.materialOverrideMap}})},a=this.dv(w.createNextAnimateFrameEvent(e.urlChanged,e.showChanged,e.flyToParamChanged,e.flyInParamChanged,e.collisionChanged,e.allowPickingChanged,e.highlightIDChanged,e.highlightColorChanged,e.highlightChanged,e.materialModeChanged,e.maximumScreenSpaceErrorChanged,e.offsetChanged,e.rotationChanged,e.cacheBytesChanged,e.colorBlendModeChanged,e.materialOverrideMapChanged));o(),this.d(a.don(o)),Reflect.has(e,"colorMode")&&this.d(e.colorModeChanged.don(()=>o()));const l=this.dv(w.react(void 0));{const u=this.dv(w.createNextAnimateFrameEvent(e.actorTagChanged,e.urlChanged)),d=()=>{e.actorTag?l.value={type:"ActorTag",actorTag:e.actorTag}:e.url?l.value={type:"CreatedUrl",url:e.url}:l.value=void 0,e.editing=!1};d(),this.d(u.don(d))}const c=async()=>{const{id:u}=e;if(s!==void 0){s=void 0;try{const d=await t.unBind3DTilesetById(u);if(!d)return;if(d.error!==""){console.warn(`UeES3DTileset UnBind3DTilesetById: ${d.error}`);return}}catch(d){console.warn(`UeES3DTileset UnBind3DTilesetById: ${d}`);return}}if(i!==void 0){i=void 0;try{const d=await n.callUeFunc({f:"destroy",p:{id:u}});if(!d)return;if(d.error!==""){console.warn(`UeES3DTileset Destroy: ${d.error}`);return}}catch(d){console.warn(`UeES3DTileset Destroy: ${d}`);return}}};this.d(()=>{c()});{const u=this.dv(w.createProcessingFromAsyncFunc(async B=>{if(l.value===void 0){await B.promise(c());return}if(l.value.type==="ActorTag"){const{actorTag:g}=l.value;if(s!==g&&await B.promise(c()),s!==void 0||g===void 0)return;try{s=g;const f=await B.promise(t.bind3DTilesetByTag(e.id,g));if(!f)return;if(f.error!==""){console.warn(`UeES3DTileset Bind3DTilesetByTag: ${f.error}`);return}if(f.re.type!==0)if(f.re.type===1)console.warn(`UeES3DTileset Bind3DTilesetByTag: ${Al(f.re.type)}`);else{console.warn(`UeES3DTileset Bind3DTilesetByTag: ${Al(f.re.type)}`);return}}catch(f){console.warn(`UeES3DTileset Bind3DTilesetByTag: ${f}`);return}}else if(l.value.type==="CreatedUrl"){const{url:g}=l.value;if(g!==i&&await c(),i!==void 0||g===void 0)return;try{i=g;const f=await B.promise(n.callUeFunc({f:"create",p:{type:e.typeName,id:e.id}}));if(!f)return;if(f.error!==""){console.warn(`UeES3DTileset create: ${f.error}`);return}}catch(f){console.warn(`UeES3DTileset create: ${f}`);return}}await B.promise(o())})),d=async()=>{u.restart()};d(),this.d(l.changed.don(d))}this.d(e.refreshTilesetEvent.don(()=>{$i(n,e.id)})),this.d(e.flyToEvent.don(async(u,d)=>{if(!s&&!i)return;const B=await Be(n,e.id,u);let g="over";B===void 0?g="error":B.endType===0?g="over":B.endType===1&&(g="cancelled"),e.flyOverEvent.emit(d,g,t)})),this.d(e.calcFlyToParamEvent.don(()=>{!s&&!i||$A(n,e.id)})),this.d(e.calcFlyInParamEvent.don(async()=>{if(!s&&!i||!t.actived)return;const u=await t.getCurrentCameraInfo();if(!u)return;const{position:d,rotation:B}=u;e.flyInParam={position:d,rotation:B,flyDuration:1}})),this.d(t.propChanged.don(u=>{!s&&!i||u.objId===e.id&&Object.keys(u.props).forEach(d=>{const B=u.props[d]===null?void 0:u.props[d];e[d]=B})})),this.d(t.objectEvent.don(u=>{!s&&!i||u.id!==e.id||u.type!=="3DTilesetReady"||e.tilesetReady.emit(u.p)}));{const u=async(f,m)=>{if(!s&&!i)return;const F=await n.callUeFunc({f:"SetFeatureColor",p:{id:e.id,featureName:f,json:m}});if(F&&F.error!==""){console.warn(`UeES3DTileset SetFeatureColor: ${F.error}`);return}},d=async(f,m)=>{if(!s&&!i)return;const F=await n.callUeFunc({f:"SetFeatureVisable",p:{id:e.id,featureName:f,json:m}});if(F&&F.error!==""){console.warn(`UeES3DTileset SetFeatureVisable: ${F.error}`);return}},B=async()=>{if(!s&&!i)return;const f=await n.callUeFunc({f:"ResetFeatureStyle",p:{id:e.id}});if(f&&f.error!==""){console.warn(`UeES3DTileset ResetFeatureStyle: ${f.error}`);return}},g=async f=>{if(!s&&!i)return;const m=await n.callUeFunc({f:"SetFeatureStyle",p:{id:e.id,json:f}});if(m&&m.error!==""){console.warn(`UeES3DTileset SetFeatureStyle: ${m.error}`);return}};this.d(e.setFeatureColorEvent.don((f,m)=>{const F=[...this.styleColor,...m];this.styleColor=[...F],u(f,F)})),this.d(e.setFeatureVisableEvent.don((f,m)=>{const F=[...this.styleVisable,...m];this.styleVisable=[...F],d(f,F)})),this.d(e.resetFeatureStyleEvent.don(()=>{B(),this.styleColor=[],this.styleVisable=[]})),this.d(e.setFeatureStyleEvent.don(f=>{g(f)}))}{const u=async()=>{if(!s&&!i){e._featureTableResultEvent.emit(void 0);return}try{const d=await n.callUeFunc({f:"GetFeatureTable",p:{id:e.id}});d.error!==""&&console.warn(`UeES3DTileset GetFeatureTable: ${d.error}`),e._featureTableResultEvent.emit(d.re.table)}catch(d){console.warn(`UeES3DTileset GetFeatureTable: ${d}`),e._featureTableResultEvent.emit(void 0)}};this.d(e.getFeatureTableEvent.don(()=>{u()}))}{const u=async()=>{if(!s&&!i){e.getMaterialNameListEvent.emit(void 0);return}try{const d=await n.callUeFunc({f:"GetMaterialNameList",p:{id:e.id}});d.error!==""&&console.warn(`UeES3DTileset GetMaterialNameList: ${d.error}`),e.getMaterialNameListEvent.emit(d.re.materialNameList)}catch(d){console.warn(`UeES3DTileset GetMaterialNameList: ${d}`),e.getMaterialNameListEvent.emit(void 0)}};this.ad(e.getMaterialNameListEvent.don(d=>{d=="start"&&u()}))}}get styleColor(){return this._styleColor.value}set styleColor(e){this._styleColor.value=e}get styleVisable(){return this._styleVisable.value}set styleVisable(e){this._styleVisable.value=e}};C(ht,"type",ht.register("ESUeViewer",p.ES3DTileset.type,ht));let yr=ht;const el=r=>{switch(r){case 0:return"成功绑定";case 1:return"解绑之前的内容,成功绑定";case 2:return"没搜索到ActorTag,无法绑定";case 3:return"搜索到ActorTag对应的Actor是地形,无法绑定";case 4:return"没搜索到ComponentTag,无法绑定";default:return"未知错误"}},gt=class gt extends p.EngineObject{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}let n,s;const i=this.dv(w.react(void 0)),o=this.ad(w.reactJson(""));{const u=()=>{if(typeof A.url=="string")o.value=p.ESSceneObject.context.getStrFromEnv(A.url);else{const d=A.url;d.url=p.ESSceneObject.context.getStrFromEnv(d.url),o.value=d}};u(),this.ad(A.urlChanged.don(u))}const a=async()=>{if(!n&&!s)return;let u=A.targetID??p.ESImageryLayer.defaults.targetID;if(u&&u!=""){const d=p.ESSceneObject.getSceneObject(u);u=d?(d.components.main??d).id:u}await t.callUeFunc({f:"update",p:{id:A.id,show:A.show??!0,rectangle:A.rectangle??[-180,-90,180,90],collision:A.collision??!0,allowPicking:A.allowPicking??!1,flyToParam:A.flyToParam??p.defaultFlyToParam,flyInParam:A.flyInParam??p.defaultFlyInParam,url:o.value??"",zIndex:A.zIndex??0,maximumLevel:A.maximumLevel??p.ESImageryLayer.defaults.maximumLevel,minimumLevel:A.minimumLevel??p.ESImageryLayer.defaults.minimumLevel,options:A.options??p.ESImageryLayer.defaults.options,targetID:u,opacity:A.opacity??p.ESImageryLayer.defaults.opacity,splitDirection:A.splitDirection??p.ESImageryLayer.defaults.splitDirection}})},l=this.dv(w.createNextAnimateFrameEvent(A.showChanged,o.changed,A.flyToParamChanged,A.flyInParamChanged,A.zIndexChanged,A.collisionChanged,A.allowPickingChanged,A.maximumLevelChanged,A.minimumLevelChanged,A.rectangleChanged,A.optionsChanged,A.targetIDChanged,A.opacityChanged,A.splitDirectionChanged));this.d(l.don(a));const c=async()=>{const{id:u}=A;if(n!==void 0){n=void 0;try{const d=await e.unBindImageryById(u);if(!d)return;if(d.error!==""){console.warn(`UeESImageryLayer UnImageryByID: ${d.error}`);return}}catch(d){console.warn(`UeESImageryLayer UnImageryByID promise: ${d}`);return}}if(s!==void 0){s=void 0;try{const d=await t.callUeFunc({f:"destroy",p:{id:u,test:"UeESImageryLayer"}});if(!d)return;if(d.error!==""){console.warn(`UeESImageryLayer Destroy: ${d.error}`);return}}catch(d){console.warn(`UeESImageryLayer Destroy promise: ${d}`);return}}};this.d(()=>{c()});{const u=this.dv(w.createProcessingFromAsyncFunc(async B=>{if(i.value===void 0){await B.promise(c());return}if(i.value.type==="ActorTag"){const{actorTag:g,componentTag:f}=i.value;if(n!==g&&await B.promise(c()),n!==void 0||g===void 0)return;try{n=g;const m=await B.promise(e.bindImageryByTag(A.id,g,f));if(!m)return;if(m.error!==""){console.warn(`ESImageryLayer BindImageryByTag: ${m.error}`);return}if(m.re.type!==0)if(m.re.type===1)console.warn(`ESImageryLayer BindImageryByTag: ${el(m.re.type)}`);else{console.warn(`ESImageryLayer BindImageryByTag: ${el(m.re.type)}`);return}}catch(m){console.warn(`ESImageryLayer BindImageryByTag promise: ${m}`);return}}else if(i.value.type==="CreatedUrl"){const{url:g}=i.value;if(g!==s&&await B.promise(c()),s!==void 0||g===void 0)return;try{s=g;const f=await B.promise(t.callUeFunc({f:"create",p:{type:"ESImageryLayer",id:A.id}}));if(!f)return;if(f.error!==""){console.warn(`ESImageryLayer create: ${f.error}`);return}}catch{console.warn("ESImageryLayer create: create promise error");return}}await B.promise(a())})),d=async()=>{u.restart()};d(),this.d(i.changed.don(d))}{const u=this.dv(w.createNextAnimateFrameEvent(A.actorTagChanged,o.changed,A.componentTagChanged)),d=()=>{A.actorTag&&A.componentTag?i.value={type:"ActorTag",actorTag:A.actorTag,componentTag:A.componentTag}:o.value?i.value={type:"CreatedUrl",url:o.value}:i.value=void 0};d(),this.d(u.don(d))}this.d(A.flyToEvent.don(async(u,d)=>{if(!n&&!s)return;const B=await Be(t,A.id,u);let g="over";B===void 0?g="error":B.endType===0?g="over":B.endType===1&&(g="cancelled"),A.flyOverEvent.emit(d,g,e)})),this.d(A.flyInEvent.don(async(u,d)=>{var f,m;if(!n&&!s)return;const B=await xe(t,A.id,(f=A.flyInParam)==null?void 0:f.position,(m=A.flyInParam)==null?void 0:m.rotation,u??1);let g="over";B===void 0?g="error":B.endType===0?g="over":B.endType===1&&(g="cancelled"),A.flyOverEvent.emit(d,g,e)})),this.d(A.calcFlyToParamEvent.don(()=>{!n&&!s||$A(t,A.id)})),this.d(A.calcFlyInParamEvent.don(async()=>{if(!e.actived)return;const u=await e.getCurrentCameraInfo();if(!u)return;const{position:d,rotation:B}=u;A.flyInParam={position:d,rotation:B,flyDuration:1}})),this.d(e.propChanged.don(u=>{!n&&!s||u.objId===A.id&&Object.keys(u.props).forEach(d=>{const B=u.props[d]===null?void 0:u.props[d];A[d]=B})}))}};C(gt,"type",gt.register("ESUeViewer",p.ESImageryLayer.type,gt));let Kn=gt;const ie=class ie extends dA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(ie,"type",ie.register("ESUeViewer",p.ESTerrainLayer.type,ie)),C(ie,"forceUeUpdateProps",[...dA.forceUeUpdateProps,"url"]),C(ie,"propValFuncs",{...dA.propValFuncs,url:A=>typeof A=="string"?p.ESSceneObject.context.getStrFromEnv(A):(A.url=p.ESSceneObject.context.getStrFromEnv(A.url),A),czmMaxzoom:null,czmMinzoom:null});let xn=ie;const Bt=class Bt extends x{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(Bt,"type",Bt.register("ESUeViewer",p.ESAlarm.type,Bt));let kn=Bt;const ft=class ft extends x{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(ft,"type",ft.register("ESUeViewer",p.ESApertureEffect.type,ft));let Gn=ft;const wt=class wt extends nA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(wt,"type",wt.register("ESUeViewer",p.ESGeoPolygon.type,wt));let uA=wt;const pt=class pt extends uA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}const n=()=>{let i=p.ESAreaMeasurement.defaults.fillStyle;try{i={...A.fillStyle??p.ESAreaMeasurement.defaults.fillStyle}}catch(o){console.error("ESAreaMeasurement fillStyle 属性类型错误!",o),i={...p.ESAreaMeasurement.defaults.fillStyle}}i.materialParams=JSON.stringify(i.materialParams),t.callUeFunc({f:"update",p:{id:A.id,stroked:A.stroked??p.ESAreaMeasurement.defaults.stroked,fillStyle:i,filled:A.filled??p.ESAreaMeasurement.defaults.filled}}),console.log(i)},s=this.dv(w.createNextAnimateFrameEvent(A.fillStyleChanged,A.strokedChanged,A.filledChanged));this.d(s.don(n)),this.d(A.createdEvent.don(n))}};C(pt,"type",pt.register("ESUeViewer",p.ESAreaMeasurement.type,pt));let Nn=pt;const Ct=class Ct extends x{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(Ct,"type",Ct.register("ESUeViewer",p.ESBlastParticleSystem.type,Ct));let _n=Ct;const Le=class Le extends x{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is underfined!");return}}};C(Le,"type",Le.register("ESUeViewer",p.ESBoxClipping.type,Le)),C(Le,"propValFuncs",{...x.propValFuncs,targetID:A=>{if(!A)return"";const e=p.ESSceneObject.getSceneObject(A);return e?(e.components.main??e).id:A}});let Vn=Le;const vt=class vt extends x{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}this.dispose(A.flyInEvent.don((n,s,i="default")=>{const{id:o,duration:a,position:l,rotation:c}=A;xe(t,o,l,c,a??n,i)})),this.dispose(A.resetWithCurrentCameraEvent.don(()=>{Un(t,A.id)})),this.dispose(A.captureEvent.don((n,s)=>{e.capture(n,s).then(o=>{o&&(A.thumbnail=o)})}))}};C(vt,"type",vt.register("ESUeViewer",p.ESCameraView.type,vt));let On=vt;const mt=class mt extends x{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(mt,"type",mt.register("ESUeViewer",p.ESCameraVisibleRange.type,mt));let Wn=mt;const Ft=class Ft extends x{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(Ft,"type",Ft.register("ESUeViewer",p.ESCar.type,Ft));let Xn=Ft;const Qt=class Qt extends nA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}const n=()=>{let i=p.ESClassification.defaults.fillStyle;try{i={...A.fillStyle??p.ESClassification.defaults.fillStyle}}catch(o){console.error("ESClassification fillStyle 属性类型错误!",o),i={...p.ESClassification.defaults.fillStyle}}i.materialParams=JSON.stringify(i.materialParams),t.callUeFunc({f:"update",p:{id:A.id,filled:A.filled??p.ESClassification.defaults.filled,fillStyle:i}})},s=this.dv(w.createNextAnimateFrameEvent(A.fillStyleChanged,A.filledChanged));this.d(s.don(n)),this.d(A.createdEvent.don(n))}};C(Qt,"type",Qt.register("ESUeViewer",p.ESClassification.type,Qt));let Jn=Qt;const be=class be extends x{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is underfined!");return}}};C(be,"type",be.register("ESUeViewer",p.ESClippingPlane.type,be)),C(be,"propValFuncs",{...x.propValFuncs,targetID:A=>{if(!A)return"";const e=p.ESSceneObject.getSceneObject(A);return e?(e.components.main??e).id:A}});let zn=be;const Ut=class Ut extends x{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}const n=this.ad(w.reactJson(""));{const o=()=>{if(typeof A.url=="string")n.value=p.ESSceneObject.context.getStrFromEnv(A.url??p.ESDataMesh.defaults.url);else{const a=A.url;a.url=p.ESSceneObject.context.getStrFromEnv(a.url??p.ESDataMesh.defaults.url),n.value=a}};o(),this.ad(A.urlChanged.don(o))}const s=()=>{const o=A.colorStops??p.ESDataMesh.defaults.colorStops;t.callUeFunc({f:"update",p:{id:A.id,url:n.value??p.ESDataMesh.defaults.url,currentTime:A.currentTime??p.ESDataMesh.defaults.currentTime,minPropValue:A.minPropValue??p.ESDataMesh.defaults.minPropValue,maxPropValue:A.maxPropValue??p.ESDataMesh.defaults.maxPropValue,colorStops:JSON.stringify(o)}})},i=this.dv(w.createNextAnimateFrameEvent(n.changed,A.currentTimeChanged,A.minPropValueChanged,A.maxPropValueChanged,A.colorStopsChanged));this.d(i.don(s)),this.d(A.createdEvent.don(s))}};C(Ut,"type",Ut.register("ESUeViewer",p.ESDataMesh.type,Ut));let Yn=Ut;const Et=class Et extends x{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(Et,"type",Et.register("ESUeViewer",p.ESDatasmithRuntimeModel.type,Et));let $n=Et;const yt=class yt extends nA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(yt,"type",yt.register("ESUeViewer",p.ESDirectionMeasurement.type,yt));let Zn=yt;const St=class St extends nA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}const n=()=>{let i;try{i={...A.strokeStyle??p.ESDistanceMeasurement.defaults.strokeStyle}}catch(o){console.error("ESDistanceMeasurement strokeStyle 属性类型错误!",o),i={...p.ESDistanceMeasurement.defaults.strokeStyle}}t.callUeFunc({f:"update",p:{id:A.id,strokeStyle:i}})},s=this.dv(w.createNextAnimateFrameEvent(A.strokeStyleChanged));this.d(s.don(n)),this.d(A.createdEvent.don(n))}};C(St,"type",St.register("ESUeViewer",p.ESDistanceMeasurement.type,St));let qn=St;const It=class It extends Er{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(It,"type",It.register("ESUeViewer",p.ESLocalPolygon.type,It));let Sr=It;const Tt=class Tt extends Sr{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(Tt,"type",Tt.register("ESUeViewer",p.ESDynamicWater.type,Tt));let jn=Tt;const Ht=class Ht extends dA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}this.d(e.widgetEvent.don(n=>{if(n.objId!==A.id)return;const{type:s,properties:i}=n;A.widgetEvent.emit({type:s,properties:i})}))}};C(Ht,"type",Ht.register("ESUeViewer",p.ESEntityCluster.type,Ht));let As=Ht;const Me=class Me extends uA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(Me,"type",Me.register("ESUeViewer",p.ESExcavate.type,Me)),C(Me,"propValFuncs",{...uA.propValFuncs,targetID:A=>{if(!A)return"";const e=p.ESSceneObject.getSceneObject(A);return e?(e.components.main??e).id:A}});let es=Me;const Lt=class Lt extends x{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(Lt,"type",Lt.register("ESUeViewer",p.ESFireParticleSystem.type,Lt));let ts=Lt;const bt=class bt extends dA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}const n=this.ad(w.reactJson(""));{const o=()=>{if(typeof A.url=="string")n.value=p.ESSceneObject.context.getStrFromEnv(A.url);else{const a=A.url;a.url=p.ESSceneObject.context.getStrFromEnv(a.url),n.value=a}};o(),this.ad(A.urlChanged.don(o))}const s=()=>{t.callUeFunc({f:"update",p:{id:A.id,url:n.value??p.ESForestTileset.defaults.url,treeTypes:A.treeTypes??p.ESForestTileset.defaults.treeTypes,xiaoBanWidget:A.xiaoBanWidget??p.ESForestTileset.defaults.xiaoBanWidget,youShiSZ:A.youShiSZ??p.ESForestTileset.defaults.youShiSZ,diLei:A.diLei??p.ESForestTileset.defaults.diLei,senLinLB:A.senLinLB??p.ESForestTileset.defaults.senLinLB,labelMaterial:A.labelMaterial??p.ESForestTileset.defaults.labelMaterial,heightOffset:A.heightOffset??p.ESForestTileset.defaults.heightOffset}})},i=this.dv(w.createNextAnimateFrameEvent(n.changed,A.treeTypesChanged,A.xiaoBanWidgetChanged,A.youShiSZChanged,A.diLeiChanged,A.senLinLBChanged,A.labelMaterialChanged,A.heightOffsetChanged));this.d(i.don(s)),this.d(A.createdEvent.don(s))}};C(bt,"type",bt.register("ESUeViewer",p.ESForestTileset.type,bt));let rs=bt;/*!
|
|
91
|
+
`}}class Ja{static deepCopyGamepad(A){return JSON.parse(JSON.stringify({buttons:A.buttons.map(e=>JSON.parse(JSON.stringify({pressed:e.pressed,touched:e.touched}))),axes:A.axes}))}}class qd{constructor(A){this.toStreamerMessagesProvider=A,this.controllers=[]}updateStatus(A,e,t){if(A.gamepad){const n=e.getPose(A.gripSpace,t);if(!n)return;let s=0;A.profiles.includes("htc-vive")?s=1:A.profiles.includes("oculus-touch")&&(s=2),this.toStreamerMessagesProvider.toStreamerHandlers.get("XRSystem")([s]);let i=2;switch(A.handedness){case"left":i=0;break;case"right":i=1}const o=n.transform.matrix,a=[];for(let d=0;d<16;d++)a[d]=new Float32Array([o[d]])[0];this.toStreamerMessagesProvider.toStreamerHandlers.get("XRControllerTransform")([a[0],a[4],a[8],a[12],a[1],a[5],a[9],a[13],a[2],a[6],a[10],a[14],a[3],a[7],a[11],a[15],i]),this.controllers[i]===void 0&&(this.controllers[i]={prevState:void 0,currentState:void 0,id:void 0},this.controllers[i].prevState=Ja.deepCopyGamepad(A.gamepad)),this.controllers[i].currentState=Ja.deepCopyGamepad(A.gamepad);const l=this.controllers[i],c=l.currentState,u=l.prevState;for(let d=0;d<c.buttons.length;d++){const B=c.buttons[d],g=u.buttons[d];B.pressed?this.toStreamerMessagesProvider.toStreamerHandlers.get("XRButtonPressed")([i,d,g.pressed?1:0]):!B.pressed&&g.pressed&&this.toStreamerMessagesProvider.toStreamerHandlers.get("XRButtonReleased")([i,d,0]),B.touched&&!B.pressed?this.toStreamerMessagesProvider.toStreamerHandlers.get("XRButtonPressed")([i,3,g.touched?1:0]):!B.touched&&g.touched&&this.toStreamerMessagesProvider.toStreamerHandlers.get("XRButtonReleased")([i,3,0])}for(let d=0;d<c.axes.length;d++)this.toStreamerMessagesProvider.toStreamerHandlers.get("XRAnalog")([i,d,c.axes[d]]);this.controllers[i].prevState=c}}}class za{constructor(A){this.xrSession=null,this.webRtcController=A,this.xrControllers=[],this.xrGamepadController=new qd(this.webRtcController.streamMessageController),this.onSessionEnded=new EventTarget,this.onSessionStarted=new EventTarget,this.onFrame=new EventTarget}xrClicked(){this.xrSession?this.xrSession.end():navigator.xr.requestSession("immersive-vr").then(A=>{this.onXrSessionStarted(A)})}onXrSessionEnded(){h.Log(h.GetStackTrace(),"XR Session ended"),this.xrSession=null,this.onSessionEnded.dispatchEvent(new Event("xrSessionEnded"))}onXrSessionStarted(A){h.Log(h.GetStackTrace(),"XR Session started"),this.xrSession=A,this.xrSession.addEventListener("end",()=>{this.onXrSessionEnded()});const e=document.createElement("canvas");this.gl=e.getContext("webgl2",{xrCompatible:!0}),this.xrSession.updateRenderState({baseLayer:new XRWebGLLayer(this.xrSession,this.gl)});const t=this.gl.createShader(this.gl.VERTEX_SHADER);this.gl.shaderSource(t,Xa.vertexShader()),this.gl.compileShader(t);const n=this.gl.createShader(this.gl.FRAGMENT_SHADER);this.gl.shaderSource(n,Xa.fragmentShader()),this.gl.compileShader(n);const s=this.gl.createProgram();this.gl.attachShader(s,t),this.gl.attachShader(s,n),this.gl.linkProgram(s),this.gl.useProgram(s),this.positionLocation=this.gl.getAttribLocation(s,"a_position"),this.texcoordLocation=this.gl.getAttribLocation(s,"a_texCoord"),this.positionBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.positionBuffer),this.gl.enableVertexAttribArray(this.positionLocation);const i=this.gl.createTexture();this.gl.bindTexture(this.gl.TEXTURE_2D,i),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_S,this.gl.CLAMP_TO_EDGE),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_T,this.gl.CLAMP_TO_EDGE),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MIN_FILTER,this.gl.NEAREST),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MAG_FILTER,this.gl.NEAREST),this.texcoordBuffer=this.gl.createBuffer(),this.resolutionLocation=this.gl.getUniformLocation(s,"u_resolution"),this.offsetLocation=this.gl.getUniformLocation(s,"u_offset"),A.requestReferenceSpace("local").then(o=>{this.xrRefSpace=o,this.xrSession.requestAnimationFrame((a,l)=>this.onXrFrame(a,l))}),this.onSessionStarted.dispatchEvent(new Event("xrSessionStarted"))}onXrFrame(A,e){const t=e.getViewerPose(this.xrRefSpace);if(t){const n=t.transform.matrix,s=[];for(let o=0;o<16;o++)s[o]=new Float32Array([n[o]])[0];this.webRtcController.streamMessageController.toStreamerHandlers.get("XRHMDTransform")([s[0],s[4],s[8],s[12],s[1],s[5],s[9],s[13],s[2],s[6],s[10],s[14],s[3],s[7],s[11],s[15]]);const i=this.xrSession.renderState.baseLayer;this.gl.bindFramebuffer(this.gl.FRAMEBUFFER,i.framebuffer),this.gl.texImage2D(this.gl.TEXTURE_2D,0,this.gl.RGBA,this.gl.RGBA,this.gl.UNSIGNED_BYTE,this.webRtcController.videoPlayer.getVideoElement()),this.render(this.webRtcController.videoPlayer.getVideoElement())}this.webRtcController.config.isFlagEnabled(U.XRControllerInput)&&this.xrSession.inputSources.forEach((n,s,i)=>{this.xrGamepadController.updateStatus(n,e,this.xrRefSpace)},this),this.xrSession.requestAnimationFrame((n,s)=>this.onXrFrame(n,s)),this.onFrame.dispatchEvent(new ya({time:A,frame:e}))}render(A){if(!this.gl)return;const e=this.xrSession.renderState.baseLayer;let t,n,s,i,o;this.gl.viewport(0,0,e.framebufferWidth,e.framebufferHeight),this.gl.uniform4f(this.offsetLocation,1,1,0,0),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([0,0,A.videoWidth,0,0,A.videoHeight,0,A.videoHeight,A.videoWidth,0,A.videoWidth,A.videoHeight]),this.gl.STATIC_DRAW),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.texcoordBuffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([0,0,1,0,0,1,0,1,1,0,1,1]),this.gl.STATIC_DRAW),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.positionBuffer),t=2,n=this.gl.FLOAT,s=!1,i=0,o=0,this.gl.vertexAttribPointer(this.positionLocation,t,n,s,i,o),this.gl.enableVertexAttribArray(this.texcoordLocation),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.texcoordBuffer),t=2,n=this.gl.FLOAT,s=!1,i=0,o=0,this.gl.vertexAttribPointer(this.texcoordLocation,t,n,s,i,o),this.gl.uniform2f(this.resolutionLocation,A.videoWidth,A.videoHeight);const a=this.gl.TRIANGLES;o=0,this.gl.drawArrays(a,o,6)}static isSessionSupported(A){return navigator.xr?navigator.xr.isSessionSupported(A):new Promise(()=>!1)}}class jd{constructor(A){this.editTextButton=null,this.hiddenInput=null,"ontouchstart"in document.documentElement&&this.createOnScreenKeyboardHelpers(A)}unquantizeAndDenormalizeUnsigned(A,e){return null}createOnScreenKeyboardHelpers(A){this.hiddenInput||(this.hiddenInput=document.createElement("input"),this.hiddenInput.id="hiddenInput",this.hiddenInput.maxLength=0,A.appendChild(this.hiddenInput)),this.editTextButton||(this.editTextButton=document.createElement("button"),this.editTextButton.id="editTextButton",this.editTextButton.innerHTML="edit text",A.appendChild(this.editTextButton),this.editTextButton.classList.add("hiddenState"),this.editTextButton.addEventListener("touchend",e=>{this.hiddenInput.focus(),e.preventDefault()}))}showOnScreenKeyboard(A){if(A.showOnScreenKeyboard){this.editTextButton.classList.remove("hiddenState");const e=this.unquantizeAndDenormalizeUnsigned(A.x,A.y);this.editTextButton.style.top=e.y.toString()+"px",this.editTextButton.style.left=(e.x-40).toString()+"px"}else this.editTextButton.classList.add("hiddenState"),this.hiddenInput.blur()}}class Au{constructor(A,e){this._showActionOrErrorOnDisconnect=!0,this.allowConsoleCommands=!1,this.config=A,e!=null&&e.videoElementParent&&(this._videoElementParent=e.videoElementParent),this._eventEmitter=new Ia,this.configureSettings(),this.setWebRtcPlayerController(new Wa(this.config,this)),this.onScreenKeyboardHelper=new jd(this.videoElementParent),this.onScreenKeyboardHelper.unquantizeAndDenormalizeUnsigned=(t,n)=>this._webRtcController.requestUnquantizedAndDenormalizeUnsigned(t,n),this._activateOnScreenKeyboard=t=>this.onScreenKeyboardHelper.showOnScreenKeyboard(t),this._webXrController=new za(this._webRtcController)}get videoElementParent(){return this._videoElementParent||(this._videoElementParent=document.createElement("div"),this._videoElementParent.id="videoElementParent"),this._videoElementParent}configureSettings(){this.config._addOnSettingChangedListener(U.IsQualityController,A=>{A!==!0||this._webRtcController.isQualityController||this._webRtcController.sendRequestQualityControlOwnership()}),this.config._addOnSettingChangedListener(U.AFKDetection,A=>{this._webRtcController.setAfkEnabled(A)}),this.config._addOnSettingChangedListener(U.MatchViewportResolution,()=>{this._webRtcController.videoPlayer.updateVideoStreamSize()}),this.config._addOnSettingChangedListener(U.HoveringMouseMode,A=>{this.config.setFlagLabel(U.HoveringMouseMode,`Control Scheme: ${A?"Hovering":"Locked"} Mouse`),this._webRtcController.setMouseInputEnabled(this.config.isFlagEnabled(U.MouseInput))}),this.config._addOnSettingChangedListener(U.KeyboardInput,A=>{this._webRtcController.setKeyboardInputEnabled(A)}),this.config._addOnSettingChangedListener(U.MouseInput,A=>{this._webRtcController.setMouseInputEnabled(A)}),this.config._addOnSettingChangedListener(U.TouchInput,A=>{this._webRtcController.setTouchInputEnabled(A)}),this.config._addOnSettingChangedListener(U.GamepadInput,A=>{this._webRtcController.setGamePadInputEnabled(A)}),this.config._addOnNumericSettingChangedListener(M.MinQP,A=>{h.Log(h.GetStackTrace(),"-------- Sending MinQP --------",7),this._webRtcController.sendEncoderMinQP(A),h.Log(h.GetStackTrace(),"-------------------------------------------",7)}),this.config._addOnNumericSettingChangedListener(M.MaxQP,A=>{h.Log(h.GetStackTrace(),"-------- Sending encoder settings --------",7),this._webRtcController.sendEncoderMaxQP(A),h.Log(h.GetStackTrace(),"-------------------------------------------",7)}),this.config._addOnNumericSettingChangedListener(M.WebRTCMinBitrate,A=>{h.Log(h.GetStackTrace(),"-------- Sending web rtc settings --------",7),this._webRtcController.sendWebRTCMinBitrate(1e3*A),h.Log(h.GetStackTrace(),"-------------------------------------------",7)}),this.config._addOnNumericSettingChangedListener(M.WebRTCMaxBitrate,A=>{h.Log(h.GetStackTrace(),"-------- Sending web rtc settings --------",7),this._webRtcController.sendWebRTCMaxBitrate(1e3*A),h.Log(h.GetStackTrace(),"-------------------------------------------",7)}),this.config._addOnNumericSettingChangedListener(M.WebRTCFPS,A=>{h.Log(h.GetStackTrace(),"-------- Sending web rtc settings --------",7),this._webRtcController.sendWebRTCFps(A),h.Log(h.GetStackTrace(),"-------------------------------------------",7)}),this.config._addOnOptionSettingChangedListener(V.PreferredCodec,A=>{this._webRtcController&&this._webRtcController.setPreferredCodec(A)}),this.config._registerOnChangeEvents(this._eventEmitter)}_activateOnScreenKeyboard(A){throw new Error("Method not implemented.")}_onInputControlOwnership(A){this._inputController=A}setWebRtcPlayerController(A){this._webRtcController=A,this._webRtcController.setPreferredCodec(this.config.getSettingOption(V.PreferredCodec).selected),this._webRtcController.resizePlayerStyle(),this.checkForAutoConnect()}connect(){this._eventEmitter.dispatchEvent(new Ba),this._webRtcController.connectToSignallingServer()}reconnect(){this._eventEmitter.dispatchEvent(new wa),this._webRtcController.restartStreamAutomatically()}disconnect(){this._eventEmitter.dispatchEvent(new fa),this._webRtcController.close()}play(){this._onStreamLoading(),this._webRtcController.playStream()}checkForAutoConnect(){this.config.isFlagEnabled(U.AutoConnect)&&(this._onWebRtcAutoConnect(),this._webRtcController.connectToSignallingServer())}_onWebRtcAutoConnect(){this._eventEmitter.dispatchEvent(new sa),this._showActionOrErrorOnDisconnect=!0}_onWebRtcSdp(){this._eventEmitter.dispatchEvent(new na)}_onStreamLoading(){this._eventEmitter.dispatchEvent(new ga)}_onDisconnect(A){this._webRtcController.getDisconnectMessageOverride()!=""&&this._webRtcController.getDisconnectMessageOverride()!==void 0&&this._webRtcController.getDisconnectMessageOverride()!=null&&(A=this._webRtcController.getDisconnectMessageOverride(),this._webRtcController.setDisconnectMessageOverride("")),this._eventEmitter.dispatchEvent(new la({eventString:A,showActionOrErrorOnDisconnect:this._showActionOrErrorOnDisconnect})),this._showActionOrErrorOnDisconnect==0&&(this._showActionOrErrorOnDisconnect=!0)}_onWebRtcConnecting(){this._eventEmitter.dispatchEvent(new ia)}_onWebRtcConnected(){this._eventEmitter.dispatchEvent(new oa)}_onWebRtcFailed(){this._eventEmitter.dispatchEvent(new aa)}_onVideoInitialized(){this._eventEmitter.dispatchEvent(new ha),this._videoStartTime=Date.now()}_onLatencyTestResult(A){this._eventEmitter.dispatchEvent(new Ua({latencyTimings:A}))}_onVideoStats(A){this._videoStartTime&&this._videoStartTime!==void 0||(this._videoStartTime=Date.now()),A.handleSessionStatistics(this._videoStartTime,this._inputController,this._webRtcController.videoAvgQp),this._eventEmitter.dispatchEvent(new Fa({aggregatedStats:A}))}_onVideoEncoderAvgQP(A){this._eventEmitter.dispatchEvent(new ra({avgQP:A}))}_onInitialSettings(A){var e;this._eventEmitter.dispatchEvent(new Ea({settings:A})),A.PixelStreamingSettings&&(this.allowConsoleCommands=(e=A.PixelStreamingSettings.AllowPixelStreamingCommands)!==null&&e!==void 0&&e,this.allowConsoleCommands===!1&&h.Info(h.GetStackTrace(),"-AllowPixelStreamingCommands=false, sending arbitrary console commands from browser to UE is disabled."));const t=this.config.useUrlParams,n=new URLSearchParams(window.location.search);A.EncoderSettings&&(this.config.setNumericSetting(M.MinQP,t&&n.has(M.MinQP)?Number.parseInt(n.get(M.MinQP)):A.EncoderSettings.MinQP),this.config.setNumericSetting(M.MaxQP,t&&n.has(M.MaxQP)?Number.parseInt(n.get(M.MaxQP)):A.EncoderSettings.MaxQP)),A.WebRTCSettings&&(this.config.setNumericSetting(M.WebRTCMinBitrate,t&&n.has(M.WebRTCMinBitrate)?Number.parseInt(n.get(M.WebRTCMinBitrate)):A.WebRTCSettings.MinBitrate/1e3),this.config.setNumericSetting(M.WebRTCMaxBitrate,t&&n.has(M.WebRTCMaxBitrate)?Number.parseInt(n.get(M.WebRTCMaxBitrate)):A.WebRTCSettings.MaxBitrate/1e3),this.config.setNumericSetting(M.WebRTCFPS,t&&n.has(M.WebRTCFPS)?Number.parseInt(n.get(M.WebRTCFPS)):A.WebRTCSettings.FPS))}_onQualityControlOwnership(A){this.config.setFlagEnabled(U.IsQualityController,A)}_onPlayerCount(A){this._eventEmitter.dispatchEvent(new Sa({count:A}))}requestLatencyTest(){return!!this._webRtcController.videoPlayer.isVideoReady()&&(this._webRtcController.sendLatencyTest(),!0)}requestShowFps(){return!!this._webRtcController.videoPlayer.isVideoReady()&&(this._webRtcController.sendShowFps(),!0)}requestIframe(){return!!this._webRtcController.videoPlayer.isVideoReady()&&(this._webRtcController.sendIframeRequest(),!0)}emitUIInteraction(A){return!!this._webRtcController.videoPlayer.isVideoReady()&&(this._webRtcController.emitUIInteraction(A),!0)}emitCommand(A){return!(!this._webRtcController.videoPlayer.isVideoReady()||!this.allowConsoleCommands&&"ConsoleCommand"in A||(this._webRtcController.emitCommand(A),0))}emitConsoleCommand(A){return!(!this.allowConsoleCommands||!this._webRtcController.videoPlayer.isVideoReady()||(this._webRtcController.emitConsoleCommand(A),0))}addResponseEventListener(A,e){this._webRtcController.responseController.addResponseEventListener(A,e)}removeResponseEventListener(A){this._webRtcController.responseController.removeResponseEventListener(A)}dispatchEvent(A){return this._eventEmitter.dispatchEvent(A)}addEventListener(A,e){this._eventEmitter.addEventListener(A,e)}removeEventListener(A,e){this._eventEmitter.removeEventListener(A,e)}toggleXR(){this.webXrController.xrClicked()}setSignallingUrlBuilder(A){this._webRtcController.signallingUrlBuilder=A}get webSocketController(){return this._webRtcController.webSocketController}get webXrController(){return this._webXrController}}H.Dz,H.g$,H.Lt,H.Q9,H.qf,H.hV,H.z$,H.J0;var Ya=H.De;H.$C,H.al,H._W,H.tz,H.Nu,H.zg,H.vp;var pe=H.vU;H.wF,H.rv,H.Nh,H.ss,H.qW,H.QL,H.cf,H.eM;var $a=H.Yd;H.iM,H.qy,H.ce;var Za=H.sK;H.Ok,H.q5;var qa=H.g;H.xl,H.I,H.bx,H.dD,H.Ib,H.Az,H.Iw,H.qY,H.db,H.mR,H.Tn,H.rV,H.gh,H.Mi,H.j,H.YB,H.i5;var eu=H.x_;H.Am,H.eR,H.r8,H.u3,H.vd,H.iV,H.jZ,H.SW,H.ZH,H.Ni,H.lh,H.bq,H.$f,H.eu,H.Ax,H.Mc;const tu={Response:1},Ur={UIInteraction:50,MouseWheel:75};class ru extends w.HasOwner{constructor(e,t){super(e);C(this,"_processResponseFn",e=>this.esUeViewer.processResponse(e));C(this,"_inner");this._uri=t,this._inner=new WebSocket(this._uri),this.d(()=>{this._inner.close()}),this._innerInit()}get esUeViewer(){return this.owner}get uri(){return this._uri}get inner(){return this._inner}_innerInit(){this.inner.onmessage=e=>{if(this.isDestroyed())return;let t=new FileReader;t.onload=n=>{if(this.isDestroyed())return;let s=n.target.result,i=new Uint32Array(s),o=0;if(i[0]===tu.Response){o+=4;let a=i[o/4];o+=4;for(let l=0;l<a;l++){let c=i[o/4];o+=4;let u=new TextDecoder("utf-8").decode(s.slice(o,o+c));o+=c,this._processResponseFn(u)}}},t.readAsArrayBuffer(e.data)},this.inner.onopen=()=>{this.isDestroyed()||(console.warn("earthsdk message websocket server connected:",this.uri),console.log("%c[EarthSDK websocket open]","background: #a6ec99; color: black","open"),this.owner.dispatchEvent(new CustomEvent("esmsgwsopen",{detail:"websocket open"})))},this._inner.onclose=e=>{this.isDestroyed()||(console.log("%c[EarthSDK websocket close ]","background: red; color: black","error"),this.owner.dispatchEvent(new CustomEvent("error",{detail:"websocket close"})))},this._inner.onerror=e=>{this.isDestroyed()||(console.log("%c[EarthSDK websocket error ]","background: red; color: black","error"),this.owner.dispatchEvent(new CustomEvent("error",{detail:"websocket error"})))}}sendInputData(e){const t=this.inner;if(t.readyState!==WebSocket.OPEN)return;const s=new Uint8Array(e)[0];if(s>=Ur.UIInteraction&&s<=Ur.MouseWheel){const i=new ArrayBuffer(e.byteLength+4);return new DataView(i).setUint32(0,e.byteLength,!0),new Uint8Array(i,4).set(new Uint8Array(e)),t.send(new DataView(i)),!0}else return!1}emitDescriptorWithString(e,t){let n=new TextEncoder().encode(t),s=new DataView(new ArrayBuffer(3+n.length)),i=0;s.setUint8(i,e),i++,s.setUint16(i,n.length,!0),i+=2;for(let o=0;o<n.length;o++)s.setUint8(i,n[o]),i+=1;try{this.sendInputData(s.buffer)}catch(o){console.error(`data.buffer.size: ${s.buffer.byteLength} 独立通道 sendInputData error: ${o}`,o)}}destroyImpl(){this._inner&&this._inner.close()}}window.g_emitDescriptor_maxBytes=3e4;let nu=-1;$a.SetLoggerVerbosity(1);class su extends w.Destroyable{constructor(e,t){super();C(this,"_eventTarget",new EventTarget);C(this,"debug",!1);C(this,"uiInteractionCallbacks",new Map);C(this,"_pixelStream");C(this,"_esMsgWsWrapper");this._domOrDomId=e,this._options=t;const n=typeof this._domOrDomId=="string"?document.getElementById(this._domOrDomId):this._domOrDomId;if(!n)throw new Error(`ESUEViewer container${this._domOrDomId} error!`);console.log(`PSUEViewer init _options ${this._options}`);const{url:s,esmsgWsUri:i}=this._options;this._pixelStream=this._initPixelStream(n,s),this.d(()=>{this._pixelStream.disconnect()}),this._handerPixelStreamEvent(),this._esMsgWsWrapper=this._initEsMsgWsWrapper(i);const o=this;if(o.esMsgWsWrapper){const a=o.webRtcController.sendMessageController.dataChannelSender.sendData;o.webRtcController.sendMessageController.dataChannelSender.constructor.prototype.sendData=function(l){o.esMsgWsWrapper?o.esMsgWsWrapper.sendInputData(l):a.call(this,l)}}}get eventTarget(){return this._eventTarget}addEventListener(e,t,n){return this.eventTarget.addEventListener(e,t,n)}removeEventListener(e,t,n){return this.eventTarget.removeEventListener(e,t,n)}dispatchEvent(e){return this.eventTarget.dispatchEvent(e)}_initPixelStream(e,t){const n=new Ya({initialSettings:{AutoPlayVideo:!0,AutoConnect:!0,StartVideoMuted:!1,SuppressBrowserKeys:!1,[eu.SignallingServerUrl]:t}});return n.setFlagEnabled(pe.BrowserSendOffer,!1),n.setFlagEnabled(pe.HoveringMouseMode,!0),n.setFlagEnabled(pe.MatchViewportResolution,!0),n.setNumericSetting(Za.MaxReconnectAttempts,0),new qa(n,{videoElementParent:e})}get pixelStream(){return this._pixelStream}_initEsMsgWsWrapper(e){return e?this.dv(new ru(this,e)):void 0}get esMsgWsWrapper(){return this._esMsgWsWrapper}get esWebSocketReady(){var e;return((e=this.esMsgWsWrapper)==null?void 0:e.inner.readyState)===1}_handerPixelStreamEvent(){this.pixelStream.addEventListener("videoInitialized",()=>{console.log("%c[EarthSDK webrtc videoInitialized]","background: #a6ec99; color: black","videoInitialized"),this.dispatchEvent(new CustomEvent("videoinited",{detail:"videoinited"}))}),this.pixelStream.addEventListener("webRtcFailed",()=>{this.isDestroyed()||(console.log("%c[EarthSDK webRtc webRtcFailed]","background: red; color: black","webRtcFailed"),this.dispatchEvent(new CustomEvent("error",{detail:"webRtcFailed"})),this.pixelStream.disconnect())}),this.pixelStream.addEventListener("webRtcDisconnected",()=>{this.isDestroyed()||(console.log("%c[EarthSDK webRtc webRtcDisconnected]","background: red; color: black","webRtcDisconnected"),this.dispatchEvent(new CustomEvent("error",{detail:"webRtcDisconnected"})),this.pixelStream.disconnect())}),this.pixelStream.addEventListener("webRtcConnected",()=>{this.isDestroyed()||(console.log("%c[EarthSDK webrtc webRtcConnected]","background: #a6ec99; color: black","webRtcConnected"),this.dispatchEvent(new CustomEvent("webRtcConnected",{detail:"webRtcConnected"})))}),this.pixelStream.addResponseEventListener("esueviewer",e=>{this.processResponse(e)})}resolveCallback(e){let t={};try{t=JSON.parse(e)}catch{return!1}let n=t.callid;if(typeof n!="string"||!this.uiInteractionCallbacks.has(n))return!1;let s=this.uiInteractionCallbacks.get(n);return typeof s!="function"?!1:(s(t),this.uiInteractionCallbacks.delete(n),!0)}processResponse(e){if(this.debug??!1)try{const t=JSON.parse(e);if(t.ers=t.ers&&t.ers.filter(n=>n.et!=="mouseMoveEvent"),!(t.ers&&t.ers.length>0||t.frs&&t.frs.length>0))return;console.group("%cUE => JS"," background-color:#006EFF;color:#ffffff;font-weight:bold;padding:4px;border-radius:5px;"),console.log(`%c${JSON.stringify(t,void 0,"")}`," border:1px dashed #006EFF;border-radius:5px;padding:10px;line-height:25px;color:#006EFF;"),console.groupEnd()}catch(t){console.error(`processResponse(${e}) error: ${t}`,t)}this.resolveCallback(e)||this.dispatchEvent(new CustomEvent("ueevent",{detail:e}))}emitUIInteraction(e,t){typeof t=="function"&&(e.callid=w.createGuid(),this.uiInteractionCallbacks.set(e.callid,t)),this.pixelStream.emitUIInteraction(e)}get webRtcController(){return this.pixelStream._webRtcController}emitUIInteractionForBigData(e,t){typeof t=="function"&&(e.callid=w.createGuid(),this.uiInteractionCallbacks.set(e.callid,t));const n=JSON.stringify(e),s=window.g_emitDescriptor_maxBytes,i=n.length,o=++nu;if(this.esMsgWsWrapper){if(i<s){this.esMsgWsWrapper.emitDescriptorWithString(Ur.UIInteraction,`${o}-0/1-`+n);return}const a=Math.ceil(i/s)|0;[...new Array(a).keys()].map(c=>n.slice(c*s,(c+1)*s)).forEach((c,u)=>{this.esMsgWsWrapper&&this.esMsgWsWrapper.emitDescriptorWithString(Ur.UIInteraction,`${o}-${u}/${a}-`+c)})}}emitCommand(e){this.pixelStream.emitCommand(e)}getVideoSize(){const e=this.webRtcController.videoPlayer.getVideoElement();return{width:e.videoWidth,height:e.videoHeight}}resizeUEVideo(e,t){let n={Resolution:{Width:e,Height:t}};console.log(`resizeUEVideo emitCommand ${e} ${t} begin`),this.emitCommand(n)}}class iu extends w.Destroyable{constructor(e,t,n){super();C(this,"_instance");C(this,"_event",this.dv(new w.Event));this._container=e,this._wsuri=t,this._esmsgWsUri=n,this._instance=this.dv(new su(this._container,{url:this._wsuri,esmsgWsUri:this._esmsgWsUri})),this.instanceInit()}get webSocketReady(){return this._instance.esWebSocketReady}get event(){return this._event}get debug(){return this._instance.debug}set debug(e){this._instance.debug=e}instanceInit(){if("addEventListener"in this._instance){["esmsgwsopen","error","videoinited","ueevent","webRtcConnected"].forEach(t=>{const n=s=>{this._event.emit(t,s.detail)};this._instance.addEventListener(t,n),this.dispose(()=>this._instance.removeEventListener(t,n))});return}this.dispose(this._instance.errorEvent.disposableOn(e=>{this._event.emit("error",e.detail)})),this.dispose(this._instance.webRtcConnectedEvent.disposableOn(e=>{this._event.emit("webRtcConnected",e.detail)})),this.dispose(this._instance.videoinitedEvent.disposableOn(e=>{this._event.emit("videoinited",e.detail)})),this.dispose(this._instance.ueevent.disposableOn(e=>{this._event.emit("ueevent",e.detail)}))}emitUIInteractionForBigData(e,t){return new Promise((n,s)=>{const i=(...o)=>{n(o),t&&t(...o)};try{this._instance.emitUIInteractionForBigData(e,i)}catch(o){console.warn(`emitUIInteraction发生错误:${o}`),s(o)}})}getVideoSize(){return this._instance.getVideoSize()}resize(e,t){this._instance.resizeUEVideo(e,t)}}class ou extends Ve{constructor(e,t,n,s){super();C(this,"_esueViewerWrapper");C(this,"_ueFuncResultWithIdsEvent",this.dv(new w.Event));C(this,"_ueFuncWithIdAndResultCallbacks",[]);C(this,"_waitingUeFuncIdAndResultCallbacks",new Map);C(this,"_waitingUeCalls",new Set);C(this,"_ueEvent",this.dv(new w.Event));C(this,"_errorEvent",this.dv(new w.Event));C(this,"_readyEvent",this.dv(new w.Event));C(this,"_esmsgwsopen",this.dv(w.react(!1)));C(this,"_videoinited",this.dv(w.react(!1)));C(this,"_webRtcConnected",this.dv(w.react(!1)));this._ueViewer=s,console.log("CSTMPSViewer init ! 以官方像素流 + 独立通信的模式启动!");const i=this._ueViewer;this._esueViewerWrapper=this.dv(new iu(e,t,n));const o=this._esueViewerWrapper;{const B=()=>o.debug=i.debug??!1;B(),this.d(i.debugChanged.don(B))}let a=!1;{const B=()=>{if(a)return;const g=o.webSocketReady;if(this.videoinited&&this.webRtcConnected&&g){console.log("%c[EarthSDK: esmsgWebSocket && videoinited && webRtcConnected]","background: #a6ec99; color: black");const f={eventType:"init",params:{}};o.emitUIInteractionForBigData(f),this._readyEvent.emit(),a=!0}};this.d(this.videoinitedChanged.don(()=>{B()})),this.d(this.webRtcConnectedChanged.don(()=>{B()})),this.d(this.esmsgwsopenChanged.don(()=>{B()}))}this.d(o.event.don((B,g)=>{if(B==="error")this._errorEvent.emit(g);else if(B==="ueevent"){const f=JSON.parse(g);if(f.t==="cr"){const m=f;if(m.frs&&this._ueFuncResultWithIdsEvent.emit(m.frs),m.ers)for(let F of m.ers)this._ueEvent.emit(F)}}else B==="webRtcConnected"?this.webRtcConnected=!0:B==="videoinited"?this.videoinited=!0:B==="esmsgwsopen"&&(this.esmsgwsopen=!0)}));{const B=this.dv(w.createAnimateFrame());let g,f;B.start(()=>{if(g!==e.offsetWidth||f!==e.offsetHeight){if(g=e.offsetWidth,f=e.offsetHeight,g===void 0||f===void 0||!Number.isFinite(g)||!Number.isFinite(f)||g<0||f<0){console.warn(`lastWidth === undefined || lastHeight === undefined || !Number.isFinite(lastWidth) || !Number.isFinite(lastHeight) || lastWidth < 0 || lastHeight < 0 ${g} ${f}`);return}o.resize(g,f),console.log(`resize: ${g} ${f}`)}})}this.d(this._ueFuncResultWithIdsEvent.don(B=>{for(const g of B){const f=this._waitingUeFuncIdAndResultCallbacks.get(g.fid);f&&(this._waitingUeFuncIdAndResultCallbacks.delete(g.fid),f.resultCallback(g.r))}}));let l=0;const c=B=>{const g={n:l++,tt:Date.now(),t:"c",fs:B};this._waitingUeCalls.add(g),i.debug&&(console.group("%cxe2 => ue"," background-color:green;color:#ffffff;font-weight:bold;padding:4px;border-radius:5px;"),console.log(`%c${JSON.stringify(g,void 0,"")}`," border:1px dashed green;border-radius:5px;padding:10px;line-height:25px;color:green;"),console.groupEnd()),this._esueViewerWrapper.emitUIInteractionForBigData(g,()=>{this._waitingUeCalls.delete(g)})},u=()=>{if(!a||this._ueFuncWithIdAndResultCallbacks.length===0)return;const B=this._ueFuncWithIdAndResultCallbacks.map(([g])=>g);for(const[g,f]of this._ueFuncWithIdAndResultCallbacks)this._waitingUeFuncIdAndResultCallbacks.set(g.fid,f);this._ueFuncWithIdAndResultCallbacks.length=0;{const g=window.g_emitDescriptor_maxBytes,f=B.map(L=>({f:L,s:JSON.stringify(L).length}));let m=f.length,F=0,Q=0,y=[];do{do{const{f:L,s:I}=f[F];if(y.push(L),++F,Q+I>g||y.length>=20)break}while(F<m);y.length>0&&(i.debug&&console.log(`传送${y.length}条消息...`),c([...y]),y.length=0,Q=0)}while(F<m)}};this.dv(w.createInterval()).start(u,50),this.d(()=>console.log("UeCloudViewer正在销毁..."))}get esueViewerWrapper(){return this._esueViewerWrapper}get errorEvent(){return this._errorEvent}get readyEvent(){return this._readyEvent}get esmsgwsopen(){return this._esmsgwsopen.value}set esmsgwsopen(e){this._esmsgwsopen.value=e}get esmsgwsopenChanged(){return this._esmsgwsopen.changed}get videoinited(){return this._videoinited.value}set videoinited(e){this._videoinited.value=e}get videoinitedChanged(){return this._videoinited.changed}get webRtcConnected(){return this._webRtcConnected.value}set webRtcConnected(e){this._webRtcConnected.value=e}get webRtcConnectedChanged(){return this._webRtcConnected.changed}resize(e,t){this.esueViewerWrapper.resize(e,t)}callUeFunc(e){return new Promise(t=>{const s={fid:w.createGuid(),...e};this._ueFuncWithIdAndResultCallbacks.push([s,{timeStamp:Date.now(),ueFunc:e,resultCallback:t}])})}disposableOnUeEvent(e,t){(this._ueViewer.debug??!1)&&console.log(`disposableOnUeEvent from UeCloudViewer, type:${e}`);const n=w.createGuid();this.callUeFunc({f:"addEventListener",p:{et:e,eid:n}});const s=()=>{this.callUeFunc({f:"removeEventListener",p:{eid:n}})},i=this._ueEvent.don(o=>{o.et===e&&o.eid===n&&t(o)});return()=>{i(),s()}}}function au(r){let A="";const e=new Uint8Array(r),t=e.length;for(let n=0;n<t;n++)A+=String.fromCharCode(e[n]);return btoa(A)}const lu=r=>{const A={type:"input",inputdata:au(r)};return JSON.stringify(A)};function cu(r){return typeof r=="string"?document.getElementById(r):r}window.g_emitDescriptor_maxBytes=3e4,console.log("全局可设置消息体最大字节, window.g_emitDescriptor_maxBytes 默认 30000 。");let du=-1;$a.SetLoggerVerbosity(1);class uu extends w.Destroyable{constructor(e,t){super();C(this,"debug",!1);C(this,"_error",this.dv(new w.Event));C(this,"_connected",this.dv(new w.Event));C(this,"_ueevent",this.dv(new w.Event));C(this,"_pixelStream");C(this,"uiInteractionCallbacks",new Map);this._container=e,this._option=t;const n=new Ya({initialSettings:{HoveringMouse:!0,AutoPlayVideo:!0,AutoConnect:!0,StartVideoMuted:!1,SuppressBrowserKeys:!1,ss:this._option.ws},useUrlParams:!0});n.setFlagEnabled(pe.BrowserSendOffer,!1),n.setFlagEnabled(pe.HoveringMouseMode,!0),n.setFlagEnabled(pe.MatchViewportResolution,!0),n.setNumericSetting(Za.MaxReconnectAttempts,0),this._pixelStream=new qa(n,{videoElementParent:this.container}),this.d(()=>{this._pixelStream.disconnect()});{const s=this.pixelStream.webSocketController.webSocket,i=this._pixelStream._webRtcController.sendMessageController.dataChannelSender.sendData;this._pixelStream._webRtcController.sendMessageController.dataChannelSender.constructor.prototype.sendData=function(o){s?s.send(lu(o)):i.call(this,o)}}{const s=i=>{const o=this._pixelStream._webRtcController.mouseController;setTimeout(()=>{const a=o.coordinateConverter.normalizeAndQuantizeUnsigned(i.offsetX,i.offsetY),c=o.toStreamerMessagesProvider.toStreamerHandlers.get("MouseUp");c&&c([i.button,a.x,a.y]),i.preventDefault()})};this.container.addEventListener("dblclick",s),this.d(()=>{this.container.removeEventListener("dblclick",s)})}["error","close","open"].forEach(i=>{const o=()=>{this.isDestroyed()||(i==="open"?this.connected.emit("webSocketOpen"):i==="close"?this.error.emit("webSocketClose"):i==="error"&&this.error.emit("webSocketError"))};this.pixelStream.webSocketController.webSocket.addEventListener(i,o),this.d(()=>{this.pixelStream.webSocketController.webSocket.removeEventListener(i,o)})}),["videoInitialized","webRtcConnected","webRtcDisconnected","webRtcFailed"].forEach(i=>{const o=()=>{this.isDestroyed()||(i==="webRtcConnected"||i==="videoInitialized"?this.connected.emit(i):(i==="webRtcDisconnected"||i==="webRtcFailed")&&(this.error.emit(i),this.pixelStream.disconnect()))};this.pixelStream.addEventListener(i,o),this.d(()=>{this.pixelStream.removeEventListener(i,o)})}),this.pixelStream.addResponseEventListener("handle_responses",s=>{this.processResponse(s)}),this.d(()=>{this.pixelStream.removeResponseEventListener("handle_responses")})}get error(){return this._error}get connected(){return this._connected}get ueevent(){return this._ueevent}get container(){return cu(this._container)}get pixelStream(){return this._pixelStream}get webSocketReady(){return this.pixelStream.webSocketController.webSocket.readyState===1}processResponse(e){if(this.debug??!1)try{const t=JSON.parse(e);console.group("%cUE => JS"," background-color:#006EFF;color:#ffffff;font-weight:bold;padding:4px;border-radius:5px;"),console.log(`%c${JSON.stringify(t,void 0,"")}`," border:1px dashed #006EFF;border-radius:5px;padding:10px;line-height:25px;color:#006EFF;"),console.groupEnd()}catch(t){console.error(`processResponse(${e}) error: ${t}`,t)}this.resolveCallback(e)||this.ueevent.emit(e)}emitUIInteractionForBigData(e,t){typeof t=="function"&&(e.callid=w.createGuid(),this.uiInteractionCallbacks.set(e.callid,t));const n=JSON.stringify(e),s=window.g_emitDescriptor_maxBytes??3e4,i=n.length,o=++du;if(i<s){const c={type:"earthsdk",time:new Date().getTime(),params:`${o}-0/1-`+n};this.sendData(JSON.stringify(c));return}const a=Math.ceil(i/s)|0;[...new Array(a).keys()].map(c=>n.slice(c*s,(c+1)*s)).forEach((c,u)=>{const d={type:"earthsdk",time:new Date().getTime(),params:`${o}-${u}/${a}-`+c};this.sendData(JSON.stringify(d))})}sendData(e){this.pixelStream.webSocketController.webSocket.send(e)}resolveCallback(e){let t={};try{t=JSON.parse(e)}catch{return!1}let n=t.callid;if(typeof n!="string"||!this.uiInteractionCallbacks.has(n))return!1;let s=this.uiInteractionCallbacks.get(n);return typeof s!="function"?!1:(s(t),this.uiInteractionCallbacks.delete(n),!0)}getVideoSize(){const e=this._pixelStream._webRtcController.videoPlayer.getVideoElement();return{width:e.videoWidth,height:e.videoHeight}}emitCommand(e){this.pixelStream.emitCommand(e)}emitUIInteraction(){console.log("emitUIInteraction 像素流初始化"),this.pixelStream.emitUIInteraction("像素流初始化")}resizeUEVideo(e,t){const n={Resolution:{Width:e,Height:t}};console.log(`resizeUEVideo emitCommand ${e} ${t} begin`),this.emitCommand(n)}}class hu extends w.Destroyable{constructor(e,t,n){super();C(this,"_instance");C(this,"_event",this.dv(new w.Event));this._container=e,this._wsuri=t,this._esmsgWsUri=n,this._instance=this.dv(new uu(this._container,{ws:this._wsuri})),this.d(this._instance.connected.don(s=>{this._event.emit(s,s),console.log(`%c[EarthSDK] ${s}`,"background: #a6ec99; color: black")})),this.d(this._instance.error.don(s=>{this._event.emit("errorEvent",s),console.log(`%c[EarthSDK] ${s}`,"background: red; color: black")})),this.d(this._instance.ueevent.don(s=>{this._event.emit("ueevent",s)}))}get instance(){return this._instance}get event(){return this._event}get debug(){return this._instance.debug}set debug(e){this._instance.debug=e}emitUIInteractionForBigData(e,t){return new Promise((n,s)=>{const i=(...o)=>{n(o),t&&t(...o)};try{this._instance.emitUIInteractionForBigData(e,i)}catch(o){console.warn(`emitUIInteraction发生错误:${o}`),s(o)}})}getVideoSize(){return this._instance.getVideoSize()}resize(e,t){this._instance.resizeUEVideo(e,t)}}class gu extends Ve{constructor(e,t,n,s){super();C(this,"_videoInitialized",this.dv(w.react(!1)));C(this,"_webRtcConnected",this.dv(w.react(!1)));C(this,"_webSocketOpen",this.dv(w.react(!1)));C(this,"_ue5ViewerWrapper");C(this,"_ueFuncResultWithIdsEvent",this.dv(new w.Event));C(this,"_ueFuncWithIdAndResultCallbacks",[]);C(this,"_waitingUeFuncIdAndResultCallbacks",new Map);C(this,"_waitingUeCalls",new Set);C(this,"_ueEvent",this.dv(new w.Event));C(this,"_errorEvent",this.dv(new w.Event));C(this,"_readyEvent",this.dv(new w.Event));this._ueViewer=s,console.log("INNPSViewer init ! 以内置信令服务器模式启动!");const i=this._ueViewer,o=this.dv(new hu(e,t,n));this._ue5ViewerWrapper=o;{const d=()=>o.debug=i.debug??!1;d(),this.d(i.debugChanged.don(d))}{let d=!1;const B=this.dv(w.createNextAnimateFrameEvent(this._videoInitialized.changed,this._webRtcConnected.changed,this._webSocketOpen.changed));this.d(B.don(()=>{if(d)return;const g=this._ue5ViewerWrapper.instance.webSocketReady;if(this.videoInitialized&&this.webRtcConnected&&g){this._ue5ViewerWrapper.instance.emitUIInteraction(),this._readyEvent.emit(),d=!0,console.log("%c[EarthSDK videoInitialized && webRtcConnected && webSocketReady]","background: #a6ec99; color: black");const f={eventType:"init",params:{}};this._ue5ViewerWrapper.emitUIInteractionForBigData(f)}else console.warn("webSocketReady",g),d=!1}))}this.d(o.event.don((d,B)=>{if(d==="errorEvent")this._errorEvent.emit(B);else if(d==="videoInitialized")this._videoInitialized.value=!0;else if(d==="webRtcConnected")this._webRtcConnected.value=!0;else if(d==="webSocketOpen")this._webSocketOpen.value=!0;else if(d==="ueevent"){const g=JSON.parse(B);if(g.t==="cr"){const f=g;if(f.frs&&this._ueFuncResultWithIdsEvent.emit(f.frs),f.ers)for(let m of f.ers)this._ueEvent.emit(m)}}}));{const d=this.dv(w.createAnimateFrame());let B,g,f;d.start(()=>{if(B!==e.offsetWidth||g!==e.offsetHeight||f!==i.resolutionScale){if(B=e.offsetWidth,g=e.offsetHeight,B===void 0||g===void 0||!Number.isFinite(B)||!Number.isFinite(g)||B<0||g<0){console.warn(`lastWidth === undefined || lastHeight === undefined || !Number.isFinite(lastWidth) || !Number.isFinite(lastHeight) || lastWidth < 0 || lastHeight < 0 ${B} ${g}`);return}f=i.resolutionScale,o.resize(B/f,g/f)}})}this.d(this._ueFuncResultWithIdsEvent.don(d=>{for(const B of d){const g=this._waitingUeFuncIdAndResultCallbacks.get(B.fid);g&&(this._waitingUeFuncIdAndResultCallbacks.delete(B.fid),g.resultCallback(B.r))}}));let a=0;const l=d=>{const B={n:a++,tt:Date.now(),t:"c",fs:d};this._waitingUeCalls.add(B),i.debug&&(console.group("%cxe2 => ue"," background-color:green;color:#ffffff;font-weight:bold;padding:4px;border-radius:5px;"),console.log(`%c${JSON.stringify(B,void 0,"")}`," border:1px dashed green;border-radius:5px;padding:10px;line-height:25px;color:green;"),console.groupEnd()),this._ue5ViewerWrapper.emitUIInteractionForBigData(B,()=>{this._waitingUeCalls.delete(B)})},c=()=>{if(!this._ue5ViewerWrapper.instance.webSocketReady||this._ueFuncWithIdAndResultCallbacks.length===0)return;const B=this._ueFuncWithIdAndResultCallbacks.map(([g])=>g);for(const[g,f]of this._ueFuncWithIdAndResultCallbacks)this._waitingUeFuncIdAndResultCallbacks.set(g.fid,f);this._ueFuncWithIdAndResultCallbacks.length=0;{const g=window.g_emitDescriptor_maxBytes,f=B.map(L=>({f:L,s:JSON.stringify(L).length}));let m=f.length,F=0,Q=0,y=[];do{do{const{f:L,s:I}=f[F];if(y.push(L),++F,Q+I>g||y.length>=20)break}while(F<m);y.length>0&&(i.debug&&console.log(`传送${y.length}条消息...`),l([...y]),y.length=0,Q=0)}while(F<m)}};this.dv(w.createInterval()).start(c,50),this.d(()=>console.log("UeCloudViewer正在销毁..."))}get videoInitialized(){return this._videoInitialized.value}get webRtcConnected(){return this._webRtcConnected.value}get webSocketOpen(){return this._webSocketOpen.value}get ue5ViewerWrapper(){return this._ue5ViewerWrapper}get errorEvent(){return this._errorEvent}get readyEvent(){return this._readyEvent}resize(e,t){this.ue5ViewerWrapper.resize(e,t)}callUeFunc(e){return new Promise(t=>{const s={fid:w.createGuid(),...e};this._ueFuncWithIdAndResultCallbacks.push([s,{timeStamp:Date.now(),ueFunc:e,resultCallback:t}])})}disposableOnUeEvent(e,t){const n=w.createGuid();this.callUeFunc({f:"addEventListener",p:{et:e,eid:n}});const s=()=>{this.callUeFunc({f:"removeEventListener",p:{eid:n}})},i=this._ueEvent.don(o=>{o.et===e&&o.eid===n&&t(o)});return()=>{i(),s()}}}class Bu extends w.Destroyable{constructor(e,t,n,s){super();C(this,"_onRuntimeInitialized",this.dv(new w.Event));C(this,"_vIframe",null);this._ueViewer=s;const i=this._ueViewer;{const o=document.createElement("iframe");this._vIframe=o,o.style.cssText="width: 100%; height: 100%; margin: 0; padding: 0; border: none; outline: none;",e.appendChild(o),this.d(()=>{o&&e.removeChild(o)});const a=p.ESSceneObject.getStrFromEnv(n+`/web/${t}.html`);o.src=a,o.onload=()=>{const l=o.contentWindow;if(!l){console.error("iframeWindow is null");return}console.log("iwindow.Module",l.Module),l.Module.onRuntimeInitialized=()=>{this._onRuntimeInitialized.emit(),i.setStatus("Created"),i.setStatusLog("创建成功"),l.Module.UE4_resizeCanvas(),l.console.log("创建成功__________________________________________")}}}}get onRuntimeInitialized(){return this._onRuntimeInitialized}get vIframe(){return this._vIframe}}const ja=typeof TextDecoder<"u"?new TextDecoder:void 0,fu=(r,A=0,e=NaN)=>{const t=A+e;let n=A;for(;r[n]&&!(n>=t);)++n;if(n-A>16&&r.buffer&&ja)return ja.decode(r.subarray(A,n));let s="";for(;A<n;){var i=r[A++];if(!(i&128)){s+=String.fromCharCode(i);continue}var o=r[A++]&63;if((i&224)==192){s+=String.fromCharCode((i&31)<<6|o);continue}var a=r[A++]&63;if((i&240)==224?i=(i&15)<<12|o<<6|a:((i&248)!=240&&console.warn("Invalid UTF-8 leading byte encountered when deserializing a UTF-8 string in wasm memory to a JS string!"),i=(i&7)<<18|o<<12|a<<6|r[A++]&63),i<65536)s+=String.fromCharCode(i);else{var l=i-65536;s+=String.fromCharCode(55296|l>>10,56320|l&1023)}}return s};class wu extends w.Destroyable{constructor(A,e,t){super();{const n=()=>{const a=Qn(e);e.setGlobalProperty(a)};n();const s=mr(),i=[];s.forEach(a=>{const l=e[a+"Changed"];i.push(l)});const o=this.dv(w.createNextAnimateFrameEvent(...i));this.d(o.don(n))}this.d(e.propChanged.don(n=>{if(n.objId==="")try{Object.keys(n.props).forEach(s=>{const i=n.props[s]===null?void 0:n.props[s];e[s]=i})}catch(s){console.error("ueViewer propChanged:"+s)}})),e.useCustomInteraction=!1,this.dv(new p.ViewerCustomInteraction(e,A)),this.dv(new w.ObjResettingWithEvent(e.statusUpdateIntervalChanged,n=>{if((e.statusUpdateInterval??.5)===0)return;const i=new w.Destroyable;return i.d(t.disposableOnUeEvent("statusUpdate",o=>{e.statusUpdateEvent.emit(o)})),i})),this.dv(new w.ObjResettingWithEvent(e.propChangedListeningChanged,()=>{if(!(e.propChangedListening??!0))return;const s=new w.Destroyable;return s.d(t.disposableOnUeEvent("propChanged",i=>{e.propChanged.emit(i)})),s})),this.dv(new w.ObjResettingWithEvent(e.objectEventListeningChanged,()=>{if(!(e.objectEventListening??!0))return;const s=new w.Destroyable;return s.d(t.disposableOnUeEvent("objectEvent",i=>{e.objectEvent.emit(i)})),s})),this.dv(new w.ObjResettingWithEvent(e.widgetEventListeningChanged,()=>{if(!(e.widgetEventListening??!0))return;const s=new w.Destroyable;return s.d(t.disposableOnUeEvent("widgetEvent",i=>{e.widgetEvent.emit(i)})),s})),this.dv(new w.ObjResettingWithEvent(e.speechRecognitionListeningChanged,()=>{if(!(e.speechRecognitionListening??!0))return;const s=new w.Destroyable;return s.d(t.disposableOnUeEvent("speechRecognition",i=>{e.speechRecognition.emit(i)})),s})),this.dv(new w.ObjResettingWithEvent(e.customMessageListeningChanged,()=>{if(!(e.customMessageListening??!0))return;const s=new w.Destroyable;return s.d(t.disposableOnUeEvent("customMessage",i=>{e.customMessage.emit(i)})),s})),this.dv(new w.ObjResettingWithEvent(e.editingEventListeningChanged,()=>{if(!(e.editingEventListening??!0))return;const s=new w.Destroyable;return s.d(t.disposableOnUeEvent("editingEvent",i=>{i.objectIDs=i.objectIDs.map(o=>{var a;return((a=p.ESSceneObject.getSceneObjById(o))==null?void 0:a.parentID)??o}),e.editingEvent.emit(i)})),s})),this.ad(t.disposableOnUeEvent("cameraChanged",()=>{e.cameraChanged.emit()}))}}let pu=-1;class Cu extends Ve{constructor(e,t,n="${earthsdk3-ue-h5-assets-script-dir}",s){super();C(this,"_ueFuncResultWithIdsEvent",this.dv(new w.Event));C(this,"_ueFuncWithIdAndResultCallbacks",[]);C(this,"_waitingUeFuncIdAndResultCallbacks",new Map);C(this,"_waitingUeCalls",new Map);C(this,"_ueEvent",this.dv(new w.Event));this._ueViewer=s;const i=this._ueViewer,o=this.dv(new Bu(e,t,n,i));let a=!1,l=null;this.d(o.onRuntimeInitialized.don(()=>{var B;if(a=!0,(B=o==null?void 0:o.vIframe)!=null&&B.contentWindow){l=o.vIframe.contentWindow;const g=o.vIframe.contentWindow.document.getElementById("mainarea");g?this.dv(new wu(g,i,this)):console.error("h5Container is null")}else{console.error("iframeWindow is null");return}l.UE_JSHTML5Communication?l.UE_JSHTML5Communication.UESendMessageToJS=g=>{try{const f=fu(l.HEAPU8,g),m=JSON.parse(f);if(i.debug&&(console.group("%cUE => JS"," background-color:#006EFF;color:#ffffff;font-weight:bold;padding:4px;border-radius:5px;"),console.log(`%c${JSON.stringify(m,void 0,"")}`," border:1px dashed #006EFF;border-radius:5px;padding:10px;line-height:25px;color:#006EFF;"),console.groupEnd()),m.t==="cr"){const F=m;if(F.frs&&this._ueFuncResultWithIdsEvent.emit(F.frs),F.ers)for(let Q of F.ers)this._ueEvent.emit(Q)}m.callid&&this._waitingUeCalls.has(m.callid)&&(this._waitingUeCalls.delete(m.callid),console.log(`waitingUeCalls.delete:${m.callid} end`))}catch(f){console.error("UE_JSHTML5Communication.UESendMessageToJS error:",f)}}:console.error("UE_JSHTML5Communication UESendMessageToJS not found")})),this.dispose(this._ueFuncResultWithIdsEvent.disposableOn(B=>{for(const g of B){const f=this._waitingUeFuncIdAndResultCallbacks.get(g.fid);f&&(this._waitingUeFuncIdAndResultCallbacks.delete(g.fid),f(g.r))}}));let c=0;const u=()=>{if(!a||!l||!l.UE_JSHTML5Communication||!l.UE_JSHTML5Communication.JSSendMessageToUE||this._ueFuncWithIdAndResultCallbacks.length===0)return;const B=this._ueFuncWithIdAndResultCallbacks.map(([I])=>I),g={n:c++,tt:Date.now(),t:"c",fs:B,callid:w.createGuid()};for(const[I,E]of this._ueFuncWithIdAndResultCallbacks)this._waitingUeFuncIdAndResultCallbacks.set(I.fid,E);this._ueFuncWithIdAndResultCallbacks.length=0,this._waitingUeCalls.set(g.callid,g),i.debug&&(console.group("%cxe2 => ue"," background-color:green;color:#ffffff;font-weight:bold;padding:4px;border-radius:5px;"),console.log(`%c${JSON.stringify(g,void 0,"")}`," border:1px dashed green;border-radius:5px;padding:10px;line-height:25px;color:green;"),console.groupEnd());const f=JSON.stringify(g),m=window.g_emitDescriptor_maxBytes??3e4,F=f.length,Q=++pu;if(F<m){const I=`${Q}-0/1-`+f;l.UE_JSHTML5Communication.JSSendMessageToUE(I);return}const y=Math.ceil(F/m)|0;[...new Array(y).keys()].map(I=>f.slice(I*m,(I+1)*m)).forEach((I,E)=>{const R=`${Q}-${E}/${y}-`+I;l.UE_JSHTML5Communication.JSSendMessageToUE(R)})};this.dv(w.createInterval()).start(u,50)}processResponse(e){if(this._ueViewer.debug??!1)try{const t=JSON.parse(e);console.group("%cUE => JS"," background-color:#006EFF;color:#ffffff;font-weight:bold;padding:4px;border-radius:5px;"),console.log(`%c${JSON.stringify(t,void 0,"")}`," border:1px dashed #006EFF;border-radius:5px;padding:10px;line-height:25px;color:#006EFF;"),console.groupEnd()}catch(t){console.error(`processResponse(${e}) error: ${t}`,t)}}callUeFunc(e){return new Promise(t=>{const s={fid:w.createGuid(),...e};this._ueFuncWithIdAndResultCallbacks.push([s,t])})}disposableOnUeEvent(e,t){const n=w.createGuid();this.callUeFunc({f:"addEventListener",p:{et:e,eid:n}});const s=()=>{this.callUeFunc({f:"removeEventListener",p:{eid:n}})},i=this._ueEvent.disposableOn(o=>{o.et===e&&o.eid===n&&((this._ueViewer.debug??!1)&&console.log(`callback, type:${e} eid:${n} ueEvent:${JSON.stringify(o)}`),t(o))});return()=>{i(),s()}}}let vu=-1;class mu extends Ve{constructor(e,t){super();C(this,"_ueFuncResultWithIdsEvent",this.dv(new w.Event));C(this,"_ueFuncWithIdAndResultCallbacks",[]);C(this,"_waitingUeFuncIdAndResultCallbacks",new Map);C(this,"_waitingUeCalls",new Set);C(this,"_ueEvent",this.dv(new w.Event));this._ueViewer=t;const n=this._ueViewer;let s=!1;const i={eventType:"init",params:{}};window.ue.es.oncommand(JSON.stringify(i)),s=!0,window.calljs=(c,u)=>{if(n.debug&&console.log(`calljs eventName:${c} eventDetailStr:${u}`),c==="ueevent"||c==="commanFinish")try{const d=JSON.parse(u);if(d.t==="cr"){const B=d;if(B.frs&&this._ueFuncResultWithIdsEvent.emit(B.frs),B.ers)for(let g of B.ers)this._ueEvent.emit(g)}}catch(d){console.error(d)}},this.dispose(this._ueFuncResultWithIdsEvent.disposableOn(c=>{for(const u of c){const d=this._waitingUeFuncIdAndResultCallbacks.get(u.fid);d&&(this._waitingUeFuncIdAndResultCallbacks.delete(u.fid),d(u.r))}}));let o=0;const a=()=>{if(!s||this._ueFuncWithIdAndResultCallbacks.length===0)return;const c=this._ueFuncWithIdAndResultCallbacks.map(([B])=>B),u={n:o++,tt:Date.now(),t:"c",fs:c};for(const[B,g]of this._ueFuncWithIdAndResultCallbacks)this._waitingUeFuncIdAndResultCallbacks.set(B.fid,g);this._ueFuncWithIdAndResultCallbacks.length=0,this._waitingUeCalls.add(u),n.debug&&(console.group("%cxe2 => ue"," background-color:green;color:#ffffff;font-weight:bold;padding:4px;border-radius:5px;"),console.log(`%c${JSON.stringify(u,void 0,"")}`," border:1px dashed green;border-radius:5px;padding:10px;line-height:25px;color:green;"),console.groupEnd());const d=++vu;window.ue.es.oncommand(`${d}-0/1-`+JSON.stringify(u)).then(()=>{this._waitingUeCalls.delete(u)})};this.dv(w.createInterval()).start(a,50)}callUeFunc(e){return new Promise(t=>{const s={fid:w.createGuid(),...e};this._ueFuncWithIdAndResultCallbacks.push([s,t])})}disposableOnUeEvent(e,t){const n=w.createGuid();this.callUeFunc({f:"addEventListener",p:{et:e,eid:n}});const s=()=>{this.callUeFunc({f:"removeEventListener",p:{eid:n}})},i=this._ueEvent.disposableOn(o=>{o.et===e&&o.eid===n&&((this._ueViewer.debug??!1)&&console.log(`callback, type:${e} eid:${n} ueEvent:${JSON.stringify(o)}`),t(o))});return()=>{i(),s()}}}class Fu extends w.Destroyable{constructor(A,e){super();{const t=()=>{const o=Qn(A);A.setGlobalProperty(o)};t();const n=mr(),s=[];n.forEach(o=>{const a=A[o+"Changed"];s.push(a)});const i=this.dv(w.createNextAnimateFrameEvent(...s));this.d(i.don(t))}this.d(A.propChanged.don(t=>{if(t.objId==="")try{Object.keys(t.props).forEach(n=>{const s=t.props[n]===null?void 0:t.props[n];A[n]=s})}catch(n){console.error("ueViewer propChanged:"+n)}})),this.dv(new w.ObjResettingWithEvent(A.statusUpdateIntervalChanged,t=>{if((A.statusUpdateInterval??.5)===0)return;const s=new w.Destroyable;return s.d(e.disposableOnUeEvent("statusUpdate",i=>{A.statusUpdateEvent.emit(i)})),s})),this.dv(new w.ObjResettingWithEvent(A.propChangedListeningChanged,()=>{if(!(A.propChangedListening??!0))return;const n=new w.Destroyable;return n.d(e.disposableOnUeEvent("propChanged",s=>{A.propChanged.emit(s)})),n})),this.dv(new w.ObjResettingWithEvent(A.objectEventListeningChanged,()=>{if(!(A.objectEventListening??!0))return;const n=new w.Destroyable;return n.d(e.disposableOnUeEvent("objectEvent",s=>{A.objectEvent.emit(s)})),n})),this.dv(new w.ObjResettingWithEvent(A.widgetEventListeningChanged,()=>{if(!(A.widgetEventListening??!0))return;const n=new w.Destroyable;return n.d(e.disposableOnUeEvent("widgetEvent",s=>{A.widgetEvent.emit(s)})),n})),this.dv(new w.ObjResettingWithEvent(A.speechRecognitionListeningChanged,()=>{if(!(A.speechRecognitionListening??!0))return;const n=new w.Destroyable;return n.d(e.disposableOnUeEvent("speechRecognition",s=>{A.speechRecognition.emit(s)})),n})),this.dv(new w.ObjResettingWithEvent(A.customMessageListeningChanged,()=>{if(!(A.customMessageListening??!0))return;const n=new w.Destroyable;return n.d(e.disposableOnUeEvent("customMessage",s=>{A.customMessage.emit(s)})),n})),this.dv(new w.ObjResettingWithEvent(A.editingEventListeningChanged,()=>{if(!(A.editingEventListening??!0))return;const n=new w.Destroyable;return n.d(e.disposableOnUeEvent("editingEvent",s=>{s.objectIDs=s.objectIDs.map(i=>{var o;return((o=p.ESSceneObject.getSceneObjById(i))==null?void 0:o.parentID)??i}),A.editingEvent.emit(s)})),n})),this.ad(e.disposableOnUeEvent("cameraChanged",()=>{A.cameraChanged.emit()}))}}class Qu extends w.Destroyable{constructor(A,e,t){super();{const s=()=>{const l=Qn(e);e.setGlobalProperty(l)};s();const i=mr(),o=[];i.forEach(l=>{const c=e[l+"Changed"];o.push(c)});const a=this.dv(w.createNextAnimateFrameEvent(...o));this.d(a.don(s))}this.d(e.propChanged.don(s=>{if(s.objId==="")try{Object.keys(s.props).forEach(i=>{const o=s.props[i]===null?void 0:s.props[i];e[i]=o})}catch(i){console.error("ueViewer propChanged:"+i)}}));const n=document.createElement("div");n.style.width="100%",n.style.height="100%",n.style.position="absolute",n.style.overflow="hidden",n.style.top="0",n.style.left="0",n.style.zIndex="0",n.style.backgroundColor="rgba(255,0,0,0)",n.setAttribute("masker","大屏顶层div,用于模拟鼠标事件和控制UE鼠标事件是否生效"),A.appendChild(n),this.d(()=>{n&&A&&A.removeChild(n)});{const s=(l,c)=>{window.ue.esinput.setinterceptevent(c),l.preventDefault()},i=l=>{s(l,!1)},o=l=>{s(l,!0)},a=l=>{s(l,!1)};n.addEventListener("mouseenter",i),n.addEventListener("mouseleave",o),n.addEventListener("mousemove",a),this.d(()=>{n.removeEventListener("mouseenter",i),n.removeEventListener("mouseleave",o),n.removeEventListener("mousemove",a)})}e.useCustomInteraction=!1,this.dv(new p.ViewerCustomInteraction(e,n)),this.dv(new w.ObjResettingWithEvent(e.statusUpdateIntervalChanged,s=>{if((e.statusUpdateInterval??.5)===0)return;const o=new w.Destroyable;return o.d(t.disposableOnUeEvent("statusUpdate",a=>{e.statusUpdateEvent.emit(a)})),o})),this.dv(new w.ObjResettingWithEvent(e.propChangedListeningChanged,()=>{if(!(e.propChangedListening??!0))return;const i=new w.Destroyable;return i.d(t.disposableOnUeEvent("propChanged",o=>{e.propChanged.emit(o)})),i})),this.dv(new w.ObjResettingWithEvent(e.objectEventListeningChanged,()=>{if(!(e.objectEventListening??!0))return;const i=new w.Destroyable;return i.d(t.disposableOnUeEvent("objectEvent",o=>{e.objectEvent.emit(o)})),i})),this.dv(new w.ObjResettingWithEvent(e.widgetEventListeningChanged,()=>{if(!(e.widgetEventListening??!0))return;const i=new w.Destroyable;return i.d(t.disposableOnUeEvent("widgetEvent",o=>{e.widgetEvent.emit(o)})),i})),this.dv(new w.ObjResettingWithEvent(e.speechRecognitionListeningChanged,()=>{if(!(e.speechRecognitionListening??!0))return;const i=new w.Destroyable;return i.d(t.disposableOnUeEvent("speechRecognition",o=>{e.speechRecognition.emit(o)})),i})),this.dv(new w.ObjResettingWithEvent(e.customMessageListeningChanged,()=>{if(!(e.customMessageListening??!0))return;const i=new w.Destroyable;return i.d(t.disposableOnUeEvent("customMessage",o=>{e.customMessage.emit(o)})),i})),this.dv(new w.ObjResettingWithEvent(e.editingEventListeningChanged,()=>{if(!(e.editingEventListening??!0))return;const i=new w.Destroyable;return i.d(t.disposableOnUeEvent("editingEvent",o=>{o.objectIDs=o.objectIDs.map(a=>{var l;return((l=p.ESSceneObject.getSceneObjById(a))==null?void 0:l.parentID)??a}),e.editingEvent.emit(o)})),i})),this.ad(t.disposableOnUeEvent("cameraChanged",()=>{e.cameraChanged.emit()}))}}class Uu extends w.Destroyable{constructor(e,t,n){super();C(this,"_reconnectEvent",this.dv(new w.Event));const s=(u,d)=>u.hasOwnProperty(d);let i=0,o;this.d(()=>{o&&clearTimeout(o)});const l=new URLSearchParams(window.location.search).get("eswebview")==="true",c=()=>{if(window.ue.esinput){n.setStatus("Creating"),console.log("存在(window.ue && window.ue.es && window.ue.esinput 需要适配新版ESWebView 鼠标穿透), 开始创建UeFalseCloudViewer..."),n.setStatusLog("开始创建本地视口...");const u=this.dv(new mu(e,n));this.d(()=>n.viewer=void 0),n.viewer=u,n.setStatus("Created"),n.setStatusLog("本地视口创建成功!"),this.dv(new Qu(e,n,u))}else n.setStatus("Error"),n.setStatusLog("请升级 ESWebView !"),this.d(()=>n.viewer=void 0),n.viewer=void 0};if(window.ue&&window.ue.es)c();else if(l){const u=setInterval(()=>{window.ue&&window.ue.es&&(clearInterval(u),c())},200)}else if(s(t.options,"ws")||s(t.options,"uri")&&s(t.options,"app")){n.setStatus("Creating"),n.setStatusLog("开始创建云渲染视口...");let u;this.d(()=>{n.setStatus("Raw"),n.setStatusLog(""),e&&u&&e.removeChild(u)&&(u=void 0)});const d=this.dv(w.createProcessingFromAsyncFunc(async B=>{n.viewer&&!n.viewer.isDestroyed()&&n.viewer.destroy(),n.viewer=void 0,u&&e.removeChild(u)&&(u=void 0),u=document.createElement("div"),u.setAttribute("earthsdk3-ue","earthsdk3-ue-videoContainer"),u.style.cssText="position:relative; height: 100%;width:100%;",e.appendChild(u);let g,f,m;if(s(t.options,"ws")){const{ws:L,esmsg:I,uselnternalSignallingServer:E}=t.options;g=L,f=I,m=E??!1}if(s(t.options,"uri")&&s(t.options,"app")){const{offsetWidth:L,offsetHeight:I}=u;let{uri:E,app:R,token:P}=t.options;E.endsWith("/")||(E+="/");const D=P?`?essstoken=${P}`:"",W=`/${R}/${L??1920}/${I??1080}`+D;console.log(`请求信令服务器: ${E}instance${W}`);const oA=await B.promise(fetch(`${E}instance${W}`,{method:"GET"})),$=await B.promise(oA.json());if($&&$.status!=="ok"){n.setStatus("Error"),n.setStatusLog(`信令服务器请求失败 ${$.status}`),this._reconnectEvent.emit(void 0);return}else{console.log(`信令服务器请求成功! ${JSON.stringify($,void 0," ")}`),await w.sleep(2e3);const{server:G,esmsg:j,instanceId:IA,useInternalSignallingServer:aA}=$;if(!IA){n.setStatus("Error"),n.setStatusLog("检查信令服务器版本,返回数据错误! "),console.log("信令服务器返回数据错误!不包含instanceId!请升级到 ESSS V3.0+ 版本!"),this._reconnectEvent.emit(void 0);return}g=G,f=j,m=aA??!1,n.esssResponse=$}}const F=this.dv(m?new gu(u,g,f,n):new ou(u,g,f,n));this.d(()=>n.viewer=void 0),this.d(F.errorEvent.don(L=>{const I=`[${L}]:像素流连接错误!`;n.setStatus("Error"),n.setStatusLog(I),this._reconnectEvent.emit(F)})),await B.promise(new Promise(L=>this.d(F.readyEvent.donce(L)))),n.setStatus("Created"),n.setStatusLog("云渲染视口创建成功!"),i=0,o&&clearTimeout(o),o=void 0;const{offsetWidth:Q,offsetHeight:y}=u;F.resize(Q*window.devicePixelRatio,y*window.devicePixelRatio),n.viewer=F,this.d(()=>n.viewer=void 0),this.dv(new Fu(n,F))}));d.start(),this.d(this._reconnectEvent.don(B=>{o===void 0&&(B&&!B.isDestroyed()&&B.destroy(),n.viewer&&!n.viewer.isDestroyed()&&n.viewer.destroy(),n.viewer=void 0,n.autoReconnect&&(n.setStatus("Reconnecting"),n.setStatusLog("正在尝试重新连接..."),i=i+5e3>3e4?3e4:i+5e3,console.warn(`间隔:${i/1e3}s,正在尝试重新连接...`),o=window.setTimeout(()=>{d.restart()},i)))})),this.d(d.errorEvent.don(B=>{n.setStatus("Error"),n.setStatusLog("云渲染视口创建失败!"),console.warn("云渲染视口创建失败!",B),this._reconnectEvent.emit(void 0)}))}else if(s(t.options,"project")){const u=t,d=u.options.project,B=u.options.baseUrl;n.setStatus("Creating"),n.setStatusLog("下载编译中...");const g=this.dv(new Cu(e,d,B,n));n.viewer=g,this.d(()=>n.viewer=void 0)}else n.setStatus("Error"),n.setStatusLog("视口创建失败!"),console.warn("视口创建失败: 参数错误!")}}const se=class se extends p.ESViewer{constructor(e){super(e);C(this,"_viewer",this.dv(w.react(void 0)));C(this,"_esssResponse");C(this,"_speechRecognition",this.dv(new w.Event));C(this,"_propChanged",this.dv(new w.Event));C(this,"_objectEvent",this.dv(new w.Event));C(this,"_widgetEvent",this.dv(new w.Event));C(this,"_customMessage",this.dv(new w.Event));C(this,"_statusUpdateEvent",this.dv(new w.Event));C(this,"_statusUpdateEventdon",(()=>{this.d(this.statusUpdateEvent.don(e=>{this._statusInfo.fps=e.FPS??0,this._statusInfo.length=e.length??0,this._statusInfo.position=e.position??[0,0,0],this._statusInfo.rotation=e.rotation??[0,0,0]}))})());if(e.type!=="ESUeViewer")throw new Error("option.type must be ESUeViewer");const t=e;this.d(this._viewer.changed.don(()=>{this.viewerChanged.emit(this.viewer)})),this.dv(new w.ObjResettingWithEvent(this.subContainerChanged,()=>{if(this.setStatus("Raw"),this.setStatusLog(""),!!this.subContainer)return new Uu(this.subContainer,t,this)}))}get defaultProps(){return se.createDefaultProps()}set viewer(e){this._viewer.value=e}get viewer(){return this._viewer.value}get esssResponse(){return this._esssResponse}set esssResponse(e){this._esssResponse=e}get speechRecognition(){return this._speechRecognition}get propChanged(){return this._propChanged}get objectEvent(){return this._objectEvent}get widgetEvent(){return this._widgetEvent}get customMessage(){return this._customMessage}get statusUpdateEvent(){return this._statusUpdateEvent}async uePositionToLonLatAlt(e){if(!this.viewer){console.warn("UEPositionToLonLatAlt: viewer is undefined");return}return await Co(this.viewer,e)}async changeNavigationMode(e){if(!this.viewer){console.warn("ChangeNavigationMode: viewer is undefined");return}const t=await HA(this.viewer,e);return t&&!t.error&&(this._navigationMode.value=e.mode),t}async resetWithCurrentCamera(e){if(!this.viewer){console.warn("resetWithCurrentCamera: viewer is undefined");return}return await En(this.viewer,e)}async getAllSocketNamesByActorTag(e){if(!this.viewer){console.warn("GetAllSocketNamesByActorTag: viewer is undefined");return}return await vo(this.viewer,e)}async getBoundSphere(e){if(!this.viewer){console.warn("getBoundSphere: viewer is undefined");return}return await Fo(this.viewer,e)}async getBoundSphereWithChildren(e){if(!this.viewer){console.warn("getBoundSphereWithChildren: viewer is undefined");return}return await Qo(this.viewer,e)}async getStrokeMaterialParamInfo(e){if(!this.viewer){console.warn("GetStrokeMaterialParamInfo: viewer is undefined");return}return await Uo(this.viewer,e)}async getFillMaterialParamInfo(e){if(!this.viewer){console.warn("getFillMaterialParamInfo: viewer is undefined");return}return await Eo(this.viewer,e)}async getGlobalProperty(e){if(!this.viewer){console.warn("getGlobalProperty: viewer is undefined");return}return await yo(this.viewer,e)}async getObjectByInfo(e){if(!this.viewer){console.warn("GetObjectByInfo: viewer is undefined");return}return await So(this.viewer,e)}async defaultCameraFlyIn(e=1){if(!this.viewer){console.warn("DefaultCameraFlyIn: viewer is undefined");return}return await Zi(this.viewer,e)}async startVoice(){if(!this.viewer){console.warn("startVoice:viewer is undefined");return}return await qi(this.viewer)}async stopVoice(){if(!this.viewer){console.warn("startVoice:viewer is undefined");return}return await ji(this.viewer)}async mountPakFiles(e){if(!this.viewer){console.warn("mountPakFiles:viewer is undefined");return}return await Ao(this.viewer,e)}async generateMemReport(){if(!this.viewer){console.warn("generateMemReport:viewer is undefined");return}return await eo(this.viewer)}async quit(){if(!this.viewer){console.warn("Quit: viewer is undefined");return}return await co(this.viewer)}async bindActorByTag(e,t){if(!this.viewer){console.warn("BindActorByTag: viewer is undefined");return}return await Io(this.viewer,e,t)}async restoreOriginalScene(){if(!this.viewer){console.warn("RestoreOriginalScene: viewer is undefined");return}return await To(this.viewer)}async unBindActorByID(e){if(!this.viewer){console.warn("UnBindActorByID: viewer is undefined");return}return await Ho(this.viewer,e)}async unBindActorByTag(e){if(!this.viewer){console.warn("UnBindActorByTag: viewer is undefined");return}return await Lo(this.viewer,e)}async createActorByClass(e,t){if(!this.viewer){console.warn("CreateActorByClass: viewer is undefined");return}return await bo(this.viewer,e,t)}async bind3DTilesetByTag(e,t){if(!this.viewer){console.warn("Bind3DTilesetByTag: viewer is undefined");return}return await Mo(this.viewer,e,t)}async unBind3DTilesetByTag(e){if(!this.viewer){console.warn("UnBind3DTilesetByTag: viewer is undefined");return}return await Do(this.viewer,e)}async unBind3DTilesetById(e){if(!this.viewer){console.warn("UnBind3DTilesetById: viewer is undefined");return}return await Ro(this.viewer,e)}async bindImageryByTag(e,t,n){if(!this.viewer){console.warn("BindImageryByTag: viewer is undefined");return}return await Po(this.viewer,e,t,n)}async unBindImageryByTag(e,t){if(!this.viewer){console.warn("UnBindImageryByTag: viewer is undefined");return}return await Ko(this.viewer,e,t)}async unBindImageryById(e){if(!this.viewer){console.warn("UnBindImageryById: viewer is undefined");return}return await xo(this.viewer,e)}async getIdByComponentNameAndHitItem(e,t,n){if(!this.viewer){console.warn("GetIdByComponentNameAndHitItem: viewer is undefined");return}return await ko(this.viewer,e,t,n)}async getCameraRelativeHeight(e="ECC_Visibility"){if(!this.viewer){console.warn("GetCameraRelativeHeight: viewer is undefined");return}return await Go(this.viewer,e)}async saveStringToFile(e,t,n){if(!this.viewer){console.warn("SaveStringToFile: viewer is undefined");return}return await No(this.viewer,e,t,n)}async highlightActorByTag(e,t=!0){if(!this.viewer){console.warn("HighlightActorByTag: viewer is undefined");return}return await _o(this.viewer,e,t)}async sendCustomMessage(e){if(!this.viewer){console.warn("SendCustomMessage: viewer is undefined");return}return await Vo(this.viewer,e)}async getStatus(){if(!this.viewer){console.warn("GetStatus:viewer is undefined");return}return await Oo(this.viewer)}async getTilesetMaterialIDList(){if(!this.viewer){console.warn("GetTilesetMaterialIDList:viewer is undefined");return}return await zo(this.viewer)}async pick(e,t,n){if(!this.viewer)return;let s=e;if(e&&window.ue&&this.container){const[i,o]=e,{x:a,y:l}=this.container.getBoundingClientRect();s=[a+i,l+o]}return await uo(this.viewer,s,t,n)}async pickPosition(e){if(!this.viewer)return;let t=e;if(e&&window.ue&&this.container){const[n,s]=e,{x:i,y:o}=this.container.getBoundingClientRect();t=[i+n,o+s]}return await ho(this.viewer,t)}async quickPickPosition(e){return await this.pickPosition(e)}async getTerrainHeight(e){return await this.getHeightByLonLat(e[0],e[1])??void 0}async flyIn(e,t=[0,0,0],n=1,s="default"){if(!this.viewer)return;const i=await xe(this.viewer,void 0,e,t,n,s);if(i)return i.endType===0&&console.warn(`flyTo:flyTo is end! endType:${i.endType}`),i.endType===1&&console.warn(`flyTo:飞行中断! endType:${i.endType}`),i}async flyTo(e,t,n="default"){if(!this.viewer)return;const s=await Be(this.viewer,void 0,void 0,e,t,n);if(s)return s.endType===0&&console.warn(`flyTo:flyTo is end! endType:${s.endType}`),s.endType===1&&console.warn(`flyTo:飞行中断! endType:${s.endType}`),s}flyToBoundingSphere(e,t,n=1){const s=[[e[0],e[1],0],[e[0],e[3],0],[e[2],e[3],0],[e[2],e[1],0]],i=p.getGeoBoundingSphereFromPositions(s);if(!i)return;const{center:o,radius:a}=i,l={distance:t??a,heading:0,pitch:-90,flyDuration:n,hDelta:0,pDelta:0};this.flyTo(l,o)}getCurrentCameraInfo(){const{position:e,rotation:t}=this._statusInfo;return{position:e,rotation:t}}getLengthInPixel(){return this._statusInfo.length}async changeToWalk(e,t=4.2,n=1.6){if(!this.viewer)return;const s={mode:"Walk",position:e,jumpZVelocity:t,eyeHeight:n},i=await HA(this.viewer,s);return i&&!i.error&&(this._navigationMode.value=s.mode),i}async changeToMap(){if(!this.viewer)return;const e={mode:"Map"},t=await HA(this.viewer,e);return t&&!t.error&&(this._navigationMode.value=e.mode),t}async changeToRotateGlobe(e=38,t=1e7,n=60){if(!this.viewer)return;const s={mode:"RotateGlobe",latitude:e,height:t,cycleTime:n},i=await HA(this.viewer,s);return i&&!i.error&&(this._navigationMode.value=s.mode),i}async changeToLine(e,t=10,n=10,s=!0,i=10,o="auto"){if(!this.viewer)return;const a={mode:"Line",geoLineStringId:e,speed:t,heightOffset:n,loop:s,turnRateDPS:i,lineMode:o},l=await HA(this.viewer,a);return l&&!l.error&&(this._navigationMode.value=a.mode),l}async changeToUserDefined(e){if(!this.viewer)return;const t={mode:"UserDefined",userDefinedPawn:e},n=await HA(this.viewer,t);return n&&!n.error&&(this._navigationMode.value=t.mode),n}async changeToRotatePoint(e,t=5e4,n=60,s=0,i=-30){if(!this.viewer)return;const o={mode:"RotatePoint",position:e,distance:t,orbitPeriod:n,heading:s,pitch:i},a=await HA(this.viewer,o);return a&&!a.error&&(this._navigationMode.value=o.mode),a}async changeToFollow(e,t=0,n=0,s=-30,i=!0){if(!this.viewer)return;const o={mode:"Follow",objectId:e,distance:t,heading:n,pitch:s,relativeRotation:i},a=await HA(this.viewer,o);return a&&!a.error&&(this._navigationMode.value=o.mode),a}getFPS(){return this._statusInfo.fps}async getVersion(){const e=window.g_XE3CopyRights??{};if(!this.viewer)return e;const t=await mo(this.viewer);return e.esforue=t,e}async getHeightByLonLat(e,t,n="ECC_Visibility"){if(!this.viewer)return null;const s=await go(this.viewer,e,t,n);return s&&s.height!==void 0?s.height:null}async getHeightsByLonLats(e,t="ECC_Visibility"){return this.viewer?await Bo(this.viewer,e,t):void 0}async capture(e=64,t=64){return this.viewer?await fo(this.viewer,e,t):void 0}async partialCapture(e,t=[64,64]){if(!this.viewer){console.warn("partialCapture:viewer is undefined");return}return await wo(this.viewer,e,t)}async lonLatAltToScreenPosition(e){if(!this.viewer)return;const t=await po(this.viewer,e);return t&&[t.X,t.Y]}async setGlobalProperty(e){if(this.viewer)return await lo(this.viewer,e)}async startEditing(e,t,n){n=Object.assign({useKeyToSwitch:!0,callSource:"outer"},n);const s=e.components.main??e;if(!s||!this.viewer||t==null)return;const i=Array.isArray(t)?[...t]:[t];return s.editingID=`${n.callSource}_${w.createGuid()}`,await Wo(this.viewer,s.id,s.editingID,i,n.useKeyToSwitch)}async stopEditing(){if(this.viewer)return await Xo(this.viewer)}async moveObjects(e){if(!this.viewer)return;const t=[],n=w.createGuid();for(let s=0;s<e.length;s++){const i=e[s],o=i.components.main??i;o.editingID=n,o&&t.push(o.id)}if(t.length!==0)return await Jo(this.viewer,t,n)}};C(se,"type",se.register("ESUeViewer",se)),C(se,"defaults",{...od});let bA=se;(r=>{r.createDefaultProps=()=>({...p.ESViewer.createDefaultProps(),...Yi(),resolutionScale:1,autoReconnect:!1,propChangedListening:void 0,objectEventListening:void 0,widgetEventListening:void 0,speechRecognitionListening:void 0,customMessageListening:void 0})})(bA||(bA={})),w.extendClassProps(bA.prototype,bA.createDefaultProps);class jA extends p.EngineObject{constructor(A,e){super(A,e);const t=e.viewer;if(!t)return;const n=this.ad(w.react(!1));A.components.main||this.d(this.createdEvent.don(()=>{const s=this.constructor.propValFuncs,i=A.defaultProps,o=Object.keys(i).filter(B=>s[B]!==null);o.push(...this.constructor.forceUeUpdateProps);const a=A.constructor.defaults,l={val:{}},c=[];for(let B of o){const g=B+"Changed",f=A[g];c.push(f);const m=s[B];if(m===null)throw console.error("vf === null error"),new Error("vf === null error");const F=()=>{const Q=A[B]??a[B]??A.constructor[`default${B.charAt(0).toUpperCase()+B.slice(1)}`];let y=m?m(Q,this,e,A):Q;if(y===void 0){console.warn(`UE自动更新的属性,不应该为undefined! 属性名:${B} 对象名:${A.name} 对象id: ${A.id}`);return}l.val[B]=y};F(),this.d(f.don(F))}const u=()=>{t.callUeFunc({f:"update",p:{id:A.id,...l.val}}),l.val={}},d=this.dv(w.createNextAnimateFrameEvent(...c));this.d(d.don(u)),this.d(n.changed.don(u)),this.d(A.flushEvent.don(()=>d.flush()))})),A.components.main||(this.d(()=>{n.value&&Un(t,A.id)}),t.callUeFunc({f:"create",p:{type:A.typeName,id:A.id}}).then(()=>{n.value=!0}).catch(s=>console.error(s)))}}C(jA,"propValFuncs",{ref:null,devTags:null,extras:null,execOnceFuncStr:null,updateFuncStr:null,toDestroyFuncStr:null}),C(jA,"forceUeUpdateProps",[]);class dA extends jA{constructor(A,e){super(A,e);const t=e.viewer;t&&(this.d(A.flyToEvent.don(n=>{Be(t,A.id,n)})),this.d(A.flyInEvent.don(n=>{var s,i;xe(t,A.id,(s=A.flyInParam)==null?void 0:s.position,(i=A.flyInParam)==null?void 0:i.rotation,n??1)})),this.d(A.calcFlyToParamEvent.don(()=>{$A(t,A.id)})),this.d(A.calcFlyInParamEvent.don(()=>{const n=e.getCurrentCameraInfo();if(!n)return;const{position:s,rotation:i}=n;A.flyInParam={position:s,rotation:i,flyDuration:1}})),this.d(e.propChanged.don(n=>{n.objId===A.id&&Object.keys(n.props).forEach(s=>{const i=n.props[s]===null?void 0:n.props[s];A[s]=i})})))}}class x extends dA{constructor(A,e){super(A,e);const t=e.viewer;if(!t)return;const n=()=>{A.editing||t.callUeFunc({f:"update",p:{id:A.id,position:A.position,rotation:A.rotation}})},s=this.dv(w.createNextAnimateFrameEvent(A.positionChanged,A.rotationChanged,A.editingChanged));this.d(s.don(()=>{setTimeout(n,0)})),this.d(A.smoothMoveEvent.don((a,l)=>{_e(t,A.id,a,l)})),this.d(A.smoothMoveWithRotationEvent.don((a,l,c)=>{ke(t,A.id,a,l,c)})),this.d(A.smoothMoveOnGroundEvent.don((a,l,c,u)=>{Ge(t,A.id,a,l,u,c)})),this.d(A.smoothMoveWithRotationOnGroundEvent.don((a,l,c,u,d)=>{Ne(t,A.id,a,l,c,u,d)})),this.d(A.smoothMoveKeepPitchEvent.don(async(a,l)=>{const c=await t.callUeFunc({f:"SmoothMoveKeepPitch",p:{id:A.id,Destination:a,Time:l}});c.error&&console.error("SmoothMoveKeepPitch:",c.error)})),this.d(A.automaticLandingEvent.don(a=>{const l=[A.position[0],A.position[1]];e.getHeightByLonLat(A.position[0],A.position[1],"Visibility").then(c=>{c!==null&&(A.position=[...l,c],A.collision=a)})}));const i=async(a,l,c,u)=>{const{viewer:d}=a;if(!d){console.error("SmoothMoveRelatively: ueViewer.viewer is undefined");return}const B=await d.callUeFunc({f:"SmoothMoveRelatively",p:{id:l,RelativePosition:c,Time:u}});return B.error&&console.error("SmoothMoveRelatively:",B.error),B};this.d(A.smoothMoveRelativelyEvent.don((a,l)=>{i(e,A.id,a,l)}));const o=async(a,l,c,u,d)=>{const{viewer:B}=a;if(!B){console.error("SmoothMoveRelativelyWithRotation: ueViewer.viewer is undefined");return}const g=await B.callUeFunc({f:"SmoothMoveRelativelyWithRotation",p:{id:l,RelativePosition:c,NewRotation:u,Time:d}});return g.error&&console.error("SmoothMoveRelativelyWithRotation:",g.error),g};this.d(A.smoothMoveRelativelyWithRotationEvent.don((a,l,c)=>{o(e,A.id,a,l,c)}))}}class nA extends dA{constructor(A,e){super(A,e);const t=e.viewer;if(!t)return;const n=()=>{A.editing||t.callUeFunc({f:"update",p:{id:A.id,points:A.points}})},s=this.dv(w.createNextAnimateFrameEvent(A.pointsChanged,A.editingChanged));this.d(s.don(()=>{setTimeout(n,0)}))}}C(nA,"propValFuncs",{...dA.propValFuncs,pointStyle:A=>({...A,materialParams:JSON.stringify(A.materialParams??{})}),strokeStyle:A=>({...A,materialParams:JSON.stringify(A.materialParams??{})}),fillStyle:A=>({...A,materialParams:JSON.stringify(A.materialParams??{})})});class UA extends x{constructor(A,e){super(A,e),e.viewer&&this.d(e.widgetEvent.don(n=>{if(n.objId!==A.id)return;const{type:s,add:i}=n;A.widgetEvent.emit({type:s,add:i})}))}}class Kn extends x{constructor(A,e){super(A,e),e.viewer}}C(Kn,"propValFuncs",{...x.propValFuncs,pointStyle:A=>({...A,materialParams:JSON.stringify(A.materialParams??{})}),strokeStyle:A=>({...A,materialParams:JSON.stringify(A.materialParams??{})}),fillStyle:A=>({...A,materialParams:JSON.stringify(A.materialParams??{})})});class Er extends Kn{constructor(A,e){super(A,e),e.viewer}}const Al=r=>{switch(r){case 0:return"成功绑定";case 1:return"解绑之前的内容,成功绑定";case 2:return"没搜索到ActorTag,无法绑定";case 3:return"搜索到ActorTag但对应的Actor不是3dTileset,无法绑定";default:return"未知错误"}},ht=class ht extends p.EngineObject{constructor(e,t){super(e,t);C(this,"_styleColor",this.dv(w.react([])));C(this,"_styleVisable",this.dv(w.react([])));const n=t.viewer;if(!n){console.warn("UeES3DTileset: viewer is undefined!");return}let s,i;const o=async()=>{!s&&!i||await n.callUeFunc({f:"update",p:{id:e.id,url:e.url,show:e.show,collision:e.collision,allowPicking:e.allowPicking,flyToParam:e.flyToParam??p.ES3DTileset.defaultFlyToParam,flyInParam:e.flyInParam??p.ES3DTileset.defaultFlyInParam,highlightID:e.highlightID,highlightColor:e.highlightColor,highlight:e.highlight,materialMode:e.materialMode,maximumScreenSpaceError:e.maximumScreenSpaceError,colorMode:Reflect.has(e,"colorMode")?e.colorMode:void 0,offset:e.offset,rotation:e.rotation,cacheBytes:e.cacheBytes,colorBlendMode:e.colorBlendMode,materialOverrideMap:e.materialOverrideMap}})},a=this.dv(w.createNextAnimateFrameEvent(e.urlChanged,e.showChanged,e.flyToParamChanged,e.flyInParamChanged,e.collisionChanged,e.allowPickingChanged,e.highlightIDChanged,e.highlightColorChanged,e.highlightChanged,e.materialModeChanged,e.maximumScreenSpaceErrorChanged,e.offsetChanged,e.rotationChanged,e.cacheBytesChanged,e.colorBlendModeChanged,e.materialOverrideMapChanged));o(),this.d(a.don(o)),Reflect.has(e,"colorMode")&&this.d(e.colorModeChanged.don(()=>o()));const l=this.dv(w.react(void 0));{const u=this.dv(w.createNextAnimateFrameEvent(e.actorTagChanged,e.urlChanged)),d=()=>{e.actorTag?l.value={type:"ActorTag",actorTag:e.actorTag}:e.url?l.value={type:"CreatedUrl",url:e.url}:l.value=void 0,e.editing=!1};d(),this.d(u.don(d))}const c=async()=>{const{id:u}=e;if(s!==void 0){s=void 0;try{const d=await t.unBind3DTilesetById(u);if(!d)return;if(d.error!==""){console.warn(`UeES3DTileset UnBind3DTilesetById: ${d.error}`);return}}catch(d){console.warn(`UeES3DTileset UnBind3DTilesetById: ${d}`);return}}if(i!==void 0){i=void 0;try{const d=await n.callUeFunc({f:"destroy",p:{id:u}});if(!d)return;if(d.error!==""){console.warn(`UeES3DTileset Destroy: ${d.error}`);return}}catch(d){console.warn(`UeES3DTileset Destroy: ${d}`);return}}};this.d(()=>{c()});{const u=this.dv(w.createProcessingFromAsyncFunc(async B=>{if(l.value===void 0){await B.promise(c());return}if(l.value.type==="ActorTag"){const{actorTag:g}=l.value;if(s!==g&&await B.promise(c()),s!==void 0||g===void 0)return;try{s=g;const f=await B.promise(t.bind3DTilesetByTag(e.id,g));if(!f)return;if(f.error!==""){console.warn(`UeES3DTileset Bind3DTilesetByTag: ${f.error}`);return}if(f.re.type!==0)if(f.re.type===1)console.warn(`UeES3DTileset Bind3DTilesetByTag: ${Al(f.re.type)}`);else{console.warn(`UeES3DTileset Bind3DTilesetByTag: ${Al(f.re.type)}`);return}}catch(f){console.warn(`UeES3DTileset Bind3DTilesetByTag: ${f}`);return}}else if(l.value.type==="CreatedUrl"){const{url:g}=l.value;if(g!==i&&await c(),i!==void 0||g===void 0)return;try{i=g;const f=await B.promise(n.callUeFunc({f:"create",p:{type:e.typeName,id:e.id}}));if(!f)return;if(f.error!==""){console.warn(`UeES3DTileset create: ${f.error}`);return}}catch(f){console.warn(`UeES3DTileset create: ${f}`);return}}await B.promise(o())})),d=async()=>{u.restart()};d(),this.d(l.changed.don(d))}this.d(e.refreshTilesetEvent.don(()=>{$i(n,e.id)})),this.d(e.flyToEvent.don(async(u,d)=>{if(!s&&!i)return;const B=await Be(n,e.id,u);let g="over";B===void 0?g="error":B.endType===0?g="over":B.endType===1&&(g="cancelled"),e.flyOverEvent.emit(d,g,t)})),this.d(e.calcFlyToParamEvent.don(()=>{!s&&!i||$A(n,e.id)})),this.d(e.calcFlyInParamEvent.don(async()=>{if(!s&&!i||!t.actived)return;const u=await t.getCurrentCameraInfo();if(!u)return;const{position:d,rotation:B}=u;e.flyInParam={position:d,rotation:B,flyDuration:1}})),this.d(t.propChanged.don(u=>{!s&&!i||u.objId===e.id&&Object.keys(u.props).forEach(d=>{const B=u.props[d]===null?void 0:u.props[d];e[d]=B})})),this.d(t.objectEvent.don(u=>{!s&&!i||u.id!==e.id||u.type!=="3DTilesetReady"||e.tilesetReady.emit(u.p)}));{const u=async(f,m)=>{if(!s&&!i)return;const F=await n.callUeFunc({f:"SetFeatureColor",p:{id:e.id,featureName:f,json:m}});if(F&&F.error!==""){console.warn(`UeES3DTileset SetFeatureColor: ${F.error}`);return}},d=async(f,m)=>{if(!s&&!i)return;const F=await n.callUeFunc({f:"SetFeatureVisable",p:{id:e.id,featureName:f,json:m}});if(F&&F.error!==""){console.warn(`UeES3DTileset SetFeatureVisable: ${F.error}`);return}},B=async()=>{if(!s&&!i)return;const f=await n.callUeFunc({f:"ResetFeatureStyle",p:{id:e.id}});if(f&&f.error!==""){console.warn(`UeES3DTileset ResetFeatureStyle: ${f.error}`);return}},g=async f=>{if(!s&&!i)return;const m=await n.callUeFunc({f:"SetFeatureStyle",p:{id:e.id,json:f}});if(m&&m.error!==""){console.warn(`UeES3DTileset SetFeatureStyle: ${m.error}`);return}};this.d(e.setFeatureColorEvent.don((f,m)=>{const F=[...this.styleColor,...m];this.styleColor=[...F],u(f,F)})),this.d(e.setFeatureVisableEvent.don((f,m)=>{const F=[...this.styleVisable,...m];this.styleVisable=[...F],d(f,F)})),this.d(e.resetFeatureStyleEvent.don(()=>{B(),this.styleColor=[],this.styleVisable=[]})),this.d(e.setFeatureStyleEvent.don(f=>{g(f)}))}{const u=async()=>{if(!s&&!i){e._featureTableResultEvent.emit(void 0);return}try{const d=await n.callUeFunc({f:"GetFeatureTable",p:{id:e.id}});d.error!==""&&console.warn(`UeES3DTileset GetFeatureTable: ${d.error}`),e._featureTableResultEvent.emit(d.re.table)}catch(d){console.warn(`UeES3DTileset GetFeatureTable: ${d}`),e._featureTableResultEvent.emit(void 0)}};this.d(e.getFeatureTableEvent.don(()=>{u()}))}{const u=async()=>{if(!s&&!i){e.getMaterialNameListEvent.emit(void 0);return}try{const d=await n.callUeFunc({f:"GetMaterialNameList",p:{id:e.id}});d.error!==""&&console.warn(`UeES3DTileset GetMaterialNameList: ${d.error}`),e.getMaterialNameListEvent.emit(d.re.materialNameList)}catch(d){console.warn(`UeES3DTileset GetMaterialNameList: ${d}`),e.getMaterialNameListEvent.emit(void 0)}};this.ad(e.getMaterialNameListEvent.don(d=>{d=="start"&&u()}))}}get styleColor(){return this._styleColor.value}set styleColor(e){this._styleColor.value=e}get styleVisable(){return this._styleVisable.value}set styleVisable(e){this._styleVisable.value=e}};C(ht,"type",ht.register("ESUeViewer",p.ES3DTileset.type,ht));let yr=ht;const el=r=>{switch(r){case 0:return"成功绑定";case 1:return"解绑之前的内容,成功绑定";case 2:return"没搜索到ActorTag,无法绑定";case 3:return"搜索到ActorTag对应的Actor是地形,无法绑定";case 4:return"没搜索到ComponentTag,无法绑定";default:return"未知错误"}},gt=class gt extends p.EngineObject{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}let n,s;const i=this.dv(w.react(void 0)),o=this.ad(w.reactJson(""));{const u=()=>{if(typeof A.url=="string")o.value=p.ESSceneObject.context.getStrFromEnv(A.url);else{const d=A.url;d.url=p.ESSceneObject.context.getStrFromEnv(d.url),o.value=d}};u(),this.ad(A.urlChanged.don(u))}const a=async()=>{if(!n&&!s)return;let u=A.targetID??p.ESImageryLayer.defaults.targetID;if(u&&u!=""){const d=p.ESSceneObject.getSceneObject(u);u=d?(d.components.main??d).id:u}await t.callUeFunc({f:"update",p:{id:A.id,show:A.show??!0,rectangle:A.rectangle??[-180,-90,180,90],collision:A.collision??!0,allowPicking:A.allowPicking??!1,flyToParam:A.flyToParam??p.ESImageryLayer.defaultFlyToParam,flyInParam:A.flyInParam??p.ESImageryLayer.defaultFlyInParam,url:o.value??"",zIndex:A.zIndex??0,maximumLevel:A.maximumLevel??p.ESImageryLayer.defaults.maximumLevel,minimumLevel:A.minimumLevel??p.ESImageryLayer.defaults.minimumLevel,options:A.options??p.ESImageryLayer.defaults.options,targetID:u,opacity:A.opacity??p.ESImageryLayer.defaults.opacity,splitDirection:A.splitDirection??p.ESImageryLayer.defaults.splitDirection}})},l=this.dv(w.createNextAnimateFrameEvent(A.showChanged,o.changed,A.flyToParamChanged,A.flyInParamChanged,A.zIndexChanged,A.collisionChanged,A.allowPickingChanged,A.maximumLevelChanged,A.minimumLevelChanged,A.rectangleChanged,A.optionsChanged,A.targetIDChanged,A.opacityChanged,A.splitDirectionChanged));this.d(l.don(a));const c=async()=>{const{id:u}=A;if(n!==void 0){n=void 0;try{const d=await e.unBindImageryById(u);if(!d)return;if(d.error!==""){console.warn(`UeESImageryLayer UnImageryByID: ${d.error}`);return}}catch(d){console.warn(`UeESImageryLayer UnImageryByID promise: ${d}`);return}}if(s!==void 0){s=void 0;try{const d=await t.callUeFunc({f:"destroy",p:{id:u,test:"UeESImageryLayer"}});if(!d)return;if(d.error!==""){console.warn(`UeESImageryLayer Destroy: ${d.error}`);return}}catch(d){console.warn(`UeESImageryLayer Destroy promise: ${d}`);return}}};this.d(()=>{c()});{const u=this.dv(w.createProcessingFromAsyncFunc(async B=>{if(i.value===void 0){await B.promise(c());return}if(i.value.type==="ActorTag"){const{actorTag:g,componentTag:f}=i.value;if(n!==g&&await B.promise(c()),n!==void 0||g===void 0)return;try{n=g;const m=await B.promise(e.bindImageryByTag(A.id,g,f));if(!m)return;if(m.error!==""){console.warn(`ESImageryLayer BindImageryByTag: ${m.error}`);return}if(m.re.type!==0)if(m.re.type===1)console.warn(`ESImageryLayer BindImageryByTag: ${el(m.re.type)}`);else{console.warn(`ESImageryLayer BindImageryByTag: ${el(m.re.type)}`);return}}catch(m){console.warn(`ESImageryLayer BindImageryByTag promise: ${m}`);return}}else if(i.value.type==="CreatedUrl"){const{url:g}=i.value;if(g!==s&&await B.promise(c()),s!==void 0||g===void 0)return;try{s=g;const f=await B.promise(t.callUeFunc({f:"create",p:{type:"ESImageryLayer",id:A.id}}));if(!f)return;if(f.error!==""){console.warn(`ESImageryLayer create: ${f.error}`);return}}catch{console.warn("ESImageryLayer create: create promise error");return}}await B.promise(a())})),d=async()=>{u.restart()};d(),this.d(i.changed.don(d))}{const u=this.dv(w.createNextAnimateFrameEvent(A.actorTagChanged,o.changed,A.componentTagChanged)),d=()=>{A.actorTag&&A.componentTag?i.value={type:"ActorTag",actorTag:A.actorTag,componentTag:A.componentTag}:o.value?i.value={type:"CreatedUrl",url:o.value}:i.value=void 0};d(),this.d(u.don(d))}this.d(A.flyToEvent.don(async(u,d)=>{if(!n&&!s)return;const B=await Be(t,A.id,u);let g="over";B===void 0?g="error":B.endType===0?g="over":B.endType===1&&(g="cancelled"),A.flyOverEvent.emit(d,g,e)})),this.d(A.flyInEvent.don(async(u,d)=>{var f,m;if(!n&&!s)return;const B=await xe(t,A.id,(f=A.flyInParam)==null?void 0:f.position,(m=A.flyInParam)==null?void 0:m.rotation,u??1);let g="over";B===void 0?g="error":B.endType===0?g="over":B.endType===1&&(g="cancelled"),A.flyOverEvent.emit(d,g,e)})),this.d(A.calcFlyToParamEvent.don(()=>{!n&&!s||$A(t,A.id)})),this.d(A.calcFlyInParamEvent.don(async()=>{if(!e.actived)return;const u=await e.getCurrentCameraInfo();if(!u)return;const{position:d,rotation:B}=u;A.flyInParam={position:d,rotation:B,flyDuration:1}})),this.d(e.propChanged.don(u=>{!n&&!s||u.objId===A.id&&Object.keys(u.props).forEach(d=>{const B=u.props[d]===null?void 0:u.props[d];A[d]=B})}))}};C(gt,"type",gt.register("ESUeViewer",p.ESImageryLayer.type,gt));let xn=gt;const ie=class ie extends dA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(ie,"type",ie.register("ESUeViewer",p.ESTerrainLayer.type,ie)),C(ie,"forceUeUpdateProps",[...dA.forceUeUpdateProps,"url"]),C(ie,"propValFuncs",{...dA.propValFuncs,url:A=>typeof A=="string"?p.ESSceneObject.context.getStrFromEnv(A):(A.url=p.ESSceneObject.context.getStrFromEnv(A.url),A),czmMaxzoom:null,czmMinzoom:null});let kn=ie;const Bt=class Bt extends x{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(Bt,"type",Bt.register("ESUeViewer",p.ESAlarm.type,Bt));let Gn=Bt;const ft=class ft extends x{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(ft,"type",ft.register("ESUeViewer",p.ESApertureEffect.type,ft));let Nn=ft;const wt=class wt extends nA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(wt,"type",wt.register("ESUeViewer",p.ESGeoPolygon.type,wt));let uA=wt;const pt=class pt extends uA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}const n=()=>{let i=p.ESAreaMeasurement.defaults.fillStyle;try{i={...A.fillStyle??p.ESAreaMeasurement.defaults.fillStyle}}catch(o){console.error("ESAreaMeasurement fillStyle 属性类型错误!",o),i={...p.ESAreaMeasurement.defaults.fillStyle}}i.materialParams=JSON.stringify(i.materialParams),t.callUeFunc({f:"update",p:{id:A.id,stroked:A.stroked??p.ESAreaMeasurement.defaults.stroked,fillStyle:i,filled:A.filled??p.ESAreaMeasurement.defaults.filled}}),console.log(i)},s=this.dv(w.createNextAnimateFrameEvent(A.fillStyleChanged,A.strokedChanged,A.filledChanged));this.d(s.don(n)),this.d(A.createdEvent.don(n))}};C(pt,"type",pt.register("ESUeViewer",p.ESAreaMeasurement.type,pt));let _n=pt;const Ct=class Ct extends x{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(Ct,"type",Ct.register("ESUeViewer",p.ESBlastParticleSystem.type,Ct));let Vn=Ct;const Le=class Le extends x{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is underfined!");return}}};C(Le,"type",Le.register("ESUeViewer",p.ESBoxClipping.type,Le)),C(Le,"propValFuncs",{...x.propValFuncs,targetID:A=>{if(!A)return"";const e=p.ESSceneObject.getSceneObject(A);return e?(e.components.main??e).id:A}});let On=Le;const vt=class vt extends x{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}this.dispose(A.flyInEvent.don((n,s,i="default")=>{const{id:o,duration:a,position:l,rotation:c}=A;xe(t,o,l,c,a??n,i)})),this.dispose(A.resetWithCurrentCameraEvent.don(()=>{En(t,A.id)})),this.dispose(A.captureEvent.don((n,s)=>{e.capture(n,s).then(o=>{o&&(A.thumbnail=o)})}))}};C(vt,"type",vt.register("ESUeViewer",p.ESCameraView.type,vt));let Wn=vt;const mt=class mt extends x{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(mt,"type",mt.register("ESUeViewer",p.ESCameraVisibleRange.type,mt));let Xn=mt;const Ft=class Ft extends x{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(Ft,"type",Ft.register("ESUeViewer",p.ESCar.type,Ft));let Jn=Ft;const Qt=class Qt extends nA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}const n=()=>{let i=p.ESClassification.defaults.fillStyle;try{i={...A.fillStyle??p.ESClassification.defaults.fillStyle}}catch(o){console.error("ESClassification fillStyle 属性类型错误!",o),i={...p.ESClassification.defaults.fillStyle}}i.materialParams=JSON.stringify(i.materialParams),t.callUeFunc({f:"update",p:{id:A.id,filled:A.filled??p.ESClassification.defaults.filled,fillStyle:i}})},s=this.dv(w.createNextAnimateFrameEvent(A.fillStyleChanged,A.filledChanged));this.d(s.don(n)),this.d(A.createdEvent.don(n))}};C(Qt,"type",Qt.register("ESUeViewer",p.ESClassification.type,Qt));let zn=Qt;const be=class be extends x{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is underfined!");return}}};C(be,"type",be.register("ESUeViewer",p.ESClippingPlane.type,be)),C(be,"propValFuncs",{...x.propValFuncs,targetID:A=>{if(!A)return"";const e=p.ESSceneObject.getSceneObject(A);return e?(e.components.main??e).id:A}});let Yn=be;const Ut=class Ut extends x{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}const n=this.ad(w.reactJson(""));{const o=()=>{if(typeof A.url=="string")n.value=p.ESSceneObject.context.getStrFromEnv(A.url??p.ESDataMesh.defaults.url);else{const a=A.url;a.url=p.ESSceneObject.context.getStrFromEnv(a.url??p.ESDataMesh.defaults.url),n.value=a}};o(),this.ad(A.urlChanged.don(o))}const s=()=>{const o=A.colorStops??p.ESDataMesh.defaults.colorStops;t.callUeFunc({f:"update",p:{id:A.id,url:n.value??p.ESDataMesh.defaults.url,currentTime:A.currentTime??p.ESDataMesh.defaults.currentTime,minPropValue:A.minPropValue??p.ESDataMesh.defaults.minPropValue,maxPropValue:A.maxPropValue??p.ESDataMesh.defaults.maxPropValue,colorStops:JSON.stringify(o)}})},i=this.dv(w.createNextAnimateFrameEvent(n.changed,A.currentTimeChanged,A.minPropValueChanged,A.maxPropValueChanged,A.colorStopsChanged));this.d(i.don(s)),this.d(A.createdEvent.don(s))}};C(Ut,"type",Ut.register("ESUeViewer",p.ESDataMesh.type,Ut));let $n=Ut;const Et=class Et extends x{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(Et,"type",Et.register("ESUeViewer",p.ESDatasmithRuntimeModel.type,Et));let Zn=Et;const yt=class yt extends nA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(yt,"type",yt.register("ESUeViewer",p.ESDirectionMeasurement.type,yt));let qn=yt;const St=class St extends nA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}const n=()=>{let i;try{i={...A.strokeStyle??p.ESDistanceMeasurement.defaults.strokeStyle}}catch(o){console.error("ESDistanceMeasurement strokeStyle 属性类型错误!",o),i={...p.ESDistanceMeasurement.defaults.strokeStyle}}t.callUeFunc({f:"update",p:{id:A.id,strokeStyle:i}})},s=this.dv(w.createNextAnimateFrameEvent(A.strokeStyleChanged));this.d(s.don(n)),this.d(A.createdEvent.don(n))}};C(St,"type",St.register("ESUeViewer",p.ESDistanceMeasurement.type,St));let jn=St;const It=class It extends Er{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(It,"type",It.register("ESUeViewer",p.ESLocalPolygon.type,It));let Sr=It;const Tt=class Tt extends Sr{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(Tt,"type",Tt.register("ESUeViewer",p.ESDynamicWater.type,Tt));let As=Tt;const Ht=class Ht extends dA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}this.d(e.widgetEvent.don(n=>{if(n.objId!==A.id)return;const{type:s,properties:i}=n;A.widgetEvent.emit({type:s,properties:i})}))}};C(Ht,"type",Ht.register("ESUeViewer",p.ESEntityCluster.type,Ht));let es=Ht;const Me=class Me extends uA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(Me,"type",Me.register("ESUeViewer",p.ESExcavate.type,Me)),C(Me,"propValFuncs",{...uA.propValFuncs,targetID:A=>{if(!A)return"";const e=p.ESSceneObject.getSceneObject(A);return e?(e.components.main??e).id:A}});let ts=Me;const Lt=class Lt extends x{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(Lt,"type",Lt.register("ESUeViewer",p.ESFireParticleSystem.type,Lt));let rs=Lt;const bt=class bt extends dA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}const n=this.ad(w.reactJson(""));{const o=()=>{if(typeof A.url=="string")n.value=p.ESSceneObject.context.getStrFromEnv(A.url);else{const a=A.url;a.url=p.ESSceneObject.context.getStrFromEnv(a.url),n.value=a}};o(),this.ad(A.urlChanged.don(o))}const s=()=>{t.callUeFunc({f:"update",p:{id:A.id,url:n.value??p.ESForestTileset.defaults.url,treeTypes:A.treeTypes??p.ESForestTileset.defaults.treeTypes,xiaoBanWidget:A.xiaoBanWidget??p.ESForestTileset.defaults.xiaoBanWidget,youShiSZ:A.youShiSZ??p.ESForestTileset.defaults.youShiSZ,diLei:A.diLei??p.ESForestTileset.defaults.diLei,senLinLB:A.senLinLB??p.ESForestTileset.defaults.senLinLB,labelMaterial:A.labelMaterial??p.ESForestTileset.defaults.labelMaterial,heightOffset:A.heightOffset??p.ESForestTileset.defaults.heightOffset}})},i=this.dv(w.createNextAnimateFrameEvent(n.changed,A.treeTypesChanged,A.xiaoBanWidgetChanged,A.youShiSZChanged,A.diLeiChanged,A.senLinLBChanged,A.labelMaterialChanged,A.heightOffsetChanged));this.d(i.don(s)),this.d(A.createdEvent.don(s))}};C(bt,"type",bt.register("ESUeViewer",p.ESForestTileset.type,bt));let ns=bt;/*!
|
|
92
92
|
* html2canvas 1.4.1 <https://html2canvas.hertzen.com>
|
|
93
93
|
* Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>
|
|
94
94
|
* Released under MIT License
|
|
@@ -105,14 +105,14 @@ Msg: ${e}`;console.warn(t)}};h.verboseLogLevel=5,function(r){r.LIST_STREAMERS="l
|
|
|
105
105
|
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
106
106
|
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
107
107
|
PERFORMANCE OF THIS SOFTWARE.
|
|
108
|
-
***************************************************************************** */var ns=function(r,A){return ns=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},ns(r,A)};function FA(r,A){if(typeof A!="function"&&A!==null)throw new TypeError("Class extends value "+String(A)+" is not a constructor or null");ns(r,A);function e(){this.constructor=r}r.prototype=A===null?Object.create(A):(e.prototype=A.prototype,new e)}var ss=function(){return ss=Object.assign||function(A){for(var e,t=1,n=arguments.length;t<n;t++){e=arguments[t];for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&(A[s]=e[s])}return A},ss.apply(this,arguments)};function hA(r,A,e,t){function n(s){return s instanceof e?s:new e(function(i){i(s)})}return new(e||(e=Promise))(function(s,i){function o(c){try{l(t.next(c))}catch(u){i(u)}}function a(c){try{l(t.throw(c))}catch(u){i(u)}}function l(c){c.done?s(c.value):n(c.value).then(o,a)}l((t=t.apply(r,[])).next())})}function sA(r,A){var e={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},t,n,s,i;return i={next:o(0),throw:o(1),return:o(2)},typeof Symbol=="function"&&(i[Symbol.iterator]=function(){return this}),i;function o(l){return function(c){return a([l,c])}}function a(l){if(t)throw new TypeError("Generator is already executing.");for(;e;)try{if(t=1,n&&(s=l[0]&2?n.return:l[0]?n.throw||((s=n.return)&&s.call(n),0):n.next)&&!(s=s.call(n,l[1])).done)return s;switch(n=0,s&&(l=[l[0]&2,s.value]),l[0]){case 0:case 1:s=l;break;case 4:return e.label++,{value:l[1],done:!1};case 5:e.label++,n=l[1],l=[0];continue;case 7:l=e.ops.pop(),e.trys.pop();continue;default:if(s=e.trys,!(s=s.length>0&&s[s.length-1])&&(l[0]===6||l[0]===2)){e=0;continue}if(l[0]===3&&(!s||l[1]>s[0]&&l[1]<s[3])){e.label=l[1];break}if(l[0]===6&&e.label<s[1]){e.label=s[1],s=l;break}if(s&&e.label<s[2]){e.label=s[2],e.ops.push(l);break}s[2]&&e.ops.pop(),e.trys.pop();continue}l=A.call(r,e)}catch(c){l=[6,c],n=0}finally{t=s=0}if(l[0]&5)throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}}function Ir(r,A,e){if(arguments.length===2)for(var t=0,n=A.length,s;t<n;t++)(s||!(t in A))&&(s||(s=Array.prototype.slice.call(A,0,t)),s[t]=A[t]);return r.concat(s||A)}for(var MA=function(){function r(A,e,t,n){this.left=A,this.top=e,this.width=t,this.height=n}return r.prototype.add=function(A,e,t,n){return new r(this.left+A,this.top+e,this.width+t,this.height+n)},r.fromClientRect=function(A,e){return new r(e.left+A.windowBounds.left,e.top+A.windowBounds.top,e.width,e.height)},r.fromDOMRectList=function(A,e){var t=Array.from(e).find(function(n){return n.width!==0});return t?new r(t.left+A.windowBounds.left,t.top+A.windowBounds.top,t.width,t.height):r.EMPTY},r.EMPTY=new r(0,0,0,0),r}(),Tr=function(r,A){return MA.fromClientRect(r,A.getBoundingClientRect())},Eu=function(r){var A=r.body,e=r.documentElement;if(!A||!e)throw new Error("Unable to get document size");var t=Math.max(Math.max(A.scrollWidth,e.scrollWidth),Math.max(A.offsetWidth,e.offsetWidth),Math.max(A.clientWidth,e.clientWidth)),n=Math.max(Math.max(A.scrollHeight,e.scrollHeight),Math.max(A.offsetHeight,e.offsetHeight),Math.max(A.clientHeight,e.clientHeight));return new MA(0,0,t,n)},Hr=function(r){for(var A=[],e=0,t=r.length;e<t;){var n=r.charCodeAt(e++);if(n>=55296&&n<=56319&&e<t){var s=r.charCodeAt(e++);(s&64512)===56320?A.push(((n&1023)<<10)+(s&1023)+65536):(A.push(n),e--)}else A.push(n)}return A},X=function(){for(var r=[],A=0;A<arguments.length;A++)r[A]=arguments[A];if(String.fromCodePoint)return String.fromCodePoint.apply(String,r);var e=r.length;if(!e)return"";for(var t=[],n=-1,s="";++n<e;){var i=r[n];i<=65535?t.push(i):(i-=65536,t.push((i>>10)+55296,i%1024+56320)),(n+1===e||t.length>16384)&&(s+=String.fromCharCode.apply(String,t),t.length=0)}return s},tl="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",yu=typeof Uint8Array>"u"?[]:new Uint8Array(256),Lr=0;Lr<tl.length;Lr++)yu[tl.charCodeAt(Lr)]=Lr;for(var rl="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Xe=typeof Uint8Array>"u"?[]:new Uint8Array(256),br=0;br<rl.length;br++)Xe[rl.charCodeAt(br)]=br;for(var Su=function(r){var A=r.length*.75,e=r.length,t,n=0,s,i,o,a;r[r.length-1]==="="&&(A--,r[r.length-2]==="="&&A--);var l=typeof ArrayBuffer<"u"&&typeof Uint8Array<"u"&&typeof Uint8Array.prototype.slice<"u"?new ArrayBuffer(A):new Array(A),c=Array.isArray(l)?l:new Uint8Array(l);for(t=0;t<e;t+=4)s=Xe[r.charCodeAt(t)],i=Xe[r.charCodeAt(t+1)],o=Xe[r.charCodeAt(t+2)],a=Xe[r.charCodeAt(t+3)],c[n++]=s<<2|i>>4,c[n++]=(i&15)<<4|o>>2,c[n++]=(o&3)<<6|a&63;return l},Iu=function(r){for(var A=r.length,e=[],t=0;t<A;t+=2)e.push(r[t+1]<<8|r[t]);return e},Tu=function(r){for(var A=r.length,e=[],t=0;t<A;t+=4)e.push(r[t+3]<<24|r[t+2]<<16|r[t+1]<<8|r[t]);return e},Ae=5,is=11,os=2,Hu=is-Ae,nl=65536>>Ae,Lu=1<<Ae,as=Lu-1,bu=1024>>Ae,Mu=nl+bu,Du=Mu,Ru=32,Pu=Du+Ru,Ku=65536>>is,xu=1<<Hu,ku=xu-1,sl=function(r,A,e){return r.slice?r.slice(A,e):new Uint16Array(Array.prototype.slice.call(r,A,e))},Gu=function(r,A,e){return r.slice?r.slice(A,e):new Uint32Array(Array.prototype.slice.call(r,A,e))},Nu=function(r,A){var e=Su(r),t=Array.isArray(e)?Tu(e):new Uint32Array(e),n=Array.isArray(e)?Iu(e):new Uint16Array(e),s=24,i=sl(n,s/2,t[4]/2),o=t[5]===2?sl(n,(s+t[4])/2):Gu(t,Math.ceil((s+t[4])/4));return new _u(t[0],t[1],t[2],t[3],i,o)},_u=function(){function r(A,e,t,n,s,i){this.initialValue=A,this.errorValue=e,this.highStart=t,this.highValueIndex=n,this.index=s,this.data=i}return r.prototype.get=function(A){var e;if(A>=0){if(A<55296||A>56319&&A<=65535)return e=this.index[A>>Ae],e=(e<<os)+(A&as),this.data[e];if(A<=65535)return e=this.index[nl+(A-55296>>Ae)],e=(e<<os)+(A&as),this.data[e];if(A<this.highStart)return e=Pu-Ku+(A>>is),e=this.index[e],e+=A>>Ae&ku,e=this.index[e],e=(e<<os)+(A&as),this.data[e];if(A<=1114111)return this.data[this.highValueIndex]}return this.errorValue},r}(),il="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Vu=typeof Uint8Array>"u"?[]:new Uint8Array(256),Mr=0;Mr<il.length;Mr++)Vu[il.charCodeAt(Mr)]=Mr;var Ou="KwAAAAAAAAAACA4AUD0AADAgAAACAAAAAAAIABAAGABAAEgAUABYAGAAaABgAGgAYgBqAF8AZwBgAGgAcQB5AHUAfQCFAI0AlQCdAKIAqgCyALoAYABoAGAAaABgAGgAwgDKAGAAaADGAM4A0wDbAOEA6QDxAPkAAQEJAQ8BFwF1AH0AHAEkASwBNAE6AUIBQQFJAVEBWQFhAWgBcAF4ATAAgAGGAY4BlQGXAZ8BpwGvAbUBvQHFAc0B0wHbAeMB6wHxAfkBAQIJAvEBEQIZAiECKQIxAjgCQAJGAk4CVgJeAmQCbAJ0AnwCgQKJApECmQKgAqgCsAK4ArwCxAIwAMwC0wLbAjAA4wLrAvMC+AIAAwcDDwMwABcDHQMlAy0DNQN1AD0DQQNJA0kDSQNRA1EDVwNZA1kDdQB1AGEDdQBpA20DdQN1AHsDdQCBA4kDkQN1AHUAmQOhA3UAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AKYDrgN1AHUAtgO+A8YDzgPWAxcD3gPjA+sD8wN1AHUA+wMDBAkEdQANBBUEHQQlBCoEFwMyBDgEYABABBcDSARQBFgEYARoBDAAcAQzAXgEgASIBJAEdQCXBHUAnwSnBK4EtgS6BMIEyAR1AHUAdQB1AHUAdQCVANAEYABgAGAAYABgAGAAYABgANgEYADcBOQEYADsBPQE/AQEBQwFFAUcBSQFLAU0BWQEPAVEBUsFUwVbBWAAYgVgAGoFcgV6BYIFigWRBWAAmQWfBaYFYABgAGAAYABgAKoFYACxBbAFuQW6BcEFwQXHBcEFwQXPBdMF2wXjBeoF8gX6BQIGCgYSBhoGIgYqBjIGOgZgAD4GRgZMBmAAUwZaBmAAYABgAGAAYABgAGAAYABgAGAAYABgAGIGYABpBnAGYABgAGAAYABgAGAAYABgAGAAYAB4Bn8GhQZgAGAAYAB1AHcDFQSLBmAAYABgAJMGdQA9A3UAmwajBqsGqwaVALMGuwbDBjAAywbSBtIG1QbSBtIG0gbSBtIG0gbdBuMG6wbzBvsGAwcLBxMHAwcbByMHJwcsBywHMQcsB9IGOAdAB0gHTgfSBkgHVgfSBtIG0gbSBtIG0gbSBtIG0gbSBiwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdgAGAALAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdbB2MHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB2kH0gZwB64EdQB1AHUAdQB1AHUAdQB1AHUHfQdgAIUHjQd1AHUAlQedB2AAYAClB6sHYACzB7YHvgfGB3UAzgfWBzMB3gfmB1EB7gf1B/0HlQENAQUIDQh1ABUIHQglCBcDLQg1CD0IRQhNCEEDUwh1AHUAdQBbCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIcAh3CHoIMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIgggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAALAcsBywHLAcsBywHLAcsBywHLAcsB4oILAcsB44I0gaWCJ4Ipgh1AHUAqgiyCHUAdQB1AHUAdQB1AHUAdQB1AHUAtwh8AXUAvwh1AMUIyQjRCNkI4AjoCHUAdQB1AO4I9gj+CAYJDgkTCS0HGwkjCYIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiAAIAAAAFAAYABgAGIAXwBgAHEAdQBFAJUAogCyAKAAYABgAEIA4ABGANMA4QDxAMEBDwE1AFwBLAE6AQEBUQF4QkhCmEKoQrhCgAHIQsAB0MLAAcABwAHAAeDC6ABoAHDCwMMAAcABwAHAAdDDGMMAAcAB6MM4wwjDWMNow3jDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEjDqABWw6bDqABpg6gAaABoAHcDvwOPA+gAaABfA/8DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DpcPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB9cPKwkyCToJMAB1AHUAdQBCCUoJTQl1AFUJXAljCWcJawkwADAAMAAwAHMJdQB2CX4JdQCECYoJjgmWCXUAngkwAGAAYABxAHUApgn3A64JtAl1ALkJdQDACTAAMAAwADAAdQB1AHUAdQB1AHUAdQB1AHUAowYNBMUIMAAwADAAMADICcsJ0wnZCRUE4QkwAOkJ8An4CTAAMAB1AAAKvwh1AAgKDwoXCh8KdQAwACcKLgp1ADYKqAmICT4KRgowADAAdQB1AE4KMAB1AFYKdQBeCnUAZQowADAAMAAwADAAMAAwADAAMAAVBHUAbQowADAAdQC5CXUKMAAwAHwBxAijBogEMgF9CoQKiASMCpQKmgqIBKIKqgquCogEDQG2Cr4KxgrLCjAAMADTCtsKCgHjCusK8Qr5CgELMAAwADAAMAB1AIsECQsRC3UANAEZCzAAMAAwADAAMAB1ACELKQswAHUANAExCzkLdQBBC0kLMABRC1kLMAAwADAAMAAwADAAdQBhCzAAMAAwAGAAYABpC3ELdwt/CzAAMACHC4sLkwubC58Lpwt1AK4Ltgt1APsDMAAwADAAMAAwADAAMAAwAL4LwwvLC9IL1wvdCzAAMADlC+kL8Qv5C/8LSQswADAAMAAwADAAMAAwADAAMAAHDDAAMAAwADAAMAAODBYMHgx1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1ACYMMAAwADAAdQB1AHUALgx1AHUAdQB1AHUAdQA2DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AD4MdQBGDHUAdQB1AHUAdQB1AEkMdQB1AHUAdQB1AFAMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQBYDHUAdQB1AF8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUA+wMVBGcMMAAwAHwBbwx1AHcMfwyHDI8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAYABgAJcMMAAwADAAdQB1AJ8MlQClDDAAMACtDCwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB7UMLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AA0EMAC9DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAsBywHLAcsBywHLAcsBywHLQcwAMEMyAwsBywHLAcsBywHLAcsBywHLAcsBywHzAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1ANQM2QzhDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMABgAGAAYABgAGAAYABgAOkMYADxDGAA+AwADQYNYABhCWAAYAAODTAAMAAwADAAFg1gAGAAHg37AzAAMAAwADAAYABgACYNYAAsDTQNPA1gAEMNPg1LDWAAYABgAGAAYABgAGAAYABgAGAAUg1aDYsGVglhDV0NcQBnDW0NdQ15DWAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAlQCBDZUAiA2PDZcNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAnw2nDTAAMAAwADAAMAAwAHUArw23DTAAMAAwADAAMAAwADAAMAAwADAAMAB1AL8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQDHDTAAYABgAM8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA1w11ANwNMAAwAD0B5A0wADAAMAAwADAAMADsDfQN/A0EDgwOFA4wABsOMAAwADAAMAAwADAAMAAwANIG0gbSBtIG0gbSBtIG0gYjDigOwQUuDsEFMw7SBjoO0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGQg5KDlIOVg7SBtIGXg5lDm0OdQ7SBtIGfQ6EDooOjQ6UDtIGmg6hDtIG0gaoDqwO0ga0DrwO0gZgAGAAYADEDmAAYAAkBtIGzA5gANIOYADaDokO0gbSBt8O5w7SBu8O0gb1DvwO0gZgAGAAxA7SBtIG0gbSBtIGYABgAGAAYAAED2AAsAUMD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHJA8sBywHLAcsBywHLAccDywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywPLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAc0D9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHPA/SBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gYUD0QPlQCVAJUAMAAwADAAMACVAJUAlQCVAJUAlQCVAEwPMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA//8EAAQABAAEAAQABAAEAAQABAANAAMAAQABAAIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQACgATABcAHgAbABoAHgAXABYAEgAeABsAGAAPABgAHABLAEsASwBLAEsASwBLAEsASwBLABgAGAAeAB4AHgATAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAGwASAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWAA0AEQAeAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAFAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJABYAGgAbABsAGwAeAB0AHQAeAE8AFwAeAA0AHgAeABoAGwBPAE8ADgBQAB0AHQAdAE8ATwAXAE8ATwBPABYAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwBWAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsABAAbABsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEAA0ADQBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABABQACsAKwArACsAKwArACsAKwAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUAAaABoAUABQAFAAUABQAEwAHgAbAFAAHgAEACsAKwAEAAQABAArAFAAUABQAFAAUABQACsAKwArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQACsAUABQACsAKwAEACsABAAEAAQABAAEACsAKwArACsABAAEACsAKwAEAAQABAArACsAKwAEACsAKwArACsAKwArACsAUABQAFAAUAArAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAAQABABQAFAAUAAEAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAArACsAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AGwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAKwArACsAKwArAAQABAAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAAQAUAArAFAAUABQAFAAUABQACsAKwArAFAAUABQACsAUABQAFAAUAArACsAKwBQAFAAKwBQACsAUABQACsAKwArAFAAUAArACsAKwBQAFAAUAArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAArACsAKwAEAAQABAArAAQABAAEAAQAKwArAFAAKwArACsAKwArACsABAArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAHgAeAB4AHgAeAB4AGwAeACsAKwArACsAKwAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAUABQAFAAKwArACsAKwArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwAOAFAAUABQAFAAUABQAFAAHgBQAAQABAAEAA4AUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAKwArAAQAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAKwArACsAKwArACsAUAArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAXABcAFwAXABcACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAXAArAFwAXABcAFwAXABcAFwAXABcAFwAKgBcAFwAKgAqACoAKgAqACoAKgAqACoAXAArACsAXABcAFwAXABcACsAXAArACoAKgAqACoAKgAqACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwBcAFwAXABcAFAADgAOAA4ADgAeAA4ADgAJAA4ADgANAAkAEwATABMAEwATAAkAHgATAB4AHgAeAAQABAAeAB4AHgAeAB4AHgBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAADQAEAB4ABAAeAAQAFgARABYAEQAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAAQABAAEAAQADQAEAAQAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAA0ADQAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeACsAHgAeAA4ADgANAA4AHgAeAB4AHgAeAAkACQArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgBcAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4AHgAeAB4AXABcAFwAXABcAFwAKgAqACoAKgBcAFwAXABcACoAKgAqAFwAKgAqACoAXABcACoAKgAqACoAKgAqACoAXABcAFwAKgAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwAKgBLAEsASwBLAEsASwBLAEsASwBLACoAKgAqACoAKgAqAFAAUABQAFAAUABQACsAUAArACsAKwArACsAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAKwBQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsABAAEAAQAHgANAB4AHgAeAB4AHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUAArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWABEAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAANAA0AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUAArAAQABAArACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAA0ADQAVAFwADQAeAA0AGwBcACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwAeAB4AEwATAA0ADQAOAB4AEwATAB4ABAAEAAQACQArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAHgArACsAKwATABMASwBLAEsASwBLAEsASwBLAEsASwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAXABcAFwAXABcACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXAArACsAKwAqACoAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsAHgAeAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKwArAAQASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACoAKgAqACoAKgAqACoAXAAqACoAKgAqACoAKgArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABABQAFAAUABQAFAAUABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgANAA0ADQANAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwAeAB4AHgAeAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArAA0ADQANAA0ADQBLAEsASwBLAEsASwBLAEsASwBLACsAKwArAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUAAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAAQAUABQAFAAUABQAFAABABQAFAABAAEAAQAUAArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQACsAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQACsAKwAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQACsAHgAeAB4AHgAeAB4AHgAOAB4AKwANAA0ADQANAA0ADQANAAkADQANAA0ACAAEAAsABAAEAA0ACQANAA0ADAAdAB0AHgAXABcAFgAXABcAFwAWABcAHQAdAB4AHgAUABQAFAANAAEAAQAEAAQABAAEAAQACQAaABoAGgAaABoAGgAaABoAHgAXABcAHQAVABUAHgAeAB4AHgAeAB4AGAAWABEAFQAVABUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ADQAeAA0ADQANAA0AHgANAA0ADQAHAB4AHgAeAB4AKwAEAAQABAAEAAQABAAEAAQABAAEAFAAUAArACsATwBQAFAAUABQAFAAHgAeAB4AFgARAE8AUABPAE8ATwBPAFAAUABQAFAAUAAeAB4AHgAWABEAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArABsAGwAbABsAGwAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGgAbABsAGwAbABoAGwAbABoAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAFAAGgAeAB0AHgBQAB4AGgAeAB4AHgAeAB4AHgAeAB4AHgBPAB4AUAAbAB4AHgBQAFAAUABQAFAAHgAeAB4AHQAdAB4AUAAeAFAAHgBQAB4AUABPAFAAUAAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgBQAFAAUABQAE8ATwBQAFAAUABQAFAATwBQAFAATwBQAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAUABQAFAATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABPAB4AHgArACsAKwArAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAdAB4AHgAeAB0AHQAeAB4AHQAeAB4AHgAdAB4AHQAbABsAHgAdAB4AHgAeAB4AHQAeAB4AHQAdAB0AHQAeAB4AHQAeAB0AHgAdAB0AHQAdAB0AHQAeAB0AHgAeAB4AHgAeAB0AHQAdAB0AHgAeAB4AHgAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB0AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAdAB0AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHQAdAB0AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHQAdAB4AHgAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AJQAlAB0AHQAlAB4AJQAlACUAIAAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAeAB0AJQAdAB0AHgAdAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAdAB0AHQAdACUAHgAlACUAJQAdACUAJQAdAB0AHQAlACUAHQAdACUAHQAdACUAJQAlAB4AHQAeAB4AHgAeAB0AHQAlAB0AHQAdAB0AHQAdACUAJQAlACUAJQAdACUAJQAgACUAHQAdACUAJQAlACUAJQAlACUAJQAeAB4AHgAlACUAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AFwAXABcAFwAXABcAHgATABMAJQAeAB4AHgAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARABYAEQAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANAA0AHgANAB4ADQANAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwAlACUAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACsAKwArACsAKwArACsAKwArACsAKwArAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBPAE8ATwBPAE8ATwBPAE8AJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeAAQAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUABQAAQAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAUABQAFAAUABQAAQABAAEACsABAAEACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAKwBQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAA0ADQANAA0ADQANAA0ADQAeACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAArACsAKwArAFAAUABQAFAAUAANAA0ADQANAA0ADQAUACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQANAA0ADQANAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAANACsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAB4AHgAeAB4AHgArACsAKwArACsAKwAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANAFAABAAEAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAEAAQABAAEAB4ABAAEAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsABAAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLAA0ADQArAB4ABABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUAAeAFAAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAAEAAQADgANAA0AEwATAB4AHgAeAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAFAAUABQAFAABAAEACsAKwAEAA0ADQAeAFAAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcAFwADQANAA0AKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQAKwAEAAQAKwArAAQABAAEAAQAUAAEAFAABAAEAA0ADQANACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABABQAA4AUAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANAFAADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAaABoAGgAaAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAJAAkACQAJAAkACQAJABYAEQArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AHgAeACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAARwBHABUARwAJACsAKwArACsAKwArACsAKwArACsAKwAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAKwArACsAKwArACsAKwArACsAKwArACsAKwBRAFEAUQBRACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAHgAEAAQADQAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAeAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQAHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAKwArAFAAKwArAFAAUAArACsAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAHgAeAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeACsAKwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4ABAAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAHgAeAA0ADQANAA0AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArAAQABAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwBQAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArABsAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAB4AHgAeAB4ABAAEAAQABAAEAAQABABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArABYAFgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAGgBQAFAAUAAaAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUAArACsAKwArACsAKwBQACsAKwArACsAUAArAFAAKwBQACsAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUAArAFAAKwBQACsAUAArAFAAUAArAFAAKwArAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAKwBQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeACUAJQAlAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAHgAlACUAJQAlACUAIAAgACAAJQAlACAAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACEAIQAhACEAIQAlACUAIAAgACUAJQAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAlACUAJQAlACAAIAAgACUAIAAgACAAJQAlACUAJQAlACUAJQAgACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAlAB4AJQAeACUAJQAlACUAJQAgACUAJQAlACUAHgAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACAAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABcAFwAXABUAFQAVAB4AHgAeAB4AJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAgACUAJQAgACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAIAAgACUAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACAAIAAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACAAIAAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAA==",ol=50,Wu=1,al=2,ll=3,Xu=4,Ju=5,cl=7,dl=8,ul=9,GA=10,ls=11,hl=12,cs=13,zu=14,Je=15,ds=16,Dr=17,ze=18,Yu=19,gl=20,us=21,Ye=22,hs=23,Ce=24,fA=25,$e=26,Ze=27,ve=28,$u=29,ee=30,Zu=31,Rr=32,Pr=33,gs=34,Bs=35,fs=36,qe=37,ws=38,Kr=39,xr=40,ps=41,Bl=42,qu=43,ju=[9001,65288],fl="!",K="×",kr="÷",Cs=Nu(Ou),DA=[ee,fs],vs=[Wu,al,ll,Ju],wl=[GA,dl],pl=[Ze,$e],Ah=vs.concat(wl),Cl=[ws,Kr,xr,gs,Bs],eh=[Je,cs],th=function(r,A){A===void 0&&(A="strict");var e=[],t=[],n=[];return r.forEach(function(s,i){var o=Cs.get(s);if(o>ol?(n.push(!0),o-=ol):n.push(!1),["normal","auto","loose"].indexOf(A)!==-1&&[8208,8211,12316,12448].indexOf(s)!==-1)return t.push(i),e.push(ds);if(o===Xu||o===ls){if(i===0)return t.push(i),e.push(ee);var a=e[i-1];return Ah.indexOf(a)===-1?(t.push(t[i-1]),e.push(a)):(t.push(i),e.push(ee))}if(t.push(i),o===Zu)return e.push(A==="strict"?us:qe);if(o===Bl||o===$u)return e.push(ee);if(o===qu)return s>=131072&&s<=196605||s>=196608&&s<=262141?e.push(qe):e.push(ee);e.push(o)}),[t,e,n]},ms=function(r,A,e,t){var n=t[e];if(Array.isArray(r)?r.indexOf(n)!==-1:r===n)for(var s=e;s<=t.length;){s++;var i=t[s];if(i===A)return!0;if(i!==GA)break}if(n===GA)for(var s=e;s>0;){s--;var o=t[s];if(Array.isArray(r)?r.indexOf(o)!==-1:r===o)for(var a=e;a<=t.length;){a++;var i=t[a];if(i===A)return!0;if(i!==GA)break}if(o!==GA)break}return!1},vl=function(r,A){for(var e=r;e>=0;){var t=A[e];if(t===GA)e--;else return t}return 0},rh=function(r,A,e,t,n){if(e[t]===0)return K;var s=t-1;if(Array.isArray(n)&&n[s]===!0)return K;var i=s-1,o=s+1,a=A[s],l=i>=0?A[i]:0,c=A[o];if(a===al&&c===ll)return K;if(vs.indexOf(a)!==-1)return fl;if(vs.indexOf(c)!==-1||wl.indexOf(c)!==-1)return K;if(vl(s,A)===dl)return kr;if(Cs.get(r[s])===ls||(a===Rr||a===Pr)&&Cs.get(r[o])===ls||a===cl||c===cl||a===ul||[GA,cs,Je].indexOf(a)===-1&&c===ul||[Dr,ze,Yu,Ce,ve].indexOf(c)!==-1||vl(s,A)===Ye||ms(hs,Ye,s,A)||ms([Dr,ze],us,s,A)||ms(hl,hl,s,A))return K;if(a===GA)return kr;if(a===hs||c===hs)return K;if(c===ds||a===ds)return kr;if([cs,Je,us].indexOf(c)!==-1||a===zu||l===fs&&eh.indexOf(a)!==-1||a===ve&&c===fs||c===gl||DA.indexOf(c)!==-1&&a===fA||DA.indexOf(a)!==-1&&c===fA||a===Ze&&[qe,Rr,Pr].indexOf(c)!==-1||[qe,Rr,Pr].indexOf(a)!==-1&&c===$e||DA.indexOf(a)!==-1&&pl.indexOf(c)!==-1||pl.indexOf(a)!==-1&&DA.indexOf(c)!==-1||[Ze,$e].indexOf(a)!==-1&&(c===fA||[Ye,Je].indexOf(c)!==-1&&A[o+1]===fA)||[Ye,Je].indexOf(a)!==-1&&c===fA||a===fA&&[fA,ve,Ce].indexOf(c)!==-1)return K;if([fA,ve,Ce,Dr,ze].indexOf(c)!==-1)for(var u=s;u>=0;){var d=A[u];if(d===fA)return K;if([ve,Ce].indexOf(d)!==-1)u--;else break}if([Ze,$e].indexOf(c)!==-1)for(var u=[Dr,ze].indexOf(a)!==-1?i:s;u>=0;){var d=A[u];if(d===fA)return K;if([ve,Ce].indexOf(d)!==-1)u--;else break}if(ws===a&&[ws,Kr,gs,Bs].indexOf(c)!==-1||[Kr,gs].indexOf(a)!==-1&&[Kr,xr].indexOf(c)!==-1||[xr,Bs].indexOf(a)!==-1&&c===xr||Cl.indexOf(a)!==-1&&[gl,$e].indexOf(c)!==-1||Cl.indexOf(c)!==-1&&a===Ze||DA.indexOf(a)!==-1&&DA.indexOf(c)!==-1||a===Ce&&DA.indexOf(c)!==-1||DA.concat(fA).indexOf(a)!==-1&&c===Ye&&ju.indexOf(r[o])===-1||DA.concat(fA).indexOf(c)!==-1&&a===ze)return K;if(a===ps&&c===ps){for(var B=e[s],g=1;B>0&&(B--,A[B]===ps);)g++;if(g%2!==0)return K}return a===Rr&&c===Pr?K:kr},nh=function(r,A){A||(A={lineBreak:"normal",wordBreak:"normal"});var e=th(r,A.lineBreak),t=e[0],n=e[1],s=e[2];(A.wordBreak==="break-all"||A.wordBreak==="break-word")&&(n=n.map(function(o){return[fA,ee,Bl].indexOf(o)!==-1?qe:o}));var i=A.wordBreak==="keep-all"?s.map(function(o,a){return o&&r[a]>=19968&&r[a]<=40959}):void 0;return[t,n,i]},sh=function(){function r(A,e,t,n){this.codePoints=A,this.required=e===fl,this.start=t,this.end=n}return r.prototype.slice=function(){return X.apply(void 0,this.codePoints.slice(this.start,this.end))},r}(),ih=function(r,A){var e=Hr(r),t=nh(e,A),n=t[0],s=t[1],i=t[2],o=e.length,a=0,l=0;return{next:function(){if(l>=o)return{done:!0,value:null};for(var c=K;l<o&&(c=rh(e,s,n,++l,i))===K;);if(c!==K||l===o){var u=new sh(e,c,a,l);return a=l,{value:u,done:!1}}return{done:!0,value:null}}}},oh=1,ah=2,je=4,ml=8,Gr=10,Fl=47,At=92,lh=9,ch=32,Nr=34,et=61,dh=35,uh=36,hh=37,_r=39,Vr=40,tt=41,gh=95,gA=45,Bh=33,fh=60,wh=62,ph=64,Ch=91,vh=93,mh=61,Fh=123,Or=63,Qh=125,Ql=124,Uh=126,Eh=128,Ul=65533,Fs=42,te=43,yh=44,Sh=58,Ih=59,rt=46,Th=0,Hh=8,Lh=11,bh=14,Mh=31,Dh=127,EA=-1,El=48,yl=97,Sl=101,Rh=102,Ph=117,Kh=122,Il=65,Tl=69,Hl=70,xh=85,kh=90,iA=function(r){return r>=El&&r<=57},Gh=function(r){return r>=55296&&r<=57343},me=function(r){return iA(r)||r>=Il&&r<=Hl||r>=yl&&r<=Rh},Nh=function(r){return r>=yl&&r<=Kh},_h=function(r){return r>=Il&&r<=kh},Vh=function(r){return Nh(r)||_h(r)},Oh=function(r){return r>=Eh},Wr=function(r){return r===Gr||r===lh||r===ch},Xr=function(r){return Vh(r)||Oh(r)||r===gh},Ll=function(r){return Xr(r)||iA(r)||r===gA},Wh=function(r){return r>=Th&&r<=Hh||r===Lh||r>=bh&&r<=Mh||r===Dh},NA=function(r,A){return r!==At?!1:A!==Gr},Jr=function(r,A,e){return r===gA?Xr(A)||NA(A,e):Xr(r)?!0:!!(r===At&&NA(r,A))},Qs=function(r,A,e){return r===te||r===gA?iA(A)?!0:A===rt&&iA(e):iA(r===rt?A:r)},Xh=function(r){var A=0,e=1;(r[A]===te||r[A]===gA)&&(r[A]===gA&&(e=-1),A++);for(var t=[];iA(r[A]);)t.push(r[A++]);var n=t.length?parseInt(X.apply(void 0,t),10):0;r[A]===rt&&A++;for(var s=[];iA(r[A]);)s.push(r[A++]);var i=s.length,o=i?parseInt(X.apply(void 0,s),10):0;(r[A]===Tl||r[A]===Sl)&&A++;var a=1;(r[A]===te||r[A]===gA)&&(r[A]===gA&&(a=-1),A++);for(var l=[];iA(r[A]);)l.push(r[A++]);var c=l.length?parseInt(X.apply(void 0,l),10):0;return e*(n+o*Math.pow(10,-i))*Math.pow(10,a*c)},Jh={type:2},zh={type:3},Yh={type:4},$h={type:13},Zh={type:8},qh={type:21},jh={type:9},Ag={type:10},eg={type:11},tg={type:12},rg={type:14},zr={type:23},ng={type:1},sg={type:25},ig={type:24},og={type:26},ag={type:27},lg={type:28},cg={type:29},dg={type:31},Us={type:32},bl=function(){function r(){this._value=[]}return r.prototype.write=function(A){this._value=this._value.concat(Hr(A))},r.prototype.read=function(){for(var A=[],e=this.consumeToken();e!==Us;)A.push(e),e=this.consumeToken();return A},r.prototype.consumeToken=function(){var A=this.consumeCodePoint();switch(A){case Nr:return this.consumeStringToken(Nr);case dh:var e=this.peekCodePoint(0),t=this.peekCodePoint(1),n=this.peekCodePoint(2);if(Ll(e)||NA(t,n)){var s=Jr(e,t,n)?ah:oh,i=this.consumeName();return{type:5,value:i,flags:s}}break;case uh:if(this.peekCodePoint(0)===et)return this.consumeCodePoint(),$h;break;case _r:return this.consumeStringToken(_r);case Vr:return Jh;case tt:return zh;case Fs:if(this.peekCodePoint(0)===et)return this.consumeCodePoint(),rg;break;case te:if(Qs(A,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(A),this.consumeNumericToken();break;case yh:return Yh;case gA:var o=A,a=this.peekCodePoint(0),l=this.peekCodePoint(1);if(Qs(o,a,l))return this.reconsumeCodePoint(A),this.consumeNumericToken();if(Jr(o,a,l))return this.reconsumeCodePoint(A),this.consumeIdentLikeToken();if(a===gA&&l===wh)return this.consumeCodePoint(),this.consumeCodePoint(),ig;break;case rt:if(Qs(A,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(A),this.consumeNumericToken();break;case Fl:if(this.peekCodePoint(0)===Fs)for(this.consumeCodePoint();;){var c=this.consumeCodePoint();if(c===Fs&&(c=this.consumeCodePoint(),c===Fl))return this.consumeToken();if(c===EA)return this.consumeToken()}break;case Sh:return og;case Ih:return ag;case fh:if(this.peekCodePoint(0)===Bh&&this.peekCodePoint(1)===gA&&this.peekCodePoint(2)===gA)return this.consumeCodePoint(),this.consumeCodePoint(),sg;break;case ph:var u=this.peekCodePoint(0),d=this.peekCodePoint(1),B=this.peekCodePoint(2);if(Jr(u,d,B)){var i=this.consumeName();return{type:7,value:i}}break;case Ch:return lg;case At:if(NA(A,this.peekCodePoint(0)))return this.reconsumeCodePoint(A),this.consumeIdentLikeToken();break;case vh:return cg;case mh:if(this.peekCodePoint(0)===et)return this.consumeCodePoint(),Zh;break;case Fh:return eg;case Qh:return tg;case Ph:case xh:var g=this.peekCodePoint(0),f=this.peekCodePoint(1);return g===te&&(me(f)||f===Or)&&(this.consumeCodePoint(),this.consumeUnicodeRangeToken()),this.reconsumeCodePoint(A),this.consumeIdentLikeToken();case Ql:if(this.peekCodePoint(0)===et)return this.consumeCodePoint(),jh;if(this.peekCodePoint(0)===Ql)return this.consumeCodePoint(),qh;break;case Uh:if(this.peekCodePoint(0)===et)return this.consumeCodePoint(),Ag;break;case EA:return Us}return Wr(A)?(this.consumeWhiteSpace(),dg):iA(A)?(this.reconsumeCodePoint(A),this.consumeNumericToken()):Xr(A)?(this.reconsumeCodePoint(A),this.consumeIdentLikeToken()):{type:6,value:X(A)}},r.prototype.consumeCodePoint=function(){var A=this._value.shift();return typeof A>"u"?-1:A},r.prototype.reconsumeCodePoint=function(A){this._value.unshift(A)},r.prototype.peekCodePoint=function(A){return A>=this._value.length?-1:this._value[A]},r.prototype.consumeUnicodeRangeToken=function(){for(var A=[],e=this.consumeCodePoint();me(e)&&A.length<6;)A.push(e),e=this.consumeCodePoint();for(var t=!1;e===Or&&A.length<6;)A.push(e),e=this.consumeCodePoint(),t=!0;if(t){var n=parseInt(X.apply(void 0,A.map(function(a){return a===Or?El:a})),16),s=parseInt(X.apply(void 0,A.map(function(a){return a===Or?Hl:a})),16);return{type:30,start:n,end:s}}var i=parseInt(X.apply(void 0,A),16);if(this.peekCodePoint(0)===gA&&me(this.peekCodePoint(1))){this.consumeCodePoint(),e=this.consumeCodePoint();for(var o=[];me(e)&&o.length<6;)o.push(e),e=this.consumeCodePoint();var s=parseInt(X.apply(void 0,o),16);return{type:30,start:i,end:s}}else return{type:30,start:i,end:i}},r.prototype.consumeIdentLikeToken=function(){var A=this.consumeName();return A.toLowerCase()==="url"&&this.peekCodePoint(0)===Vr?(this.consumeCodePoint(),this.consumeUrlToken()):this.peekCodePoint(0)===Vr?(this.consumeCodePoint(),{type:19,value:A}):{type:20,value:A}},r.prototype.consumeUrlToken=function(){var A=[];if(this.consumeWhiteSpace(),this.peekCodePoint(0)===EA)return{type:22,value:""};var e=this.peekCodePoint(0);if(e===_r||e===Nr){var t=this.consumeStringToken(this.consumeCodePoint());return t.type===0&&(this.consumeWhiteSpace(),this.peekCodePoint(0)===EA||this.peekCodePoint(0)===tt)?(this.consumeCodePoint(),{type:22,value:t.value}):(this.consumeBadUrlRemnants(),zr)}for(;;){var n=this.consumeCodePoint();if(n===EA||n===tt)return{type:22,value:X.apply(void 0,A)};if(Wr(n))return this.consumeWhiteSpace(),this.peekCodePoint(0)===EA||this.peekCodePoint(0)===tt?(this.consumeCodePoint(),{type:22,value:X.apply(void 0,A)}):(this.consumeBadUrlRemnants(),zr);if(n===Nr||n===_r||n===Vr||Wh(n))return this.consumeBadUrlRemnants(),zr;if(n===At)if(NA(n,this.peekCodePoint(0)))A.push(this.consumeEscapedCodePoint());else return this.consumeBadUrlRemnants(),zr;else A.push(n)}},r.prototype.consumeWhiteSpace=function(){for(;Wr(this.peekCodePoint(0));)this.consumeCodePoint()},r.prototype.consumeBadUrlRemnants=function(){for(;;){var A=this.consumeCodePoint();if(A===tt||A===EA)return;NA(A,this.peekCodePoint(0))&&this.consumeEscapedCodePoint()}},r.prototype.consumeStringSlice=function(A){for(var e=5e4,t="";A>0;){var n=Math.min(e,A);t+=X.apply(void 0,this._value.splice(0,n)),A-=n}return this._value.shift(),t},r.prototype.consumeStringToken=function(A){var e="",t=0;do{var n=this._value[t];if(n===EA||n===void 0||n===A)return e+=this.consumeStringSlice(t),{type:0,value:e};if(n===Gr)return this._value.splice(0,t),ng;if(n===At){var s=this._value[t+1];s!==EA&&s!==void 0&&(s===Gr?(e+=this.consumeStringSlice(t),t=-1,this._value.shift()):NA(n,s)&&(e+=this.consumeStringSlice(t),e+=X(this.consumeEscapedCodePoint()),t=-1))}t++}while(!0)},r.prototype.consumeNumber=function(){var A=[],e=je,t=this.peekCodePoint(0);for((t===te||t===gA)&&A.push(this.consumeCodePoint());iA(this.peekCodePoint(0));)A.push(this.consumeCodePoint());t=this.peekCodePoint(0);var n=this.peekCodePoint(1);if(t===rt&&iA(n))for(A.push(this.consumeCodePoint(),this.consumeCodePoint()),e=ml;iA(this.peekCodePoint(0));)A.push(this.consumeCodePoint());t=this.peekCodePoint(0),n=this.peekCodePoint(1);var s=this.peekCodePoint(2);if((t===Tl||t===Sl)&&((n===te||n===gA)&&iA(s)||iA(n)))for(A.push(this.consumeCodePoint(),this.consumeCodePoint()),e=ml;iA(this.peekCodePoint(0));)A.push(this.consumeCodePoint());return[Xh(A),e]},r.prototype.consumeNumericToken=function(){var A=this.consumeNumber(),e=A[0],t=A[1],n=this.peekCodePoint(0),s=this.peekCodePoint(1),i=this.peekCodePoint(2);if(Jr(n,s,i)){var o=this.consumeName();return{type:15,number:e,flags:t,unit:o}}return n===hh?(this.consumeCodePoint(),{type:16,number:e,flags:t}):{type:17,number:e,flags:t}},r.prototype.consumeEscapedCodePoint=function(){var A=this.consumeCodePoint();if(me(A)){for(var e=X(A);me(this.peekCodePoint(0))&&e.length<6;)e+=X(this.consumeCodePoint());Wr(this.peekCodePoint(0))&&this.consumeCodePoint();var t=parseInt(e,16);return t===0||Gh(t)||t>1114111?Ul:t}return A===EA?Ul:A},r.prototype.consumeName=function(){for(var A="";;){var e=this.consumeCodePoint();if(Ll(e))A+=X(e);else if(NA(e,this.peekCodePoint(0)))A+=X(this.consumeEscapedCodePoint());else return this.reconsumeCodePoint(e),A}},r}(),Ml=function(){function r(A){this._tokens=A}return r.create=function(A){var e=new bl;return e.write(A),new r(e.read())},r.parseValue=function(A){return r.create(A).parseComponentValue()},r.parseValues=function(A){return r.create(A).parseComponentValues()},r.prototype.parseComponentValue=function(){for(var A=this.consumeToken();A.type===31;)A=this.consumeToken();if(A.type===32)throw new SyntaxError("Error parsing CSS component value, unexpected EOF");this.reconsumeToken(A);var e=this.consumeComponentValue();do A=this.consumeToken();while(A.type===31);if(A.type===32)return e;throw new SyntaxError("Error parsing CSS component value, multiple values found when expecting only one")},r.prototype.parseComponentValues=function(){for(var A=[];;){var e=this.consumeComponentValue();if(e.type===32)return A;A.push(e),A.push()}},r.prototype.consumeComponentValue=function(){var A=this.consumeToken();switch(A.type){case 11:case 28:case 2:return this.consumeSimpleBlock(A.type);case 19:return this.consumeFunction(A)}return A},r.prototype.consumeSimpleBlock=function(A){for(var e={type:A,values:[]},t=this.consumeToken();;){if(t.type===32||hg(t,A))return e;this.reconsumeToken(t),e.values.push(this.consumeComponentValue()),t=this.consumeToken()}},r.prototype.consumeFunction=function(A){for(var e={name:A.value,values:[],type:18};;){var t=this.consumeToken();if(t.type===32||t.type===3)return e;this.reconsumeToken(t),e.values.push(this.consumeComponentValue())}},r.prototype.consumeToken=function(){var A=this._tokens.shift();return typeof A>"u"?Us:A},r.prototype.reconsumeToken=function(A){this._tokens.unshift(A)},r}(),nt=function(r){return r.type===15},Fe=function(r){return r.type===17},N=function(r){return r.type===20},ug=function(r){return r.type===0},Es=function(r,A){return N(r)&&r.value===A},Dl=function(r){return r.type!==31},Qe=function(r){return r.type!==31&&r.type!==4},yA=function(r){var A=[],e=[];return r.forEach(function(t){if(t.type===4){if(e.length===0)throw new Error("Error parsing function args, zero tokens for arg");A.push(e),e=[];return}t.type!==31&&e.push(t)}),e.length&&A.push(e),A},hg=function(r,A){return A===11&&r.type===12||A===28&&r.type===29?!0:A===2&&r.type===3},_A=function(r){return r.type===17||r.type===15},Y=function(r){return r.type===16||_A(r)},Rl=function(r){return r.length>1?[r[0],r[1]]:[r[0]]},tA={type:17,number:0,flags:je},ys={type:16,number:50,flags:je},VA={type:16,number:100,flags:je},st=function(r,A,e){var t=r[0],n=r[1];return[_(t,A),_(typeof n<"u"?n:t,e)]},_=function(r,A){if(r.type===16)return r.number/100*A;if(nt(r))switch(r.unit){case"rem":case"em":return 16*r.number;case"px":default:return r.number}return r.number},Pl="deg",Kl="grad",xl="rad",kl="turn",Yr={name:"angle",parse:function(r,A){if(A.type===15)switch(A.unit){case Pl:return Math.PI*A.number/180;case Kl:return Math.PI/200*A.number;case xl:return A.number;case kl:return Math.PI*2*A.number}throw new Error("Unsupported angle type")}},Gl=function(r){return r.type===15&&(r.unit===Pl||r.unit===Kl||r.unit===xl||r.unit===kl)},Nl=function(r){var A=r.filter(N).map(function(e){return e.value}).join(" ");switch(A){case"to bottom right":case"to right bottom":case"left top":case"top left":return[tA,tA];case"to top":case"bottom":return wA(0);case"to bottom left":case"to left bottom":case"right top":case"top right":return[tA,VA];case"to right":case"left":return wA(90);case"to top left":case"to left top":case"right bottom":case"bottom right":return[VA,VA];case"to bottom":case"top":return wA(180);case"to top right":case"to right top":case"left bottom":case"bottom left":return[VA,tA];case"to left":case"right":return wA(270)}return 0},wA=function(r){return Math.PI*r/180},OA={name:"color",parse:function(r,A){if(A.type===18){var e=gg[A.name];if(typeof e>"u")throw new Error('Attempting to parse an unsupported color function "'+A.name+'"');return e(r,A.values)}if(A.type===5){if(A.value.length===3){var t=A.value.substring(0,1),n=A.value.substring(1,2),s=A.value.substring(2,3);return XA(parseInt(t+t,16),parseInt(n+n,16),parseInt(s+s,16),1)}if(A.value.length===4){var t=A.value.substring(0,1),n=A.value.substring(1,2),s=A.value.substring(2,3),i=A.value.substring(3,4);return XA(parseInt(t+t,16),parseInt(n+n,16),parseInt(s+s,16),parseInt(i+i,16)/255)}if(A.value.length===6){var t=A.value.substring(0,2),n=A.value.substring(2,4),s=A.value.substring(4,6);return XA(parseInt(t,16),parseInt(n,16),parseInt(s,16),1)}if(A.value.length===8){var t=A.value.substring(0,2),n=A.value.substring(2,4),s=A.value.substring(4,6),i=A.value.substring(6,8);return XA(parseInt(t,16),parseInt(n,16),parseInt(s,16),parseInt(i,16)/255)}}if(A.type===20){var o=RA[A.value.toUpperCase()];if(typeof o<"u")return o}return RA.TRANSPARENT}},WA=function(r){return(255&r)===0},AA=function(r){var A=255&r,e=255&r>>8,t=255&r>>16,n=255&r>>24;return A<255?"rgba("+n+","+t+","+e+","+A/255+")":"rgb("+n+","+t+","+e+")"},XA=function(r,A,e,t){return(r<<24|A<<16|e<<8|Math.round(t*255)<<0)>>>0},_l=function(r,A){if(r.type===17)return r.number;if(r.type===16){var e=A===3?1:255;return A===3?r.number/100*e:Math.round(r.number/100*e)}return 0},Vl=function(r,A){var e=A.filter(Qe);if(e.length===3){var t=e.map(_l),n=t[0],s=t[1],i=t[2];return XA(n,s,i,1)}if(e.length===4){var o=e.map(_l),n=o[0],s=o[1],i=o[2],a=o[3];return XA(n,s,i,a)}return 0};function Ss(r,A,e){return e<0&&(e+=1),e>=1&&(e-=1),e<.16666666666666666?(A-r)*e*6+r:e<.5?A:e<.6666666666666666?(A-r)*6*(.6666666666666666-e)+r:r}var Ol=function(r,A){var e=A.filter(Qe),t=e[0],n=e[1],s=e[2],i=e[3],o=(t.type===17?wA(t.number):Yr.parse(r,t))/(Math.PI*2),a=Y(n)?n.number/100:0,l=Y(s)?s.number/100:0,c=typeof i<"u"&&Y(i)?_(i,1):1;if(a===0)return XA(l*255,l*255,l*255,1);var u=l<=.5?l*(a+1):l+a-l*a,d=l*2-u,B=Ss(d,u,o+1/3),g=Ss(d,u,o),f=Ss(d,u,o-1/3);return XA(B*255,g*255,f*255,c)},gg={hsl:Ol,hsla:Ol,rgb:Vl,rgba:Vl},it=function(r,A){return OA.parse(r,Ml.create(A).parseComponentValue())},RA={ALICEBLUE:4042850303,ANTIQUEWHITE:4209760255,AQUA:16777215,AQUAMARINE:2147472639,AZURE:4043309055,BEIGE:4126530815,BISQUE:4293182719,BLACK:255,BLANCHEDALMOND:4293643775,BLUE:65535,BLUEVIOLET:2318131967,BROWN:2771004159,BURLYWOOD:3736635391,CADETBLUE:1604231423,CHARTREUSE:2147418367,CHOCOLATE:3530104575,CORAL:4286533887,CORNFLOWERBLUE:1687547391,CORNSILK:4294499583,CRIMSON:3692313855,CYAN:16777215,DARKBLUE:35839,DARKCYAN:9145343,DARKGOLDENROD:3095837695,DARKGRAY:2846468607,DARKGREEN:6553855,DARKGREY:2846468607,DARKKHAKI:3182914559,DARKMAGENTA:2332068863,DARKOLIVEGREEN:1433087999,DARKORANGE:4287365375,DARKORCHID:2570243327,DARKRED:2332033279,DARKSALMON:3918953215,DARKSEAGREEN:2411499519,DARKSLATEBLUE:1211993087,DARKSLATEGRAY:793726975,DARKSLATEGREY:793726975,DARKTURQUOISE:13554175,DARKVIOLET:2483082239,DEEPPINK:4279538687,DEEPSKYBLUE:12582911,DIMGRAY:1768516095,DIMGREY:1768516095,DODGERBLUE:512819199,FIREBRICK:2988581631,FLORALWHITE:4294635775,FORESTGREEN:579543807,FUCHSIA:4278255615,GAINSBORO:3705462015,GHOSTWHITE:4177068031,GOLD:4292280575,GOLDENROD:3668254975,GRAY:2155905279,GREEN:8388863,GREENYELLOW:2919182335,GREY:2155905279,HONEYDEW:4043305215,HOTPINK:4285117695,INDIANRED:3445382399,INDIGO:1258324735,IVORY:4294963455,KHAKI:4041641215,LAVENDER:3873897215,LAVENDERBLUSH:4293981695,LAWNGREEN:2096890111,LEMONCHIFFON:4294626815,LIGHTBLUE:2916673279,LIGHTCORAL:4034953471,LIGHTCYAN:3774873599,LIGHTGOLDENRODYELLOW:4210742015,LIGHTGRAY:3553874943,LIGHTGREEN:2431553791,LIGHTGREY:3553874943,LIGHTPINK:4290167295,LIGHTSALMON:4288707327,LIGHTSEAGREEN:548580095,LIGHTSKYBLUE:2278488831,LIGHTSLATEGRAY:2005441023,LIGHTSLATEGREY:2005441023,LIGHTSTEELBLUE:2965692159,LIGHTYELLOW:4294959359,LIME:16711935,LIMEGREEN:852308735,LINEN:4210091775,MAGENTA:4278255615,MAROON:2147483903,MEDIUMAQUAMARINE:1724754687,MEDIUMBLUE:52735,MEDIUMORCHID:3126187007,MEDIUMPURPLE:2473647103,MEDIUMSEAGREEN:1018393087,MEDIUMSLATEBLUE:2070474495,MEDIUMSPRINGGREEN:16423679,MEDIUMTURQUOISE:1221709055,MEDIUMVIOLETRED:3340076543,MIDNIGHTBLUE:421097727,MINTCREAM:4127193855,MISTYROSE:4293190143,MOCCASIN:4293178879,NAVAJOWHITE:4292783615,NAVY:33023,OLDLACE:4260751103,OLIVE:2155872511,OLIVEDRAB:1804477439,ORANGE:4289003775,ORANGERED:4282712319,ORCHID:3664828159,PALEGOLDENROD:4008225535,PALEGREEN:2566625535,PALETURQUOISE:2951671551,PALEVIOLETRED:3681588223,PAPAYAWHIP:4293907967,PEACHPUFF:4292524543,PERU:3448061951,PINK:4290825215,PLUM:3718307327,POWDERBLUE:2967529215,PURPLE:2147516671,REBECCAPURPLE:1714657791,RED:4278190335,ROSYBROWN:3163525119,ROYALBLUE:1097458175,SADDLEBROWN:2336560127,SALMON:4202722047,SANDYBROWN:4104413439,SEAGREEN:780883967,SEASHELL:4294307583,SIENNA:2689740287,SILVER:3233857791,SKYBLUE:2278484991,SLATEBLUE:1784335871,SLATEGRAY:1887473919,SLATEGREY:1887473919,SNOW:4294638335,SPRINGGREEN:16744447,STEELBLUE:1182971135,TAN:3535047935,TEAL:8421631,THISTLE:3636451583,TOMATO:4284696575,TRANSPARENT:0,TURQUOISE:1088475391,VIOLET:4001558271,WHEAT:4125012991,WHITE:4294967295,WHITESMOKE:4126537215,YELLOW:4294902015,YELLOWGREEN:2597139199},Bg={name:"background-clip",initialValue:"border-box",prefix:!1,type:1,parse:function(r,A){return A.map(function(e){if(N(e))switch(e.value){case"padding-box":return 1;case"content-box":return 2}return 0})}},fg={name:"background-color",initialValue:"transparent",prefix:!1,type:3,format:"color"},$r=function(r,A){var e=OA.parse(r,A[0]),t=A[1];return t&&Y(t)?{color:e,stop:t}:{color:e,stop:null}},Wl=function(r,A){var e=r[0],t=r[r.length-1];e.stop===null&&(e.stop=tA),t.stop===null&&(t.stop=VA);for(var n=[],s=0,i=0;i<r.length;i++){var o=r[i].stop;if(o!==null){var a=_(o,A);a>s?n.push(a):n.push(s),s=a}else n.push(null)}for(var l=null,i=0;i<n.length;i++){var c=n[i];if(c===null)l===null&&(l=i);else if(l!==null){for(var u=i-l,d=n[l-1],B=(c-d)/(u+1),g=1;g<=u;g++)n[l+g-1]=B*g;l=null}}return r.map(function(f,m){var F=f.color;return{color:F,stop:Math.max(Math.min(1,n[m]/A),0)}})},wg=function(r,A,e){var t=A/2,n=e/2,s=_(r[0],A)-t,i=n-_(r[1],e);return(Math.atan2(i,s)+Math.PI*2)%(Math.PI*2)},pg=function(r,A,e){var t=typeof r=="number"?r:wg(r,A,e),n=Math.abs(A*Math.sin(t))+Math.abs(e*Math.cos(t)),s=A/2,i=e/2,o=n/2,a=Math.sin(t-Math.PI/2)*o,l=Math.cos(t-Math.PI/2)*o;return[n,s-l,s+l,i-a,i+a]},QA=function(r,A){return Math.sqrt(r*r+A*A)},Xl=function(r,A,e,t,n){var s=[[0,0],[0,A],[r,0],[r,A]];return s.reduce(function(i,o){var a=o[0],l=o[1],c=QA(e-a,t-l);return(n?c<i.optimumDistance:c>i.optimumDistance)?{optimumCorner:o,optimumDistance:c}:i},{optimumDistance:n?1/0:-1/0,optimumCorner:null}).optimumCorner},Cg=function(r,A,e,t,n){var s=0,i=0;switch(r.size){case 0:r.shape===0?s=i=Math.min(Math.abs(A),Math.abs(A-t),Math.abs(e),Math.abs(e-n)):r.shape===1&&(s=Math.min(Math.abs(A),Math.abs(A-t)),i=Math.min(Math.abs(e),Math.abs(e-n)));break;case 2:if(r.shape===0)s=i=Math.min(QA(A,e),QA(A,e-n),QA(A-t,e),QA(A-t,e-n));else if(r.shape===1){var o=Math.min(Math.abs(e),Math.abs(e-n))/Math.min(Math.abs(A),Math.abs(A-t)),a=Xl(t,n,A,e,!0),l=a[0],c=a[1];s=QA(l-A,(c-e)/o),i=o*s}break;case 1:r.shape===0?s=i=Math.max(Math.abs(A),Math.abs(A-t),Math.abs(e),Math.abs(e-n)):r.shape===1&&(s=Math.max(Math.abs(A),Math.abs(A-t)),i=Math.max(Math.abs(e),Math.abs(e-n)));break;case 3:if(r.shape===0)s=i=Math.max(QA(A,e),QA(A,e-n),QA(A-t,e),QA(A-t,e-n));else if(r.shape===1){var o=Math.max(Math.abs(e),Math.abs(e-n))/Math.max(Math.abs(A),Math.abs(A-t)),u=Xl(t,n,A,e,!1),l=u[0],c=u[1];s=QA(l-A,(c-e)/o),i=o*s}break}return Array.isArray(r.size)&&(s=_(r.size[0],t),i=r.size.length===2?_(r.size[1],n):s),[s,i]},vg=function(r,A){var e=wA(180),t=[];return yA(A).forEach(function(n,s){if(s===0){var i=n[0];if(i.type===20&&i.value==="to"){e=Nl(n);return}else if(Gl(i)){e=Yr.parse(r,i);return}}var o=$r(r,n);t.push(o)}),{angle:e,stops:t,type:1}},Zr=function(r,A){var e=wA(180),t=[];return yA(A).forEach(function(n,s){if(s===0){var i=n[0];if(i.type===20&&["top","left","right","bottom"].indexOf(i.value)!==-1){e=Nl(n);return}else if(Gl(i)){e=(Yr.parse(r,i)+wA(270))%wA(360);return}}var o=$r(r,n);t.push(o)}),{angle:e,stops:t,type:1}},mg=function(r,A){var e=wA(180),t=[],n=1,s=0,i=3,o=[];return yA(A).forEach(function(a,l){var c=a[0];if(l===0){if(N(c)&&c.value==="linear"){n=1;return}else if(N(c)&&c.value==="radial"){n=2;return}}if(c.type===18){if(c.name==="from"){var u=OA.parse(r,c.values[0]);t.push({stop:tA,color:u})}else if(c.name==="to"){var u=OA.parse(r,c.values[0]);t.push({stop:VA,color:u})}else if(c.name==="color-stop"){var d=c.values.filter(Qe);if(d.length===2){var u=OA.parse(r,d[1]),B=d[0];Fe(B)&&t.push({stop:{type:16,number:B.number*100,flags:B.flags},color:u})}}}}),n===1?{angle:(e+wA(180))%wA(360),stops:t,type:n}:{size:i,shape:s,stops:t,position:o,type:n}},Jl="closest-side",zl="farthest-side",Yl="closest-corner",$l="farthest-corner",Zl="circle",ql="ellipse",jl="cover",Ac="contain",Fg=function(r,A){var e=0,t=3,n=[],s=[];return yA(A).forEach(function(i,o){var a=!0;if(o===0){var l=!1;a=i.reduce(function(u,d){if(l)if(N(d))switch(d.value){case"center":return s.push(ys),u;case"top":case"left":return s.push(tA),u;case"right":case"bottom":return s.push(VA),u}else(Y(d)||_A(d))&&s.push(d);else if(N(d))switch(d.value){case Zl:return e=0,!1;case ql:return e=1,!1;case"at":return l=!0,!1;case Jl:return t=0,!1;case jl:case zl:return t=1,!1;case Ac:case Yl:return t=2,!1;case $l:return t=3,!1}else if(_A(d)||Y(d))return Array.isArray(t)||(t=[]),t.push(d),!1;return u},a)}if(a){var c=$r(r,i);n.push(c)}}),{size:t,shape:e,stops:n,position:s,type:2}},qr=function(r,A){var e=0,t=3,n=[],s=[];return yA(A).forEach(function(i,o){var a=!0;if(o===0?a=i.reduce(function(c,u){if(N(u))switch(u.value){case"center":return s.push(ys),!1;case"top":case"left":return s.push(tA),!1;case"right":case"bottom":return s.push(VA),!1}else if(Y(u)||_A(u))return s.push(u),!1;return c},a):o===1&&(a=i.reduce(function(c,u){if(N(u))switch(u.value){case Zl:return e=0,!1;case ql:return e=1,!1;case Ac:case Jl:return t=0,!1;case zl:return t=1,!1;case Yl:return t=2,!1;case jl:case $l:return t=3,!1}else if(_A(u)||Y(u))return Array.isArray(t)||(t=[]),t.push(u),!1;return c},a)),a){var l=$r(r,i);n.push(l)}}),{size:t,shape:e,stops:n,position:s,type:2}},Qg=function(r){return r.type===1},Ug=function(r){return r.type===2},Is={name:"image",parse:function(r,A){if(A.type===22){var e={url:A.value,type:0};return r.cache.addImage(A.value),e}if(A.type===18){var t=ec[A.name];if(typeof t>"u")throw new Error('Attempting to parse an unsupported image function "'+A.name+'"');return t(r,A.values)}throw new Error("Unsupported image type "+A.type)}};function Eg(r){return!(r.type===20&&r.value==="none")&&(r.type!==18||!!ec[r.name])}var ec={"linear-gradient":vg,"-moz-linear-gradient":Zr,"-ms-linear-gradient":Zr,"-o-linear-gradient":Zr,"-webkit-linear-gradient":Zr,"radial-gradient":Fg,"-moz-radial-gradient":qr,"-ms-radial-gradient":qr,"-o-radial-gradient":qr,"-webkit-radial-gradient":qr,"-webkit-gradient":mg},yg={name:"background-image",initialValue:"none",type:1,prefix:!1,parse:function(r,A){if(A.length===0)return[];var e=A[0];return e.type===20&&e.value==="none"?[]:A.filter(function(t){return Qe(t)&&Eg(t)}).map(function(t){return Is.parse(r,t)})}},Sg={name:"background-origin",initialValue:"border-box",prefix:!1,type:1,parse:function(r,A){return A.map(function(e){if(N(e))switch(e.value){case"padding-box":return 1;case"content-box":return 2}return 0})}},Ig={name:"background-position",initialValue:"0% 0%",type:1,prefix:!1,parse:function(r,A){return yA(A).map(function(e){return e.filter(Y)}).map(Rl)}},Tg={name:"background-repeat",initialValue:"repeat",prefix:!1,type:1,parse:function(r,A){return yA(A).map(function(e){return e.filter(N).map(function(t){return t.value}).join(" ")}).map(Hg)}},Hg=function(r){switch(r){case"no-repeat":return 1;case"repeat-x":case"repeat no-repeat":return 2;case"repeat-y":case"no-repeat repeat":return 3;case"repeat":default:return 0}},Ue;(function(r){r.AUTO="auto",r.CONTAIN="contain",r.COVER="cover"})(Ue||(Ue={}));var Lg={name:"background-size",initialValue:"0",prefix:!1,type:1,parse:function(r,A){return yA(A).map(function(e){return e.filter(bg)})}},bg=function(r){return N(r)||Y(r)},jr=function(r){return{name:"border-"+r+"-color",initialValue:"transparent",prefix:!1,type:3,format:"color"}},Mg=jr("top"),Dg=jr("right"),Rg=jr("bottom"),Pg=jr("left"),An=function(r){return{name:"border-radius-"+r,initialValue:"0 0",prefix:!1,type:1,parse:function(A,e){return Rl(e.filter(Y))}}},Kg=An("top-left"),xg=An("top-right"),kg=An("bottom-right"),Gg=An("bottom-left"),en=function(r){return{name:"border-"+r+"-style",initialValue:"solid",prefix:!1,type:2,parse:function(A,e){switch(e){case"none":return 0;case"dashed":return 2;case"dotted":return 3;case"double":return 4}return 1}}},Ng=en("top"),_g=en("right"),Vg=en("bottom"),Og=en("left"),tn=function(r){return{name:"border-"+r+"-width",initialValue:"0",type:0,prefix:!1,parse:function(A,e){return nt(e)?e.number:0}}},Wg=tn("top"),Xg=tn("right"),Jg=tn("bottom"),zg=tn("left"),Yg={name:"color",initialValue:"transparent",prefix:!1,type:3,format:"color"},$g={name:"direction",initialValue:"ltr",prefix:!1,type:2,parse:function(r,A){switch(A){case"rtl":return 1;case"ltr":default:return 0}}},Zg={name:"display",initialValue:"inline-block",prefix:!1,type:1,parse:function(r,A){return A.filter(N).reduce(function(e,t){return e|qg(t.value)},0)}},qg=function(r){switch(r){case"block":case"-webkit-box":return 2;case"inline":return 4;case"run-in":return 8;case"flow":return 16;case"flow-root":return 32;case"table":return 64;case"flex":case"-webkit-flex":return 128;case"grid":case"-ms-grid":return 256;case"ruby":return 512;case"subgrid":return 1024;case"list-item":return 2048;case"table-row-group":return 4096;case"table-header-group":return 8192;case"table-footer-group":return 16384;case"table-row":return 32768;case"table-cell":return 65536;case"table-column-group":return 131072;case"table-column":return 262144;case"table-caption":return 524288;case"ruby-base":return 1048576;case"ruby-text":return 2097152;case"ruby-base-container":return 4194304;case"ruby-text-container":return 8388608;case"contents":return 16777216;case"inline-block":return 33554432;case"inline-list-item":return 67108864;case"inline-table":return 134217728;case"inline-flex":return 268435456;case"inline-grid":return 536870912}return 0},jg={name:"float",initialValue:"none",prefix:!1,type:2,parse:function(r,A){switch(A){case"left":return 1;case"right":return 2;case"inline-start":return 3;case"inline-end":return 4}return 0}},AB={name:"letter-spacing",initialValue:"0",prefix:!1,type:0,parse:function(r,A){return A.type===20&&A.value==="normal"?0:A.type===17||A.type===15?A.number:0}},rn;(function(r){r.NORMAL="normal",r.STRICT="strict"})(rn||(rn={}));var eB={name:"line-break",initialValue:"normal",prefix:!1,type:2,parse:function(r,A){switch(A){case"strict":return rn.STRICT;case"normal":default:return rn.NORMAL}}},tB={name:"line-height",initialValue:"normal",prefix:!1,type:4},tc=function(r,A){return N(r)&&r.value==="normal"?1.2*A:r.type===17?A*r.number:Y(r)?_(r,A):A},rB={name:"list-style-image",initialValue:"none",type:0,prefix:!1,parse:function(r,A){return A.type===20&&A.value==="none"?null:Is.parse(r,A)}},nB={name:"list-style-position",initialValue:"outside",prefix:!1,type:2,parse:function(r,A){switch(A){case"inside":return 0;case"outside":default:return 1}}},Ts={name:"list-style-type",initialValue:"none",prefix:!1,type:2,parse:function(r,A){switch(A){case"disc":return 0;case"circle":return 1;case"square":return 2;case"decimal":return 3;case"cjk-decimal":return 4;case"decimal-leading-zero":return 5;case"lower-roman":return 6;case"upper-roman":return 7;case"lower-greek":return 8;case"lower-alpha":return 9;case"upper-alpha":return 10;case"arabic-indic":return 11;case"armenian":return 12;case"bengali":return 13;case"cambodian":return 14;case"cjk-earthly-branch":return 15;case"cjk-heavenly-stem":return 16;case"cjk-ideographic":return 17;case"devanagari":return 18;case"ethiopic-numeric":return 19;case"georgian":return 20;case"gujarati":return 21;case"gurmukhi":return 22;case"hebrew":return 22;case"hiragana":return 23;case"hiragana-iroha":return 24;case"japanese-formal":return 25;case"japanese-informal":return 26;case"kannada":return 27;case"katakana":return 28;case"katakana-iroha":return 29;case"khmer":return 30;case"korean-hangul-formal":return 31;case"korean-hanja-formal":return 32;case"korean-hanja-informal":return 33;case"lao":return 34;case"lower-armenian":return 35;case"malayalam":return 36;case"mongolian":return 37;case"myanmar":return 38;case"oriya":return 39;case"persian":return 40;case"simp-chinese-formal":return 41;case"simp-chinese-informal":return 42;case"tamil":return 43;case"telugu":return 44;case"thai":return 45;case"tibetan":return 46;case"trad-chinese-formal":return 47;case"trad-chinese-informal":return 48;case"upper-armenian":return 49;case"disclosure-open":return 50;case"disclosure-closed":return 51;case"none":default:return-1}}},nn=function(r){return{name:"margin-"+r,initialValue:"0",prefix:!1,type:4}},sB=nn("top"),iB=nn("right"),oB=nn("bottom"),aB=nn("left"),lB={name:"overflow",initialValue:"visible",prefix:!1,type:1,parse:function(r,A){return A.filter(N).map(function(e){switch(e.value){case"hidden":return 1;case"scroll":return 2;case"clip":return 3;case"auto":return 4;case"visible":default:return 0}})}},cB={name:"overflow-wrap",initialValue:"normal",prefix:!1,type:2,parse:function(r,A){switch(A){case"break-word":return"break-word";case"normal":default:return"normal"}}},sn=function(r){return{name:"padding-"+r,initialValue:"0",prefix:!1,type:3,format:"length-percentage"}},dB=sn("top"),uB=sn("right"),hB=sn("bottom"),gB=sn("left"),BB={name:"text-align",initialValue:"left",prefix:!1,type:2,parse:function(r,A){switch(A){case"right":return 2;case"center":case"justify":return 1;case"left":default:return 0}}},fB={name:"position",initialValue:"static",prefix:!1,type:2,parse:function(r,A){switch(A){case"relative":return 1;case"absolute":return 2;case"fixed":return 3;case"sticky":return 4}return 0}},wB={name:"text-shadow",initialValue:"none",type:1,prefix:!1,parse:function(r,A){return A.length===1&&Es(A[0],"none")?[]:yA(A).map(function(e){for(var t={color:RA.TRANSPARENT,offsetX:tA,offsetY:tA,blur:tA},n=0,s=0;s<e.length;s++){var i=e[s];_A(i)?(n===0?t.offsetX=i:n===1?t.offsetY=i:t.blur=i,n++):t.color=OA.parse(r,i)}return t})}},pB={name:"text-transform",initialValue:"none",prefix:!1,type:2,parse:function(r,A){switch(A){case"uppercase":return 2;case"lowercase":return 1;case"capitalize":return 3}return 0}},CB={name:"transform",initialValue:"none",prefix:!0,type:0,parse:function(r,A){if(A.type===20&&A.value==="none")return null;if(A.type===18){var e=FB[A.name];if(typeof e>"u")throw new Error('Attempting to parse an unsupported transform function "'+A.name+'"');return e(A.values)}return null}},vB=function(r){var A=r.filter(function(e){return e.type===17}).map(function(e){return e.number});return A.length===6?A:null},mB=function(r){var A=r.filter(function(a){return a.type===17}).map(function(a){return a.number}),e=A[0],t=A[1];A[2],A[3];var n=A[4],s=A[5];A[6],A[7],A[8],A[9],A[10],A[11];var i=A[12],o=A[13];return A[14],A[15],A.length===16?[e,t,n,s,i,o]:null},FB={matrix:vB,matrix3d:mB},rc={type:16,number:50,flags:je},QB=[rc,rc],UB={name:"transform-origin",initialValue:"50% 50%",prefix:!0,type:1,parse:function(r,A){var e=A.filter(Y);return e.length!==2?QB:[e[0],e[1]]}},EB={name:"visible",initialValue:"none",prefix:!1,type:2,parse:function(r,A){switch(A){case"hidden":return 1;case"collapse":return 2;case"visible":default:return 0}}},ot;(function(r){r.NORMAL="normal",r.BREAK_ALL="break-all",r.KEEP_ALL="keep-all"})(ot||(ot={}));for(var yB={name:"word-break",initialValue:"normal",prefix:!1,type:2,parse:function(r,A){switch(A){case"break-all":return ot.BREAK_ALL;case"keep-all":return ot.KEEP_ALL;case"normal":default:return ot.NORMAL}}},SB={name:"z-index",initialValue:"auto",prefix:!1,type:0,parse:function(r,A){if(A.type===20)return{auto:!0,order:0};if(Fe(A))return{auto:!1,order:A.number};throw new Error("Invalid z-index number parsed")}},nc={name:"time",parse:function(r,A){if(A.type===15)switch(A.unit.toLowerCase()){case"s":return 1e3*A.number;case"ms":return A.number}throw new Error("Unsupported time type")}},IB={name:"opacity",initialValue:"1",type:0,prefix:!1,parse:function(r,A){return Fe(A)?A.number:1}},TB={name:"text-decoration-color",initialValue:"transparent",prefix:!1,type:3,format:"color"},HB={name:"text-decoration-line",initialValue:"none",prefix:!1,type:1,parse:function(r,A){return A.filter(N).map(function(e){switch(e.value){case"underline":return 1;case"overline":return 2;case"line-through":return 3;case"none":return 4}return 0}).filter(function(e){return e!==0})}},LB={name:"font-family",initialValue:"",prefix:!1,type:1,parse:function(r,A){var e=[],t=[];return A.forEach(function(n){switch(n.type){case 20:case 0:e.push(n.value);break;case 17:e.push(n.number.toString());break;case 4:t.push(e.join(" ")),e.length=0;break}}),e.length&&t.push(e.join(" ")),t.map(function(n){return n.indexOf(" ")===-1?n:"'"+n+"'"})}},bB={name:"font-size",initialValue:"0",prefix:!1,type:3,format:"length"},MB={name:"font-weight",initialValue:"normal",type:0,prefix:!1,parse:function(r,A){if(Fe(A))return A.number;if(N(A))switch(A.value){case"bold":return 700;case"normal":default:return 400}return 400}},DB={name:"font-variant",initialValue:"none",type:1,prefix:!1,parse:function(r,A){return A.filter(N).map(function(e){return e.value})}},RB={name:"font-style",initialValue:"normal",prefix:!1,type:2,parse:function(r,A){switch(A){case"oblique":return"oblique";case"italic":return"italic";case"normal":default:return"normal"}}},q=function(r,A){return(r&A)!==0},PB={name:"content",initialValue:"none",type:1,prefix:!1,parse:function(r,A){if(A.length===0)return[];var e=A[0];return e.type===20&&e.value==="none"?[]:A}},KB={name:"counter-increment",initialValue:"none",prefix:!0,type:1,parse:function(r,A){if(A.length===0)return null;var e=A[0];if(e.type===20&&e.value==="none")return null;for(var t=[],n=A.filter(Dl),s=0;s<n.length;s++){var i=n[s],o=n[s+1];if(i.type===20){var a=o&&Fe(o)?o.number:1;t.push({counter:i.value,increment:a})}}return t}},xB={name:"counter-reset",initialValue:"none",prefix:!0,type:1,parse:function(r,A){if(A.length===0)return[];for(var e=[],t=A.filter(Dl),n=0;n<t.length;n++){var s=t[n],i=t[n+1];if(N(s)&&s.value!=="none"){var o=i&&Fe(i)?i.number:0;e.push({counter:s.value,reset:o})}}return e}},kB={name:"duration",initialValue:"0s",prefix:!1,type:1,parse:function(r,A){return A.filter(nt).map(function(e){return nc.parse(r,e)})}},GB={name:"quotes",initialValue:"none",prefix:!0,type:1,parse:function(r,A){if(A.length===0)return null;var e=A[0];if(e.type===20&&e.value==="none")return null;var t=[],n=A.filter(ug);if(n.length%2!==0)return null;for(var s=0;s<n.length;s+=2){var i=n[s].value,o=n[s+1].value;t.push({open:i,close:o})}return t}},sc=function(r,A,e){if(!r)return"";var t=r[Math.min(A,r.length-1)];return t?e?t.open:t.close:""},NB={name:"box-shadow",initialValue:"none",type:1,prefix:!1,parse:function(r,A){return A.length===1&&Es(A[0],"none")?[]:yA(A).map(function(e){for(var t={color:255,offsetX:tA,offsetY:tA,blur:tA,spread:tA,inset:!1},n=0,s=0;s<e.length;s++){var i=e[s];Es(i,"inset")?t.inset=!0:_A(i)?(n===0?t.offsetX=i:n===1?t.offsetY=i:n===2?t.blur=i:t.spread=i,n++):t.color=OA.parse(r,i)}return t})}},_B={name:"paint-order",initialValue:"normal",prefix:!1,type:1,parse:function(r,A){var e=[0,1,2],t=[];return A.filter(N).forEach(function(n){switch(n.value){case"stroke":t.push(1);break;case"fill":t.push(0);break;case"markers":t.push(2);break}}),e.forEach(function(n){t.indexOf(n)===-1&&t.push(n)}),t}},VB={name:"-webkit-text-stroke-color",initialValue:"currentcolor",prefix:!1,type:3,format:"color"},OB={name:"-webkit-text-stroke-width",initialValue:"0",type:0,prefix:!1,parse:function(r,A){return nt(A)?A.number:0}},WB=function(){function r(A,e){var t,n;this.animationDuration=T(A,kB,e.animationDuration),this.backgroundClip=T(A,Bg,e.backgroundClip),this.backgroundColor=T(A,fg,e.backgroundColor),this.backgroundImage=T(A,yg,e.backgroundImage),this.backgroundOrigin=T(A,Sg,e.backgroundOrigin),this.backgroundPosition=T(A,Ig,e.backgroundPosition),this.backgroundRepeat=T(A,Tg,e.backgroundRepeat),this.backgroundSize=T(A,Lg,e.backgroundSize),this.borderTopColor=T(A,Mg,e.borderTopColor),this.borderRightColor=T(A,Dg,e.borderRightColor),this.borderBottomColor=T(A,Rg,e.borderBottomColor),this.borderLeftColor=T(A,Pg,e.borderLeftColor),this.borderTopLeftRadius=T(A,Kg,e.borderTopLeftRadius),this.borderTopRightRadius=T(A,xg,e.borderTopRightRadius),this.borderBottomRightRadius=T(A,kg,e.borderBottomRightRadius),this.borderBottomLeftRadius=T(A,Gg,e.borderBottomLeftRadius),this.borderTopStyle=T(A,Ng,e.borderTopStyle),this.borderRightStyle=T(A,_g,e.borderRightStyle),this.borderBottomStyle=T(A,Vg,e.borderBottomStyle),this.borderLeftStyle=T(A,Og,e.borderLeftStyle),this.borderTopWidth=T(A,Wg,e.borderTopWidth),this.borderRightWidth=T(A,Xg,e.borderRightWidth),this.borderBottomWidth=T(A,Jg,e.borderBottomWidth),this.borderLeftWidth=T(A,zg,e.borderLeftWidth),this.boxShadow=T(A,NB,e.boxShadow),this.color=T(A,Yg,e.color),this.direction=T(A,$g,e.direction),this.display=T(A,Zg,e.display),this.float=T(A,jg,e.cssFloat),this.fontFamily=T(A,LB,e.fontFamily),this.fontSize=T(A,bB,e.fontSize),this.fontStyle=T(A,RB,e.fontStyle),this.fontVariant=T(A,DB,e.fontVariant),this.fontWeight=T(A,MB,e.fontWeight),this.letterSpacing=T(A,AB,e.letterSpacing),this.lineBreak=T(A,eB,e.lineBreak),this.lineHeight=T(A,tB,e.lineHeight),this.listStyleImage=T(A,rB,e.listStyleImage),this.listStylePosition=T(A,nB,e.listStylePosition),this.listStyleType=T(A,Ts,e.listStyleType),this.marginTop=T(A,sB,e.marginTop),this.marginRight=T(A,iB,e.marginRight),this.marginBottom=T(A,oB,e.marginBottom),this.marginLeft=T(A,aB,e.marginLeft),this.opacity=T(A,IB,e.opacity);var s=T(A,lB,e.overflow);this.overflowX=s[0],this.overflowY=s[s.length>1?1:0],this.overflowWrap=T(A,cB,e.overflowWrap),this.paddingTop=T(A,dB,e.paddingTop),this.paddingRight=T(A,uB,e.paddingRight),this.paddingBottom=T(A,hB,e.paddingBottom),this.paddingLeft=T(A,gB,e.paddingLeft),this.paintOrder=T(A,_B,e.paintOrder),this.position=T(A,fB,e.position),this.textAlign=T(A,BB,e.textAlign),this.textDecorationColor=T(A,TB,(t=e.textDecorationColor)!==null&&t!==void 0?t:e.color),this.textDecorationLine=T(A,HB,(n=e.textDecorationLine)!==null&&n!==void 0?n:e.textDecoration),this.textShadow=T(A,wB,e.textShadow),this.textTransform=T(A,pB,e.textTransform),this.transform=T(A,CB,e.transform),this.transformOrigin=T(A,UB,e.transformOrigin),this.visibility=T(A,EB,e.visibility),this.webkitTextStrokeColor=T(A,VB,e.webkitTextStrokeColor),this.webkitTextStrokeWidth=T(A,OB,e.webkitTextStrokeWidth),this.wordBreak=T(A,yB,e.wordBreak),this.zIndex=T(A,SB,e.zIndex)}return r.prototype.isVisible=function(){return this.display>0&&this.opacity>0&&this.visibility===0},r.prototype.isTransparent=function(){return WA(this.backgroundColor)},r.prototype.isTransformed=function(){return this.transform!==null},r.prototype.isPositioned=function(){return this.position!==0},r.prototype.isPositionedWithZIndex=function(){return this.isPositioned()&&!this.zIndex.auto},r.prototype.isFloating=function(){return this.float!==0},r.prototype.isInlineLevel=function(){return q(this.display,4)||q(this.display,33554432)||q(this.display,268435456)||q(this.display,536870912)||q(this.display,67108864)||q(this.display,134217728)},r}(),XB=function(){function r(A,e){this.content=T(A,PB,e.content),this.quotes=T(A,GB,e.quotes)}return r}(),ic=function(){function r(A,e){this.counterIncrement=T(A,KB,e.counterIncrement),this.counterReset=T(A,xB,e.counterReset)}return r}(),T=function(r,A,e){var t=new bl,n=e!==null&&typeof e<"u"?e.toString():A.initialValue;t.write(n);var s=new Ml(t.read());switch(A.type){case 2:var i=s.parseComponentValue();return A.parse(r,N(i)?i.value:A.initialValue);case 0:return A.parse(r,s.parseComponentValue());case 1:return A.parse(r,s.parseComponentValues());case 4:return s.parseComponentValue();case 3:switch(A.format){case"angle":return Yr.parse(r,s.parseComponentValue());case"color":return OA.parse(r,s.parseComponentValue());case"image":return Is.parse(r,s.parseComponentValue());case"length":var o=s.parseComponentValue();return _A(o)?o:tA;case"length-percentage":var a=s.parseComponentValue();return Y(a)?a:tA;case"time":return nc.parse(r,s.parseComponentValue())}break}},JB="data-html2canvas-debug",zB=function(r){var A=r.getAttribute(JB);switch(A){case"all":return 1;case"clone":return 2;case"parse":return 3;case"render":return 4;default:return 0}},Hs=function(r,A){var e=zB(r);return e===1||A===e},SA=function(){function r(A,e){if(this.context=A,this.textNodes=[],this.elements=[],this.flags=0,Hs(e,3))debugger;this.styles=new WB(A,window.getComputedStyle(e,null)),Os(e)&&(this.styles.animationDuration.some(function(t){return t>0})&&(e.style.animationDuration="0s"),this.styles.transform!==null&&(e.style.transform="none")),this.bounds=Tr(this.context,e),Hs(e,4)&&(this.flags|=16)}return r}(),YB="AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAABQAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA=",oc="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",at=typeof Uint8Array>"u"?[]:new Uint8Array(256),on=0;on<oc.length;on++)at[oc.charCodeAt(on)]=on;for(var $B=function(r){var A=r.length*.75,e=r.length,t,n=0,s,i,o,a;r[r.length-1]==="="&&(A--,r[r.length-2]==="="&&A--);var l=typeof ArrayBuffer<"u"&&typeof Uint8Array<"u"&&typeof Uint8Array.prototype.slice<"u"?new ArrayBuffer(A):new Array(A),c=Array.isArray(l)?l:new Uint8Array(l);for(t=0;t<e;t+=4)s=at[r.charCodeAt(t)],i=at[r.charCodeAt(t+1)],o=at[r.charCodeAt(t+2)],a=at[r.charCodeAt(t+3)],c[n++]=s<<2|i>>4,c[n++]=(i&15)<<4|o>>2,c[n++]=(o&3)<<6|a&63;return l},ZB=function(r){for(var A=r.length,e=[],t=0;t<A;t+=2)e.push(r[t+1]<<8|r[t]);return e},qB=function(r){for(var A=r.length,e=[],t=0;t<A;t+=4)e.push(r[t+3]<<24|r[t+2]<<16|r[t+1]<<8|r[t]);return e},re=5,Ls=11,bs=2,jB=Ls-re,ac=65536>>re,Af=1<<re,Ms=Af-1,ef=1024>>re,tf=ac+ef,rf=tf,nf=32,sf=rf+nf,of=65536>>Ls,af=1<<jB,lf=af-1,lc=function(r,A,e){return r.slice?r.slice(A,e):new Uint16Array(Array.prototype.slice.call(r,A,e))},cf=function(r,A,e){return r.slice?r.slice(A,e):new Uint32Array(Array.prototype.slice.call(r,A,e))},df=function(r,A){var e=$B(r),t=Array.isArray(e)?qB(e):new Uint32Array(e),n=Array.isArray(e)?ZB(e):new Uint16Array(e),s=24,i=lc(n,s/2,t[4]/2),o=t[5]===2?lc(n,(s+t[4])/2):cf(t,Math.ceil((s+t[4])/4));return new uf(t[0],t[1],t[2],t[3],i,o)},uf=function(){function r(A,e,t,n,s,i){this.initialValue=A,this.errorValue=e,this.highStart=t,this.highValueIndex=n,this.index=s,this.data=i}return r.prototype.get=function(A){var e;if(A>=0){if(A<55296||A>56319&&A<=65535)return e=this.index[A>>re],e=(e<<bs)+(A&Ms),this.data[e];if(A<=65535)return e=this.index[ac+(A-55296>>re)],e=(e<<bs)+(A&Ms),this.data[e];if(A<this.highStart)return e=sf-of+(A>>Ls),e=this.index[e],e+=A>>re&lf,e=this.index[e],e=(e<<bs)+(A&Ms),this.data[e];if(A<=1114111)return this.data[this.highValueIndex]}return this.errorValue},r}(),cc="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",hf=typeof Uint8Array>"u"?[]:new Uint8Array(256),an=0;an<cc.length;an++)hf[cc.charCodeAt(an)]=an;var gf=1,Ds=2,Rs=3,dc=4,uc=5,Bf=7,hc=8,Ps=9,Ks=10,gc=11,Bc=12,fc=13,wc=14,xs=15,ff=function(r){for(var A=[],e=0,t=r.length;e<t;){var n=r.charCodeAt(e++);if(n>=55296&&n<=56319&&e<t){var s=r.charCodeAt(e++);(s&64512)===56320?A.push(((n&1023)<<10)+(s&1023)+65536):(A.push(n),e--)}else A.push(n)}return A},wf=function(){for(var r=[],A=0;A<arguments.length;A++)r[A]=arguments[A];if(String.fromCodePoint)return String.fromCodePoint.apply(String,r);var e=r.length;if(!e)return"";for(var t=[],n=-1,s="";++n<e;){var i=r[n];i<=65535?t.push(i):(i-=65536,t.push((i>>10)+55296,i%1024+56320)),(n+1===e||t.length>16384)&&(s+=String.fromCharCode.apply(String,t),t.length=0)}return s},pf=df(YB),pA="×",ks="÷",Cf=function(r){return pf.get(r)},vf=function(r,A,e){var t=e-2,n=A[t],s=A[e-1],i=A[e];if(s===Ds&&i===Rs)return pA;if(s===Ds||s===Rs||s===dc||i===Ds||i===Rs||i===dc)return ks;if(s===hc&&[hc,Ps,gc,Bc].indexOf(i)!==-1||(s===gc||s===Ps)&&(i===Ps||i===Ks)||(s===Bc||s===Ks)&&i===Ks||i===fc||i===uc||i===Bf||s===gf)return pA;if(s===fc&&i===wc){for(;n===uc;)n=A[--t];if(n===wc)return pA}if(s===xs&&i===xs){for(var o=0;n===xs;)o++,n=A[--t];if(o%2===0)return pA}return ks},mf=function(r){var A=ff(r),e=A.length,t=0,n=0,s=A.map(Cf);return{next:function(){if(t>=e)return{done:!0,value:null};for(var i=pA;t<e&&(i=vf(A,s,++t))===pA;);if(i!==pA||t===e){var o=wf.apply(null,A.slice(n,t));return n=t,{value:o,done:!1}}return{done:!0,value:null}}}},Ff=function(r){for(var A=mf(r),e=[],t;!(t=A.next()).done;)t.value&&e.push(t.value.slice());return e},Qf=function(r){var A=123;if(r.createRange){var e=r.createRange();if(e.getBoundingClientRect){var t=r.createElement("boundtest");t.style.height=A+"px",t.style.display="block",r.body.appendChild(t),e.selectNode(t);var n=e.getBoundingClientRect(),s=Math.round(n.height);if(r.body.removeChild(t),s===A)return!0}}return!1},Uf=function(r){var A=r.createElement("boundtest");A.style.width="50px",A.style.display="block",A.style.fontSize="12px",A.style.letterSpacing="0px",A.style.wordSpacing="0px",r.body.appendChild(A);var e=r.createRange();A.innerHTML=typeof"".repeat=="function"?"👨".repeat(10):"";var t=A.firstChild,n=Hr(t.data).map(function(a){return X(a)}),s=0,i={},o=n.every(function(a,l){e.setStart(t,s),e.setEnd(t,s+a.length);var c=e.getBoundingClientRect();s+=a.length;var u=c.x>i.x||c.y>i.y;return i=c,l===0?!0:u});return r.body.removeChild(A),o},Ef=function(){return typeof new Image().crossOrigin<"u"},yf=function(){return typeof new XMLHttpRequest().responseType=="string"},Sf=function(r){var A=new Image,e=r.createElement("canvas"),t=e.getContext("2d");if(!t)return!1;A.src="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'></svg>";try{t.drawImage(A,0,0),e.toDataURL()}catch{return!1}return!0},pc=function(r){return r[0]===0&&r[1]===255&&r[2]===0&&r[3]===255},If=function(r){var A=r.createElement("canvas"),e=100;A.width=e,A.height=e;var t=A.getContext("2d");if(!t)return Promise.reject(!1);t.fillStyle="rgb(0, 255, 0)",t.fillRect(0,0,e,e);var n=new Image,s=A.toDataURL();n.src=s;var i=Gs(e,e,0,0,n);return t.fillStyle="red",t.fillRect(0,0,e,e),Cc(i).then(function(o){t.drawImage(o,0,0);var a=t.getImageData(0,0,e,e).data;t.fillStyle="red",t.fillRect(0,0,e,e);var l=r.createElement("div");return l.style.backgroundImage="url("+s+")",l.style.height=e+"px",pc(a)?Cc(Gs(e,e,0,0,l)):Promise.reject(!1)}).then(function(o){return t.drawImage(o,0,0),pc(t.getImageData(0,0,e,e).data)}).catch(function(){return!1})},Gs=function(r,A,e,t,n){var s="http://www.w3.org/2000/svg",i=document.createElementNS(s,"svg"),o=document.createElementNS(s,"foreignObject");return i.setAttributeNS(null,"width",r.toString()),i.setAttributeNS(null,"height",A.toString()),o.setAttributeNS(null,"width","100%"),o.setAttributeNS(null,"height","100%"),o.setAttributeNS(null,"x",e.toString()),o.setAttributeNS(null,"y",t.toString()),o.setAttributeNS(null,"externalResourcesRequired","true"),i.appendChild(o),o.appendChild(n),i},Cc=function(r){return new Promise(function(A,e){var t=new Image;t.onload=function(){return A(t)},t.onerror=e,t.src="data:image/svg+xml;charset=utf-8,"+encodeURIComponent(new XMLSerializer().serializeToString(r))})},rA={get SUPPORT_RANGE_BOUNDS(){var r=Qf(document);return Object.defineProperty(rA,"SUPPORT_RANGE_BOUNDS",{value:r}),r},get SUPPORT_WORD_BREAKING(){var r=rA.SUPPORT_RANGE_BOUNDS&&Uf(document);return Object.defineProperty(rA,"SUPPORT_WORD_BREAKING",{value:r}),r},get SUPPORT_SVG_DRAWING(){var r=Sf(document);return Object.defineProperty(rA,"SUPPORT_SVG_DRAWING",{value:r}),r},get SUPPORT_FOREIGNOBJECT_DRAWING(){var r=typeof Array.from=="function"&&typeof window.fetch=="function"?If(document):Promise.resolve(!1);return Object.defineProperty(rA,"SUPPORT_FOREIGNOBJECT_DRAWING",{value:r}),r},get SUPPORT_CORS_IMAGES(){var r=Ef();return Object.defineProperty(rA,"SUPPORT_CORS_IMAGES",{value:r}),r},get SUPPORT_RESPONSE_TYPE(){var r=yf();return Object.defineProperty(rA,"SUPPORT_RESPONSE_TYPE",{value:r}),r},get SUPPORT_CORS_XHR(){var r="withCredentials"in new XMLHttpRequest;return Object.defineProperty(rA,"SUPPORT_CORS_XHR",{value:r}),r},get SUPPORT_NATIVE_TEXT_SEGMENTATION(){var r=!!(typeof Intl<"u"&&Intl.Segmenter);return Object.defineProperty(rA,"SUPPORT_NATIVE_TEXT_SEGMENTATION",{value:r}),r}},lt=function(){function r(A,e){this.text=A,this.bounds=e}return r}(),Tf=function(r,A,e,t){var n=bf(A,e),s=[],i=0;return n.forEach(function(o){if(e.textDecorationLine.length||o.trim().length>0)if(rA.SUPPORT_RANGE_BOUNDS){var a=vc(t,i,o.length).getClientRects();if(a.length>1){var l=Ns(o),c=0;l.forEach(function(d){s.push(new lt(d,MA.fromDOMRectList(r,vc(t,c+i,d.length).getClientRects()))),c+=d.length})}else s.push(new lt(o,MA.fromDOMRectList(r,a)))}else{var u=t.splitText(o.length);s.push(new lt(o,Hf(r,t))),t=u}else rA.SUPPORT_RANGE_BOUNDS||(t=t.splitText(o.length));i+=o.length}),s},Hf=function(r,A){var e=A.ownerDocument;if(e){var t=e.createElement("html2canvaswrapper");t.appendChild(A.cloneNode(!0));var n=A.parentNode;if(n){n.replaceChild(t,A);var s=Tr(r,t);return t.firstChild&&n.replaceChild(t.firstChild,t),s}}return MA.EMPTY},vc=function(r,A,e){var t=r.ownerDocument;if(!t)throw new Error("Node has no owner document");var n=t.createRange();return n.setStart(r,A),n.setEnd(r,A+e),n},Ns=function(r){if(rA.SUPPORT_NATIVE_TEXT_SEGMENTATION){var A=new Intl.Segmenter(void 0,{granularity:"grapheme"});return Array.from(A.segment(r)).map(function(e){return e.segment})}return Ff(r)},Lf=function(r,A){if(rA.SUPPORT_NATIVE_TEXT_SEGMENTATION){var e=new Intl.Segmenter(void 0,{granularity:"word"});return Array.from(e.segment(r)).map(function(t){return t.segment})}return Df(r,A)},bf=function(r,A){return A.letterSpacing!==0?Ns(r):Lf(r,A)},Mf=[32,160,4961,65792,65793,4153,4241],Df=function(r,A){for(var e=ih(r,{lineBreak:A.lineBreak,wordBreak:A.overflowWrap==="break-word"?"break-word":A.wordBreak}),t=[],n,s=function(){if(n.value){var i=n.value.slice(),o=Hr(i),a="";o.forEach(function(l){Mf.indexOf(l)===-1?a+=X(l):(a.length&&t.push(a),t.push(X(l)),a="")}),a.length&&t.push(a)}};!(n=e.next()).done;)s();return t},Rf=function(){function r(A,e,t){this.text=Pf(e.data,t.textTransform),this.textBounds=Tf(A,this.text,t,e)}return r}(),Pf=function(r,A){switch(A){case 1:return r.toLowerCase();case 3:return r.replace(Kf,xf);case 2:return r.toUpperCase();default:return r}},Kf=/(^|\s|:|-|\(|\))([a-z])/g,xf=function(r,A,e){return r.length>0?A+e.toUpperCase():r},mc=function(r){FA(A,r);function A(e,t){var n=r.call(this,e,t)||this;return n.src=t.currentSrc||t.src,n.intrinsicWidth=t.naturalWidth,n.intrinsicHeight=t.naturalHeight,n.context.cache.addImage(n.src),n}return A}(SA),Fc=function(r){FA(A,r);function A(e,t){var n=r.call(this,e,t)||this;return n.canvas=t,n.intrinsicWidth=t.width,n.intrinsicHeight=t.height,n}return A}(SA),Qc=function(r){FA(A,r);function A(e,t){var n=r.call(this,e,t)||this,s=new XMLSerializer,i=Tr(e,t);return t.setAttribute("width",i.width+"px"),t.setAttribute("height",i.height+"px"),n.svg="data:image/svg+xml,"+encodeURIComponent(s.serializeToString(t)),n.intrinsicWidth=t.width.baseVal.value,n.intrinsicHeight=t.height.baseVal.value,n.context.cache.addImage(n.svg),n}return A}(SA),Uc=function(r){FA(A,r);function A(e,t){var n=r.call(this,e,t)||this;return n.value=t.value,n}return A}(SA),_s=function(r){FA(A,r);function A(e,t){var n=r.call(this,e,t)||this;return n.start=t.start,n.reversed=typeof t.reversed=="boolean"&&t.reversed===!0,n}return A}(SA),kf=[{type:15,flags:0,unit:"px",number:3}],Gf=[{type:16,flags:0,number:50}],Nf=function(r){return r.width>r.height?new MA(r.left+(r.width-r.height)/2,r.top,r.height,r.height):r.width<r.height?new MA(r.left,r.top+(r.height-r.width)/2,r.width,r.width):r},_f=function(r){var A=r.type===Vf?new Array(r.value.length+1).join("•"):r.value;return A.length===0?r.placeholder||"":A},ln="checkbox",cn="radio",Vf="password",Ec=707406591,Vs=function(r){FA(A,r);function A(e,t){var n=r.call(this,e,t)||this;switch(n.type=t.type.toLowerCase(),n.checked=t.checked,n.value=_f(t),(n.type===ln||n.type===cn)&&(n.styles.backgroundColor=3739148031,n.styles.borderTopColor=n.styles.borderRightColor=n.styles.borderBottomColor=n.styles.borderLeftColor=2779096575,n.styles.borderTopWidth=n.styles.borderRightWidth=n.styles.borderBottomWidth=n.styles.borderLeftWidth=1,n.styles.borderTopStyle=n.styles.borderRightStyle=n.styles.borderBottomStyle=n.styles.borderLeftStyle=1,n.styles.backgroundClip=[0],n.styles.backgroundOrigin=[0],n.bounds=Nf(n.bounds)),n.type){case ln:n.styles.borderTopRightRadius=n.styles.borderTopLeftRadius=n.styles.borderBottomRightRadius=n.styles.borderBottomLeftRadius=kf;break;case cn:n.styles.borderTopRightRadius=n.styles.borderTopLeftRadius=n.styles.borderBottomRightRadius=n.styles.borderBottomLeftRadius=Gf;break}return n}return A}(SA),yc=function(r){FA(A,r);function A(e,t){var n=r.call(this,e,t)||this,s=t.options[t.selectedIndex||0];return n.value=s&&s.text||"",n}return A}(SA),Sc=function(r){FA(A,r);function A(e,t){var n=r.call(this,e,t)||this;return n.value=t.value,n}return A}(SA),Ic=function(r){FA(A,r);function A(e,t){var n=r.call(this,e,t)||this;n.src=t.src,n.width=parseInt(t.width,10)||0,n.height=parseInt(t.height,10)||0,n.backgroundColor=n.styles.backgroundColor;try{if(t.contentWindow&&t.contentWindow.document&&t.contentWindow.document.documentElement){n.tree=Hc(e,t.contentWindow.document.documentElement);var s=t.contentWindow.document.documentElement?it(e,getComputedStyle(t.contentWindow.document.documentElement).backgroundColor):RA.TRANSPARENT,i=t.contentWindow.document.body?it(e,getComputedStyle(t.contentWindow.document.body).backgroundColor):RA.TRANSPARENT;n.backgroundColor=WA(s)?WA(i)?n.styles.backgroundColor:i:s}}catch{}return n}return A}(SA),Of=["OL","UL","MENU"],dn=function(r,A,e,t){for(var n=A.firstChild,s=void 0;n;n=s)if(s=n.nextSibling,Lc(n)&&n.data.trim().length>0)e.textNodes.push(new Rf(r,n,e.styles));else if(Ee(n))if(Kc(n)&&n.assignedNodes)n.assignedNodes().forEach(function(o){return dn(r,o,e,t)});else{var i=Tc(r,n);i.styles.isVisible()&&(Wf(n,i,t)?i.flags|=4:Xf(i.styles)&&(i.flags|=2),Of.indexOf(n.tagName)!==-1&&(i.flags|=8),e.elements.push(i),n.slot,n.shadowRoot?dn(r,n.shadowRoot,i,t):!hn(n)&&!bc(n)&&!gn(n)&&dn(r,n,i,t))}},Tc=function(r,A){return Xs(A)?new mc(r,A):Mc(A)?new Fc(r,A):bc(A)?new Qc(r,A):Jf(A)?new Uc(r,A):zf(A)?new _s(r,A):Yf(A)?new Vs(r,A):gn(A)?new yc(r,A):hn(A)?new Sc(r,A):Rc(A)?new Ic(r,A):new SA(r,A)},Hc=function(r,A){var e=Tc(r,A);return e.flags|=4,dn(r,A,e,e),e},Wf=function(r,A,e){return A.styles.isPositionedWithZIndex()||A.styles.opacity<1||A.styles.isTransformed()||Ws(r)&&e.styles.isTransparent()},Xf=function(r){return r.isPositioned()||r.isFloating()},Lc=function(r){return r.nodeType===Node.TEXT_NODE},Ee=function(r){return r.nodeType===Node.ELEMENT_NODE},Os=function(r){return Ee(r)&&typeof r.style<"u"&&!un(r)},un=function(r){return typeof r.className=="object"},Jf=function(r){return r.tagName==="LI"},zf=function(r){return r.tagName==="OL"},Yf=function(r){return r.tagName==="INPUT"},$f=function(r){return r.tagName==="HTML"},bc=function(r){return r.tagName==="svg"},Ws=function(r){return r.tagName==="BODY"},Mc=function(r){return r.tagName==="CANVAS"},Dc=function(r){return r.tagName==="VIDEO"},Xs=function(r){return r.tagName==="IMG"},Rc=function(r){return r.tagName==="IFRAME"},Pc=function(r){return r.tagName==="STYLE"},Zf=function(r){return r.tagName==="SCRIPT"},hn=function(r){return r.tagName==="TEXTAREA"},gn=function(r){return r.tagName==="SELECT"},Kc=function(r){return r.tagName==="SLOT"},xc=function(r){return r.tagName.indexOf("-")>0},qf=function(){function r(){this.counters={}}return r.prototype.getCounterValue=function(A){var e=this.counters[A];return e&&e.length?e[e.length-1]:1},r.prototype.getCounterValues=function(A){var e=this.counters[A];return e||[]},r.prototype.pop=function(A){var e=this;A.forEach(function(t){return e.counters[t].pop()})},r.prototype.parse=function(A){var e=this,t=A.counterIncrement,n=A.counterReset,s=!0;t!==null&&t.forEach(function(o){var a=e.counters[o.counter];a&&o.increment!==0&&(s=!1,a.length||a.push(1),a[Math.max(0,a.length-1)]+=o.increment)});var i=[];return s&&n.forEach(function(o){var a=e.counters[o.counter];i.push(o.counter),a||(a=e.counters[o.counter]=[]),a.push(o.reset)}),i},r}(),kc={integers:[1e3,900,500,400,100,90,50,40,10,9,5,4,1],values:["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"]},Gc={integers:[9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["Ք","Փ","Ւ","Ց","Ր","Տ","Վ","Ս","Ռ","Ջ","Պ","Չ","Ո","Շ","Ն","Յ","Մ","Ճ","Ղ","Ձ","Հ","Կ","Ծ","Խ","Լ","Ի","Ժ","Թ","Ը","Է","Զ","Ե","Դ","Գ","Բ","Ա"]},jf={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,400,300,200,100,90,80,70,60,50,40,30,20,19,18,17,16,15,10,9,8,7,6,5,4,3,2,1],values:["י׳","ט׳","ח׳","ז׳","ו׳","ה׳","ד׳","ג׳","ב׳","א׳","ת","ש","ר","ק","צ","פ","ע","ס","נ","מ","ל","כ","יט","יח","יז","טז","טו","י","ט","ח","ז","ו","ה","ד","ג","ב","א"]},Aw={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["ჵ","ჰ","ჯ","ჴ","ხ","ჭ","წ","ძ","ც","ჩ","შ","ყ","ღ","ქ","ფ","ჳ","ტ","ს","რ","ჟ","პ","ო","ჲ","ნ","მ","ლ","კ","ი","თ","ჱ","ზ","ვ","ე","დ","გ","ბ","ა"]},ye=function(r,A,e,t,n,s){return r<A||r>e?dt(r,n,s.length>0):t.integers.reduce(function(i,o,a){for(;r>=o;)r-=o,i+=t.values[a];return i},"")+s},Nc=function(r,A,e,t){var n="";do e||r--,n=t(r)+n,r/=A;while(r*A>=A);return n},J=function(r,A,e,t,n){var s=e-A+1;return(r<0?"-":"")+(Nc(Math.abs(r),s,t,function(i){return X(Math.floor(i%s)+A)})+n)},ne=function(r,A,e){e===void 0&&(e=". ");var t=A.length;return Nc(Math.abs(r),t,!1,function(n){return A[Math.floor(n%t)]})+e},Se=1,JA=2,zA=4,ct=8,PA=function(r,A,e,t,n,s){if(r<-9999||r>9999)return dt(r,4,n.length>0);var i=Math.abs(r),o=n;if(i===0)return A[0]+o;for(var a=0;i>0&&a<=4;a++){var l=i%10;l===0&&q(s,Se)&&o!==""?o=A[l]+o:l>1||l===1&&a===0||l===1&&a===1&&q(s,JA)||l===1&&a===1&&q(s,zA)&&r>100||l===1&&a>1&&q(s,ct)?o=A[l]+(a>0?e[a-1]:"")+o:l===1&&a>0&&(o=e[a-1]+o),i=Math.floor(i/10)}return(r<0?t:"")+o},_c="十百千萬",Vc="拾佰仟萬",Oc="マイナス",Js="마이너스",dt=function(r,A,e){var t=e?". ":"",n=e?"、":"",s=e?", ":"",i=e?" ":"";switch(A){case 0:return"•"+i;case 1:return"◦"+i;case 2:return"◾"+i;case 5:var o=J(r,48,57,!0,t);return o.length<4?"0"+o:o;case 4:return ne(r,"〇一二三四五六七八九",n);case 6:return ye(r,1,3999,kc,3,t).toLowerCase();case 7:return ye(r,1,3999,kc,3,t);case 8:return J(r,945,969,!1,t);case 9:return J(r,97,122,!1,t);case 10:return J(r,65,90,!1,t);case 11:return J(r,1632,1641,!0,t);case 12:case 49:return ye(r,1,9999,Gc,3,t);case 35:return ye(r,1,9999,Gc,3,t).toLowerCase();case 13:return J(r,2534,2543,!0,t);case 14:case 30:return J(r,6112,6121,!0,t);case 15:return ne(r,"子丑寅卯辰巳午未申酉戌亥",n);case 16:return ne(r,"甲乙丙丁戊己庚辛壬癸",n);case 17:case 48:return PA(r,"零一二三四五六七八九",_c,"負",n,JA|zA|ct);case 47:return PA(r,"零壹貳參肆伍陸柒捌玖",Vc,"負",n,Se|JA|zA|ct);case 42:return PA(r,"零一二三四五六七八九",_c,"负",n,JA|zA|ct);case 41:return PA(r,"零壹贰叁肆伍陆柒捌玖",Vc,"负",n,Se|JA|zA|ct);case 26:return PA(r,"〇一二三四五六七八九","十百千万",Oc,n,0);case 25:return PA(r,"零壱弐参四伍六七八九","拾百千万",Oc,n,Se|JA|zA);case 31:return PA(r,"영일이삼사오육칠팔구","십백천만",Js,s,Se|JA|zA);case 33:return PA(r,"零一二三四五六七八九","十百千萬",Js,s,0);case 32:return PA(r,"零壹貳參四五六七八九","拾百千",Js,s,Se|JA|zA);case 18:return J(r,2406,2415,!0,t);case 20:return ye(r,1,19999,Aw,3,t);case 21:return J(r,2790,2799,!0,t);case 22:return J(r,2662,2671,!0,t);case 22:return ye(r,1,10999,jf,3,t);case 23:return ne(r,"あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん");case 24:return ne(r,"いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす");case 27:return J(r,3302,3311,!0,t);case 28:return ne(r,"アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン",n);case 29:return ne(r,"イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス",n);case 34:return J(r,3792,3801,!0,t);case 37:return J(r,6160,6169,!0,t);case 38:return J(r,4160,4169,!0,t);case 39:return J(r,2918,2927,!0,t);case 40:return J(r,1776,1785,!0,t);case 43:return J(r,3046,3055,!0,t);case 44:return J(r,3174,3183,!0,t);case 45:return J(r,3664,3673,!0,t);case 46:return J(r,3872,3881,!0,t);case 3:default:return J(r,48,57,!0,t)}},Wc="data-html2canvas-ignore",Xc=function(){function r(A,e,t){if(this.context=A,this.options=t,this.scrolledElements=[],this.referenceElement=e,this.counters=new qf,this.quoteDepth=0,!e.ownerDocument)throw new Error("Cloned element does not have an owner document");this.documentElement=this.cloneNode(e.ownerDocument.documentElement,!1)}return r.prototype.toIFrame=function(A,e){var t=this,n=ew(A,e);if(!n.contentWindow)return Promise.reject("Unable to find iframe window");var s=A.defaultView.pageXOffset,i=A.defaultView.pageYOffset,o=n.contentWindow,a=o.document,l=nw(n).then(function(){return hA(t,void 0,void 0,function(){var c,u;return sA(this,function(d){switch(d.label){case 0:return this.scrolledElements.forEach(aw),o&&(o.scrollTo(e.left,e.top),/(iPad|iPhone|iPod)/g.test(navigator.userAgent)&&(o.scrollY!==e.top||o.scrollX!==e.left)&&(this.context.logger.warn("Unable to restore scroll position for cloned document"),this.context.windowBounds=this.context.windowBounds.add(o.scrollX-e.left,o.scrollY-e.top,0,0))),c=this.options.onclone,u=this.clonedReferenceElement,typeof u>"u"?[2,Promise.reject("Error finding the "+this.referenceElement.nodeName+" in the cloned document")]:a.fonts&&a.fonts.ready?[4,a.fonts.ready]:[3,2];case 1:d.sent(),d.label=2;case 2:return/(AppleWebKit)/g.test(navigator.userAgent)?[4,rw(a)]:[3,4];case 3:d.sent(),d.label=4;case 4:return typeof c=="function"?[2,Promise.resolve().then(function(){return c(a,u)}).then(function(){return n})]:[2,n]}})})});return a.open(),a.write(iw(document.doctype)+"<html></html>"),ow(this.referenceElement.ownerDocument,s,i),a.replaceChild(a.adoptNode(this.documentElement),a.documentElement),a.close(),l},r.prototype.createElementClone=function(A){if(Hs(A,2))debugger;if(Mc(A))return this.createCanvasClone(A);if(Dc(A))return this.createVideoClone(A);if(Pc(A))return this.createStyleClone(A);var e=A.cloneNode(!1);return Xs(e)&&(Xs(A)&&A.currentSrc&&A.currentSrc!==A.src&&(e.src=A.currentSrc,e.srcset=""),e.loading==="lazy"&&(e.loading="eager")),xc(e)?this.createCustomElementClone(e):e},r.prototype.createCustomElementClone=function(A){var e=document.createElement("html2canvascustomelement");return zs(A.style,e),e},r.prototype.createStyleClone=function(A){try{var e=A.sheet;if(e&&e.cssRules){var t=[].slice.call(e.cssRules,0).reduce(function(s,i){return i&&typeof i.cssText=="string"?s+i.cssText:s},""),n=A.cloneNode(!1);return n.textContent=t,n}}catch(s){if(this.context.logger.error("Unable to access cssRules property",s),s.name!=="SecurityError")throw s}return A.cloneNode(!1)},r.prototype.createCanvasClone=function(A){var e;if(this.options.inlineImages&&A.ownerDocument){var t=A.ownerDocument.createElement("img");try{return t.src=A.toDataURL(),t}catch{this.context.logger.info("Unable to inline canvas contents, canvas is tainted",A)}}var n=A.cloneNode(!1);try{n.width=A.width,n.height=A.height;var s=A.getContext("2d"),i=n.getContext("2d");if(i)if(!this.options.allowTaint&&s)i.putImageData(s.getImageData(0,0,A.width,A.height),0,0);else{var o=(e=A.getContext("webgl2"))!==null&&e!==void 0?e:A.getContext("webgl");if(o){var a=o.getContextAttributes();(a==null?void 0:a.preserveDrawingBuffer)===!1&&this.context.logger.warn("Unable to clone WebGL context as it has preserveDrawingBuffer=false",A)}i.drawImage(A,0,0)}return n}catch{this.context.logger.info("Unable to clone canvas as it is tainted",A)}return n},r.prototype.createVideoClone=function(A){var e=A.ownerDocument.createElement("canvas");e.width=A.offsetWidth,e.height=A.offsetHeight;var t=e.getContext("2d");try{return t&&(t.drawImage(A,0,0,e.width,e.height),this.options.allowTaint||t.getImageData(0,0,e.width,e.height)),e}catch{this.context.logger.info("Unable to clone video as it is tainted",A)}var n=A.ownerDocument.createElement("canvas");return n.width=A.offsetWidth,n.height=A.offsetHeight,n},r.prototype.appendChildNode=function(A,e,t){(!Ee(e)||!Zf(e)&&!e.hasAttribute(Wc)&&(typeof this.options.ignoreElements!="function"||!this.options.ignoreElements(e)))&&(!this.options.copyStyles||!Ee(e)||!Pc(e))&&A.appendChild(this.cloneNode(e,t))},r.prototype.cloneChildNodes=function(A,e,t){for(var n=this,s=A.shadowRoot?A.shadowRoot.firstChild:A.firstChild;s;s=s.nextSibling)if(Ee(s)&&Kc(s)&&typeof s.assignedNodes=="function"){var i=s.assignedNodes();i.length&&i.forEach(function(o){return n.appendChildNode(e,o,t)})}else this.appendChildNode(e,s,t)},r.prototype.cloneNode=function(A,e){if(Lc(A))return document.createTextNode(A.data);if(!A.ownerDocument)return A.cloneNode(!1);var t=A.ownerDocument.defaultView;if(t&&Ee(A)&&(Os(A)||un(A))){var n=this.createElementClone(A);n.style.transitionProperty="none";var s=t.getComputedStyle(A),i=t.getComputedStyle(A,":before"),o=t.getComputedStyle(A,":after");this.referenceElement===A&&Os(n)&&(this.clonedReferenceElement=n),Ws(n)&&dw(n);var a=this.counters.parse(new ic(this.context,s)),l=this.resolvePseudoContent(A,n,i,ut.BEFORE);xc(A)&&(e=!0),Dc(A)||this.cloneChildNodes(A,n,e),l&&n.insertBefore(l,n.firstChild);var c=this.resolvePseudoContent(A,n,o,ut.AFTER);return c&&n.appendChild(c),this.counters.pop(a),(s&&(this.options.copyStyles||un(A))&&!Rc(A)||e)&&zs(s,n),(A.scrollTop!==0||A.scrollLeft!==0)&&this.scrolledElements.push([n,A.scrollLeft,A.scrollTop]),(hn(A)||gn(A))&&(hn(n)||gn(n))&&(n.value=A.value),n}return A.cloneNode(!1)},r.prototype.resolvePseudoContent=function(A,e,t,n){var s=this;if(t){var i=t.content,o=e.ownerDocument;if(!(!o||!i||i==="none"||i==="-moz-alt-content"||t.display==="none")){this.counters.parse(new ic(this.context,t));var a=new XB(this.context,t),l=o.createElement("html2canvaspseudoelement");zs(t,l),a.content.forEach(function(u){if(u.type===0)l.appendChild(o.createTextNode(u.value));else if(u.type===22){var d=o.createElement("img");d.src=u.value,d.style.opacity="1",l.appendChild(d)}else if(u.type===18){if(u.name==="attr"){var B=u.values.filter(N);B.length&&l.appendChild(o.createTextNode(A.getAttribute(B[0].value)||""))}else if(u.name==="counter"){var g=u.values.filter(Qe),f=g[0],m=g[1];if(f&&N(f)){var F=s.counters.getCounterValue(f.value),Q=m&&N(m)?Ts.parse(s.context,m.value):3;l.appendChild(o.createTextNode(dt(F,Q,!1)))}}else if(u.name==="counters"){var y=u.values.filter(Qe),f=y[0],L=y[1],m=y[2];if(f&&N(f)){var I=s.counters.getCounterValues(f.value),E=m&&N(m)?Ts.parse(s.context,m.value):3,R=L&&L.type===0?L.value:"",P=I.map(function(oA){return dt(oA,E,!1)}).join(R);l.appendChild(o.createTextNode(P))}}}else if(u.type===20)switch(u.value){case"open-quote":l.appendChild(o.createTextNode(sc(a.quotes,s.quoteDepth++,!0)));break;case"close-quote":l.appendChild(o.createTextNode(sc(a.quotes,--s.quoteDepth,!1)));break;default:l.appendChild(o.createTextNode(u.value))}}),l.className=Ys+" "+$s;var c=n===ut.BEFORE?" "+Ys:" "+$s;return un(e)?e.className.baseValue+=c:e.className+=c,l}}},r.destroy=function(A){return A.parentNode?(A.parentNode.removeChild(A),!0):!1},r}(),ut;(function(r){r[r.BEFORE=0]="BEFORE",r[r.AFTER=1]="AFTER"})(ut||(ut={}));var ew=function(r,A){var e=r.createElement("iframe");return e.className="html2canvas-container",e.style.visibility="hidden",e.style.position="fixed",e.style.left="-10000px",e.style.top="0px",e.style.border="0",e.width=A.width.toString(),e.height=A.height.toString(),e.scrolling="no",e.setAttribute(Wc,"true"),r.body.appendChild(e),e},tw=function(r){return new Promise(function(A){if(r.complete){A();return}if(!r.src){A();return}r.onload=A,r.onerror=A})},rw=function(r){return Promise.all([].slice.call(r.images,0).map(tw))},nw=function(r){return new Promise(function(A,e){var t=r.contentWindow;if(!t)return e("No window assigned for iframe");var n=t.document;t.onload=r.onload=function(){t.onload=r.onload=null;var s=setInterval(function(){n.body.childNodes.length>0&&n.readyState==="complete"&&(clearInterval(s),A(r))},50)}})},sw=["all","d","content"],zs=function(r,A){for(var e=r.length-1;e>=0;e--){var t=r.item(e);sw.indexOf(t)===-1&&A.style.setProperty(t,r.getPropertyValue(t))}return A},iw=function(r){var A="";return r&&(A+="<!DOCTYPE ",r.name&&(A+=r.name),r.internalSubset&&(A+=r.internalSubset),r.publicId&&(A+='"'+r.publicId+'"'),r.systemId&&(A+='"'+r.systemId+'"'),A+=">"),A},ow=function(r,A,e){r&&r.defaultView&&(A!==r.defaultView.pageXOffset||e!==r.defaultView.pageYOffset)&&r.defaultView.scrollTo(A,e)},aw=function(r){var A=r[0],e=r[1],t=r[2];A.scrollLeft=e,A.scrollTop=t},lw=":before",cw=":after",Ys="___html2canvas___pseudoelement_before",$s="___html2canvas___pseudoelement_after",Jc=`{
|
|
108
|
+
***************************************************************************** */var ss=function(r,A){return ss=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},ss(r,A)};function FA(r,A){if(typeof A!="function"&&A!==null)throw new TypeError("Class extends value "+String(A)+" is not a constructor or null");ss(r,A);function e(){this.constructor=r}r.prototype=A===null?Object.create(A):(e.prototype=A.prototype,new e)}var is=function(){return is=Object.assign||function(A){for(var e,t=1,n=arguments.length;t<n;t++){e=arguments[t];for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&(A[s]=e[s])}return A},is.apply(this,arguments)};function hA(r,A,e,t){function n(s){return s instanceof e?s:new e(function(i){i(s)})}return new(e||(e=Promise))(function(s,i){function o(c){try{l(t.next(c))}catch(u){i(u)}}function a(c){try{l(t.throw(c))}catch(u){i(u)}}function l(c){c.done?s(c.value):n(c.value).then(o,a)}l((t=t.apply(r,[])).next())})}function sA(r,A){var e={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},t,n,s,i;return i={next:o(0),throw:o(1),return:o(2)},typeof Symbol=="function"&&(i[Symbol.iterator]=function(){return this}),i;function o(l){return function(c){return a([l,c])}}function a(l){if(t)throw new TypeError("Generator is already executing.");for(;e;)try{if(t=1,n&&(s=l[0]&2?n.return:l[0]?n.throw||((s=n.return)&&s.call(n),0):n.next)&&!(s=s.call(n,l[1])).done)return s;switch(n=0,s&&(l=[l[0]&2,s.value]),l[0]){case 0:case 1:s=l;break;case 4:return e.label++,{value:l[1],done:!1};case 5:e.label++,n=l[1],l=[0];continue;case 7:l=e.ops.pop(),e.trys.pop();continue;default:if(s=e.trys,!(s=s.length>0&&s[s.length-1])&&(l[0]===6||l[0]===2)){e=0;continue}if(l[0]===3&&(!s||l[1]>s[0]&&l[1]<s[3])){e.label=l[1];break}if(l[0]===6&&e.label<s[1]){e.label=s[1],s=l;break}if(s&&e.label<s[2]){e.label=s[2],e.ops.push(l);break}s[2]&&e.ops.pop(),e.trys.pop();continue}l=A.call(r,e)}catch(c){l=[6,c],n=0}finally{t=s=0}if(l[0]&5)throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}}function Ir(r,A,e){if(arguments.length===2)for(var t=0,n=A.length,s;t<n;t++)(s||!(t in A))&&(s||(s=Array.prototype.slice.call(A,0,t)),s[t]=A[t]);return r.concat(s||A)}for(var MA=function(){function r(A,e,t,n){this.left=A,this.top=e,this.width=t,this.height=n}return r.prototype.add=function(A,e,t,n){return new r(this.left+A,this.top+e,this.width+t,this.height+n)},r.fromClientRect=function(A,e){return new r(e.left+A.windowBounds.left,e.top+A.windowBounds.top,e.width,e.height)},r.fromDOMRectList=function(A,e){var t=Array.from(e).find(function(n){return n.width!==0});return t?new r(t.left+A.windowBounds.left,t.top+A.windowBounds.top,t.width,t.height):r.EMPTY},r.EMPTY=new r(0,0,0,0),r}(),Tr=function(r,A){return MA.fromClientRect(r,A.getBoundingClientRect())},Eu=function(r){var A=r.body,e=r.documentElement;if(!A||!e)throw new Error("Unable to get document size");var t=Math.max(Math.max(A.scrollWidth,e.scrollWidth),Math.max(A.offsetWidth,e.offsetWidth),Math.max(A.clientWidth,e.clientWidth)),n=Math.max(Math.max(A.scrollHeight,e.scrollHeight),Math.max(A.offsetHeight,e.offsetHeight),Math.max(A.clientHeight,e.clientHeight));return new MA(0,0,t,n)},Hr=function(r){for(var A=[],e=0,t=r.length;e<t;){var n=r.charCodeAt(e++);if(n>=55296&&n<=56319&&e<t){var s=r.charCodeAt(e++);(s&64512)===56320?A.push(((n&1023)<<10)+(s&1023)+65536):(A.push(n),e--)}else A.push(n)}return A},X=function(){for(var r=[],A=0;A<arguments.length;A++)r[A]=arguments[A];if(String.fromCodePoint)return String.fromCodePoint.apply(String,r);var e=r.length;if(!e)return"";for(var t=[],n=-1,s="";++n<e;){var i=r[n];i<=65535?t.push(i):(i-=65536,t.push((i>>10)+55296,i%1024+56320)),(n+1===e||t.length>16384)&&(s+=String.fromCharCode.apply(String,t),t.length=0)}return s},tl="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",yu=typeof Uint8Array>"u"?[]:new Uint8Array(256),Lr=0;Lr<tl.length;Lr++)yu[tl.charCodeAt(Lr)]=Lr;for(var rl="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Xe=typeof Uint8Array>"u"?[]:new Uint8Array(256),br=0;br<rl.length;br++)Xe[rl.charCodeAt(br)]=br;for(var Su=function(r){var A=r.length*.75,e=r.length,t,n=0,s,i,o,a;r[r.length-1]==="="&&(A--,r[r.length-2]==="="&&A--);var l=typeof ArrayBuffer<"u"&&typeof Uint8Array<"u"&&typeof Uint8Array.prototype.slice<"u"?new ArrayBuffer(A):new Array(A),c=Array.isArray(l)?l:new Uint8Array(l);for(t=0;t<e;t+=4)s=Xe[r.charCodeAt(t)],i=Xe[r.charCodeAt(t+1)],o=Xe[r.charCodeAt(t+2)],a=Xe[r.charCodeAt(t+3)],c[n++]=s<<2|i>>4,c[n++]=(i&15)<<4|o>>2,c[n++]=(o&3)<<6|a&63;return l},Iu=function(r){for(var A=r.length,e=[],t=0;t<A;t+=2)e.push(r[t+1]<<8|r[t]);return e},Tu=function(r){for(var A=r.length,e=[],t=0;t<A;t+=4)e.push(r[t+3]<<24|r[t+2]<<16|r[t+1]<<8|r[t]);return e},Ae=5,os=11,as=2,Hu=os-Ae,nl=65536>>Ae,Lu=1<<Ae,ls=Lu-1,bu=1024>>Ae,Mu=nl+bu,Du=Mu,Ru=32,Pu=Du+Ru,Ku=65536>>os,xu=1<<Hu,ku=xu-1,sl=function(r,A,e){return r.slice?r.slice(A,e):new Uint16Array(Array.prototype.slice.call(r,A,e))},Gu=function(r,A,e){return r.slice?r.slice(A,e):new Uint32Array(Array.prototype.slice.call(r,A,e))},Nu=function(r,A){var e=Su(r),t=Array.isArray(e)?Tu(e):new Uint32Array(e),n=Array.isArray(e)?Iu(e):new Uint16Array(e),s=24,i=sl(n,s/2,t[4]/2),o=t[5]===2?sl(n,(s+t[4])/2):Gu(t,Math.ceil((s+t[4])/4));return new _u(t[0],t[1],t[2],t[3],i,o)},_u=function(){function r(A,e,t,n,s,i){this.initialValue=A,this.errorValue=e,this.highStart=t,this.highValueIndex=n,this.index=s,this.data=i}return r.prototype.get=function(A){var e;if(A>=0){if(A<55296||A>56319&&A<=65535)return e=this.index[A>>Ae],e=(e<<as)+(A&ls),this.data[e];if(A<=65535)return e=this.index[nl+(A-55296>>Ae)],e=(e<<as)+(A&ls),this.data[e];if(A<this.highStart)return e=Pu-Ku+(A>>os),e=this.index[e],e+=A>>Ae&ku,e=this.index[e],e=(e<<as)+(A&ls),this.data[e];if(A<=1114111)return this.data[this.highValueIndex]}return this.errorValue},r}(),il="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Vu=typeof Uint8Array>"u"?[]:new Uint8Array(256),Mr=0;Mr<il.length;Mr++)Vu[il.charCodeAt(Mr)]=Mr;var Ou="KwAAAAAAAAAACA4AUD0AADAgAAACAAAAAAAIABAAGABAAEgAUABYAGAAaABgAGgAYgBqAF8AZwBgAGgAcQB5AHUAfQCFAI0AlQCdAKIAqgCyALoAYABoAGAAaABgAGgAwgDKAGAAaADGAM4A0wDbAOEA6QDxAPkAAQEJAQ8BFwF1AH0AHAEkASwBNAE6AUIBQQFJAVEBWQFhAWgBcAF4ATAAgAGGAY4BlQGXAZ8BpwGvAbUBvQHFAc0B0wHbAeMB6wHxAfkBAQIJAvEBEQIZAiECKQIxAjgCQAJGAk4CVgJeAmQCbAJ0AnwCgQKJApECmQKgAqgCsAK4ArwCxAIwAMwC0wLbAjAA4wLrAvMC+AIAAwcDDwMwABcDHQMlAy0DNQN1AD0DQQNJA0kDSQNRA1EDVwNZA1kDdQB1AGEDdQBpA20DdQN1AHsDdQCBA4kDkQN1AHUAmQOhA3UAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AKYDrgN1AHUAtgO+A8YDzgPWAxcD3gPjA+sD8wN1AHUA+wMDBAkEdQANBBUEHQQlBCoEFwMyBDgEYABABBcDSARQBFgEYARoBDAAcAQzAXgEgASIBJAEdQCXBHUAnwSnBK4EtgS6BMIEyAR1AHUAdQB1AHUAdQCVANAEYABgAGAAYABgAGAAYABgANgEYADcBOQEYADsBPQE/AQEBQwFFAUcBSQFLAU0BWQEPAVEBUsFUwVbBWAAYgVgAGoFcgV6BYIFigWRBWAAmQWfBaYFYABgAGAAYABgAKoFYACxBbAFuQW6BcEFwQXHBcEFwQXPBdMF2wXjBeoF8gX6BQIGCgYSBhoGIgYqBjIGOgZgAD4GRgZMBmAAUwZaBmAAYABgAGAAYABgAGAAYABgAGAAYABgAGIGYABpBnAGYABgAGAAYABgAGAAYABgAGAAYAB4Bn8GhQZgAGAAYAB1AHcDFQSLBmAAYABgAJMGdQA9A3UAmwajBqsGqwaVALMGuwbDBjAAywbSBtIG1QbSBtIG0gbSBtIG0gbdBuMG6wbzBvsGAwcLBxMHAwcbByMHJwcsBywHMQcsB9IGOAdAB0gHTgfSBkgHVgfSBtIG0gbSBtIG0gbSBtIG0gbSBiwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdgAGAALAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdbB2MHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB2kH0gZwB64EdQB1AHUAdQB1AHUAdQB1AHUHfQdgAIUHjQd1AHUAlQedB2AAYAClB6sHYACzB7YHvgfGB3UAzgfWBzMB3gfmB1EB7gf1B/0HlQENAQUIDQh1ABUIHQglCBcDLQg1CD0IRQhNCEEDUwh1AHUAdQBbCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIcAh3CHoIMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIgggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAALAcsBywHLAcsBywHLAcsBywHLAcsB4oILAcsB44I0gaWCJ4Ipgh1AHUAqgiyCHUAdQB1AHUAdQB1AHUAdQB1AHUAtwh8AXUAvwh1AMUIyQjRCNkI4AjoCHUAdQB1AO4I9gj+CAYJDgkTCS0HGwkjCYIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiAAIAAAAFAAYABgAGIAXwBgAHEAdQBFAJUAogCyAKAAYABgAEIA4ABGANMA4QDxAMEBDwE1AFwBLAE6AQEBUQF4QkhCmEKoQrhCgAHIQsAB0MLAAcABwAHAAeDC6ABoAHDCwMMAAcABwAHAAdDDGMMAAcAB6MM4wwjDWMNow3jDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEjDqABWw6bDqABpg6gAaABoAHcDvwOPA+gAaABfA/8DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DpcPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB9cPKwkyCToJMAB1AHUAdQBCCUoJTQl1AFUJXAljCWcJawkwADAAMAAwAHMJdQB2CX4JdQCECYoJjgmWCXUAngkwAGAAYABxAHUApgn3A64JtAl1ALkJdQDACTAAMAAwADAAdQB1AHUAdQB1AHUAdQB1AHUAowYNBMUIMAAwADAAMADICcsJ0wnZCRUE4QkwAOkJ8An4CTAAMAB1AAAKvwh1AAgKDwoXCh8KdQAwACcKLgp1ADYKqAmICT4KRgowADAAdQB1AE4KMAB1AFYKdQBeCnUAZQowADAAMAAwADAAMAAwADAAMAAVBHUAbQowADAAdQC5CXUKMAAwAHwBxAijBogEMgF9CoQKiASMCpQKmgqIBKIKqgquCogEDQG2Cr4KxgrLCjAAMADTCtsKCgHjCusK8Qr5CgELMAAwADAAMAB1AIsECQsRC3UANAEZCzAAMAAwADAAMAB1ACELKQswAHUANAExCzkLdQBBC0kLMABRC1kLMAAwADAAMAAwADAAdQBhCzAAMAAwAGAAYABpC3ELdwt/CzAAMACHC4sLkwubC58Lpwt1AK4Ltgt1APsDMAAwADAAMAAwADAAMAAwAL4LwwvLC9IL1wvdCzAAMADlC+kL8Qv5C/8LSQswADAAMAAwADAAMAAwADAAMAAHDDAAMAAwADAAMAAODBYMHgx1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1ACYMMAAwADAAdQB1AHUALgx1AHUAdQB1AHUAdQA2DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AD4MdQBGDHUAdQB1AHUAdQB1AEkMdQB1AHUAdQB1AFAMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQBYDHUAdQB1AF8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUA+wMVBGcMMAAwAHwBbwx1AHcMfwyHDI8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAYABgAJcMMAAwADAAdQB1AJ8MlQClDDAAMACtDCwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB7UMLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AA0EMAC9DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAsBywHLAcsBywHLAcsBywHLQcwAMEMyAwsBywHLAcsBywHLAcsBywHLAcsBywHzAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1ANQM2QzhDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMABgAGAAYABgAGAAYABgAOkMYADxDGAA+AwADQYNYABhCWAAYAAODTAAMAAwADAAFg1gAGAAHg37AzAAMAAwADAAYABgACYNYAAsDTQNPA1gAEMNPg1LDWAAYABgAGAAYABgAGAAYABgAGAAUg1aDYsGVglhDV0NcQBnDW0NdQ15DWAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAlQCBDZUAiA2PDZcNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAnw2nDTAAMAAwADAAMAAwAHUArw23DTAAMAAwADAAMAAwADAAMAAwADAAMAB1AL8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQDHDTAAYABgAM8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA1w11ANwNMAAwAD0B5A0wADAAMAAwADAAMADsDfQN/A0EDgwOFA4wABsOMAAwADAAMAAwADAAMAAwANIG0gbSBtIG0gbSBtIG0gYjDigOwQUuDsEFMw7SBjoO0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGQg5KDlIOVg7SBtIGXg5lDm0OdQ7SBtIGfQ6EDooOjQ6UDtIGmg6hDtIG0gaoDqwO0ga0DrwO0gZgAGAAYADEDmAAYAAkBtIGzA5gANIOYADaDokO0gbSBt8O5w7SBu8O0gb1DvwO0gZgAGAAxA7SBtIG0gbSBtIGYABgAGAAYAAED2AAsAUMD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHJA8sBywHLAcsBywHLAccDywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywPLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAc0D9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHPA/SBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gYUD0QPlQCVAJUAMAAwADAAMACVAJUAlQCVAJUAlQCVAEwPMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA//8EAAQABAAEAAQABAAEAAQABAANAAMAAQABAAIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQACgATABcAHgAbABoAHgAXABYAEgAeABsAGAAPABgAHABLAEsASwBLAEsASwBLAEsASwBLABgAGAAeAB4AHgATAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAGwASAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWAA0AEQAeAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAFAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJABYAGgAbABsAGwAeAB0AHQAeAE8AFwAeAA0AHgAeABoAGwBPAE8ADgBQAB0AHQAdAE8ATwAXAE8ATwBPABYAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwBWAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsABAAbABsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEAA0ADQBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABABQACsAKwArACsAKwArACsAKwAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUAAaABoAUABQAFAAUABQAEwAHgAbAFAAHgAEACsAKwAEAAQABAArAFAAUABQAFAAUABQACsAKwArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQACsAUABQACsAKwAEACsABAAEAAQABAAEACsAKwArACsABAAEACsAKwAEAAQABAArACsAKwAEACsAKwArACsAKwArACsAUABQAFAAUAArAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAAQABABQAFAAUAAEAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAArACsAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AGwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAKwArACsAKwArAAQABAAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAAQAUAArAFAAUABQAFAAUABQACsAKwArAFAAUABQACsAUABQAFAAUAArACsAKwBQAFAAKwBQACsAUABQACsAKwArAFAAUAArACsAKwBQAFAAUAArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAArACsAKwAEAAQABAArAAQABAAEAAQAKwArAFAAKwArACsAKwArACsABAArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAHgAeAB4AHgAeAB4AGwAeACsAKwArACsAKwAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAUABQAFAAKwArACsAKwArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwAOAFAAUABQAFAAUABQAFAAHgBQAAQABAAEAA4AUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAKwArAAQAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAKwArACsAKwArACsAUAArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAXABcAFwAXABcACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAXAArAFwAXABcAFwAXABcAFwAXABcAFwAKgBcAFwAKgAqACoAKgAqACoAKgAqACoAXAArACsAXABcAFwAXABcACsAXAArACoAKgAqACoAKgAqACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwBcAFwAXABcAFAADgAOAA4ADgAeAA4ADgAJAA4ADgANAAkAEwATABMAEwATAAkAHgATAB4AHgAeAAQABAAeAB4AHgAeAB4AHgBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAADQAEAB4ABAAeAAQAFgARABYAEQAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAAQABAAEAAQADQAEAAQAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAA0ADQAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeACsAHgAeAA4ADgANAA4AHgAeAB4AHgAeAAkACQArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgBcAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4AHgAeAB4AXABcAFwAXABcAFwAKgAqACoAKgBcAFwAXABcACoAKgAqAFwAKgAqACoAXABcACoAKgAqACoAKgAqACoAXABcAFwAKgAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwAKgBLAEsASwBLAEsASwBLAEsASwBLACoAKgAqACoAKgAqAFAAUABQAFAAUABQACsAUAArACsAKwArACsAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAKwBQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsABAAEAAQAHgANAB4AHgAeAB4AHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUAArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWABEAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAANAA0AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUAArAAQABAArACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAA0ADQAVAFwADQAeAA0AGwBcACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwAeAB4AEwATAA0ADQAOAB4AEwATAB4ABAAEAAQACQArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAHgArACsAKwATABMASwBLAEsASwBLAEsASwBLAEsASwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAXABcAFwAXABcACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXAArACsAKwAqACoAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsAHgAeAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKwArAAQASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACoAKgAqACoAKgAqACoAXAAqACoAKgAqACoAKgArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABABQAFAAUABQAFAAUABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgANAA0ADQANAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwAeAB4AHgAeAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArAA0ADQANAA0ADQBLAEsASwBLAEsASwBLAEsASwBLACsAKwArAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUAAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAAQAUABQAFAAUABQAFAABABQAFAABAAEAAQAUAArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQACsAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQACsAKwAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQACsAHgAeAB4AHgAeAB4AHgAOAB4AKwANAA0ADQANAA0ADQANAAkADQANAA0ACAAEAAsABAAEAA0ACQANAA0ADAAdAB0AHgAXABcAFgAXABcAFwAWABcAHQAdAB4AHgAUABQAFAANAAEAAQAEAAQABAAEAAQACQAaABoAGgAaABoAGgAaABoAHgAXABcAHQAVABUAHgAeAB4AHgAeAB4AGAAWABEAFQAVABUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ADQAeAA0ADQANAA0AHgANAA0ADQAHAB4AHgAeAB4AKwAEAAQABAAEAAQABAAEAAQABAAEAFAAUAArACsATwBQAFAAUABQAFAAHgAeAB4AFgARAE8AUABPAE8ATwBPAFAAUABQAFAAUAAeAB4AHgAWABEAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArABsAGwAbABsAGwAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGgAbABsAGwAbABoAGwAbABoAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAFAAGgAeAB0AHgBQAB4AGgAeAB4AHgAeAB4AHgAeAB4AHgBPAB4AUAAbAB4AHgBQAFAAUABQAFAAHgAeAB4AHQAdAB4AUAAeAFAAHgBQAB4AUABPAFAAUAAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgBQAFAAUABQAE8ATwBQAFAAUABQAFAATwBQAFAATwBQAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAUABQAFAATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABPAB4AHgArACsAKwArAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAdAB4AHgAeAB0AHQAeAB4AHQAeAB4AHgAdAB4AHQAbABsAHgAdAB4AHgAeAB4AHQAeAB4AHQAdAB0AHQAeAB4AHQAeAB0AHgAdAB0AHQAdAB0AHQAeAB0AHgAeAB4AHgAeAB0AHQAdAB0AHgAeAB4AHgAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB0AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAdAB0AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHQAdAB0AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHQAdAB4AHgAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AJQAlAB0AHQAlAB4AJQAlACUAIAAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAeAB0AJQAdAB0AHgAdAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAdAB0AHQAdACUAHgAlACUAJQAdACUAJQAdAB0AHQAlACUAHQAdACUAHQAdACUAJQAlAB4AHQAeAB4AHgAeAB0AHQAlAB0AHQAdAB0AHQAdACUAJQAlACUAJQAdACUAJQAgACUAHQAdACUAJQAlACUAJQAlACUAJQAeAB4AHgAlACUAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AFwAXABcAFwAXABcAHgATABMAJQAeAB4AHgAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARABYAEQAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANAA0AHgANAB4ADQANAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwAlACUAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACsAKwArACsAKwArACsAKwArACsAKwArAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBPAE8ATwBPAE8ATwBPAE8AJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeAAQAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUABQAAQAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAUABQAFAAUABQAAQABAAEACsABAAEACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAKwBQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAA0ADQANAA0ADQANAA0ADQAeACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAArACsAKwArAFAAUABQAFAAUAANAA0ADQANAA0ADQAUACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQANAA0ADQANAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAANACsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAB4AHgAeAB4AHgArACsAKwArACsAKwAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANAFAABAAEAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAEAAQABAAEAB4ABAAEAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsABAAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLAA0ADQArAB4ABABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUAAeAFAAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAAEAAQADgANAA0AEwATAB4AHgAeAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAFAAUABQAFAABAAEACsAKwAEAA0ADQAeAFAAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcAFwADQANAA0AKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQAKwAEAAQAKwArAAQABAAEAAQAUAAEAFAABAAEAA0ADQANACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABABQAA4AUAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANAFAADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAaABoAGgAaAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAJAAkACQAJAAkACQAJABYAEQArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AHgAeACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAARwBHABUARwAJACsAKwArACsAKwArACsAKwArACsAKwAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAKwArACsAKwArACsAKwArACsAKwArACsAKwBRAFEAUQBRACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAHgAEAAQADQAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAeAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQAHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAKwArAFAAKwArAFAAUAArACsAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAHgAeAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeACsAKwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4ABAAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAHgAeAA0ADQANAA0AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArAAQABAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwBQAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArABsAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAB4AHgAeAB4ABAAEAAQABAAEAAQABABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArABYAFgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAGgBQAFAAUAAaAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUAArACsAKwArACsAKwBQACsAKwArACsAUAArAFAAKwBQACsAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUAArAFAAKwBQACsAUAArAFAAUAArAFAAKwArAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAKwBQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeACUAJQAlAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAHgAlACUAJQAlACUAIAAgACAAJQAlACAAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACEAIQAhACEAIQAlACUAIAAgACUAJQAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAlACUAJQAlACAAIAAgACUAIAAgACAAJQAlACUAJQAlACUAJQAgACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAlAB4AJQAeACUAJQAlACUAJQAgACUAJQAlACUAHgAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACAAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABcAFwAXABUAFQAVAB4AHgAeAB4AJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAgACUAJQAgACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAIAAgACUAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACAAIAAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACAAIAAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAA==",ol=50,Wu=1,al=2,ll=3,Xu=4,Ju=5,cl=7,dl=8,ul=9,GA=10,cs=11,hl=12,ds=13,zu=14,Je=15,us=16,Dr=17,ze=18,Yu=19,gl=20,hs=21,Ye=22,gs=23,Ce=24,fA=25,$e=26,Ze=27,ve=28,$u=29,ee=30,Zu=31,Rr=32,Pr=33,Bs=34,fs=35,ws=36,qe=37,ps=38,Kr=39,xr=40,Cs=41,Bl=42,qu=43,ju=[9001,65288],fl="!",K="×",kr="÷",vs=Nu(Ou),DA=[ee,ws],ms=[Wu,al,ll,Ju],wl=[GA,dl],pl=[Ze,$e],Ah=ms.concat(wl),Cl=[ps,Kr,xr,Bs,fs],eh=[Je,ds],th=function(r,A){A===void 0&&(A="strict");var e=[],t=[],n=[];return r.forEach(function(s,i){var o=vs.get(s);if(o>ol?(n.push(!0),o-=ol):n.push(!1),["normal","auto","loose"].indexOf(A)!==-1&&[8208,8211,12316,12448].indexOf(s)!==-1)return t.push(i),e.push(us);if(o===Xu||o===cs){if(i===0)return t.push(i),e.push(ee);var a=e[i-1];return Ah.indexOf(a)===-1?(t.push(t[i-1]),e.push(a)):(t.push(i),e.push(ee))}if(t.push(i),o===Zu)return e.push(A==="strict"?hs:qe);if(o===Bl||o===$u)return e.push(ee);if(o===qu)return s>=131072&&s<=196605||s>=196608&&s<=262141?e.push(qe):e.push(ee);e.push(o)}),[t,e,n]},Fs=function(r,A,e,t){var n=t[e];if(Array.isArray(r)?r.indexOf(n)!==-1:r===n)for(var s=e;s<=t.length;){s++;var i=t[s];if(i===A)return!0;if(i!==GA)break}if(n===GA)for(var s=e;s>0;){s--;var o=t[s];if(Array.isArray(r)?r.indexOf(o)!==-1:r===o)for(var a=e;a<=t.length;){a++;var i=t[a];if(i===A)return!0;if(i!==GA)break}if(o!==GA)break}return!1},vl=function(r,A){for(var e=r;e>=0;){var t=A[e];if(t===GA)e--;else return t}return 0},rh=function(r,A,e,t,n){if(e[t]===0)return K;var s=t-1;if(Array.isArray(n)&&n[s]===!0)return K;var i=s-1,o=s+1,a=A[s],l=i>=0?A[i]:0,c=A[o];if(a===al&&c===ll)return K;if(ms.indexOf(a)!==-1)return fl;if(ms.indexOf(c)!==-1||wl.indexOf(c)!==-1)return K;if(vl(s,A)===dl)return kr;if(vs.get(r[s])===cs||(a===Rr||a===Pr)&&vs.get(r[o])===cs||a===cl||c===cl||a===ul||[GA,ds,Je].indexOf(a)===-1&&c===ul||[Dr,ze,Yu,Ce,ve].indexOf(c)!==-1||vl(s,A)===Ye||Fs(gs,Ye,s,A)||Fs([Dr,ze],hs,s,A)||Fs(hl,hl,s,A))return K;if(a===GA)return kr;if(a===gs||c===gs)return K;if(c===us||a===us)return kr;if([ds,Je,hs].indexOf(c)!==-1||a===zu||l===ws&&eh.indexOf(a)!==-1||a===ve&&c===ws||c===gl||DA.indexOf(c)!==-1&&a===fA||DA.indexOf(a)!==-1&&c===fA||a===Ze&&[qe,Rr,Pr].indexOf(c)!==-1||[qe,Rr,Pr].indexOf(a)!==-1&&c===$e||DA.indexOf(a)!==-1&&pl.indexOf(c)!==-1||pl.indexOf(a)!==-1&&DA.indexOf(c)!==-1||[Ze,$e].indexOf(a)!==-1&&(c===fA||[Ye,Je].indexOf(c)!==-1&&A[o+1]===fA)||[Ye,Je].indexOf(a)!==-1&&c===fA||a===fA&&[fA,ve,Ce].indexOf(c)!==-1)return K;if([fA,ve,Ce,Dr,ze].indexOf(c)!==-1)for(var u=s;u>=0;){var d=A[u];if(d===fA)return K;if([ve,Ce].indexOf(d)!==-1)u--;else break}if([Ze,$e].indexOf(c)!==-1)for(var u=[Dr,ze].indexOf(a)!==-1?i:s;u>=0;){var d=A[u];if(d===fA)return K;if([ve,Ce].indexOf(d)!==-1)u--;else break}if(ps===a&&[ps,Kr,Bs,fs].indexOf(c)!==-1||[Kr,Bs].indexOf(a)!==-1&&[Kr,xr].indexOf(c)!==-1||[xr,fs].indexOf(a)!==-1&&c===xr||Cl.indexOf(a)!==-1&&[gl,$e].indexOf(c)!==-1||Cl.indexOf(c)!==-1&&a===Ze||DA.indexOf(a)!==-1&&DA.indexOf(c)!==-1||a===Ce&&DA.indexOf(c)!==-1||DA.concat(fA).indexOf(a)!==-1&&c===Ye&&ju.indexOf(r[o])===-1||DA.concat(fA).indexOf(c)!==-1&&a===ze)return K;if(a===Cs&&c===Cs){for(var B=e[s],g=1;B>0&&(B--,A[B]===Cs);)g++;if(g%2!==0)return K}return a===Rr&&c===Pr?K:kr},nh=function(r,A){A||(A={lineBreak:"normal",wordBreak:"normal"});var e=th(r,A.lineBreak),t=e[0],n=e[1],s=e[2];(A.wordBreak==="break-all"||A.wordBreak==="break-word")&&(n=n.map(function(o){return[fA,ee,Bl].indexOf(o)!==-1?qe:o}));var i=A.wordBreak==="keep-all"?s.map(function(o,a){return o&&r[a]>=19968&&r[a]<=40959}):void 0;return[t,n,i]},sh=function(){function r(A,e,t,n){this.codePoints=A,this.required=e===fl,this.start=t,this.end=n}return r.prototype.slice=function(){return X.apply(void 0,this.codePoints.slice(this.start,this.end))},r}(),ih=function(r,A){var e=Hr(r),t=nh(e,A),n=t[0],s=t[1],i=t[2],o=e.length,a=0,l=0;return{next:function(){if(l>=o)return{done:!0,value:null};for(var c=K;l<o&&(c=rh(e,s,n,++l,i))===K;);if(c!==K||l===o){var u=new sh(e,c,a,l);return a=l,{value:u,done:!1}}return{done:!0,value:null}}}},oh=1,ah=2,je=4,ml=8,Gr=10,Fl=47,At=92,lh=9,ch=32,Nr=34,et=61,dh=35,uh=36,hh=37,_r=39,Vr=40,tt=41,gh=95,gA=45,Bh=33,fh=60,wh=62,ph=64,Ch=91,vh=93,mh=61,Fh=123,Or=63,Qh=125,Ql=124,Uh=126,Eh=128,Ul=65533,Qs=42,te=43,yh=44,Sh=58,Ih=59,rt=46,Th=0,Hh=8,Lh=11,bh=14,Mh=31,Dh=127,EA=-1,El=48,yl=97,Sl=101,Rh=102,Ph=117,Kh=122,Il=65,Tl=69,Hl=70,xh=85,kh=90,iA=function(r){return r>=El&&r<=57},Gh=function(r){return r>=55296&&r<=57343},me=function(r){return iA(r)||r>=Il&&r<=Hl||r>=yl&&r<=Rh},Nh=function(r){return r>=yl&&r<=Kh},_h=function(r){return r>=Il&&r<=kh},Vh=function(r){return Nh(r)||_h(r)},Oh=function(r){return r>=Eh},Wr=function(r){return r===Gr||r===lh||r===ch},Xr=function(r){return Vh(r)||Oh(r)||r===gh},Ll=function(r){return Xr(r)||iA(r)||r===gA},Wh=function(r){return r>=Th&&r<=Hh||r===Lh||r>=bh&&r<=Mh||r===Dh},NA=function(r,A){return r!==At?!1:A!==Gr},Jr=function(r,A,e){return r===gA?Xr(A)||NA(A,e):Xr(r)?!0:!!(r===At&&NA(r,A))},Us=function(r,A,e){return r===te||r===gA?iA(A)?!0:A===rt&&iA(e):iA(r===rt?A:r)},Xh=function(r){var A=0,e=1;(r[A]===te||r[A]===gA)&&(r[A]===gA&&(e=-1),A++);for(var t=[];iA(r[A]);)t.push(r[A++]);var n=t.length?parseInt(X.apply(void 0,t),10):0;r[A]===rt&&A++;for(var s=[];iA(r[A]);)s.push(r[A++]);var i=s.length,o=i?parseInt(X.apply(void 0,s),10):0;(r[A]===Tl||r[A]===Sl)&&A++;var a=1;(r[A]===te||r[A]===gA)&&(r[A]===gA&&(a=-1),A++);for(var l=[];iA(r[A]);)l.push(r[A++]);var c=l.length?parseInt(X.apply(void 0,l),10):0;return e*(n+o*Math.pow(10,-i))*Math.pow(10,a*c)},Jh={type:2},zh={type:3},Yh={type:4},$h={type:13},Zh={type:8},qh={type:21},jh={type:9},Ag={type:10},eg={type:11},tg={type:12},rg={type:14},zr={type:23},ng={type:1},sg={type:25},ig={type:24},og={type:26},ag={type:27},lg={type:28},cg={type:29},dg={type:31},Es={type:32},bl=function(){function r(){this._value=[]}return r.prototype.write=function(A){this._value=this._value.concat(Hr(A))},r.prototype.read=function(){for(var A=[],e=this.consumeToken();e!==Es;)A.push(e),e=this.consumeToken();return A},r.prototype.consumeToken=function(){var A=this.consumeCodePoint();switch(A){case Nr:return this.consumeStringToken(Nr);case dh:var e=this.peekCodePoint(0),t=this.peekCodePoint(1),n=this.peekCodePoint(2);if(Ll(e)||NA(t,n)){var s=Jr(e,t,n)?ah:oh,i=this.consumeName();return{type:5,value:i,flags:s}}break;case uh:if(this.peekCodePoint(0)===et)return this.consumeCodePoint(),$h;break;case _r:return this.consumeStringToken(_r);case Vr:return Jh;case tt:return zh;case Qs:if(this.peekCodePoint(0)===et)return this.consumeCodePoint(),rg;break;case te:if(Us(A,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(A),this.consumeNumericToken();break;case yh:return Yh;case gA:var o=A,a=this.peekCodePoint(0),l=this.peekCodePoint(1);if(Us(o,a,l))return this.reconsumeCodePoint(A),this.consumeNumericToken();if(Jr(o,a,l))return this.reconsumeCodePoint(A),this.consumeIdentLikeToken();if(a===gA&&l===wh)return this.consumeCodePoint(),this.consumeCodePoint(),ig;break;case rt:if(Us(A,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(A),this.consumeNumericToken();break;case Fl:if(this.peekCodePoint(0)===Qs)for(this.consumeCodePoint();;){var c=this.consumeCodePoint();if(c===Qs&&(c=this.consumeCodePoint(),c===Fl))return this.consumeToken();if(c===EA)return this.consumeToken()}break;case Sh:return og;case Ih:return ag;case fh:if(this.peekCodePoint(0)===Bh&&this.peekCodePoint(1)===gA&&this.peekCodePoint(2)===gA)return this.consumeCodePoint(),this.consumeCodePoint(),sg;break;case ph:var u=this.peekCodePoint(0),d=this.peekCodePoint(1),B=this.peekCodePoint(2);if(Jr(u,d,B)){var i=this.consumeName();return{type:7,value:i}}break;case Ch:return lg;case At:if(NA(A,this.peekCodePoint(0)))return this.reconsumeCodePoint(A),this.consumeIdentLikeToken();break;case vh:return cg;case mh:if(this.peekCodePoint(0)===et)return this.consumeCodePoint(),Zh;break;case Fh:return eg;case Qh:return tg;case Ph:case xh:var g=this.peekCodePoint(0),f=this.peekCodePoint(1);return g===te&&(me(f)||f===Or)&&(this.consumeCodePoint(),this.consumeUnicodeRangeToken()),this.reconsumeCodePoint(A),this.consumeIdentLikeToken();case Ql:if(this.peekCodePoint(0)===et)return this.consumeCodePoint(),jh;if(this.peekCodePoint(0)===Ql)return this.consumeCodePoint(),qh;break;case Uh:if(this.peekCodePoint(0)===et)return this.consumeCodePoint(),Ag;break;case EA:return Es}return Wr(A)?(this.consumeWhiteSpace(),dg):iA(A)?(this.reconsumeCodePoint(A),this.consumeNumericToken()):Xr(A)?(this.reconsumeCodePoint(A),this.consumeIdentLikeToken()):{type:6,value:X(A)}},r.prototype.consumeCodePoint=function(){var A=this._value.shift();return typeof A>"u"?-1:A},r.prototype.reconsumeCodePoint=function(A){this._value.unshift(A)},r.prototype.peekCodePoint=function(A){return A>=this._value.length?-1:this._value[A]},r.prototype.consumeUnicodeRangeToken=function(){for(var A=[],e=this.consumeCodePoint();me(e)&&A.length<6;)A.push(e),e=this.consumeCodePoint();for(var t=!1;e===Or&&A.length<6;)A.push(e),e=this.consumeCodePoint(),t=!0;if(t){var n=parseInt(X.apply(void 0,A.map(function(a){return a===Or?El:a})),16),s=parseInt(X.apply(void 0,A.map(function(a){return a===Or?Hl:a})),16);return{type:30,start:n,end:s}}var i=parseInt(X.apply(void 0,A),16);if(this.peekCodePoint(0)===gA&&me(this.peekCodePoint(1))){this.consumeCodePoint(),e=this.consumeCodePoint();for(var o=[];me(e)&&o.length<6;)o.push(e),e=this.consumeCodePoint();var s=parseInt(X.apply(void 0,o),16);return{type:30,start:i,end:s}}else return{type:30,start:i,end:i}},r.prototype.consumeIdentLikeToken=function(){var A=this.consumeName();return A.toLowerCase()==="url"&&this.peekCodePoint(0)===Vr?(this.consumeCodePoint(),this.consumeUrlToken()):this.peekCodePoint(0)===Vr?(this.consumeCodePoint(),{type:19,value:A}):{type:20,value:A}},r.prototype.consumeUrlToken=function(){var A=[];if(this.consumeWhiteSpace(),this.peekCodePoint(0)===EA)return{type:22,value:""};var e=this.peekCodePoint(0);if(e===_r||e===Nr){var t=this.consumeStringToken(this.consumeCodePoint());return t.type===0&&(this.consumeWhiteSpace(),this.peekCodePoint(0)===EA||this.peekCodePoint(0)===tt)?(this.consumeCodePoint(),{type:22,value:t.value}):(this.consumeBadUrlRemnants(),zr)}for(;;){var n=this.consumeCodePoint();if(n===EA||n===tt)return{type:22,value:X.apply(void 0,A)};if(Wr(n))return this.consumeWhiteSpace(),this.peekCodePoint(0)===EA||this.peekCodePoint(0)===tt?(this.consumeCodePoint(),{type:22,value:X.apply(void 0,A)}):(this.consumeBadUrlRemnants(),zr);if(n===Nr||n===_r||n===Vr||Wh(n))return this.consumeBadUrlRemnants(),zr;if(n===At)if(NA(n,this.peekCodePoint(0)))A.push(this.consumeEscapedCodePoint());else return this.consumeBadUrlRemnants(),zr;else A.push(n)}},r.prototype.consumeWhiteSpace=function(){for(;Wr(this.peekCodePoint(0));)this.consumeCodePoint()},r.prototype.consumeBadUrlRemnants=function(){for(;;){var A=this.consumeCodePoint();if(A===tt||A===EA)return;NA(A,this.peekCodePoint(0))&&this.consumeEscapedCodePoint()}},r.prototype.consumeStringSlice=function(A){for(var e=5e4,t="";A>0;){var n=Math.min(e,A);t+=X.apply(void 0,this._value.splice(0,n)),A-=n}return this._value.shift(),t},r.prototype.consumeStringToken=function(A){var e="",t=0;do{var n=this._value[t];if(n===EA||n===void 0||n===A)return e+=this.consumeStringSlice(t),{type:0,value:e};if(n===Gr)return this._value.splice(0,t),ng;if(n===At){var s=this._value[t+1];s!==EA&&s!==void 0&&(s===Gr?(e+=this.consumeStringSlice(t),t=-1,this._value.shift()):NA(n,s)&&(e+=this.consumeStringSlice(t),e+=X(this.consumeEscapedCodePoint()),t=-1))}t++}while(!0)},r.prototype.consumeNumber=function(){var A=[],e=je,t=this.peekCodePoint(0);for((t===te||t===gA)&&A.push(this.consumeCodePoint());iA(this.peekCodePoint(0));)A.push(this.consumeCodePoint());t=this.peekCodePoint(0);var n=this.peekCodePoint(1);if(t===rt&&iA(n))for(A.push(this.consumeCodePoint(),this.consumeCodePoint()),e=ml;iA(this.peekCodePoint(0));)A.push(this.consumeCodePoint());t=this.peekCodePoint(0),n=this.peekCodePoint(1);var s=this.peekCodePoint(2);if((t===Tl||t===Sl)&&((n===te||n===gA)&&iA(s)||iA(n)))for(A.push(this.consumeCodePoint(),this.consumeCodePoint()),e=ml;iA(this.peekCodePoint(0));)A.push(this.consumeCodePoint());return[Xh(A),e]},r.prototype.consumeNumericToken=function(){var A=this.consumeNumber(),e=A[0],t=A[1],n=this.peekCodePoint(0),s=this.peekCodePoint(1),i=this.peekCodePoint(2);if(Jr(n,s,i)){var o=this.consumeName();return{type:15,number:e,flags:t,unit:o}}return n===hh?(this.consumeCodePoint(),{type:16,number:e,flags:t}):{type:17,number:e,flags:t}},r.prototype.consumeEscapedCodePoint=function(){var A=this.consumeCodePoint();if(me(A)){for(var e=X(A);me(this.peekCodePoint(0))&&e.length<6;)e+=X(this.consumeCodePoint());Wr(this.peekCodePoint(0))&&this.consumeCodePoint();var t=parseInt(e,16);return t===0||Gh(t)||t>1114111?Ul:t}return A===EA?Ul:A},r.prototype.consumeName=function(){for(var A="";;){var e=this.consumeCodePoint();if(Ll(e))A+=X(e);else if(NA(e,this.peekCodePoint(0)))A+=X(this.consumeEscapedCodePoint());else return this.reconsumeCodePoint(e),A}},r}(),Ml=function(){function r(A){this._tokens=A}return r.create=function(A){var e=new bl;return e.write(A),new r(e.read())},r.parseValue=function(A){return r.create(A).parseComponentValue()},r.parseValues=function(A){return r.create(A).parseComponentValues()},r.prototype.parseComponentValue=function(){for(var A=this.consumeToken();A.type===31;)A=this.consumeToken();if(A.type===32)throw new SyntaxError("Error parsing CSS component value, unexpected EOF");this.reconsumeToken(A);var e=this.consumeComponentValue();do A=this.consumeToken();while(A.type===31);if(A.type===32)return e;throw new SyntaxError("Error parsing CSS component value, multiple values found when expecting only one")},r.prototype.parseComponentValues=function(){for(var A=[];;){var e=this.consumeComponentValue();if(e.type===32)return A;A.push(e),A.push()}},r.prototype.consumeComponentValue=function(){var A=this.consumeToken();switch(A.type){case 11:case 28:case 2:return this.consumeSimpleBlock(A.type);case 19:return this.consumeFunction(A)}return A},r.prototype.consumeSimpleBlock=function(A){for(var e={type:A,values:[]},t=this.consumeToken();;){if(t.type===32||hg(t,A))return e;this.reconsumeToken(t),e.values.push(this.consumeComponentValue()),t=this.consumeToken()}},r.prototype.consumeFunction=function(A){for(var e={name:A.value,values:[],type:18};;){var t=this.consumeToken();if(t.type===32||t.type===3)return e;this.reconsumeToken(t),e.values.push(this.consumeComponentValue())}},r.prototype.consumeToken=function(){var A=this._tokens.shift();return typeof A>"u"?Es:A},r.prototype.reconsumeToken=function(A){this._tokens.unshift(A)},r}(),nt=function(r){return r.type===15},Fe=function(r){return r.type===17},N=function(r){return r.type===20},ug=function(r){return r.type===0},ys=function(r,A){return N(r)&&r.value===A},Dl=function(r){return r.type!==31},Qe=function(r){return r.type!==31&&r.type!==4},yA=function(r){var A=[],e=[];return r.forEach(function(t){if(t.type===4){if(e.length===0)throw new Error("Error parsing function args, zero tokens for arg");A.push(e),e=[];return}t.type!==31&&e.push(t)}),e.length&&A.push(e),A},hg=function(r,A){return A===11&&r.type===12||A===28&&r.type===29?!0:A===2&&r.type===3},_A=function(r){return r.type===17||r.type===15},Y=function(r){return r.type===16||_A(r)},Rl=function(r){return r.length>1?[r[0],r[1]]:[r[0]]},tA={type:17,number:0,flags:je},Ss={type:16,number:50,flags:je},VA={type:16,number:100,flags:je},st=function(r,A,e){var t=r[0],n=r[1];return[_(t,A),_(typeof n<"u"?n:t,e)]},_=function(r,A){if(r.type===16)return r.number/100*A;if(nt(r))switch(r.unit){case"rem":case"em":return 16*r.number;case"px":default:return r.number}return r.number},Pl="deg",Kl="grad",xl="rad",kl="turn",Yr={name:"angle",parse:function(r,A){if(A.type===15)switch(A.unit){case Pl:return Math.PI*A.number/180;case Kl:return Math.PI/200*A.number;case xl:return A.number;case kl:return Math.PI*2*A.number}throw new Error("Unsupported angle type")}},Gl=function(r){return r.type===15&&(r.unit===Pl||r.unit===Kl||r.unit===xl||r.unit===kl)},Nl=function(r){var A=r.filter(N).map(function(e){return e.value}).join(" ");switch(A){case"to bottom right":case"to right bottom":case"left top":case"top left":return[tA,tA];case"to top":case"bottom":return wA(0);case"to bottom left":case"to left bottom":case"right top":case"top right":return[tA,VA];case"to right":case"left":return wA(90);case"to top left":case"to left top":case"right bottom":case"bottom right":return[VA,VA];case"to bottom":case"top":return wA(180);case"to top right":case"to right top":case"left bottom":case"bottom left":return[VA,tA];case"to left":case"right":return wA(270)}return 0},wA=function(r){return Math.PI*r/180},OA={name:"color",parse:function(r,A){if(A.type===18){var e=gg[A.name];if(typeof e>"u")throw new Error('Attempting to parse an unsupported color function "'+A.name+'"');return e(r,A.values)}if(A.type===5){if(A.value.length===3){var t=A.value.substring(0,1),n=A.value.substring(1,2),s=A.value.substring(2,3);return XA(parseInt(t+t,16),parseInt(n+n,16),parseInt(s+s,16),1)}if(A.value.length===4){var t=A.value.substring(0,1),n=A.value.substring(1,2),s=A.value.substring(2,3),i=A.value.substring(3,4);return XA(parseInt(t+t,16),parseInt(n+n,16),parseInt(s+s,16),parseInt(i+i,16)/255)}if(A.value.length===6){var t=A.value.substring(0,2),n=A.value.substring(2,4),s=A.value.substring(4,6);return XA(parseInt(t,16),parseInt(n,16),parseInt(s,16),1)}if(A.value.length===8){var t=A.value.substring(0,2),n=A.value.substring(2,4),s=A.value.substring(4,6),i=A.value.substring(6,8);return XA(parseInt(t,16),parseInt(n,16),parseInt(s,16),parseInt(i,16)/255)}}if(A.type===20){var o=RA[A.value.toUpperCase()];if(typeof o<"u")return o}return RA.TRANSPARENT}},WA=function(r){return(255&r)===0},AA=function(r){var A=255&r,e=255&r>>8,t=255&r>>16,n=255&r>>24;return A<255?"rgba("+n+","+t+","+e+","+A/255+")":"rgb("+n+","+t+","+e+")"},XA=function(r,A,e,t){return(r<<24|A<<16|e<<8|Math.round(t*255)<<0)>>>0},_l=function(r,A){if(r.type===17)return r.number;if(r.type===16){var e=A===3?1:255;return A===3?r.number/100*e:Math.round(r.number/100*e)}return 0},Vl=function(r,A){var e=A.filter(Qe);if(e.length===3){var t=e.map(_l),n=t[0],s=t[1],i=t[2];return XA(n,s,i,1)}if(e.length===4){var o=e.map(_l),n=o[0],s=o[1],i=o[2],a=o[3];return XA(n,s,i,a)}return 0};function Is(r,A,e){return e<0&&(e+=1),e>=1&&(e-=1),e<.16666666666666666?(A-r)*e*6+r:e<.5?A:e<.6666666666666666?(A-r)*6*(.6666666666666666-e)+r:r}var Ol=function(r,A){var e=A.filter(Qe),t=e[0],n=e[1],s=e[2],i=e[3],o=(t.type===17?wA(t.number):Yr.parse(r,t))/(Math.PI*2),a=Y(n)?n.number/100:0,l=Y(s)?s.number/100:0,c=typeof i<"u"&&Y(i)?_(i,1):1;if(a===0)return XA(l*255,l*255,l*255,1);var u=l<=.5?l*(a+1):l+a-l*a,d=l*2-u,B=Is(d,u,o+1/3),g=Is(d,u,o),f=Is(d,u,o-1/3);return XA(B*255,g*255,f*255,c)},gg={hsl:Ol,hsla:Ol,rgb:Vl,rgba:Vl},it=function(r,A){return OA.parse(r,Ml.create(A).parseComponentValue())},RA={ALICEBLUE:4042850303,ANTIQUEWHITE:4209760255,AQUA:16777215,AQUAMARINE:2147472639,AZURE:4043309055,BEIGE:4126530815,BISQUE:4293182719,BLACK:255,BLANCHEDALMOND:4293643775,BLUE:65535,BLUEVIOLET:2318131967,BROWN:2771004159,BURLYWOOD:3736635391,CADETBLUE:1604231423,CHARTREUSE:2147418367,CHOCOLATE:3530104575,CORAL:4286533887,CORNFLOWERBLUE:1687547391,CORNSILK:4294499583,CRIMSON:3692313855,CYAN:16777215,DARKBLUE:35839,DARKCYAN:9145343,DARKGOLDENROD:3095837695,DARKGRAY:2846468607,DARKGREEN:6553855,DARKGREY:2846468607,DARKKHAKI:3182914559,DARKMAGENTA:2332068863,DARKOLIVEGREEN:1433087999,DARKORANGE:4287365375,DARKORCHID:2570243327,DARKRED:2332033279,DARKSALMON:3918953215,DARKSEAGREEN:2411499519,DARKSLATEBLUE:1211993087,DARKSLATEGRAY:793726975,DARKSLATEGREY:793726975,DARKTURQUOISE:13554175,DARKVIOLET:2483082239,DEEPPINK:4279538687,DEEPSKYBLUE:12582911,DIMGRAY:1768516095,DIMGREY:1768516095,DODGERBLUE:512819199,FIREBRICK:2988581631,FLORALWHITE:4294635775,FORESTGREEN:579543807,FUCHSIA:4278255615,GAINSBORO:3705462015,GHOSTWHITE:4177068031,GOLD:4292280575,GOLDENROD:3668254975,GRAY:2155905279,GREEN:8388863,GREENYELLOW:2919182335,GREY:2155905279,HONEYDEW:4043305215,HOTPINK:4285117695,INDIANRED:3445382399,INDIGO:1258324735,IVORY:4294963455,KHAKI:4041641215,LAVENDER:3873897215,LAVENDERBLUSH:4293981695,LAWNGREEN:2096890111,LEMONCHIFFON:4294626815,LIGHTBLUE:2916673279,LIGHTCORAL:4034953471,LIGHTCYAN:3774873599,LIGHTGOLDENRODYELLOW:4210742015,LIGHTGRAY:3553874943,LIGHTGREEN:2431553791,LIGHTGREY:3553874943,LIGHTPINK:4290167295,LIGHTSALMON:4288707327,LIGHTSEAGREEN:548580095,LIGHTSKYBLUE:2278488831,LIGHTSLATEGRAY:2005441023,LIGHTSLATEGREY:2005441023,LIGHTSTEELBLUE:2965692159,LIGHTYELLOW:4294959359,LIME:16711935,LIMEGREEN:852308735,LINEN:4210091775,MAGENTA:4278255615,MAROON:2147483903,MEDIUMAQUAMARINE:1724754687,MEDIUMBLUE:52735,MEDIUMORCHID:3126187007,MEDIUMPURPLE:2473647103,MEDIUMSEAGREEN:1018393087,MEDIUMSLATEBLUE:2070474495,MEDIUMSPRINGGREEN:16423679,MEDIUMTURQUOISE:1221709055,MEDIUMVIOLETRED:3340076543,MIDNIGHTBLUE:421097727,MINTCREAM:4127193855,MISTYROSE:4293190143,MOCCASIN:4293178879,NAVAJOWHITE:4292783615,NAVY:33023,OLDLACE:4260751103,OLIVE:2155872511,OLIVEDRAB:1804477439,ORANGE:4289003775,ORANGERED:4282712319,ORCHID:3664828159,PALEGOLDENROD:4008225535,PALEGREEN:2566625535,PALETURQUOISE:2951671551,PALEVIOLETRED:3681588223,PAPAYAWHIP:4293907967,PEACHPUFF:4292524543,PERU:3448061951,PINK:4290825215,PLUM:3718307327,POWDERBLUE:2967529215,PURPLE:2147516671,REBECCAPURPLE:1714657791,RED:4278190335,ROSYBROWN:3163525119,ROYALBLUE:1097458175,SADDLEBROWN:2336560127,SALMON:4202722047,SANDYBROWN:4104413439,SEAGREEN:780883967,SEASHELL:4294307583,SIENNA:2689740287,SILVER:3233857791,SKYBLUE:2278484991,SLATEBLUE:1784335871,SLATEGRAY:1887473919,SLATEGREY:1887473919,SNOW:4294638335,SPRINGGREEN:16744447,STEELBLUE:1182971135,TAN:3535047935,TEAL:8421631,THISTLE:3636451583,TOMATO:4284696575,TRANSPARENT:0,TURQUOISE:1088475391,VIOLET:4001558271,WHEAT:4125012991,WHITE:4294967295,WHITESMOKE:4126537215,YELLOW:4294902015,YELLOWGREEN:2597139199},Bg={name:"background-clip",initialValue:"border-box",prefix:!1,type:1,parse:function(r,A){return A.map(function(e){if(N(e))switch(e.value){case"padding-box":return 1;case"content-box":return 2}return 0})}},fg={name:"background-color",initialValue:"transparent",prefix:!1,type:3,format:"color"},$r=function(r,A){var e=OA.parse(r,A[0]),t=A[1];return t&&Y(t)?{color:e,stop:t}:{color:e,stop:null}},Wl=function(r,A){var e=r[0],t=r[r.length-1];e.stop===null&&(e.stop=tA),t.stop===null&&(t.stop=VA);for(var n=[],s=0,i=0;i<r.length;i++){var o=r[i].stop;if(o!==null){var a=_(o,A);a>s?n.push(a):n.push(s),s=a}else n.push(null)}for(var l=null,i=0;i<n.length;i++){var c=n[i];if(c===null)l===null&&(l=i);else if(l!==null){for(var u=i-l,d=n[l-1],B=(c-d)/(u+1),g=1;g<=u;g++)n[l+g-1]=B*g;l=null}}return r.map(function(f,m){var F=f.color;return{color:F,stop:Math.max(Math.min(1,n[m]/A),0)}})},wg=function(r,A,e){var t=A/2,n=e/2,s=_(r[0],A)-t,i=n-_(r[1],e);return(Math.atan2(i,s)+Math.PI*2)%(Math.PI*2)},pg=function(r,A,e){var t=typeof r=="number"?r:wg(r,A,e),n=Math.abs(A*Math.sin(t))+Math.abs(e*Math.cos(t)),s=A/2,i=e/2,o=n/2,a=Math.sin(t-Math.PI/2)*o,l=Math.cos(t-Math.PI/2)*o;return[n,s-l,s+l,i-a,i+a]},QA=function(r,A){return Math.sqrt(r*r+A*A)},Xl=function(r,A,e,t,n){var s=[[0,0],[0,A],[r,0],[r,A]];return s.reduce(function(i,o){var a=o[0],l=o[1],c=QA(e-a,t-l);return(n?c<i.optimumDistance:c>i.optimumDistance)?{optimumCorner:o,optimumDistance:c}:i},{optimumDistance:n?1/0:-1/0,optimumCorner:null}).optimumCorner},Cg=function(r,A,e,t,n){var s=0,i=0;switch(r.size){case 0:r.shape===0?s=i=Math.min(Math.abs(A),Math.abs(A-t),Math.abs(e),Math.abs(e-n)):r.shape===1&&(s=Math.min(Math.abs(A),Math.abs(A-t)),i=Math.min(Math.abs(e),Math.abs(e-n)));break;case 2:if(r.shape===0)s=i=Math.min(QA(A,e),QA(A,e-n),QA(A-t,e),QA(A-t,e-n));else if(r.shape===1){var o=Math.min(Math.abs(e),Math.abs(e-n))/Math.min(Math.abs(A),Math.abs(A-t)),a=Xl(t,n,A,e,!0),l=a[0],c=a[1];s=QA(l-A,(c-e)/o),i=o*s}break;case 1:r.shape===0?s=i=Math.max(Math.abs(A),Math.abs(A-t),Math.abs(e),Math.abs(e-n)):r.shape===1&&(s=Math.max(Math.abs(A),Math.abs(A-t)),i=Math.max(Math.abs(e),Math.abs(e-n)));break;case 3:if(r.shape===0)s=i=Math.max(QA(A,e),QA(A,e-n),QA(A-t,e),QA(A-t,e-n));else if(r.shape===1){var o=Math.max(Math.abs(e),Math.abs(e-n))/Math.max(Math.abs(A),Math.abs(A-t)),u=Xl(t,n,A,e,!1),l=u[0],c=u[1];s=QA(l-A,(c-e)/o),i=o*s}break}return Array.isArray(r.size)&&(s=_(r.size[0],t),i=r.size.length===2?_(r.size[1],n):s),[s,i]},vg=function(r,A){var e=wA(180),t=[];return yA(A).forEach(function(n,s){if(s===0){var i=n[0];if(i.type===20&&i.value==="to"){e=Nl(n);return}else if(Gl(i)){e=Yr.parse(r,i);return}}var o=$r(r,n);t.push(o)}),{angle:e,stops:t,type:1}},Zr=function(r,A){var e=wA(180),t=[];return yA(A).forEach(function(n,s){if(s===0){var i=n[0];if(i.type===20&&["top","left","right","bottom"].indexOf(i.value)!==-1){e=Nl(n);return}else if(Gl(i)){e=(Yr.parse(r,i)+wA(270))%wA(360);return}}var o=$r(r,n);t.push(o)}),{angle:e,stops:t,type:1}},mg=function(r,A){var e=wA(180),t=[],n=1,s=0,i=3,o=[];return yA(A).forEach(function(a,l){var c=a[0];if(l===0){if(N(c)&&c.value==="linear"){n=1;return}else if(N(c)&&c.value==="radial"){n=2;return}}if(c.type===18){if(c.name==="from"){var u=OA.parse(r,c.values[0]);t.push({stop:tA,color:u})}else if(c.name==="to"){var u=OA.parse(r,c.values[0]);t.push({stop:VA,color:u})}else if(c.name==="color-stop"){var d=c.values.filter(Qe);if(d.length===2){var u=OA.parse(r,d[1]),B=d[0];Fe(B)&&t.push({stop:{type:16,number:B.number*100,flags:B.flags},color:u})}}}}),n===1?{angle:(e+wA(180))%wA(360),stops:t,type:n}:{size:i,shape:s,stops:t,position:o,type:n}},Jl="closest-side",zl="farthest-side",Yl="closest-corner",$l="farthest-corner",Zl="circle",ql="ellipse",jl="cover",Ac="contain",Fg=function(r,A){var e=0,t=3,n=[],s=[];return yA(A).forEach(function(i,o){var a=!0;if(o===0){var l=!1;a=i.reduce(function(u,d){if(l)if(N(d))switch(d.value){case"center":return s.push(Ss),u;case"top":case"left":return s.push(tA),u;case"right":case"bottom":return s.push(VA),u}else(Y(d)||_A(d))&&s.push(d);else if(N(d))switch(d.value){case Zl:return e=0,!1;case ql:return e=1,!1;case"at":return l=!0,!1;case Jl:return t=0,!1;case jl:case zl:return t=1,!1;case Ac:case Yl:return t=2,!1;case $l:return t=3,!1}else if(_A(d)||Y(d))return Array.isArray(t)||(t=[]),t.push(d),!1;return u},a)}if(a){var c=$r(r,i);n.push(c)}}),{size:t,shape:e,stops:n,position:s,type:2}},qr=function(r,A){var e=0,t=3,n=[],s=[];return yA(A).forEach(function(i,o){var a=!0;if(o===0?a=i.reduce(function(c,u){if(N(u))switch(u.value){case"center":return s.push(Ss),!1;case"top":case"left":return s.push(tA),!1;case"right":case"bottom":return s.push(VA),!1}else if(Y(u)||_A(u))return s.push(u),!1;return c},a):o===1&&(a=i.reduce(function(c,u){if(N(u))switch(u.value){case Zl:return e=0,!1;case ql:return e=1,!1;case Ac:case Jl:return t=0,!1;case zl:return t=1,!1;case Yl:return t=2,!1;case jl:case $l:return t=3,!1}else if(_A(u)||Y(u))return Array.isArray(t)||(t=[]),t.push(u),!1;return c},a)),a){var l=$r(r,i);n.push(l)}}),{size:t,shape:e,stops:n,position:s,type:2}},Qg=function(r){return r.type===1},Ug=function(r){return r.type===2},Ts={name:"image",parse:function(r,A){if(A.type===22){var e={url:A.value,type:0};return r.cache.addImage(A.value),e}if(A.type===18){var t=ec[A.name];if(typeof t>"u")throw new Error('Attempting to parse an unsupported image function "'+A.name+'"');return t(r,A.values)}throw new Error("Unsupported image type "+A.type)}};function Eg(r){return!(r.type===20&&r.value==="none")&&(r.type!==18||!!ec[r.name])}var ec={"linear-gradient":vg,"-moz-linear-gradient":Zr,"-ms-linear-gradient":Zr,"-o-linear-gradient":Zr,"-webkit-linear-gradient":Zr,"radial-gradient":Fg,"-moz-radial-gradient":qr,"-ms-radial-gradient":qr,"-o-radial-gradient":qr,"-webkit-radial-gradient":qr,"-webkit-gradient":mg},yg={name:"background-image",initialValue:"none",type:1,prefix:!1,parse:function(r,A){if(A.length===0)return[];var e=A[0];return e.type===20&&e.value==="none"?[]:A.filter(function(t){return Qe(t)&&Eg(t)}).map(function(t){return Ts.parse(r,t)})}},Sg={name:"background-origin",initialValue:"border-box",prefix:!1,type:1,parse:function(r,A){return A.map(function(e){if(N(e))switch(e.value){case"padding-box":return 1;case"content-box":return 2}return 0})}},Ig={name:"background-position",initialValue:"0% 0%",type:1,prefix:!1,parse:function(r,A){return yA(A).map(function(e){return e.filter(Y)}).map(Rl)}},Tg={name:"background-repeat",initialValue:"repeat",prefix:!1,type:1,parse:function(r,A){return yA(A).map(function(e){return e.filter(N).map(function(t){return t.value}).join(" ")}).map(Hg)}},Hg=function(r){switch(r){case"no-repeat":return 1;case"repeat-x":case"repeat no-repeat":return 2;case"repeat-y":case"no-repeat repeat":return 3;case"repeat":default:return 0}},Ue;(function(r){r.AUTO="auto",r.CONTAIN="contain",r.COVER="cover"})(Ue||(Ue={}));var Lg={name:"background-size",initialValue:"0",prefix:!1,type:1,parse:function(r,A){return yA(A).map(function(e){return e.filter(bg)})}},bg=function(r){return N(r)||Y(r)},jr=function(r){return{name:"border-"+r+"-color",initialValue:"transparent",prefix:!1,type:3,format:"color"}},Mg=jr("top"),Dg=jr("right"),Rg=jr("bottom"),Pg=jr("left"),An=function(r){return{name:"border-radius-"+r,initialValue:"0 0",prefix:!1,type:1,parse:function(A,e){return Rl(e.filter(Y))}}},Kg=An("top-left"),xg=An("top-right"),kg=An("bottom-right"),Gg=An("bottom-left"),en=function(r){return{name:"border-"+r+"-style",initialValue:"solid",prefix:!1,type:2,parse:function(A,e){switch(e){case"none":return 0;case"dashed":return 2;case"dotted":return 3;case"double":return 4}return 1}}},Ng=en("top"),_g=en("right"),Vg=en("bottom"),Og=en("left"),tn=function(r){return{name:"border-"+r+"-width",initialValue:"0",type:0,prefix:!1,parse:function(A,e){return nt(e)?e.number:0}}},Wg=tn("top"),Xg=tn("right"),Jg=tn("bottom"),zg=tn("left"),Yg={name:"color",initialValue:"transparent",prefix:!1,type:3,format:"color"},$g={name:"direction",initialValue:"ltr",prefix:!1,type:2,parse:function(r,A){switch(A){case"rtl":return 1;case"ltr":default:return 0}}},Zg={name:"display",initialValue:"inline-block",prefix:!1,type:1,parse:function(r,A){return A.filter(N).reduce(function(e,t){return e|qg(t.value)},0)}},qg=function(r){switch(r){case"block":case"-webkit-box":return 2;case"inline":return 4;case"run-in":return 8;case"flow":return 16;case"flow-root":return 32;case"table":return 64;case"flex":case"-webkit-flex":return 128;case"grid":case"-ms-grid":return 256;case"ruby":return 512;case"subgrid":return 1024;case"list-item":return 2048;case"table-row-group":return 4096;case"table-header-group":return 8192;case"table-footer-group":return 16384;case"table-row":return 32768;case"table-cell":return 65536;case"table-column-group":return 131072;case"table-column":return 262144;case"table-caption":return 524288;case"ruby-base":return 1048576;case"ruby-text":return 2097152;case"ruby-base-container":return 4194304;case"ruby-text-container":return 8388608;case"contents":return 16777216;case"inline-block":return 33554432;case"inline-list-item":return 67108864;case"inline-table":return 134217728;case"inline-flex":return 268435456;case"inline-grid":return 536870912}return 0},jg={name:"float",initialValue:"none",prefix:!1,type:2,parse:function(r,A){switch(A){case"left":return 1;case"right":return 2;case"inline-start":return 3;case"inline-end":return 4}return 0}},AB={name:"letter-spacing",initialValue:"0",prefix:!1,type:0,parse:function(r,A){return A.type===20&&A.value==="normal"?0:A.type===17||A.type===15?A.number:0}},rn;(function(r){r.NORMAL="normal",r.STRICT="strict"})(rn||(rn={}));var eB={name:"line-break",initialValue:"normal",prefix:!1,type:2,parse:function(r,A){switch(A){case"strict":return rn.STRICT;case"normal":default:return rn.NORMAL}}},tB={name:"line-height",initialValue:"normal",prefix:!1,type:4},tc=function(r,A){return N(r)&&r.value==="normal"?1.2*A:r.type===17?A*r.number:Y(r)?_(r,A):A},rB={name:"list-style-image",initialValue:"none",type:0,prefix:!1,parse:function(r,A){return A.type===20&&A.value==="none"?null:Ts.parse(r,A)}},nB={name:"list-style-position",initialValue:"outside",prefix:!1,type:2,parse:function(r,A){switch(A){case"inside":return 0;case"outside":default:return 1}}},Hs={name:"list-style-type",initialValue:"none",prefix:!1,type:2,parse:function(r,A){switch(A){case"disc":return 0;case"circle":return 1;case"square":return 2;case"decimal":return 3;case"cjk-decimal":return 4;case"decimal-leading-zero":return 5;case"lower-roman":return 6;case"upper-roman":return 7;case"lower-greek":return 8;case"lower-alpha":return 9;case"upper-alpha":return 10;case"arabic-indic":return 11;case"armenian":return 12;case"bengali":return 13;case"cambodian":return 14;case"cjk-earthly-branch":return 15;case"cjk-heavenly-stem":return 16;case"cjk-ideographic":return 17;case"devanagari":return 18;case"ethiopic-numeric":return 19;case"georgian":return 20;case"gujarati":return 21;case"gurmukhi":return 22;case"hebrew":return 22;case"hiragana":return 23;case"hiragana-iroha":return 24;case"japanese-formal":return 25;case"japanese-informal":return 26;case"kannada":return 27;case"katakana":return 28;case"katakana-iroha":return 29;case"khmer":return 30;case"korean-hangul-formal":return 31;case"korean-hanja-formal":return 32;case"korean-hanja-informal":return 33;case"lao":return 34;case"lower-armenian":return 35;case"malayalam":return 36;case"mongolian":return 37;case"myanmar":return 38;case"oriya":return 39;case"persian":return 40;case"simp-chinese-formal":return 41;case"simp-chinese-informal":return 42;case"tamil":return 43;case"telugu":return 44;case"thai":return 45;case"tibetan":return 46;case"trad-chinese-formal":return 47;case"trad-chinese-informal":return 48;case"upper-armenian":return 49;case"disclosure-open":return 50;case"disclosure-closed":return 51;case"none":default:return-1}}},nn=function(r){return{name:"margin-"+r,initialValue:"0",prefix:!1,type:4}},sB=nn("top"),iB=nn("right"),oB=nn("bottom"),aB=nn("left"),lB={name:"overflow",initialValue:"visible",prefix:!1,type:1,parse:function(r,A){return A.filter(N).map(function(e){switch(e.value){case"hidden":return 1;case"scroll":return 2;case"clip":return 3;case"auto":return 4;case"visible":default:return 0}})}},cB={name:"overflow-wrap",initialValue:"normal",prefix:!1,type:2,parse:function(r,A){switch(A){case"break-word":return"break-word";case"normal":default:return"normal"}}},sn=function(r){return{name:"padding-"+r,initialValue:"0",prefix:!1,type:3,format:"length-percentage"}},dB=sn("top"),uB=sn("right"),hB=sn("bottom"),gB=sn("left"),BB={name:"text-align",initialValue:"left",prefix:!1,type:2,parse:function(r,A){switch(A){case"right":return 2;case"center":case"justify":return 1;case"left":default:return 0}}},fB={name:"position",initialValue:"static",prefix:!1,type:2,parse:function(r,A){switch(A){case"relative":return 1;case"absolute":return 2;case"fixed":return 3;case"sticky":return 4}return 0}},wB={name:"text-shadow",initialValue:"none",type:1,prefix:!1,parse:function(r,A){return A.length===1&&ys(A[0],"none")?[]:yA(A).map(function(e){for(var t={color:RA.TRANSPARENT,offsetX:tA,offsetY:tA,blur:tA},n=0,s=0;s<e.length;s++){var i=e[s];_A(i)?(n===0?t.offsetX=i:n===1?t.offsetY=i:t.blur=i,n++):t.color=OA.parse(r,i)}return t})}},pB={name:"text-transform",initialValue:"none",prefix:!1,type:2,parse:function(r,A){switch(A){case"uppercase":return 2;case"lowercase":return 1;case"capitalize":return 3}return 0}},CB={name:"transform",initialValue:"none",prefix:!0,type:0,parse:function(r,A){if(A.type===20&&A.value==="none")return null;if(A.type===18){var e=FB[A.name];if(typeof e>"u")throw new Error('Attempting to parse an unsupported transform function "'+A.name+'"');return e(A.values)}return null}},vB=function(r){var A=r.filter(function(e){return e.type===17}).map(function(e){return e.number});return A.length===6?A:null},mB=function(r){var A=r.filter(function(a){return a.type===17}).map(function(a){return a.number}),e=A[0],t=A[1];A[2],A[3];var n=A[4],s=A[5];A[6],A[7],A[8],A[9],A[10],A[11];var i=A[12],o=A[13];return A[14],A[15],A.length===16?[e,t,n,s,i,o]:null},FB={matrix:vB,matrix3d:mB},rc={type:16,number:50,flags:je},QB=[rc,rc],UB={name:"transform-origin",initialValue:"50% 50%",prefix:!0,type:1,parse:function(r,A){var e=A.filter(Y);return e.length!==2?QB:[e[0],e[1]]}},EB={name:"visible",initialValue:"none",prefix:!1,type:2,parse:function(r,A){switch(A){case"hidden":return 1;case"collapse":return 2;case"visible":default:return 0}}},ot;(function(r){r.NORMAL="normal",r.BREAK_ALL="break-all",r.KEEP_ALL="keep-all"})(ot||(ot={}));for(var yB={name:"word-break",initialValue:"normal",prefix:!1,type:2,parse:function(r,A){switch(A){case"break-all":return ot.BREAK_ALL;case"keep-all":return ot.KEEP_ALL;case"normal":default:return ot.NORMAL}}},SB={name:"z-index",initialValue:"auto",prefix:!1,type:0,parse:function(r,A){if(A.type===20)return{auto:!0,order:0};if(Fe(A))return{auto:!1,order:A.number};throw new Error("Invalid z-index number parsed")}},nc={name:"time",parse:function(r,A){if(A.type===15)switch(A.unit.toLowerCase()){case"s":return 1e3*A.number;case"ms":return A.number}throw new Error("Unsupported time type")}},IB={name:"opacity",initialValue:"1",type:0,prefix:!1,parse:function(r,A){return Fe(A)?A.number:1}},TB={name:"text-decoration-color",initialValue:"transparent",prefix:!1,type:3,format:"color"},HB={name:"text-decoration-line",initialValue:"none",prefix:!1,type:1,parse:function(r,A){return A.filter(N).map(function(e){switch(e.value){case"underline":return 1;case"overline":return 2;case"line-through":return 3;case"none":return 4}return 0}).filter(function(e){return e!==0})}},LB={name:"font-family",initialValue:"",prefix:!1,type:1,parse:function(r,A){var e=[],t=[];return A.forEach(function(n){switch(n.type){case 20:case 0:e.push(n.value);break;case 17:e.push(n.number.toString());break;case 4:t.push(e.join(" ")),e.length=0;break}}),e.length&&t.push(e.join(" ")),t.map(function(n){return n.indexOf(" ")===-1?n:"'"+n+"'"})}},bB={name:"font-size",initialValue:"0",prefix:!1,type:3,format:"length"},MB={name:"font-weight",initialValue:"normal",type:0,prefix:!1,parse:function(r,A){if(Fe(A))return A.number;if(N(A))switch(A.value){case"bold":return 700;case"normal":default:return 400}return 400}},DB={name:"font-variant",initialValue:"none",type:1,prefix:!1,parse:function(r,A){return A.filter(N).map(function(e){return e.value})}},RB={name:"font-style",initialValue:"normal",prefix:!1,type:2,parse:function(r,A){switch(A){case"oblique":return"oblique";case"italic":return"italic";case"normal":default:return"normal"}}},q=function(r,A){return(r&A)!==0},PB={name:"content",initialValue:"none",type:1,prefix:!1,parse:function(r,A){if(A.length===0)return[];var e=A[0];return e.type===20&&e.value==="none"?[]:A}},KB={name:"counter-increment",initialValue:"none",prefix:!0,type:1,parse:function(r,A){if(A.length===0)return null;var e=A[0];if(e.type===20&&e.value==="none")return null;for(var t=[],n=A.filter(Dl),s=0;s<n.length;s++){var i=n[s],o=n[s+1];if(i.type===20){var a=o&&Fe(o)?o.number:1;t.push({counter:i.value,increment:a})}}return t}},xB={name:"counter-reset",initialValue:"none",prefix:!0,type:1,parse:function(r,A){if(A.length===0)return[];for(var e=[],t=A.filter(Dl),n=0;n<t.length;n++){var s=t[n],i=t[n+1];if(N(s)&&s.value!=="none"){var o=i&&Fe(i)?i.number:0;e.push({counter:s.value,reset:o})}}return e}},kB={name:"duration",initialValue:"0s",prefix:!1,type:1,parse:function(r,A){return A.filter(nt).map(function(e){return nc.parse(r,e)})}},GB={name:"quotes",initialValue:"none",prefix:!0,type:1,parse:function(r,A){if(A.length===0)return null;var e=A[0];if(e.type===20&&e.value==="none")return null;var t=[],n=A.filter(ug);if(n.length%2!==0)return null;for(var s=0;s<n.length;s+=2){var i=n[s].value,o=n[s+1].value;t.push({open:i,close:o})}return t}},sc=function(r,A,e){if(!r)return"";var t=r[Math.min(A,r.length-1)];return t?e?t.open:t.close:""},NB={name:"box-shadow",initialValue:"none",type:1,prefix:!1,parse:function(r,A){return A.length===1&&ys(A[0],"none")?[]:yA(A).map(function(e){for(var t={color:255,offsetX:tA,offsetY:tA,blur:tA,spread:tA,inset:!1},n=0,s=0;s<e.length;s++){var i=e[s];ys(i,"inset")?t.inset=!0:_A(i)?(n===0?t.offsetX=i:n===1?t.offsetY=i:n===2?t.blur=i:t.spread=i,n++):t.color=OA.parse(r,i)}return t})}},_B={name:"paint-order",initialValue:"normal",prefix:!1,type:1,parse:function(r,A){var e=[0,1,2],t=[];return A.filter(N).forEach(function(n){switch(n.value){case"stroke":t.push(1);break;case"fill":t.push(0);break;case"markers":t.push(2);break}}),e.forEach(function(n){t.indexOf(n)===-1&&t.push(n)}),t}},VB={name:"-webkit-text-stroke-color",initialValue:"currentcolor",prefix:!1,type:3,format:"color"},OB={name:"-webkit-text-stroke-width",initialValue:"0",type:0,prefix:!1,parse:function(r,A){return nt(A)?A.number:0}},WB=function(){function r(A,e){var t,n;this.animationDuration=T(A,kB,e.animationDuration),this.backgroundClip=T(A,Bg,e.backgroundClip),this.backgroundColor=T(A,fg,e.backgroundColor),this.backgroundImage=T(A,yg,e.backgroundImage),this.backgroundOrigin=T(A,Sg,e.backgroundOrigin),this.backgroundPosition=T(A,Ig,e.backgroundPosition),this.backgroundRepeat=T(A,Tg,e.backgroundRepeat),this.backgroundSize=T(A,Lg,e.backgroundSize),this.borderTopColor=T(A,Mg,e.borderTopColor),this.borderRightColor=T(A,Dg,e.borderRightColor),this.borderBottomColor=T(A,Rg,e.borderBottomColor),this.borderLeftColor=T(A,Pg,e.borderLeftColor),this.borderTopLeftRadius=T(A,Kg,e.borderTopLeftRadius),this.borderTopRightRadius=T(A,xg,e.borderTopRightRadius),this.borderBottomRightRadius=T(A,kg,e.borderBottomRightRadius),this.borderBottomLeftRadius=T(A,Gg,e.borderBottomLeftRadius),this.borderTopStyle=T(A,Ng,e.borderTopStyle),this.borderRightStyle=T(A,_g,e.borderRightStyle),this.borderBottomStyle=T(A,Vg,e.borderBottomStyle),this.borderLeftStyle=T(A,Og,e.borderLeftStyle),this.borderTopWidth=T(A,Wg,e.borderTopWidth),this.borderRightWidth=T(A,Xg,e.borderRightWidth),this.borderBottomWidth=T(A,Jg,e.borderBottomWidth),this.borderLeftWidth=T(A,zg,e.borderLeftWidth),this.boxShadow=T(A,NB,e.boxShadow),this.color=T(A,Yg,e.color),this.direction=T(A,$g,e.direction),this.display=T(A,Zg,e.display),this.float=T(A,jg,e.cssFloat),this.fontFamily=T(A,LB,e.fontFamily),this.fontSize=T(A,bB,e.fontSize),this.fontStyle=T(A,RB,e.fontStyle),this.fontVariant=T(A,DB,e.fontVariant),this.fontWeight=T(A,MB,e.fontWeight),this.letterSpacing=T(A,AB,e.letterSpacing),this.lineBreak=T(A,eB,e.lineBreak),this.lineHeight=T(A,tB,e.lineHeight),this.listStyleImage=T(A,rB,e.listStyleImage),this.listStylePosition=T(A,nB,e.listStylePosition),this.listStyleType=T(A,Hs,e.listStyleType),this.marginTop=T(A,sB,e.marginTop),this.marginRight=T(A,iB,e.marginRight),this.marginBottom=T(A,oB,e.marginBottom),this.marginLeft=T(A,aB,e.marginLeft),this.opacity=T(A,IB,e.opacity);var s=T(A,lB,e.overflow);this.overflowX=s[0],this.overflowY=s[s.length>1?1:0],this.overflowWrap=T(A,cB,e.overflowWrap),this.paddingTop=T(A,dB,e.paddingTop),this.paddingRight=T(A,uB,e.paddingRight),this.paddingBottom=T(A,hB,e.paddingBottom),this.paddingLeft=T(A,gB,e.paddingLeft),this.paintOrder=T(A,_B,e.paintOrder),this.position=T(A,fB,e.position),this.textAlign=T(A,BB,e.textAlign),this.textDecorationColor=T(A,TB,(t=e.textDecorationColor)!==null&&t!==void 0?t:e.color),this.textDecorationLine=T(A,HB,(n=e.textDecorationLine)!==null&&n!==void 0?n:e.textDecoration),this.textShadow=T(A,wB,e.textShadow),this.textTransform=T(A,pB,e.textTransform),this.transform=T(A,CB,e.transform),this.transformOrigin=T(A,UB,e.transformOrigin),this.visibility=T(A,EB,e.visibility),this.webkitTextStrokeColor=T(A,VB,e.webkitTextStrokeColor),this.webkitTextStrokeWidth=T(A,OB,e.webkitTextStrokeWidth),this.wordBreak=T(A,yB,e.wordBreak),this.zIndex=T(A,SB,e.zIndex)}return r.prototype.isVisible=function(){return this.display>0&&this.opacity>0&&this.visibility===0},r.prototype.isTransparent=function(){return WA(this.backgroundColor)},r.prototype.isTransformed=function(){return this.transform!==null},r.prototype.isPositioned=function(){return this.position!==0},r.prototype.isPositionedWithZIndex=function(){return this.isPositioned()&&!this.zIndex.auto},r.prototype.isFloating=function(){return this.float!==0},r.prototype.isInlineLevel=function(){return q(this.display,4)||q(this.display,33554432)||q(this.display,268435456)||q(this.display,536870912)||q(this.display,67108864)||q(this.display,134217728)},r}(),XB=function(){function r(A,e){this.content=T(A,PB,e.content),this.quotes=T(A,GB,e.quotes)}return r}(),ic=function(){function r(A,e){this.counterIncrement=T(A,KB,e.counterIncrement),this.counterReset=T(A,xB,e.counterReset)}return r}(),T=function(r,A,e){var t=new bl,n=e!==null&&typeof e<"u"?e.toString():A.initialValue;t.write(n);var s=new Ml(t.read());switch(A.type){case 2:var i=s.parseComponentValue();return A.parse(r,N(i)?i.value:A.initialValue);case 0:return A.parse(r,s.parseComponentValue());case 1:return A.parse(r,s.parseComponentValues());case 4:return s.parseComponentValue();case 3:switch(A.format){case"angle":return Yr.parse(r,s.parseComponentValue());case"color":return OA.parse(r,s.parseComponentValue());case"image":return Ts.parse(r,s.parseComponentValue());case"length":var o=s.parseComponentValue();return _A(o)?o:tA;case"length-percentage":var a=s.parseComponentValue();return Y(a)?a:tA;case"time":return nc.parse(r,s.parseComponentValue())}break}},JB="data-html2canvas-debug",zB=function(r){var A=r.getAttribute(JB);switch(A){case"all":return 1;case"clone":return 2;case"parse":return 3;case"render":return 4;default:return 0}},Ls=function(r,A){var e=zB(r);return e===1||A===e},SA=function(){function r(A,e){if(this.context=A,this.textNodes=[],this.elements=[],this.flags=0,Ls(e,3))debugger;this.styles=new WB(A,window.getComputedStyle(e,null)),Ws(e)&&(this.styles.animationDuration.some(function(t){return t>0})&&(e.style.animationDuration="0s"),this.styles.transform!==null&&(e.style.transform="none")),this.bounds=Tr(this.context,e),Ls(e,4)&&(this.flags|=16)}return r}(),YB="AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAABQAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA=",oc="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",at=typeof Uint8Array>"u"?[]:new Uint8Array(256),on=0;on<oc.length;on++)at[oc.charCodeAt(on)]=on;for(var $B=function(r){var A=r.length*.75,e=r.length,t,n=0,s,i,o,a;r[r.length-1]==="="&&(A--,r[r.length-2]==="="&&A--);var l=typeof ArrayBuffer<"u"&&typeof Uint8Array<"u"&&typeof Uint8Array.prototype.slice<"u"?new ArrayBuffer(A):new Array(A),c=Array.isArray(l)?l:new Uint8Array(l);for(t=0;t<e;t+=4)s=at[r.charCodeAt(t)],i=at[r.charCodeAt(t+1)],o=at[r.charCodeAt(t+2)],a=at[r.charCodeAt(t+3)],c[n++]=s<<2|i>>4,c[n++]=(i&15)<<4|o>>2,c[n++]=(o&3)<<6|a&63;return l},ZB=function(r){for(var A=r.length,e=[],t=0;t<A;t+=2)e.push(r[t+1]<<8|r[t]);return e},qB=function(r){for(var A=r.length,e=[],t=0;t<A;t+=4)e.push(r[t+3]<<24|r[t+2]<<16|r[t+1]<<8|r[t]);return e},re=5,bs=11,Ms=2,jB=bs-re,ac=65536>>re,Af=1<<re,Ds=Af-1,ef=1024>>re,tf=ac+ef,rf=tf,nf=32,sf=rf+nf,of=65536>>bs,af=1<<jB,lf=af-1,lc=function(r,A,e){return r.slice?r.slice(A,e):new Uint16Array(Array.prototype.slice.call(r,A,e))},cf=function(r,A,e){return r.slice?r.slice(A,e):new Uint32Array(Array.prototype.slice.call(r,A,e))},df=function(r,A){var e=$B(r),t=Array.isArray(e)?qB(e):new Uint32Array(e),n=Array.isArray(e)?ZB(e):new Uint16Array(e),s=24,i=lc(n,s/2,t[4]/2),o=t[5]===2?lc(n,(s+t[4])/2):cf(t,Math.ceil((s+t[4])/4));return new uf(t[0],t[1],t[2],t[3],i,o)},uf=function(){function r(A,e,t,n,s,i){this.initialValue=A,this.errorValue=e,this.highStart=t,this.highValueIndex=n,this.index=s,this.data=i}return r.prototype.get=function(A){var e;if(A>=0){if(A<55296||A>56319&&A<=65535)return e=this.index[A>>re],e=(e<<Ms)+(A&Ds),this.data[e];if(A<=65535)return e=this.index[ac+(A-55296>>re)],e=(e<<Ms)+(A&Ds),this.data[e];if(A<this.highStart)return e=sf-of+(A>>bs),e=this.index[e],e+=A>>re&lf,e=this.index[e],e=(e<<Ms)+(A&Ds),this.data[e];if(A<=1114111)return this.data[this.highValueIndex]}return this.errorValue},r}(),cc="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",hf=typeof Uint8Array>"u"?[]:new Uint8Array(256),an=0;an<cc.length;an++)hf[cc.charCodeAt(an)]=an;var gf=1,Rs=2,Ps=3,dc=4,uc=5,Bf=7,hc=8,Ks=9,xs=10,gc=11,Bc=12,fc=13,wc=14,ks=15,ff=function(r){for(var A=[],e=0,t=r.length;e<t;){var n=r.charCodeAt(e++);if(n>=55296&&n<=56319&&e<t){var s=r.charCodeAt(e++);(s&64512)===56320?A.push(((n&1023)<<10)+(s&1023)+65536):(A.push(n),e--)}else A.push(n)}return A},wf=function(){for(var r=[],A=0;A<arguments.length;A++)r[A]=arguments[A];if(String.fromCodePoint)return String.fromCodePoint.apply(String,r);var e=r.length;if(!e)return"";for(var t=[],n=-1,s="";++n<e;){var i=r[n];i<=65535?t.push(i):(i-=65536,t.push((i>>10)+55296,i%1024+56320)),(n+1===e||t.length>16384)&&(s+=String.fromCharCode.apply(String,t),t.length=0)}return s},pf=df(YB),pA="×",Gs="÷",Cf=function(r){return pf.get(r)},vf=function(r,A,e){var t=e-2,n=A[t],s=A[e-1],i=A[e];if(s===Rs&&i===Ps)return pA;if(s===Rs||s===Ps||s===dc||i===Rs||i===Ps||i===dc)return Gs;if(s===hc&&[hc,Ks,gc,Bc].indexOf(i)!==-1||(s===gc||s===Ks)&&(i===Ks||i===xs)||(s===Bc||s===xs)&&i===xs||i===fc||i===uc||i===Bf||s===gf)return pA;if(s===fc&&i===wc){for(;n===uc;)n=A[--t];if(n===wc)return pA}if(s===ks&&i===ks){for(var o=0;n===ks;)o++,n=A[--t];if(o%2===0)return pA}return Gs},mf=function(r){var A=ff(r),e=A.length,t=0,n=0,s=A.map(Cf);return{next:function(){if(t>=e)return{done:!0,value:null};for(var i=pA;t<e&&(i=vf(A,s,++t))===pA;);if(i!==pA||t===e){var o=wf.apply(null,A.slice(n,t));return n=t,{value:o,done:!1}}return{done:!0,value:null}}}},Ff=function(r){for(var A=mf(r),e=[],t;!(t=A.next()).done;)t.value&&e.push(t.value.slice());return e},Qf=function(r){var A=123;if(r.createRange){var e=r.createRange();if(e.getBoundingClientRect){var t=r.createElement("boundtest");t.style.height=A+"px",t.style.display="block",r.body.appendChild(t),e.selectNode(t);var n=e.getBoundingClientRect(),s=Math.round(n.height);if(r.body.removeChild(t),s===A)return!0}}return!1},Uf=function(r){var A=r.createElement("boundtest");A.style.width="50px",A.style.display="block",A.style.fontSize="12px",A.style.letterSpacing="0px",A.style.wordSpacing="0px",r.body.appendChild(A);var e=r.createRange();A.innerHTML=typeof"".repeat=="function"?"👨".repeat(10):"";var t=A.firstChild,n=Hr(t.data).map(function(a){return X(a)}),s=0,i={},o=n.every(function(a,l){e.setStart(t,s),e.setEnd(t,s+a.length);var c=e.getBoundingClientRect();s+=a.length;var u=c.x>i.x||c.y>i.y;return i=c,l===0?!0:u});return r.body.removeChild(A),o},Ef=function(){return typeof new Image().crossOrigin<"u"},yf=function(){return typeof new XMLHttpRequest().responseType=="string"},Sf=function(r){var A=new Image,e=r.createElement("canvas"),t=e.getContext("2d");if(!t)return!1;A.src="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'></svg>";try{t.drawImage(A,0,0),e.toDataURL()}catch{return!1}return!0},pc=function(r){return r[0]===0&&r[1]===255&&r[2]===0&&r[3]===255},If=function(r){var A=r.createElement("canvas"),e=100;A.width=e,A.height=e;var t=A.getContext("2d");if(!t)return Promise.reject(!1);t.fillStyle="rgb(0, 255, 0)",t.fillRect(0,0,e,e);var n=new Image,s=A.toDataURL();n.src=s;var i=Ns(e,e,0,0,n);return t.fillStyle="red",t.fillRect(0,0,e,e),Cc(i).then(function(o){t.drawImage(o,0,0);var a=t.getImageData(0,0,e,e).data;t.fillStyle="red",t.fillRect(0,0,e,e);var l=r.createElement("div");return l.style.backgroundImage="url("+s+")",l.style.height=e+"px",pc(a)?Cc(Ns(e,e,0,0,l)):Promise.reject(!1)}).then(function(o){return t.drawImage(o,0,0),pc(t.getImageData(0,0,e,e).data)}).catch(function(){return!1})},Ns=function(r,A,e,t,n){var s="http://www.w3.org/2000/svg",i=document.createElementNS(s,"svg"),o=document.createElementNS(s,"foreignObject");return i.setAttributeNS(null,"width",r.toString()),i.setAttributeNS(null,"height",A.toString()),o.setAttributeNS(null,"width","100%"),o.setAttributeNS(null,"height","100%"),o.setAttributeNS(null,"x",e.toString()),o.setAttributeNS(null,"y",t.toString()),o.setAttributeNS(null,"externalResourcesRequired","true"),i.appendChild(o),o.appendChild(n),i},Cc=function(r){return new Promise(function(A,e){var t=new Image;t.onload=function(){return A(t)},t.onerror=e,t.src="data:image/svg+xml;charset=utf-8,"+encodeURIComponent(new XMLSerializer().serializeToString(r))})},rA={get SUPPORT_RANGE_BOUNDS(){var r=Qf(document);return Object.defineProperty(rA,"SUPPORT_RANGE_BOUNDS",{value:r}),r},get SUPPORT_WORD_BREAKING(){var r=rA.SUPPORT_RANGE_BOUNDS&&Uf(document);return Object.defineProperty(rA,"SUPPORT_WORD_BREAKING",{value:r}),r},get SUPPORT_SVG_DRAWING(){var r=Sf(document);return Object.defineProperty(rA,"SUPPORT_SVG_DRAWING",{value:r}),r},get SUPPORT_FOREIGNOBJECT_DRAWING(){var r=typeof Array.from=="function"&&typeof window.fetch=="function"?If(document):Promise.resolve(!1);return Object.defineProperty(rA,"SUPPORT_FOREIGNOBJECT_DRAWING",{value:r}),r},get SUPPORT_CORS_IMAGES(){var r=Ef();return Object.defineProperty(rA,"SUPPORT_CORS_IMAGES",{value:r}),r},get SUPPORT_RESPONSE_TYPE(){var r=yf();return Object.defineProperty(rA,"SUPPORT_RESPONSE_TYPE",{value:r}),r},get SUPPORT_CORS_XHR(){var r="withCredentials"in new XMLHttpRequest;return Object.defineProperty(rA,"SUPPORT_CORS_XHR",{value:r}),r},get SUPPORT_NATIVE_TEXT_SEGMENTATION(){var r=!!(typeof Intl<"u"&&Intl.Segmenter);return Object.defineProperty(rA,"SUPPORT_NATIVE_TEXT_SEGMENTATION",{value:r}),r}},lt=function(){function r(A,e){this.text=A,this.bounds=e}return r}(),Tf=function(r,A,e,t){var n=bf(A,e),s=[],i=0;return n.forEach(function(o){if(e.textDecorationLine.length||o.trim().length>0)if(rA.SUPPORT_RANGE_BOUNDS){var a=vc(t,i,o.length).getClientRects();if(a.length>1){var l=_s(o),c=0;l.forEach(function(d){s.push(new lt(d,MA.fromDOMRectList(r,vc(t,c+i,d.length).getClientRects()))),c+=d.length})}else s.push(new lt(o,MA.fromDOMRectList(r,a)))}else{var u=t.splitText(o.length);s.push(new lt(o,Hf(r,t))),t=u}else rA.SUPPORT_RANGE_BOUNDS||(t=t.splitText(o.length));i+=o.length}),s},Hf=function(r,A){var e=A.ownerDocument;if(e){var t=e.createElement("html2canvaswrapper");t.appendChild(A.cloneNode(!0));var n=A.parentNode;if(n){n.replaceChild(t,A);var s=Tr(r,t);return t.firstChild&&n.replaceChild(t.firstChild,t),s}}return MA.EMPTY},vc=function(r,A,e){var t=r.ownerDocument;if(!t)throw new Error("Node has no owner document");var n=t.createRange();return n.setStart(r,A),n.setEnd(r,A+e),n},_s=function(r){if(rA.SUPPORT_NATIVE_TEXT_SEGMENTATION){var A=new Intl.Segmenter(void 0,{granularity:"grapheme"});return Array.from(A.segment(r)).map(function(e){return e.segment})}return Ff(r)},Lf=function(r,A){if(rA.SUPPORT_NATIVE_TEXT_SEGMENTATION){var e=new Intl.Segmenter(void 0,{granularity:"word"});return Array.from(e.segment(r)).map(function(t){return t.segment})}return Df(r,A)},bf=function(r,A){return A.letterSpacing!==0?_s(r):Lf(r,A)},Mf=[32,160,4961,65792,65793,4153,4241],Df=function(r,A){for(var e=ih(r,{lineBreak:A.lineBreak,wordBreak:A.overflowWrap==="break-word"?"break-word":A.wordBreak}),t=[],n,s=function(){if(n.value){var i=n.value.slice(),o=Hr(i),a="";o.forEach(function(l){Mf.indexOf(l)===-1?a+=X(l):(a.length&&t.push(a),t.push(X(l)),a="")}),a.length&&t.push(a)}};!(n=e.next()).done;)s();return t},Rf=function(){function r(A,e,t){this.text=Pf(e.data,t.textTransform),this.textBounds=Tf(A,this.text,t,e)}return r}(),Pf=function(r,A){switch(A){case 1:return r.toLowerCase();case 3:return r.replace(Kf,xf);case 2:return r.toUpperCase();default:return r}},Kf=/(^|\s|:|-|\(|\))([a-z])/g,xf=function(r,A,e){return r.length>0?A+e.toUpperCase():r},mc=function(r){FA(A,r);function A(e,t){var n=r.call(this,e,t)||this;return n.src=t.currentSrc||t.src,n.intrinsicWidth=t.naturalWidth,n.intrinsicHeight=t.naturalHeight,n.context.cache.addImage(n.src),n}return A}(SA),Fc=function(r){FA(A,r);function A(e,t){var n=r.call(this,e,t)||this;return n.canvas=t,n.intrinsicWidth=t.width,n.intrinsicHeight=t.height,n}return A}(SA),Qc=function(r){FA(A,r);function A(e,t){var n=r.call(this,e,t)||this,s=new XMLSerializer,i=Tr(e,t);return t.setAttribute("width",i.width+"px"),t.setAttribute("height",i.height+"px"),n.svg="data:image/svg+xml,"+encodeURIComponent(s.serializeToString(t)),n.intrinsicWidth=t.width.baseVal.value,n.intrinsicHeight=t.height.baseVal.value,n.context.cache.addImage(n.svg),n}return A}(SA),Uc=function(r){FA(A,r);function A(e,t){var n=r.call(this,e,t)||this;return n.value=t.value,n}return A}(SA),Vs=function(r){FA(A,r);function A(e,t){var n=r.call(this,e,t)||this;return n.start=t.start,n.reversed=typeof t.reversed=="boolean"&&t.reversed===!0,n}return A}(SA),kf=[{type:15,flags:0,unit:"px",number:3}],Gf=[{type:16,flags:0,number:50}],Nf=function(r){return r.width>r.height?new MA(r.left+(r.width-r.height)/2,r.top,r.height,r.height):r.width<r.height?new MA(r.left,r.top+(r.height-r.width)/2,r.width,r.width):r},_f=function(r){var A=r.type===Vf?new Array(r.value.length+1).join("•"):r.value;return A.length===0?r.placeholder||"":A},ln="checkbox",cn="radio",Vf="password",Ec=707406591,Os=function(r){FA(A,r);function A(e,t){var n=r.call(this,e,t)||this;switch(n.type=t.type.toLowerCase(),n.checked=t.checked,n.value=_f(t),(n.type===ln||n.type===cn)&&(n.styles.backgroundColor=3739148031,n.styles.borderTopColor=n.styles.borderRightColor=n.styles.borderBottomColor=n.styles.borderLeftColor=2779096575,n.styles.borderTopWidth=n.styles.borderRightWidth=n.styles.borderBottomWidth=n.styles.borderLeftWidth=1,n.styles.borderTopStyle=n.styles.borderRightStyle=n.styles.borderBottomStyle=n.styles.borderLeftStyle=1,n.styles.backgroundClip=[0],n.styles.backgroundOrigin=[0],n.bounds=Nf(n.bounds)),n.type){case ln:n.styles.borderTopRightRadius=n.styles.borderTopLeftRadius=n.styles.borderBottomRightRadius=n.styles.borderBottomLeftRadius=kf;break;case cn:n.styles.borderTopRightRadius=n.styles.borderTopLeftRadius=n.styles.borderBottomRightRadius=n.styles.borderBottomLeftRadius=Gf;break}return n}return A}(SA),yc=function(r){FA(A,r);function A(e,t){var n=r.call(this,e,t)||this,s=t.options[t.selectedIndex||0];return n.value=s&&s.text||"",n}return A}(SA),Sc=function(r){FA(A,r);function A(e,t){var n=r.call(this,e,t)||this;return n.value=t.value,n}return A}(SA),Ic=function(r){FA(A,r);function A(e,t){var n=r.call(this,e,t)||this;n.src=t.src,n.width=parseInt(t.width,10)||0,n.height=parseInt(t.height,10)||0,n.backgroundColor=n.styles.backgroundColor;try{if(t.contentWindow&&t.contentWindow.document&&t.contentWindow.document.documentElement){n.tree=Hc(e,t.contentWindow.document.documentElement);var s=t.contentWindow.document.documentElement?it(e,getComputedStyle(t.contentWindow.document.documentElement).backgroundColor):RA.TRANSPARENT,i=t.contentWindow.document.body?it(e,getComputedStyle(t.contentWindow.document.body).backgroundColor):RA.TRANSPARENT;n.backgroundColor=WA(s)?WA(i)?n.styles.backgroundColor:i:s}}catch{}return n}return A}(SA),Of=["OL","UL","MENU"],dn=function(r,A,e,t){for(var n=A.firstChild,s=void 0;n;n=s)if(s=n.nextSibling,Lc(n)&&n.data.trim().length>0)e.textNodes.push(new Rf(r,n,e.styles));else if(Ee(n))if(Kc(n)&&n.assignedNodes)n.assignedNodes().forEach(function(o){return dn(r,o,e,t)});else{var i=Tc(r,n);i.styles.isVisible()&&(Wf(n,i,t)?i.flags|=4:Xf(i.styles)&&(i.flags|=2),Of.indexOf(n.tagName)!==-1&&(i.flags|=8),e.elements.push(i),n.slot,n.shadowRoot?dn(r,n.shadowRoot,i,t):!hn(n)&&!bc(n)&&!gn(n)&&dn(r,n,i,t))}},Tc=function(r,A){return Js(A)?new mc(r,A):Mc(A)?new Fc(r,A):bc(A)?new Qc(r,A):Jf(A)?new Uc(r,A):zf(A)?new Vs(r,A):Yf(A)?new Os(r,A):gn(A)?new yc(r,A):hn(A)?new Sc(r,A):Rc(A)?new Ic(r,A):new SA(r,A)},Hc=function(r,A){var e=Tc(r,A);return e.flags|=4,dn(r,A,e,e),e},Wf=function(r,A,e){return A.styles.isPositionedWithZIndex()||A.styles.opacity<1||A.styles.isTransformed()||Xs(r)&&e.styles.isTransparent()},Xf=function(r){return r.isPositioned()||r.isFloating()},Lc=function(r){return r.nodeType===Node.TEXT_NODE},Ee=function(r){return r.nodeType===Node.ELEMENT_NODE},Ws=function(r){return Ee(r)&&typeof r.style<"u"&&!un(r)},un=function(r){return typeof r.className=="object"},Jf=function(r){return r.tagName==="LI"},zf=function(r){return r.tagName==="OL"},Yf=function(r){return r.tagName==="INPUT"},$f=function(r){return r.tagName==="HTML"},bc=function(r){return r.tagName==="svg"},Xs=function(r){return r.tagName==="BODY"},Mc=function(r){return r.tagName==="CANVAS"},Dc=function(r){return r.tagName==="VIDEO"},Js=function(r){return r.tagName==="IMG"},Rc=function(r){return r.tagName==="IFRAME"},Pc=function(r){return r.tagName==="STYLE"},Zf=function(r){return r.tagName==="SCRIPT"},hn=function(r){return r.tagName==="TEXTAREA"},gn=function(r){return r.tagName==="SELECT"},Kc=function(r){return r.tagName==="SLOT"},xc=function(r){return r.tagName.indexOf("-")>0},qf=function(){function r(){this.counters={}}return r.prototype.getCounterValue=function(A){var e=this.counters[A];return e&&e.length?e[e.length-1]:1},r.prototype.getCounterValues=function(A){var e=this.counters[A];return e||[]},r.prototype.pop=function(A){var e=this;A.forEach(function(t){return e.counters[t].pop()})},r.prototype.parse=function(A){var e=this,t=A.counterIncrement,n=A.counterReset,s=!0;t!==null&&t.forEach(function(o){var a=e.counters[o.counter];a&&o.increment!==0&&(s=!1,a.length||a.push(1),a[Math.max(0,a.length-1)]+=o.increment)});var i=[];return s&&n.forEach(function(o){var a=e.counters[o.counter];i.push(o.counter),a||(a=e.counters[o.counter]=[]),a.push(o.reset)}),i},r}(),kc={integers:[1e3,900,500,400,100,90,50,40,10,9,5,4,1],values:["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"]},Gc={integers:[9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["Ք","Փ","Ւ","Ց","Ր","Տ","Վ","Ս","Ռ","Ջ","Պ","Չ","Ո","Շ","Ն","Յ","Մ","Ճ","Ղ","Ձ","Հ","Կ","Ծ","Խ","Լ","Ի","Ժ","Թ","Ը","Է","Զ","Ե","Դ","Գ","Բ","Ա"]},jf={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,400,300,200,100,90,80,70,60,50,40,30,20,19,18,17,16,15,10,9,8,7,6,5,4,3,2,1],values:["י׳","ט׳","ח׳","ז׳","ו׳","ה׳","ד׳","ג׳","ב׳","א׳","ת","ש","ר","ק","צ","פ","ע","ס","נ","מ","ל","כ","יט","יח","יז","טז","טו","י","ט","ח","ז","ו","ה","ד","ג","ב","א"]},Aw={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["ჵ","ჰ","ჯ","ჴ","ხ","ჭ","წ","ძ","ც","ჩ","შ","ყ","ღ","ქ","ფ","ჳ","ტ","ს","რ","ჟ","პ","ო","ჲ","ნ","მ","ლ","კ","ი","თ","ჱ","ზ","ვ","ე","დ","გ","ბ","ა"]},ye=function(r,A,e,t,n,s){return r<A||r>e?dt(r,n,s.length>0):t.integers.reduce(function(i,o,a){for(;r>=o;)r-=o,i+=t.values[a];return i},"")+s},Nc=function(r,A,e,t){var n="";do e||r--,n=t(r)+n,r/=A;while(r*A>=A);return n},J=function(r,A,e,t,n){var s=e-A+1;return(r<0?"-":"")+(Nc(Math.abs(r),s,t,function(i){return X(Math.floor(i%s)+A)})+n)},ne=function(r,A,e){e===void 0&&(e=". ");var t=A.length;return Nc(Math.abs(r),t,!1,function(n){return A[Math.floor(n%t)]})+e},Se=1,JA=2,zA=4,ct=8,PA=function(r,A,e,t,n,s){if(r<-9999||r>9999)return dt(r,4,n.length>0);var i=Math.abs(r),o=n;if(i===0)return A[0]+o;for(var a=0;i>0&&a<=4;a++){var l=i%10;l===0&&q(s,Se)&&o!==""?o=A[l]+o:l>1||l===1&&a===0||l===1&&a===1&&q(s,JA)||l===1&&a===1&&q(s,zA)&&r>100||l===1&&a>1&&q(s,ct)?o=A[l]+(a>0?e[a-1]:"")+o:l===1&&a>0&&(o=e[a-1]+o),i=Math.floor(i/10)}return(r<0?t:"")+o},_c="十百千萬",Vc="拾佰仟萬",Oc="マイナス",zs="마이너스",dt=function(r,A,e){var t=e?". ":"",n=e?"、":"",s=e?", ":"",i=e?" ":"";switch(A){case 0:return"•"+i;case 1:return"◦"+i;case 2:return"◾"+i;case 5:var o=J(r,48,57,!0,t);return o.length<4?"0"+o:o;case 4:return ne(r,"〇一二三四五六七八九",n);case 6:return ye(r,1,3999,kc,3,t).toLowerCase();case 7:return ye(r,1,3999,kc,3,t);case 8:return J(r,945,969,!1,t);case 9:return J(r,97,122,!1,t);case 10:return J(r,65,90,!1,t);case 11:return J(r,1632,1641,!0,t);case 12:case 49:return ye(r,1,9999,Gc,3,t);case 35:return ye(r,1,9999,Gc,3,t).toLowerCase();case 13:return J(r,2534,2543,!0,t);case 14:case 30:return J(r,6112,6121,!0,t);case 15:return ne(r,"子丑寅卯辰巳午未申酉戌亥",n);case 16:return ne(r,"甲乙丙丁戊己庚辛壬癸",n);case 17:case 48:return PA(r,"零一二三四五六七八九",_c,"負",n,JA|zA|ct);case 47:return PA(r,"零壹貳參肆伍陸柒捌玖",Vc,"負",n,Se|JA|zA|ct);case 42:return PA(r,"零一二三四五六七八九",_c,"负",n,JA|zA|ct);case 41:return PA(r,"零壹贰叁肆伍陆柒捌玖",Vc,"负",n,Se|JA|zA|ct);case 26:return PA(r,"〇一二三四五六七八九","十百千万",Oc,n,0);case 25:return PA(r,"零壱弐参四伍六七八九","拾百千万",Oc,n,Se|JA|zA);case 31:return PA(r,"영일이삼사오육칠팔구","십백천만",zs,s,Se|JA|zA);case 33:return PA(r,"零一二三四五六七八九","十百千萬",zs,s,0);case 32:return PA(r,"零壹貳參四五六七八九","拾百千",zs,s,Se|JA|zA);case 18:return J(r,2406,2415,!0,t);case 20:return ye(r,1,19999,Aw,3,t);case 21:return J(r,2790,2799,!0,t);case 22:return J(r,2662,2671,!0,t);case 22:return ye(r,1,10999,jf,3,t);case 23:return ne(r,"あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん");case 24:return ne(r,"いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす");case 27:return J(r,3302,3311,!0,t);case 28:return ne(r,"アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン",n);case 29:return ne(r,"イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス",n);case 34:return J(r,3792,3801,!0,t);case 37:return J(r,6160,6169,!0,t);case 38:return J(r,4160,4169,!0,t);case 39:return J(r,2918,2927,!0,t);case 40:return J(r,1776,1785,!0,t);case 43:return J(r,3046,3055,!0,t);case 44:return J(r,3174,3183,!0,t);case 45:return J(r,3664,3673,!0,t);case 46:return J(r,3872,3881,!0,t);case 3:default:return J(r,48,57,!0,t)}},Wc="data-html2canvas-ignore",Xc=function(){function r(A,e,t){if(this.context=A,this.options=t,this.scrolledElements=[],this.referenceElement=e,this.counters=new qf,this.quoteDepth=0,!e.ownerDocument)throw new Error("Cloned element does not have an owner document");this.documentElement=this.cloneNode(e.ownerDocument.documentElement,!1)}return r.prototype.toIFrame=function(A,e){var t=this,n=ew(A,e);if(!n.contentWindow)return Promise.reject("Unable to find iframe window");var s=A.defaultView.pageXOffset,i=A.defaultView.pageYOffset,o=n.contentWindow,a=o.document,l=nw(n).then(function(){return hA(t,void 0,void 0,function(){var c,u;return sA(this,function(d){switch(d.label){case 0:return this.scrolledElements.forEach(aw),o&&(o.scrollTo(e.left,e.top),/(iPad|iPhone|iPod)/g.test(navigator.userAgent)&&(o.scrollY!==e.top||o.scrollX!==e.left)&&(this.context.logger.warn("Unable to restore scroll position for cloned document"),this.context.windowBounds=this.context.windowBounds.add(o.scrollX-e.left,o.scrollY-e.top,0,0))),c=this.options.onclone,u=this.clonedReferenceElement,typeof u>"u"?[2,Promise.reject("Error finding the "+this.referenceElement.nodeName+" in the cloned document")]:a.fonts&&a.fonts.ready?[4,a.fonts.ready]:[3,2];case 1:d.sent(),d.label=2;case 2:return/(AppleWebKit)/g.test(navigator.userAgent)?[4,rw(a)]:[3,4];case 3:d.sent(),d.label=4;case 4:return typeof c=="function"?[2,Promise.resolve().then(function(){return c(a,u)}).then(function(){return n})]:[2,n]}})})});return a.open(),a.write(iw(document.doctype)+"<html></html>"),ow(this.referenceElement.ownerDocument,s,i),a.replaceChild(a.adoptNode(this.documentElement),a.documentElement),a.close(),l},r.prototype.createElementClone=function(A){if(Ls(A,2))debugger;if(Mc(A))return this.createCanvasClone(A);if(Dc(A))return this.createVideoClone(A);if(Pc(A))return this.createStyleClone(A);var e=A.cloneNode(!1);return Js(e)&&(Js(A)&&A.currentSrc&&A.currentSrc!==A.src&&(e.src=A.currentSrc,e.srcset=""),e.loading==="lazy"&&(e.loading="eager")),xc(e)?this.createCustomElementClone(e):e},r.prototype.createCustomElementClone=function(A){var e=document.createElement("html2canvascustomelement");return Ys(A.style,e),e},r.prototype.createStyleClone=function(A){try{var e=A.sheet;if(e&&e.cssRules){var t=[].slice.call(e.cssRules,0).reduce(function(s,i){return i&&typeof i.cssText=="string"?s+i.cssText:s},""),n=A.cloneNode(!1);return n.textContent=t,n}}catch(s){if(this.context.logger.error("Unable to access cssRules property",s),s.name!=="SecurityError")throw s}return A.cloneNode(!1)},r.prototype.createCanvasClone=function(A){var e;if(this.options.inlineImages&&A.ownerDocument){var t=A.ownerDocument.createElement("img");try{return t.src=A.toDataURL(),t}catch{this.context.logger.info("Unable to inline canvas contents, canvas is tainted",A)}}var n=A.cloneNode(!1);try{n.width=A.width,n.height=A.height;var s=A.getContext("2d"),i=n.getContext("2d");if(i)if(!this.options.allowTaint&&s)i.putImageData(s.getImageData(0,0,A.width,A.height),0,0);else{var o=(e=A.getContext("webgl2"))!==null&&e!==void 0?e:A.getContext("webgl");if(o){var a=o.getContextAttributes();(a==null?void 0:a.preserveDrawingBuffer)===!1&&this.context.logger.warn("Unable to clone WebGL context as it has preserveDrawingBuffer=false",A)}i.drawImage(A,0,0)}return n}catch{this.context.logger.info("Unable to clone canvas as it is tainted",A)}return n},r.prototype.createVideoClone=function(A){var e=A.ownerDocument.createElement("canvas");e.width=A.offsetWidth,e.height=A.offsetHeight;var t=e.getContext("2d");try{return t&&(t.drawImage(A,0,0,e.width,e.height),this.options.allowTaint||t.getImageData(0,0,e.width,e.height)),e}catch{this.context.logger.info("Unable to clone video as it is tainted",A)}var n=A.ownerDocument.createElement("canvas");return n.width=A.offsetWidth,n.height=A.offsetHeight,n},r.prototype.appendChildNode=function(A,e,t){(!Ee(e)||!Zf(e)&&!e.hasAttribute(Wc)&&(typeof this.options.ignoreElements!="function"||!this.options.ignoreElements(e)))&&(!this.options.copyStyles||!Ee(e)||!Pc(e))&&A.appendChild(this.cloneNode(e,t))},r.prototype.cloneChildNodes=function(A,e,t){for(var n=this,s=A.shadowRoot?A.shadowRoot.firstChild:A.firstChild;s;s=s.nextSibling)if(Ee(s)&&Kc(s)&&typeof s.assignedNodes=="function"){var i=s.assignedNodes();i.length&&i.forEach(function(o){return n.appendChildNode(e,o,t)})}else this.appendChildNode(e,s,t)},r.prototype.cloneNode=function(A,e){if(Lc(A))return document.createTextNode(A.data);if(!A.ownerDocument)return A.cloneNode(!1);var t=A.ownerDocument.defaultView;if(t&&Ee(A)&&(Ws(A)||un(A))){var n=this.createElementClone(A);n.style.transitionProperty="none";var s=t.getComputedStyle(A),i=t.getComputedStyle(A,":before"),o=t.getComputedStyle(A,":after");this.referenceElement===A&&Ws(n)&&(this.clonedReferenceElement=n),Xs(n)&&dw(n);var a=this.counters.parse(new ic(this.context,s)),l=this.resolvePseudoContent(A,n,i,ut.BEFORE);xc(A)&&(e=!0),Dc(A)||this.cloneChildNodes(A,n,e),l&&n.insertBefore(l,n.firstChild);var c=this.resolvePseudoContent(A,n,o,ut.AFTER);return c&&n.appendChild(c),this.counters.pop(a),(s&&(this.options.copyStyles||un(A))&&!Rc(A)||e)&&Ys(s,n),(A.scrollTop!==0||A.scrollLeft!==0)&&this.scrolledElements.push([n,A.scrollLeft,A.scrollTop]),(hn(A)||gn(A))&&(hn(n)||gn(n))&&(n.value=A.value),n}return A.cloneNode(!1)},r.prototype.resolvePseudoContent=function(A,e,t,n){var s=this;if(t){var i=t.content,o=e.ownerDocument;if(!(!o||!i||i==="none"||i==="-moz-alt-content"||t.display==="none")){this.counters.parse(new ic(this.context,t));var a=new XB(this.context,t),l=o.createElement("html2canvaspseudoelement");Ys(t,l),a.content.forEach(function(u){if(u.type===0)l.appendChild(o.createTextNode(u.value));else if(u.type===22){var d=o.createElement("img");d.src=u.value,d.style.opacity="1",l.appendChild(d)}else if(u.type===18){if(u.name==="attr"){var B=u.values.filter(N);B.length&&l.appendChild(o.createTextNode(A.getAttribute(B[0].value)||""))}else if(u.name==="counter"){var g=u.values.filter(Qe),f=g[0],m=g[1];if(f&&N(f)){var F=s.counters.getCounterValue(f.value),Q=m&&N(m)?Hs.parse(s.context,m.value):3;l.appendChild(o.createTextNode(dt(F,Q,!1)))}}else if(u.name==="counters"){var y=u.values.filter(Qe),f=y[0],L=y[1],m=y[2];if(f&&N(f)){var I=s.counters.getCounterValues(f.value),E=m&&N(m)?Hs.parse(s.context,m.value):3,R=L&&L.type===0?L.value:"",P=I.map(function(oA){return dt(oA,E,!1)}).join(R);l.appendChild(o.createTextNode(P))}}}else if(u.type===20)switch(u.value){case"open-quote":l.appendChild(o.createTextNode(sc(a.quotes,s.quoteDepth++,!0)));break;case"close-quote":l.appendChild(o.createTextNode(sc(a.quotes,--s.quoteDepth,!1)));break;default:l.appendChild(o.createTextNode(u.value))}}),l.className=$s+" "+Zs;var c=n===ut.BEFORE?" "+$s:" "+Zs;return un(e)?e.className.baseValue+=c:e.className+=c,l}}},r.destroy=function(A){return A.parentNode?(A.parentNode.removeChild(A),!0):!1},r}(),ut;(function(r){r[r.BEFORE=0]="BEFORE",r[r.AFTER=1]="AFTER"})(ut||(ut={}));var ew=function(r,A){var e=r.createElement("iframe");return e.className="html2canvas-container",e.style.visibility="hidden",e.style.position="fixed",e.style.left="-10000px",e.style.top="0px",e.style.border="0",e.width=A.width.toString(),e.height=A.height.toString(),e.scrolling="no",e.setAttribute(Wc,"true"),r.body.appendChild(e),e},tw=function(r){return new Promise(function(A){if(r.complete){A();return}if(!r.src){A();return}r.onload=A,r.onerror=A})},rw=function(r){return Promise.all([].slice.call(r.images,0).map(tw))},nw=function(r){return new Promise(function(A,e){var t=r.contentWindow;if(!t)return e("No window assigned for iframe");var n=t.document;t.onload=r.onload=function(){t.onload=r.onload=null;var s=setInterval(function(){n.body.childNodes.length>0&&n.readyState==="complete"&&(clearInterval(s),A(r))},50)}})},sw=["all","d","content"],Ys=function(r,A){for(var e=r.length-1;e>=0;e--){var t=r.item(e);sw.indexOf(t)===-1&&A.style.setProperty(t,r.getPropertyValue(t))}return A},iw=function(r){var A="";return r&&(A+="<!DOCTYPE ",r.name&&(A+=r.name),r.internalSubset&&(A+=r.internalSubset),r.publicId&&(A+='"'+r.publicId+'"'),r.systemId&&(A+='"'+r.systemId+'"'),A+=">"),A},ow=function(r,A,e){r&&r.defaultView&&(A!==r.defaultView.pageXOffset||e!==r.defaultView.pageYOffset)&&r.defaultView.scrollTo(A,e)},aw=function(r){var A=r[0],e=r[1],t=r[2];A.scrollLeft=e,A.scrollTop=t},lw=":before",cw=":after",$s="___html2canvas___pseudoelement_before",Zs="___html2canvas___pseudoelement_after",Jc=`{
|
|
109
109
|
content: "" !important;
|
|
110
110
|
display: none !important;
|
|
111
|
-
}`,dw=function(r){uw(r,"."+
|
|
112
|
-
.`+$s+cw+Jc)},uw=function(r,A){var e=r.ownerDocument;if(e){var t=e.createElement("style");t.textContent=A,r.appendChild(t)}},zc=function(){function r(){}return r.getOrigin=function(A){var e=r._link;return e?(e.href=A,e.href=e.href,e.protocol+e.hostname+e.port):"about:blank"},r.isSameOrigin=function(A){return r.getOrigin(A)===r._origin},r.setContext=function(A){r._link=A.document.createElement("a"),r._origin=r.getOrigin(A.location.href)},r._origin="about:blank",r}(),hw=function(){function r(A,e){this.context=A,this._options=e,this._cache={}}return r.prototype.addImage=function(A){var e=Promise.resolve();return this.has(A)||(qs(A)||ww(A))&&(this._cache[A]=this.loadImage(A)).catch(function(){}),e},r.prototype.match=function(A){return this._cache[A]},r.prototype.loadImage=function(A){return hA(this,void 0,void 0,function(){var e,t,n,s,i=this;return sA(this,function(o){switch(o.label){case 0:return e=zc.isSameOrigin(A),t=!Zs(A)&&this._options.useCORS===!0&&rA.SUPPORT_CORS_IMAGES&&!e,n=!Zs(A)&&!e&&!qs(A)&&typeof this._options.proxy=="string"&&rA.SUPPORT_CORS_XHR&&!t,!e&&this._options.allowTaint===!1&&!Zs(A)&&!qs(A)&&!n&&!t?[2]:(s=A,n?[4,this.proxy(s)]:[3,2]);case 1:s=o.sent(),o.label=2;case 2:return this.context.logger.debug("Added image "+A.substring(0,256)),[4,new Promise(function(a,l){var c=new Image;c.onload=function(){return a(c)},c.onerror=l,(pw(s)||t)&&(c.crossOrigin="anonymous"),c.src=s,c.complete===!0&&setTimeout(function(){return a(c)},500),i._options.imageTimeout>0&&setTimeout(function(){return l("Timed out ("+i._options.imageTimeout+"ms) loading image")},i._options.imageTimeout)})];case 3:return[2,o.sent()]}})})},r.prototype.has=function(A){return typeof this._cache[A]<"u"},r.prototype.keys=function(){return Promise.resolve(Object.keys(this._cache))},r.prototype.proxy=function(A){var e=this,t=this._options.proxy;if(!t)throw new Error("No proxy defined");var n=A.substring(0,256);return new Promise(function(s,i){var o=rA.SUPPORT_RESPONSE_TYPE?"blob":"text",a=new XMLHttpRequest;a.onload=function(){if(a.status===200)if(o==="text")s(a.response);else{var u=new FileReader;u.addEventListener("load",function(){return s(u.result)},!1),u.addEventListener("error",function(d){return i(d)},!1),u.readAsDataURL(a.response)}else i("Failed to proxy resource "+n+" with status code "+a.status)},a.onerror=i;var l=t.indexOf("?")>-1?"&":"?";if(a.open("GET",""+t+l+"url="+encodeURIComponent(A)+"&responseType="+o),o!=="text"&&a instanceof XMLHttpRequest&&(a.responseType=o),e._options.imageTimeout){var c=e._options.imageTimeout;a.timeout=c,a.ontimeout=function(){return i("Timed out ("+c+"ms) proxying "+n)}}a.send()})},r}(),gw=/^data:image\/svg\+xml/i,Bw=/^data:image\/.*;base64,/i,fw=/^data:image\/.*/i,ww=function(r){return rA.SUPPORT_SVG_DRAWING||!Cw(r)},Zs=function(r){return fw.test(r)},pw=function(r){return Bw.test(r)},qs=function(r){return r.substr(0,4)==="blob"},Cw=function(r){return r.substr(-3).toLowerCase()==="svg"||gw.test(r)},S=function(){function r(A,e){this.type=0,this.x=A,this.y=e}return r.prototype.add=function(A,e){return new r(this.x+A,this.y+e)},r}(),Ie=function(r,A,e){return new S(r.x+(A.x-r.x)*e,r.y+(A.y-r.y)*e)},Bn=function(){function r(A,e,t,n){this.type=1,this.start=A,this.startControl=e,this.endControl=t,this.end=n}return r.prototype.subdivide=function(A,e){var t=Ie(this.start,this.startControl,A),n=Ie(this.startControl,this.endControl,A),s=Ie(this.endControl,this.end,A),i=Ie(t,n,A),o=Ie(n,s,A),a=Ie(i,o,A);return e?new r(this.start,t,i,a):new r(a,o,s,this.end)},r.prototype.add=function(A,e){return new r(this.start.add(A,e),this.startControl.add(A,e),this.endControl.add(A,e),this.end.add(A,e))},r.prototype.reverse=function(){return new r(this.end,this.endControl,this.startControl,this.start)},r}(),CA=function(r){return r.type===1},vw=function(){function r(A){var e=A.styles,t=A.bounds,n=st(e.borderTopLeftRadius,t.width,t.height),s=n[0],i=n[1],o=st(e.borderTopRightRadius,t.width,t.height),a=o[0],l=o[1],c=st(e.borderBottomRightRadius,t.width,t.height),u=c[0],d=c[1],B=st(e.borderBottomLeftRadius,t.width,t.height),g=B[0],f=B[1],m=[];m.push((s+a)/t.width),m.push((g+u)/t.width),m.push((i+f)/t.height),m.push((l+d)/t.height);var F=Math.max.apply(Math,m);F>1&&(s/=F,i/=F,a/=F,l/=F,u/=F,d/=F,g/=F,f/=F);var Q=t.width-a,y=t.height-d,L=t.width-u,I=t.height-f,E=e.borderTopWidth,R=e.borderRightWidth,P=e.borderBottomWidth,D=e.borderLeftWidth,W=_(e.paddingTop,A.bounds.width),oA=_(e.paddingRight,A.bounds.width),$=_(e.paddingBottom,A.bounds.width),G=_(e.paddingLeft,A.bounds.width);this.topLeftBorderDoubleOuterBox=s>0||i>0?O(t.left+D/3,t.top+E/3,s-D/3,i-E/3,k.TOP_LEFT):new S(t.left+D/3,t.top+E/3),this.topRightBorderDoubleOuterBox=s>0||i>0?O(t.left+Q,t.top+E/3,a-R/3,l-E/3,k.TOP_RIGHT):new S(t.left+t.width-R/3,t.top+E/3),this.bottomRightBorderDoubleOuterBox=u>0||d>0?O(t.left+L,t.top+y,u-R/3,d-P/3,k.BOTTOM_RIGHT):new S(t.left+t.width-R/3,t.top+t.height-P/3),this.bottomLeftBorderDoubleOuterBox=g>0||f>0?O(t.left+D/3,t.top+I,g-D/3,f-P/3,k.BOTTOM_LEFT):new S(t.left+D/3,t.top+t.height-P/3),this.topLeftBorderDoubleInnerBox=s>0||i>0?O(t.left+D*2/3,t.top+E*2/3,s-D*2/3,i-E*2/3,k.TOP_LEFT):new S(t.left+D*2/3,t.top+E*2/3),this.topRightBorderDoubleInnerBox=s>0||i>0?O(t.left+Q,t.top+E*2/3,a-R*2/3,l-E*2/3,k.TOP_RIGHT):new S(t.left+t.width-R*2/3,t.top+E*2/3),this.bottomRightBorderDoubleInnerBox=u>0||d>0?O(t.left+L,t.top+y,u-R*2/3,d-P*2/3,k.BOTTOM_RIGHT):new S(t.left+t.width-R*2/3,t.top+t.height-P*2/3),this.bottomLeftBorderDoubleInnerBox=g>0||f>0?O(t.left+D*2/3,t.top+I,g-D*2/3,f-P*2/3,k.BOTTOM_LEFT):new S(t.left+D*2/3,t.top+t.height-P*2/3),this.topLeftBorderStroke=s>0||i>0?O(t.left+D/2,t.top+E/2,s-D/2,i-E/2,k.TOP_LEFT):new S(t.left+D/2,t.top+E/2),this.topRightBorderStroke=s>0||i>0?O(t.left+Q,t.top+E/2,a-R/2,l-E/2,k.TOP_RIGHT):new S(t.left+t.width-R/2,t.top+E/2),this.bottomRightBorderStroke=u>0||d>0?O(t.left+L,t.top+y,u-R/2,d-P/2,k.BOTTOM_RIGHT):new S(t.left+t.width-R/2,t.top+t.height-P/2),this.bottomLeftBorderStroke=g>0||f>0?O(t.left+D/2,t.top+I,g-D/2,f-P/2,k.BOTTOM_LEFT):new S(t.left+D/2,t.top+t.height-P/2),this.topLeftBorderBox=s>0||i>0?O(t.left,t.top,s,i,k.TOP_LEFT):new S(t.left,t.top),this.topRightBorderBox=a>0||l>0?O(t.left+Q,t.top,a,l,k.TOP_RIGHT):new S(t.left+t.width,t.top),this.bottomRightBorderBox=u>0||d>0?O(t.left+L,t.top+y,u,d,k.BOTTOM_RIGHT):new S(t.left+t.width,t.top+t.height),this.bottomLeftBorderBox=g>0||f>0?O(t.left,t.top+I,g,f,k.BOTTOM_LEFT):new S(t.left,t.top+t.height),this.topLeftPaddingBox=s>0||i>0?O(t.left+D,t.top+E,Math.max(0,s-D),Math.max(0,i-E),k.TOP_LEFT):new S(t.left+D,t.top+E),this.topRightPaddingBox=a>0||l>0?O(t.left+Math.min(Q,t.width-R),t.top+E,Q>t.width+R?0:Math.max(0,a-R),Math.max(0,l-E),k.TOP_RIGHT):new S(t.left+t.width-R,t.top+E),this.bottomRightPaddingBox=u>0||d>0?O(t.left+Math.min(L,t.width-D),t.top+Math.min(y,t.height-P),Math.max(0,u-R),Math.max(0,d-P),k.BOTTOM_RIGHT):new S(t.left+t.width-R,t.top+t.height-P),this.bottomLeftPaddingBox=g>0||f>0?O(t.left+D,t.top+Math.min(I,t.height-P),Math.max(0,g-D),Math.max(0,f-P),k.BOTTOM_LEFT):new S(t.left+D,t.top+t.height-P),this.topLeftContentBox=s>0||i>0?O(t.left+D+G,t.top+E+W,Math.max(0,s-(D+G)),Math.max(0,i-(E+W)),k.TOP_LEFT):new S(t.left+D+G,t.top+E+W),this.topRightContentBox=a>0||l>0?O(t.left+Math.min(Q,t.width+D+G),t.top+E+W,Q>t.width+D+G?0:a-D+G,l-(E+W),k.TOP_RIGHT):new S(t.left+t.width-(R+oA),t.top+E+W),this.bottomRightContentBox=u>0||d>0?O(t.left+Math.min(L,t.width-(D+G)),t.top+Math.min(y,t.height+E+W),Math.max(0,u-(R+oA)),d-(P+$),k.BOTTOM_RIGHT):new S(t.left+t.width-(R+oA),t.top+t.height-(P+$)),this.bottomLeftContentBox=g>0||f>0?O(t.left+D+G,t.top+I,Math.max(0,g-(D+G)),f-(P+$),k.BOTTOM_LEFT):new S(t.left+D+G,t.top+t.height-(P+$))}return r}(),k;(function(r){r[r.TOP_LEFT=0]="TOP_LEFT",r[r.TOP_RIGHT=1]="TOP_RIGHT",r[r.BOTTOM_RIGHT=2]="BOTTOM_RIGHT",r[r.BOTTOM_LEFT=3]="BOTTOM_LEFT"})(k||(k={}));var O=function(r,A,e,t,n){var s=4*((Math.sqrt(2)-1)/3),i=e*s,o=t*s,a=r+e,l=A+t;switch(n){case k.TOP_LEFT:return new Bn(new S(r,l),new S(r,l-o),new S(a-i,A),new S(a,A));case k.TOP_RIGHT:return new Bn(new S(r,A),new S(r+i,A),new S(a,l-o),new S(a,l));case k.BOTTOM_RIGHT:return new Bn(new S(a,A),new S(a,A+o),new S(r+i,l),new S(r,l));case k.BOTTOM_LEFT:default:return new Bn(new S(a,l),new S(a-i,l),new S(r,A+o),new S(r,A))}},fn=function(r){return[r.topLeftBorderBox,r.topRightBorderBox,r.bottomRightBorderBox,r.bottomLeftBorderBox]},mw=function(r){return[r.topLeftContentBox,r.topRightContentBox,r.bottomRightContentBox,r.bottomLeftContentBox]},wn=function(r){return[r.topLeftPaddingBox,r.topRightPaddingBox,r.bottomRightPaddingBox,r.bottomLeftPaddingBox]},Fw=function(){function r(A,e,t){this.offsetX=A,this.offsetY=e,this.matrix=t,this.type=0,this.target=6}return r}(),pn=function(){function r(A,e){this.path=A,this.target=e,this.type=1}return r}(),Qw=function(){function r(A){this.opacity=A,this.type=2,this.target=6}return r}(),Uw=function(r){return r.type===0},Yc=function(r){return r.type===1},Ew=function(r){return r.type===2},$c=function(r,A){return r.length===A.length?r.some(function(e,t){return e===A[t]}):!1},yw=function(r,A,e,t,n){return r.map(function(s,i){switch(i){case 0:return s.add(A,e);case 1:return s.add(A+t,e);case 2:return s.add(A+t,e+n);case 3:return s.add(A,e+n)}return s})},Zc=function(){function r(A){this.element=A,this.inlineLevel=[],this.nonInlineLevel=[],this.negativeZIndex=[],this.zeroOrAutoZIndexOrTransformedOrOpacity=[],this.positiveZIndex=[],this.nonPositionedFloats=[],this.nonPositionedInlineLevel=[]}return r}(),qc=function(){function r(A,e){if(this.container=A,this.parent=e,this.effects=[],this.curves=new vw(this.container),this.container.styles.opacity<1&&this.effects.push(new Qw(this.container.styles.opacity)),this.container.styles.transform!==null){var t=this.container.bounds.left+this.container.styles.transformOrigin[0].number,n=this.container.bounds.top+this.container.styles.transformOrigin[1].number,s=this.container.styles.transform;this.effects.push(new Fw(t,n,s))}if(this.container.styles.overflowX!==0){var i=fn(this.curves),o=wn(this.curves);$c(i,o)?this.effects.push(new pn(i,6)):(this.effects.push(new pn(i,2)),this.effects.push(new pn(o,4)))}}return r.prototype.getEffects=function(A){for(var e=[2,3].indexOf(this.container.styles.position)===-1,t=this.parent,n=this.effects.slice(0);t;){var s=t.effects.filter(function(a){return!Yc(a)});if(e||t.container.styles.position!==0||!t.parent){if(n.unshift.apply(n,s),e=[2,3].indexOf(t.container.styles.position)===-1,t.container.styles.overflowX!==0){var i=fn(t.curves),o=wn(t.curves);$c(i,o)||n.unshift(new pn(o,6))}}else n.unshift.apply(n,s);t=t.parent}return n.filter(function(a){return q(a.target,A)})},r}(),js=function(r,A,e,t){r.container.elements.forEach(function(n){var s=q(n.flags,4),i=q(n.flags,2),o=new qc(n,r);q(n.styles.display,2048)&&t.push(o);var a=q(n.flags,8)?[]:t;if(s||i){var l=s||n.styles.isPositioned()?e:A,c=new Zc(o);if(n.styles.isPositioned()||n.styles.opacity<1||n.styles.isTransformed()){var u=n.styles.zIndex.order;if(u<0){var d=0;l.negativeZIndex.some(function(g,f){return u>g.element.container.styles.zIndex.order?(d=f,!1):d>0}),l.negativeZIndex.splice(d,0,c)}else if(u>0){var B=0;l.positiveZIndex.some(function(g,f){return u>=g.element.container.styles.zIndex.order?(B=f+1,!1):B>0}),l.positiveZIndex.splice(B,0,c)}else l.zeroOrAutoZIndexOrTransformedOrOpacity.push(c)}else n.styles.isFloating()?l.nonPositionedFloats.push(c):l.nonPositionedInlineLevel.push(c);js(o,c,s?c:e,a)}else n.styles.isInlineLevel()?A.inlineLevel.push(o):A.nonInlineLevel.push(o),js(o,A,e,a);q(n.flags,8)&&jc(n,a)})},jc=function(r,A){for(var e=r instanceof _s?r.start:1,t=r instanceof _s?r.reversed:!1,n=0;n<A.length;n++){var s=A[n];s.container instanceof Uc&&typeof s.container.value=="number"&&s.container.value!==0&&(e=s.container.value),s.listValue=dt(e,s.container.styles.listStyleType,!0),e+=t?-1:1}},Sw=function(r){var A=new qc(r,null),e=new Zc(A),t=[];return js(A,e,e,t),jc(A.container,t),e},Ad=function(r,A){switch(A){case 0:return vA(r.topLeftBorderBox,r.topLeftPaddingBox,r.topRightBorderBox,r.topRightPaddingBox);case 1:return vA(r.topRightBorderBox,r.topRightPaddingBox,r.bottomRightBorderBox,r.bottomRightPaddingBox);case 2:return vA(r.bottomRightBorderBox,r.bottomRightPaddingBox,r.bottomLeftBorderBox,r.bottomLeftPaddingBox);case 3:default:return vA(r.bottomLeftBorderBox,r.bottomLeftPaddingBox,r.topLeftBorderBox,r.topLeftPaddingBox)}},Iw=function(r,A){switch(A){case 0:return vA(r.topLeftBorderBox,r.topLeftBorderDoubleOuterBox,r.topRightBorderBox,r.topRightBorderDoubleOuterBox);case 1:return vA(r.topRightBorderBox,r.topRightBorderDoubleOuterBox,r.bottomRightBorderBox,r.bottomRightBorderDoubleOuterBox);case 2:return vA(r.bottomRightBorderBox,r.bottomRightBorderDoubleOuterBox,r.bottomLeftBorderBox,r.bottomLeftBorderDoubleOuterBox);case 3:default:return vA(r.bottomLeftBorderBox,r.bottomLeftBorderDoubleOuterBox,r.topLeftBorderBox,r.topLeftBorderDoubleOuterBox)}},Tw=function(r,A){switch(A){case 0:return vA(r.topLeftBorderDoubleInnerBox,r.topLeftPaddingBox,r.topRightBorderDoubleInnerBox,r.topRightPaddingBox);case 1:return vA(r.topRightBorderDoubleInnerBox,r.topRightPaddingBox,r.bottomRightBorderDoubleInnerBox,r.bottomRightPaddingBox);case 2:return vA(r.bottomRightBorderDoubleInnerBox,r.bottomRightPaddingBox,r.bottomLeftBorderDoubleInnerBox,r.bottomLeftPaddingBox);case 3:default:return vA(r.bottomLeftBorderDoubleInnerBox,r.bottomLeftPaddingBox,r.topLeftBorderDoubleInnerBox,r.topLeftPaddingBox)}},Hw=function(r,A){switch(A){case 0:return Cn(r.topLeftBorderStroke,r.topRightBorderStroke);case 1:return Cn(r.topRightBorderStroke,r.bottomRightBorderStroke);case 2:return Cn(r.bottomRightBorderStroke,r.bottomLeftBorderStroke);case 3:default:return Cn(r.bottomLeftBorderStroke,r.topLeftBorderStroke)}},Cn=function(r,A){var e=[];return CA(r)?e.push(r.subdivide(.5,!1)):e.push(r),CA(A)?e.push(A.subdivide(.5,!0)):e.push(A),e},vA=function(r,A,e,t){var n=[];return CA(r)?n.push(r.subdivide(.5,!1)):n.push(r),CA(e)?n.push(e.subdivide(.5,!0)):n.push(e),CA(t)?n.push(t.subdivide(.5,!0).reverse()):n.push(t),CA(A)?n.push(A.subdivide(.5,!1).reverse()):n.push(A),n},ed=function(r){var A=r.bounds,e=r.styles;return A.add(e.borderLeftWidth,e.borderTopWidth,-(e.borderRightWidth+e.borderLeftWidth),-(e.borderTopWidth+e.borderBottomWidth))},vn=function(r){var A=r.styles,e=r.bounds,t=_(A.paddingLeft,e.width),n=_(A.paddingRight,e.width),s=_(A.paddingTop,e.width),i=_(A.paddingBottom,e.width);return e.add(t+A.borderLeftWidth,s+A.borderTopWidth,-(A.borderRightWidth+A.borderLeftWidth+t+n),-(A.borderTopWidth+A.borderBottomWidth+s+i))},Lw=function(r,A){return r===0?A.bounds:r===2?vn(A):ed(A)},bw=function(r,A){return r===0?A.bounds:r===2?vn(A):ed(A)},Ai=function(r,A,e){var t=Lw(He(r.styles.backgroundOrigin,A),r),n=bw(He(r.styles.backgroundClip,A),r),s=Mw(He(r.styles.backgroundSize,A),e,t),i=s[0],o=s[1],a=st(He(r.styles.backgroundPosition,A),t.width-i,t.height-o),l=Dw(He(r.styles.backgroundRepeat,A),a,s,t,n),c=Math.round(t.left+a[0]),u=Math.round(t.top+a[1]);return[l,c,u,i,o]},Te=function(r){return N(r)&&r.value===Ue.AUTO},mn=function(r){return typeof r=="number"},Mw=function(r,A,e){var t=A[0],n=A[1],s=A[2],i=r[0],o=r[1];if(!i)return[0,0];if(Y(i)&&o&&Y(o))return[_(i,e.width),_(o,e.height)];var a=mn(s);if(N(i)&&(i.value===Ue.CONTAIN||i.value===Ue.COVER)){if(mn(s)){var l=e.width/e.height;return l<s!=(i.value===Ue.COVER)?[e.width,e.width/s]:[e.height*s,e.height]}return[e.width,e.height]}var c=mn(t),u=mn(n),d=c||u;if(Te(i)&&(!o||Te(o))){if(c&&u)return[t,n];if(!a&&!d)return[e.width,e.height];if(d&&a){var B=c?t:n*s,g=u?n:t/s;return[B,g]}var f=c?t:e.width,m=u?n:e.height;return[f,m]}if(a){var F=0,Q=0;return Y(i)?F=_(i,e.width):Y(o)&&(Q=_(o,e.height)),Te(i)?F=Q*s:(!o||Te(o))&&(Q=F/s),[F,Q]}var y=null,L=null;if(Y(i)?y=_(i,e.width):o&&Y(o)&&(L=_(o,e.height)),y!==null&&(!o||Te(o))&&(L=c&&u?y/t*n:e.height),L!==null&&Te(i)&&(y=c&&u?L/n*t:e.width),y!==null&&L!==null)return[y,L];throw new Error("Unable to calculate background-size for element")},He=function(r,A){var e=r[A];return typeof e>"u"?r[0]:e},Dw=function(r,A,e,t,n){var s=A[0],i=A[1],o=e[0],a=e[1];switch(r){case 2:return[new S(Math.round(t.left),Math.round(t.top+i)),new S(Math.round(t.left+t.width),Math.round(t.top+i)),new S(Math.round(t.left+t.width),Math.round(a+t.top+i)),new S(Math.round(t.left),Math.round(a+t.top+i))];case 3:return[new S(Math.round(t.left+s),Math.round(t.top)),new S(Math.round(t.left+s+o),Math.round(t.top)),new S(Math.round(t.left+s+o),Math.round(t.height+t.top)),new S(Math.round(t.left+s),Math.round(t.height+t.top))];case 1:return[new S(Math.round(t.left+s),Math.round(t.top+i)),new S(Math.round(t.left+s+o),Math.round(t.top+i)),new S(Math.round(t.left+s+o),Math.round(t.top+i+a)),new S(Math.round(t.left+s),Math.round(t.top+i+a))];default:return[new S(Math.round(n.left),Math.round(n.top)),new S(Math.round(n.left+n.width),Math.round(n.top)),new S(Math.round(n.left+n.width),Math.round(n.height+n.top)),new S(Math.round(n.left),Math.round(n.height+n.top))]}},Rw="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",td="Hidden Text",Pw=function(){function r(A){this._data={},this._document=A}return r.prototype.parseMetrics=function(A,e){var t=this._document.createElement("div"),n=this._document.createElement("img"),s=this._document.createElement("span"),i=this._document.body;t.style.visibility="hidden",t.style.fontFamily=A,t.style.fontSize=e,t.style.margin="0",t.style.padding="0",t.style.whiteSpace="nowrap",i.appendChild(t),n.src=Rw,n.width=1,n.height=1,n.style.margin="0",n.style.padding="0",n.style.verticalAlign="baseline",s.style.fontFamily=A,s.style.fontSize=e,s.style.margin="0",s.style.padding="0",s.appendChild(this._document.createTextNode(td)),t.appendChild(s),t.appendChild(n);var o=n.offsetTop-s.offsetTop+2;t.removeChild(s),t.appendChild(this._document.createTextNode(td)),t.style.lineHeight="normal",n.style.verticalAlign="super";var a=n.offsetTop-t.offsetTop+2;return i.removeChild(t),{baseline:o,middle:a}},r.prototype.getMetrics=function(A,e){var t=A+" "+e;return typeof this._data[t]>"u"&&(this._data[t]=this.parseMetrics(A,e)),this._data[t]},r}(),rd=function(){function r(A,e){this.context=A,this.options=e}return r}(),Kw=1e4,xw=function(r){FA(A,r);function A(e,t){var n=r.call(this,e,t)||this;return n._activeEffects=[],n.canvas=t.canvas?t.canvas:document.createElement("canvas"),n.ctx=n.canvas.getContext("2d"),t.canvas||(n.canvas.width=Math.floor(t.width*t.scale),n.canvas.height=Math.floor(t.height*t.scale),n.canvas.style.width=t.width+"px",n.canvas.style.height=t.height+"px"),n.fontMetrics=new Pw(document),n.ctx.scale(n.options.scale,n.options.scale),n.ctx.translate(-t.x,-t.y),n.ctx.textBaseline="bottom",n._activeEffects=[],n.context.logger.debug("Canvas renderer initialized ("+t.width+"x"+t.height+") with scale "+t.scale),n}return A.prototype.applyEffects=function(e){for(var t=this;this._activeEffects.length;)this.popEffect();e.forEach(function(n){return t.applyEffect(n)})},A.prototype.applyEffect=function(e){this.ctx.save(),Ew(e)&&(this.ctx.globalAlpha=e.opacity),Uw(e)&&(this.ctx.translate(e.offsetX,e.offsetY),this.ctx.transform(e.matrix[0],e.matrix[1],e.matrix[2],e.matrix[3],e.matrix[4],e.matrix[5]),this.ctx.translate(-e.offsetX,-e.offsetY)),Yc(e)&&(this.path(e.path),this.ctx.clip()),this._activeEffects.push(e)},A.prototype.popEffect=function(){this._activeEffects.pop(),this.ctx.restore()},A.prototype.renderStack=function(e){return hA(this,void 0,void 0,function(){var t;return sA(this,function(n){switch(n.label){case 0:return t=e.element.container.styles,t.isVisible()?[4,this.renderStackContent(e)]:[3,2];case 1:n.sent(),n.label=2;case 2:return[2]}})})},A.prototype.renderNode=function(e){return hA(this,void 0,void 0,function(){return sA(this,function(t){switch(t.label){case 0:if(q(e.container.flags,16))debugger;return e.container.styles.isVisible()?[4,this.renderNodeBackgroundAndBorders(e)]:[3,3];case 1:return t.sent(),[4,this.renderNodeContent(e)];case 2:t.sent(),t.label=3;case 3:return[2]}})})},A.prototype.renderTextWithLetterSpacing=function(e,t,n){var s=this;if(t===0)this.ctx.fillText(e.text,e.bounds.left,e.bounds.top+n);else{var i=Ns(e.text);i.reduce(function(o,a){return s.ctx.fillText(a,o,e.bounds.top+n),o+s.ctx.measureText(a).width},e.bounds.left)}},A.prototype.createFontStyle=function(e){var t=e.fontVariant.filter(function(i){return i==="normal"||i==="small-caps"}).join(""),n=Vw(e.fontFamily).join(", "),s=nt(e.fontSize)?""+e.fontSize.number+e.fontSize.unit:e.fontSize.number+"px";return[[e.fontStyle,t,e.fontWeight,s,n].join(" "),n,s]},A.prototype.renderTextNode=function(e,t){return hA(this,void 0,void 0,function(){var n,s,i,o,a,l,c,u,d=this;return sA(this,function(B){return n=this.createFontStyle(t),s=n[0],i=n[1],o=n[2],this.ctx.font=s,this.ctx.direction=t.direction===1?"rtl":"ltr",this.ctx.textAlign="left",this.ctx.textBaseline="alphabetic",a=this.fontMetrics.getMetrics(i,o),l=a.baseline,c=a.middle,u=t.paintOrder,e.textBounds.forEach(function(g){u.forEach(function(f){switch(f){case 0:d.ctx.fillStyle=AA(t.color),d.renderTextWithLetterSpacing(g,t.letterSpacing,l);var m=t.textShadow;m.length&&g.text.trim().length&&(m.slice(0).reverse().forEach(function(F){d.ctx.shadowColor=AA(F.color),d.ctx.shadowOffsetX=F.offsetX.number*d.options.scale,d.ctx.shadowOffsetY=F.offsetY.number*d.options.scale,d.ctx.shadowBlur=F.blur.number,d.renderTextWithLetterSpacing(g,t.letterSpacing,l)}),d.ctx.shadowColor="",d.ctx.shadowOffsetX=0,d.ctx.shadowOffsetY=0,d.ctx.shadowBlur=0),t.textDecorationLine.length&&(d.ctx.fillStyle=AA(t.textDecorationColor||t.color),t.textDecorationLine.forEach(function(F){switch(F){case 1:d.ctx.fillRect(g.bounds.left,Math.round(g.bounds.top+l),g.bounds.width,1);break;case 2:d.ctx.fillRect(g.bounds.left,Math.round(g.bounds.top),g.bounds.width,1);break;case 3:d.ctx.fillRect(g.bounds.left,Math.ceil(g.bounds.top+c),g.bounds.width,1);break}}));break;case 1:t.webkitTextStrokeWidth&&g.text.trim().length&&(d.ctx.strokeStyle=AA(t.webkitTextStrokeColor),d.ctx.lineWidth=t.webkitTextStrokeWidth,d.ctx.lineJoin=window.chrome?"miter":"round",d.ctx.strokeText(g.text,g.bounds.left,g.bounds.top+l)),d.ctx.strokeStyle="",d.ctx.lineWidth=0,d.ctx.lineJoin="miter";break}})}),[2]})})},A.prototype.renderReplacedElement=function(e,t,n){if(n&&e.intrinsicWidth>0&&e.intrinsicHeight>0){var s=vn(e),i=wn(t);this.path(i),this.ctx.save(),this.ctx.clip(),this.ctx.drawImage(n,0,0,e.intrinsicWidth,e.intrinsicHeight,s.left,s.top,s.width,s.height),this.ctx.restore()}},A.prototype.renderNodeContent=function(e){return hA(this,void 0,void 0,function(){var t,n,s,i,o,a,Q,Q,l,c,u,d,L,B,g,I,f,m,F,Q,y,L,I;return sA(this,function(E){switch(E.label){case 0:this.applyEffects(e.getEffects(4)),t=e.container,n=e.curves,s=t.styles,i=0,o=t.textNodes,E.label=1;case 1:return i<o.length?(a=o[i],[4,this.renderTextNode(a,s)]):[3,4];case 2:E.sent(),E.label=3;case 3:return i++,[3,1];case 4:if(!(t instanceof mc))return[3,8];E.label=5;case 5:return E.trys.push([5,7,,8]),[4,this.context.cache.match(t.src)];case 6:return Q=E.sent(),this.renderReplacedElement(t,n,Q),[3,8];case 7:return E.sent(),this.context.logger.error("Error loading image "+t.src),[3,8];case 8:if(t instanceof Fc&&this.renderReplacedElement(t,n,t.canvas),!(t instanceof Qc))return[3,12];E.label=9;case 9:return E.trys.push([9,11,,12]),[4,this.context.cache.match(t.svg)];case 10:return Q=E.sent(),this.renderReplacedElement(t,n,Q),[3,12];case 11:return E.sent(),this.context.logger.error("Error loading svg "+t.svg.substring(0,255)),[3,12];case 12:return t instanceof Ic&&t.tree?(l=new A(this.context,{scale:this.options.scale,backgroundColor:t.backgroundColor,x:0,y:0,width:t.width,height:t.height}),[4,l.render(t.tree)]):[3,14];case 13:c=E.sent(),t.width&&t.height&&this.ctx.drawImage(c,0,0,t.width,t.height,t.bounds.left,t.bounds.top,t.bounds.width,t.bounds.height),E.label=14;case 14:if(t instanceof Vs&&(u=Math.min(t.bounds.width,t.bounds.height),t.type===ln?t.checked&&(this.ctx.save(),this.path([new S(t.bounds.left+u*.39363,t.bounds.top+u*.79),new S(t.bounds.left+u*.16,t.bounds.top+u*.5549),new S(t.bounds.left+u*.27347,t.bounds.top+u*.44071),new S(t.bounds.left+u*.39694,t.bounds.top+u*.5649),new S(t.bounds.left+u*.72983,t.bounds.top+u*.23),new S(t.bounds.left+u*.84,t.bounds.top+u*.34085),new S(t.bounds.left+u*.39363,t.bounds.top+u*.79)]),this.ctx.fillStyle=AA(Ec),this.ctx.fill(),this.ctx.restore()):t.type===cn&&t.checked&&(this.ctx.save(),this.ctx.beginPath(),this.ctx.arc(t.bounds.left+u/2,t.bounds.top+u/2,u/4,0,Math.PI*2,!0),this.ctx.fillStyle=AA(Ec),this.ctx.fill(),this.ctx.restore())),kw(t)&&t.value.length){switch(d=this.createFontStyle(s),L=d[0],B=d[1],g=this.fontMetrics.getMetrics(L,B).baseline,this.ctx.font=L,this.ctx.fillStyle=AA(s.color),this.ctx.textBaseline="alphabetic",this.ctx.textAlign=Nw(t.styles.textAlign),I=vn(t),f=0,t.styles.textAlign){case 1:f+=I.width/2;break;case 2:f+=I.width;break}m=I.add(f,0,0,-I.height/2+1),this.ctx.save(),this.path([new S(I.left,I.top),new S(I.left+I.width,I.top),new S(I.left+I.width,I.top+I.height),new S(I.left,I.top+I.height)]),this.ctx.clip(),this.renderTextWithLetterSpacing(new lt(t.value,m),s.letterSpacing,g),this.ctx.restore(),this.ctx.textBaseline="alphabetic",this.ctx.textAlign="left"}if(!q(t.styles.display,2048))return[3,20];if(t.styles.listStyleImage===null)return[3,19];if(F=t.styles.listStyleImage,F.type!==0)return[3,18];Q=void 0,y=F.url,E.label=15;case 15:return E.trys.push([15,17,,18]),[4,this.context.cache.match(y)];case 16:return Q=E.sent(),this.ctx.drawImage(Q,t.bounds.left-(Q.width+10),t.bounds.top),[3,18];case 17:return E.sent(),this.context.logger.error("Error loading list-style-image "+y),[3,18];case 18:return[3,20];case 19:e.listValue&&t.styles.listStyleType!==-1&&(L=this.createFontStyle(s)[0],this.ctx.font=L,this.ctx.fillStyle=AA(s.color),this.ctx.textBaseline="middle",this.ctx.textAlign="right",I=new MA(t.bounds.left,t.bounds.top+_(t.styles.paddingTop,t.bounds.width),t.bounds.width,tc(s.lineHeight,s.fontSize.number)/2+1),this.renderTextWithLetterSpacing(new lt(e.listValue,I),s.letterSpacing,tc(s.lineHeight,s.fontSize.number)/2+2),this.ctx.textBaseline="bottom",this.ctx.textAlign="left"),E.label=20;case 20:return[2]}})})},A.prototype.renderStackContent=function(e){return hA(this,void 0,void 0,function(){var t,n,F,s,i,F,o,a,F,l,c,F,u,d,F,B,g,F,f,m,F;return sA(this,function(Q){switch(Q.label){case 0:if(q(e.element.container.flags,16))debugger;return[4,this.renderNodeBackgroundAndBorders(e.element)];case 1:Q.sent(),t=0,n=e.negativeZIndex,Q.label=2;case 2:return t<n.length?(F=n[t],[4,this.renderStack(F)]):[3,5];case 3:Q.sent(),Q.label=4;case 4:return t++,[3,2];case 5:return[4,this.renderNodeContent(e.element)];case 6:Q.sent(),s=0,i=e.nonInlineLevel,Q.label=7;case 7:return s<i.length?(F=i[s],[4,this.renderNode(F)]):[3,10];case 8:Q.sent(),Q.label=9;case 9:return s++,[3,7];case 10:o=0,a=e.nonPositionedFloats,Q.label=11;case 11:return o<a.length?(F=a[o],[4,this.renderStack(F)]):[3,14];case 12:Q.sent(),Q.label=13;case 13:return o++,[3,11];case 14:l=0,c=e.nonPositionedInlineLevel,Q.label=15;case 15:return l<c.length?(F=c[l],[4,this.renderStack(F)]):[3,18];case 16:Q.sent(),Q.label=17;case 17:return l++,[3,15];case 18:u=0,d=e.inlineLevel,Q.label=19;case 19:return u<d.length?(F=d[u],[4,this.renderNode(F)]):[3,22];case 20:Q.sent(),Q.label=21;case 21:return u++,[3,19];case 22:B=0,g=e.zeroOrAutoZIndexOrTransformedOrOpacity,Q.label=23;case 23:return B<g.length?(F=g[B],[4,this.renderStack(F)]):[3,26];case 24:Q.sent(),Q.label=25;case 25:return B++,[3,23];case 26:f=0,m=e.positiveZIndex,Q.label=27;case 27:return f<m.length?(F=m[f],[4,this.renderStack(F)]):[3,30];case 28:Q.sent(),Q.label=29;case 29:return f++,[3,27];case 30:return[2]}})})},A.prototype.mask=function(e){this.ctx.beginPath(),this.ctx.moveTo(0,0),this.ctx.lineTo(this.canvas.width,0),this.ctx.lineTo(this.canvas.width,this.canvas.height),this.ctx.lineTo(0,this.canvas.height),this.ctx.lineTo(0,0),this.formatPath(e.slice(0).reverse()),this.ctx.closePath()},A.prototype.path=function(e){this.ctx.beginPath(),this.formatPath(e),this.ctx.closePath()},A.prototype.formatPath=function(e){var t=this;e.forEach(function(n,s){var i=CA(n)?n.start:n;s===0?t.ctx.moveTo(i.x,i.y):t.ctx.lineTo(i.x,i.y),CA(n)&&t.ctx.bezierCurveTo(n.startControl.x,n.startControl.y,n.endControl.x,n.endControl.y,n.end.x,n.end.y)})},A.prototype.renderRepeat=function(e,t,n,s){this.path(e),this.ctx.fillStyle=t,this.ctx.translate(n,s),this.ctx.fill(),this.ctx.translate(-n,-s)},A.prototype.resizeImage=function(e,t,n){var s;if(e.width===t&&e.height===n)return e;var i=(s=this.canvas.ownerDocument)!==null&&s!==void 0?s:document,o=i.createElement("canvas");o.width=Math.max(1,t),o.height=Math.max(1,n);var a=o.getContext("2d");return a.drawImage(e,0,0,e.width,e.height,0,0,t,n),o},A.prototype.renderBackgroundImage=function(e){return hA(this,void 0,void 0,function(){var t,n,s,i,o,a;return sA(this,function(l){switch(l.label){case 0:t=e.styles.backgroundImage.length-1,n=function(c){var u,d,B,W,aA,BA,G,j,P,g,W,aA,BA,G,j,f,m,F,Q,y,L,I,E,R,P,D,W,oA,$,G,j,IA,aA,BA,de,TA,YA,ue,he,KA,ge,xA;return sA(this,function(Ke){switch(Ke.label){case 0:if(c.type!==0)return[3,5];u=void 0,d=c.url,Ke.label=1;case 1:return Ke.trys.push([1,3,,4]),[4,s.context.cache.match(d)];case 2:return u=Ke.sent(),[3,4];case 3:return Ke.sent(),s.context.logger.error("Error loading background-image "+d),[3,4];case 4:return u&&(B=Ai(e,t,[u.width,u.height,u.width/u.height]),W=B[0],aA=B[1],BA=B[2],G=B[3],j=B[4],P=s.ctx.createPattern(s.resizeImage(u,G,j),"repeat"),s.renderRepeat(W,P,aA,BA)),[3,6];case 5:Qg(c)?(g=Ai(e,t,[null,null,null]),W=g[0],aA=g[1],BA=g[2],G=g[3],j=g[4],f=pg(c.angle,G,j),m=f[0],F=f[1],Q=f[2],y=f[3],L=f[4],I=document.createElement("canvas"),I.width=G,I.height=j,E=I.getContext("2d"),R=E.createLinearGradient(F,y,Q,L),Wl(c.stops,m).forEach(function(vr){return R.addColorStop(vr.stop,AA(vr.color))}),E.fillStyle=R,E.fillRect(0,0,G,j),G>0&&j>0&&(P=s.ctx.createPattern(I,"repeat"),s.renderRepeat(W,P,aA,BA))):Ug(c)&&(D=Ai(e,t,[null,null,null]),W=D[0],oA=D[1],$=D[2],G=D[3],j=D[4],IA=c.position.length===0?[ys]:c.position,aA=_(IA[0],G),BA=_(IA[IA.length-1],j),de=Cg(c,aA,BA,G,j),TA=de[0],YA=de[1],TA>0&&YA>0&&(ue=s.ctx.createRadialGradient(oA+aA,$+BA,0,oA+aA,$+BA,TA),Wl(c.stops,TA*2).forEach(function(vr){return ue.addColorStop(vr.stop,AA(vr.color))}),s.path(W),s.ctx.fillStyle=ue,TA!==YA?(he=e.bounds.left+.5*e.bounds.width,KA=e.bounds.top+.5*e.bounds.height,ge=YA/TA,xA=1/ge,s.ctx.save(),s.ctx.translate(he,KA),s.ctx.transform(1,0,0,ge,0,0),s.ctx.translate(-he,-KA),s.ctx.fillRect(oA,xA*($-KA)+KA,G,j*xA),s.ctx.restore()):s.ctx.fill())),Ke.label=6;case 6:return t--,[2]}})},s=this,i=0,o=e.styles.backgroundImage.slice(0).reverse(),l.label=1;case 1:return i<o.length?(a=o[i],[5,n(a)]):[3,4];case 2:l.sent(),l.label=3;case 3:return i++,[3,1];case 4:return[2]}})})},A.prototype.renderSolidBorder=function(e,t,n){return hA(this,void 0,void 0,function(){return sA(this,function(s){return this.path(Ad(n,t)),this.ctx.fillStyle=AA(e),this.ctx.fill(),[2]})})},A.prototype.renderDoubleBorder=function(e,t,n,s){return hA(this,void 0,void 0,function(){var i,o;return sA(this,function(a){switch(a.label){case 0:return t<3?[4,this.renderSolidBorder(e,n,s)]:[3,2];case 1:return a.sent(),[2];case 2:return i=Iw(s,n),this.path(i),this.ctx.fillStyle=AA(e),this.ctx.fill(),o=Tw(s,n),this.path(o),this.ctx.fill(),[2]}})})},A.prototype.renderNodeBackgroundAndBorders=function(e){return hA(this,void 0,void 0,function(){var t,n,s,i,o,a,l,c,u=this;return sA(this,function(d){switch(d.label){case 0:return this.applyEffects(e.getEffects(2)),t=e.container.styles,n=!WA(t.backgroundColor)||t.backgroundImage.length,s=[{style:t.borderTopStyle,color:t.borderTopColor,width:t.borderTopWidth},{style:t.borderRightStyle,color:t.borderRightColor,width:t.borderRightWidth},{style:t.borderBottomStyle,color:t.borderBottomColor,width:t.borderBottomWidth},{style:t.borderLeftStyle,color:t.borderLeftColor,width:t.borderLeftWidth}],i=Gw(He(t.backgroundClip,0),e.curves),n||t.boxShadow.length?(this.ctx.save(),this.path(i),this.ctx.clip(),WA(t.backgroundColor)||(this.ctx.fillStyle=AA(t.backgroundColor),this.ctx.fill()),[4,this.renderBackgroundImage(e.container)]):[3,2];case 1:d.sent(),this.ctx.restore(),t.boxShadow.slice(0).reverse().forEach(function(B){u.ctx.save();var g=fn(e.curves),f=B.inset?0:Kw,m=yw(g,-f+(B.inset?1:-1)*B.spread.number,(B.inset?1:-1)*B.spread.number,B.spread.number*(B.inset?-2:2),B.spread.number*(B.inset?-2:2));B.inset?(u.path(g),u.ctx.clip(),u.mask(m)):(u.mask(g),u.ctx.clip(),u.path(m)),u.ctx.shadowOffsetX=B.offsetX.number+f,u.ctx.shadowOffsetY=B.offsetY.number,u.ctx.shadowColor=AA(B.color),u.ctx.shadowBlur=B.blur.number,u.ctx.fillStyle=B.inset?AA(B.color):"rgba(0,0,0,1)",u.ctx.fill(),u.ctx.restore()}),d.label=2;case 2:o=0,a=0,l=s,d.label=3;case 3:return a<l.length?(c=l[a],c.style!==0&&!WA(c.color)&&c.width>0?c.style!==2?[3,5]:[4,this.renderDashedDottedBorder(c.color,c.width,o,e.curves,2)]:[3,11]):[3,13];case 4:return d.sent(),[3,11];case 5:return c.style!==3?[3,7]:[4,this.renderDashedDottedBorder(c.color,c.width,o,e.curves,3)];case 6:return d.sent(),[3,11];case 7:return c.style!==4?[3,9]:[4,this.renderDoubleBorder(c.color,c.width,o,e.curves)];case 8:return d.sent(),[3,11];case 9:return[4,this.renderSolidBorder(c.color,o,e.curves)];case 10:d.sent(),d.label=11;case 11:o++,d.label=12;case 12:return a++,[3,3];case 13:return[2]}})})},A.prototype.renderDashedDottedBorder=function(e,t,n,s,i){return hA(this,void 0,void 0,function(){var o,a,l,c,u,d,B,g,f,m,F,Q,y,L,I,E,I,E;return sA(this,function(R){return this.ctx.save(),o=Hw(s,n),a=Ad(s,n),i===2&&(this.path(a),this.ctx.clip()),CA(a[0])?(l=a[0].start.x,c=a[0].start.y):(l=a[0].x,c=a[0].y),CA(a[1])?(u=a[1].end.x,d=a[1].end.y):(u=a[1].x,d=a[1].y),n===0||n===2?B=Math.abs(l-u):B=Math.abs(c-d),this.ctx.beginPath(),i===3?this.formatPath(o):this.formatPath(a.slice(0,2)),g=t<3?t*3:t*2,f=t<3?t*2:t,i===3&&(g=t,f=t),m=!0,B<=g*2?m=!1:B<=g*2+f?(F=B/(2*g+f),g*=F,f*=F):(Q=Math.floor((B+f)/(g+f)),y=(B-Q*g)/(Q-1),L=(B-(Q+1)*g)/Q,f=L<=0||Math.abs(f-y)<Math.abs(f-L)?y:L),m&&(i===3?this.ctx.setLineDash([0,g+f]):this.ctx.setLineDash([g,f])),i===3?(this.ctx.lineCap="round",this.ctx.lineWidth=t):this.ctx.lineWidth=t*2+1.1,this.ctx.strokeStyle=AA(e),this.ctx.stroke(),this.ctx.setLineDash([]),i===2&&(CA(a[0])&&(I=a[3],E=a[0],this.ctx.beginPath(),this.formatPath([new S(I.end.x,I.end.y),new S(E.start.x,E.start.y)]),this.ctx.stroke()),CA(a[1])&&(I=a[1],E=a[2],this.ctx.beginPath(),this.formatPath([new S(I.end.x,I.end.y),new S(E.start.x,E.start.y)]),this.ctx.stroke())),this.ctx.restore(),[2]})})},A.prototype.render=function(e){return hA(this,void 0,void 0,function(){var t;return sA(this,function(n){switch(n.label){case 0:return this.options.backgroundColor&&(this.ctx.fillStyle=AA(this.options.backgroundColor),this.ctx.fillRect(this.options.x,this.options.y,this.options.width,this.options.height)),t=Sw(e),[4,this.renderStack(t)];case 1:return n.sent(),this.applyEffects([]),[2,this.canvas]}})})},A}(rd),kw=function(r){return r instanceof Sc||r instanceof yc?!0:r instanceof Vs&&r.type!==cn&&r.type!==ln},Gw=function(r,A){switch(r){case 0:return fn(A);case 2:return mw(A);case 1:default:return wn(A)}},Nw=function(r){switch(r){case 1:return"center";case 2:return"right";case 0:default:return"left"}},_w=["-apple-system","system-ui"],Vw=function(r){return/iPhone OS 15_(0|1)/.test(window.navigator.userAgent)?r.filter(function(A){return _w.indexOf(A)===-1}):r},Ow=function(r){FA(A,r);function A(e,t){var n=r.call(this,e,t)||this;return n.canvas=t.canvas?t.canvas:document.createElement("canvas"),n.ctx=n.canvas.getContext("2d"),n.options=t,n.canvas.width=Math.floor(t.width*t.scale),n.canvas.height=Math.floor(t.height*t.scale),n.canvas.style.width=t.width+"px",n.canvas.style.height=t.height+"px",n.ctx.scale(n.options.scale,n.options.scale),n.ctx.translate(-t.x,-t.y),n.context.logger.debug("EXPERIMENTAL ForeignObject renderer initialized ("+t.width+"x"+t.height+" at "+t.x+","+t.y+") with scale "+t.scale),n}return A.prototype.render=function(e){return hA(this,void 0,void 0,function(){var t,n;return sA(this,function(s){switch(s.label){case 0:return t=Gs(this.options.width*this.options.scale,this.options.height*this.options.scale,this.options.scale,this.options.scale,e),[4,Ww(t)];case 1:return n=s.sent(),this.options.backgroundColor&&(this.ctx.fillStyle=AA(this.options.backgroundColor),this.ctx.fillRect(0,0,this.options.width*this.options.scale,this.options.height*this.options.scale)),this.ctx.drawImage(n,-this.options.x*this.options.scale,-this.options.y*this.options.scale),[2,this.canvas]}})})},A}(rd),Ww=function(r){return new Promise(function(A,e){var t=new Image;t.onload=function(){A(t)},t.onerror=e,t.src="data:image/svg+xml;charset=utf-8,"+encodeURIComponent(new XMLSerializer().serializeToString(r))})},Xw=function(){function r(A){var e=A.id,t=A.enabled;this.id=e,this.enabled=t,this.start=Date.now()}return r.prototype.debug=function(){for(var A=[],e=0;e<arguments.length;e++)A[e]=arguments[e];this.enabled&&(typeof window<"u"&&window.console&&typeof console.debug=="function"?console.debug.apply(console,Ir([this.id,this.getTime()+"ms"],A)):this.info.apply(this,A))},r.prototype.getTime=function(){return Date.now()-this.start},r.prototype.info=function(){for(var A=[],e=0;e<arguments.length;e++)A[e]=arguments[e];this.enabled&&typeof window<"u"&&window.console&&typeof console.info=="function"&&console.info.apply(console,Ir([this.id,this.getTime()+"ms"],A))},r.prototype.warn=function(){for(var A=[],e=0;e<arguments.length;e++)A[e]=arguments[e];this.enabled&&(typeof window<"u"&&window.console&&typeof console.warn=="function"?console.warn.apply(console,Ir([this.id,this.getTime()+"ms"],A)):this.info.apply(this,A))},r.prototype.error=function(){for(var A=[],e=0;e<arguments.length;e++)A[e]=arguments[e];this.enabled&&(typeof window<"u"&&window.console&&typeof console.error=="function"?console.error.apply(console,Ir([this.id,this.getTime()+"ms"],A)):this.info.apply(this,A))},r.instances={},r}(),Jw=function(){function r(A,e){var t;this.windowBounds=e,this.instanceName="#"+r.instanceCount++,this.logger=new Xw({id:this.instanceName,enabled:A.logging}),this.cache=(t=A.cache)!==null&&t!==void 0?t:new hw(this,A)}return r.instanceCount=1,r}(),zw=function(r,A){return A===void 0&&(A={}),Yw(r,A)};typeof window<"u"&&zc.setContext(window);var Yw=function(r,A){return hA(void 0,void 0,void 0,function(){var e,t,n,s,i,o,a,l,c,u,d,B,g,f,m,F,Q,y,L,I,R,E,R,P,D,W,oA,$,G,j,IA,aA,BA,de,TA,YA,ue,he,KA,ge;return sA(this,function(xA){switch(xA.label){case 0:if(!r||typeof r!="object")return[2,Promise.reject("Invalid element provided as first argument")];if(e=r.ownerDocument,!e)throw new Error("Element is not attached to a Document");if(t=e.defaultView,!t)throw new Error("Document is not attached to a Window");return n={allowTaint:(P=A.allowTaint)!==null&&P!==void 0?P:!1,imageTimeout:(D=A.imageTimeout)!==null&&D!==void 0?D:15e3,proxy:A.proxy,useCORS:(W=A.useCORS)!==null&&W!==void 0?W:!1},s=ss({logging:(oA=A.logging)!==null&&oA!==void 0?oA:!0,cache:A.cache},n),i={windowWidth:($=A.windowWidth)!==null&&$!==void 0?$:t.innerWidth,windowHeight:(G=A.windowHeight)!==null&&G!==void 0?G:t.innerHeight,scrollX:(j=A.scrollX)!==null&&j!==void 0?j:t.pageXOffset,scrollY:(IA=A.scrollY)!==null&&IA!==void 0?IA:t.pageYOffset},o=new MA(i.scrollX,i.scrollY,i.windowWidth,i.windowHeight),a=new Jw(s,o),l=(aA=A.foreignObjectRendering)!==null&&aA!==void 0?aA:!1,c={allowTaint:(BA=A.allowTaint)!==null&&BA!==void 0?BA:!1,onclone:A.onclone,ignoreElements:A.ignoreElements,inlineImages:l,copyStyles:l},a.logger.debug("Starting document clone with size "+o.width+"x"+o.height+" scrolled to "+-o.left+","+-o.top),u=new Xc(a,r,c),d=u.clonedReferenceElement,d?[4,u.toIFrame(e,o)]:[2,Promise.reject("Unable to find element in cloned iframe")];case 1:return B=xA.sent(),g=Ws(d)||$f(d)?Eu(d.ownerDocument):Tr(a,d),f=g.width,m=g.height,F=g.left,Q=g.top,y=$w(a,d,A.backgroundColor),L={canvas:A.canvas,backgroundColor:y,scale:(TA=(de=A.scale)!==null&&de!==void 0?de:t.devicePixelRatio)!==null&&TA!==void 0?TA:1,x:((YA=A.x)!==null&&YA!==void 0?YA:0)+F,y:((ue=A.y)!==null&&ue!==void 0?ue:0)+Q,width:(he=A.width)!==null&&he!==void 0?he:Math.ceil(f),height:(KA=A.height)!==null&&KA!==void 0?KA:Math.ceil(m)},l?(a.logger.debug("Document cloned, using foreign object rendering"),R=new Ow(a,L),[4,R.render(d)]):[3,3];case 2:return I=xA.sent(),[3,5];case 3:return a.logger.debug("Document cloned, element located at "+F+","+Q+" with size "+f+"x"+m+" using computed rendering"),a.logger.debug("Starting DOM parsing"),E=Hc(a,d),y===E.styles.backgroundColor&&(E.styles.backgroundColor=RA.TRANSPARENT),a.logger.debug("Starting renderer for element at "+L.x+","+L.y+" with size "+L.width+"x"+L.height),R=new xw(a,L),[4,R.render(E)];case 4:I=xA.sent(),xA.label=5;case 5:return(!((ge=A.removeContainer)!==null&&ge!==void 0)||ge)&&(Xc.destroy(B)||a.logger.error("Cannot detach cloned iframe as it is not in the DOM anymore")),a.logger.debug("Finished rendering"),[2,I]}})})},$w=function(r,A,e){var t=A.ownerDocument,n=t.documentElement?it(r,getComputedStyle(t.documentElement).backgroundColor):RA.TRANSPARENT,s=t.body?it(r,getComputedStyle(t.body).backgroundColor):RA.TRANSPARENT,i=typeof e=="string"?it(r,e):e===null?RA.TRANSPARENT:4294967295;return A===t.documentElement?WA(n)?WA(s)?i:s:n:i};const Mt=class Mt extends p.EngineObject{constructor(A,e){super(A,e),this.ad(new w.ObjResettingWithEvent(A.renderInUEChanged,()=>A.renderInUE?new sd(A,e):new nd(A,e)))}};C(Mt,"type",Mt.register("ESUeViewer",p.ESGeoDiv.type,Mt));let ei=Mt;class nd extends w.Destroyable{constructor(e,t){super();C(this,"_screenPosition",this.disposeVar(w.reactArrayWithUndefined(void 0)));const n=t.viewer;if(!n){console.warn("viewer is undefined!");return}const s=this.disposeVar(new p.ESTextLabel);s.parentID=e.id,e.components.disposableAdd(s,!0),s.show=!1,this.dispose(w.bind([s,"position"],[e,"position"])),this.dispose(w.bind([s,"rotation"],[e,"rotation"])),this.dispose(w.bind([s,"flyToParam"],[e,"flyToParam"])),this.dispose(w.bind([s,"flyInParam"],[e,"flyInParam"])),this.dispose(e.calcFlyToParamEvent.disposableOn(()=>{$A(n,s.id)})),this.dispose(e.calcFlyInParamEvent.disposableOn(async()=>{if(!t.actived)return;const a=await t.getCurrentCameraInfo();if(!a)return;const{position:l,rotation:c}=a;e.flyInParam={position:l,rotation:c,flyDuration:1}})),this.dispose(e.smoothMoveEvent.disposableOn((a,l)=>{_e(n,s.id,a,l)})),this.dispose(e.smoothMoveWithRotationEvent.disposableOn((a,l,c)=>{ke(n,s.id,a,l,c)})),this.dispose(e.smoothMoveOnGroundEvent.disposableOn((a,l,c,u)=>{Ge(n,s.id,a,l,u,c)})),this.dispose(e.smoothMoveWithRotationOnGroundEvent.disposableOn((a,l,c,u,d)=>{Ne(n,s.id,a,l,c,u,d)})),this.dispose(e.flyToEvent.disposableOn((a,l)=>{s.flyTo(a)})),this.dispose(e.flyInEvent.don(a=>{s.flyIn(a)}));const i=this._screenPosition,o=this.disposeVar(new p.ESCustomDiv);o.parentID=e.id,t.add(o),this.dispose(()=>t.delete(o)),this.dispose(w.bind([o,"allowPicking"],[e,"allowPicking"]));{const a=this.disposeVar(w.createAnimateFrame()),l=()=>{e.show?a.restart(void 0,async()=>{if(!e.position)return;const c=await t.lonLatAltToScreenPosition(e.position);if(!this.isDestroyed())if(!c)this._screenPosition.value=void 0;else{const[u,d]=c;u===-1&&d===-1?this._screenPosition.value=void 0:this._screenPosition.value=[u,d]}}):a.cancel()};l(),this.dispose(e.showChanged.disposableOn(l))}{const a=()=>class extends w.Destroyable{constructor(d,B,g){if(super(),this._subContainer=d,!g)return;if(!e.instanceClass)throw new Error("!sceneObject.instanceClass");const f=new w.PosFloatDiv,m=f.element;this._subContainer.appendChild(m),this.dispose(()=>this._subContainer.removeChild(m)),m.onclick=F=>{(e.allowPicking??!1)&&e.pickedEvent.emit(new p.ESJPickedResult({div:m,pointerEvent:F},e,void 0,void 0,void 0,[F.x,F.y]))};{const F=()=>{e.editing?m.children[0].style.pointerEvents="none":m.children[0].style.pointerEvents="all"};F(),this.d(e.editingChanged.don(F))}{const F=()=>{const y=e.show;i.value&&y?(f.show=!0,f.winPos=[...i.value]):(f.show=!1,f.winPos=[0,0])};F();const Q=this.disposeVar(w.createNextAnimateFrameEvent(e.showChanged,i.changed));this.dispose(Q.disposableOn(F))}{const F=()=>{const[Q,y]=e.anchor??p.ESGeoDiv.defaults.anchor;f.originRatioX=Q,f.originRatioY=y};F(),this.dispose(e.anchorChanged.disposableOn(F))}{const F=()=>{f.opacity=e.opacity??p.ESGeoDiv.defaults.opacity};F(),this.dispose(e.opacityChanged.disposableOn(F))}this.disposeVar(new e.instanceClass(f.contentDiv,e,g))}},l=()=>{try{e.instanceClass?o.instanceClass=a():o.instanceClass=void 0}catch(u){console.error(u)}};l();const c=this.dv(w.createNextAnimateFrameEvent(e.instanceClassChanged,e.opacityChanged,e.anchorChanged,e.editingChanged,e.showChanged,e.allowPickingChanged));this.d(c.don(l))}}get screenPosition(){return this._screenPosition.value}get screenPositionChanged(){return this._screenPosition.changed}set screenPosition(e){this._screenPosition.value=e}}class sd extends w.Destroyable{constructor(e,t){super();C(this,"_imageLabel");C(this,"_hasClassDivAndPos",{});this._imageLabel=this.dv(new p.ESImageLabel),this._imageLabel.isHoverZoom=!1,this._imageLabel.parentID=e.id;const n=t.viewer;if(!n){console.warn("viewer is undefined!");return}const s=this._imageLabel;e.components.disposableAdd(s,!0);{const i=()=>{if(!n)return;if(!e.instanceClass)throw new Error("!sceneObject.instanceClass");const l=document.createElement("div"),c=this.dv(new e.instanceClass(l,e,t))._container;if(c.style.opacity=e.opacity.toString()??p.ESGeoDiv.defaults.opacity,c.style.position="fixed",c.style.zIndex="-1",c.style.top="0px",!document.body.contains(c)){document.body.appendChild(c);let d=c?c.querySelectorAll("*[class]"):[];for(let B=0;B<d.length;B++){const g=d[B];var u=g.getBoundingClientRect();this._hasClassDivAndPos[g.className]=[g.offsetLeft,g.offsetTop,g.offsetLeft+u.width,g.offsetTop+u.height]}}zw(c,{backgroundColor:null,allowTaint:!0,useCORS:!0,width:c.offsetWidth,height:c.offsetHeight,scale:1}).then(d=>{document.body.contains(c)&&document.body.removeChild(c),s.url=d.toDataURL(),s.show=e.show}).catch(()=>{document.body.contains(c)&&document.body.removeChild(c)})},o=()=>{try{e.instanceClass?i():(s.url="",s.show=!1)}catch(l){console.error(l)}};o();const a=this.dv(w.createNextAnimateFrameEvent(e.instanceClassChanged,e.opacityChanged));this.d(a.don(o))}{const i=()=>{s.show=e.show};s.show=!1,this.ad(e.showChanged.don(i))}this.d(w.track([s,"anchor"],[e,"anchor"])),this.d(w.bind([s,"position"],[e,"position"])),this.d(w.bind([s,"rotation"],[e,"rotation"])),this.d(w.bind([s,"flyToParam"],[e,"flyToParam"])),this.d(w.bind([s,"flyInParam"],[e,"flyInParam"])),this.d(w.bind([s,"allowPicking"],[e,"allowPicking"])),this.d(w.bind([s,"scale"],[e,"scale"])),this.d(w.track([s,"minVisibleDistance"],[e,"minVisibleDistance"])),this.d(w.track([s,"maxVisibleDistance"],[e,"maxVisibleDistance"])),this.ad(e.automaticLandingEvent.don(()=>{s.automaticLanding()})),this.d(t.widgetEvent.don(i=>{if(i.objId!==this._imageLabel.id)return;const{type:o,add:a}=i;if(o==="leftClick"&&a){const l=(a==null?void 0:a.classNames)??[],c=Object.keys(this._hasClassDivAndPos);for(let u=0;u<c.length;u++){const d=c[u];let B=this._hasClassDivAndPos[d];a&&a.mouseRelativePos&&a.mouseRelativePos[0]>=B[0]&&a.mouseRelativePos[0]<=B[2]&&a.mouseRelativePos[1]>=B[1]&&a.mouseRelativePos[1]<=B[3]&&l.push(d)}a.classNames=l}e.widgetEvent.emit({type:o,add:a})})),this.d(e.calcFlyToParamEvent.don(()=>{$A(n,s.id)})),this.d(e.calcFlyInParamEvent.don(()=>{const i=t.getCurrentCameraInfo();if(!i)return;const{position:o,rotation:a}=i;e.flyInParam={position:o,rotation:a,flyDuration:1}})),this.d(e.smoothMoveEvent.don((i,o)=>{_e(n,s.id,i,o)})),this.d(e.smoothMoveWithRotationEvent.don((i,o,a)=>{ke(n,s.id,i,o,a)})),this.d(e.smoothMoveOnGroundEvent.don((i,o,a,l)=>{Ge(n,s.id,i,o,l,a)})),this.d(e.smoothMoveWithRotationOnGroundEvent.don((i,o,a,l,c)=>{Ne(n,s.id,i,o,a,l,c)})),this.d(e.flyToEvent.don((i,o)=>{s.flyTo(i)})),this.d(e.flyInEvent.don(i=>{s.flyIn(i)}))}}const Dt=class Dt extends dA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}this.d(A.flyToFeatureIndexEvent.don((n,s)=>{t.callUeFunc({f:"flyToFeatureIndex",p:{id:A.id,index:n,duration:s}})})),this.d(A.flyToFeatureEvent.don((n,s,i)=>{t.callUeFunc({f:"flyToFeature",p:{id:A.id,key:n,value:s,duration:i}})}))}};C(Dt,"type",Dt.register("ESUeViewer",p.ESGeoJson.type,Dt));let ti=Dt;const Rt=class Rt extends nA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(Rt,"type",Rt.register("ESUeViewer",p.ESGeoLineString.type,Rt));let Fn=Rt;const Pt=class Pt extends nA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(Pt,"type",Pt.register("ESUeViewer",p.ESGeoRectangle.type,Pt));let ri=Pt;const Kt=class Kt extends uA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(Kt,"type",Kt.register("ESUeViewer",p.ESGeoWater.type,Kt));let ni=Kt;const oe=class oe extends x{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}this.d(A.setNodePositionEvent.don((n,s)=>{io(t,A.id,n,s)})),this.d(A.setNodeRotationEvent.don((n,s)=>{oo(t,A.id,n,s)})),this.d(A.setNodeScaleEvent.don((n,s)=>{ao(t,A.id,n,s)}))}};C(oe,"forceUeUpdateProps",[...x.forceUeUpdateProps,"url"]),C(oe,"propValFuncs",{...x.propValFuncs,url:A=>typeof A=="string"?p.ESSceneObject.context.getStrFromEnv(p.rpToap(A)):(A.url=p.ESSceneObject.context.getStrFromEnv(p.rpToap(A.url)),A),czmMaximumScale:null,czmMinimumPixelSize:null,czmNativeScale:null,czmColor:null}),C(oe,"type",oe.register("ESUeViewer",p.ESGltfModel.type,oe));let si=oe;const xt=class xt extends nA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(xt,"type",xt.register("ESUeViewer",p.ESHeightMeasurement.type,xt));let ii=xt;const kt=class kt extends x{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}const n=async(i,o,a,l)=>{const{viewer:c}=i;if(!c){console.error("AIMoveTo: ueViewer.viewer is undefined");return}const u=await c.callUeFunc({f:"AIMoveTo",p:{id:o,Destination:a,Time:l}});return u.error&&console.error("AIMoveTo:",u.error),u};this.d(A.aiMoveToEvent.don((i,o)=>{n(e,A.id,i,o)}));const s=async(i,o)=>{const{viewer:a}=i;if(!a){console.error("StopAIMove: ueViewer.viewer is undefined");return}const l=await a.callUeFunc({f:"StopAIMove",p:{id:o}});return l.error&&console.error("StopAIMove:",l.error),l};this.d(A.stopAIMoveEvent.don(()=>{s(e,A.id)}))}};C(kt,"type",kt.register("ESUeViewer",p.ESHuman.type,kt));let oi=kt;const ae=class ae extends UA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}A.anchor=[.5,1]}};C(ae,"type",ae.register("ESUeViewer",p.ESImageLabel.type,ae)),C(ae,"forceUeUpdateProps",[...UA.forceUeUpdateProps,"url"]),C(ae,"propValFuncs",{...UA.propValFuncs,url:A=>typeof A=="string"?p.ESSceneObject.context.getStrFromEnv(p.rpToap(A)):(A.url=p.ESSceneObject.context.getStrFromEnv(p.rpToap(A.url)),A)});let ai=ae;const Gt=class Gt extends x{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(Gt,"type",Gt.register("ESUeViewer",p.ESLevelRuntimeModel.type,Gt));let li=Gt;const Nt=class Nt extends Er{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(Nt,"type",Nt.register("ESUeViewer",p.ESLocalCircle.type,Nt));let ci=Nt;const _t=class _t extends dA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(_t,"type",_t.register("ESUeViewer",p.ESLocalPolygonZ.type,_t));let di=_t;const Vt=class Vt extends Er{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(Vt,"type",Vt.register("ESUeViewer",p.ESLocalRectangle.type,Vt));let ui=Vt;const Ot=class Ot extends x{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(Ot,"type",Ot.register("ESUeViewer",p.ESLocalSkyBox.type,Ot));let hi=Ot;const Wt=class Wt extends x{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(Wt,"type",Wt.register("ESUeViewer",p.ESLocationMeasurement.type,Wt));let gi=Wt;const Xt=class Xt extends nA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(Xt,"type",Xt.register("ESUeViewer",p.ESPipeFence.type,Xt));let Bi=Xt;const Jt=class Jt extends Fn{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(Jt,"type",Jt.register("ESUeViewer",p.ESPipeline.type,Jt));let fi=Jt;const zt=class zt extends yr{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}this.d(A.highlightFeatureEvent.don(n=>{const s=typeof n=="number"?n.toString():n;to(t,A.id,s)})),this.d(A.highlightFeatureAndFlyToEvent.don((n,s,i,o)=>{const a=typeof n=="number"?n.toString():n;ro(t,A.id,a,o??1)})),this.d(A.setLayerVisibleEvent.don((n,s)=>{let i="";typeof s!="string"?i=JSON.stringify(s):i=s,no(t,A.id,i)})),this.d(A.setLayerColorEvent.don((n,s)=>{let i="";typeof s!="string"?i=JSON.stringify(s):i=s,so(t,A.id,i)}))}};C(zt,"type",zt.register("ESUeViewer",p.ESPipeserTileset.type,zt));let wi=zt;const Yt=class Yt extends uA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(Yt,"type",Yt.register("ESUeViewer",p.ESPit.type,Yt));let pi=Yt;const $t=class $t extends UA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}this.ad(A.getInitialStyleEvent.don(async()=>{try{const n=await t.callUeFunc({f:"GetInitialStyle",p:{id:A.id}});n.error!=""&&console.error("getInitialStyleEvent:",n.error),A.initialStyle.value=structuredClone(n.re)}catch(n){console.error("getInitialStyleEvent:",n),A.initialStyle.value=void 0}}))}};C($t,"type",$t.register("ESUeViewer",p.ESPoi2D.type,$t));let Ci=$t;const Zt=class Zt extends x{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(Zt,"type",Zt.register("ESUeViewer",p.ESPoi3D.type,Zt));let vi=Zt;const le=class le extends dA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(le,"type",le.register("ESUeViewer",p.ESPoiTileset.type,le)),C(le,"forceUeUpdateProps",[...dA.forceUeUpdateProps,"url"]),C(le,"propValFuncs",{...dA.propValFuncs,url:A=>typeof A=="string"?p.ESSceneObject.context.getStrFromEnv(A):(A.url=p.ESSceneObject.context.getStrFromEnv(A.url),A)});let mi=le;const qt=class qt extends nA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(qt,"type",qt.register("ESUeViewer",p.ESPolygonFence.type,qt));let Fi=qt;const De=class De extends uA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(De,"type",De.register("ESUeViewer",p.ESPolygonFlattenedPlane.type,De)),C(De,"propValFuncs",{...uA.propValFuncs,targetID:A=>{if(!A)return"";const e=p.ESSceneObject.getSceneObject(A);return e?(e.components.main??e).id:A}});let Qi=De;const jt=class jt extends uA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(jt,"type",jt.register("ESUeViewer",p.ESPolygonWithHole.type,jt));let Ui=jt;const Ar=class Ar extends jA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}this.d(()=>{A.ids=[]}),this.d(A.highlightInner3DtilesetEvent.don(n=>{n.highlight=!0})),this.d(A.removeHighlightInner3DtilesetEvent.don(n=>{n.highlight=!1}));{const n=o=>{o=o.toLocaleLowerCase();let a=[255,255,255,1];if(o.startsWith("#")){if(o.length===4){let l=parseInt(o[1]+o[1],16),c=parseInt(o[2]+o[2],16),u=parseInt(o[3]+o[3],16);a=[l,c,u,1]}else if(o.length===7){let l=parseInt(o.substring(1,3),16),c=parseInt(o.substring(3,5),16),u=parseInt(o.substring(5,7),16);a=[l,c,u,1]}}else if(o.startsWith("rgba")){let l=o.match(/^rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*([\d.]+)\s*\)$/);if(l){let c=parseInt(l[1]),u=parseInt(l[2]),d=parseInt(l[3]),B=parseFloat(l[4]);a=[c,u,d,B]}}else if(o.startsWith("rgb")){let l=o.match(/^rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/);if(l){let c=parseInt(l[1]),u=parseInt(l[2]),d=parseInt(l[3]);a=[c,u,d,1]}}else console.error("color类型只能为#rrggbb、#rgb、rgba(r,g,b,a)、rgb(r,g,b)");return[a[0]/255,a[1]/255,a[2]/255,a[3]]},s=()=>{const o=A.layerConfig;if(!o)return;const a=[];o.forEach(l=>{o.filter(u=>u.dataset==l.dataset).length==1?a.push({condition:[{field:"dataset",op:"==",value:l.dataset}],color:n(l.value.color??"rgb(255,255,255)"),show:l.value.visible}):a.push({condition:[{field:"layer",op:"==",value:l.layer},{field:"dataset",op:"==",value:l.dataset}],color:n(l.value.color??"rgb(255,255,255)"),show:l.value.visible})}),A.setFeatureStyle(a)};s();const i=this.dv(w.createNextAnimateFrameEvent(A.layerConfigChanged,A.colorBlendModeChanged));this.d(i.don(()=>{s()}))}}};C(Ar,"type",Ar.register("ESUeViewer",p.ESRtsTileset.type,Ar));let Ei=Ar;const er=class er extends dA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}this.d(A.addTreesEvent.don(n=>{p.addTreesCallFunc(e,A.id,n)})),this.d(A.removeAllTreesEvent.don(()=>{p.removeAllTreesCallFunc(e,A.id)})),this.d(A.updateTreeParamsEvent.don(n=>{p.updateTreeParamsCallFunc(e,A.id,n)})),this.d(A.cutDownTreesEvent.don((n,s)=>{p.cutDownTreesCallFunc(e,A.id,n,s)})),this.d(A.growthSimulationEvent.don((n,s,i)=>{p.growthSimulationCallFunc(e,A.id,n,s,i)}))}};C(er,"type",er.register("ESUeViewer",p.ESSeparateFoliage.type,er));let yi=er;const tr=class tr extends x{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(tr,"type",tr.register("ESUeViewer",p.ESSubmergingAnalysis.type,tr));let Si=tr;const rr=class rr extends uA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}this.d(A.startEvent.don(()=>{t.callUeFunc({f:"Start",p:{id:A.id}})})),this.d(A.stopEvent.don(()=>{t.callUeFunc({f:"Stop",p:{id:A.id}})}))}};C(rr,"type",rr.register("ESUeViewer",p.ESSunshineAnalysis.type,rr));let Ii=rr;const nr=class nr extends uA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}this.d(A.startEvent.don(()=>{t.callUeFunc({f:"Start",p:{id:A.id}})}))}};C(nr,"type",nr.register("ESUeViewer",p.ESSurfaceAreaMeasurement.type,nr));let Ti=nr;const sr=class sr extends UA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(sr,"type",sr.register("ESUeViewer",p.ESTextLabel.type,sr));let Hi=sr;const Re=class Re extends UA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}this.d(A.callFunctionEvent.don(async(n,s)=>{const i=await En(t,A.id,n,s);A.__callFunctionResultEvent.emit(i)}))}};C(Re,"type",Re.register("ESUeViewer",p.ESUEWidget.type,Re)),C(Re,"propValFuncs",{...UA.propValFuncs,info:A=>JSON.stringify(A??{})});let Li=Re;const id=r=>{switch(r){case 0:return"成功绑定";case 1:return"解绑之前的内容,成功绑定";case 2:return"未搜索到ActorTag,无法绑定";case 3:return"搜索到ActorTag但对应的Actor不是场景原有的,而是新建的,无法绑定";case 4:return"搜索到ActorTag对应的Actor是地形或3DTileset,无法绑定";default:return"未知错误"}},Zw=r=>{switch(r){case 0:return"创建成功";case 1:return"未找到对应的资源,无法创建";case 2:return"Id与场景中现有的ActorTag重复,创建后可能出现问题,创建失败";default:return"未知错误"}},ir=class ir extends p.EngineObject{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn(`${A.id} UeESUnrealActor viewer is undefined!`);return}this.d(()=>{Yi(t,A.id)});const n=async()=>{l()||await t.callUeFunc({f:"update",p:{id:A.id,name:A.name,show:A.show,rotation:A.rotation,flyToParam:A.flyToParam??p.defaultFlyToParam,flyInParam:A.flyInParam??p.defaultFlyInParam,highlight:A.highlight,collision:A.collision,scale:A.scale,minVisibleDistance:A.minVisibleDistance,maxVisibleDistance:A.maxVisibleDistance}})},s=this.dv(w.createNextAnimateFrameEvent(A.showChanged,A.nameChanged,A.rotationChanged,A.flyToParamChanged,A.flyInParamChanged,A.highlightChanged,A.collisionChanged,A.scaleChanged,A.minVisibleDistanceChanged,A.maxVisibleDistanceChanged));this.d(s.don(n)),this.d(A.flushEvent.don(()=>s.flush()));let i,o;const a=async()=>{l()||(await t.callUeFunc({f:"update",p:{id:A.id,position:A.position}}),(e.debug??!1)&&console.log(`updatePostion:${A.position},actorTag:${A.actorTag},actorClass:${A.actorClass}`))},l=()=>!i&&!o?(console.warn(`${A.id} 未绑定ActorTag或未创建ActorClass!`),!0):!1,c=async()=>{const{id:d}=A,B=await e.unBindActorByID(d);B&&B.error!==""&&console.warn(`${A.id} UeESUnrealActor UnBindActorByID: ${B.error}`),i=void 0;const g=await t.callUeFunc({f:"destroy",p:{id:d}});if(g&&g.error!==""){console.warn(`${A.id} UeESUnrealActor DestroyActorByID: ${g.error}`);return}o=void 0},u=this.dv(w.react({type:"ActorClass",actorClass:"default"}));{const d=this.dv(w.createNextAnimateFrameEvent(A.actorClassChanged,A.actorTagChanged)),B=async()=>{A.actorTag!==""?u.value={type:"ActorTag",actorTag:A.actorTag}:u.value={type:"ActorClass",actorClass:A.actorClass===""?"default":A.actorClass}};B(),this.d(d.don(B)),this.d(A.flushEvent.don(()=>d.flush()))}{const d=this.dv(w.createProcessingFromAsyncFunc(async g=>{if(await g.promise(c()),u.value.type==="ActorTag"){const{actorTag:f}=u.value;await g.promise(c());try{A.lastActorStatus="null";const m=await g.promise(e.bindActorByTag(A.id,f));if(!m)return;if(m.error!==""){console.warn(`${A.id} UeESUnrealActor BindActorByTag:${f},${m.error}`);return}if(m.re.type===0)A.lastActorStatus="bound",i=f;else if(m.re.type===1)A.lastActorStatus="bound",i=f,console.warn(`${A.id} UeESUnrealActor BindActorByTag:${f},${id(m.re.type)}`);else{i=void 0,console.warn(`${A.id} UeESUnrealActor BindActorByTag error:${f}, ${id(m.re.type)}`);return}}catch(m){console.warn(`${A.id} UeESUnrealActor BindActorByTag catch error:${f}, ${m}`);return}}else if(u.value.type==="ActorClass"){const{actorClass:f}=u.value;try{const m=await g.promise(e.createActorByClass(A.id,f));if(!m)return;if(m.error!==""){console.warn(`${A.id} UeESUnrealActor CreateActorByClass error :${f}, ${m.error}`);return}if(m.re.type===0)A.lastActorStatus="created",o=f;else{console.warn(`${A.id} UeESUnrealActor CreateActorByClass error type :${f},${Zw(m.re.type)}`);return}}catch(m){console.warn(`${A.id} UeESUnrealActor CreateActorByClass error catch :${f}, ${JSON.stringify(m)}`);return}}await g.promise(n()),await g.promise(a())})),B=async()=>{d.restart()};B(),this.d(u.changed.don(B))}this.d(A.positionChanged.don(a)),this.d(A.callFunctionEvent.don(async(d,B)=>{if(l()){A.__callFunctionResultEvent.emit(void 0);return}const g=await En(t,A.id,d,B);A.__callFunctionResultEvent.emit(g)})),this.d(A.smoothMoveEvent.don((d,B)=>{l()||_e(t,A.id,d,B)})),this.d(A.smoothMoveWithRotationEvent.don((d,B,g)=>{l()||ke(t,A.id,d,B,g)})),this.d(A.smoothMoveOnGroundEvent.don((d,B,g,f)=>{l()||Ge(t,A.id,d,B,f,g)})),this.d(A.smoothMoveWithRotationOnGroundEvent.don((d,B,g,f,m)=>{l()||Ne(t,A.id,d,B,g,f,m)})),this.d(A.automaticLandingEvent.don(d=>{if(l())return;const B=[A.position[0],A.position[1]];e.getHeightByLonLat(A.position[0],A.position[1],"Visibility").then(g=>{g!==null&&(A.position=[...B,g],A.collision=d)})})),this.d(A.flyToEvent.don(async(d,B)=>{if(l())return;const g=await Be(t,A.id,d);let f="over";g===void 0?f="error":g.endType===0?f="over":g.endType===1&&(f="cancelled"),A.flyOverEvent.emit(B,f,e)})),this.d(A.calcFlyToParamEvent.don(()=>{l()||$A(t,A.id)})),this.d(A.calcFlyInParamEvent.don(async()=>{if(!e.actived)return;const d=await e.getCurrentCameraInfo();if(!d)return;const{position:B,rotation:g}=d;A.flyInParam={position:B,rotation:g,flyDuration:1}})),this.d(e.propChanged.don(d=>{l()||d.objId===A.id&&Object.keys(d.props).forEach(B=>{const g=d.props[B]===null?void 0:d.props[B];A[B]=g})}))}};C(ir,"type",ir.register("ESUeViewer",p.ESUnrealActor.type,ir));let bi=ir;const or=class or extends x{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(or,"type",or.register("ESUeViewer",p.ESVideoFusion.type,or));let Mi=or;const ar=class ar extends x{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(ar,"type",ar.register("ESUeViewer",p.ESViewShed.type,ar));let Di=ar;const lr=class lr extends nA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is underfined!");return}}};C(lr,"type",lr.register("ESUeViewer",p.ESVisibilityAnalysis.type,lr));let Ri=lr;const cr=class cr extends uA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}this.ad(w.track([A,"volume"],[A,"cutAndFillVolume"])),this.d(A.startEvent.don(()=>{t.callUeFunc({f:"Start",p:{id:A.id}})})),this.d(A.clearEvent.don(()=>{t.callUeFunc({f:"Clear",p:{id:A.id}})}))}};C(cr,"type",cr.register("ESUeViewer",p.ESVolumeMeasurement.type,cr));let Pi=cr;const Pe=class Pe extends UA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(Pe,"type",Pe.register("ESUeViewer",p.ESWidget.type,Pe)),C(Pe,"propValFuncs",{...UA.propValFuncs,info:A=>JSON.stringify(A??{})});let Ki=Pe;const dr=class dr extends p.EngineObject{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}A.poi.actorTag=A.human.id,A.poi.positionOffset=[0,0,A.poiOffsetHeight-.8],this.d(A.poiOffsetHeightChanged.don(()=>{A.poi.positionOffset=[0,0,A.poiOffsetHeight-.8]})),this.d(()=>{A.poi.actorTag=""})}};C(dr,"type",dr.register("ESUeViewer",p.ESHumanPoi.type,dr));let xi=dr;p.ESSceneObject.context.getStrFromEnv(p.ESNavigator.defaults.imgUrl);const ur=class ur extends p.EngineObject{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}const n=this.disposeVar(new p.ESCustomDiv);e.add(n),this.dispose(()=>e.delete(n)),this.dispose(w.track([n,"show"],[A,"show"])),n.instanceClass=class extends w.Destroyable{constructor(i,o,a){super(),this._subContainer=i;const l=document.createElement("div");this._subContainer.appendChild(l),this.dispose(()=>this._subContainer.removeChild(l));{const d=async()=>{const B=await e.getCurrentCameraInfo(),g=B==null?void 0:B.position,m=[...B==null?void 0:B.rotation];m[0]=360,e.flyIn(g,m)};l.addEventListener("click",d),l.style.cursor="pointer",this.dispose(()=>l.removeEventListener("click",d))}{const d=()=>{l.style.width=`${A.cssSize?A.cssSize:p.ESNavigator.defaults.cssSize}px`,l.style.height=`${A.cssSize?A.cssSize:p.ESNavigator.defaults.cssSize}px`};d(),A.dispose(A.cssSizeChanged.disposableOn(d))}l.style.position="fixed";{const d=()=>{l.style.top=`${A.cssPosition?A.cssPosition[0]:p.ESNavigator.defaults.cssPosition[0]}px`,l.style.right=`${A.cssPosition?A.cssPosition[1]:p.ESNavigator.defaults.cssPosition[1]}px`};d(),A.dispose(A.cssPositionChanged.disposableOn(d))}l.style.transition=" right 0.4s linear",l.style.cursor="pointer";const c=document.createElement("div");l.appendChild(c),this.dispose(()=>l.removeChild(c)),c.style.width="100%",c.style.height="100%",c.style.position="relative";const u=document.createElement("img");c.appendChild(u),this.dispose(()=>c.removeChild(u)),u.style.width="100%",u.style.height="100%",u.style.border="none";{const d=()=>u.src=A.imgUrl;d(),A.dispose(A.imgUrlChanged.disposableOn(d))}{const d=()=>{const m=-e.getCurrentCameraInfo().rotation[0];u.style.transform=`rotate(${m}deg)`};let B;const g=async()=>{d(),A.show?(l.style.display="block",B=setInterval(()=>{d()},1e3)):(l.style.display="none",clearInterval(B))};this.dispose(A.showChanged.disposableOn(g)),g(),this.dispose(()=>clearInterval(B))}u.style.transformOrigin="50% 50%"}}}};C(ur,"type",ur.register("ESUeViewer",p.ESNavigator.type,ur));let ki=ur;const ce=class ce extends nA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}{const n=()=>{let s=A.materialMode==="blue"?"multipleArrows":A.materialMode==="purple"?"singleArrow":A.materialMode;t.callUeFunc({f:"update",p:{id:A.id,materialMode:s}})};this.dispose(A.materialModeChanged.disposableOn(n)),this.dispose(A.createdEvent.disposableOn(n))}}};C(ce,"type",ce.register("ESUeViewer",p.ESPath.type,ce)),C(ce,"forceUeUpdateProps",[...nA.forceUeUpdateProps]),C(ce,"propValFuncs",{...nA.propValFuncs,materialMode:null});let Gi=ce;async function qw(r){navigator.clipboard.writeText(r).then(function(){console.log("复制成功")},function(A){console.log("复制失败")})}const hr=class hr extends p.EngineObject{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}const n=this.disposeVar(new p.ESCustomDiv);e.add(n),this.dispose(()=>e.delete(n)),n.instanceClass=class extends w.Destroyable{constructor(i,o,a){if(super(),this._subContainer=i,!a||!(a instanceof bA))return;const l=document.createElement("div");this._subContainer.appendChild(l),this.dispose(()=>this._subContainer.removeChild(l)),l.style.width="100%",l.style.position="absolute",l.style.height=`${p.ESViewerStatusBar.defaults.height}px`,l.style.left="0",l.style.bottom="0",l.style.color="#fff",l.style.padding="0 20px 0 0",l.style.boxSizing="border-box",l.style.lineHeight=`${p.ESViewerStatusBar.defaults.height}px`,l.style.zIndex="100",l.style.alignContent="center",l.style.justifyContent="space-between";const c=document.createElement("span");l.appendChild(c),this.dispose(()=>l.removeChild(c));const u=document.createElement("span");c.appendChild(u),this.dispose(()=>c.removeChild(u));const d=document.createElement("span");c.appendChild(d),d.addEventListener("dblclick",function(){let g=d.innerHTML;g.startsWith("鼠标位置")&&(g=g.slice(5)),qw(g)}),d.style.cursor="pointer",this.dispose(()=>c.removeChild(d));const B=document.createElement("span");l.appendChild(B),this.dispose(()=>l.removeChild(B));{const g=()=>{l.style.height=(A.height??p.ESViewerStatusBar.defaults.height)+"px",l.style.lineHeight=(A.height??p.ESViewerStatusBar.defaults.height)+"px"};this.dispose(A.heightChanged.disposableOn(g)),g()}{const g=()=>{l.style.fontSize=(A.fontSize??p.ESViewerStatusBar.defaults.fontSize)+"px"};this.dispose(A.fontSizeChanged.disposableOn(g)),g()}{const g=()=>{A.bgColor?l.style.background=`rgba(${A.bgColor[0]*255},${A.bgColor[1]*255},${A.bgColor[2]*255},${A.bgColor[3]})`:l.style.background=`rgba(${p.ESViewerStatusBar.defaults.bgColor[0]},${p.ESViewerStatusBar.defaults.bgColor[1]},${p.ESViewerStatusBar.defaults.bgColor[2]},${p.ESViewerStatusBar.defaults.bgColor[3]})`};this.dispose(A.bgColorChanged.disposableOn(g)),g()}a.getVersion().then(g=>{g&&(B.innerText=`Ue 版本 : ${g[0]} `)}).catch(g=>{console.log(g)});{const g=()=>{let F="",Q="";F+=`帧率:${a.getFPS().toFixed(0)}FPS`,u.innerText=F;const y=e.getCurrentCameraInfo();F+=` 经度: ${y.position[0].toFixed(5)}° 纬度: ${y.position[1].toFixed(5)}° 高度: ${y.position[2].toFixed(2)}米 偏航角: ${y.rotation[0].toFixed(2)}° 俯仰角: ${y.rotation[1].toFixed(2)}° 翻滚角:${y.rotation[2].toFixed(2)}° `,u.innerText=F,e.pick().then(L=>{if(L){const{pickResult:I}=L;if(I&&I.position){const{position:E}=I;Q+=`鼠标位置:${E[0].toFixed(5)}° ${E[1].toFixed(5)}° ${E[2].toFixed(2)}m`}else Q+="暂时无法获取鼠标位置...";d.innerText=Q}}).catch(L=>{console.log(L)})};let f;const m=async()=>{g(),A.show?(l.style.display="flex",f=setInterval(()=>{g()},1e3)):(l.style.display="none",clearInterval(f))};this.dispose(A.showChanged.disposableOn(m)),m(),this.dispose(()=>clearInterval(f))}}}}};C(hr,"type",hr.register("ESUeViewer",p.ESViewerStatusBar.type,hr));let Ni=hr;const gr=class gr extends x{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(gr,"type",gr.register("ESUeViewer",p.ESGaussianSplatting.type,gr));let _i=gr;const Br=class Br extends jA{constructor(e,t){super(e,t);C(this,"_es3DTileset",this.dv(new p.ES3DTileset));if(!t.viewer){console.warn("viewer is undefined!");return}this.es3DTileset.parentID=e.id;{const s=this._es3DTileset;e.components.disposableAdd(s,!0),this.d(w.track([s,"allowPicking"],[e,"allowPicking"])),this.d(w.track([s,"collision"],[e,"collision"])),this.d(w.bind([s,"flyToParam"],[e,"flyToParam"])),this.d(w.bind([s,"flyToParam"],[e,"flyToParam"])),this.d(w.track([s,"url"],[e,"url"])),this.d(w.track([s,"actorTag"],[e,"actorTag"])),this.d(w.track([s,"materialMode"],[e,"materialMode"])),this.d(w.track([s,"highlight"],[e,"highlight"])),this.d(w.track([s,"maximumScreenSpaceError"],[e,"maximumScreenSpaceError"])),this.d(w.track([s,"highlightID"],[e,"highlightID"])),this.d(w.track([s,"highlightColor"],[e,"highlightColor"])),this.d(w.bind([s,"offset"],[e,"offset"])),this.d(w.bind([s,"rotation"],[e,"rotation"])),this.d(w.track([s,"czmImageBasedLightingFactor"],[e,"czmImageBasedLightingFactor"])),this.d(w.track([s,"czmLuminanceAtZenith"],[e,"czmLuminanceAtZenith"])),this.d(w.track([s,"czmMaximumMemoryUsage"],[e,"czmMaximumMemoryUsage"])),this.d(w.track([s,"czmClassificationType"],[e,"czmClassificationType"])),this.d(w.track([s,"czmStyleJson"],[e,"czmStyleJson"])),this.d(w.track([s,"czmBackFaceCulling"],[e,"czmBackFaceCulling"])),this.d(w.track([s,"czmDebugShowBoundingVolume"],[e,"czmDebugShowBoundingVolume"])),this.d(w.track([s,"czmDebugShowContentBoundingVolume"],[e,"czmDebugShowContentBoundingVolume"])),this.d(w.track([s,"colorBlendMode"],[e,"colorBlendMode"])),this.d(w.track([s,"cacheBytes"],[e,"cacheBytes"])),this.d(w.track([s,"clippingPlaneEnabled"],[e,"clippingPlaneEnabled"])),this.d(w.track([s,"unionClippingRegions"],[e,"unionClippingRegions"])),this.d(w.track([s,"clippingPlaneEdgeColor"],[e,"clippingPlaneEdgeColor"])),this.d(w.track([s,"clippingPlaneEdgeWidth"],[e,"clippingPlaneEdgeWidth"])),this.d(w.track([s,"materialParams"],[e,"materialParams"])),this.d(w.bind([s,"supportEdit"],[e,"supportEdit"])),this.d(w.bind([s,"clippingPlanesId"],[e,"clippingPlanesId"])),this.d(w.bind([s,"clippingPlaneIds"],[e,"clippingPlaneIds"])),this.d(w.bind([s,"flattenedPlaneId"],[e,"flattenedPlaneId"])),this.d(w.bind([s,"flattenedPlaneEnabled"],[e,"flattenedPlaneEnabled"])),this.d(w.bind([s,"clippingPlaneId"],[e,"clippingPlaneId"])),this.d(w.bind([s,"excavateId"],[e,"excavateId"]))}{const s=this._es3DTileset;this.d(e.refreshTilesetEvent.don(()=>{s.refreshTileset()})),this.d(e.highlightFeatureEvent.don((...i)=>{s.highlightFeature(...i)})),this.d(e.highlightFeatureAndFlyToEvent.don((...i)=>{s.highlightFeatureAndFlyTo(...i)})),this.d(e.setFeatureColorEvent.don((...i)=>{s.setFeatureColor(...i)})),this.d(e.setFeatureVisableEvent.don((...i)=>{s.setFeatureVisable(...i)})),this.d(e.resetFeatureStyleEvent.don((...i)=>{s.resetFeatureStyle(...i)})),this.d(e.flyInEvent.don((...i)=>{s.flyIn(i[0])})),this.d(e.flyToEvent.don((...i)=>{s.flyTo(i[0])})),this.d(e.calcFlyToParamEvent.don((...i)=>{s.calcFlyToParam(...i)})),this.d(e.calcFlyInParamEvent.don((...i)=>{s.calcFlyInParam(...i)}))}{const s=this._es3DTileset;this.d(s.tilesetReady.don(i=>{e.tilesetReady.emit(i)})),this.d(s.pickedEvent.don(i=>{i.assign({sceneObject:e}),e.pickedEvent.emit(i)}))}{const s=()=>{this.es3DTileset.show=e.show};s(),this.d(e.showChanged.don(()=>{s()}))}}get es3DTileset(){return this._es3DTileset}};C(Br,"type",Br.register("ESUeViewer",p.ESRtsFeatureEditing.type,Br));let Vi=Br;const fr=class fr extends jA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(fr,"type",fr.register("ESUeViewer",p.ESMsTileset.type,fr));let Oi=fr;const wr=class wr extends uA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}const n=()=>{t.callUeFunc({f:"update",p:{id:A.id,height:A.height??p.ESGeoExtrudedPolygon.defaults.height,extrudedHeight:A.extrudedHeight??p.ESGeoExtrudedPolygon.defaults.extrudedHeight,perPositionHeight:A.perPositionHeight??p.ESGeoExtrudedPolygon.defaults.perPositionHeight}})},s=this.disposeVar(w.createNextAnimateFrameEvent(A.heightChanged,A.extrudedHeightChanged,A.perPositionHeightChanged));this.dispose(s.disposableOn(n)),this.dispose(A.createdEvent.disposableOn(n))}};C(wr,"type",wr.register("ESUeViewer",p.ESGeoExtrudedPolygon.type,wr));let Wi=wr;const pr=class pr extends x{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(pr,"type",pr.register("ESUeViewer",p.ESStaticMesh.type,pr));let Xi=pr;const Cr=class Cr extends nA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}this.d(A.startEvent.don(()=>{t.callUeFunc({f:"Start",p:{id:A.id}})})),this.d(A.clearEvent.don(()=>{t.callUeFunc({f:"Clear",p:{id:A.id}})}))}};C(Cr,"type",Cr.register("ESUeViewer",p.ESSkylineAnalysis.type,Cr));let Ji=Cr;v.copyright=void 0;try{const r="earthsdk3-ue",A="3.4.0-beta.8",e="2025-09-05T03:42:12.000Z",t="北京西部世界科技有限公司",n="地球可视化实验室 (EarthSDK&CesiumLab) https://www.bjxbsj.cn",s="0ce656da669bb5926e95cce49d7aa1f148e7b260",o=((Date.now()-1757043732e3)/36e5).toFixed(1),a=`%c🌏 ${r}%c ${A}.${s.slice(0,8)}.${e} (距今${o}个小时)
|
|
111
|
+
}`,dw=function(r){uw(r,"."+$s+lw+Jc+`
|
|
112
|
+
.`+Zs+cw+Jc)},uw=function(r,A){var e=r.ownerDocument;if(e){var t=e.createElement("style");t.textContent=A,r.appendChild(t)}},zc=function(){function r(){}return r.getOrigin=function(A){var e=r._link;return e?(e.href=A,e.href=e.href,e.protocol+e.hostname+e.port):"about:blank"},r.isSameOrigin=function(A){return r.getOrigin(A)===r._origin},r.setContext=function(A){r._link=A.document.createElement("a"),r._origin=r.getOrigin(A.location.href)},r._origin="about:blank",r}(),hw=function(){function r(A,e){this.context=A,this._options=e,this._cache={}}return r.prototype.addImage=function(A){var e=Promise.resolve();return this.has(A)||(js(A)||ww(A))&&(this._cache[A]=this.loadImage(A)).catch(function(){}),e},r.prototype.match=function(A){return this._cache[A]},r.prototype.loadImage=function(A){return hA(this,void 0,void 0,function(){var e,t,n,s,i=this;return sA(this,function(o){switch(o.label){case 0:return e=zc.isSameOrigin(A),t=!qs(A)&&this._options.useCORS===!0&&rA.SUPPORT_CORS_IMAGES&&!e,n=!qs(A)&&!e&&!js(A)&&typeof this._options.proxy=="string"&&rA.SUPPORT_CORS_XHR&&!t,!e&&this._options.allowTaint===!1&&!qs(A)&&!js(A)&&!n&&!t?[2]:(s=A,n?[4,this.proxy(s)]:[3,2]);case 1:s=o.sent(),o.label=2;case 2:return this.context.logger.debug("Added image "+A.substring(0,256)),[4,new Promise(function(a,l){var c=new Image;c.onload=function(){return a(c)},c.onerror=l,(pw(s)||t)&&(c.crossOrigin="anonymous"),c.src=s,c.complete===!0&&setTimeout(function(){return a(c)},500),i._options.imageTimeout>0&&setTimeout(function(){return l("Timed out ("+i._options.imageTimeout+"ms) loading image")},i._options.imageTimeout)})];case 3:return[2,o.sent()]}})})},r.prototype.has=function(A){return typeof this._cache[A]<"u"},r.prototype.keys=function(){return Promise.resolve(Object.keys(this._cache))},r.prototype.proxy=function(A){var e=this,t=this._options.proxy;if(!t)throw new Error("No proxy defined");var n=A.substring(0,256);return new Promise(function(s,i){var o=rA.SUPPORT_RESPONSE_TYPE?"blob":"text",a=new XMLHttpRequest;a.onload=function(){if(a.status===200)if(o==="text")s(a.response);else{var u=new FileReader;u.addEventListener("load",function(){return s(u.result)},!1),u.addEventListener("error",function(d){return i(d)},!1),u.readAsDataURL(a.response)}else i("Failed to proxy resource "+n+" with status code "+a.status)},a.onerror=i;var l=t.indexOf("?")>-1?"&":"?";if(a.open("GET",""+t+l+"url="+encodeURIComponent(A)+"&responseType="+o),o!=="text"&&a instanceof XMLHttpRequest&&(a.responseType=o),e._options.imageTimeout){var c=e._options.imageTimeout;a.timeout=c,a.ontimeout=function(){return i("Timed out ("+c+"ms) proxying "+n)}}a.send()})},r}(),gw=/^data:image\/svg\+xml/i,Bw=/^data:image\/.*;base64,/i,fw=/^data:image\/.*/i,ww=function(r){return rA.SUPPORT_SVG_DRAWING||!Cw(r)},qs=function(r){return fw.test(r)},pw=function(r){return Bw.test(r)},js=function(r){return r.substr(0,4)==="blob"},Cw=function(r){return r.substr(-3).toLowerCase()==="svg"||gw.test(r)},S=function(){function r(A,e){this.type=0,this.x=A,this.y=e}return r.prototype.add=function(A,e){return new r(this.x+A,this.y+e)},r}(),Ie=function(r,A,e){return new S(r.x+(A.x-r.x)*e,r.y+(A.y-r.y)*e)},Bn=function(){function r(A,e,t,n){this.type=1,this.start=A,this.startControl=e,this.endControl=t,this.end=n}return r.prototype.subdivide=function(A,e){var t=Ie(this.start,this.startControl,A),n=Ie(this.startControl,this.endControl,A),s=Ie(this.endControl,this.end,A),i=Ie(t,n,A),o=Ie(n,s,A),a=Ie(i,o,A);return e?new r(this.start,t,i,a):new r(a,o,s,this.end)},r.prototype.add=function(A,e){return new r(this.start.add(A,e),this.startControl.add(A,e),this.endControl.add(A,e),this.end.add(A,e))},r.prototype.reverse=function(){return new r(this.end,this.endControl,this.startControl,this.start)},r}(),CA=function(r){return r.type===1},vw=function(){function r(A){var e=A.styles,t=A.bounds,n=st(e.borderTopLeftRadius,t.width,t.height),s=n[0],i=n[1],o=st(e.borderTopRightRadius,t.width,t.height),a=o[0],l=o[1],c=st(e.borderBottomRightRadius,t.width,t.height),u=c[0],d=c[1],B=st(e.borderBottomLeftRadius,t.width,t.height),g=B[0],f=B[1],m=[];m.push((s+a)/t.width),m.push((g+u)/t.width),m.push((i+f)/t.height),m.push((l+d)/t.height);var F=Math.max.apply(Math,m);F>1&&(s/=F,i/=F,a/=F,l/=F,u/=F,d/=F,g/=F,f/=F);var Q=t.width-a,y=t.height-d,L=t.width-u,I=t.height-f,E=e.borderTopWidth,R=e.borderRightWidth,P=e.borderBottomWidth,D=e.borderLeftWidth,W=_(e.paddingTop,A.bounds.width),oA=_(e.paddingRight,A.bounds.width),$=_(e.paddingBottom,A.bounds.width),G=_(e.paddingLeft,A.bounds.width);this.topLeftBorderDoubleOuterBox=s>0||i>0?O(t.left+D/3,t.top+E/3,s-D/3,i-E/3,k.TOP_LEFT):new S(t.left+D/3,t.top+E/3),this.topRightBorderDoubleOuterBox=s>0||i>0?O(t.left+Q,t.top+E/3,a-R/3,l-E/3,k.TOP_RIGHT):new S(t.left+t.width-R/3,t.top+E/3),this.bottomRightBorderDoubleOuterBox=u>0||d>0?O(t.left+L,t.top+y,u-R/3,d-P/3,k.BOTTOM_RIGHT):new S(t.left+t.width-R/3,t.top+t.height-P/3),this.bottomLeftBorderDoubleOuterBox=g>0||f>0?O(t.left+D/3,t.top+I,g-D/3,f-P/3,k.BOTTOM_LEFT):new S(t.left+D/3,t.top+t.height-P/3),this.topLeftBorderDoubleInnerBox=s>0||i>0?O(t.left+D*2/3,t.top+E*2/3,s-D*2/3,i-E*2/3,k.TOP_LEFT):new S(t.left+D*2/3,t.top+E*2/3),this.topRightBorderDoubleInnerBox=s>0||i>0?O(t.left+Q,t.top+E*2/3,a-R*2/3,l-E*2/3,k.TOP_RIGHT):new S(t.left+t.width-R*2/3,t.top+E*2/3),this.bottomRightBorderDoubleInnerBox=u>0||d>0?O(t.left+L,t.top+y,u-R*2/3,d-P*2/3,k.BOTTOM_RIGHT):new S(t.left+t.width-R*2/3,t.top+t.height-P*2/3),this.bottomLeftBorderDoubleInnerBox=g>0||f>0?O(t.left+D*2/3,t.top+I,g-D*2/3,f-P*2/3,k.BOTTOM_LEFT):new S(t.left+D*2/3,t.top+t.height-P*2/3),this.topLeftBorderStroke=s>0||i>0?O(t.left+D/2,t.top+E/2,s-D/2,i-E/2,k.TOP_LEFT):new S(t.left+D/2,t.top+E/2),this.topRightBorderStroke=s>0||i>0?O(t.left+Q,t.top+E/2,a-R/2,l-E/2,k.TOP_RIGHT):new S(t.left+t.width-R/2,t.top+E/2),this.bottomRightBorderStroke=u>0||d>0?O(t.left+L,t.top+y,u-R/2,d-P/2,k.BOTTOM_RIGHT):new S(t.left+t.width-R/2,t.top+t.height-P/2),this.bottomLeftBorderStroke=g>0||f>0?O(t.left+D/2,t.top+I,g-D/2,f-P/2,k.BOTTOM_LEFT):new S(t.left+D/2,t.top+t.height-P/2),this.topLeftBorderBox=s>0||i>0?O(t.left,t.top,s,i,k.TOP_LEFT):new S(t.left,t.top),this.topRightBorderBox=a>0||l>0?O(t.left+Q,t.top,a,l,k.TOP_RIGHT):new S(t.left+t.width,t.top),this.bottomRightBorderBox=u>0||d>0?O(t.left+L,t.top+y,u,d,k.BOTTOM_RIGHT):new S(t.left+t.width,t.top+t.height),this.bottomLeftBorderBox=g>0||f>0?O(t.left,t.top+I,g,f,k.BOTTOM_LEFT):new S(t.left,t.top+t.height),this.topLeftPaddingBox=s>0||i>0?O(t.left+D,t.top+E,Math.max(0,s-D),Math.max(0,i-E),k.TOP_LEFT):new S(t.left+D,t.top+E),this.topRightPaddingBox=a>0||l>0?O(t.left+Math.min(Q,t.width-R),t.top+E,Q>t.width+R?0:Math.max(0,a-R),Math.max(0,l-E),k.TOP_RIGHT):new S(t.left+t.width-R,t.top+E),this.bottomRightPaddingBox=u>0||d>0?O(t.left+Math.min(L,t.width-D),t.top+Math.min(y,t.height-P),Math.max(0,u-R),Math.max(0,d-P),k.BOTTOM_RIGHT):new S(t.left+t.width-R,t.top+t.height-P),this.bottomLeftPaddingBox=g>0||f>0?O(t.left+D,t.top+Math.min(I,t.height-P),Math.max(0,g-D),Math.max(0,f-P),k.BOTTOM_LEFT):new S(t.left+D,t.top+t.height-P),this.topLeftContentBox=s>0||i>0?O(t.left+D+G,t.top+E+W,Math.max(0,s-(D+G)),Math.max(0,i-(E+W)),k.TOP_LEFT):new S(t.left+D+G,t.top+E+W),this.topRightContentBox=a>0||l>0?O(t.left+Math.min(Q,t.width+D+G),t.top+E+W,Q>t.width+D+G?0:a-D+G,l-(E+W),k.TOP_RIGHT):new S(t.left+t.width-(R+oA),t.top+E+W),this.bottomRightContentBox=u>0||d>0?O(t.left+Math.min(L,t.width-(D+G)),t.top+Math.min(y,t.height+E+W),Math.max(0,u-(R+oA)),d-(P+$),k.BOTTOM_RIGHT):new S(t.left+t.width-(R+oA),t.top+t.height-(P+$)),this.bottomLeftContentBox=g>0||f>0?O(t.left+D+G,t.top+I,Math.max(0,g-(D+G)),f-(P+$),k.BOTTOM_LEFT):new S(t.left+D+G,t.top+t.height-(P+$))}return r}(),k;(function(r){r[r.TOP_LEFT=0]="TOP_LEFT",r[r.TOP_RIGHT=1]="TOP_RIGHT",r[r.BOTTOM_RIGHT=2]="BOTTOM_RIGHT",r[r.BOTTOM_LEFT=3]="BOTTOM_LEFT"})(k||(k={}));var O=function(r,A,e,t,n){var s=4*((Math.sqrt(2)-1)/3),i=e*s,o=t*s,a=r+e,l=A+t;switch(n){case k.TOP_LEFT:return new Bn(new S(r,l),new S(r,l-o),new S(a-i,A),new S(a,A));case k.TOP_RIGHT:return new Bn(new S(r,A),new S(r+i,A),new S(a,l-o),new S(a,l));case k.BOTTOM_RIGHT:return new Bn(new S(a,A),new S(a,A+o),new S(r+i,l),new S(r,l));case k.BOTTOM_LEFT:default:return new Bn(new S(a,l),new S(a-i,l),new S(r,A+o),new S(r,A))}},fn=function(r){return[r.topLeftBorderBox,r.topRightBorderBox,r.bottomRightBorderBox,r.bottomLeftBorderBox]},mw=function(r){return[r.topLeftContentBox,r.topRightContentBox,r.bottomRightContentBox,r.bottomLeftContentBox]},wn=function(r){return[r.topLeftPaddingBox,r.topRightPaddingBox,r.bottomRightPaddingBox,r.bottomLeftPaddingBox]},Fw=function(){function r(A,e,t){this.offsetX=A,this.offsetY=e,this.matrix=t,this.type=0,this.target=6}return r}(),pn=function(){function r(A,e){this.path=A,this.target=e,this.type=1}return r}(),Qw=function(){function r(A){this.opacity=A,this.type=2,this.target=6}return r}(),Uw=function(r){return r.type===0},Yc=function(r){return r.type===1},Ew=function(r){return r.type===2},$c=function(r,A){return r.length===A.length?r.some(function(e,t){return e===A[t]}):!1},yw=function(r,A,e,t,n){return r.map(function(s,i){switch(i){case 0:return s.add(A,e);case 1:return s.add(A+t,e);case 2:return s.add(A+t,e+n);case 3:return s.add(A,e+n)}return s})},Zc=function(){function r(A){this.element=A,this.inlineLevel=[],this.nonInlineLevel=[],this.negativeZIndex=[],this.zeroOrAutoZIndexOrTransformedOrOpacity=[],this.positiveZIndex=[],this.nonPositionedFloats=[],this.nonPositionedInlineLevel=[]}return r}(),qc=function(){function r(A,e){if(this.container=A,this.parent=e,this.effects=[],this.curves=new vw(this.container),this.container.styles.opacity<1&&this.effects.push(new Qw(this.container.styles.opacity)),this.container.styles.transform!==null){var t=this.container.bounds.left+this.container.styles.transformOrigin[0].number,n=this.container.bounds.top+this.container.styles.transformOrigin[1].number,s=this.container.styles.transform;this.effects.push(new Fw(t,n,s))}if(this.container.styles.overflowX!==0){var i=fn(this.curves),o=wn(this.curves);$c(i,o)?this.effects.push(new pn(i,6)):(this.effects.push(new pn(i,2)),this.effects.push(new pn(o,4)))}}return r.prototype.getEffects=function(A){for(var e=[2,3].indexOf(this.container.styles.position)===-1,t=this.parent,n=this.effects.slice(0);t;){var s=t.effects.filter(function(a){return!Yc(a)});if(e||t.container.styles.position!==0||!t.parent){if(n.unshift.apply(n,s),e=[2,3].indexOf(t.container.styles.position)===-1,t.container.styles.overflowX!==0){var i=fn(t.curves),o=wn(t.curves);$c(i,o)||n.unshift(new pn(o,6))}}else n.unshift.apply(n,s);t=t.parent}return n.filter(function(a){return q(a.target,A)})},r}(),Ai=function(r,A,e,t){r.container.elements.forEach(function(n){var s=q(n.flags,4),i=q(n.flags,2),o=new qc(n,r);q(n.styles.display,2048)&&t.push(o);var a=q(n.flags,8)?[]:t;if(s||i){var l=s||n.styles.isPositioned()?e:A,c=new Zc(o);if(n.styles.isPositioned()||n.styles.opacity<1||n.styles.isTransformed()){var u=n.styles.zIndex.order;if(u<0){var d=0;l.negativeZIndex.some(function(g,f){return u>g.element.container.styles.zIndex.order?(d=f,!1):d>0}),l.negativeZIndex.splice(d,0,c)}else if(u>0){var B=0;l.positiveZIndex.some(function(g,f){return u>=g.element.container.styles.zIndex.order?(B=f+1,!1):B>0}),l.positiveZIndex.splice(B,0,c)}else l.zeroOrAutoZIndexOrTransformedOrOpacity.push(c)}else n.styles.isFloating()?l.nonPositionedFloats.push(c):l.nonPositionedInlineLevel.push(c);Ai(o,c,s?c:e,a)}else n.styles.isInlineLevel()?A.inlineLevel.push(o):A.nonInlineLevel.push(o),Ai(o,A,e,a);q(n.flags,8)&&jc(n,a)})},jc=function(r,A){for(var e=r instanceof Vs?r.start:1,t=r instanceof Vs?r.reversed:!1,n=0;n<A.length;n++){var s=A[n];s.container instanceof Uc&&typeof s.container.value=="number"&&s.container.value!==0&&(e=s.container.value),s.listValue=dt(e,s.container.styles.listStyleType,!0),e+=t?-1:1}},Sw=function(r){var A=new qc(r,null),e=new Zc(A),t=[];return Ai(A,e,e,t),jc(A.container,t),e},Ad=function(r,A){switch(A){case 0:return vA(r.topLeftBorderBox,r.topLeftPaddingBox,r.topRightBorderBox,r.topRightPaddingBox);case 1:return vA(r.topRightBorderBox,r.topRightPaddingBox,r.bottomRightBorderBox,r.bottomRightPaddingBox);case 2:return vA(r.bottomRightBorderBox,r.bottomRightPaddingBox,r.bottomLeftBorderBox,r.bottomLeftPaddingBox);case 3:default:return vA(r.bottomLeftBorderBox,r.bottomLeftPaddingBox,r.topLeftBorderBox,r.topLeftPaddingBox)}},Iw=function(r,A){switch(A){case 0:return vA(r.topLeftBorderBox,r.topLeftBorderDoubleOuterBox,r.topRightBorderBox,r.topRightBorderDoubleOuterBox);case 1:return vA(r.topRightBorderBox,r.topRightBorderDoubleOuterBox,r.bottomRightBorderBox,r.bottomRightBorderDoubleOuterBox);case 2:return vA(r.bottomRightBorderBox,r.bottomRightBorderDoubleOuterBox,r.bottomLeftBorderBox,r.bottomLeftBorderDoubleOuterBox);case 3:default:return vA(r.bottomLeftBorderBox,r.bottomLeftBorderDoubleOuterBox,r.topLeftBorderBox,r.topLeftBorderDoubleOuterBox)}},Tw=function(r,A){switch(A){case 0:return vA(r.topLeftBorderDoubleInnerBox,r.topLeftPaddingBox,r.topRightBorderDoubleInnerBox,r.topRightPaddingBox);case 1:return vA(r.topRightBorderDoubleInnerBox,r.topRightPaddingBox,r.bottomRightBorderDoubleInnerBox,r.bottomRightPaddingBox);case 2:return vA(r.bottomRightBorderDoubleInnerBox,r.bottomRightPaddingBox,r.bottomLeftBorderDoubleInnerBox,r.bottomLeftPaddingBox);case 3:default:return vA(r.bottomLeftBorderDoubleInnerBox,r.bottomLeftPaddingBox,r.topLeftBorderDoubleInnerBox,r.topLeftPaddingBox)}},Hw=function(r,A){switch(A){case 0:return Cn(r.topLeftBorderStroke,r.topRightBorderStroke);case 1:return Cn(r.topRightBorderStroke,r.bottomRightBorderStroke);case 2:return Cn(r.bottomRightBorderStroke,r.bottomLeftBorderStroke);case 3:default:return Cn(r.bottomLeftBorderStroke,r.topLeftBorderStroke)}},Cn=function(r,A){var e=[];return CA(r)?e.push(r.subdivide(.5,!1)):e.push(r),CA(A)?e.push(A.subdivide(.5,!0)):e.push(A),e},vA=function(r,A,e,t){var n=[];return CA(r)?n.push(r.subdivide(.5,!1)):n.push(r),CA(e)?n.push(e.subdivide(.5,!0)):n.push(e),CA(t)?n.push(t.subdivide(.5,!0).reverse()):n.push(t),CA(A)?n.push(A.subdivide(.5,!1).reverse()):n.push(A),n},ed=function(r){var A=r.bounds,e=r.styles;return A.add(e.borderLeftWidth,e.borderTopWidth,-(e.borderRightWidth+e.borderLeftWidth),-(e.borderTopWidth+e.borderBottomWidth))},vn=function(r){var A=r.styles,e=r.bounds,t=_(A.paddingLeft,e.width),n=_(A.paddingRight,e.width),s=_(A.paddingTop,e.width),i=_(A.paddingBottom,e.width);return e.add(t+A.borderLeftWidth,s+A.borderTopWidth,-(A.borderRightWidth+A.borderLeftWidth+t+n),-(A.borderTopWidth+A.borderBottomWidth+s+i))},Lw=function(r,A){return r===0?A.bounds:r===2?vn(A):ed(A)},bw=function(r,A){return r===0?A.bounds:r===2?vn(A):ed(A)},ei=function(r,A,e){var t=Lw(He(r.styles.backgroundOrigin,A),r),n=bw(He(r.styles.backgroundClip,A),r),s=Mw(He(r.styles.backgroundSize,A),e,t),i=s[0],o=s[1],a=st(He(r.styles.backgroundPosition,A),t.width-i,t.height-o),l=Dw(He(r.styles.backgroundRepeat,A),a,s,t,n),c=Math.round(t.left+a[0]),u=Math.round(t.top+a[1]);return[l,c,u,i,o]},Te=function(r){return N(r)&&r.value===Ue.AUTO},mn=function(r){return typeof r=="number"},Mw=function(r,A,e){var t=A[0],n=A[1],s=A[2],i=r[0],o=r[1];if(!i)return[0,0];if(Y(i)&&o&&Y(o))return[_(i,e.width),_(o,e.height)];var a=mn(s);if(N(i)&&(i.value===Ue.CONTAIN||i.value===Ue.COVER)){if(mn(s)){var l=e.width/e.height;return l<s!=(i.value===Ue.COVER)?[e.width,e.width/s]:[e.height*s,e.height]}return[e.width,e.height]}var c=mn(t),u=mn(n),d=c||u;if(Te(i)&&(!o||Te(o))){if(c&&u)return[t,n];if(!a&&!d)return[e.width,e.height];if(d&&a){var B=c?t:n*s,g=u?n:t/s;return[B,g]}var f=c?t:e.width,m=u?n:e.height;return[f,m]}if(a){var F=0,Q=0;return Y(i)?F=_(i,e.width):Y(o)&&(Q=_(o,e.height)),Te(i)?F=Q*s:(!o||Te(o))&&(Q=F/s),[F,Q]}var y=null,L=null;if(Y(i)?y=_(i,e.width):o&&Y(o)&&(L=_(o,e.height)),y!==null&&(!o||Te(o))&&(L=c&&u?y/t*n:e.height),L!==null&&Te(i)&&(y=c&&u?L/n*t:e.width),y!==null&&L!==null)return[y,L];throw new Error("Unable to calculate background-size for element")},He=function(r,A){var e=r[A];return typeof e>"u"?r[0]:e},Dw=function(r,A,e,t,n){var s=A[0],i=A[1],o=e[0],a=e[1];switch(r){case 2:return[new S(Math.round(t.left),Math.round(t.top+i)),new S(Math.round(t.left+t.width),Math.round(t.top+i)),new S(Math.round(t.left+t.width),Math.round(a+t.top+i)),new S(Math.round(t.left),Math.round(a+t.top+i))];case 3:return[new S(Math.round(t.left+s),Math.round(t.top)),new S(Math.round(t.left+s+o),Math.round(t.top)),new S(Math.round(t.left+s+o),Math.round(t.height+t.top)),new S(Math.round(t.left+s),Math.round(t.height+t.top))];case 1:return[new S(Math.round(t.left+s),Math.round(t.top+i)),new S(Math.round(t.left+s+o),Math.round(t.top+i)),new S(Math.round(t.left+s+o),Math.round(t.top+i+a)),new S(Math.round(t.left+s),Math.round(t.top+i+a))];default:return[new S(Math.round(n.left),Math.round(n.top)),new S(Math.round(n.left+n.width),Math.round(n.top)),new S(Math.round(n.left+n.width),Math.round(n.height+n.top)),new S(Math.round(n.left),Math.round(n.height+n.top))]}},Rw="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",td="Hidden Text",Pw=function(){function r(A){this._data={},this._document=A}return r.prototype.parseMetrics=function(A,e){var t=this._document.createElement("div"),n=this._document.createElement("img"),s=this._document.createElement("span"),i=this._document.body;t.style.visibility="hidden",t.style.fontFamily=A,t.style.fontSize=e,t.style.margin="0",t.style.padding="0",t.style.whiteSpace="nowrap",i.appendChild(t),n.src=Rw,n.width=1,n.height=1,n.style.margin="0",n.style.padding="0",n.style.verticalAlign="baseline",s.style.fontFamily=A,s.style.fontSize=e,s.style.margin="0",s.style.padding="0",s.appendChild(this._document.createTextNode(td)),t.appendChild(s),t.appendChild(n);var o=n.offsetTop-s.offsetTop+2;t.removeChild(s),t.appendChild(this._document.createTextNode(td)),t.style.lineHeight="normal",n.style.verticalAlign="super";var a=n.offsetTop-t.offsetTop+2;return i.removeChild(t),{baseline:o,middle:a}},r.prototype.getMetrics=function(A,e){var t=A+" "+e;return typeof this._data[t]>"u"&&(this._data[t]=this.parseMetrics(A,e)),this._data[t]},r}(),rd=function(){function r(A,e){this.context=A,this.options=e}return r}(),Kw=1e4,xw=function(r){FA(A,r);function A(e,t){var n=r.call(this,e,t)||this;return n._activeEffects=[],n.canvas=t.canvas?t.canvas:document.createElement("canvas"),n.ctx=n.canvas.getContext("2d"),t.canvas||(n.canvas.width=Math.floor(t.width*t.scale),n.canvas.height=Math.floor(t.height*t.scale),n.canvas.style.width=t.width+"px",n.canvas.style.height=t.height+"px"),n.fontMetrics=new Pw(document),n.ctx.scale(n.options.scale,n.options.scale),n.ctx.translate(-t.x,-t.y),n.ctx.textBaseline="bottom",n._activeEffects=[],n.context.logger.debug("Canvas renderer initialized ("+t.width+"x"+t.height+") with scale "+t.scale),n}return A.prototype.applyEffects=function(e){for(var t=this;this._activeEffects.length;)this.popEffect();e.forEach(function(n){return t.applyEffect(n)})},A.prototype.applyEffect=function(e){this.ctx.save(),Ew(e)&&(this.ctx.globalAlpha=e.opacity),Uw(e)&&(this.ctx.translate(e.offsetX,e.offsetY),this.ctx.transform(e.matrix[0],e.matrix[1],e.matrix[2],e.matrix[3],e.matrix[4],e.matrix[5]),this.ctx.translate(-e.offsetX,-e.offsetY)),Yc(e)&&(this.path(e.path),this.ctx.clip()),this._activeEffects.push(e)},A.prototype.popEffect=function(){this._activeEffects.pop(),this.ctx.restore()},A.prototype.renderStack=function(e){return hA(this,void 0,void 0,function(){var t;return sA(this,function(n){switch(n.label){case 0:return t=e.element.container.styles,t.isVisible()?[4,this.renderStackContent(e)]:[3,2];case 1:n.sent(),n.label=2;case 2:return[2]}})})},A.prototype.renderNode=function(e){return hA(this,void 0,void 0,function(){return sA(this,function(t){switch(t.label){case 0:if(q(e.container.flags,16))debugger;return e.container.styles.isVisible()?[4,this.renderNodeBackgroundAndBorders(e)]:[3,3];case 1:return t.sent(),[4,this.renderNodeContent(e)];case 2:t.sent(),t.label=3;case 3:return[2]}})})},A.prototype.renderTextWithLetterSpacing=function(e,t,n){var s=this;if(t===0)this.ctx.fillText(e.text,e.bounds.left,e.bounds.top+n);else{var i=_s(e.text);i.reduce(function(o,a){return s.ctx.fillText(a,o,e.bounds.top+n),o+s.ctx.measureText(a).width},e.bounds.left)}},A.prototype.createFontStyle=function(e){var t=e.fontVariant.filter(function(i){return i==="normal"||i==="small-caps"}).join(""),n=Vw(e.fontFamily).join(", "),s=nt(e.fontSize)?""+e.fontSize.number+e.fontSize.unit:e.fontSize.number+"px";return[[e.fontStyle,t,e.fontWeight,s,n].join(" "),n,s]},A.prototype.renderTextNode=function(e,t){return hA(this,void 0,void 0,function(){var n,s,i,o,a,l,c,u,d=this;return sA(this,function(B){return n=this.createFontStyle(t),s=n[0],i=n[1],o=n[2],this.ctx.font=s,this.ctx.direction=t.direction===1?"rtl":"ltr",this.ctx.textAlign="left",this.ctx.textBaseline="alphabetic",a=this.fontMetrics.getMetrics(i,o),l=a.baseline,c=a.middle,u=t.paintOrder,e.textBounds.forEach(function(g){u.forEach(function(f){switch(f){case 0:d.ctx.fillStyle=AA(t.color),d.renderTextWithLetterSpacing(g,t.letterSpacing,l);var m=t.textShadow;m.length&&g.text.trim().length&&(m.slice(0).reverse().forEach(function(F){d.ctx.shadowColor=AA(F.color),d.ctx.shadowOffsetX=F.offsetX.number*d.options.scale,d.ctx.shadowOffsetY=F.offsetY.number*d.options.scale,d.ctx.shadowBlur=F.blur.number,d.renderTextWithLetterSpacing(g,t.letterSpacing,l)}),d.ctx.shadowColor="",d.ctx.shadowOffsetX=0,d.ctx.shadowOffsetY=0,d.ctx.shadowBlur=0),t.textDecorationLine.length&&(d.ctx.fillStyle=AA(t.textDecorationColor||t.color),t.textDecorationLine.forEach(function(F){switch(F){case 1:d.ctx.fillRect(g.bounds.left,Math.round(g.bounds.top+l),g.bounds.width,1);break;case 2:d.ctx.fillRect(g.bounds.left,Math.round(g.bounds.top),g.bounds.width,1);break;case 3:d.ctx.fillRect(g.bounds.left,Math.ceil(g.bounds.top+c),g.bounds.width,1);break}}));break;case 1:t.webkitTextStrokeWidth&&g.text.trim().length&&(d.ctx.strokeStyle=AA(t.webkitTextStrokeColor),d.ctx.lineWidth=t.webkitTextStrokeWidth,d.ctx.lineJoin=window.chrome?"miter":"round",d.ctx.strokeText(g.text,g.bounds.left,g.bounds.top+l)),d.ctx.strokeStyle="",d.ctx.lineWidth=0,d.ctx.lineJoin="miter";break}})}),[2]})})},A.prototype.renderReplacedElement=function(e,t,n){if(n&&e.intrinsicWidth>0&&e.intrinsicHeight>0){var s=vn(e),i=wn(t);this.path(i),this.ctx.save(),this.ctx.clip(),this.ctx.drawImage(n,0,0,e.intrinsicWidth,e.intrinsicHeight,s.left,s.top,s.width,s.height),this.ctx.restore()}},A.prototype.renderNodeContent=function(e){return hA(this,void 0,void 0,function(){var t,n,s,i,o,a,Q,Q,l,c,u,d,L,B,g,I,f,m,F,Q,y,L,I;return sA(this,function(E){switch(E.label){case 0:this.applyEffects(e.getEffects(4)),t=e.container,n=e.curves,s=t.styles,i=0,o=t.textNodes,E.label=1;case 1:return i<o.length?(a=o[i],[4,this.renderTextNode(a,s)]):[3,4];case 2:E.sent(),E.label=3;case 3:return i++,[3,1];case 4:if(!(t instanceof mc))return[3,8];E.label=5;case 5:return E.trys.push([5,7,,8]),[4,this.context.cache.match(t.src)];case 6:return Q=E.sent(),this.renderReplacedElement(t,n,Q),[3,8];case 7:return E.sent(),this.context.logger.error("Error loading image "+t.src),[3,8];case 8:if(t instanceof Fc&&this.renderReplacedElement(t,n,t.canvas),!(t instanceof Qc))return[3,12];E.label=9;case 9:return E.trys.push([9,11,,12]),[4,this.context.cache.match(t.svg)];case 10:return Q=E.sent(),this.renderReplacedElement(t,n,Q),[3,12];case 11:return E.sent(),this.context.logger.error("Error loading svg "+t.svg.substring(0,255)),[3,12];case 12:return t instanceof Ic&&t.tree?(l=new A(this.context,{scale:this.options.scale,backgroundColor:t.backgroundColor,x:0,y:0,width:t.width,height:t.height}),[4,l.render(t.tree)]):[3,14];case 13:c=E.sent(),t.width&&t.height&&this.ctx.drawImage(c,0,0,t.width,t.height,t.bounds.left,t.bounds.top,t.bounds.width,t.bounds.height),E.label=14;case 14:if(t instanceof Os&&(u=Math.min(t.bounds.width,t.bounds.height),t.type===ln?t.checked&&(this.ctx.save(),this.path([new S(t.bounds.left+u*.39363,t.bounds.top+u*.79),new S(t.bounds.left+u*.16,t.bounds.top+u*.5549),new S(t.bounds.left+u*.27347,t.bounds.top+u*.44071),new S(t.bounds.left+u*.39694,t.bounds.top+u*.5649),new S(t.bounds.left+u*.72983,t.bounds.top+u*.23),new S(t.bounds.left+u*.84,t.bounds.top+u*.34085),new S(t.bounds.left+u*.39363,t.bounds.top+u*.79)]),this.ctx.fillStyle=AA(Ec),this.ctx.fill(),this.ctx.restore()):t.type===cn&&t.checked&&(this.ctx.save(),this.ctx.beginPath(),this.ctx.arc(t.bounds.left+u/2,t.bounds.top+u/2,u/4,0,Math.PI*2,!0),this.ctx.fillStyle=AA(Ec),this.ctx.fill(),this.ctx.restore())),kw(t)&&t.value.length){switch(d=this.createFontStyle(s),L=d[0],B=d[1],g=this.fontMetrics.getMetrics(L,B).baseline,this.ctx.font=L,this.ctx.fillStyle=AA(s.color),this.ctx.textBaseline="alphabetic",this.ctx.textAlign=Nw(t.styles.textAlign),I=vn(t),f=0,t.styles.textAlign){case 1:f+=I.width/2;break;case 2:f+=I.width;break}m=I.add(f,0,0,-I.height/2+1),this.ctx.save(),this.path([new S(I.left,I.top),new S(I.left+I.width,I.top),new S(I.left+I.width,I.top+I.height),new S(I.left,I.top+I.height)]),this.ctx.clip(),this.renderTextWithLetterSpacing(new lt(t.value,m),s.letterSpacing,g),this.ctx.restore(),this.ctx.textBaseline="alphabetic",this.ctx.textAlign="left"}if(!q(t.styles.display,2048))return[3,20];if(t.styles.listStyleImage===null)return[3,19];if(F=t.styles.listStyleImage,F.type!==0)return[3,18];Q=void 0,y=F.url,E.label=15;case 15:return E.trys.push([15,17,,18]),[4,this.context.cache.match(y)];case 16:return Q=E.sent(),this.ctx.drawImage(Q,t.bounds.left-(Q.width+10),t.bounds.top),[3,18];case 17:return E.sent(),this.context.logger.error("Error loading list-style-image "+y),[3,18];case 18:return[3,20];case 19:e.listValue&&t.styles.listStyleType!==-1&&(L=this.createFontStyle(s)[0],this.ctx.font=L,this.ctx.fillStyle=AA(s.color),this.ctx.textBaseline="middle",this.ctx.textAlign="right",I=new MA(t.bounds.left,t.bounds.top+_(t.styles.paddingTop,t.bounds.width),t.bounds.width,tc(s.lineHeight,s.fontSize.number)/2+1),this.renderTextWithLetterSpacing(new lt(e.listValue,I),s.letterSpacing,tc(s.lineHeight,s.fontSize.number)/2+2),this.ctx.textBaseline="bottom",this.ctx.textAlign="left"),E.label=20;case 20:return[2]}})})},A.prototype.renderStackContent=function(e){return hA(this,void 0,void 0,function(){var t,n,F,s,i,F,o,a,F,l,c,F,u,d,F,B,g,F,f,m,F;return sA(this,function(Q){switch(Q.label){case 0:if(q(e.element.container.flags,16))debugger;return[4,this.renderNodeBackgroundAndBorders(e.element)];case 1:Q.sent(),t=0,n=e.negativeZIndex,Q.label=2;case 2:return t<n.length?(F=n[t],[4,this.renderStack(F)]):[3,5];case 3:Q.sent(),Q.label=4;case 4:return t++,[3,2];case 5:return[4,this.renderNodeContent(e.element)];case 6:Q.sent(),s=0,i=e.nonInlineLevel,Q.label=7;case 7:return s<i.length?(F=i[s],[4,this.renderNode(F)]):[3,10];case 8:Q.sent(),Q.label=9;case 9:return s++,[3,7];case 10:o=0,a=e.nonPositionedFloats,Q.label=11;case 11:return o<a.length?(F=a[o],[4,this.renderStack(F)]):[3,14];case 12:Q.sent(),Q.label=13;case 13:return o++,[3,11];case 14:l=0,c=e.nonPositionedInlineLevel,Q.label=15;case 15:return l<c.length?(F=c[l],[4,this.renderStack(F)]):[3,18];case 16:Q.sent(),Q.label=17;case 17:return l++,[3,15];case 18:u=0,d=e.inlineLevel,Q.label=19;case 19:return u<d.length?(F=d[u],[4,this.renderNode(F)]):[3,22];case 20:Q.sent(),Q.label=21;case 21:return u++,[3,19];case 22:B=0,g=e.zeroOrAutoZIndexOrTransformedOrOpacity,Q.label=23;case 23:return B<g.length?(F=g[B],[4,this.renderStack(F)]):[3,26];case 24:Q.sent(),Q.label=25;case 25:return B++,[3,23];case 26:f=0,m=e.positiveZIndex,Q.label=27;case 27:return f<m.length?(F=m[f],[4,this.renderStack(F)]):[3,30];case 28:Q.sent(),Q.label=29;case 29:return f++,[3,27];case 30:return[2]}})})},A.prototype.mask=function(e){this.ctx.beginPath(),this.ctx.moveTo(0,0),this.ctx.lineTo(this.canvas.width,0),this.ctx.lineTo(this.canvas.width,this.canvas.height),this.ctx.lineTo(0,this.canvas.height),this.ctx.lineTo(0,0),this.formatPath(e.slice(0).reverse()),this.ctx.closePath()},A.prototype.path=function(e){this.ctx.beginPath(),this.formatPath(e),this.ctx.closePath()},A.prototype.formatPath=function(e){var t=this;e.forEach(function(n,s){var i=CA(n)?n.start:n;s===0?t.ctx.moveTo(i.x,i.y):t.ctx.lineTo(i.x,i.y),CA(n)&&t.ctx.bezierCurveTo(n.startControl.x,n.startControl.y,n.endControl.x,n.endControl.y,n.end.x,n.end.y)})},A.prototype.renderRepeat=function(e,t,n,s){this.path(e),this.ctx.fillStyle=t,this.ctx.translate(n,s),this.ctx.fill(),this.ctx.translate(-n,-s)},A.prototype.resizeImage=function(e,t,n){var s;if(e.width===t&&e.height===n)return e;var i=(s=this.canvas.ownerDocument)!==null&&s!==void 0?s:document,o=i.createElement("canvas");o.width=Math.max(1,t),o.height=Math.max(1,n);var a=o.getContext("2d");return a.drawImage(e,0,0,e.width,e.height,0,0,t,n),o},A.prototype.renderBackgroundImage=function(e){return hA(this,void 0,void 0,function(){var t,n,s,i,o,a;return sA(this,function(l){switch(l.label){case 0:t=e.styles.backgroundImage.length-1,n=function(c){var u,d,B,W,aA,BA,G,j,P,g,W,aA,BA,G,j,f,m,F,Q,y,L,I,E,R,P,D,W,oA,$,G,j,IA,aA,BA,de,TA,YA,ue,he,KA,ge,xA;return sA(this,function(Ke){switch(Ke.label){case 0:if(c.type!==0)return[3,5];u=void 0,d=c.url,Ke.label=1;case 1:return Ke.trys.push([1,3,,4]),[4,s.context.cache.match(d)];case 2:return u=Ke.sent(),[3,4];case 3:return Ke.sent(),s.context.logger.error("Error loading background-image "+d),[3,4];case 4:return u&&(B=ei(e,t,[u.width,u.height,u.width/u.height]),W=B[0],aA=B[1],BA=B[2],G=B[3],j=B[4],P=s.ctx.createPattern(s.resizeImage(u,G,j),"repeat"),s.renderRepeat(W,P,aA,BA)),[3,6];case 5:Qg(c)?(g=ei(e,t,[null,null,null]),W=g[0],aA=g[1],BA=g[2],G=g[3],j=g[4],f=pg(c.angle,G,j),m=f[0],F=f[1],Q=f[2],y=f[3],L=f[4],I=document.createElement("canvas"),I.width=G,I.height=j,E=I.getContext("2d"),R=E.createLinearGradient(F,y,Q,L),Wl(c.stops,m).forEach(function(vr){return R.addColorStop(vr.stop,AA(vr.color))}),E.fillStyle=R,E.fillRect(0,0,G,j),G>0&&j>0&&(P=s.ctx.createPattern(I,"repeat"),s.renderRepeat(W,P,aA,BA))):Ug(c)&&(D=ei(e,t,[null,null,null]),W=D[0],oA=D[1],$=D[2],G=D[3],j=D[4],IA=c.position.length===0?[Ss]:c.position,aA=_(IA[0],G),BA=_(IA[IA.length-1],j),de=Cg(c,aA,BA,G,j),TA=de[0],YA=de[1],TA>0&&YA>0&&(ue=s.ctx.createRadialGradient(oA+aA,$+BA,0,oA+aA,$+BA,TA),Wl(c.stops,TA*2).forEach(function(vr){return ue.addColorStop(vr.stop,AA(vr.color))}),s.path(W),s.ctx.fillStyle=ue,TA!==YA?(he=e.bounds.left+.5*e.bounds.width,KA=e.bounds.top+.5*e.bounds.height,ge=YA/TA,xA=1/ge,s.ctx.save(),s.ctx.translate(he,KA),s.ctx.transform(1,0,0,ge,0,0),s.ctx.translate(-he,-KA),s.ctx.fillRect(oA,xA*($-KA)+KA,G,j*xA),s.ctx.restore()):s.ctx.fill())),Ke.label=6;case 6:return t--,[2]}})},s=this,i=0,o=e.styles.backgroundImage.slice(0).reverse(),l.label=1;case 1:return i<o.length?(a=o[i],[5,n(a)]):[3,4];case 2:l.sent(),l.label=3;case 3:return i++,[3,1];case 4:return[2]}})})},A.prototype.renderSolidBorder=function(e,t,n){return hA(this,void 0,void 0,function(){return sA(this,function(s){return this.path(Ad(n,t)),this.ctx.fillStyle=AA(e),this.ctx.fill(),[2]})})},A.prototype.renderDoubleBorder=function(e,t,n,s){return hA(this,void 0,void 0,function(){var i,o;return sA(this,function(a){switch(a.label){case 0:return t<3?[4,this.renderSolidBorder(e,n,s)]:[3,2];case 1:return a.sent(),[2];case 2:return i=Iw(s,n),this.path(i),this.ctx.fillStyle=AA(e),this.ctx.fill(),o=Tw(s,n),this.path(o),this.ctx.fill(),[2]}})})},A.prototype.renderNodeBackgroundAndBorders=function(e){return hA(this,void 0,void 0,function(){var t,n,s,i,o,a,l,c,u=this;return sA(this,function(d){switch(d.label){case 0:return this.applyEffects(e.getEffects(2)),t=e.container.styles,n=!WA(t.backgroundColor)||t.backgroundImage.length,s=[{style:t.borderTopStyle,color:t.borderTopColor,width:t.borderTopWidth},{style:t.borderRightStyle,color:t.borderRightColor,width:t.borderRightWidth},{style:t.borderBottomStyle,color:t.borderBottomColor,width:t.borderBottomWidth},{style:t.borderLeftStyle,color:t.borderLeftColor,width:t.borderLeftWidth}],i=Gw(He(t.backgroundClip,0),e.curves),n||t.boxShadow.length?(this.ctx.save(),this.path(i),this.ctx.clip(),WA(t.backgroundColor)||(this.ctx.fillStyle=AA(t.backgroundColor),this.ctx.fill()),[4,this.renderBackgroundImage(e.container)]):[3,2];case 1:d.sent(),this.ctx.restore(),t.boxShadow.slice(0).reverse().forEach(function(B){u.ctx.save();var g=fn(e.curves),f=B.inset?0:Kw,m=yw(g,-f+(B.inset?1:-1)*B.spread.number,(B.inset?1:-1)*B.spread.number,B.spread.number*(B.inset?-2:2),B.spread.number*(B.inset?-2:2));B.inset?(u.path(g),u.ctx.clip(),u.mask(m)):(u.mask(g),u.ctx.clip(),u.path(m)),u.ctx.shadowOffsetX=B.offsetX.number+f,u.ctx.shadowOffsetY=B.offsetY.number,u.ctx.shadowColor=AA(B.color),u.ctx.shadowBlur=B.blur.number,u.ctx.fillStyle=B.inset?AA(B.color):"rgba(0,0,0,1)",u.ctx.fill(),u.ctx.restore()}),d.label=2;case 2:o=0,a=0,l=s,d.label=3;case 3:return a<l.length?(c=l[a],c.style!==0&&!WA(c.color)&&c.width>0?c.style!==2?[3,5]:[4,this.renderDashedDottedBorder(c.color,c.width,o,e.curves,2)]:[3,11]):[3,13];case 4:return d.sent(),[3,11];case 5:return c.style!==3?[3,7]:[4,this.renderDashedDottedBorder(c.color,c.width,o,e.curves,3)];case 6:return d.sent(),[3,11];case 7:return c.style!==4?[3,9]:[4,this.renderDoubleBorder(c.color,c.width,o,e.curves)];case 8:return d.sent(),[3,11];case 9:return[4,this.renderSolidBorder(c.color,o,e.curves)];case 10:d.sent(),d.label=11;case 11:o++,d.label=12;case 12:return a++,[3,3];case 13:return[2]}})})},A.prototype.renderDashedDottedBorder=function(e,t,n,s,i){return hA(this,void 0,void 0,function(){var o,a,l,c,u,d,B,g,f,m,F,Q,y,L,I,E,I,E;return sA(this,function(R){return this.ctx.save(),o=Hw(s,n),a=Ad(s,n),i===2&&(this.path(a),this.ctx.clip()),CA(a[0])?(l=a[0].start.x,c=a[0].start.y):(l=a[0].x,c=a[0].y),CA(a[1])?(u=a[1].end.x,d=a[1].end.y):(u=a[1].x,d=a[1].y),n===0||n===2?B=Math.abs(l-u):B=Math.abs(c-d),this.ctx.beginPath(),i===3?this.formatPath(o):this.formatPath(a.slice(0,2)),g=t<3?t*3:t*2,f=t<3?t*2:t,i===3&&(g=t,f=t),m=!0,B<=g*2?m=!1:B<=g*2+f?(F=B/(2*g+f),g*=F,f*=F):(Q=Math.floor((B+f)/(g+f)),y=(B-Q*g)/(Q-1),L=(B-(Q+1)*g)/Q,f=L<=0||Math.abs(f-y)<Math.abs(f-L)?y:L),m&&(i===3?this.ctx.setLineDash([0,g+f]):this.ctx.setLineDash([g,f])),i===3?(this.ctx.lineCap="round",this.ctx.lineWidth=t):this.ctx.lineWidth=t*2+1.1,this.ctx.strokeStyle=AA(e),this.ctx.stroke(),this.ctx.setLineDash([]),i===2&&(CA(a[0])&&(I=a[3],E=a[0],this.ctx.beginPath(),this.formatPath([new S(I.end.x,I.end.y),new S(E.start.x,E.start.y)]),this.ctx.stroke()),CA(a[1])&&(I=a[1],E=a[2],this.ctx.beginPath(),this.formatPath([new S(I.end.x,I.end.y),new S(E.start.x,E.start.y)]),this.ctx.stroke())),this.ctx.restore(),[2]})})},A.prototype.render=function(e){return hA(this,void 0,void 0,function(){var t;return sA(this,function(n){switch(n.label){case 0:return this.options.backgroundColor&&(this.ctx.fillStyle=AA(this.options.backgroundColor),this.ctx.fillRect(this.options.x,this.options.y,this.options.width,this.options.height)),t=Sw(e),[4,this.renderStack(t)];case 1:return n.sent(),this.applyEffects([]),[2,this.canvas]}})})},A}(rd),kw=function(r){return r instanceof Sc||r instanceof yc?!0:r instanceof Os&&r.type!==cn&&r.type!==ln},Gw=function(r,A){switch(r){case 0:return fn(A);case 2:return mw(A);case 1:default:return wn(A)}},Nw=function(r){switch(r){case 1:return"center";case 2:return"right";case 0:default:return"left"}},_w=["-apple-system","system-ui"],Vw=function(r){return/iPhone OS 15_(0|1)/.test(window.navigator.userAgent)?r.filter(function(A){return _w.indexOf(A)===-1}):r},Ow=function(r){FA(A,r);function A(e,t){var n=r.call(this,e,t)||this;return n.canvas=t.canvas?t.canvas:document.createElement("canvas"),n.ctx=n.canvas.getContext("2d"),n.options=t,n.canvas.width=Math.floor(t.width*t.scale),n.canvas.height=Math.floor(t.height*t.scale),n.canvas.style.width=t.width+"px",n.canvas.style.height=t.height+"px",n.ctx.scale(n.options.scale,n.options.scale),n.ctx.translate(-t.x,-t.y),n.context.logger.debug("EXPERIMENTAL ForeignObject renderer initialized ("+t.width+"x"+t.height+" at "+t.x+","+t.y+") with scale "+t.scale),n}return A.prototype.render=function(e){return hA(this,void 0,void 0,function(){var t,n;return sA(this,function(s){switch(s.label){case 0:return t=Ns(this.options.width*this.options.scale,this.options.height*this.options.scale,this.options.scale,this.options.scale,e),[4,Ww(t)];case 1:return n=s.sent(),this.options.backgroundColor&&(this.ctx.fillStyle=AA(this.options.backgroundColor),this.ctx.fillRect(0,0,this.options.width*this.options.scale,this.options.height*this.options.scale)),this.ctx.drawImage(n,-this.options.x*this.options.scale,-this.options.y*this.options.scale),[2,this.canvas]}})})},A}(rd),Ww=function(r){return new Promise(function(A,e){var t=new Image;t.onload=function(){A(t)},t.onerror=e,t.src="data:image/svg+xml;charset=utf-8,"+encodeURIComponent(new XMLSerializer().serializeToString(r))})},Xw=function(){function r(A){var e=A.id,t=A.enabled;this.id=e,this.enabled=t,this.start=Date.now()}return r.prototype.debug=function(){for(var A=[],e=0;e<arguments.length;e++)A[e]=arguments[e];this.enabled&&(typeof window<"u"&&window.console&&typeof console.debug=="function"?console.debug.apply(console,Ir([this.id,this.getTime()+"ms"],A)):this.info.apply(this,A))},r.prototype.getTime=function(){return Date.now()-this.start},r.prototype.info=function(){for(var A=[],e=0;e<arguments.length;e++)A[e]=arguments[e];this.enabled&&typeof window<"u"&&window.console&&typeof console.info=="function"&&console.info.apply(console,Ir([this.id,this.getTime()+"ms"],A))},r.prototype.warn=function(){for(var A=[],e=0;e<arguments.length;e++)A[e]=arguments[e];this.enabled&&(typeof window<"u"&&window.console&&typeof console.warn=="function"?console.warn.apply(console,Ir([this.id,this.getTime()+"ms"],A)):this.info.apply(this,A))},r.prototype.error=function(){for(var A=[],e=0;e<arguments.length;e++)A[e]=arguments[e];this.enabled&&(typeof window<"u"&&window.console&&typeof console.error=="function"?console.error.apply(console,Ir([this.id,this.getTime()+"ms"],A)):this.info.apply(this,A))},r.instances={},r}(),Jw=function(){function r(A,e){var t;this.windowBounds=e,this.instanceName="#"+r.instanceCount++,this.logger=new Xw({id:this.instanceName,enabled:A.logging}),this.cache=(t=A.cache)!==null&&t!==void 0?t:new hw(this,A)}return r.instanceCount=1,r}(),zw=function(r,A){return A===void 0&&(A={}),Yw(r,A)};typeof window<"u"&&zc.setContext(window);var Yw=function(r,A){return hA(void 0,void 0,void 0,function(){var e,t,n,s,i,o,a,l,c,u,d,B,g,f,m,F,Q,y,L,I,R,E,R,P,D,W,oA,$,G,j,IA,aA,BA,de,TA,YA,ue,he,KA,ge;return sA(this,function(xA){switch(xA.label){case 0:if(!r||typeof r!="object")return[2,Promise.reject("Invalid element provided as first argument")];if(e=r.ownerDocument,!e)throw new Error("Element is not attached to a Document");if(t=e.defaultView,!t)throw new Error("Document is not attached to a Window");return n={allowTaint:(P=A.allowTaint)!==null&&P!==void 0?P:!1,imageTimeout:(D=A.imageTimeout)!==null&&D!==void 0?D:15e3,proxy:A.proxy,useCORS:(W=A.useCORS)!==null&&W!==void 0?W:!1},s=is({logging:(oA=A.logging)!==null&&oA!==void 0?oA:!0,cache:A.cache},n),i={windowWidth:($=A.windowWidth)!==null&&$!==void 0?$:t.innerWidth,windowHeight:(G=A.windowHeight)!==null&&G!==void 0?G:t.innerHeight,scrollX:(j=A.scrollX)!==null&&j!==void 0?j:t.pageXOffset,scrollY:(IA=A.scrollY)!==null&&IA!==void 0?IA:t.pageYOffset},o=new MA(i.scrollX,i.scrollY,i.windowWidth,i.windowHeight),a=new Jw(s,o),l=(aA=A.foreignObjectRendering)!==null&&aA!==void 0?aA:!1,c={allowTaint:(BA=A.allowTaint)!==null&&BA!==void 0?BA:!1,onclone:A.onclone,ignoreElements:A.ignoreElements,inlineImages:l,copyStyles:l},a.logger.debug("Starting document clone with size "+o.width+"x"+o.height+" scrolled to "+-o.left+","+-o.top),u=new Xc(a,r,c),d=u.clonedReferenceElement,d?[4,u.toIFrame(e,o)]:[2,Promise.reject("Unable to find element in cloned iframe")];case 1:return B=xA.sent(),g=Xs(d)||$f(d)?Eu(d.ownerDocument):Tr(a,d),f=g.width,m=g.height,F=g.left,Q=g.top,y=$w(a,d,A.backgroundColor),L={canvas:A.canvas,backgroundColor:y,scale:(TA=(de=A.scale)!==null&&de!==void 0?de:t.devicePixelRatio)!==null&&TA!==void 0?TA:1,x:((YA=A.x)!==null&&YA!==void 0?YA:0)+F,y:((ue=A.y)!==null&&ue!==void 0?ue:0)+Q,width:(he=A.width)!==null&&he!==void 0?he:Math.ceil(f),height:(KA=A.height)!==null&&KA!==void 0?KA:Math.ceil(m)},l?(a.logger.debug("Document cloned, using foreign object rendering"),R=new Ow(a,L),[4,R.render(d)]):[3,3];case 2:return I=xA.sent(),[3,5];case 3:return a.logger.debug("Document cloned, element located at "+F+","+Q+" with size "+f+"x"+m+" using computed rendering"),a.logger.debug("Starting DOM parsing"),E=Hc(a,d),y===E.styles.backgroundColor&&(E.styles.backgroundColor=RA.TRANSPARENT),a.logger.debug("Starting renderer for element at "+L.x+","+L.y+" with size "+L.width+"x"+L.height),R=new xw(a,L),[4,R.render(E)];case 4:I=xA.sent(),xA.label=5;case 5:return(!((ge=A.removeContainer)!==null&&ge!==void 0)||ge)&&(Xc.destroy(B)||a.logger.error("Cannot detach cloned iframe as it is not in the DOM anymore")),a.logger.debug("Finished rendering"),[2,I]}})})},$w=function(r,A,e){var t=A.ownerDocument,n=t.documentElement?it(r,getComputedStyle(t.documentElement).backgroundColor):RA.TRANSPARENT,s=t.body?it(r,getComputedStyle(t.body).backgroundColor):RA.TRANSPARENT,i=typeof e=="string"?it(r,e):e===null?RA.TRANSPARENT:4294967295;return A===t.documentElement?WA(n)?WA(s)?i:s:n:i};const Mt=class Mt extends p.EngineObject{constructor(A,e){super(A,e),this.ad(new w.ObjResettingWithEvent(A.renderInUEChanged,()=>A.renderInUE?new sd(A,e):new nd(A,e)))}};C(Mt,"type",Mt.register("ESUeViewer",p.ESGeoDiv.type,Mt));let ti=Mt;class nd extends w.Destroyable{constructor(e,t){super();C(this,"_screenPosition",this.disposeVar(w.reactArrayWithUndefined(void 0)));const n=t.viewer;if(!n){console.warn("viewer is undefined!");return}const s=this.disposeVar(new p.ESTextLabel);s.parentID=e.id,e.components.disposableAdd(s,!0),s.show=!1,this.dispose(w.bind([s,"position"],[e,"position"])),this.dispose(w.bind([s,"rotation"],[e,"rotation"])),this.dispose(w.bind([s,"flyToParam"],[e,"flyToParam"])),this.dispose(w.bind([s,"flyInParam"],[e,"flyInParam"])),this.dispose(e.calcFlyToParamEvent.disposableOn(()=>{$A(n,s.id)})),this.dispose(e.calcFlyInParamEvent.disposableOn(async()=>{if(!t.actived)return;const a=await t.getCurrentCameraInfo();if(!a)return;const{position:l,rotation:c}=a;e.flyInParam={position:l,rotation:c,flyDuration:1}})),this.dispose(e.smoothMoveEvent.disposableOn((a,l)=>{_e(n,s.id,a,l)})),this.dispose(e.smoothMoveWithRotationEvent.disposableOn((a,l,c)=>{ke(n,s.id,a,l,c)})),this.dispose(e.smoothMoveOnGroundEvent.disposableOn((a,l,c,u)=>{Ge(n,s.id,a,l,u,c)})),this.dispose(e.smoothMoveWithRotationOnGroundEvent.disposableOn((a,l,c,u,d)=>{Ne(n,s.id,a,l,c,u,d)})),this.dispose(e.flyToEvent.disposableOn((a,l)=>{s.flyTo(a)})),this.dispose(e.flyInEvent.don(a=>{s.flyIn(a)}));const i=this._screenPosition,o=this.disposeVar(new p.ESCustomDiv);o.parentID=e.id,t.add(o),this.dispose(()=>t.delete(o)),this.dispose(w.bind([o,"allowPicking"],[e,"allowPicking"]));{const a=this.disposeVar(w.createAnimateFrame()),l=()=>{e.show?a.restart(void 0,async()=>{if(!e.position)return;const c=await t.lonLatAltToScreenPosition(e.position);if(!this.isDestroyed())if(!c)this._screenPosition.value=void 0;else{const[u,d]=c;u===-1&&d===-1?this._screenPosition.value=void 0:this._screenPosition.value=[u,d]}}):a.cancel()};l(),this.dispose(e.showChanged.disposableOn(l))}{const a=()=>class extends w.Destroyable{constructor(d,B,g){if(super(),this._subContainer=d,!g)return;if(!e.instanceClass)throw new Error("!sceneObject.instanceClass");const f=new w.PosFloatDiv,m=f.element;this._subContainer.appendChild(m),this.dispose(()=>this._subContainer.removeChild(m)),m.onclick=F=>{(e.allowPicking??!1)&&e.pickedEvent.emit(new p.ESJPickedResult({div:m,pointerEvent:F},e,void 0,void 0,void 0,[F.x,F.y]))};{const F=()=>{e.editing?m.children[0].style.pointerEvents="none":m.children[0].style.pointerEvents="all"};F(),this.d(e.editingChanged.don(F))}{const F=()=>{const y=e.show;i.value&&y?(f.show=!0,f.winPos=[...i.value]):(f.show=!1,f.winPos=[0,0])};F();const Q=this.disposeVar(w.createNextAnimateFrameEvent(e.showChanged,i.changed));this.dispose(Q.disposableOn(F))}{const F=()=>{const[Q,y]=e.anchor??p.ESGeoDiv.defaults.anchor;f.originRatioX=Q,f.originRatioY=y};F(),this.dispose(e.anchorChanged.disposableOn(F))}{const F=()=>{f.opacity=e.opacity??p.ESGeoDiv.defaults.opacity};F(),this.dispose(e.opacityChanged.disposableOn(F))}this.disposeVar(new e.instanceClass(f.contentDiv,e,g))}},l=()=>{try{e.instanceClass?o.instanceClass=a():o.instanceClass=void 0}catch(u){console.error(u)}};l();const c=this.dv(w.createNextAnimateFrameEvent(e.instanceClassChanged,e.opacityChanged,e.anchorChanged,e.editingChanged,e.showChanged,e.allowPickingChanged));this.d(c.don(l))}}get screenPosition(){return this._screenPosition.value}get screenPositionChanged(){return this._screenPosition.changed}set screenPosition(e){this._screenPosition.value=e}}class sd extends w.Destroyable{constructor(e,t){super();C(this,"_imageLabel");C(this,"_hasClassDivAndPos",{});this._imageLabel=this.dv(new p.ESImageLabel),this._imageLabel.isHoverZoom=!1,this._imageLabel.parentID=e.id;const n=t.viewer;if(!n){console.warn("viewer is undefined!");return}const s=this._imageLabel;e.components.disposableAdd(s,!0);{const i=()=>{if(!n)return;if(!e.instanceClass)throw new Error("!sceneObject.instanceClass");const l=document.createElement("div"),c=this.dv(new e.instanceClass(l,e,t))._container;if(c.style.opacity=e.opacity.toString()??p.ESGeoDiv.defaults.opacity,c.style.position="fixed",c.style.zIndex="-1",c.style.top="0px",!document.body.contains(c)){document.body.appendChild(c);let d=c?c.querySelectorAll("*[class]"):[];for(let B=0;B<d.length;B++){const g=d[B];var u=g.getBoundingClientRect();this._hasClassDivAndPos[g.className]=[g.offsetLeft,g.offsetTop,g.offsetLeft+u.width,g.offsetTop+u.height]}}zw(c,{backgroundColor:null,allowTaint:!0,useCORS:!0,width:c.offsetWidth,height:c.offsetHeight,scale:1}).then(d=>{document.body.contains(c)&&document.body.removeChild(c),s.url=d.toDataURL(),s.show=e.show}).catch(()=>{document.body.contains(c)&&document.body.removeChild(c)})},o=()=>{try{e.instanceClass?i():(s.url="",s.show=!1)}catch(l){console.error(l)}};o();const a=this.dv(w.createNextAnimateFrameEvent(e.instanceClassChanged,e.opacityChanged));this.d(a.don(o))}{const i=()=>{s.show=e.show};s.show=!1,this.ad(e.showChanged.don(i))}this.d(w.track([s,"anchor"],[e,"anchor"])),this.d(w.bind([s,"position"],[e,"position"])),this.d(w.bind([s,"rotation"],[e,"rotation"])),this.d(w.bind([s,"flyToParam"],[e,"flyToParam"])),this.d(w.bind([s,"flyInParam"],[e,"flyInParam"])),this.d(w.bind([s,"allowPicking"],[e,"allowPicking"])),this.d(w.bind([s,"scale"],[e,"scale"])),this.d(w.track([s,"minVisibleDistance"],[e,"minVisibleDistance"])),this.d(w.track([s,"maxVisibleDistance"],[e,"maxVisibleDistance"])),this.ad(e.automaticLandingEvent.don(()=>{s.automaticLanding()})),this.d(t.widgetEvent.don(i=>{if(i.objId!==this._imageLabel.id)return;const{type:o,add:a}=i;if(o==="leftClick"&&a){const l=(a==null?void 0:a.classNames)??[],c=Object.keys(this._hasClassDivAndPos);for(let u=0;u<c.length;u++){const d=c[u];let B=this._hasClassDivAndPos[d];a&&a.mouseRelativePos&&a.mouseRelativePos[0]>=B[0]&&a.mouseRelativePos[0]<=B[2]&&a.mouseRelativePos[1]>=B[1]&&a.mouseRelativePos[1]<=B[3]&&l.push(d)}a.classNames=l}e.widgetEvent.emit({type:o,add:a})})),this.d(e.calcFlyToParamEvent.don(()=>{$A(n,s.id)})),this.d(e.calcFlyInParamEvent.don(()=>{const i=t.getCurrentCameraInfo();if(!i)return;const{position:o,rotation:a}=i;e.flyInParam={position:o,rotation:a,flyDuration:1}})),this.d(e.smoothMoveEvent.don((i,o)=>{_e(n,s.id,i,o)})),this.d(e.smoothMoveWithRotationEvent.don((i,o,a)=>{ke(n,s.id,i,o,a)})),this.d(e.smoothMoveOnGroundEvent.don((i,o,a,l)=>{Ge(n,s.id,i,o,l,a)})),this.d(e.smoothMoveWithRotationOnGroundEvent.don((i,o,a,l,c)=>{Ne(n,s.id,i,o,a,l,c)})),this.d(e.flyToEvent.don((i,o)=>{s.flyTo(i)})),this.d(e.flyInEvent.don(i=>{s.flyIn(i)}))}}const Dt=class Dt extends dA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}this.d(A.flyToFeatureIndexEvent.don((n,s)=>{t.callUeFunc({f:"flyToFeatureIndex",p:{id:A.id,index:n,duration:s}})})),this.d(A.flyToFeatureEvent.don((n,s,i)=>{t.callUeFunc({f:"flyToFeature",p:{id:A.id,key:n,value:s,duration:i}})}))}};C(Dt,"type",Dt.register("ESUeViewer",p.ESGeoJson.type,Dt));let ri=Dt;const Rt=class Rt extends nA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(Rt,"type",Rt.register("ESUeViewer",p.ESGeoLineString.type,Rt));let Fn=Rt;const Pt=class Pt extends nA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(Pt,"type",Pt.register("ESUeViewer",p.ESGeoRectangle.type,Pt));let ni=Pt;const Kt=class Kt extends uA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(Kt,"type",Kt.register("ESUeViewer",p.ESGeoWater.type,Kt));let si=Kt;const oe=class oe extends x{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}this.d(A.setNodePositionEvent.don((n,s)=>{io(t,A.id,n,s)})),this.d(A.setNodeRotationEvent.don((n,s)=>{oo(t,A.id,n,s)})),this.d(A.setNodeScaleEvent.don((n,s)=>{ao(t,A.id,n,s)}))}};C(oe,"forceUeUpdateProps",[...x.forceUeUpdateProps,"url"]),C(oe,"propValFuncs",{...x.propValFuncs,url:A=>typeof A=="string"?p.ESSceneObject.context.getStrFromEnv(p.rpToap(A)):(A.url=p.ESSceneObject.context.getStrFromEnv(p.rpToap(A.url)),A),czmMaximumScale:null,czmMinimumPixelSize:null,czmNativeScale:null,czmColor:null}),C(oe,"type",oe.register("ESUeViewer",p.ESGltfModel.type,oe));let ii=oe;const xt=class xt extends nA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(xt,"type",xt.register("ESUeViewer",p.ESHeightMeasurement.type,xt));let oi=xt;const kt=class kt extends x{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}const n=async(i,o,a,l)=>{const{viewer:c}=i;if(!c){console.error("AIMoveTo: ueViewer.viewer is undefined");return}const u=await c.callUeFunc({f:"AIMoveTo",p:{id:o,Destination:a,Time:l}});return u.error&&console.error("AIMoveTo:",u.error),u};this.d(A.aiMoveToEvent.don((i,o)=>{n(e,A.id,i,o)}));const s=async(i,o)=>{const{viewer:a}=i;if(!a){console.error("StopAIMove: ueViewer.viewer is undefined");return}const l=await a.callUeFunc({f:"StopAIMove",p:{id:o}});return l.error&&console.error("StopAIMove:",l.error),l};this.d(A.stopAIMoveEvent.don(()=>{s(e,A.id)}))}};C(kt,"type",kt.register("ESUeViewer",p.ESHuman.type,kt));let ai=kt;const ae=class ae extends UA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}A.anchor=[.5,1]}};C(ae,"type",ae.register("ESUeViewer",p.ESImageLabel.type,ae)),C(ae,"forceUeUpdateProps",[...UA.forceUeUpdateProps,"url"]),C(ae,"propValFuncs",{...UA.propValFuncs,url:A=>typeof A=="string"?p.ESSceneObject.context.getStrFromEnv(p.rpToap(A)):(A.url=p.ESSceneObject.context.getStrFromEnv(p.rpToap(A.url)),A)});let li=ae;const Gt=class Gt extends x{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(Gt,"type",Gt.register("ESUeViewer",p.ESLevelRuntimeModel.type,Gt));let ci=Gt;const Nt=class Nt extends Er{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(Nt,"type",Nt.register("ESUeViewer",p.ESLocalCircle.type,Nt));let di=Nt;const _t=class _t extends dA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(_t,"type",_t.register("ESUeViewer",p.ESLocalPolygonZ.type,_t));let ui=_t;const Vt=class Vt extends Er{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(Vt,"type",Vt.register("ESUeViewer",p.ESLocalRectangle.type,Vt));let hi=Vt;const Ot=class Ot extends x{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(Ot,"type",Ot.register("ESUeViewer",p.ESLocalSkyBox.type,Ot));let gi=Ot;const Wt=class Wt extends x{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(Wt,"type",Wt.register("ESUeViewer",p.ESLocationMeasurement.type,Wt));let Bi=Wt;const Xt=class Xt extends nA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(Xt,"type",Xt.register("ESUeViewer",p.ESPipeFence.type,Xt));let fi=Xt;const Jt=class Jt extends Fn{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(Jt,"type",Jt.register("ESUeViewer",p.ESPipeline.type,Jt));let wi=Jt;const zt=class zt extends yr{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}this.d(A.highlightFeatureEvent.don(n=>{const s=typeof n=="number"?n.toString():n;to(t,A.id,s)})),this.d(A.highlightFeatureAndFlyToEvent.don((n,s,i,o)=>{const a=typeof n=="number"?n.toString():n;ro(t,A.id,a,o??1)})),this.d(A.setLayerVisibleEvent.don((n,s)=>{let i="";typeof s!="string"?i=JSON.stringify(s):i=s,no(t,A.id,i)})),this.d(A.setLayerColorEvent.don((n,s)=>{let i="";typeof s!="string"?i=JSON.stringify(s):i=s,so(t,A.id,i)}))}};C(zt,"type",zt.register("ESUeViewer",p.ESPipeserTileset.type,zt));let pi=zt;const Yt=class Yt extends uA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(Yt,"type",Yt.register("ESUeViewer",p.ESPit.type,Yt));let Ci=Yt;const $t=class $t extends UA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}this.ad(A.getInitialStyleEvent.don(async()=>{try{const n=await t.callUeFunc({f:"GetInitialStyle",p:{id:A.id}});n.error!=""&&console.error("getInitialStyleEvent:",n.error),A.initialStyle.value=structuredClone(n.re)}catch(n){console.error("getInitialStyleEvent:",n),A.initialStyle.value=void 0}}))}};C($t,"type",$t.register("ESUeViewer",p.ESPoi2D.type,$t));let vi=$t;const Zt=class Zt extends x{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(Zt,"type",Zt.register("ESUeViewer",p.ESPoi3D.type,Zt));let mi=Zt;const le=class le extends dA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(le,"type",le.register("ESUeViewer",p.ESPoiTileset.type,le)),C(le,"forceUeUpdateProps",[...dA.forceUeUpdateProps,"url"]),C(le,"propValFuncs",{...dA.propValFuncs,url:A=>typeof A=="string"?p.ESSceneObject.context.getStrFromEnv(A):(A.url=p.ESSceneObject.context.getStrFromEnv(A.url),A)});let Fi=le;const qt=class qt extends nA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(qt,"type",qt.register("ESUeViewer",p.ESPolygonFence.type,qt));let Qi=qt;const De=class De extends uA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(De,"type",De.register("ESUeViewer",p.ESPolygonFlattenedPlane.type,De)),C(De,"propValFuncs",{...uA.propValFuncs,targetID:A=>{if(!A)return"";const e=p.ESSceneObject.getSceneObject(A);return e?(e.components.main??e).id:A}});let Ui=De;const jt=class jt extends uA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(jt,"type",jt.register("ESUeViewer",p.ESPolygonWithHole.type,jt));let Ei=jt;const Ar=class Ar extends jA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}this.d(()=>{A.ids=[]}),this.d(A.highlightInner3DtilesetEvent.don(n=>{n.highlight=!0})),this.d(A.removeHighlightInner3DtilesetEvent.don(n=>{n.highlight=!1}));{const n=o=>{o=o.toLocaleLowerCase();let a=[255,255,255,1];if(o.startsWith("#")){if(o.length===4){let l=parseInt(o[1]+o[1],16),c=parseInt(o[2]+o[2],16),u=parseInt(o[3]+o[3],16);a=[l,c,u,1]}else if(o.length===7){let l=parseInt(o.substring(1,3),16),c=parseInt(o.substring(3,5),16),u=parseInt(o.substring(5,7),16);a=[l,c,u,1]}}else if(o.startsWith("rgba")){let l=o.match(/^rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*([\d.]+)\s*\)$/);if(l){let c=parseInt(l[1]),u=parseInt(l[2]),d=parseInt(l[3]),B=parseFloat(l[4]);a=[c,u,d,B]}}else if(o.startsWith("rgb")){let l=o.match(/^rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/);if(l){let c=parseInt(l[1]),u=parseInt(l[2]),d=parseInt(l[3]);a=[c,u,d,1]}}else console.error("color类型只能为#rrggbb、#rgb、rgba(r,g,b,a)、rgb(r,g,b)");return[a[0]/255,a[1]/255,a[2]/255,a[3]]},s=()=>{const o=A.layerConfig;if(!o)return;const a=[];o.forEach(l=>{o.filter(u=>u.dataset==l.dataset).length==1?a.push({condition:[{field:"dataset",op:"==",value:l.dataset}],color:n(l.value.color??"rgb(255,255,255)"),show:l.value.visible}):a.push({condition:[{field:"layer",op:"==",value:l.layer},{field:"dataset",op:"==",value:l.dataset}],color:n(l.value.color??"rgb(255,255,255)"),show:l.value.visible})}),A.setFeatureStyle(a)};s();const i=this.dv(w.createNextAnimateFrameEvent(A.layerConfigChanged,A.colorBlendModeChanged));this.d(i.don(()=>{s()}))}}};C(Ar,"type",Ar.register("ESUeViewer",p.ESRtsTileset.type,Ar));let yi=Ar;const er=class er extends dA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}this.d(A.addTreesEvent.don(n=>{p.addTreesCallFunc(e,A.id,n)})),this.d(A.removeAllTreesEvent.don(()=>{p.removeAllTreesCallFunc(e,A.id)})),this.d(A.updateTreeParamsEvent.don(n=>{p.updateTreeParamsCallFunc(e,A.id,n)})),this.d(A.cutDownTreesEvent.don((n,s)=>{p.cutDownTreesCallFunc(e,A.id,n,s)})),this.d(A.growthSimulationEvent.don((n,s,i)=>{p.growthSimulationCallFunc(e,A.id,n,s,i)}))}};C(er,"type",er.register("ESUeViewer",p.ESSeparateFoliage.type,er));let Si=er;const tr=class tr extends x{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(tr,"type",tr.register("ESUeViewer",p.ESSubmergingAnalysis.type,tr));let Ii=tr;const rr=class rr extends uA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}this.d(A.startEvent.don(()=>{t.callUeFunc({f:"Start",p:{id:A.id}})})),this.d(A.stopEvent.don(()=>{t.callUeFunc({f:"Stop",p:{id:A.id}})}))}};C(rr,"type",rr.register("ESUeViewer",p.ESSunshineAnalysis.type,rr));let Ti=rr;const nr=class nr extends uA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}this.d(A.startEvent.don(()=>{t.callUeFunc({f:"Start",p:{id:A.id}})}))}};C(nr,"type",nr.register("ESUeViewer",p.ESSurfaceAreaMeasurement.type,nr));let Hi=nr;const sr=class sr extends UA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(sr,"type",sr.register("ESUeViewer",p.ESTextLabel.type,sr));let Li=sr;const Re=class Re extends UA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}this.d(A.callFunctionEvent.don(async(n,s)=>{const i=await yn(t,A.id,n,s);A.__callFunctionResultEvent.emit(i)}))}};C(Re,"type",Re.register("ESUeViewer",p.ESUEWidget.type,Re)),C(Re,"propValFuncs",{...UA.propValFuncs,info:A=>JSON.stringify(A??{})});let bi=Re;const id=r=>{switch(r){case 0:return"成功绑定";case 1:return"解绑之前的内容,成功绑定";case 2:return"未搜索到ActorTag,无法绑定";case 3:return"搜索到ActorTag但对应的Actor不是场景原有的,而是新建的,无法绑定";case 4:return"搜索到ActorTag对应的Actor是地形或3DTileset,无法绑定";default:return"未知错误"}},Zw=r=>{switch(r){case 0:return"创建成功";case 1:return"未找到对应的资源,无法创建";case 2:return"Id与场景中现有的ActorTag重复,创建后可能出现问题,创建失败";default:return"未知错误"}},ir=class ir extends p.EngineObject{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn(`${A.id} UeESUnrealActor viewer is undefined!`);return}this.d(()=>{Un(t,A.id)});const n=async()=>{l()||await t.callUeFunc({f:"update",p:{id:A.id,name:A.name,show:A.show,rotation:A.rotation,flyToParam:A.flyToParam??p.ESUnrealActor.defaultFlyToParam,flyInParam:A.flyInParam??p.ESUnrealActor.defaultFlyInParam,highlight:A.highlight,collision:A.collision,scale:A.scale,minVisibleDistance:A.minVisibleDistance,maxVisibleDistance:A.maxVisibleDistance}})},s=this.dv(w.createNextAnimateFrameEvent(A.showChanged,A.nameChanged,A.rotationChanged,A.flyToParamChanged,A.flyInParamChanged,A.highlightChanged,A.collisionChanged,A.scaleChanged,A.minVisibleDistanceChanged,A.maxVisibleDistanceChanged));this.d(s.don(n)),this.d(A.flushEvent.don(()=>s.flush()));let i,o;const a=async()=>{l()||(await t.callUeFunc({f:"update",p:{id:A.id,position:A.position}}),(e.debug??!1)&&console.log(`updatePostion:${A.position},actorTag:${A.actorTag},actorClass:${A.actorClass}`))},l=()=>!i&&!o?(console.warn(`${A.id} 未绑定ActorTag或未创建ActorClass!`),!0):!1,c=async()=>{const{id:d}=A,B=await e.unBindActorByID(d);B&&B.error!==""&&console.warn(`${A.id} UeESUnrealActor UnBindActorByID: ${B.error}`),i=void 0;const g=await t.callUeFunc({f:"destroy",p:{id:d}});if(g&&g.error!==""){console.warn(`${A.id} UeESUnrealActor DestroyActorByID: ${g.error}`);return}o=void 0},u=this.dv(w.react({type:"ActorClass",actorClass:"default"}));{const d=this.dv(w.createNextAnimateFrameEvent(A.actorClassChanged,A.actorTagChanged)),B=async()=>{A.actorTag!==""?u.value={type:"ActorTag",actorTag:A.actorTag}:u.value={type:"ActorClass",actorClass:A.actorClass===""?"default":A.actorClass}};B(),this.d(d.don(B)),this.d(A.flushEvent.don(()=>d.flush()))}{const d=this.dv(w.createProcessingFromAsyncFunc(async g=>{if(await g.promise(c()),u.value.type==="ActorTag"){const{actorTag:f}=u.value;await g.promise(c());try{A.lastActorStatus="null";const m=await g.promise(e.bindActorByTag(A.id,f));if(!m)return;if(m.error!==""){console.warn(`${A.id} UeESUnrealActor BindActorByTag:${f},${m.error}`);return}if(m.re.type===0)A.lastActorStatus="bound",i=f;else if(m.re.type===1)A.lastActorStatus="bound",i=f,console.warn(`${A.id} UeESUnrealActor BindActorByTag:${f},${id(m.re.type)}`);else{i=void 0,console.warn(`${A.id} UeESUnrealActor BindActorByTag error:${f}, ${id(m.re.type)}`);return}}catch(m){console.warn(`${A.id} UeESUnrealActor BindActorByTag catch error:${f}, ${m}`);return}}else if(u.value.type==="ActorClass"){const{actorClass:f}=u.value;try{const m=await g.promise(e.createActorByClass(A.id,f));if(!m)return;if(m.error!==""){console.warn(`${A.id} UeESUnrealActor CreateActorByClass error :${f}, ${m.error}`);return}if(m.re.type===0)A.lastActorStatus="created",o=f;else{console.warn(`${A.id} UeESUnrealActor CreateActorByClass error type :${f},${Zw(m.re.type)}`);return}}catch(m){console.warn(`${A.id} UeESUnrealActor CreateActorByClass error catch :${f}, ${JSON.stringify(m)}`);return}}await g.promise(n()),await g.promise(a())})),B=async()=>{d.restart()};B(),this.d(u.changed.don(B))}this.d(A.positionChanged.don(a)),this.d(A.callFunctionEvent.don(async(d,B)=>{if(l()){A.__callFunctionResultEvent.emit(void 0);return}const g=await yn(t,A.id,d,B);A.__callFunctionResultEvent.emit(g)})),this.d(A.smoothMoveEvent.don((d,B)=>{l()||_e(t,A.id,d,B)})),this.d(A.smoothMoveWithRotationEvent.don((d,B,g)=>{l()||ke(t,A.id,d,B,g)})),this.d(A.smoothMoveOnGroundEvent.don((d,B,g,f)=>{l()||Ge(t,A.id,d,B,f,g)})),this.d(A.smoothMoveWithRotationOnGroundEvent.don((d,B,g,f,m)=>{l()||Ne(t,A.id,d,B,g,f,m)})),this.d(A.automaticLandingEvent.don(d=>{if(l())return;const B=[A.position[0],A.position[1]];e.getHeightByLonLat(A.position[0],A.position[1],"Visibility").then(g=>{g!==null&&(A.position=[...B,g],A.collision=d)})})),this.d(A.flyToEvent.don(async(d,B)=>{if(l())return;const g=await Be(t,A.id,d);let f="over";g===void 0?f="error":g.endType===0?f="over":g.endType===1&&(f="cancelled"),A.flyOverEvent.emit(B,f,e)})),this.d(A.calcFlyToParamEvent.don(()=>{l()||$A(t,A.id)})),this.d(A.calcFlyInParamEvent.don(async()=>{if(!e.actived)return;const d=await e.getCurrentCameraInfo();if(!d)return;const{position:B,rotation:g}=d;A.flyInParam={position:B,rotation:g,flyDuration:1}})),this.d(e.propChanged.don(d=>{l()||d.objId===A.id&&Object.keys(d.props).forEach(B=>{const g=d.props[B]===null?void 0:d.props[B];A[B]=g})}))}};C(ir,"type",ir.register("ESUeViewer",p.ESUnrealActor.type,ir));let Mi=ir;const or=class or extends x{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(or,"type",or.register("ESUeViewer",p.ESVideoFusion.type,or));let Di=or;const ar=class ar extends x{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(ar,"type",ar.register("ESUeViewer",p.ESViewShed.type,ar));let Ri=ar;const lr=class lr extends nA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is underfined!");return}}};C(lr,"type",lr.register("ESUeViewer",p.ESVisibilityAnalysis.type,lr));let Pi=lr;const cr=class cr extends uA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}this.ad(w.track([A,"volume"],[A,"cutAndFillVolume"])),this.d(A.startEvent.don(()=>{t.callUeFunc({f:"Start",p:{id:A.id}})})),this.d(A.clearEvent.don(()=>{t.callUeFunc({f:"Clear",p:{id:A.id}})}))}};C(cr,"type",cr.register("ESUeViewer",p.ESVolumeMeasurement.type,cr));let Ki=cr;const Pe=class Pe extends UA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(Pe,"type",Pe.register("ESUeViewer",p.ESWidget.type,Pe)),C(Pe,"propValFuncs",{...UA.propValFuncs,info:A=>JSON.stringify(A??{})});let xi=Pe;const dr=class dr extends p.EngineObject{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}A.poi.actorTag=A.human.id,A.poi.positionOffset=[0,0,A.poiOffsetHeight-.8],this.d(A.poiOffsetHeightChanged.don(()=>{A.poi.positionOffset=[0,0,A.poiOffsetHeight-.8]})),this.d(()=>{A.poi.actorTag=""})}};C(dr,"type",dr.register("ESUeViewer",p.ESHumanPoi.type,dr));let ki=dr;p.ESSceneObject.context.getStrFromEnv(p.ESNavigator.defaults.imgUrl);const ur=class ur extends p.EngineObject{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}const n=this.disposeVar(new p.ESCustomDiv);e.add(n),this.dispose(()=>e.delete(n)),this.dispose(w.track([n,"show"],[A,"show"])),n.instanceClass=class extends w.Destroyable{constructor(i,o,a){super(),this._subContainer=i;const l=document.createElement("div");this._subContainer.appendChild(l),this.dispose(()=>this._subContainer.removeChild(l));{const d=async()=>{const B=await e.getCurrentCameraInfo(),g=B==null?void 0:B.position,m=[...B==null?void 0:B.rotation];m[0]=360,e.flyIn(g,m)};l.addEventListener("click",d),l.style.cursor="pointer",this.dispose(()=>l.removeEventListener("click",d))}{const d=()=>{l.style.width=`${A.cssSize?A.cssSize:p.ESNavigator.defaults.cssSize}px`,l.style.height=`${A.cssSize?A.cssSize:p.ESNavigator.defaults.cssSize}px`};d(),A.dispose(A.cssSizeChanged.disposableOn(d))}l.style.position="fixed";{const d=()=>{l.style.top=`${A.cssPosition?A.cssPosition[0]:p.ESNavigator.defaults.cssPosition[0]}px`,l.style.right=`${A.cssPosition?A.cssPosition[1]:p.ESNavigator.defaults.cssPosition[1]}px`};d(),A.dispose(A.cssPositionChanged.disposableOn(d))}l.style.transition=" right 0.4s linear",l.style.cursor="pointer";const c=document.createElement("div");l.appendChild(c),this.dispose(()=>l.removeChild(c)),c.style.width="100%",c.style.height="100%",c.style.position="relative";const u=document.createElement("img");c.appendChild(u),this.dispose(()=>c.removeChild(u)),u.style.width="100%",u.style.height="100%",u.style.border="none";{const d=()=>u.src=A.imgUrl;d(),A.dispose(A.imgUrlChanged.disposableOn(d))}{const d=()=>{const m=-e.getCurrentCameraInfo().rotation[0];u.style.transform=`rotate(${m}deg)`};let B;const g=async()=>{d(),A.show?(l.style.display="block",B=setInterval(()=>{d()},1e3)):(l.style.display="none",clearInterval(B))};this.dispose(A.showChanged.disposableOn(g)),g(),this.dispose(()=>clearInterval(B))}u.style.transformOrigin="50% 50%"}}}};C(ur,"type",ur.register("ESUeViewer",p.ESNavigator.type,ur));let Gi=ur;const ce=class ce extends nA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}{const n=()=>{let s=A.materialMode==="blue"?"multipleArrows":A.materialMode==="purple"?"singleArrow":A.materialMode;t.callUeFunc({f:"update",p:{id:A.id,materialMode:s}})};this.dispose(A.materialModeChanged.disposableOn(n))}}};C(ce,"type",ce.register("ESUeViewer",p.ESPath.type,ce)),C(ce,"forceUeUpdateProps",[...nA.forceUeUpdateProps]),C(ce,"propValFuncs",{...nA.propValFuncs});let Ni=ce;async function qw(r){navigator.clipboard.writeText(r).then(function(){console.log("复制成功")},function(A){console.log("复制失败")})}const hr=class hr extends p.EngineObject{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}const n=this.disposeVar(new p.ESCustomDiv);e.add(n),this.dispose(()=>e.delete(n)),n.instanceClass=class extends w.Destroyable{constructor(i,o,a){if(super(),this._subContainer=i,!a||!(a instanceof bA))return;const l=document.createElement("div");this._subContainer.appendChild(l),this.dispose(()=>this._subContainer.removeChild(l)),l.style.width="100%",l.style.position="absolute",l.style.height=`${p.ESViewerStatusBar.defaults.height}px`,l.style.left="0",l.style.bottom="0",l.style.color="#fff",l.style.padding="0 20px 0 0",l.style.boxSizing="border-box",l.style.lineHeight=`${p.ESViewerStatusBar.defaults.height}px`,l.style.zIndex="100",l.style.alignContent="center",l.style.justifyContent="space-between";const c=document.createElement("span");l.appendChild(c),this.dispose(()=>l.removeChild(c));const u=document.createElement("span");c.appendChild(u),this.dispose(()=>c.removeChild(u));const d=document.createElement("span");c.appendChild(d),d.addEventListener("dblclick",function(){let g=d.innerHTML;g.startsWith("鼠标位置")&&(g=g.slice(5)),qw(g)}),d.style.cursor="pointer",this.dispose(()=>c.removeChild(d));const B=document.createElement("span");l.appendChild(B),this.dispose(()=>l.removeChild(B));{const g=()=>{l.style.height=(A.height??p.ESViewerStatusBar.defaults.height)+"px",l.style.lineHeight=(A.height??p.ESViewerStatusBar.defaults.height)+"px"};this.dispose(A.heightChanged.disposableOn(g)),g()}{const g=()=>{l.style.fontSize=(A.fontSize??p.ESViewerStatusBar.defaults.fontSize)+"px"};this.dispose(A.fontSizeChanged.disposableOn(g)),g()}{const g=()=>{A.bgColor?l.style.background=`rgba(${A.bgColor[0]*255},${A.bgColor[1]*255},${A.bgColor[2]*255},${A.bgColor[3]})`:l.style.background=`rgba(${p.ESViewerStatusBar.defaults.bgColor[0]},${p.ESViewerStatusBar.defaults.bgColor[1]},${p.ESViewerStatusBar.defaults.bgColor[2]},${p.ESViewerStatusBar.defaults.bgColor[3]})`};this.dispose(A.bgColorChanged.disposableOn(g)),g()}a.getVersion().then(g=>{g&&(B.innerText=`Ue 版本 : ${g[0]} `)}).catch(g=>{console.log(g)});{const g=()=>{let F="",Q="";F+=`帧率:${a.getFPS().toFixed(0)}FPS`,u.innerText=F;const y=e.getCurrentCameraInfo();F+=` 经度: ${y.position[0].toFixed(5)}° 纬度: ${y.position[1].toFixed(5)}° 高度: ${y.position[2].toFixed(2)}米 偏航角: ${y.rotation[0].toFixed(2)}° 俯仰角: ${y.rotation[1].toFixed(2)}° 翻滚角:${y.rotation[2].toFixed(2)}° `,u.innerText=F,e.pick().then(L=>{if(L){const{pickResult:I}=L;if(I&&I.position){const{position:E}=I;Q+=`鼠标位置:${E[0].toFixed(5)}° ${E[1].toFixed(5)}° ${E[2].toFixed(2)}m`}else Q+="暂时无法获取鼠标位置...";d.innerText=Q}}).catch(L=>{console.log(L)})};let f;const m=async()=>{g(),A.show?(l.style.display="flex",f=setInterval(()=>{g()},1e3)):(l.style.display="none",clearInterval(f))};this.dispose(A.showChanged.disposableOn(m)),m(),this.dispose(()=>clearInterval(f))}}}}};C(hr,"type",hr.register("ESUeViewer",p.ESViewerStatusBar.type,hr));let _i=hr;const gr=class gr extends x{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(gr,"type",gr.register("ESUeViewer",p.ESGaussianSplatting.type,gr));let Vi=gr;const Br=class Br extends jA{constructor(e,t){super(e,t);C(this,"_es3DTileset",this.dv(new p.ES3DTileset));if(!t.viewer){console.warn("viewer is undefined!");return}this.es3DTileset.parentID=e.id;{const s=this._es3DTileset;e.components.disposableAdd(s,!0),this.d(w.track([s,"allowPicking"],[e,"allowPicking"])),this.d(w.track([s,"collision"],[e,"collision"])),this.d(w.bind([s,"flyToParam"],[e,"flyToParam"])),this.d(w.bind([s,"flyToParam"],[e,"flyToParam"])),this.d(w.track([s,"url"],[e,"url"])),this.d(w.track([s,"actorTag"],[e,"actorTag"])),this.d(w.track([s,"materialMode"],[e,"materialMode"])),this.d(w.track([s,"highlight"],[e,"highlight"])),this.d(w.track([s,"maximumScreenSpaceError"],[e,"maximumScreenSpaceError"])),this.d(w.track([s,"highlightID"],[e,"highlightID"])),this.d(w.track([s,"highlightColor"],[e,"highlightColor"])),this.d(w.bind([s,"offset"],[e,"offset"])),this.d(w.bind([s,"rotation"],[e,"rotation"])),this.d(w.track([s,"czmImageBasedLightingFactor"],[e,"czmImageBasedLightingFactor"])),this.d(w.track([s,"czmLuminanceAtZenith"],[e,"czmLuminanceAtZenith"])),this.d(w.track([s,"czmMaximumMemoryUsage"],[e,"czmMaximumMemoryUsage"])),this.d(w.track([s,"czmClassificationType"],[e,"czmClassificationType"])),this.d(w.track([s,"czmStyleJson"],[e,"czmStyleJson"])),this.d(w.track([s,"czmBackFaceCulling"],[e,"czmBackFaceCulling"])),this.d(w.track([s,"czmDebugShowBoundingVolume"],[e,"czmDebugShowBoundingVolume"])),this.d(w.track([s,"czmDebugShowContentBoundingVolume"],[e,"czmDebugShowContentBoundingVolume"])),this.d(w.track([s,"colorBlendMode"],[e,"colorBlendMode"])),this.d(w.track([s,"cacheBytes"],[e,"cacheBytes"])),this.d(w.track([s,"clippingPlaneEnabled"],[e,"clippingPlaneEnabled"])),this.d(w.track([s,"unionClippingRegions"],[e,"unionClippingRegions"])),this.d(w.track([s,"clippingPlaneEdgeColor"],[e,"clippingPlaneEdgeColor"])),this.d(w.track([s,"clippingPlaneEdgeWidth"],[e,"clippingPlaneEdgeWidth"])),this.d(w.track([s,"materialParams"],[e,"materialParams"])),this.d(w.bind([s,"supportEdit"],[e,"supportEdit"])),this.d(w.bind([s,"clippingPlanesId"],[e,"clippingPlanesId"])),this.d(w.bind([s,"clippingPlaneIds"],[e,"clippingPlaneIds"])),this.d(w.bind([s,"flattenedPlaneId"],[e,"flattenedPlaneId"])),this.d(w.bind([s,"flattenedPlaneEnabled"],[e,"flattenedPlaneEnabled"])),this.d(w.bind([s,"clippingPlaneId"],[e,"clippingPlaneId"])),this.d(w.bind([s,"excavateId"],[e,"excavateId"]))}{const s=this._es3DTileset;this.d(e.refreshTilesetEvent.don(()=>{s.refreshTileset()})),this.d(e.highlightFeatureEvent.don((...i)=>{s.highlightFeature(...i)})),this.d(e.highlightFeatureAndFlyToEvent.don((...i)=>{s.highlightFeatureAndFlyTo(...i)})),this.d(e.setFeatureColorEvent.don((...i)=>{s.setFeatureColor(...i)})),this.d(e.setFeatureVisableEvent.don((...i)=>{s.setFeatureVisable(...i)})),this.d(e.resetFeatureStyleEvent.don((...i)=>{s.resetFeatureStyle(...i)})),this.d(e.flyInEvent.don((...i)=>{s.flyIn(i[0])})),this.d(e.flyToEvent.don((...i)=>{s.flyTo(i[0])})),this.d(e.calcFlyToParamEvent.don((...i)=>{s.calcFlyToParam(...i)})),this.d(e.calcFlyInParamEvent.don((...i)=>{s.calcFlyInParam(...i)}))}{const s=this._es3DTileset;this.d(s.tilesetReady.don(i=>{e.tilesetReady.emit(i)})),this.d(s.pickedEvent.don(i=>{i.assign({sceneObject:e}),e.pickedEvent.emit(i)}))}{const s=()=>{this.es3DTileset.show=e.show};s(),this.d(e.showChanged.don(()=>{s()}))}}get es3DTileset(){return this._es3DTileset}};C(Br,"type",Br.register("ESUeViewer",p.ESRtsFeatureEditing.type,Br));let Oi=Br;const fr=class fr extends jA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(fr,"type",fr.register("ESUeViewer",p.ESMsTileset.type,fr));let Wi=fr;const wr=class wr extends uA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}const n=()=>{t.callUeFunc({f:"update",p:{id:A.id,height:A.height??p.ESGeoExtrudedPolygon.defaults.height,extrudedHeight:A.extrudedHeight??p.ESGeoExtrudedPolygon.defaults.extrudedHeight,perPositionHeight:A.perPositionHeight??p.ESGeoExtrudedPolygon.defaults.perPositionHeight}})},s=this.disposeVar(w.createNextAnimateFrameEvent(A.heightChanged,A.extrudedHeightChanged,A.perPositionHeightChanged));this.dispose(s.disposableOn(n)),this.dispose(A.createdEvent.disposableOn(n))}};C(wr,"type",wr.register("ESUeViewer",p.ESGeoExtrudedPolygon.type,wr));let Xi=wr;const pr=class pr extends x{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};C(pr,"type",pr.register("ESUeViewer",p.ESStaticMesh.type,pr));let Ji=pr;const Cr=class Cr extends nA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}this.d(A.startEvent.don(()=>{t.callUeFunc({f:"Start",p:{id:A.id}})})),this.d(A.clearEvent.don(()=>{t.callUeFunc({f:"Clear",p:{id:A.id}})}))}};C(Cr,"type",Cr.register("ESUeViewer",p.ESSkylineAnalysis.type,Cr));let zi=Cr;v.copyright=void 0;try{const r="earthsdk3-ue",A="3.4.0",e="2025-09-12T07:06:00.000Z",t="北京西部世界科技有限公司",n="地球可视化实验室 (EarthSDK&CesiumLab) https://www.bjxbsj.cn",s="7bb817c2218c8ba03b2c728ade4fc430cfee47dd",o=((Date.now()-175766076e4)/36e5).toFixed(1),a=`%c🌏 ${r}%c ${A}.${s.slice(0,8)}.${e} (距今${o}个小时)
|
|
113
113
|
%c${n?n+`
|
|
114
114
|
`:""}当前网站正在使用${r},此软件版权归${t}所有
|
|
115
|
-
`;v.copyright=Object.freeze({get owner(){return"北京西部世界科技有限公司"},get ownerlink(){return OWNERLINK_},get gituri(){return GITURI_&&GITURI_.replace("${commitId}","
|
|
115
|
+
`;v.copyright=Object.freeze({get owner(){return"北京西部世界科技有限公司"},get ownerlink(){return OWNERLINK_},get gituri(){return GITURI_&&GITURI_.replace("${commitId}","7bb817c2218c8ba03b2c728ade4fc430cfee47dd")},get info(){return a},get date(){return"2025-09-12T07:06:00.000Z"},get author(){return"suplyang"},get version(){return"3.4.0"},get name(){return"earthsdk3-ue"},get commitId(){return"7bb817c2218c8ba03b2c728ade4fc430cfee47dd"},print(l=!1){!l&&window._xe2_no_copy_print||console.info(this.info,`
|
|
116
116
|
font-size: 18px;
|
|
117
117
|
font-weight: 1000;
|
|
118
118
|
line-height: 1;
|
|
@@ -129,4 +129,4 @@ Msg: ${e}`;console.warn(t)}};h.verboseLogLevel=5,function(r){r.LIST_STREAMERS="l
|
|
|
129
129
|
color: rgb(0, 120, 215);
|
|
130
130
|
padding-bottom: 2px;
|
|
131
131
|
padding-left: 35px;
|
|
132
|
-
`)}}),window.g_XE3CopyRights=window.g_XE3CopyRights||{},window.g_XE3CopyRights[r]=v.copyright,window.g_earthsdk_copyright_print=window.g_earthsdk_copyright_print??!0,window.g_earthsdk_copyright_print&&v.copyright.print()}catch{}return v.ESUeViewer=bA,v.GeoDivFromESImageLabel=sd,v.GeoDivFromESTextLabel=nd,v.HighlightFeatureAndFlyToCallFunc=ro,v.HighlightFeatureCallFunc=to,v.SetLayerColorCallFunc=so,v.SetLayerVisibleCallFunc=no,v.UeCloudViewerBase=Ve,v.UeES3DTileset=yr,v.UeESAlarm=
|
|
132
|
+
`)}}),window.g_XE3CopyRights=window.g_XE3CopyRights||{},window.g_XE3CopyRights[r]=v.copyright,window.g_earthsdk_copyright_print=window.g_earthsdk_copyright_print??!0,window.g_earthsdk_copyright_print&&v.copyright.print()}catch{}return v.ESUeViewer=bA,v.GeoDivFromESImageLabel=sd,v.GeoDivFromESTextLabel=nd,v.HighlightFeatureAndFlyToCallFunc=ro,v.HighlightFeatureCallFunc=to,v.SetLayerColorCallFunc=so,v.SetLayerVisibleCallFunc=no,v.UeCloudViewerBase=Ve,v.UeES3DTileset=yr,v.UeESAlarm=Gn,v.UeESApertureEffect=Nn,v.UeESAreaMeasurement=_n,v.UeESBlastParticleSystem=Vn,v.UeESBoxClipping=On,v.UeESCameraView=Wn,v.UeESCameraVisibleRange=Xn,v.UeESCar=Jn,v.UeESClassification=zn,v.UeESClippingPlane=Yn,v.UeESDataMesh=$n,v.UeESDatasmithRuntimeModel=Zn,v.UeESDirectionMeasurement=qn,v.UeESDistanceMeasurement=jn,v.UeESDynamicWater=As,v.UeESEntityCluster=es,v.UeESExcavate=ts,v.UeESFireParticleSystem=rs,v.UeESForestTileset=ns,v.UeESGaussianSplatting=Vi,v.UeESGeoDiv=ti,v.UeESGeoExtrudedPolygon=Xi,v.UeESGeoJson=ri,v.UeESGeoLineString=Fn,v.UeESGeoPolygon=uA,v.UeESGeoRectangle=ni,v.UeESGeoVector=nA,v.UeESGeoWater=si,v.UeESGltfModel=ii,v.UeESHeightMeasurement=oi,v.UeESHuman=ai,v.UeESHumanPoi=ki,v.UeESImageLabel=li,v.UeESImageryLayer=xn,v.UeESLabel=UA,v.UeESLevelRuntimeModel=ci,v.UeESLocalCircle=di,v.UeESLocalPolygon=Sr,v.UeESLocalPolygonZ=ui,v.UeESLocalRectangle=hi,v.UeESLocalSkyBox=gi,v.UeESLocalVector=Kn,v.UeESLocalVector2D=Er,v.UeESLocationMeasurement=Bi,v.UeESMsTileset=Wi,v.UeESNavigator=Gi,v.UeESObjectWithLocation=x,v.UeESPath=Ni,v.UeESPipeFence=fi,v.UeESPipeline=wi,v.UeESPipeserTileset=pi,v.UeESPit=Ci,v.UeESPoi2D=vi,v.UeESPoi3D=mi,v.UeESPoiTileset=Fi,v.UeESPolygonFence=Qi,v.UeESPolygonFlattenedPlane=Ui,v.UeESPolygonWithHole=Ei,v.UeESRtsFeatureEditing=Oi,v.UeESRtsTileset=yi,v.UeESSceneObject=jA,v.UeESSeparateFoliage=Si,v.UeESSkylineAnalysis=zi,v.UeESStaticMesh=Ji,v.UeESSubmergingAnalysis=Ii,v.UeESSunshineAnalysis=Ti,v.UeESSurfaceAreaMeasurement=Hi,v.UeESTerrainLayer=kn,v.UeESTextLabel=Li,v.UeESUEWidget=bi,v.UeESUnrealActor=Mi,v.UeESVideoFusion=Di,v.UeESViewShed=Ri,v.UeESViewerStatusBar=_i,v.UeESVisibilityAnalysis=Pi,v.UeESVisualObject=dA,v.UeESVolumeMeasurement=Ki,v.UeESWidget=xi,v.bind3DTilesetByTagCallFunc=Mo,v.bindActorByTagCallFunc=Io,v.bindImageryByTagCallFunc=Po,v.calcFlyToParamCallFunc=$A,v.callFunctionCallFunc=yn,v.captureCallFunc=fo,v.changeNavigationModeCallFunc=HA,v.createActorByClassCallFunc=bo,v.destroyCallFunc=Un,v.flyInCallFunc=xe,v.flyInDefaultCameraCallFunc=Zi,v.flyToCallFunc=Be,v.generateMemReportCallFunc=eo,v.getAllSocketNamesByActorTagCallFunc=vo,v.getBoundSphereCallFunc=Fo,v.getBoundSphereWithChildrenCallFunc=Qo,v.getCameraRelativeHeightCallFunc=Go,v.getFillMaterialParamInfoCallFunc=Eo,v.getGlobalPropertyCallFunc=yo,v.getHeightByLonLatCallFunc=go,v.getHeightByLonLatsCallFunc=Bo,v.getIdByComponentNameAndHitItemCallFunc=ko,v.getLonLatAltToScreenPositionCallFunc=po,v.getObjectByInfoCallFunc=So,v.getStatusCallFunc=Oo,v.getStrokeMaterialParamInfoCallFunc=Uo,v.getTilesetMaterialIDListCallFunc=zo,v.getVersionCallFunc=mo,v.highlightActorByTagCallFunc=_o,v.mountPakFiles=Ao,v.moveObjectsCallFunc=Jo,v.partialCaptureCallFunc=wo,v.pickCallFunc=uo,v.pickPositionCallFunc=ho,v.quitCallFunc=co,v.refreshTilesetCallFunc=$i,v.resetWithCurrentCameraCallFunc=En,v.restoreOriginalSceneCallFunc=To,v.saveStringToFileCallFunc=No,v.sendCustomMessageCallFunc=Vo,v.setGlobalPropertyCallFunc=lo,v.setNodePositionCallFunc=io,v.setNodeRotationCallFunc=oo,v.setNodeScaleCallFunc=ao,v.smoothMoveCallFunc=_e,v.smoothMoveOnGroundCallFunc=Ge,v.smoothMoveWithRotationCallFunc=ke,v.smoothMoveWithRotationOnGroundCallFunc=Ne,v.startEditingCallFunc=Wo,v.startVoiceCallFunc=qi,v.stopEditingCallFunc=Xo,v.stopVoiceCallFunc=ji,v.uePositionToLonLatAltCallFunc=Co,v.unBind3DTilesetByIdCallFunc=Ro,v.unBind3DTilesetByTagCallFunc=Do,v.unBindActorByIDCallFunc=Ho,v.unBindActorByTagCallFunc=Lo,v.unBindImageryByIdCallFunc=xo,v.unBindImageryByTagCallFunc=Ko,Object.defineProperty(v,Symbol.toStringTag,{value:"Module"}),v}({},EarthSDK3,xbsj_base);
|