1function formatNumber(n){if(n<1)return n.toString() 2if(n<1e3)return n.toString() 3if(n>=1e3&&n<1e6)return+(n/1e3).toFixed(1)+'K' 4if(n>=1e6&&n<1e9)return+(n/1e6).toFixed(1)+'M' 5if(n>=1e9&&n<1e12)return+(n/1e9).toFixed(1)+'B' 6if(n>=1e12)return+(n/1e12).toFixed(1)+'T' 7return n.toString()} 8function truncateString(str='',num){if(str?.length<=num){return str} 9return str?.slice(0,num)+'...'} 10function truncateReviewerName({haveVerifiedBadge=!1,showCountryFlg=!1,str=''}){let showStrChar 11if(haveVerifiedBadge&&showCountryFlg){showStrChar=10}else if(haveVerifiedBadge&&!showCountryFlg){showStrChar=10}else if(!haveVerifiedBadge&&showCountryFlg){showStrChar=7}else{showStrChar=17} 12return truncateString(str,showStrChar)} 13function censorReviewerName({isCensor=!1,str,firstChars=1,lastChars=1}){if(isCensor){if(str.length<=firstChars+lastChars)return str;const firstPart=str.slice(0,firstChars);const lastPart=str.slice(-lastChars);const middle='*'.repeat(str.length-firstChars-lastChars);return `${firstPart}${middle}${lastPart}`} 14return str} 15function showDisplayReviewerName({haveVerifiedBadge=!1,showCountryFlg=!1,str='',isCensor=!1}){let value='' 16if(isCensor){value=censorReviewerName({isCensor,str})}else{value=str} 17return truncateReviewerName({haveVerifiedBadge,showCountryFlg,str:value})} 18function roundToNearestHalf(reviewAverage){const decimal=reviewAverage%1;if(decimal<0.25){return Math.floor(reviewAverage)}else if(decimal>=0.25&&decimal<0.75){return Math.floor(reviewAverage)+0.5}else{return Math.ceil(reviewAverage)}} 19function isFullStar(star,reviewAverage){const roundedAverage=this.roundToNearestHalf(reviewAverage);return star<=Math.floor(roundedAverage)} 20function isHalfStar(star,reviewAverage){const roundedAverage=this.roundToNearestHalf(reviewAverage);return star===Math.ceil(roundedAverage)&&roundedAverage%1===0.5} 21function isFullEmptyStar(star,reviewAverage){const roundedAverage=this.roundToNearestHalf(reviewAverage);return star>Math.ceil(roundedAverage)} 22function isHaveMultipleAttachment(attachmentLength,maxAttachment){return attachmentLength>maxAttachment} 23function getFileExtension(url){try{const parsedUrl=new URL(url);const pathname=parsedUrl.pathname;const extension=pathname.substring(pathname.lastIndexOf('.')+1);return extension?extension:''}catch(error){console.error('Invalid URL:',error);return''}} 24function getFileType(url){const videoExtensions=new Set(['mp4','mov','avi','mkv','webm']);const audioExtensions=new Set(['mp3','wav','aac','flac','ogg']);const imageExtensions=new Set(['jpg','jpeg','png','gif','bmp','webp','svg']);const extension=getFileExtension(url).toLowerCase();return{isVideo:videoExtensions.has(extension),isAudio:audioExtensions.has(extension),isImage:imageExtensions.has(extension)}} 25function __rvxTooltipComponent__(){return{tooltipVisible:!1,tooltipArrow:!0,tooltipPosition:'bottom',initial(){this.$nextTick(()=>{const content=this.$refs.content;content.addEventListener('mouseenter',()=>{this.tooltipVisible=!0});content.addEventListener('mouseleave',()=>{this.tooltipVisible=!1})})}}} 26;
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.