@panoramax/web-viewer 5.3.0-develop-33f2daf4 → 5.3.0-develop-f5cca65c
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.
|
@@ -2077,7 +2077,7 @@ function*(e,t){if(void 0!==e){let i=0;for(const n of e)yield t(n,i++)}}(this._re
|
|
|
2077
2077
|
${"empty"===this._icon?Ir(Ts):q}
|
|
2078
2078
|
${"warn"===this._icon?Ir(Hr):q}
|
|
2079
2079
|
</span>
|
|
2080
|
-
</div>`}}customElements.define("pnx-search-bar",dw);class uw extends EventTarget{constructor(e,t={}){if(super(),null==e||"string"!=typeof e){const e=new Error("endpoint parameter is empty or not a valid string");throw this.dispatchEvent(new CustomEvent("broken",{detail:{error:e}})),e}if(e.startsWith("/")&&(e=window.location.href.split("/").slice(0,3).join("/")+e),!uw.isValidHttpUrl(e)){const t=new Error(`endpoint parameter is not a valid URL: ${e}`);throw this.dispatchEvent(new CustomEvent("broken",{detail:{error:t}})),t}this._endpoint=e,this._isReady=0,this._dataBbox=null,this._fetchOpts=t?.fetch||{},this._metadata={},this._configuration=null,t.skipReadLanding||(this._readLanding=fetch(e,this._getFetchOptions()).then(e=>e.json()).then(e=>this._parseLanding(e,t)).catch(e=>(this._isReady=-1,console.error(e),this.dispatchEvent(new CustomEvent("broken",{detail:{error:e}})),Promise.reject("Viewer failed to communicate with API"))).then(()=>(this._isReady=1,this.dispatchEvent(new Event("ready")),"API is ready")))}onceReady(){return-1===this._isReady?Promise.reject("Viewer failed to communicate with API"):1===this._isReady?Promise.resolve("API is ready"):this._readLanding}isReady(){return 1===this._isReady}getAvailableFeatures(){return Object.entries(this._endpoints).filter(e=>null!==e[1]).map(e=>e[0])}getUnavailableFeatures(){return Object.entries(this._endpoints).filter(e=>null===e[1]).map(e=>e[0])}_parseLanding(e,t){if(this._endpoints={collections:null,search:null,style:null,user_style:null,tiles:t?.tiles||null,user_tiles:null,user_search:null,collection_preview:null,item_preview:null,rss:null,report:null,queryables:null},!e||!e.links||!Array.isArray(e.links))throw new Error("API Landing page doesn't contain 'links' list");if(!e.stac_version.startsWith("1."))throw new Error(`API is not in a supported STAC version (Panoramax viewer supports only 1.x, API is ${e.stac_version})`);this._metadata.name=e.title||"Unnamed",this._metadata.stac_version=e.stac_version,this._metadata.geovisio_version=e.geovisio_version;const i=[],n=[];if([{rel:"search",type:"application/geo+json",endpointId:"search",mandatory:!0,missingIssue:"No direct access to pictures metadata."},{rel:"data",type:"application/json",endpointId:"collections",mandatory:!0,missingIssue:"No way for viewer to access sequences."},{rel:"data",type:"application/rss+xml",endpointId:"rss"},{rel:"xyz",type:"application/vnd.mapbox-vector-tile",endpointId:"tiles"},{rel:"xyz-style",type:"application/json",endpointId:"style"},{rel:"user-xyz-style",type:"application/json",endpointId:"user_style"},{rel:"user-xyz",type:"application/vnd.mapbox-vector-tile",endpointId:"user_tiles"},{rel:"user-search",type:"application/json",endpointId:"user_search",missingIssue:"Filter map data by user name will not be available."},{rel:"collection-preview",type:"image/jpeg",endpointId:"collection_preview",missingIssue:"Display of thumbnail could be slower."},{rel:"item-preview",type:"image/jpeg",endpointId:"item_preview",missingIssue:"Display of thumbnail could be slower."},{rel:"report",type:"application/json",endpointId:"report"},{rel:"http://www.opengis.net/def/rel/ogc/1.0/queryables",type:"application/schema+json",endpointId:"queryables",missingIssue:"Tags map overlay will not be available."}].forEach(t=>{const a=e.links.filter(e=>e.rel===t.rel&&e.type===t.type);if(0===a.length){if(!this._endpoints[t.endpointId]){let e=`API doesn't offer a '${t.rel}' (${t.type}) endpoint in its links`;t.missingIssue&&(e+=`\n${t.missingIssue}`),t.mandatory?i.push(e):t.missingIssue&&n.push(e)}}else{const e=1===a.length?a[0]:a.find(e=>e.title?.includes("v2"))||a[0];if(!uw.isValidHttpUrl(e.href))throw new Error(`API endpoint '${e.rel}' (${e.type}) is not a valid URL: ${e.href}`);this._endpoints[t.endpointId]&&"xyz-style"!==t.endpointId||(this._endpoints[t.endpointId]=e.href)}}),this._endpoints.style||this._endpoints.tiles||n.push("API doesn't offer 'xyz' or 'xyz-style' endpoints in its links.\nMap widget will not be available."),this._endpoints.user_style||this._endpoints.user_tiles||n.push("API doesn't offer 'user-xyz' or 'user-xyz-style' endpoints in its links.\nFilter map data by user ID will not be available."),n.forEach(e=>console.warn(e)),i.length>0)throw new Error(i.join("\n"));const a=e?.extent?.spatial?.bbox;this._dataBbox=a&&Array.isArray(a)&&a.length>0&&Array.isArray(a[0])&&4===a[0].length?[[a[0][0],a[0][1]],[a[0][2],a[0][3]]]:null}_getFetchOptions(e=!1){const t=Object.assign({},this._fetchOpts);return e||(t.signal=AbortSignal.timeout(15e3)),t}_getMapRequestTransform(){const e=this._getFetchOptions();return delete e.signal,t=>{if(t.startsWith(this._endpoint)){if(Object.keys(e).length>0)return{url:t,...e}}else if(t.includes("data.geopf.fr")&&t.includes("@2x"))return{url:t.replace("@2x","")}}}_getPSVWithCredentials(){return"include"===this._getFetchOptions().credentials?e=>e.startsWith(this._endpoint):void 0}cleanResourceURL(e){if(!e)return;const t=new URL(this._endpoint);return e.startsWith("/")?t.protocol+"//"+t.host+e:e.startsWith("./")?this._endpoint+e.substring(1):e}async getSequenceItems(e,t=null,i=null,n=null){if(!this.isReady())throw new Error("API is not ready to use");try{return uw.isIdValid(e),await fetch(t||`${this._endpoints.collections}/${e}/items${n?"?limit="+n:""}`,this._getFetchOptions(!0)).then(e=>e.json()).then(t=>{let a=t;i&&(a.features=i.features.concat(a.features));const r=t.links.find(e=>"next"===e.rel);return!n&&r?this.getSequenceItems(e,r.href,a):a})}catch(e){return await Promise.reject(e)}}getPicturesAroundCoordinatesUrl(e,t,i=5e-4,n=null,a=null){if(!this.isReady())throw new Error("API is not ready to use");if(isNaN(parseFloat(e))||isNaN(parseFloat(t)))throw new Error("lat and lon parameters should be valid numbers");const r=[t-i,e-i,t+i,e+i].map(e=>e.toFixed(7)).join(","),s=n?`&limit=${n}`:"",o=a?`&collections=${a}`:"";return`${this._endpoints.search}?bbox=${r}${s}${o}`}getPicturesAroundCoordinates(e,t,i,n,a){return fetch(this.getPicturesAroundCoordinatesUrl(e,t,i,n,a),this._getFetchOptions()).then(e=>e.json())}getPictureMetadataUrl(e,t){if(!this.isReady())throw new Error("API is not ready to use");if(uw.isIdValid(e))return t?`${this._endpoints.collections}/${t}/items/${e}`:`${this._endpoints.search}?ids=${e}`}findThumbnailInPictureFeature(e){if(!this.isReady())throw new Error("API is not ready to use");if(!e||!e.assets)return null;let t=null;for(let i of Object.values(e.assets)){if(i.roles.includes("thumbnail")&&"image/jpeg"===i.type&&uw.isValidHttpUrl(i.href))return this.cleanResourceURL(i.href);i.roles.includes("visual")&&"image/jpeg"===i.type&&uw.isValidHttpUrl(i.href)&&(t=this.cleanResourceURL(i.href))}return t}getPictureThumbnailURLForSequence(e,t){if(!this.isReady())throw new Error("API is not ready to use");if(this._endpoints.collection_preview)return Promise.resolve(this._endpoints.collection_preview.replace("{id}",e));if(t&&Array.isArray(t.links)&&t.links.length>0){let e=t.links.find(e=>"preview"===e.rel&&"image/jpeg"===e.type);if(e&&uw.isValidHttpUrl(e.href))return Promise.resolve(e.href)}const i=`${this._endpoints.search}?limit=1&collections=${e}`;return fetch(i,this._getFetchOptions()).then(e=>e.json()).then(e=>Array.isArray(e.features)&&0!==e.features.length?this.findThumbnailInPictureFeature(e.features.pop()):null)}getPictureThumbnailURL(e,t){if(!this.isReady())throw new Error("API is not ready to use");return e?this._endpoints.item_preview?Promise.resolve(this._endpoints.item_preview.replace("{id}",e)):e&&t?fetch(`${this._endpoints.collections}/${t}/items/${e}`,this._getFetchOptions()).then(e=>e.json()).then(e=>e?this.findThumbnailInPictureFeature(e):null):fetch(`${this._endpoints.search}?ids=${e}`,this._getFetchOptions()).then(e=>e.json()).then(e=>e&&Array.isArray(e.features)&&0!==e.features.length?this.findThumbnailInPictureFeature(e.features.pop()):null):Promise.resolve(null)}getRSSURL(e){if(!this.isReady())throw new Error("API is not ready to use");if(this._endpoints.rss){let t=this._endpoints.rss;return e&&(t+=t.includes("?")?"&":"?",t+="bbox="+[e.getWest(),e.getSouth(),e.getEast(),e.getNorth()].join(",")),t}return null}getSequenceMetadataUrl(e){if(!this.isReady())throw new Error("API is not ready to use");return`${this._endpoints.collections}/${e}`}getSequenceMetadata(e){if(!this.isReady())throw new Error("API is not ready to use");return fetch(this.getSequenceMetadataUrl(e),this._getFetchOptions()).then(e=>e.json())}getDataBbox(){if(!this.isReady())throw new Error("API is not ready to use");return this._dataBbox}searchUsers(e){if(!this.isReady())throw new Error("API is not ready to use");if(!this._endpoints.user_search)throw new Error("User search is not available");return fetch(`${this._endpoints.user_search}?q=${e}`,this._getFetchOptions()).then(e=>e.json()).then(e=>e?.features||null)}getUserName(e){if(!this.isReady())throw new Error("API is not ready to use");if(!this._endpoints.user_search)throw new Error("User search is not available");return fetch(this._endpoints.user_search.replace(/\/search$/,`/${e}`),this._getFetchOptions()).then(e=>e.json()).then(e=>e?.label||e?.name||null)}sendReport(e){if(!this.isReady())throw new Error("API is not ready to use");if(!this._endpoints.report)throw new Error("Report sending is not available");const t={...this._getFetchOptions(),method:"POST",body:JSON.stringify(e),headers:{"Content-Type":"application/json"}};return fetch(this._endpoints.report,t).then(async e=>{if(e.status>=400){let t=await e.text();try{t=JSON.parse(t).message}catch(e){}return Promise.reject(t)}return e.json()})}deletePicture(e,t){if(!this.isReady())throw new Error("API is not ready to use");let i=`${this._endpoint}/collections/${e}/items/${t}`;const n={...this._getFetchOptions(),method:"DELETE"};return fetch(i,n).then(async e=>{if(e.status>=400){let t=await e.text();try{t=JSON.parse(t).message}catch(e){}return Promise.reject(t)}return!0})}sendPictureSemantics(e,t){if(!this.isReady())throw new Error("API is not ready to use");if(!e?.sequence?.id||!e?.id)throw new Error("Missing IDs from picture");let i=this.getPictureMetadataUrl(e.id,e.sequence.id);e?.origInstance&&(i=`${e.origInstance.href}/api/collections/${e.sequence.id}/items/${e.id}`);const n={...this._getFetchOptions(),method:"PATCH",body:JSON.stringify({semantics:t}),headers:{"Content-Type":"application/json"}};return fetch(i,n).then(async e=>{if(e.status>=400){let t=await e.text();try{t=JSON.parse(t).message}catch(e){}return Promise.reject(t)}return e.json()})}createPictureAnnotation(e,t,i){if(!this.isReady())throw new Error("API is not ready to use");if(!e?.sequence?.id||!e?.id)throw new Error("Missing IDs from picture");let n=this.getPictureMetadataUrl(e.id,e.sequence.id)+"/annotations";e?.origInstance&&(n=`${e.origInstance.href}/api/collections/${e.sequence.id}/items/${e.id}/annotations`);const a={...this._getFetchOptions(),method:"POST",body:JSON.stringify({semantics:i,shape:{type:"Polygon",coordinates:[t]}}),headers:{"Content-Type":"application/json"}};return fetch(n,a).then(async e=>{if(e.status>=400){let t=await e.text();try{t=JSON.parse(t).message}catch(e){}return Promise.reject(t)}return e.json()})}editPictureAnnotation(e,t){if(!this.isReady())throw new Error("API is not ready to use");let i=`${this._endpoint}/annotations/${e}`;const n={...this._getFetchOptions(),method:"PATCH",body:JSON.stringify({semantics:t}),headers:{"Content-Type":"application/json"}};return fetch(i,n).then(async e=>{if(e.status>=400){let t=await e.text();try{t=JSON.parse(t).message}catch(e){}return Promise.reject(t)}return e.json()})}deletePictureAnnotation(e){if(!this.isReady())throw new Error("API is not ready to use");let t=`${this._endpoint}/annotations/${e}`;const i={...this._getFetchOptions(),method:"DELETE"};return fetch(t,i).then(async e=>{if(e.status>=400){let t=await e.text();try{t=JSON.parse(t).message}catch(e){}return Promise.reject(t)}return!0})}getAuthURL(){return this._configuration?Promise.resolve(!!this._configuration?.auth?.enabled&&`${this._endpoint}/auth/login?next_url=<CBURL>`):null===this._configuration?fetch(this._endpoint+"/configuration",this._getFetchOptions()).then(e=>e.json()).then(e=>(this._configuration=e,this.getAuthURL())).catch(()=>(this._configuration=!1,!1)):Promise.resolve(!1)}static isValidHttpUrl(e){let t;try{t=new URL(e)}catch(e){return!1}return"http:"===t.protocol||"https:"===t.protocol}static isIdValid(e){if(Zs(e))throw new Error("id should be a valid picture unique identifier");return!0}}var hw={Space_Separator:/[\u1680\u2000-\u200A\u202F\u205F\u3000]/,ID_Start:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/,ID_Continue:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/},pw={isSpaceSeparator:e=>"string"==typeof e&&hw.Space_Separator.test(e),isIdStartChar:e=>"string"==typeof e&&(e>="a"&&e<="z"||e>="A"&&e<="Z"||"$"===e||"_"===e||hw.ID_Start.test(e)),isIdContinueChar:e=>"string"==typeof e&&(e>="a"&&e<="z"||e>="A"&&e<="Z"||e>="0"&&e<="9"||"$"===e||"_"===e||""===e||""===e||hw.ID_Continue.test(e)),isDigit:e=>"string"==typeof e&&/[0-9]/.test(e),isHexDigit:e=>"string"==typeof e&&/[0-9A-Fa-f]/.test(e)};let Aw,mw,gw,fw,_w,vw,Ew,yw,bw;function kw(e,t,i){const n=e[t];if(null!=n&&"object"==typeof n)if(Array.isArray(n))for(let e=0;e<n.length;e++){const t=String(e),a=kw(n,t,i);void 0===a?delete n[t]:Object.defineProperty(n,t,{value:a,writable:!0,enumerable:!0,configurable:!0})}else for(const e in n){const t=kw(n,e,i);void 0===t?delete n[e]:Object.defineProperty(n,e,{value:t,writable:!0,enumerable:!0,configurable:!0})}return i.call(e,t,n)}let xw,ww,Mw,Sw,Cw;function Tw(){for(xw="default",ww="",Mw=!1,Sw=1;;){Cw=Dw();const e=Iw[xw]();if(e)return e}}function Dw(){if(Aw[fw])return String.fromCodePoint(Aw.codePointAt(fw))}function Pw(){const e=Dw();return"\n"===e?(_w++,vw=0):e?vw+=e.length:vw++,e&&(fw+=e.length),e}const Iw={default(){switch(Cw){case"\t":case"\v":case"\f":case" ":case" ":case"\ufeff":case"\n":case"\r":case"\u2028":case"\u2029":return void Pw();case"/":return Pw(),void(xw="comment");case void 0:return Pw(),Lw("eof")}if(!pw.isSpaceSeparator(Cw))return Iw[mw]();Pw()},comment(){switch(Cw){case"*":return Pw(),void(xw="multiLineComment");case"/":return Pw(),void(xw="singleLineComment")}throw Bw(Pw())},multiLineComment(){switch(Cw){case"*":return Pw(),void(xw="multiLineCommentAsterisk");case void 0:throw Bw(Pw())}Pw()},multiLineCommentAsterisk(){switch(Cw){case"*":return void Pw();case"/":return Pw(),void(xw="default");case void 0:throw Bw(Pw())}Pw(),xw="multiLineComment"},singleLineComment(){switch(Cw){case"\n":case"\r":case"\u2028":case"\u2029":return Pw(),void(xw="default");case void 0:return Pw(),Lw("eof")}Pw()},value(){switch(Cw){case"{":case"[":return Lw("punctuator",Pw());case"n":return Pw(),Rw("ull"),Lw("null",null);case"t":return Pw(),Rw("rue"),Lw("boolean",!0);case"f":return Pw(),Rw("alse"),Lw("boolean",!1);case"-":case"+":return"-"===Pw()&&(Sw=-1),void(xw="sign");case".":return ww=Pw(),void(xw="decimalPointLeading");case"0":return ww=Pw(),void(xw="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return ww=Pw(),void(xw="decimalInteger");case"I":return Pw(),Rw("nfinity"),Lw("numeric",1/0);case"N":return Pw(),Rw("aN"),Lw("numeric",NaN);case'"':case"'":return Mw='"'===Pw(),ww="",void(xw="string")}throw Bw(Pw())},identifierNameStartEscape(){if("u"!==Cw)throw Bw(Pw());Pw();const e=zw();switch(e){case"$":case"_":break;default:if(!pw.isIdStartChar(e))throw jw()}ww+=e,xw="identifierName"},identifierName(){switch(Cw){case"$":case"_":case"":case"":return void(ww+=Pw());case"\\":return Pw(),void(xw="identifierNameEscape")}if(!pw.isIdContinueChar(Cw))return Lw("identifier",ww);ww+=Pw()},identifierNameEscape(){if("u"!==Cw)throw Bw(Pw());Pw();const e=zw();switch(e){case"$":case"_":case"":case"":break;default:if(!pw.isIdContinueChar(e))throw jw()}ww+=e,xw="identifierName"},sign(){switch(Cw){case".":return ww=Pw(),void(xw="decimalPointLeading");case"0":return ww=Pw(),void(xw="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return ww=Pw(),void(xw="decimalInteger");case"I":return Pw(),Rw("nfinity"),Lw("numeric",Sw*(1/0));case"N":return Pw(),Rw("aN"),Lw("numeric",NaN)}throw Bw(Pw())},zero(){switch(Cw){case".":return ww+=Pw(),void(xw="decimalPoint");case"e":case"E":return ww+=Pw(),void(xw="decimalExponent");case"x":case"X":return ww+=Pw(),void(xw="hexadecimal")}return Lw("numeric",0*Sw)},decimalInteger(){switch(Cw){case".":return ww+=Pw(),void(xw="decimalPoint");case"e":case"E":return ww+=Pw(),void(xw="decimalExponent")}if(!pw.isDigit(Cw))return Lw("numeric",Sw*Number(ww));ww+=Pw()},decimalPointLeading(){if(pw.isDigit(Cw))return ww+=Pw(),void(xw="decimalFraction");throw Bw(Pw())},decimalPoint(){switch(Cw){case"e":case"E":return ww+=Pw(),void(xw="decimalExponent")}return pw.isDigit(Cw)?(ww+=Pw(),void(xw="decimalFraction")):Lw("numeric",Sw*Number(ww))},decimalFraction(){switch(Cw){case"e":case"E":return ww+=Pw(),void(xw="decimalExponent")}if(!pw.isDigit(Cw))return Lw("numeric",Sw*Number(ww));ww+=Pw()},decimalExponent(){switch(Cw){case"+":case"-":return ww+=Pw(),void(xw="decimalExponentSign")}if(pw.isDigit(Cw))return ww+=Pw(),void(xw="decimalExponentInteger");throw Bw(Pw())},decimalExponentSign(){if(pw.isDigit(Cw))return ww+=Pw(),void(xw="decimalExponentInteger");throw Bw(Pw())},decimalExponentInteger(){if(!pw.isDigit(Cw))return Lw("numeric",Sw*Number(ww));ww+=Pw()},hexadecimal(){if(pw.isHexDigit(Cw))return ww+=Pw(),void(xw="hexadecimalInteger");throw Bw(Pw())},hexadecimalInteger(){if(!pw.isHexDigit(Cw))return Lw("numeric",Sw*Number(ww));ww+=Pw()},string(){switch(Cw){case"\\":return Pw(),void(ww+=function(){switch(Dw()){case"b":return Pw(),"\b";case"f":return Pw(),"\f";case"n":return Pw(),"\n";case"r":return Pw(),"\r";case"t":return Pw(),"\t";case"v":return Pw(),"\v";case"0":if(Pw(),pw.isDigit(Dw()))throw Bw(Pw());return"\0";case"x":return Pw(),function(){let e="",t=Dw();if(!pw.isHexDigit(t))throw Bw(Pw());if(e+=Pw(),t=Dw(),!pw.isHexDigit(t))throw Bw(Pw());return e+=Pw(),String.fromCodePoint(parseInt(e,16))}();case"u":return Pw(),zw();case"\n":case"\u2028":case"\u2029":return Pw(),"";case"\r":return Pw(),"\n"===Dw()&&Pw(),"";case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case void 0:throw Bw(Pw())}return Pw()}());case'"':return Mw?(Pw(),Lw("string",ww)):void(ww+=Pw());case"'":return Mw?void(ww+=Pw()):(Pw(),Lw("string",ww));case"\n":case"\r":throw Bw(Pw());case"\u2028":case"\u2029":!function(e){console.warn(`JSON5: '${Gw(e)}' in strings is not valid ECMAScript; consider escaping`)}(Cw);break;case void 0:throw Bw(Pw())}ww+=Pw()},start(){switch(Cw){case"{":case"[":return Lw("punctuator",Pw())}xw="value"},beforePropertyName(){switch(Cw){case"$":case"_":return ww=Pw(),void(xw="identifierName");case"\\":return Pw(),void(xw="identifierNameStartEscape");case"}":return Lw("punctuator",Pw());case'"':case"'":return Mw='"'===Pw(),void(xw="string")}if(pw.isIdStartChar(Cw))return ww+=Pw(),void(xw="identifierName");throw Bw(Pw())},afterPropertyName(){if(":"===Cw)return Lw("punctuator",Pw());throw Bw(Pw())},beforePropertyValue(){xw="value"},afterPropertyValue(){switch(Cw){case",":case"}":return Lw("punctuator",Pw())}throw Bw(Pw())},beforeArrayValue(){if("]"===Cw)return Lw("punctuator",Pw());xw="value"},afterArrayValue(){switch(Cw){case",":case"]":return Lw("punctuator",Pw())}throw Bw(Pw())},end(){throw Bw(Pw())}};function Lw(e,t){return{type:e,value:t,line:_w,column:vw}}function Rw(e){for(const t of e){if(Dw()!==t)throw Bw(Pw());Pw()}}function zw(){let e="",t=4;for(;t-- >0;){const t=Dw();if(!pw.isHexDigit(t))throw Bw(Pw());e+=Pw()}return String.fromCodePoint(parseInt(e,16))}const Fw={start(){if("eof"===Ew.type)throw Ow();Uw()},beforePropertyName(){switch(Ew.type){case"identifier":case"string":return yw=Ew.value,void(mw="afterPropertyName");case"punctuator":return void Nw();case"eof":throw Ow()}},afterPropertyName(){if("eof"===Ew.type)throw Ow();mw="beforePropertyValue"},beforePropertyValue(){if("eof"===Ew.type)throw Ow();Uw()},beforeArrayValue(){if("eof"===Ew.type)throw Ow();"punctuator"!==Ew.type||"]"!==Ew.value?Uw():Nw()},afterPropertyValue(){if("eof"===Ew.type)throw Ow();switch(Ew.value){case",":return void(mw="beforePropertyName");case"}":Nw()}},afterArrayValue(){if("eof"===Ew.type)throw Ow();switch(Ew.value){case",":return void(mw="beforeArrayValue");case"]":Nw()}},end(){}};function Uw(){let e;switch(Ew.type){case"punctuator":switch(Ew.value){case"{":e={};break;case"[":e=[]}break;case"null":case"boolean":case"numeric":case"string":e=Ew.value}if(void 0===bw)bw=e;else{const t=gw[gw.length-1];Array.isArray(t)?t.push(e):Object.defineProperty(t,yw,{value:e,writable:!0,enumerable:!0,configurable:!0})}if(null!==e&&"object"==typeof e)gw.push(e),mw=Array.isArray(e)?"beforeArrayValue":"beforePropertyName";else{const e=gw[gw.length-1];mw=null==e?"end":Array.isArray(e)?"afterArrayValue":"afterPropertyValue"}}function Nw(){gw.pop();const e=gw[gw.length-1];mw=null==e?"end":Array.isArray(e)?"afterArrayValue":"afterPropertyValue"}function Bw(e){return Vw(void 0===e?`JSON5: invalid end of input at ${_w}:${vw}`:`JSON5: invalid character '${Gw(e)}' at ${_w}:${vw}`)}function Ow(){return Vw(`JSON5: invalid end of input at ${_w}:${vw}`)}function jw(){return vw-=5,Vw(`JSON5: invalid identifier character at ${_w}:${vw}`)}function Gw(e){const t={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};if(t[e])return t[e];if(e<" "){const t=e.charCodeAt(0).toString(16);return"\\x"+("00"+t).substring(t.length)}return e}function Vw(e){const t=new SyntaxError(e);return t.lineNumber=_w,t.columnNumber=vw,t}const Hw={parse:function(e,t){Aw=String(e),mw="start",gw=[],fw=0,_w=1,vw=0,Ew=void 0,yw=void 0,bw=void 0;do{Ew=Tw(),Fw[mw]()}while("eof"!==Ew.type);return"function"==typeof t?kw({"":bw},"",t):bw},stringify:function(e,t,i){const n=[];let a,r,s,o="",l="";if(null==t||"object"!=typeof t||Array.isArray(t)||(i=t.space,s=t.quote,t=t.replacer),"function"==typeof t)r=t;else if(Array.isArray(t)){a=[];for(const e of t){let t;"string"==typeof e?t=e:("number"==typeof e||e instanceof String||e instanceof Number)&&(t=String(e)),void 0!==t&&a.indexOf(t)<0&&a.push(t)}}return i instanceof Number?i=Number(i):i instanceof String&&(i=String(i)),"number"==typeof i?i>0&&(i=Math.min(10,Math.floor(i)),l=" ".substr(0,i)):"string"==typeof i&&(l=i.substr(0,10)),c("",{"":e});function c(e,t){let i=t[e];switch(null!=i&&("function"==typeof i.toJSON5?i=i.toJSON5(e):"function"==typeof i.toJSON&&(i=i.toJSON(e))),r&&(i=r.call(t,e,i)),i instanceof Number?i=Number(i):i instanceof String?i=String(i):i instanceof Boolean&&(i=i.valueOf()),i){case null:return"null";case!0:return"true";case!1:return"false"}return"string"==typeof i?d(i):"number"==typeof i?String(i):"object"==typeof i?Array.isArray(i)?function(e){if(n.indexOf(e)>=0)throw TypeError("Converting circular structure to JSON5");n.push(e);let t=o;o+=l;let i,a=[];for(let t=0;t<e.length;t++){const i=c(String(t),e);a.push(void 0!==i?i:"null")}if(0===a.length)i="[]";else if(""===l){i="["+a.join(",")+"]"}else{let e=",\n"+o,n=a.join(e);i="[\n"+o+n+",\n"+t+"]"}return n.pop(),o=t,i}(i):function(e){if(n.indexOf(e)>=0)throw TypeError("Converting circular structure to JSON5");n.push(e);let t=o;o+=l;let i,r=a||Object.keys(e),s=[];for(const t of r){const i=c(t,e);if(void 0!==i){let e=u(t)+":";""!==l&&(e+=" "),e+=i,s.push(e)}}if(0===s.length)i="{}";else{let e;if(""===l)e=s.join(","),i="{"+e+"}";else{let n=",\n"+o;e=s.join(n),i="{\n"+o+e+",\n"+t+"}"}}return n.pop(),o=t,i}(i):void 0}function d(e){const t={"'":.1,'"':.2},i={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};let n="";for(let a=0;a<e.length;a++){const r=e[a];switch(r){case"'":case'"':t[r]++,n+=r;continue;case"\0":if(pw.isDigit(e[a+1])){n+="\\x00";continue}}if(i[r])n+=i[r];else{if(r<" "){let e=r.charCodeAt(0).toString(16);n+="\\x"+("00"+e).substring(e.length);continue}n+=r}}const a=s||Object.keys(t).reduce((e,i)=>t[e]<t[i]?e:i);return n=n.replace(new RegExp(a,"g"),i[a]),a+n+a}function u(e){if(0===e.length)return d(e);const t=String.fromCodePoint(e.codePointAt(0));if(!pw.isIdStartChar(t))return d(e);for(let i=t.length;i<e.length;i++)if(!pw.isIdContinueChar(String.fromCodePoint(e.codePointAt(i))))return d(e);return e}}};var qw=Hw;const Kw=new CSSStyleSheet;Kw.replaceSync("/* atkinson-hyperlegible-next-latin-ext-400-normal */\n@font-face {\n font-family: 'Atkinson Hyperlegible Next';\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url(/fonts/atkinson-hyperlegible-next-latin-ext-400-normal.woff2) format('woff2'), url(/fonts/atkinson-hyperlegible-next-latin-ext-400-normal.woff) format('woff');\n unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;\n}\n\n/* atkinson-hyperlegible-next-latin-400-normal */\n@font-face {\n font-family: 'Atkinson Hyperlegible Next';\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url(/fonts/atkinson-hyperlegible-next-latin-400-normal.woff2) format('woff2'), url(/fonts/atkinson-hyperlegible-next-latin-400-normal.woff) format('woff');\n unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;\n}");const Ww=new CSSStyleSheet;Ww.replaceSync('/* Colors */\n:root, :host {\n\t--white: #ffffff;\n\t--black: #181818;\n\t--black-pale: #1b1a17;\n\t--red: #f70000;\n\t--red-transparent: rgba(247, 0, 0, 0.3);\n\t--red-pale: #ff726f;\n\t--grey: #f5f5f5;\n\t--grey-very-pale: #e6e6e6;\n\t--grey-pale: #cfd2cf;\n\t--grey-semi-dark: #808080;\n\t--grey-dark: #3e3e3e;\n\t--blue: #2954e9;\n\t--blue-dark: #0a1f69;\n\t--blue-semi: #d7dffc;\n\t--blue-pale: #f2f5ff;\n\t--blue-geovisio: #34495e;\n\t--beige: #f5f3ec;\n\t--yellow: #fec868;\n\t--orange: #ff6f00;\n\t--orange-transparent: rgba(255,111,0,0.3);\n\t--orange-pale: #fffafa;\n\t--green: #7ec636;\n\t--green-pale: #f0ffee;\n\t--widget-bg: var(--white);\n\t--widget-bg-hover: var(--grey);\n\t--widget-bg-active: var(--blue);\n\t--widget-bg-inactive: var(--grey-pale);\n\t--widget-bg-primary: var(--blue-semi);\n\t--widget-bg-primary-hover: #e0e7ff;\n\t--widget-bg-warn: #FFECB3;\n\t--widget-bg-danger: #FFCDD2;\n\t--widget-bg-success: #C8E6C9;\n\t--widget-border-div: var(--grey-pale);\n\t--widget-border-btn: var(--blue);\n\t--widget-font: var(--grey-dark);\n\t--widget-font-active: var(--white);\n\t--widget-font-direct: var(--blue);\n\t--widget-font-warn: #BF360C;\n\t--widget-font-danger: #B71C1C;\n\t--widget-font-success: #1B5E20;\n\t--font-family: "Atkinson Hyperlegible Next", sans-serif;\n\t--widget-option-left: #6A1B9A;\n\t--widget-option-right: #0D47A1;\n\toverscroll-behavior-y: contain;\n}\n\n.pnx-hidden { display: none !important; }\n\n/* Hidden elements on mobile */\n@container (max-width: 576px) {\n\t.pnx-mobile-hidden { display: none !important; }\n}\n\n/* Hidden elements on print */\n@media print {\n\t.pnx-print-hidden { display: none !important; }\n}\n'),document.adoptedStyleSheets.push(Kw),document.adoptedStyleSheets.push(Ww);class Xw extends le{static properties={picture:{type:String,reflect:!0},sequence:{type:String,reflect:!0},"fetch-options":{converter:Xw.GetJSONConverter()},lang:{type:String},endpoint:{type:String}};constructor(e=!1){super(),this.lang=this.getAttribute("lang")||null,this.endpoint=this.getAttribute("endpoint")||null,this.picture=this.getAttribute("picture")||null,this.sequence=this.getAttribute("sequence")||null,console.info(`📷 Panoramax ${this.getClassName()} - Version 5.3.0 (33f2daf)\n\n🆘 Issues can be reported at https://gitlab.com/panoramax/clients/web-viewer/-/work_items`),e||(this._isInternetFast=null,Ao().then(e=>this._isInternetFast=e))}connectedCallback(){super.connectedCallback(),this._t=Tx(this.lang),this.loader=Rr("pnx-loader",{_parent:this,"no-label":ho()}),this._loadsAPI&&this.endpoint&&this._loadsAPI===this.endpoint||this.api&&this.api._endpoint===this.endpoint||!this.endpoint||((this._loadsAPI||this.api)&&(delete this.api,delete this._loadsAPI),this._setupAPI()),Object.entries({map:"map-options",psv:"psv-options",fetchOptions:"fetch-options",mapstyle:"map-style"}).forEach(([e,t])=>{this.getAttribute(e)&&console.error(`Component attribute "${e}" has been renamed into "${t}". Old attribute "${e}" is ignored.`)}),ho()&&this.classList.add("pnx-iframed")}_setupAPI(){if(this.loader=this.loader||Rr("pnx-loader",{_parent:this}),!this.endpoint)return void console.warn("No endpoint is defined");this._loadsAPI=this.endpoint;let e=this.endpoint;try{this.api=new uw(this.endpoint,{fetch:this["fetch-options"]}),this.api.onceReady().then(()=>{if(e!==this._loadsAPI||!this.api)return;let t=this.api.getUnavailableFeatures(),i=this.api.getAvailableFeatures();i=0===t.length?"✅ All features available":"✅ Available features: "+i.join(", "),t=0===t.length?"":"🚫 Unavailable features: "+t.join(", "),console.info(`🌐 Connected to API "${this.api._metadata.name}" (${this.api._endpoint})\nℹ️ API runs STAC ${this.api._metadata.stac_version} ${this.api._metadata.geovisio_version?"& GeoVisio "+this.api._metadata.geovisio_version:""}\n ${i}\n ${t}\n`.trim())}).catch(e=>this.loader?.dismiss?.(e,this._t?.pnx.error_api)).finally(()=>delete this._loadsAPI)}catch(e){delete this._loadsAPI,this.loader?.dismiss?this.loader.dismiss(e,this._t.pnx.error_api):console.error(e)}}onceReady(){throw new Error("You must override this method on sub-class")}onceAPIReady(){return this.api?this.api.onceReady():new Promise(e=>setTimeout(e,250)).then(this.onceAPIReady.bind(this))}createRenderRoot(){return this}attributeChangedCallback(e,t,i){if(super.attributeChangedCallback(e,t,i),"endpoint"===e&&(this._loadsAPI&&i&&this._loadsAPI===i||this.api&&this.api._endpoint===i||!i||((this._loadsAPI||this.api)&&(delete this.api,delete this._loadsAPI),this._setupAPI())),["picture","sequence"].includes(e)){let n,a,r,s;"picture"===e?(n=this.sequence,r=this.sequence,a=i,s=t):(n=i,r=t,a=this.picture,s=this.picture),this.dispatchEvent(new CustomEvent("select",{bubbles:!0,composed:!0,detail:{seqId:n,picId:a,prevSeqId:r,prevPicId:s}}))}}getClassName(){return"Basic"}select(e=null,t=null,i=!1){i&&(this.picture=null,this.sequence=null),this.picture=t,this.sequence=e}isWidthSmall(){return this?.offsetWidth<576}isWidthMedium(){return this?.offsetWidth>=576&&this?.offsetWidth<768}isHeightSmall(){return this?.offsetHeight<400}render(){return V`<p>Should not be used directly, use Viewer/CoverageMap/Editor instead</p>`}getSubComponentsNames(){return["loader","api"]}getAPI(){return this.api}addEventListener(e,t,i){let n=e.split(":").shift();if(n&&this.getSubComponentsNames().includes(n)){const a=e.substring(n.length+1);this[n]?.addEventListener?this[n].addEventListener(a,t,i):setTimeout(()=>this.addEventListener(e,t,i),50)}else super.addEventListener(e,t,i)}static GetJSONConverter(){return{fromAttribute:e=>null==e||""===e?null:"object"==typeof e||Array.isArray(e)?e:qw.parse(e),toAttribute:e=>null==e||""===e?"":"string"==typeof e?e:qw.stringify(e)}}}class Qw extends le{static styles=[Ro,s`
|
|
2080
|
+
</div>`}}customElements.define("pnx-search-bar",dw);class uw extends EventTarget{constructor(e,t={}){if(super(),null==e||"string"!=typeof e){const e=new Error("endpoint parameter is empty or not a valid string");throw this.dispatchEvent(new CustomEvent("broken",{detail:{error:e}})),e}if(e.startsWith("/")&&(e=window.location.href.split("/").slice(0,3).join("/")+e),!uw.isValidHttpUrl(e)){const t=new Error(`endpoint parameter is not a valid URL: ${e}`);throw this.dispatchEvent(new CustomEvent("broken",{detail:{error:t}})),t}this._endpoint=e,this._isReady=0,this._dataBbox=null,this._fetchOpts=t?.fetch||{},this._metadata={},this._configuration=null,t.skipReadLanding||(this._readLanding=fetch(e,this._getFetchOptions()).then(e=>e.json()).then(e=>this._parseLanding(e,t)).catch(e=>(this._isReady=-1,console.error(e),this.dispatchEvent(new CustomEvent("broken",{detail:{error:e}})),Promise.reject("Viewer failed to communicate with API"))).then(()=>(this._isReady=1,this.dispatchEvent(new Event("ready")),"API is ready")))}onceReady(){return-1===this._isReady?Promise.reject("Viewer failed to communicate with API"):1===this._isReady?Promise.resolve("API is ready"):this._readLanding}isReady(){return 1===this._isReady}getAvailableFeatures(){return Object.entries(this._endpoints).filter(e=>null!==e[1]).map(e=>e[0])}getUnavailableFeatures(){return Object.entries(this._endpoints).filter(e=>null===e[1]).map(e=>e[0])}_parseLanding(e,t){if(this._endpoints={collections:null,search:null,style:null,user_style:null,tiles:t?.tiles||null,user_tiles:null,user_search:null,collection_preview:null,item_preview:null,rss:null,report:null,queryables:null},!e||!e.links||!Array.isArray(e.links))throw new Error("API Landing page doesn't contain 'links' list");if(!e.stac_version.startsWith("1."))throw new Error(`API is not in a supported STAC version (Panoramax viewer supports only 1.x, API is ${e.stac_version})`);this._metadata.name=e.title||"Unnamed",this._metadata.stac_version=e.stac_version,this._metadata.geovisio_version=e.geovisio_version;const i=[],n=[];if([{rel:"search",type:"application/geo+json",endpointId:"search",mandatory:!0,missingIssue:"No direct access to pictures metadata."},{rel:"data",type:"application/json",endpointId:"collections",mandatory:!0,missingIssue:"No way for viewer to access sequences."},{rel:"data",type:"application/rss+xml",endpointId:"rss"},{rel:"xyz",type:"application/vnd.mapbox-vector-tile",endpointId:"tiles"},{rel:"xyz-style",type:"application/json",endpointId:"style"},{rel:"user-xyz-style",type:"application/json",endpointId:"user_style"},{rel:"user-xyz",type:"application/vnd.mapbox-vector-tile",endpointId:"user_tiles"},{rel:"user-search",type:"application/json",endpointId:"user_search",missingIssue:"Filter map data by user name will not be available."},{rel:"collection-preview",type:"image/jpeg",endpointId:"collection_preview",missingIssue:"Display of thumbnail could be slower."},{rel:"item-preview",type:"image/jpeg",endpointId:"item_preview",missingIssue:"Display of thumbnail could be slower."},{rel:"report",type:"application/json",endpointId:"report"},{rel:"http://www.opengis.net/def/rel/ogc/1.0/queryables",type:"application/schema+json",endpointId:"queryables",missingIssue:"Tags map overlay will not be available."}].forEach(t=>{const a=e.links.filter(e=>e.rel===t.rel&&e.type===t.type);if(0===a.length){if(!this._endpoints[t.endpointId]){let e=`API doesn't offer a '${t.rel}' (${t.type}) endpoint in its links`;t.missingIssue&&(e+=`\n${t.missingIssue}`),t.mandatory?i.push(e):t.missingIssue&&n.push(e)}}else{const e=1===a.length?a[0]:a.find(e=>e.title?.includes("v2"))||a[0];if(!uw.isValidHttpUrl(e.href))throw new Error(`API endpoint '${e.rel}' (${e.type}) is not a valid URL: ${e.href}`);this._endpoints[t.endpointId]&&"xyz-style"!==t.endpointId||(this._endpoints[t.endpointId]=e.href)}}),this._endpoints.style||this._endpoints.tiles||n.push("API doesn't offer 'xyz' or 'xyz-style' endpoints in its links.\nMap widget will not be available."),this._endpoints.user_style||this._endpoints.user_tiles||n.push("API doesn't offer 'user-xyz' or 'user-xyz-style' endpoints in its links.\nFilter map data by user ID will not be available."),n.forEach(e=>console.warn(e)),i.length>0)throw new Error(i.join("\n"));const a=e?.extent?.spatial?.bbox;this._dataBbox=a&&Array.isArray(a)&&a.length>0&&Array.isArray(a[0])&&4===a[0].length?[[a[0][0],a[0][1]],[a[0][2],a[0][3]]]:null}_getFetchOptions(e=!1){const t=Object.assign({},this._fetchOpts);return e||(t.signal=AbortSignal.timeout(15e3)),t}_getMapRequestTransform(){const e=this._getFetchOptions();return delete e.signal,t=>{if(t.startsWith(this._endpoint)){if(Object.keys(e).length>0)return{url:t,...e}}else if(t.includes("data.geopf.fr")&&t.includes("@2x"))return{url:t.replace("@2x","")}}}_getPSVWithCredentials(){return"include"===this._getFetchOptions().credentials?e=>e.startsWith(this._endpoint):void 0}cleanResourceURL(e){if(!e)return;const t=new URL(this._endpoint);return e.startsWith("/")?t.protocol+"//"+t.host+e:e.startsWith("./")?this._endpoint+e.substring(1):e}async getSequenceItems(e,t=null,i=null,n=null){if(!this.isReady())throw new Error("API is not ready to use");try{return uw.isIdValid(e),await fetch(t||`${this._endpoints.collections}/${e}/items${n?"?limit="+n:""}`,this._getFetchOptions(!0)).then(e=>e.json()).then(t=>{let a=t;i&&(a.features=i.features.concat(a.features));const r=t.links.find(e=>"next"===e.rel);return!n&&r?this.getSequenceItems(e,r.href,a):a})}catch(e){return await Promise.reject(e)}}getPicturesAroundCoordinatesUrl(e,t,i=5e-4,n=null,a=null){if(!this.isReady())throw new Error("API is not ready to use");if(isNaN(parseFloat(e))||isNaN(parseFloat(t)))throw new Error("lat and lon parameters should be valid numbers");const r=[t-i,e-i,t+i,e+i].map(e=>e.toFixed(7)).join(","),s=n?`&limit=${n}`:"",o=a?`&collections=${a}`:"";return`${this._endpoints.search}?bbox=${r}${s}${o}`}getPicturesAroundCoordinates(e,t,i,n,a){return fetch(this.getPicturesAroundCoordinatesUrl(e,t,i,n,a),this._getFetchOptions()).then(e=>e.json())}getPictureMetadataUrl(e,t){if(!this.isReady())throw new Error("API is not ready to use");if(uw.isIdValid(e))return t?`${this._endpoints.collections}/${t}/items/${e}`:`${this._endpoints.search}?ids=${e}`}findThumbnailInPictureFeature(e){if(!this.isReady())throw new Error("API is not ready to use");if(!e||!e.assets)return null;let t=null;for(let i of Object.values(e.assets)){if(i.roles.includes("thumbnail")&&"image/jpeg"===i.type&&uw.isValidHttpUrl(i.href))return this.cleanResourceURL(i.href);i.roles.includes("visual")&&"image/jpeg"===i.type&&uw.isValidHttpUrl(i.href)&&(t=this.cleanResourceURL(i.href))}return t}getPictureThumbnailURLForSequence(e,t){if(!this.isReady())throw new Error("API is not ready to use");if(this._endpoints.collection_preview)return Promise.resolve(this._endpoints.collection_preview.replace("{id}",e));if(t&&Array.isArray(t.links)&&t.links.length>0){let e=t.links.find(e=>"preview"===e.rel&&"image/jpeg"===e.type);if(e&&uw.isValidHttpUrl(e.href))return Promise.resolve(e.href)}const i=`${this._endpoints.search}?limit=1&collections=${e}`;return fetch(i,this._getFetchOptions()).then(e=>e.json()).then(e=>Array.isArray(e.features)&&0!==e.features.length?this.findThumbnailInPictureFeature(e.features.pop()):null)}getPictureThumbnailURL(e,t){if(!this.isReady())throw new Error("API is not ready to use");return e?this._endpoints.item_preview?Promise.resolve(this._endpoints.item_preview.replace("{id}",e)):e&&t?fetch(`${this._endpoints.collections}/${t}/items/${e}`,this._getFetchOptions()).then(e=>e.json()).then(e=>e?this.findThumbnailInPictureFeature(e):null):fetch(`${this._endpoints.search}?ids=${e}`,this._getFetchOptions()).then(e=>e.json()).then(e=>e&&Array.isArray(e.features)&&0!==e.features.length?this.findThumbnailInPictureFeature(e.features.pop()):null):Promise.resolve(null)}getRSSURL(e){if(!this.isReady())throw new Error("API is not ready to use");if(this._endpoints.rss){let t=this._endpoints.rss;return e&&(t+=t.includes("?")?"&":"?",t+="bbox="+[e.getWest(),e.getSouth(),e.getEast(),e.getNorth()].join(",")),t}return null}getSequenceMetadataUrl(e){if(!this.isReady())throw new Error("API is not ready to use");return`${this._endpoints.collections}/${e}`}getSequenceMetadata(e){if(!this.isReady())throw new Error("API is not ready to use");return fetch(this.getSequenceMetadataUrl(e),this._getFetchOptions()).then(e=>e.json())}getDataBbox(){if(!this.isReady())throw new Error("API is not ready to use");return this._dataBbox}searchUsers(e){if(!this.isReady())throw new Error("API is not ready to use");if(!this._endpoints.user_search)throw new Error("User search is not available");return fetch(`${this._endpoints.user_search}?q=${e}`,this._getFetchOptions()).then(e=>e.json()).then(e=>e?.features||null)}getUserName(e){if(!this.isReady())throw new Error("API is not ready to use");if(!this._endpoints.user_search)throw new Error("User search is not available");return fetch(this._endpoints.user_search.replace(/\/search$/,`/${e}`),this._getFetchOptions()).then(e=>e.json()).then(e=>e?.label||e?.name||null)}sendReport(e){if(!this.isReady())throw new Error("API is not ready to use");if(!this._endpoints.report)throw new Error("Report sending is not available");const t={...this._getFetchOptions(),method:"POST",body:JSON.stringify(e),headers:{"Content-Type":"application/json"}};return fetch(this._endpoints.report,t).then(async e=>{if(e.status>=400){let t=await e.text();try{t=JSON.parse(t).message}catch(e){}return Promise.reject(t)}return e.json()})}deletePicture(e,t){if(!this.isReady())throw new Error("API is not ready to use");let i=`${this._endpoint}/collections/${e}/items/${t}`;const n={...this._getFetchOptions(),method:"DELETE"};return fetch(i,n).then(async e=>{if(e.status>=400){let t=await e.text();try{t=JSON.parse(t).message}catch(e){}return Promise.reject(t)}return!0})}sendPictureSemantics(e,t){if(!this.isReady())throw new Error("API is not ready to use");if(!e?.sequence?.id||!e?.id)throw new Error("Missing IDs from picture");let i=this.getPictureMetadataUrl(e.id,e.sequence.id);e?.origInstance&&(i=`${e.origInstance.href}/api/collections/${e.sequence.id}/items/${e.id}`);const n={...this._getFetchOptions(),method:"PATCH",body:JSON.stringify({semantics:t}),headers:{"Content-Type":"application/json"}};return fetch(i,n).then(async e=>{if(e.status>=400){let t=await e.text();try{t=JSON.parse(t).message}catch(e){}return Promise.reject(t)}return e.json()})}createPictureAnnotation(e,t,i){if(!this.isReady())throw new Error("API is not ready to use");if(!e?.sequence?.id||!e?.id)throw new Error("Missing IDs from picture");let n=this.getPictureMetadataUrl(e.id,e.sequence.id)+"/annotations";e?.origInstance&&(n=`${e.origInstance.href}/api/collections/${e.sequence.id}/items/${e.id}/annotations`);const a={...this._getFetchOptions(),method:"POST",body:JSON.stringify({semantics:i,shape:{type:"Polygon",coordinates:[t]}}),headers:{"Content-Type":"application/json"}};return fetch(n,a).then(async e=>{if(e.status>=400){let t=await e.text();try{t=JSON.parse(t).message}catch(e){}return Promise.reject(t)}return e.json()})}editPictureAnnotation(e,t){if(!this.isReady())throw new Error("API is not ready to use");let i=`${this._endpoint}/annotations/${e}`;const n={...this._getFetchOptions(),method:"PATCH",body:JSON.stringify({semantics:t}),headers:{"Content-Type":"application/json"}};return fetch(i,n).then(async e=>{if(e.status>=400){let t=await e.text();try{t=JSON.parse(t).message}catch(e){}return Promise.reject(t)}return e.json()})}deletePictureAnnotation(e){if(!this.isReady())throw new Error("API is not ready to use");let t=`${this._endpoint}/annotations/${e}`;const i={...this._getFetchOptions(),method:"DELETE"};return fetch(t,i).then(async e=>{if(e.status>=400){let t=await e.text();try{t=JSON.parse(t).message}catch(e){}return Promise.reject(t)}return!0})}getAuthURL(){return this._configuration?Promise.resolve(!!this._configuration?.auth?.enabled&&`${this._endpoint}/auth/login?next_url=<CBURL>`):null===this._configuration?fetch(this._endpoint+"/configuration",this._getFetchOptions()).then(e=>e.json()).then(e=>(this._configuration=e,this.getAuthURL())).catch(()=>(this._configuration=!1,!1)):Promise.resolve(!1)}static isValidHttpUrl(e){let t;try{t=new URL(e)}catch(e){return!1}return"http:"===t.protocol||"https:"===t.protocol}static isIdValid(e){if(Zs(e))throw new Error("id should be a valid picture unique identifier");return!0}}var hw={Space_Separator:/[\u1680\u2000-\u200A\u202F\u205F\u3000]/,ID_Start:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/,ID_Continue:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/},pw={isSpaceSeparator:e=>"string"==typeof e&&hw.Space_Separator.test(e),isIdStartChar:e=>"string"==typeof e&&(e>="a"&&e<="z"||e>="A"&&e<="Z"||"$"===e||"_"===e||hw.ID_Start.test(e)),isIdContinueChar:e=>"string"==typeof e&&(e>="a"&&e<="z"||e>="A"&&e<="Z"||e>="0"&&e<="9"||"$"===e||"_"===e||""===e||""===e||hw.ID_Continue.test(e)),isDigit:e=>"string"==typeof e&&/[0-9]/.test(e),isHexDigit:e=>"string"==typeof e&&/[0-9A-Fa-f]/.test(e)};let Aw,mw,gw,fw,_w,vw,Ew,yw,bw;function kw(e,t,i){const n=e[t];if(null!=n&&"object"==typeof n)if(Array.isArray(n))for(let e=0;e<n.length;e++){const t=String(e),a=kw(n,t,i);void 0===a?delete n[t]:Object.defineProperty(n,t,{value:a,writable:!0,enumerable:!0,configurable:!0})}else for(const e in n){const t=kw(n,e,i);void 0===t?delete n[e]:Object.defineProperty(n,e,{value:t,writable:!0,enumerable:!0,configurable:!0})}return i.call(e,t,n)}let xw,ww,Mw,Sw,Cw;function Tw(){for(xw="default",ww="",Mw=!1,Sw=1;;){Cw=Dw();const e=Iw[xw]();if(e)return e}}function Dw(){if(Aw[fw])return String.fromCodePoint(Aw.codePointAt(fw))}function Pw(){const e=Dw();return"\n"===e?(_w++,vw=0):e?vw+=e.length:vw++,e&&(fw+=e.length),e}const Iw={default(){switch(Cw){case"\t":case"\v":case"\f":case" ":case" ":case"\ufeff":case"\n":case"\r":case"\u2028":case"\u2029":return void Pw();case"/":return Pw(),void(xw="comment");case void 0:return Pw(),Lw("eof")}if(!pw.isSpaceSeparator(Cw))return Iw[mw]();Pw()},comment(){switch(Cw){case"*":return Pw(),void(xw="multiLineComment");case"/":return Pw(),void(xw="singleLineComment")}throw Bw(Pw())},multiLineComment(){switch(Cw){case"*":return Pw(),void(xw="multiLineCommentAsterisk");case void 0:throw Bw(Pw())}Pw()},multiLineCommentAsterisk(){switch(Cw){case"*":return void Pw();case"/":return Pw(),void(xw="default");case void 0:throw Bw(Pw())}Pw(),xw="multiLineComment"},singleLineComment(){switch(Cw){case"\n":case"\r":case"\u2028":case"\u2029":return Pw(),void(xw="default");case void 0:return Pw(),Lw("eof")}Pw()},value(){switch(Cw){case"{":case"[":return Lw("punctuator",Pw());case"n":return Pw(),Rw("ull"),Lw("null",null);case"t":return Pw(),Rw("rue"),Lw("boolean",!0);case"f":return Pw(),Rw("alse"),Lw("boolean",!1);case"-":case"+":return"-"===Pw()&&(Sw=-1),void(xw="sign");case".":return ww=Pw(),void(xw="decimalPointLeading");case"0":return ww=Pw(),void(xw="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return ww=Pw(),void(xw="decimalInteger");case"I":return Pw(),Rw("nfinity"),Lw("numeric",1/0);case"N":return Pw(),Rw("aN"),Lw("numeric",NaN);case'"':case"'":return Mw='"'===Pw(),ww="",void(xw="string")}throw Bw(Pw())},identifierNameStartEscape(){if("u"!==Cw)throw Bw(Pw());Pw();const e=zw();switch(e){case"$":case"_":break;default:if(!pw.isIdStartChar(e))throw jw()}ww+=e,xw="identifierName"},identifierName(){switch(Cw){case"$":case"_":case"":case"":return void(ww+=Pw());case"\\":return Pw(),void(xw="identifierNameEscape")}if(!pw.isIdContinueChar(Cw))return Lw("identifier",ww);ww+=Pw()},identifierNameEscape(){if("u"!==Cw)throw Bw(Pw());Pw();const e=zw();switch(e){case"$":case"_":case"":case"":break;default:if(!pw.isIdContinueChar(e))throw jw()}ww+=e,xw="identifierName"},sign(){switch(Cw){case".":return ww=Pw(),void(xw="decimalPointLeading");case"0":return ww=Pw(),void(xw="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return ww=Pw(),void(xw="decimalInteger");case"I":return Pw(),Rw("nfinity"),Lw("numeric",Sw*(1/0));case"N":return Pw(),Rw("aN"),Lw("numeric",NaN)}throw Bw(Pw())},zero(){switch(Cw){case".":return ww+=Pw(),void(xw="decimalPoint");case"e":case"E":return ww+=Pw(),void(xw="decimalExponent");case"x":case"X":return ww+=Pw(),void(xw="hexadecimal")}return Lw("numeric",0*Sw)},decimalInteger(){switch(Cw){case".":return ww+=Pw(),void(xw="decimalPoint");case"e":case"E":return ww+=Pw(),void(xw="decimalExponent")}if(!pw.isDigit(Cw))return Lw("numeric",Sw*Number(ww));ww+=Pw()},decimalPointLeading(){if(pw.isDigit(Cw))return ww+=Pw(),void(xw="decimalFraction");throw Bw(Pw())},decimalPoint(){switch(Cw){case"e":case"E":return ww+=Pw(),void(xw="decimalExponent")}return pw.isDigit(Cw)?(ww+=Pw(),void(xw="decimalFraction")):Lw("numeric",Sw*Number(ww))},decimalFraction(){switch(Cw){case"e":case"E":return ww+=Pw(),void(xw="decimalExponent")}if(!pw.isDigit(Cw))return Lw("numeric",Sw*Number(ww));ww+=Pw()},decimalExponent(){switch(Cw){case"+":case"-":return ww+=Pw(),void(xw="decimalExponentSign")}if(pw.isDigit(Cw))return ww+=Pw(),void(xw="decimalExponentInteger");throw Bw(Pw())},decimalExponentSign(){if(pw.isDigit(Cw))return ww+=Pw(),void(xw="decimalExponentInteger");throw Bw(Pw())},decimalExponentInteger(){if(!pw.isDigit(Cw))return Lw("numeric",Sw*Number(ww));ww+=Pw()},hexadecimal(){if(pw.isHexDigit(Cw))return ww+=Pw(),void(xw="hexadecimalInteger");throw Bw(Pw())},hexadecimalInteger(){if(!pw.isHexDigit(Cw))return Lw("numeric",Sw*Number(ww));ww+=Pw()},string(){switch(Cw){case"\\":return Pw(),void(ww+=function(){switch(Dw()){case"b":return Pw(),"\b";case"f":return Pw(),"\f";case"n":return Pw(),"\n";case"r":return Pw(),"\r";case"t":return Pw(),"\t";case"v":return Pw(),"\v";case"0":if(Pw(),pw.isDigit(Dw()))throw Bw(Pw());return"\0";case"x":return Pw(),function(){let e="",t=Dw();if(!pw.isHexDigit(t))throw Bw(Pw());if(e+=Pw(),t=Dw(),!pw.isHexDigit(t))throw Bw(Pw());return e+=Pw(),String.fromCodePoint(parseInt(e,16))}();case"u":return Pw(),zw();case"\n":case"\u2028":case"\u2029":return Pw(),"";case"\r":return Pw(),"\n"===Dw()&&Pw(),"";case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case void 0:throw Bw(Pw())}return Pw()}());case'"':return Mw?(Pw(),Lw("string",ww)):void(ww+=Pw());case"'":return Mw?void(ww+=Pw()):(Pw(),Lw("string",ww));case"\n":case"\r":throw Bw(Pw());case"\u2028":case"\u2029":!function(e){console.warn(`JSON5: '${Gw(e)}' in strings is not valid ECMAScript; consider escaping`)}(Cw);break;case void 0:throw Bw(Pw())}ww+=Pw()},start(){switch(Cw){case"{":case"[":return Lw("punctuator",Pw())}xw="value"},beforePropertyName(){switch(Cw){case"$":case"_":return ww=Pw(),void(xw="identifierName");case"\\":return Pw(),void(xw="identifierNameStartEscape");case"}":return Lw("punctuator",Pw());case'"':case"'":return Mw='"'===Pw(),void(xw="string")}if(pw.isIdStartChar(Cw))return ww+=Pw(),void(xw="identifierName");throw Bw(Pw())},afterPropertyName(){if(":"===Cw)return Lw("punctuator",Pw());throw Bw(Pw())},beforePropertyValue(){xw="value"},afterPropertyValue(){switch(Cw){case",":case"}":return Lw("punctuator",Pw())}throw Bw(Pw())},beforeArrayValue(){if("]"===Cw)return Lw("punctuator",Pw());xw="value"},afterArrayValue(){switch(Cw){case",":case"]":return Lw("punctuator",Pw())}throw Bw(Pw())},end(){throw Bw(Pw())}};function Lw(e,t){return{type:e,value:t,line:_w,column:vw}}function Rw(e){for(const t of e){if(Dw()!==t)throw Bw(Pw());Pw()}}function zw(){let e="",t=4;for(;t-- >0;){const t=Dw();if(!pw.isHexDigit(t))throw Bw(Pw());e+=Pw()}return String.fromCodePoint(parseInt(e,16))}const Fw={start(){if("eof"===Ew.type)throw Ow();Uw()},beforePropertyName(){switch(Ew.type){case"identifier":case"string":return yw=Ew.value,void(mw="afterPropertyName");case"punctuator":return void Nw();case"eof":throw Ow()}},afterPropertyName(){if("eof"===Ew.type)throw Ow();mw="beforePropertyValue"},beforePropertyValue(){if("eof"===Ew.type)throw Ow();Uw()},beforeArrayValue(){if("eof"===Ew.type)throw Ow();"punctuator"!==Ew.type||"]"!==Ew.value?Uw():Nw()},afterPropertyValue(){if("eof"===Ew.type)throw Ow();switch(Ew.value){case",":return void(mw="beforePropertyName");case"}":Nw()}},afterArrayValue(){if("eof"===Ew.type)throw Ow();switch(Ew.value){case",":return void(mw="beforeArrayValue");case"]":Nw()}},end(){}};function Uw(){let e;switch(Ew.type){case"punctuator":switch(Ew.value){case"{":e={};break;case"[":e=[]}break;case"null":case"boolean":case"numeric":case"string":e=Ew.value}if(void 0===bw)bw=e;else{const t=gw[gw.length-1];Array.isArray(t)?t.push(e):Object.defineProperty(t,yw,{value:e,writable:!0,enumerable:!0,configurable:!0})}if(null!==e&&"object"==typeof e)gw.push(e),mw=Array.isArray(e)?"beforeArrayValue":"beforePropertyName";else{const e=gw[gw.length-1];mw=null==e?"end":Array.isArray(e)?"afterArrayValue":"afterPropertyValue"}}function Nw(){gw.pop();const e=gw[gw.length-1];mw=null==e?"end":Array.isArray(e)?"afterArrayValue":"afterPropertyValue"}function Bw(e){return Vw(void 0===e?`JSON5: invalid end of input at ${_w}:${vw}`:`JSON5: invalid character '${Gw(e)}' at ${_w}:${vw}`)}function Ow(){return Vw(`JSON5: invalid end of input at ${_w}:${vw}`)}function jw(){return vw-=5,Vw(`JSON5: invalid identifier character at ${_w}:${vw}`)}function Gw(e){const t={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};if(t[e])return t[e];if(e<" "){const t=e.charCodeAt(0).toString(16);return"\\x"+("00"+t).substring(t.length)}return e}function Vw(e){const t=new SyntaxError(e);return t.lineNumber=_w,t.columnNumber=vw,t}const Hw={parse:function(e,t){Aw=String(e),mw="start",gw=[],fw=0,_w=1,vw=0,Ew=void 0,yw=void 0,bw=void 0;do{Ew=Tw(),Fw[mw]()}while("eof"!==Ew.type);return"function"==typeof t?kw({"":bw},"",t):bw},stringify:function(e,t,i){const n=[];let a,r,s,o="",l="";if(null==t||"object"!=typeof t||Array.isArray(t)||(i=t.space,s=t.quote,t=t.replacer),"function"==typeof t)r=t;else if(Array.isArray(t)){a=[];for(const e of t){let t;"string"==typeof e?t=e:("number"==typeof e||e instanceof String||e instanceof Number)&&(t=String(e)),void 0!==t&&a.indexOf(t)<0&&a.push(t)}}return i instanceof Number?i=Number(i):i instanceof String&&(i=String(i)),"number"==typeof i?i>0&&(i=Math.min(10,Math.floor(i)),l=" ".substr(0,i)):"string"==typeof i&&(l=i.substr(0,10)),c("",{"":e});function c(e,t){let i=t[e];switch(null!=i&&("function"==typeof i.toJSON5?i=i.toJSON5(e):"function"==typeof i.toJSON&&(i=i.toJSON(e))),r&&(i=r.call(t,e,i)),i instanceof Number?i=Number(i):i instanceof String?i=String(i):i instanceof Boolean&&(i=i.valueOf()),i){case null:return"null";case!0:return"true";case!1:return"false"}return"string"==typeof i?d(i):"number"==typeof i?String(i):"object"==typeof i?Array.isArray(i)?function(e){if(n.indexOf(e)>=0)throw TypeError("Converting circular structure to JSON5");n.push(e);let t=o;o+=l;let i,a=[];for(let t=0;t<e.length;t++){const i=c(String(t),e);a.push(void 0!==i?i:"null")}if(0===a.length)i="[]";else if(""===l){i="["+a.join(",")+"]"}else{let e=",\n"+o,n=a.join(e);i="[\n"+o+n+",\n"+t+"]"}return n.pop(),o=t,i}(i):function(e){if(n.indexOf(e)>=0)throw TypeError("Converting circular structure to JSON5");n.push(e);let t=o;o+=l;let i,r=a||Object.keys(e),s=[];for(const t of r){const i=c(t,e);if(void 0!==i){let e=u(t)+":";""!==l&&(e+=" "),e+=i,s.push(e)}}if(0===s.length)i="{}";else{let e;if(""===l)e=s.join(","),i="{"+e+"}";else{let n=",\n"+o;e=s.join(n),i="{\n"+o+e+",\n"+t+"}"}}return n.pop(),o=t,i}(i):void 0}function d(e){const t={"'":.1,'"':.2},i={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};let n="";for(let a=0;a<e.length;a++){const r=e[a];switch(r){case"'":case'"':t[r]++,n+=r;continue;case"\0":if(pw.isDigit(e[a+1])){n+="\\x00";continue}}if(i[r])n+=i[r];else{if(r<" "){let e=r.charCodeAt(0).toString(16);n+="\\x"+("00"+e).substring(e.length);continue}n+=r}}const a=s||Object.keys(t).reduce((e,i)=>t[e]<t[i]?e:i);return n=n.replace(new RegExp(a,"g"),i[a]),a+n+a}function u(e){if(0===e.length)return d(e);const t=String.fromCodePoint(e.codePointAt(0));if(!pw.isIdStartChar(t))return d(e);for(let i=t.length;i<e.length;i++)if(!pw.isIdContinueChar(String.fromCodePoint(e.codePointAt(i))))return d(e);return e}}};var qw=Hw;const Kw=new CSSStyleSheet;Kw.replaceSync("/* atkinson-hyperlegible-next-latin-ext-400-normal */\n@font-face {\n font-family: 'Atkinson Hyperlegible Next';\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url(/fonts/atkinson-hyperlegible-next-latin-ext-400-normal.woff2) format('woff2'), url(/fonts/atkinson-hyperlegible-next-latin-ext-400-normal.woff) format('woff');\n unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;\n}\n\n/* atkinson-hyperlegible-next-latin-400-normal */\n@font-face {\n font-family: 'Atkinson Hyperlegible Next';\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url(/fonts/atkinson-hyperlegible-next-latin-400-normal.woff2) format('woff2'), url(/fonts/atkinson-hyperlegible-next-latin-400-normal.woff) format('woff');\n unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;\n}");const Ww=new CSSStyleSheet;Ww.replaceSync('/* Colors */\n:root, :host {\n\t--white: #ffffff;\n\t--black: #181818;\n\t--black-pale: #1b1a17;\n\t--red: #f70000;\n\t--red-transparent: rgba(247, 0, 0, 0.3);\n\t--red-pale: #ff726f;\n\t--grey: #f5f5f5;\n\t--grey-very-pale: #e6e6e6;\n\t--grey-pale: #cfd2cf;\n\t--grey-semi-dark: #808080;\n\t--grey-dark: #3e3e3e;\n\t--blue: #2954e9;\n\t--blue-dark: #0a1f69;\n\t--blue-semi: #d7dffc;\n\t--blue-pale: #f2f5ff;\n\t--blue-geovisio: #34495e;\n\t--beige: #f5f3ec;\n\t--yellow: #fec868;\n\t--orange: #ff6f00;\n\t--orange-transparent: rgba(255,111,0,0.3);\n\t--orange-pale: #fffafa;\n\t--green: #7ec636;\n\t--green-pale: #f0ffee;\n\t--widget-bg: var(--white);\n\t--widget-bg-hover: var(--grey);\n\t--widget-bg-active: var(--blue);\n\t--widget-bg-inactive: var(--grey-pale);\n\t--widget-bg-primary: var(--blue-semi);\n\t--widget-bg-primary-hover: #e0e7ff;\n\t--widget-bg-warn: #FFECB3;\n\t--widget-bg-danger: #FFCDD2;\n\t--widget-bg-success: #C8E6C9;\n\t--widget-border-div: var(--grey-pale);\n\t--widget-border-btn: var(--blue);\n\t--widget-font: var(--grey-dark);\n\t--widget-font-active: var(--white);\n\t--widget-font-direct: var(--blue);\n\t--widget-font-warn: #BF360C;\n\t--widget-font-danger: #B71C1C;\n\t--widget-font-success: #1B5E20;\n\t--font-family: "Atkinson Hyperlegible Next", sans-serif;\n\t--widget-option-left: #6A1B9A;\n\t--widget-option-right: #0D47A1;\n\toverscroll-behavior-y: contain;\n}\n\n.pnx-hidden { display: none !important; }\n\n/* Hidden elements on mobile */\n@container (max-width: 576px) {\n\t.pnx-mobile-hidden { display: none !important; }\n}\n\n/* Hidden elements on print */\n@media print {\n\t.pnx-print-hidden { display: none !important; }\n}\n'),document.adoptedStyleSheets.push(Kw),document.adoptedStyleSheets.push(Ww);class Xw extends le{static properties={picture:{type:String,reflect:!0},sequence:{type:String,reflect:!0},"fetch-options":{converter:Xw.GetJSONConverter()},lang:{type:String},endpoint:{type:String}};constructor(e=!1){super(),this.lang=this.getAttribute("lang")||null,this.endpoint=this.getAttribute("endpoint")||null,this.picture=this.getAttribute("picture")||null,this.sequence=this.getAttribute("sequence")||null,console.info(`📷 Panoramax ${this.getClassName()} - Version 5.3.0 (f5cca65)\n\n🆘 Issues can be reported at https://gitlab.com/panoramax/clients/web-viewer/-/work_items`),e||(this._isInternetFast=null,Ao().then(e=>this._isInternetFast=e))}connectedCallback(){super.connectedCallback(),this._t=Tx(this.lang),this.loader=Rr("pnx-loader",{_parent:this,"no-label":ho()}),this._loadsAPI&&this.endpoint&&this._loadsAPI===this.endpoint||this.api&&this.api._endpoint===this.endpoint||!this.endpoint||((this._loadsAPI||this.api)&&(delete this.api,delete this._loadsAPI),this._setupAPI()),Object.entries({map:"map-options",psv:"psv-options",fetchOptions:"fetch-options",mapstyle:"map-style"}).forEach(([e,t])=>{this.getAttribute(e)&&console.error(`Component attribute "${e}" has been renamed into "${t}". Old attribute "${e}" is ignored.`)}),ho()&&this.classList.add("pnx-iframed")}_setupAPI(){if(this.loader=this.loader||Rr("pnx-loader",{_parent:this}),!this.endpoint)return void console.warn("No endpoint is defined");this._loadsAPI=this.endpoint;let e=this.endpoint;try{this.api=new uw(this.endpoint,{fetch:this["fetch-options"]}),this.api.onceReady().then(()=>{if(e!==this._loadsAPI||!this.api)return;let t=this.api.getUnavailableFeatures(),i=this.api.getAvailableFeatures();i=0===t.length?"✅ All features available":"✅ Available features: "+i.join(", "),t=0===t.length?"":"🚫 Unavailable features: "+t.join(", "),console.info(`🌐 Connected to API "${this.api._metadata.name}" (${this.api._endpoint})\nℹ️ API runs STAC ${this.api._metadata.stac_version} ${this.api._metadata.geovisio_version?"& GeoVisio "+this.api._metadata.geovisio_version:""}\n ${i}\n ${t}\n`.trim())}).catch(e=>this.loader?.dismiss?.(e,this._t?.pnx.error_api)).finally(()=>delete this._loadsAPI)}catch(e){delete this._loadsAPI,this.loader?.dismiss?this.loader.dismiss(e,this._t.pnx.error_api):console.error(e)}}onceReady(){throw new Error("You must override this method on sub-class")}onceAPIReady(){return this.api?this.api.onceReady():new Promise(e=>setTimeout(e,250)).then(this.onceAPIReady.bind(this))}createRenderRoot(){return this}attributeChangedCallback(e,t,i){if(super.attributeChangedCallback(e,t,i),"endpoint"===e&&(this._loadsAPI&&i&&this._loadsAPI===i||this.api&&this.api._endpoint===i||!i||((this._loadsAPI||this.api)&&(delete this.api,delete this._loadsAPI),this._setupAPI())),["picture","sequence"].includes(e)){let n,a,r,s;"picture"===e?(n=this.sequence,r=this.sequence,a=i,s=t):(n=i,r=t,a=this.picture,s=this.picture),this.dispatchEvent(new CustomEvent("select",{bubbles:!0,composed:!0,detail:{seqId:n,picId:a,prevSeqId:r,prevPicId:s}}))}}getClassName(){return"Basic"}select(e=null,t=null,i=!1){i&&(this.picture=null,this.sequence=null),this.picture=t,this.sequence=e}isWidthSmall(){return this?.offsetWidth<576}isWidthMedium(){return this?.offsetWidth>=576&&this?.offsetWidth<768}isHeightSmall(){return this?.offsetHeight<400}render(){return V`<p>Should not be used directly, use Viewer/CoverageMap/Editor instead</p>`}getSubComponentsNames(){return["loader","api"]}getAPI(){return this.api}addEventListener(e,t,i){let n=e.split(":").shift();if(n&&this.getSubComponentsNames().includes(n)){const a=e.substring(n.length+1);this[n]?.addEventListener?this[n].addEventListener(a,t,i):setTimeout(()=>this.addEventListener(e,t,i),50)}else super.addEventListener(e,t,i)}static GetJSONConverter(){return{fromAttribute:e=>null==e||""===e?null:"object"==typeof e||Array.isArray(e)?e:qw.parse(e),toAttribute:e=>null==e||""===e?"":"string"==typeof e?e:qw.stringify(e)}}}class Qw extends le{static styles=[Ro,s`
|
|
2081
2081
|
textarea:invalid {
|
|
2082
2082
|
border: 2px solid var(--red);
|
|
2083
2083
|
background-color:var(--beige);
|
|
@@ -9,7 +9,7 @@ import BasicStyles from "./Basic.css" with { type: "css" };
|
|
|
9
9
|
document.adoptedStyleSheets.push(AtkinsonStyles);
|
|
10
10
|
document.adoptedStyleSheets.push(BasicStyles);
|
|
11
11
|
|
|
12
|
-
const __COMMIT_HASH__ = "
|
|
12
|
+
const __COMMIT_HASH__ = "f5cca65";
|
|
13
13
|
const __PACKAGE_VERSION__ = "5.3.0";
|
|
14
14
|
const __PACKAGE_ISSUES_URL__ = "https://gitlab.com/panoramax/clients/web-viewer/-/work_items";
|
|
15
15
|
|
|
@@ -29,7 +29,8 @@ pnx-editor pnx-map-background {
|
|
|
29
29
|
pnx-editor pnx-widget-player {
|
|
30
30
|
margin-top: 10px;
|
|
31
31
|
}
|
|
32
|
-
pnx-editor pnx-widget-player #pnx-player-play
|
|
32
|
+
pnx-editor pnx-widget-player #pnx-player-play,
|
|
33
|
+
pnx-editor pnx-widget-player #pnx-player-play-backward {
|
|
33
34
|
display: none;
|
|
34
35
|
}
|
|
35
36
|
|
package/package.json
CHANGED