1!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._posthogChunkIds=e._posthogChunkIds||{},e._posthogChunkIds[n]="01a109f9-10fc-7b43-ad34-accf1312e186")}catch(e){}}();"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8078],{49108:function(e,t,n){n.d(t,{E:function(){return o},b:function(){return s}});let r=new Set(["alpha price","active price","balanced price","cumulative value days destroyed","cvdd","delta price","investor price","lth realized price","realized price","sth realized price","terminal price","thermo price","transferred price","true market mean price"]),l=["change","correlation","discount","dominance","drawdown","premium","ratio","return","volatility","z score","z-score"];function i(e){return String(e||"").trim().toLowerCase().replace(/[_/.-]+/g," ").replace(/\s+/g," ")}function a(e){return i([null==e?void 0:e.name,null==e?void 0:e.code,null==e?void 0:e.url].filter(
1Boolean).join(" "))}function o(e){return u(a(e))}function u(e){let t=i(e);return!!t&&(!!(r.has(t)||t.includes("priceusd")||t.includes("price usd"))||!!/\b(price|pricing)\b/.test(t)&&!l.some(e=>t.includes(e)))}function s(e,t,n){return!!(n||(null==t?void 0:t.some(e=>null==e?void 0:e.combineYaxis))||u(i(null==e?void 0:e.name)))||(null==t?void 0:t.some(e=>u(a(e))))||!1}},24763:function(e,t,n){n.d(t,{Vj:function(){return s},ho:function(){return m},xE:function(){return c},xo:function(){return d}});let r="alphractal_chart_data_cache_v1:",l=new Map,i=new Map;function a(){try{return window.sessionStorage}catch(e){return null}}function o(e,t){return Date.now()-e.createdAt<=t}function u(){l.size<=80||Array.from(l.entries()).sort((e,t)=>{let[,n]=e,[,r]=t;return n.lastAccessedAt-r.lastAccessedAt}).slice(0,l.size-80).forEach(e=>{let[t]=e;l.delete(t)})}function s(e){return function(e){let t=3735928559,n=1103547991;for(let r=0;r<e.length;r+=1){let l=e.charCodeAt(r);t=Math.imul(t^l,2654435761),n=Math.imul(n^l,1597334677)}return t=Math.imul(t^t>>>16,2246822507)^Math.imul(n^n>>>13,3266489909),n=Math.imul(n^n>>>16,2246822507)^Math.imul(t^t>>>13,3266489909),"".concat((n>>>0).toString(36)).concat((t>>>0).toString(36))}("string"==typeof e?e:function e(t){if(Array.isArray(t))return"[".concat(t.map(e).join(","),"]");if(t&&"object"==typeof t){let n=Object.entries(t).filter(e=>{let[,t]=e;return void 0!==t}).sort((e,t)=>{let[n]=e,[r]=t;return n.localeCompare(r)});return"{".concat(n.map(t=>{let[n,r]=t;return"".concat(JSON.stringify(n),":").concat(e(r))}).join(","),"}")}return JSON.stringify(t)}(e))}function c(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:9e5,n=l.get(e);if(n&&o(n,t))return n.lastAccessedAt=Date.now(),n.value;n&&l.delete(e);let i=a();if(!i)return null;try{let n=i.getItem("".concat(r).concat(e));if(!n)return null;let a=JSON.parse(n);if(!a||!o(a,t))return i.removeItem("".concat(r).concat(e)),null;let s={...a,lastAccessedAt:Date.now()};return l.set(e,s),u(),s.value}catch(t){return i.removeItem("".concat(r).concat(e)),null}}function m(e,t){let n={value:t,createdAt:Date.now(),lastAccessedAt:Date.now()};l.set(e,n),u();let i=a();if(i)try{i.setItem("".concat(r).concat(e),JSON.stringify(n))}catch(e){}return t}async function d(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:9e5,r=c(e,n);if(null!==r)return r;let l=i.get(e);if(l)return l;let a=t().then(t=>m(e,t)).finally(()=>{i.delete(e)});return i.set(e,a),a}},61749:function(e,t,n){n.d(t,{AD:function(){return a},bg:function(){return o},dT:function(){return g},uX:function(){return b}});var r=n(29644);function l(e){if(null==e)return null;if(e instanceof Date)return e.toISOString();if("number"==typeof e&&Number.isFinite(e))return new Date(e).toISOString();let t=String(e).trim();return t.length>0?t:null}function i(e){return[...e].sort((e,t)=>{let n=new Date(e.time).getTime(),r=new Date(t.time).getTime();return Number.isFinite(n)&&Number.isFinite(r)?n-r:String(e.time).localeCompare(String(t.time))})}function a(e,t){let n=new Map,a=["time"],o=new Set(a);for(let t of e||[]){let e=Array.isArray(t.exportData)?t.exportData:t.data;if((null==t?void 0:t.workbenchExcludeFromExport)||!(null==t?void 0:t.name)||!Array.isArray(e)||0===e.length)continue;let i=function(e,t){let n=e.trim()||"Series",r=2;for(;t.has(n);)n="".concat(e," (").concat(r,")"),r+=1;return t.add(n),n}(t.name,o),u=!1;for(let t of e){let e=function(e){let t=l((0,r.Wn)(e));return t?{time:t,value:function(e){if(null==e)return null;if("number"==typeof e)return Number.isFinite(e)?e:null;if("string"==typeof e)return e;let t=Number(e);return Number.isFinite(t)?t:null}((0,r.W)(e))}:null}(t);if(!e)continue;let a=n.get(e.time)||{time:e.time};a[i]=e.value,n.set(e.time,a),u=!0}u?a.push(i):o.delete(i)}return a.length<=1||0===n.size?null:{title:t,columns:a,rows:i(Array.from(n.values()))}}function o(e,t){if(!e.length)return null;let n=Object.keys(e[0]);if(0===n.length)return null;let r=n.find(e=>"time"===e.toLowerCase())||n[0],a=["time",...n.filter(e=>e!==r)],o=e.map(e=>{let t={time:l(e[r])||""};return a.slice(1).forEach(n=>{t[n]=e[n]}),t});return{title:t,columns:a,rows:i(o)}}function u(e){if(null==e)return"";if("number"==typeof e)return Number.isFinite(e)?String(e):"";let t=String(e),n=/^[=+\-@]/.test(t)?"'".concat(t):t;return n.includes(",")||n.includes('"')||n.includes("\n")||n.includes("\r")?'"'.concat(n.replace(/"/g,'""'),'"'):n}function s(e){return null==e?"":String(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function c(e,t){let n=e.replace(/\.[a-z0-9]+$/i,"").replace(/[^a-z0-9._-]+/gi,"-").replace(/^-+|-+$/g,"").slice(0,120);return"".concat(n||"chart-data",".").concat(t)}function m(e,t,n){let r=new Blob(Array.isArray(e)?e:[e],{type:n}),l=URL.createObjectURL(r),i=document.createElement("a");i.href=l,i.download=t,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(l)}let d=(()=>{let e=new Uint32Array(256);for(let t=0;t<256;t+=1){let n=t;for(let e=0;e<8;e+=1)n=1&n?3988292384^n>>>1:n>>>1;e[t]=n>>>0}return e})();function p(e){return new TextEncoder().encode(e)}function f(e,t,n){e.setUint16(t,n,!0)}function v(e,t,n){e.setUint32(t,n>>>0,!0)}function h(e){let t=new Uint8Array(e.reduce((e,t)=>
1e+t.length,0)),n=0;for(let r of e)t.set(r,n),n+=r.length;return t}function y(e,t,n){let r="".concat(function(e){let t="",n=e+1;for(;n>0;)t=String.fromCharCode(65+(n-1)%26)+t,n=Math.floor((n-1)/26);return t}(t)).concat(n);return"number"==typeof e&&Number.isFinite(e)?'<c r="'.concat(r,'"><v>').concat(e,"</v></c>"):'<c r="'.concat(r,'" t="inlineStr"><is><t>').concat(s(e),"</t></is></c>")}function g(e,t){let n=[e.columns.map(u).join(","),...e.rows.map(t=>e.columns.map(e=>u(t[e])).join(","))].join("\n");m("\uFEFF".concat(n),c(t,"csv"),"text/csv;charset=utf-8;")}function b(e,t){let n=s(((e.title||"Chart Data").replace(/[\\/?*[\]:]/g," ").trim()||"Chart Data").slice(0,31));m(function(e){let t=[],n=[],r=0,{dosDate:l,dosTime:i}=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new Date;return{dosDate:Math.max(1980,e.getFullYear())-1980<<9|e.getMonth()+1<<5|e.getDate(),dosTime:e.getHours()<<11|e.getMinutes()<<5|Math.floor(e.getSeconds()/2)}}();e.forEach(e=>{let a=p(e.path),o=p(e.content),u=function(e){let t=4294967295;for(let n=0;n<e.length;n+=1)t=d[(t^e[n])&255]^t>>>8;return(4294967295^t)>>>0}(o),s=new Uint8Array(30),c=new DataView(s.buffer);v(c,0,67324752),f(c,4,20),f(c,6,2048),f(c,8,0),f(c,10,i),f(c,12,l),v(c,14,u),v(c,18,o.length),v(c,22,o.length),f(c,26,a.length),f(c,28,0),t.push(s,a,o);let m=new Uint8Array(46),h=new DataView(m.buffer);v(h,0,33639248),f(h,4,20),f(h,6,20),f(h,8,2048),f(h,10,0),f(h,12,i),f(h,14,l),v(h,16,u),v(h,20,o.length),v(h,24,o.length),f(h,28,a.length),f(h,30,0),f(h,32,0),f(h,34,0),f(h,36,0),v(h,38,0),v(h,42,r),n.push(m,a),r+=s.length+a.length+o.length});let a=h(n),o=new Uint8Array(22),u=new DataView(o.buffer);return v(u,0,101010256),f(u,4,0),f(u,6,0),f(u,8,e.length),f(u,10,e.length),v(u,12,a.length),v(u,16,r),f(u,20,0),h([...t,a,o])}([{path:"[Content_Types].xml",content:'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">\n <Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/>\n <Default Extension="xml" ContentType="application/xml"/>\n <Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/>\n <Override PartName="/xl/worksheets/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"/>\n</Types>'},{path:"_rels/.rels",content:'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">\n <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/>\n</Relationships>'},{path:"xl/workbook.xml",content:'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n<workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">\n <sheets><sheet name="'.concat(n,'" sheetId="1" r:id="rId1"/></sheets>\n</workbook>')},{path:"xl/_rels/workbook.xml.rels",content:'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">\n <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet1.xml"/>\n</Relationships>'},{path:"xl/worksheets/sheet1.xml",content:function(e){let t='<row r="1">'.concat(e.columns.map((e,t)=>y(e,t,1)).join(""),"</row>"),n=e.rows.map((t,n)=>{let r=n+2,l=e.columns.map((e,n)=>y(t[e],n,r)).join("");return'<row r="'.concat(r,'">').concat(l,"</row>")}).join("");return'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">\n <sheetData>'.concat(t).concat(n,"</sheetData>\n</worksheet>")}(e)}]),c(t,"xlsx"),"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")}},62224:function(e,t,n){n.d(t,{W:function(){return o}});var r=n(29644);function l(e){if("number"==typeof e&&Number.isFinite(e))return e;if(null==e)return null;let t=new Date(String(e)).getTime();return Number.isFinite(t)?t:null}function i(e,t){let n=[],i=null,a=null;
1return e.forEach(e=>{let o=(0,r.fW)(e);if(null==o){n.push((0,r.IZ)(e,null)),i=e,a=null;return}null!=a&&(a>=0?"positive":"negative")!=(o>=0?"positive":"negative")&&n.push(function(e,t,n,i){let a=l((0,r.Wn)(e)),o=l((0,r.Wn)(t)),u=i-n,s=0!==u&&Number.isFinite(u)?(0-n)/u:.5,c=Math.max(0,Math.min(1,Number.isFinite(s)?s:.5)),m=null!=a&&null!=o&&o!==a?a+(o-a)*c:(0,r.Wn)(0===i?t:e);return(0,r.IZ)((0,r.S8)(t,m),0)}(i,e,a,o));let u="positive"===t?o>=0:o<0;n.push((0,r.IZ)(e,u?o:null)),i=e,a=o}),n}function a(e,t,n,r,l){var i;let{markLine:a,markArea:o,markPoint:u,...s}=e;return{...s,type:"line",data:t,connectNulls:!1,symbol:"none",itemStyle:{...e.itemStyle||{},color:n,opacity:1},lineStyle:{...e.lineStyle||{},color:n,opacity:1,width:(null===(i=e.lineStyle)||void 0===i?void 0:i.width)||2},...l?{areaStyle:{...e.areaStyle||{},color:n,opacity:r}}:{},tooltip:{show:!1},silent:!0,legendHoverLink:!1,workbenchExcludeFromExport:!0,z:Number(e.z||0)+1}}function o(e,t){var n,r;if(!Array.isArray(e.data)||0===e.data.length)return[];let l="number"==typeof t.areaOpacity&&Number.isFinite(t.areaOpacity)?t.areaOpacity:"number"==typeof(null===(n=e.areaStyle)||void 0===n?void 0:n.opacity)&&Number.isFinite(e.areaStyle.opacity)?e.areaStyle.opacity:.18,o=t.positiveColor||"#22c55e",u=t.negativeColor||"#ef4444",s=!1!==t.includeArea;return[{...e,type:"line",itemStyle:{...e.itemStyle||{},color:t.baseColor,opacity:0},lineStyle:{...e.lineStyle||{},color:t.baseColor,opacity:0,width:(null===(r=e.lineStyle)||void 0===r?void 0:r.width)||2},...s?{areaStyle:{...e.areaStyle||{},color:t.baseColor,opacity:0}}:{}},a(e,i(e.data,"positive"),o,l,s),a(e,i(e.data,"negative"),u,l,s)]}},79414:function(e,t,n){n.d(t,{nG:function(){return i}});var r=n(22738);let l={lineWidth:2,lineStyle:"solid",shadowBlur:8,shadowOffsetX:0,shadowOffsetY:2,shadowOpacity:.32,gradientStartColor:"#60a5fa",gradientMiddleColor:"",gradientMiddlePosition:50,gradientEndColor:"#f59e0b",gradientDirection:"vertical",areaOpacity:.7,barWidth:2,barRadius:0,scatterSize:6,bubbleMinSize:5,bubbleMaxSize:28,bubbleFillOpacity:.72,bubbleBorderWidth:.25,visualMapPosition:"right"};function i(e,t,n){var i,c;let m={lineWidth:o(null==n?void 0:n.lineWidth,1,8,l.lineWidth),lineStyle:"solid"===(i=null==n?void 0:n.lineStyle)||"dashed"===i||"dotted"===i?n.lineStyle:l.lineStyle,shadow:!!(null==n?void 0:n.shadow),shadowBlur:o(null==n?void 0:n.shadowBlur,0,32,l.shadowBlur),shadowOffsetX:o(null==n?void 0:n.shadowOffsetX,-24,24,l.shadowOffsetX),shadowOffsetY:o(null==n?void 0:n.shadowOffsetY,-24,24,l.shadowOffsetY),shadowOpacity:o(null==n?void 0:n.shadowOpacity,.05,1,l.shadowOpacity),gradient:!!(null==n?void 0:n.gradient),gradientStartColor:u(null==n?void 0:n.gradientStartColor,l.gradientStartColor),gradientMiddleColor:u(null==n?void 0:n.gradientMiddleColor,l.gradientMiddleColor),gradientMiddlePosition:o(null==n?void 0:n.gradientMiddlePosition,5,95,l.gradientMiddlePosition),gradientEndColor:u(null==n?void 0:n.gradientEndColor,l.gradientEndColor),gradientDirection:a(null==n?void 0:n.gradientDirection)?n.gradientDirection:l.gradientDirection,areaOpacity:function(e){if(null==e)return l.areaOpacity;let t=Number(e);return Number.isFinite(t)&&.18!==t?o(t,.05,.8,l.areaOpacity):l.areaOpacity}(null==n?void 0:n.areaOpacity),barWidth:o(null==n?void 0:n.barWidth,2,24,l.barWidth),barRadius:o(null==n?void 0:n.barRadius,0,18,l.barRadius),scatterSize:o(null==n?void 0:n.scatterSize,2,32,l.scatterSize),bubbleMinSize:o(null==n?void 0:n.bubbleMinSize,3,80,l.bubbleMinSize),bubbleMaxSize:o(null==n?void 0:n.bubbleMaxSize,4,120,l.bubbleMaxSize),bubbleFillOpacity:o(null==n?void 0:n.bubbleFillOpacity,.05,1,l.bubbleFillOpacity),bubbleShowLine:(null==n?void 0:n.bubbleShowLine)!==!1,bubbleBorderWidth:o(null==n?void 0:n.bubbleBorderWidth,0,10,l.bubbleBorderWidth),bubbleHeatmap:!!(null==n?void 0:n.bubbleHeatmap),visualMapPosition:"none"===(c=null==n?void 0:n.visualMapPosition)||"right"===c||"left"===c||"top"===c||"bottom"===c?n.visualMapPosition:l.visualMapPosition},d=e||"line",p=a(null==n?void 0:n.gradientDirection)?n.gradientDirection:"line"===d?"horizontal":"vertical",f=m.shadow?{shadowBlur:m.shadowBlur,shadowColor:(0,r.CZ)(t,m.shadowOpacity),shadowOffsetX:m.shadowOffsetX,shadowOffsetY:m.shadowOffsetY}:{},v=m.gradientStartColor,h=m.gradientMiddleColor,y=m.gradientMiddlePosition/100,g=m.gradientEndColor,b=s(p,v,g,h,y),w=(null==n?void 0:n.areaOpacity)!=null&&Number(n.areaOpacity)!==l.areaOpacity&&.18!==Number(n.areaOpacity),x=m.gradient?b:t;return{lineStyle:"bar"===d||"scatter"===d||"bubble"===d?void 0:{color:x,width:m.lineWidth,type:m.lineStyle,...f},itemStyle:"bar"===d?{color:m.gradient?b:t,borderRadius:m.barRadius,...f}:"scatter"===d?{color:t,...f}
1:"bubble"===d?{color:t,opacity:m.bubbleFillOpacity,borderColor:t,borderWidth:m.bubbleShowLine?m.bubbleBorderWidth:0,borderType:m.lineStyle,...f}:{color:t},areaStyle:"area"===d?{...m.gradient?{color:s(p,(0,r.CZ)(v,Math.min(1,m.areaOpacity+.18)),(0,r.CZ)(g,.04),(0,r.CZ)(h,Math.min(1,m.areaOpacity+.1)),y),opacity:1}:w?{color:t,opacity:m.areaOpacity}:{}}:void 0,barWidth:"bar"===d?m.barWidth:void 0,barMaxWidth:"bar"===d?m.barWidth:void 0,barGap:"bar"===d?"-100%":void 0,barCategoryGap:"bar"===d?"0%":void 0}}function a(e){return"horizontal"===e||"vertical"===e||"diagonal_down"===e||"diagonal_up"===e}function o(e,t,n,r){if(null==e)return r;let l=Number(e);return Number.isFinite(l)?Math.min(n,Math.max(t,l)):r}function u(e,t){if("string"!=typeof e)return t;let n=e.trim();return(0,r.YQ)(n)?n:t}function s(e,t,n,r){let l=arguments.length>4&&void 0!==arguments[4]?arguments[4]:.5,i=[{offset:0,color:t},...r?[{offset:Math.min(.95,Math.max(.05,l)),color:r}]:[],{offset:1,color:n}];return{type:"linear",..."horizontal"===e?{x:0,y:0,x2:1,y2:0}:"diagonal_down"===e?{x:0,y:0,x2:1,y2:1}:"diagonal_up"===e?{x:0,y:1,x2:1,y2:0}:{x:0,y:0,x2:0,y2:1},colorStops:i}}},62984:function(e,t,n){n.d(t,{EJ:function(){return E},Xg:function(){return m},Xk:function(){return _},nd:function(){return O},oQ:function(){return R},s0:function(){return z},we:function(){return A}});var r=n(22738),l=n(29644),i=n(79896),a=n(79414);let o=new Set(["line","bar","scatter","candlestick"]);function u(e){if("number"==typeof e&&Number.isFinite(e))return e;if(null==e||""===e)return null;let t=new Date(String(e)).getTime();return Number.isFinite(t)?t:null}function s(e){let t=new Date(e.time).getTime();return Number.isFinite(t)?t:e.time}function c(e,t,n,r){let l=Number(t),i=Number(r),a=Number.isFinite(l)?l:Number.isFinite(i)?i:0;return[[e,a],[n,Number.isFinite(i)?i:a]]}let m=[{ratio:0,label:"0%"},{ratio:.236,label:"23.6%"},{ratio:.382,label:"38.2%"},{ratio:.5,label:"50%"},{ratio:.618,label:"61.8%"},{ratio:.786,label:"78.6%"},{ratio:1,label:"100%"}],d=e=>(0,l.fW)(e,{nullForMissing:!0});function p(e){return Math.min(1,Math.max(0,Number.isFinite(e)?e:.5))}function f(e){let t=(0,l.Wn)(e);if(null==t)return[];let n=String(t),r=u(t);return null==r?[n]:[n,String(r)]}function v(e,t){if(!t)return null;for(let n of f(e)){let e=t.get(n);if(null!=e)return e}return null}function h(e){return"cross"===e||"cross_above"===e||"cross_below"===e}function y(e,t){return(0,r.cp)(e,t,[255,173,177])}function g(e,t){var n,r;return(null===(n=e.lineStyle)||void 0===n?void 0:n.color)||(null===(r=e.itemStyle)||void 0===r?void 0:r.color)||t}function b(e,t,n){return"series_percent"===e.compareTo&&e.compareSeriesId?function(e,t){let n=d(e),r=v(e,t);return null==n||null==r||0===r?null:(n/r-1)*100}(t,n):d(t)}function w(e,t,n){if("series"===e.compareTo&&e.compareSeriesId)return v(t,n);let r=Number(e.value);return Number.isFinite(r)?r:null}function x(e,t,n,r){let l=b(e,t,n);if(null==l)return!1;if("between"===e.operator){let t=null==e.min?-1/0:Number(e.min),n=null==e.max?1/0:Number(e.max);return!!(Number.isFinite(t)||Number.isFinite(n))&&l>=t&&l<=n}let i=w(e,t,n);if(null==i)return!1;if(h(e.operator)){if(!r)return!1;let t=b(e,r,n),a=w(e,r,n);if(null==t||null==a)return!1;let o=t-a,u=l-i;return"cross_above"===e.operator?o<0&&u>=0:"cross_below"===e.operator?o>0&&u<=0:o<0&&u>=0||o>0&&u<=0}return"above_or_equal"===e.operator?l>=i:"below_or_equal"===e.operator?l<=i:"below"===e.operator?l<i:l>i}function S(e,t,n){let r=b(e,t,n);if(null==r||"between"===e.operator)return null;let l=w(e,t,n);return null==l?null:r-l}function M(e,t,n,r){let l=function(e,t,n,r){if("between"!==e.operator)return null;let l=b(e,t,r),i=b(e,n,r);if(null==l||null==i||l===i)return null;for(let t of[e.min,e.max].map(e=>Number(e)).filter(Number.isFinite)){let e=(t-l)/(i-l);if(Number.isFinite(e)&&e>=0&&e<=1)return p(e)}return null}(e,t,n,r);if(null!=l)return l;let i=S(e,t,r),a=S(e,n,r);return null==i||null==a||i===a?.5:p((0-i)/(a-i))}function N(e,t,n){var r,i;let a=function(e,t,n){let r=u(e),l=u(t);return null!=r&&null!=l&&r!==l?r+(l-r)*n:n<.5?e:t}((0,l.Wn)(e),(0,l.Wn)(t),n),o=(r=d(e),i=d(t),null==r||null==i?null!=i?i:r:r+(i-r)*n);return(0,l.IZ)((0,l.S8)(t,a),o)}function k(e,t,n,r){let i=M(e,t,n,r);return(0,l.Wn)(N(t,n,i))}function _(e,t){let n=((null==t?void 0:t.colorRanges)||[]).filter(e=>!1!==e.visible);if(0===n.length)return e;let r=n.flatMap((t,n)=>{let r=e.find(e=>
1e.workbenchSeriesId===t.seriesId);if(!r)return[];let i=function(e){if(!e||!Array.isArray(e.data))return null;let t=new Map;return e.data.forEach(e=>{let n=d(e);null!=n&&f(e).forEach(e=>t.set(e,n))}),t.size>0?t:null}(("series"===t.compareTo||"series_percent"===t.compareTo)&&t.compareSeriesId?e.find(e=>e.workbenchSeriesId===t.compareSeriesId):void 0),a=function(e,t,n,r){var i;if(!Array.isArray(e.data)||0===e.data.length)return null;let a=function(e,t,n){let r=!(arguments.length>3)||void 0===arguments[3]||arguments[3],i=e.map((r,i)=>{var a;return a=i>0?e[i-1]:void 0,"period"===t.mode?function(e,t){let n=u((0,l.Wn)(t));if(null==n)return!1;let r=u(e.startTime),i=u(e.endTime);return(null==r||!(n<r))&&(null==i||!(n>i))&&(null!=r||null!=i)}(t,r):x(t,r,n,a)}),a=h(t.operator),o=e.map((e,t)=>i[t]||a&&!!i[t+1]),s=r&&"condition"===t.mode,c=[];return e.forEach((r,i)=>{if(i>0&&s&&o[i]!==o[i-1]){let l=M(t,e[i-1],r,n);l>1e-6&&l<.999999&&c.push(N(e[i-1],r,l))}c.push((0,l.IZ)(r,o[i]?d(r):null))}),c}(e.data,t,r,"bar"!==e.type);if(!a.some(e=>null!=d(e)))return null;let o="bar"===e.type?"bar":"line",s=h(t.operator);return{id:"workbench-colorrange-".concat(t.id,"-").concat(n),name:"".concat(e.name||"Series"," - ").concat(t.label||"Color Range"),type:o,data:a,yAxisIndex:e.yAxisIndex,symbol:s?"circle":"none",symbolSize:s?5:void 0,connectNulls:!1,silent:!s,tooltip:{show:!1},showInLegend:!1,legendHoverLink:!1,z:20+n,workbenchExcludeFromExport:!0,itemStyle:{color:t.color},lineStyle:{...e.lineStyle||{},color:t.color,width:Number((null===(i=e.lineStyle)||void 0===i?void 0:i.width)||2)+.8},areaStyle:e.areaStyle||"area"===e.type?{color:t.color,opacity:.22}:void 0,barMaxWidth:e.barMaxWidth}}(r,t,n,i);return t.background?[function(e,t,n,r){var i;if(!Array.isArray(e.data)||0===e.data.length)return null;let a="period"===t.mode?function(e,t){let n=(0,l.Wn)(e[0]),r=(0,l.Wn)(e[e.length-1]),i=t.startTime||n,a=t.endTime||r;return i||a?[[{xAxis:i},{xAxis:a}]]:null}(e.data,t):function(e,t,n){if(h(t.operator)){let r=[];for(let i=1;i<e.length;i+=1){let a=e[i-1],o=e[i];if(!x(t,o,n,a))continue;let u=(0,l.Wn)(a),s=(0,l.Wn)(o);null!=u&&null!=s&&r.push([{xAxis:u},{xAxis:s}])}return r.length>0?r:null}let r=[],i=null,a=null,o=null,u=!1;for(let s of e){let e=(0,l.Wn)(s);if(null!=e){if(x(t,s,n)){null==i&&(i=o&&!u?k(t,o,s,n):e),a=e,o=s,u=!0;continue}if(null!=i&&null!=a){let e=o&&u?k(t,o,s,n):a;r.push([{xAxis:i},{xAxis:e}])}i=null,a=null,o=s,u=!1}}return null!=i&&null!=a&&r.push([{xAxis:i},{xAxis:a}]),r.length>0?r:null}(e.data,t,r);if(!a)return null;let o=Math.min(1,Math.max(.05,Number(null!==(i=t.backgroundOpacity)&&void 0!==i?i:.4)));return{id:"workbench-colorrange-".concat(t.id,"-").concat(n,"-bg"),name:"".concat(e.name||"Series"," - ").concat(t.label||"Color Range Area"),type:"line",data:function(e){let t=e.find(e=>null!=(0,l.Wn)(e)&&null!=d(e)),n=[...e].reverse().find(e=>null!=(0,l.Wn)(e)&&null!=d(e));if(!t||!n){var r,i;let t=null!==(r=(0,l.Wn)(e[0]))&&void 0!==r?r:new Date().toISOString(),n=null!==(i=(0,l.Wn)(e[e.length-1]))&&void 0!==i?i:t;return c(t,0,n,0)}return c((0,l.Wn)(t),d(t),(0,l.Wn)(n),d(n))}(e.data),yAxisIndex:e.yAxisIndex,silent:!0,tooltip:{show:!1},showInLegend:!1,legendHoverLink:!1,symbol:"none",symbolSize:0,showSymbol:!1,itemStyle:{opacity:0},lineStyle:{opacity:0,width:0},emphasis:{disabled:!0},blur:{disabled:!0},z:0+n,workbenchExcludeFromExport:!0,markArea:{silent:!0,itemStyle:{color:y(t.color,o)},label:{show:!1},data:a}}}(r,t,n,i),a].filter(e=>!!e):a?[a]:[]});return r.length>0?[...e,...r]:e}function A(e,t){let n=((null==t?void 0:t.drawings)||[]).filter(e=>!1!==e.visible);if(0===n.length)return e;let r=n.map((t,n)=>(function(e,t,n){var r,l,i,a;if(!t||!1===e.visible||!(null===(r=e.points)||void 0===r?void 0:r[0])||!(null===(l=e.points)||void 0===l?void 0:l[1]))return null;let[o,d]=e.points,p=Number(o.value),f=Number(d.value);if(!Number.isFinite(p)||!Number.isFinite(f))return null;let v=s(o),h=s(d),b=e.color||g(t||{},"#2196F3"),w=Math.max(1,Number(e.lineWidth||3)),x=e.lineStyle||"solid",S=Math.max(8,Math.min(72,Number(e.fontSize||14))),M=!1!==e.textBackgroun
1d,N=!1!==e.textBorder,k=Number((null==t?void 0:t.yAxisIndex)||0),_={id:"workbench-drawing-".concat(e.id),name:e.label||"Drawing ".concat(n+1),type:"line",data:c(v,p,h,f),yAxisIndex:k,workbenchDrawingId:e.id,silent:!1,tooltip:{show:!1},showInLegend:!1,legendHoverLink:!1,symbol:"none",symbolSize:0,showSymbol:!1,itemStyle:{opacity:0},lineStyle:{opacity:0,width:0},emphasis:{disabled:!0},blur:{disabled:!0},workbenchExcludeFromExport:!0,z:80+n};if("text"===e.type){let t=null!==(i=e.text)&&void 0!==i?i:e.label||"Text";return{..._,markPoint:{silent:!1,symbol:"circle",symbolSize:0,label:{show:""!==t,formatter:t,color:b,fontSize:S,fontWeight:700,backgroundColor:M?"rgba(15,23,42,0.72)":"transparent",borderColor:N?b:"transparent",borderWidth:N?1:0,borderRadius:M||N?6:0,padding:M||N?[5,7]:[0,0]},data:[{coord:[v,p]}]}}}if("rectangle"===e.type){let t=Math.min(1,Math.max(.05,Number(null!==(a=e.fillOpacity)&&void 0!==a?a:.16)));return{..._,markArea:{silent:!1,itemStyle:{color:y(e.fillColor||b,t),borderColor:b,borderWidth:w,borderType:x},label:{show:!1},data:[[{xAxis:v,yAxis:p},{xAxis:h,yAxis:f}]]}}}if("fib_retracement"===e.type){let e=f-p;return{..._,markLine:{silent:!1,symbol:["none","none"],lineStyle:{color:b,width:Math.max(1,w-.5),type:x,opacity:.9},label:{show:!0,position:"end",color:b,fontSize:10,formatter:"{b}",backgroundColor:"rgba(15,23,42,0.68)",borderRadius:4,padding:[2,4]},data:m.map(t=>{let n=p+e*t.ratio;return[{name:t.label,coord:[v,n]},{coord:[h,n]}]})}}}if("parallel_channel"===e.type&&e.points[2]){let t=function(e,t,n){let r=u(e.time),l=u(t.time),i=u(n.time),a=Number(e.value),o=Number(t.value),c=Number(n.value);if(!Number.isFinite(a)||!Number.isFinite(o)||!Number.isFinite(c))return null;let m=s(e),d=s(t);if(null==r||null==l||null==i||r===l){let e=c-a;return{start:[m,a],end:[d,o],parallelStart:[m,a+e],parallelEnd:[d,o+e]}}let p=c-(a+(o-a)/(l-r)*(i-r));return{start:[m,a],end:[d,o],parallelStart:[m,a+p],parallelEnd:[d,o+p]}}(o,d,e.points[2]);return t?{..._,markLine:{silent:!1,symbol:["none","none"],lineStyle:{color:b,width:w,type:x},label:{show:!1},data:[[{coord:t.start},{coord:t.end}],[{coord:t.parallelStart},{coord:t.parallelEnd}],[{coord:t.start},{coord:t.parallelStart}],[{coord:t.end},{coord:t.parallelEnd}]]}}:null}return{..._,markLine:{silent:!1,symbol:"arrow"===e.type?["none","arrow"]:["none","none"],symbolSize:"arrow"===e.type?[10,14]:0,lineStyle:{color:b,width:w,type:x},label:{show:!1},emphasis:{lineStyle:{width:w+1}},data:[[{coord:[v,p],lineStyle:{color:b,width:w,type:x}},{coord:[h,f]}]]}}})(t,e.find(e=>e.workbenchSeriesId===t.seriesId),n)).filter(e=>!!e);return r.length>0?[...e,...r]:e}function C(e){var t;return e&&(null===(t=String(e).split(":")[0])||void 0===t?void 0:t.trim())||null}function T(e){return Array.isArray(e)&&e.some(e=>null!=(0,l.fW)(e,{nullForMissing:!0}))}function F(e){if(!Array.isArray(e))return null;for(let t=e.length-1;t>=0;t-=1){let n=(0,l.fW)(e[t],{nullForMissing:!0});if(null!=n&&Number.isFinite(n))return n}return null}function I(e){if("number"==typeof e&&Number.isFinite(e))return e;if(null==e)return null;let t=new Date(String(e)).getTime();return Number.isFinite(t)?t:null}function D(e,t){let n=[],r=null,i=null;return e.forEach(e=>{let a=(0,l.fW)(e,{nullForMissing:!0});if(null==a){n.push((0,l.IZ)(e,null)),r=e,i=null;return}null!=i&&(i>=0?"positive":"negative")!=(a>=0?"positive":"negative")&&n.push(function(e,t,n,r){let i=I((0,l.Wn)(e)),a=I((0,l.Wn)(t)),o=r-n,u=0!==o&&Number.isFinite(o)?(0-n)/o:.5,s=Math.max(0,Math.min(1,Number.isFinite(u)?u:.5)),c=null!=i&&null!=a&&a!==i?i+(a-i)*s:(0,l.Wn)(0===r?t:e);return(0,l.IZ)((0,l.S8)(t,c),0)}(r,e,i,a));let o="positive"===t?a>=0:a<0;n.push((0,l.IZ)(e,o?a:null)),r=e,i=a}),n}function E(e,t){var n;if(!(null==t?void 0:null===(n=t.series)||void 0===n?void 0:n.length)||0===e.length)return e;let r=new Map(t.series.map(e=>[e.id,e]));return e.flatMap(e=>{var t,n,l,i;if(e.workbenchExcludeFromExport||String(e.workbenchSeriesId||"").includes(":"))return[e];let a=C(e.workbenchSeriesId),o=a?r.get(a):void 0;if(!(o&&!o.bubbleHeatmap&&!0===o.signColor)||"line"!==e.type||!Array.isArray(e.data))return[e];let u=e.data;if(!T(u))return[e];let s=(null==o?void 0:o.positiveColor)||"#22c55e",c=(null==o?void 0:o.negativeColor)||"#ef4444",m=F(u),d=e.lineStyle||{},p=e.areaStyle,f=Number(null!==(n=null!==(t=null==d?void 0:d.width)&&void 0!==t?t:null==o?void 0:o.lineWidth)&&void 0!==n?n:2),v=Number.isFinite(f)?Math.max(.5,f):2,h=String(e.id||a||e.name||"series"),y="rgba(0,0,0,0)",g={...e,latestValueData:u,exportData:u,workbenchSignedLineBase:!0,latestValueColor:null!=m&&m<0?c:s,lineStyle:{...d,color:y,opacity:0,width:0},itemStyle:{...e.itemStyle||{},color:y,opacity:0}
1,areaStyle:p?{...p,color:y,opacity:0}:void 0,z:Math.min(Number(e.z||0),0)},b={...e,tooltip:{show:!1},silent:!0,latestValueDisabled:!0,workbenchExcludeFromExport:!0,workbenchSignedLineOverlay:!0,connectNulls:!1,z:Math.max(Number(e.z||0),20)};return[g,{...b,id:"".concat(h,":positive"),data:D(u,"positive"),lineStyle:{...d,color:s,opacity:1,width:v},itemStyle:{...e.itemStyle||{},color:s,opacity:1},areaStyle:p?{...p,color:s,opacity:null!==(l=null==p?void 0:p.opacity)&&void 0!==l?l:.18}:void 0},{...b,id:"".concat(h,":negative"),data:D(u,"negative"),lineStyle:{...d,color:c,opacity:1,width:v},itemStyle:{...e.itemStyle||{},color:c,opacity:1},areaStyle:p?{...p,color:c,opacity:null!==(i=null==p?void 0:p.opacity)&&void 0!==i?i:.18}:void 0}]})}function R(e,t,n){var r;if(!(null==n?void 0:null===(r=n.series)||void 0===r?void 0:r.length)||0===t.length)return e;let i=new Map(n.series.map(e=>[e.id,e]));return t.forEach((t,n)=>{if(t.workbenchExcludeFromExport||String(t.workbenchSeriesId||"").includes(":"))return;let r=C(t.workbenchSeriesId),a=r?i.get(r):null,o=(null==a?void 0:a.signColor)===!0;if(!a||!o||a.bubbleHeatmap||!T(t.data)||e.some(e=>(function(e,t){let n=null==e?void 0:e.seriesIndex;return Array.isArray(n)?n.includes(t):n===t})(e,n)))return;let u=a.positiveColor||"#22c55e",s=a.negativeColor||"#ef4444",c=F(t.data);delete t.color,t.lineStyle&&"object"==typeof t.lineStyle&&!Array.isArray(t.lineStyle)&&(t.lineStyle={...t.lineStyle},delete t.lineStyle.color),t.itemStyle&&"object"==typeof t.itemStyle&&!Array.isArray(t.itemStyle)&&(t.itemStyle={...t.itemStyle},delete t.itemStyle.color),t.areaStyle&&"object"==typeof t.areaStyle&&!Array.isArray(t.areaStyle)&&(t.areaStyle={...t.areaStyle},delete t.areaStyle.color),t.latestValueColor=null!=c&&c<0?s:u,t.itemStyle={...t.itemStyle||{},color:e=>{let t=(0,l.fW)(null==e?void 0:e.data,{nullForMissing:!0});return null!=t&&Number.isFinite(t)?t<0?s:u:a.color||"#3b82f6"}},e.push({show:!1,seriesIndex:n,dimension:1,type:"piecewise",pieces:[{lt:0,color:s},{gte:0,color:u}],outOfRange:{color:a.color||"#3b82f6"}})}),e}function O(e,t){var n;let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"#2196F3",i=g(e,r),a=(n=e.type)&&o.has(n)?n:"bubble"===n?"scatter":"line",u=e.type===a?e:{...e,type:a},s=function(e,t,n,r){let i=e=>{let t=Number(e);return Number.isFinite(t)?Math.abs(t)>=1e3?t.toLocaleString("en-US",{maximumFractionDigits:2}):String(Number(t.toFixed(6))):""},a=e=>{var t;let n=null===(t=e.label)||void 0===t?void 0:t.trim();if(!1===e.showValue)return n||"";let r="sloped"===e.mode?"".concat(i(e.startValue)," -> ").concat(i(e.endValue)):i(e.value);return n?r?"".concat(n," - ").concat(r):n:r},o=e=>({color:e.color||n,type:e.lineStyle||"dashed",width:e.lineWidth||2}),u=e=>({show:!0,color:e.color||n,position:e.labelPosition||"end",formatter:e=>e.name||(null!=e.value?String(e.value):"")}),s=(e||[]).flatMap(e=>{if(!1===e.visible||e.seriesId!==t)return[];let n=o(e),i=u(e),s=a(e);if("sloped"===e.mode){let t=Number(e.startValue),a=Number(e.endValue),o=Array.isArray(r)?(0,l.Wn)(r[0]):null,u=Array.isArray(r)?(0,l.Wn)(r[r.length-1]):null,c=e.startTime||o,m=e.endTime||u;return null!=c&&""!==c&&null!=m&&""!==m&&Number.isFinite(t)&&Number.isFinite(a)?[[{coord:[c,t],name:s,lineStyle:n,label:i},{coord:[m,a],lineStyle:n}]]:[]}return Number.isFinite(Number(e.value))?[{yAxis:Number(e.value),name:s,lineStyle:n,label:i}]:[]});if(0!==s.length)return{silent:!0,symbol:"none",label:{show:!0,formatter:e=>e.name||(null!=e.value?String(e.value):"")},lineStyle:{color:n,type:"dashed",width:2},data:s}}(null==t?void 0:t.markLines,e.workbenchSeriesId,i,Array.isArray(e.data)?e.data:void 0);return s?{...u,markLine:function(e,t){if(!e)return t;if(!t)return e;let n=Array.isArray(e.data)?e.data:[],r=Array.isArray(t.data)?t.data:[];return{...e,...t,data:[...n,...r]}}(u.markLine,s)}:u}function z(e,t){var n,r;let l="string"==typeof e.workbenchSeriesId?e.workbenchSeriesId:"";if(!l||l.includes(":"))return e;let o=null==t?void 0:null===(n=t.series)||void 0===n?void 0:n.find(e=>e.id===l);if(!o||e.itemStyle&&"object"==typeof e.itemStyle&&!Array.isArray(e.itemStyle)&&0===Object.keys(e.itemStyle).length)return e;
1let u=g(e,o.color||"#2196F3"),s=(0,a.nG)(o.style,u,o),c=(0,i.WR)(o.style),m=Array.isArray(e.data)?e.data:void 0;"bubble"===o.style&&Array.isArray(m)&&Array.isArray(m[0])&&m[0].length<3&&(m=m.map(e=>Array.isArray(e)?[e[0],e[1],e[1]]:e));let d={...e};return m&&(d.data=m),d.itemStyle=(0,i.oO)(o,s.itemStyle,m),d.lineStyle=s.lineStyle,d.areaStyle=s.areaStyle,void 0!==s.barWidth&&(d.barWidth=s.barWidth,d.barMaxWidth=null!==(r=s.barMaxWidth)&&void 0!==r?r:12,d.barGap=s.barGap,d.barCategoryGap=s.barCategoryGap),c&&(d.symbol="circle",d.showSymbol=!0,d.symbolSize="bubble"===o.style?(0,i.iy)(o,m||[]):(0,i.bd)(o),d.encode={x:0,y:1,tooltip:"bubble"===o.style?[1,2]:[1]}),d}},3532:function(e,t,n){n.d(t,{$s:function(){return g},AS:function(){return b},QI:function(){return x},kt:function(){return h},sv:function(){return S}});var r=n(89282),l=n(56999),i=n(54418),a=n(24763),o=n(91854),u=n(92212),s=n(91767),c=n(49184),m=n(58512),d=n(49108);let p=[o.Jk,"#22c55e","#f59e0b","#ef4444","#a855f7","#14b8a6","#e11d48"];function f(e){let t="undefined"!=typeof crypto&&"randomUUID"in crypto?crypto.randomUUID():Math.random().toString(36).slice(2);return"".concat(e,"-").concat(t)}function v(e,t){let n=(0,r.uH)(e),l=function(e){let t=[e?e.charAt(0).toLowerCase()+e.slice(1):e,e,null==e?void 0:e.toLowerCase(),null==e?void 0:e.toUpperCase(),e?e.charAt(0).toUpperCase()+e.slice(1).toLowerCase():e,"value","metric"];return e&&/price/i.test(e)&&t.push("priceUSD","PriceUSD","price"),t.filter(Boolean)}(t);return n.map(e=>{var t,n;let r=function(e){if(null==e)return null;let t=String(e),n=new Date(t);return Number.isNaN(n.getTime())?t:n.toISOString().slice(0,16).replace("T"," ")}(null!==(n=null!==(t=null==e?void 0:e.time)&&void 0!==t?t:null==e?void 0:e.date)&&void 0!==n?n:null==e?void 0:e.timestamp);if(!r)return null;let i=l.find(t=>(null==e?void 0:e[t])!==void 0&&(null==e?void 0:e[t])!==null);return{time:r,value:i?function(e){if(null==e||""===e)return null;let t=Number(e);return Number.isFinite(t)?t:null}(e[i]):null}}).filter(e=>null!=e).sort((e,t)=>new Date(e.time).getTime()-new Date(t.time).getTime())}function h(e,t){if(!t||"all"===t)return e;let n=new Date,r=new Date(n);switch(t){case"7d":r.setDate(n.getDate()-7);break;case"30d":r.setDate(n.getDate()-30);break;case"90d":r.setDate(n.getDate()-90);break;case"mtd":r.setDate(1),r.setHours(0,0,0,0);break;case"ytd":r.setMonth(0,1),r.setHours(0,0,0,0);break;case"1y":r.setFullYear(n.getFullYear()-1);break;case"3y":r.setFullYear(n.getFullYear()-3);break;case"5y":r.setFullYear(n.getFullYear()-5);break;default:{let l=t.match(/^(\d+)d$/);if(!l)return e;r.setDate(n.getDate()-Number(l[1]))}}return e.filter(e=>new Date(e.time)>=r)}function y(e){let t=(null==e?void 0:e.toLowerCase())||"";return t.includes("macro")?"macro":t.includes("sentiment")?"sentiment":t.includes("derivative")?"derivatives":"crypto"}function g(e){var t,n;let r=(t=e.metric,{area:y(n=e.category),metricCode:t.metricCode,metricName:t.metricName||t.chartName,categoryName:t.categoryName||n,subcategoryName:t.subcategoryName,url:t.url,collection:t.collection,raw:t});r.params=e.params;let l=e.metric.metricCode||e.metric.url||e.metric.chartName||e.metric.metricName||f("metric_source");return{id:f("metric"),type:"metric",label:(0,m.rH)(e.metric),source:l,expression:null,asset:e.asset,axis:e.axis,color:e.color,style:e.style,lineWidth:"line"===e.style||"area"===e.style?2:void 0,formatter:(0,o.dK)(e.formatter||(0,c.Wb)(e.metric,e.category)),scale:(0,o.J)(e.scale),smoothing:null,metric:r}}function b(e){var t,n,r,l,a;let s=new Date().toISOString(),c=e.chartMetrics||[],m=(0,i.hj)(e.asset||"btc").assetColor,f=null!==(a=e.includePriceSeries)&&void 0!==a?a:!!(e.asset&&!(null===(t=e.category)||void 0===t?void 0:t.toLowerCase().includes("sentiment"))),v=c.map((t,n)=>{var r,l,i;let a=(l=e.category,i=e.subCategory,{area:y(l),metricCode:t.code,metricName:t.name,categoryName:l,subcategoryName:i,url:t.url,collection:t.collection});return e.area&&(a.area=e.area),{id:"metric_".concat(n+1),type:"metric",label:t.name,source:"metric_".concat(n+1),expression:null,asset:e.asset||"btc",axis:e.combineYaxis?"right":"left",color:(null===(r=e.metricColors)||void 0===r?void 0:r[n])||(0===n?m:p[n%p.length]),style:t.chartStyle||(0,o.Dz)(e.chartType),lineWidth:"line"===(t.chartStyle||(0,o.Dz)(e.chartType))||"area"===(t.chartStyle||(0,o.Dz)(e.chartType))?2:void 0,formatter:(0,o.dK)(e.combineYaxis&&(0,d.E)(t)?"price":"number"),scale:(0,o.J)(e.comb
1ineYaxis?e.priceScale||t.metricScale||e.metricScale||"log":t.metricScale||e.metricScale||"linear"),smoothing:null,metric:a}}),h=f?[{id:"price_usd",type:"metric",label:"".concat((e.asset||"btc").toUpperCase(),": Price USD"),source:"price_usd",expression:null,asset:e.asset||"btc",axis:"right",color:"#ffffff",style:"line",lineWidth:2,formatter:"price",scale:(0,o.J)(e.priceScale||"log"),smoothing:null,metric:{area:"crypto",metricCode:"priceUSD",metricName:"Price",categoryName:"__price__",subcategoryName:"Price USD"}}]:[];return{id:(0,u.j)(),name:(null===(n=e.chartInfo)||void 0===n?void 0:n.name)||"Custom Chart",baseAsset:e.asset||"btc",category:"My Charts",originalChartId:(null===(r=e.chartInfo)||void 0===r?void 0:r.id)!=null?String(e.chartInfo.id):null,originalChartName:(null===(l=e.chartInfo)||void 0===l?void 0:l.name)||null,originalCategory:e.category||null,originalSubCategory:e.subCategory||null,createdAt:s,updatedAt:s,series:[...v,...h],settings:{timeframe:"all",interval:e.interval||"1d",chartType:e.chartType||"line"}}}async function w(e,t){var n,r,i,o,u,s,c,m;let d=e.metric;if(!d)return[];let p=e.asset||t.baseAsset||"btc",f=(null===(n=d.params)||void 0===n?void 0:n.dataHistory)||(null===(r=d.params)||void 0===r?void 0:r.timeframe)||t.settings.timeframe||"all";if("priceUSD"===d.metricCode||"__price__"===d.categoryName)return x(t,p);if("macro"===d.area){let e={code:d.metricCode,collection:d.collection};return v(await (0,a.xo)((0,a.Vj)({area:"workbench-macro",metricCode:d.metricCode,collection:d.collection,timeframe:f}),()=>"Macro_Liquidity"===d.collection?(0,l.TEH)(e,f):(0,l.yr$)(e,f)),d.metricCode)}if("derivatives"===d.area){let e=function(e){var t;let n=e.metricCode||"",r=(null===(t=e.metricName)||void 0===t?void 0:t.toLowerCase())||"",l=n.toLowerCase();if(l.startsWith("open_interest_usd")||l.startsWith("open_interest")){let e=["open_interest_usd_","open_interest_"].find(e=>l.startsWith(e)),t=e?n.slice(e.length):"";return{path:"derivatives/Open_Interest",metricCode:"Open_Interest",responseCode:l.startsWith("open_interest_usd")?"open_Interest_Usd":"open_Interest",entityName:t||void 0}}return"value"===l||l.includes("funding")||r.includes("funding rate")?{path:"derivatives/Funding_Rate",metricCode:"Funding_Rate",responseCode:"value"}:{path:e.url||"derivatives/".concat(n),metricCode:n,responseCode:n}}(d),t=e.entityName||(null===(u=d.params)||void 0===u?void 0:u.entityName),n={...(null===(s=d.params)||void 0===s?void 0:s.exchange)?{exchange:d.params.exchange}:{},...(null===(c=d.params)||void 0===c?void 0:c.symbol)?{symbol:d.params.symbol}:{},...(null===(m=d.params)||void 0===m?void 0:m.marketType)?{market_type:d.params.marketType}:{}};return v(await (0,a.xo)((0,a.Vj)({area:"workbench-derivatives",asset:p,path:e.path,metricCode:e.metricCode,entityName:t||"",extra:JSON.stringify(n),timeframe:f}),()=>(0,l.OOv)(p,e.path,f,t,e.metricCode,Object.keys(n).length>0?n:void 0)),e.responseCode)}let h="sentiment"===d.area&&(null===(i=d.params)||void 0===i?void 0:i.dataHistory)&&"all"!==d.params.dataHistory&&d.metricCode.startsWith("google_")?"".concat(d.metricCode,"_").concat(d.params.dataHistory):d.metricCode,y="sentiment"===d.area?d.url&&h===d.metricCode?d.url:"".concat(h,"/sentiment"):d.url||"".concat(d.categoryName||t.originalCategory||"market","/").concat(d.metricCode);return v(await (0,a.xo)((0,a.Vj)({area:"workbench-metric",metricArea:d.area,asset:"sentiment"===d.area?"":p,path:y,metricCode:d.metricCode,entityName:(null===(o=d.params)||void 0===o?void 0:o.entityName)||"",timeframe:f}),()=>{var e;return(0,l.OOv)("sentiment"===d.area?"":p,y,f,null===(e=d.params)||void 0===e?void 0:e.entityName,d.metricCode)}),d.metricCode)}async function x(e,t){let n=e.settings.timeframe||"all";return v(await (0,a.xo)((0,a.Vj)({area:"workbench-price",asset:t,timeframe:n}),()=>(0,l.urE)(t,n)),"priceUSD")}async function S(e){let t=e.series.filter(e=>"metric"===e.type),n=await Promise.all(t.map(async t=>{let n=h(await w(t,e),e.settings.timeframe);return[t.source,{kind:"series",points:n}]})),r=(0,s.cY)(n.map(e=>{let[,t]=e;return t}),{interval:e.settings.interval,preferDenseDaily:!e.settings.interval||"1d"===e.settings.interval});return n.reduce((e,t)=>
1{let[n,l]=t;return e[n]={kind:"series",points:r.length>0?(0,s.N_)(l.points,r):l.points},e},{})}},26389:function(e,t,n){n.d(t,{Aq:function(){return u},rj:function(){return a},vH:function(){return o}});var r=n(46166);function l(e){return Math.max(0,Number(e)||0)}function i(e,t){if(!(null==t?void 0:t.enabled))return null;let n=e.map(e=>d(e.time)).filter(e=>null!=e);if(0===n.length)return null;let i=(0,r.G)(n),a=(0,r.u)(n),o=l(t.trimStartDays),u=l(t.trimEndDays),s=function(e){if(!e)return null;let t=new Date(10===e.length?"".concat(e,"T00:00:00"):e).getTime();return Number.isFinite(t)?t:null}(t.startDate),c=Math.max(o>0?i+o*m:Number.NEGATIVE_INFINITY,null!=s?s:Number.NEGATIVE_INFINITY),p=u>0?a-u*m:Number.POSITIVE_INFINITY;return{startMs:Number.isFinite(c)?c:null,endMs:Number.isFinite(p)?p:null}}function a(e,t){let n=i(e,t);return n?c(e,n):e}function o(e,t){let n=i(e.flatMap(e=>e.points),t);return n?e.map(e=>({...e,points:c(e.points,n)})):e}function u(e,t){if(!(null==t?void 0:t.enabled)||!Array.isArray(e))return;let n=[];for(let t of e)if(Array.isArray(t.data))for(let e of t.data)Array.isArray(e)&&n.push({time:e[0]});let r=i(n,t);if(r)for(let t of e)Array.isArray(t.data)&&(t.data=t.data.filter(e=>!Array.isArray(e)||s(d(e[0]),r)))}function s(e,t){return null!=e&&(null==t.startMs||e>=t.startMs)&&(null==t.endMs||e<=t.endMs)}function c(e,t){return e.filter(e=>s(d(e.time),t))}let m=864e5;function d(e){let t=e instanceof Date?e.getTime():new Date(e).getTime();return Number.isFinite(t)?t:null}},90701:function(e,t,n){n.d(t,{ct:function(){return h},LY:function(){return v},IS:function(){return f}});var r=n(63995);let l=new Set([">=","<=","==","!=","&&","||"]),i=new Set(["+","-","*","/","%","^",">","<","!"]);class a extends Error{constructor(e,t){super(e),(0,r._)(this,"position",void 0),this.position=t,this.name="FormulaParseError"}}class o{parse(){let e=this.parseOr();if("eof"!==this.peek().type)throw new a("Unexpected token after expression",this.index);return e}peek(){return this.tokens[this.index]}consume(){return this.tokens[this.index++]}matchOperator(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];let r=this.peek();return"operator"===r.type&&t.includes(r.value)?(this.consume(),r.value):null}parseOr(){let e=this.parseAnd();for(;this.matchOperator("||");)e={type:"binary",operator:"||",left:e,right:this.parseAnd()};return e}parseAnd(){let e=this.parseComparison();for(;this.matchOperator("&&");)e={type:"binary",operator:"&&",left:e,right:this.parseComparison()};return e}parseComparison(){let e=this.parseAdditive();for(;;){let t=this.matchOperator(">",">=","<","<=","==","!=");if(!t)return e;e={type:"binary",operator:t,left:e,right:this.parseAdditive()}}}parseAdditive(){let e=this.parseMultiplicative();for(;;){let t=this.matchOperator("+","-");if(!t)return e;e={type:"binary",operator:t,left:e,right:this.parseMultiplicative()}}}parseMultiplicative(){let e=this.parsePower();for(;;){let t=this.matchOperator("*","/","%");if(!t)return e;e={type:"binary",operator:t,left:e,right:this.parsePower()}}}parsePower(){let e=this.parseUnary();return this.matchOperator("^")&&(e={type:"binary",operator:"^",left:e,right:this.parsePower()}),e}parseUnary(){let e=this.matchOperator("-","!");return e?{type:"unary",operator:e,argument:this.parseUnary()}:this.parsePrimary()}parsePrimary(){let e=this.consume();if("number"===e.type)return{type:"number",value:e.value};if("string"===e.type)return{type:"string",value:e.value};if("identifier"===e.type){if("paren"===this.peek().type&&"("===this.peek().value){this.consume();let t=[];if(!("paren"===this.peek().type&&")"===this.peek().value))for(;;){if(t.push(this.parseOr()),"comma"===this.peek().type){this.consume();continue}break}let n=this.consume();if("paren"!==n.type||")"!==n.value)throw new a("Expected closing parenthesis",this.index);return{type:"call",name:e.value,args:t}}return{type:"identifier",name:e.value}}if("paren"===e.type&&"("===e.value){let e=this.parseOr(),t=this.consume();if("paren"!==t.type||")"!==t.value)throw new a("Expected closing parenthesis",this.index);return e}throw new a("Expected expression",this.index)}constructor(e){(0,r._)(this,"tokens",void 0),(0,r._)(this,"index",void 0),this.tokens=e,this.index=0}}var u=n(81046),s=n(38908);function c(e){return"boolean"==typeof e?e:"number"==typeof e?Number.isFinite(e)&&
10!==e:"string"==typeof e?e.trim().length>0:e.points.some(e=>null!=e.value&&0!==e.value)}function m(e,t,n){return(0,s.Jl)(e,t,(e,t)=>n(e,t)?1:0)}function d(e,t,n){return(0,s.Jl)(e,t,n)}function p(e,t,n){var r,l;if(!(0,s.AZ)(e)&&!(0,s.AZ)(t))return n(c(e),c(t));if((0,s.AZ)(e)&&(0,s.AZ)(t)&&(0,s.Or)(e.points,t.points)){let r=e.points,l=t.points,i=Array(r.length);for(let e=0;e<r.length;e+=1){let t=r[e].value,a=l[e].value;i[e]=null==t||null==a?{time:r[e].time,value:null}:{time:r[e].time,value:n(!!t,!!a)?1:0}}return{kind:"series",points:i}}let i=(0,s.AZ)(e)?new Map(e.points.map(e=>[e.time,e.value])):null,a=(0,s.AZ)(t)?new Map(t.points.map(e=>[e.time,e.value])):null,o=i?null:c(e),u=a?null:c(t);return{kind:"series",points:Array.from(new Set([...null!==(r=null==i?void 0:i.keys())&&void 0!==r?r:[],...null!==(l=null==a?void 0:a.keys())&&void 0!==l?l:[]])).sort().map(e=>{let t=!!i&&null==i.get(e),r=!!a&&null==a.get(e);if(t||r)return{time:e,value:null};let l=i?!!i.get(e):!!o,s=a?!!a.get(e):!!u;return{time:e,value:n(l,s)?1:0}})}}function f(e,t){try{let n=function(e){if(!e.trim())throw new a("Formula is required",0);return new o(function(e){let t=[],n=0;for(;n<e.length;){let r=e[n];if(/\s/.test(r)){n+=1;continue}if(","===r||"("===r||")"===r){t.push(","===r?{type:"comma",value:","}:{type:"paren",value:r}),n+=1;continue}let o=e.slice(n,n+2);if(l.has(o)){t.push({type:"operator",value:o}),n+=2;continue}if(i.has(r)){t.push({type:"operator",value:r}),n+=1;continue}if('"'===r||"'"===r){let l="",i=!1,o=n;for(n+=1;n<e.length;){let t=e[n];if("\\"===t&&n+1<e.length){l+=e[n+1],n+=2;continue}if(t===r){i=!0,n+=1;break}l+=t,n+=1}if(!i)throw new a("Unclosed string literal",o);t.push({type:"string",value:l});continue}if(/[0-9.]/.test(r)){let r=n,l="";for(;n<e.length&&/[0-9._]/.test(e[n]);)l+=e[n],n+=1;let i=Number(l.replace(/_/g,""));if(!Number.isFinite(i))throw new a('Invalid number "'.concat(l,'"'),r);t.push({type:"number",value:i});continue}if(/[A-Za-z_]/.test(r)){let r="";for(;n<e.length&&/[A-Za-z0-9_.]/.test(e[n]);)r+=e[n],n+=1;t.push({type:"identifier",value:r});continue}throw new a('Unexpected character "'.concat(r,'"'),n)}return t.push({type:"eof",value:""}),t}(e)).parse()}(e),r=Array.from(function e(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new Set;return"identifier"===t.type&&n.add(t.name),"unary"===t.type&&e(t.argument,n),"binary"===t.type&&(e(t.left,n),e(t.right,n)),"call"===t.type&&t.args.forEach(t=>e(t,n)),n}(n)),s=Array.from(function e(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new Set;return"unary"===t.type&&e(t.argument,n),"binary"===t.type&&(e(t.left,n),e(t.right,n)),"call"===t.type&&(n.add(t.name),t.args.forEach(t=>e(t,n))),n}(n)),c=r.find(e=>void 0===t[e]);if(c)return{valid:!1,error:'Unknown metric "'.concat(c,'"'),ast:n,identifiers:r,calls:s};let m=s.find(e=>!u.Ro[e]);if(m)return{valid:!1,error:'Unknown function "'.concat(m,'"'),ast:n,identifiers:r,calls:s};return{valid:!0,ast:n,identifiers:r,calls:s}}catch(n){let e=n instanceof a?" at position ".concat(n.position):"",t=n instanceof Error?n.message:"Invalid formula";return{valid:!1,error:"".concat(t).concat(e)}}}function v(e,t){let n=f(e,t);if(!n.valid||!n.ast)throw Error(n.error||"Invalid formula");return{ast:n.ast,value:function e(t,n){switch(t.type){case"number":case"string":return t.value;case"identifier":{let e=n[t.name];if(void 0===e)throw Error('Unknown metric "'.concat(t.name,'"'));return e}case"unary":var r,l,i;return r=t.operator,l=e(t.argument,n),"!"===r?(0,s.AZ)(l)?{kind:"series",points:l.points.map(e=>({time:e.time,value:e.value?0:1}))}:!c(l):(0,s.AZ)(l)?{kind:"series",points:l.points.map(e=>({time:e.time,value:null==e.value?null:-e.value}))}:-(null!==(i=(0,s.He)(l))&&void 0!==i?i:0);case"binary":return function(e,t,n){switch(e){case"+":if("string"==typeof t||"string"==typeof n)return"".concat(t).concat(n);return d(t,n,(e,t)=>e+t);case"-":return d(t,n,(e,t)=>e-t);case"*":return d(t,n,(e,t)=>e*t);case"/":return d(t,n,(e,t)=>0===t?null:e/t);case"%":return d(t,n,(e,t)=>0===t?null:e%t);case"^":return d(t,n,(e,t)=>Math.pow(e,t));case">":return m(t,n,(e,t)=>e>t);case">=":return m(t,n,(e,t)=>e>=t);case"<":return m(t,n,(e,t)=>e<t);case"<=":return m(t,n,(e,t)=>e<=t);case"==":return m(t,n,(e,t)=>e===t);case"!=":return m(t,n,(e,t)=>e!==t);case"&&":return p(t,n,(e,t)=>e&&t);case"||":return p(t,n,(e,t)=>e||t);default:throw Error("Unsupported operator ".concat(e))}}(t.operator,e(t.left,n),e(t.right,n));case"call":{let r=u.Ro[t.name];if(!r)throw Error('Unknown function "'.concat(t.name,'"'));let l=t.args.map(t=>e(t,n)),i=r.validate(l);if(!i.valid)throw Error(i.error||"Invalid arguments for ".concat(t.name));return r.evaluate(l,{variables:n})}default:throw Error("Unsupported formula node")}}(n.ast,t)}}function h(e,t,n,r){if((0,s.AZ)(n))return n;let l=(0,s.He)(n);return{kind:"series",points:r&&r.length>0?r.map(e=>({time:e.time,value:l})):[{time:e||t||"value",value:l}]}}},81046:function(e,t,n){n.d(t,{Ro:function(){return E},mT:function(){return h}});var r=n(63995),l=n(35840),i=n(46166),a=n(91767),o=n(38908);let u=(e,t)=>
1{let n=(0,o.IQ)(e).map(e=>(0,o.yx)(e.value)).filter(e=>null!=e);if(0===n.length)return 0;let r=t(n);return null!=r&&Number.isFinite(r)?r:0},s=(e,t,n)=>{var r;let l=Math.max(1,Math.floor(null!==(r=(0,o.He)(t))&&void 0!==r?r:1));if(!(0,o.AZ)(e))return e;let i=e.points,a=i.map(e=>(0,o.yx)(e.value));return{kind:"series",points:i.map((e,t)=>{if(null==a[t])return{time:e.time,value:null};let r=Math.max(0,t-l+1),i=[];for(let e=r;e<=t;e+=1){let t=a[e];null!=t&&i.push(t)}return{time:e.time,value:i.length>=l?n(i):null}})}},c=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e=>e;if(!(0,o.AZ)(e))return e;let r=null;return{kind:"series",points:e.points.map(e=>{let l=(0,o.yx)(e.value);return null==l?{time:e.time,value:null}:(r=null==r?n(l):t(r,l),{time:e.time,value:Number.isFinite(r)?r:null})})}};class m{get size(){return this.data.length}peek(){return this.data[0]}push(e){let t=this.data;t.push(e);let n=t.length-1;for(;n>0;){let e=n-1>>1;if(this.cmp(t[n],t[e])>=0)break;[t[n],t[e]]=[t[e],t[n]],n=e}}pop(){let e=this.data,t=e[0],n=e.pop();if(e.length>0){e[0]=n;let t=0,r=e.length;for(;;){let n=2*t+1,l=2*t+2,i=t;if(n<r&&0>this.cmp(e[n],e[i])&&(i=n),l<r&&0>this.cmp(e[l],e[i])&&(i=l),i===t)break;[e[t],e[i]]=[e[i],e[t]],t=i}}return t}constructor(e){(0,r._)(this,"cmp",void 0),(0,r._)(this,"data",void 0),this.cmp=e,this.data=[]}}let d=function(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:n;return t.length<n||t.length>r?{valid:!1,error:"".concat(e," expects ").concat(n===r?n:"".concat(n,"-").concat(r)," argument(s)")}:{valid:!0}};function p(e){var t,n;let r=null!==(t=e.minArgs)&&void 0!==t?t:e.args.filter(e=>!e.optional).length,l=null!==(n=e.maxArgs)&&void 0!==n?n:e.args.length;return{...e,validate:t=>d(e.name,t,r,l)}}let f=e=>e.reduce((e,t)=>e+t,0),v=e=>{var t;if(e.length<2)return null;let n=(e.length-1)/2,r=null!==(t=(0,o.J6)(e))&&void 0!==t?t:0,l=0,i=0;for(let t=0;t<e.length;t+=1){let a=t-n;l+=a*(e[t]-r),i+=a*a}return 0===i?null:l/i},h=[p({name:"sma",label:"SMA",description:"Simple moving average.",category:"Smoothing",args:[{name:"series",type:"series"},{name:"period",type:"number"}],returnType:"series",example:"sma(m1, 30)",evaluate:e=>{var t;let[n,r]=e;return{kind:"series",points:(0,l.ob)((0,o.IQ)(n),"sma",null!==(t=(0,o.He)(r))&&void 0!==t?t:1)}}}),p({name:"ema",label:"EMA",description:"Exponential moving average.",category:"Smoothing",args:[{name:"series",type:"series"},{name:"period",type:"number"}],returnType:"series",example:"ema(m1, 14)",evaluate:e=>{var t;let[n,r]=e;return{kind:"series",points:(0,l.ob)((0,o.IQ)(n),"ema",null!==(t=(0,o.He)(r))&&void 0!==t?t:1)}}}),p({name:"median",label:"Median",description:"Rolling median.",category:"Smoothing",args:[{name:"series",type:"series"},{name:"period",type:"number"}],returnType:"series",example:"median(m1, 30)",evaluate:e=>{let[t,n]=e;return s(t,n,e=>(0,o.C2)(e))}}),p({name:"sum",label:"Sum",description:"Rolling sum.",category:"Smoothing",args:[{name:"series",type:"series"},{name:"period",type:"number"}],returnType:"series",example:"sum(m1, 30)",evaluate:e=>{let[t,n]=e;return s(t,n,f)}}),p({name:"std",label:"Std Dev",description:"Rolling standard deviation.",category:"Smoothing",args:[{name:"series",type:"series"},{name:"period",type:"number"}],returnType:"series",example:"std(m1, 30)",evaluate:e=>{let[t,n]=e;return s(t,n,o.qo)}}),p({name:"zscore",label:"Z-Score",description:"Rolling standard score: current value minus mean, divided by standard deviation.",category:"Statistics",args:[{name:"series",type:"series"},{name:"period",type:"number"}],returnType:"series",example:"zscore(m1, 365)",evaluate:e=>{let[t,n]=e;return s(t,n,e=>{let t=e[e.length-1],n=(0,o.J6)(e),r=(0,o.qo)(e);return null==n||null==r||0===r?null:(t-n)/r})}}),p({name:"robust_zscore",label:"Robust Z-Score",description:"Rolling robust z-score using median and median absolute deviation.",category:"Statistics",args:[{name:"series",type:"series"},{name:"period",type:"number"}],returnType:"series",example:"robust_zscore(m1, 365)",evaluate:e=>{let[t,n]=e;return s(t,n,e=>{let t=e[e.length-1],n=(0,o.C2)(e);if(null==n)return null;let r=e.map(e=>Math.abs(e-n)),l=(0,o.C2)(r);return null==l||0===l?null:.6745*(t-n)/l})}}),p({name:"percentile_rank",label:"Percentile Rank",description:"Rolling percentile rank of the current value inside the lookback window.",category:"Statistics",args:[{name:"series",type:"series"},{name:"period",type:"number"}],returnType:"series",example:"percentile_rank(m1, 1460)",evaluate:e=>{let[t,n]=e;return s(t,n,e=>{let t=e[e.length-1];return e.filter(e=>e<=t).length/e.length*100})}}),p({name:"minmax",label:"Min-Max",description:"Rolling min-max normalization from 0 to 1.",category:"Statistics",args:[{name:"series",type:"series"},{name:"period",type:"number"}],returnType:"series",example:"minmax(m1, 365)",evaluate:e=>{let[t,n]=e;return s(t,n,e=>{let t=e[e.length-1],n=(0,i.G)(e),r=(0,i.u)(e);return r===n?null:(t-n)/(r-n)})}}),p({name:"slope",label:"Slope",description:"Rolling linear-regression slope of the series.",category:"Statistics",args:[{name:"series",type:"series"},{name:"period",type:"number"}],returnType:"series",example:"slope(log(m1), 90)",evaluate:e=>{let[t,n]=e;return s(t,n,v)}}),p({name:"hurst_exponent",label:"Hurst Exponent",description:"Rolling Hurst exponent for identifying mean-reversion, randomness, or persistent trend regimes.",category:"Statistics",args:[{name:"series",type:"series"},{name:"period",type:"number"}],returnType:"series",example:"hurst_exponent(m1, 365)",examples:["hurst_exponent(m1, 365)","hurst_exponent(price, 180)"],notes:"Below 0.5 suggests mean reversion, around 0.5 is closer to random, and above 0.5 suggests persistent trend behavior.",evaluate:e=>{let[t,n]=e;return s(t,n,e=>{if(e.length<9)return null;let t=[];for(let n=1;n<e.length;n+=1)t.push(e[n]-e[n-1]);let n=(0,o.J6)(t),r=(0,o.qo)(t);if(null==n||null==r||0===r)return null;let l=0,i=0,a=0;
1t.forEach(e=>{l+=e-n,i=Math.min(i,l),a=Math.max(a,l)});let u=(a-i)/r;return u<=0?null:Math.log(u)/Math.log(t.length)})}}),p({name:"rolling_high",label:"Rolling High",description:"Highest value in a rolling window.",category:"Statistics",args:[{name:"series",type:"series"},{name:"period",type:"number"}],returnType:"series",example:"rolling_high(m1, 365)",evaluate:e=>{let[t,n]=e;return s(t,n,e=>(0,i.u)(e))}}),p({name:"rolling_low",label:"Rolling Low",description:"Lowest value in a rolling window.",category:"Statistics",args:[{name:"series",type:"series"},{name:"period",type:"number"}],returnType:"series",example:"rolling_low(m1, 365)",evaluate:e=>{let[t,n]=e;return s(t,n,e=>(0,i.G)(e))}}),p({name:"distance_from_ma",label:"Distance From MA",description:"Percent distance from the simple moving average.",category:"Technical Indicators",args:[{name:"series",type:"series"},{name:"period",type:"number"}],returnType:"series",example:"distance_from_ma(m1, 200)",evaluate:e=>{let[t,n]=e;return function(e,t){var n;if(!(0,o.AZ)(e))return 0;let r=(0,l.ob)(e.points,"sma",Math.max(1,Math.floor(null!==(n=(0,o.He)(t))&&void 0!==n?n:1)));return{kind:"series",points:e.points.map((e,t)=>{var n;let l=(0,o.yx)(e.value),i=(0,o.yx)(null===(n=r[t])||void 0===n?void 0:n.value);return{time:e.time,value:null==l||null==i||0===i?null:(l/i-1)*100}})}}(t,n)}}),p({name:"ma_ratio",label:"MA Ratio",description:"Fast simple moving average divided by slow simple moving average.",category:"Technical Indicators",args:[{name:"series",type:"series"},{name:"fastPeriod",type:"number"},{name:"slowPeriod",type:"number"}],returnType:"series",example:"ma_ratio(m1, 50, 200)",evaluate:e=>{let[t,n,r]=e;return function(e,t,n){var r,i;if(!(0,o.AZ)(e))return 0;let a=(0,l.ob)(e.points,"sma",Math.max(1,Math.floor(null!==(r=(0,o.He)(t))&&void 0!==r?r:1))),u=(0,l.ob)(e.points,"sma",Math.max(1,Math.floor(null!==(i=(0,o.He)(n))&&void 0!==i?i:1)));return{kind:"series",points:e.points.map((e,t)=>{var n,r;let l=(0,o.yx)(null===(n=a[t])||void 0===n?void 0:n.value),i=(0,o.yx)(null===(r=u[t])||void 0===r?void 0:r.value);return{time:e.time,value:null==l||null==i||0===i?null:l/i}})}}(t,n,r)}}),p({name:"cagr",label:"CAGR",description:"Annualized percent growth over a lookback period.",category:"Risk Metrics",args:[{name:"series",type:"series"},{name:"period",type:"number"},{name:"periodsPerYear",type:"number",optional:!0}],minArgs:2,returnType:"series",example:"cagr(m1, 365)",evaluate:e=>{let[t,n,r]=e;return function(e,t,n){var r,l;if(!(0,o.AZ)(e))return 0;let i=Math.max(1,Math.floor(null!==(r=(0,o.He)(t))&&void 0!==r?r:1)),a=Math.max(1,null==n?365:null!==(l=(0,o.He)(n))&&void 0!==l?l:365);return{kind:"series",points:e.points.map((t,n)=>{var r;let l=(0,o.yx)(t.value),u=(0,o.yx)(null===(r=e.points[n-i])||void 0===r?void 0:r.value);return{time:t.time,value:null==l||null==u||l<=0||u<=0?null:(Math.pow(l/u,a/i)-1)*100}})}}(t,n,r)}}),p({name:"cummax",label:"Cumulative Max",description:"Maximum value reached so far.",category:"Cumulative",args:[{name:"series",type:"series"}],returnType:"series",example:"cummax(m1)",evaluate:e=>{let[t]=e;return c(t,(e,t)=>Math.max(e,t))}}),p({name:"cummin",label:"Cumulative Min",description:"Minimum value reached so far.",category:"Cumulative",args:[{name:"series",type:"series"}],returnType:"series",example:"cummin(m1)",evaluate:e=>{let[t]=e;return c(t,(e,t)=>Math.min(e,t))}}),p({name:"cummean",label:"Cumulative Mean",description:"Average of all values so far.",category:"Cumulative",args:[{name:"series",type:"series"}],returnType:"series",example:"cummean(m1)",evaluate:e=>{let[t]=e;if(!(0,o.AZ)(t))return t;let n=0,r=0;return{kind:"series",points:t.points.map(e=>{let t=(0,o.yx)(e.value);return null!=t&&(n+=t,r+=1),{time:e.time,value:0===r?null:n/r}})}}}),p({name:"cummedian",label:"Cumulative Median",description:"Median of all values so far.",category:"Cumulative",args:[{name:"series",type:"series"}],returnType:"series",example:"cummedian(m1)",evaluate:e=>{let[t]=e;return function(e){if(!(0,o.AZ)(e))return e;let t=new m((e,t)=>t-e),n=new m((e,t)=>e-t),r=()=>0===t.size&&0===n.size?null:t.size===n.size?(t.peek()+n.peek())/2:t.size>n.size?t.peek():n.peek(),l=e=>{0===t.size||e<=t.peek()?t.push(e):n.push(e),t.size>n.size+1?n.push(t.pop()):n.size>t.size&&t.push(n.pop())};return{kind:"series",points:e.points.map(e=>{let t=(0,o.yx)(e.value);return null!=t&&l(t),{time:e.time,value:r()}})}}(t)}}),p({name:"cumstd",label:"Cumulative Std Dev",description:"Standard deviation of all values so far.",category:"Cumulative",args:[{name:"series",type:"series"}],returnType:"series",example:"cumstd(m1)",evaluate:e=>{let[t]=e;if(!(0,o.AZ)(t))return t;let n=[];return{kind:"series",points:t.points.map(e=>{let t=(0,o.yx)(e.value);return null!=t&&n.push(t),{time:e.time,value:(0,o.qo)(n)}})}}}),p({name:"cumsum",label:"Cumulative Sum",description:"Sum of all values so far.",category:"Cumulative",args:[{name:"series",type:"series"}],returnType:"series",example:"cumsum(m1)",evaluate:e=>{let[t]=e;return c(t,(e,t)=>e+t)}}),p({name:"offset",label:"Offset",description:"Adds a constant value.",category:"Transform",args:[{name:"series",type:"series"},{name:"amount",type:"number"}],returnType:"series",example:"offset(m1, 10)",evaluate:e=>{let[t,n]=e;return(0,o.KH)(t,e=>{var t;return null==e?null:e+(null!==(t=(0,o.He)(n))&&void 0!==t?t:0)})}}
1),p({name:"percent_change",label:"Percent Change",description:"Percent change over a period.",category:"Transform",args:[{name:"series",type:"series"},{name:"period",type:"number",optional:!0}],minArgs:1,returnType:"series",example:"percent_change(m1, 30)",evaluate:e=>{var t;let[n,r]=e;if(!(0,o.AZ)(n))return 0;let l=Math.max(1,Math.floor(null!==(t=(0,o.He)(r))&&void 0!==t?t:1));return{kind:"series",points:n.points.map((e,t)=>{var r;let i=(0,o.yx)(e.value),a=(0,o.yx)(null===(r=n.points[t-l])||void 0===r?void 0:r.value);return{time:e.time,value:null==i||null==a||0===a?null:(i-a)/a*100}})}}}),p({name:"diff",label:"Diff",description:"Absolute difference over a period.",category:"Transform",args:[{name:"series",type:"series"},{name:"period",type:"number",optional:!0}],minArgs:1,returnType:"series",example:"diff(m1, 1)",evaluate:e=>{var t;let[n,r]=e;if(!(0,o.AZ)(n))return 0;let l=Math.max(1,Math.floor(null!==(t=(0,o.He)(r))&&void 0!==t?t:1));return{kind:"series",points:n.points.map((e,t)=>{var r;let i=(0,o.yx)(e.value),a=(0,o.yx)(null===(r=n.points[t-l])||void 0===r?void 0:r.value);return{time:e.time,value:null==i||null==a?null:i-a}})}}}),p({name:"log",label:"Log",description:"Natural logarithm.",category:"Math",args:[{name:"value",type:"any"}],returnType:"series",example:"log(m1)",evaluate:e=>{let[t]=e;return(0,o.KH)(t,e=>null!=e&&e>0?Math.log(e):null)}}),p({name:"pow",label:"Power",description:"Raises a value to a power.",category:"Math",args:[{name:"value",type:"any"},{name:"power",type:"number"}],returnType:"series",example:"pow(m1, 2)",evaluate:e=>{let[t,n]=e;return(0,o.KH)(t,e=>{var t;return null==e?null:Math.pow(e,null!==(t=(0,o.He)(n))&&void 0!==t?t:1)})}}),p({name:"abs",label:"Absolute",description:"Absolute value.",category:"Math",args:[{name:"value",type:"any"}],returnType:"series",example:"abs(m1)",evaluate:e=>{let[t]=e;return(0,o.KH)(t,e=>null==e?null:Math.abs(e))}}),p({name:"range",label:"Range",description:"Rolling high minus rolling low.",category:"Statistics",args:[{name:"series",type:"series"},{name:"period",type:"number"}],returnType:"series",example:"range(m1, 30)",evaluate:e=>{let[t,n]=e;return s(t,n,e=>(0,i.u)(e)-(0,i.G)(e))}}),p({name:"rsi",label:"RSI",description:"Relative strength index.",category:"Technical Indicators",args:[{name:"series",type:"series"},{name:"period",type:"number"}],returnType:"series",example:"rsi(m1, 14)",evaluate:e=>{var t;let[n,r]=e;if(!(0,o.AZ)(n))return 0;let l=Math.max(1,Math.floor(null!==(t=(0,o.He)(r))&&void 0!==t?t:14));return{kind:"series",points:n.points.map((e,t)=>{if(t<l)return{time:e.time,value:null};let r=0,i=0;for(let e=t-l+1;e<=t;e+=1){var a,u;let t=(0,o.yx)(null===(a=n.points[e])||void 0===a?void 0:a.value),l=(0,o.yx)(null===(u=n.points[e-1])||void 0===u?void 0:u.value);if(null==t||null==l)continue;let s=t-l;s>=0?r+=s:i+=Math.abs(s)}if(0===i)return{time:e.time,value:100};let s=r/i;return{time:e.time,value:100-100/(1+s)}})}}}),p({name:"max",label:"Max",description:"Element-wise or aggregate max.",category:"Statistics",args:[{name:"a",type:"any"},{name:"b",type:"any",optional:!0}],minArgs:1,returnType:"series",example:"max(m1, m2)",evaluate:e=>{let[t,n]=e;return null==n?u(t,e=>(0,i.u)(e)):(0,o.Jl)(t,n,Math.max)}}),p({name:"min",label:"Min",description:"Element-wise or aggregate min.",category:"Statistics",args:[{name:"a",type:"any"},{name:"b",type:"any",optional:!0}],minArgs:1,returnType:"series",example:"min(m1, m2)",evaluate:e=>{let[t,n]=e;return null==n?u(t,e=>(0,i.G)(e)):(0,o.Jl)(t,n,Math.min)}}),p({name:"cross_over",label:"Cross Over",description:"Returns 1 when the first series crosses above the second series, otherwise 0.",category:"Technical Indicators",args:[{name:"a",type:"series"},{name:"b",type:"series"}],returnType:"series",example:"cross_over(sma(m1, 50), sma(m1, 200))",evaluate:e=>{let[t,n]=e;return b(t,n,"over")}}),p({name:"cross_under",label:"Cross Under",description:"Returns 1 when the first series crosses below the second series, otherwise 0.",category:"Technical Indicators",args:[{name:"a",type:"series"},{name:"b",type:"series"}],returnType:"series",example:"cross_under(sma(m1, 50), sma(m1, 200))",evaluate:e=>{let[t,n]=e;return b(t,n,"under")}}),p({name:"shift",label:"Shift",description:"Moves a series by N periods.",category:"Transform",args:[{name:"series",type:"series"},{name:"period",type:"number"}],returnType:"series",example:"shift(m1, 7)",evaluate:e=>{var t;let[n,r]=e;if(!(0,o.AZ)(n))return n;let l=Math.floor(null!==(t=(0,o.He)(r))&&void 0!==t?t:1);return{kind:"series",points:n.points.map((e,t)=>{var r;return{time:e.time,value:(0,o.yx)(null===(r=n.points[t-l])||void 0===r?void 0:r.value)}})}}}),p({name:"corr",label:"Correlation",description:"Rolling correlation.",category:"Correlation",args:[{name:"a",type:"series"},{name:"b",type:"series"},{name:"period",type:"number"}],returnType:"series",example:"corr(m1, m2, 90)",evaluate:e=>{var t;let[n,r,l]=e;return y(n,r,null!==(t=(0,o.He)(l))&&void 0!==t?t:30)}}
1),p({name:"cumcorr",label:"Cumulative Correlation",description:"Correlation from start to each point.",category:"Correlation",args:[{name:"a",type:"series"},{name:"b",type:"series"}],returnType:"series",example:"cumcorr(m1, m2)",evaluate:e=>{let[t,n]=e;return y(t,n,Number.MAX_SAFE_INTEGER)}}),p({name:"rolling_beta",label:"Rolling Beta",description:"Rolling beta of one series against another using period returns.",category:"Correlation",args:[{name:"asset",type:"series"},{name:"benchmark",type:"series"},{name:"period",type:"number"}],returnType:"series",example:"rolling_beta(m1, m2, 90)",evaluate:e=>{var t;let[n,r,l]=e;return function(e,t,n){let r=w(g(e,t));if(0===r.length)return 0;let l=Math.max(1,Math.floor(n));return{kind:"series",points:r.map((e,t)=>{var n,i;let a=r.slice(Math.max(0,t-l+1),t+1).filter(e=>null!=e.a&&null!=e.b);if(a.length<2)return{time:e.time,value:null};let u=null!==(n=(0,o.J6)(a.map(e=>e.a)))&&void 0!==n?n:0,s=null!==(i=(0,o.J6)(a.map(e=>e.b)))&&void 0!==i?i:0,c=0,m=0;return a.forEach(e=>{c+=(e.a-u)*(e.b-s),m+=Math.pow(e.b-s,2)}),{time:e.time,value:0===m?null:c/m}})}}(n,r,null!==(t=(0,o.He)(l))&&void 0!==t?t:90)}}),p({name:"rolling_alpha",label:"Rolling Alpha",description:"Rolling annualized alpha of an asset against a benchmark using period returns.",category:"Correlation",args:[{name:"asset",type:"series"},{name:"benchmark",type:"series"},{name:"period",type:"number"}],returnType:"series",example:"rolling_alpha(m1, m2, 90)",examples:["rolling_alpha(m1, m2, 90)","rolling_alpha(eth_price, btc_price, 90)"],notes:"Use the asset as the first argument and the benchmark as the second. Output is annualized alpha in percent.",evaluate:e=>{var t;let[n,r,l]=e;return function(e,t,n){let r=w(g(e,t));if(0===r.length)return 0;let l=Math.max(1,Math.floor(n));return{kind:"series",points:r.map((e,t)=>{var n,i;let a=r.slice(Math.max(0,t-l+1),t+1).filter(e=>null!=e.a&&null!=e.b);if(a.length<2)return{time:e.time,value:null};let u=null!==(n=(0,o.J6)(a.map(e=>e.a)))&&void 0!==n?n:0,s=null!==(i=(0,o.J6)(a.map(e=>e.b)))&&void 0!==i?i:0,c=0,m=0;a.forEach(e=>{c+=(e.a-u)*(e.b-s),m+=Math.pow(e.b-s,2)});let d=0===m?0:c/m;return{time:e.time,value:(u-d*s)*N*100}})}}(n,r,null!==(t=(0,o.He)(l))&&void 0!==t?t:90)}}),p({name:"lagged_corr",label:"Lagged Correlation",description:"Rolling correlation where the first series is shifted by a lag before comparing with the second series.",category:"Correlation",args:[{name:"a",type:"series"},{name:"b",type:"series"},{name:"period",type:"number"},{name:"lag",type:"number"}],returnType:"series",example:"lagged_corr(m1, m2, 180, 60)",examples:["lagged_corr(m1, m2, 180, 60)","lagged_corr(global_m2, btc_price, 180, 60)"],notes:"Positive lag shifts the first series backward, useful for testing whether it leads the second series.",evaluate:e=>{var t,n;let[r,l,i,a]=e;return function(e,t,n,r){let l=g(e,t);if(0===l.length)return 0;let i=Math.max(1,Math.floor(n)),a=Math.trunc(r),u=l.map((e,t)=>{var n,r;return{time:e.time,a:null!==(r=null===(n=l[t-a])||void 0===n?void 0:n.a)&&void 0!==r?r:null,b:e.b}});return{kind:"series",points:u.map((e,t)=>{var n,r;let l=u.slice(Math.max(0,t-i+1),t+1).filter(e=>null!=e.a&&null!=e.b);if(l.length<2)return{time:e.time,value:null};let a=l.map(e=>e.a),s=l.map(e=>e.b),c=null!==(n=(0,o.J6)(a))&&void 0!==n?n:0,m=null!==(r=(0,o.J6)(s))&&void 0!==r?r:0,d=0,p=0,f=0;l.forEach(e=>{let t=e.a-c,n=e.b-m;d+=t*n,p+=t*t,f+=n*n});let v=Math.sqrt(p*f);return{time:e.time,value:0===v?null:d/v}})}}(r,l,null!==(t=(0,o.He)(i))&&void 0!==t?t:180,null!==(n=(0,o.He)(a))&&void 0!==n?n:0)}}),p({name:"relative_strength",label:"Relative Strength",description:"Percent outperformance of the first series versus the second over a lookback period.",category:"Correlation",args:[{name:"a",type:"series"},{name:"b",type:"series"},{name:"period",type:"number"}],returnType:"series",example:"relative_strength(m1, m2, 90)",evaluate:e=>{var t;let[n,r,l]=e;return function(e,t,n){let r=g(e,t);if(0===r.length)return 0;let l=Math.max(1,Math.floor(n));return{kind:"series",points:r.map((e,t)=>{let n=r[t-l];if(null==e.a||null==e.b||(null==n?void 0:n.a)==null||(null==n?void 0:n.b)==null||0===n.a||0===n.b)return{time:e.time,value:null};let i=e.a/n.a,a=e.b/n.b;return{time:e.time,value:0===a?null:(i/a-1)*100}
1})}}(n,r,null!==(t=(0,o.He)(l))&&void 0!==t?t:90)}}),p({name:"count_if",label:"Count If",description:"Counts how many times a condition was true in a rolling window.",category:"Conditional",args:[{name:"condition",type:"any"},{name:"period",type:"number"}],returnType:"series",example:"count_if(rsi(m1, 14) < 30, 90)",examples:["count_if(rsi(m1, 14) < 30, 90)","count_if(m1 < m2, 365)","count_if(m1 > sma(m1, 200), 90)"],evaluate:e=>{let[t,n]=e;return function(e,t){var n;if(!(0,o.AZ)(e))return(0,o.He)(e)?1:0;let r=Math.max(1,Math.floor(null!==(n=(0,o.He)(t))&&void 0!==n?n:1)),l=e.points.map(e=>(0,o.yx)(e.value));return{kind:"series",points:e.points.map((e,t)=>{let n=l.slice(Math.max(0,t-r+1),t+1);return n.length<r||null==l[t]?{time:e.time,value:null}:{time:e.time,value:n.reduce((e,t)=>e+(null!=t&&0!==t?1:0),0)}})}}(t,n)}}),p({name:"bars_since",label:"Bars Since",description:"Counts how many bars have passed since a condition last became true.",category:"Conditional",args:[{name:"condition",type:"any"}],returnType:"series",example:"bars_since(cross_under(m1, sma(m1, 200)))",examples:["bars_since(cross_under(m1, sma(m1, 200)))","bars_since(m1 < m2)","bars_since(rsi(m1, 14) < 30)"],evaluate:e=>{let[t]=e;return function(e){if(!(0,o.AZ)(e))return(0,o.He)(e)?0:1;let t=null;return{kind:"series",points:e.points.map((e,n)=>{let r=(0,o.yx)(e.value);return null!=r&&0!==r&&(t=n),{time:e.time,value:null==t?null:n-t}})}}(t)}}),p({name:"streak",label:"Streak",description:"Counts the current consecutive run of true values for a condition. The condition can compare one series with another, such as m1 < m2.",category:"Conditional",args:[{name:"condition",type:"any"}],returnType:"series",example:"streak(m1 < m2)",examples:["streak(m1 < m2)","streak(m1 < sma(m1, 200))","streak(rsi(m1, 14) < 40)"],evaluate:e=>{let[t]=e;return function(e){if(!(0,o.AZ)(e))return(0,o.He)(e)?1:0;let t=0;return{kind:"series",points:e.points.map(e=>{let n=(0,o.yx)(e.value);return t=null!=n&&0!==n?t+1:0,{time:e.time,value:null==n?null:t}})}}(t)}}),p({name:"if",label:"If",description:"Chooses one value when condition is true and another when false.",category:"Conditional",args:[{name:"condition",type:"any"},{name:"trueValue",type:"any"},{name:"falseValue",type:"any"}],returnType:"series",example:"if(m1 > 0, m1, 0)",evaluate:e=>{let[t,n,r]=e;if(!(0,o.AZ)(t))return(0,o.He)(t)?n:r;let l=(0,o.AZ)(n)?new Map(n.points.map(e=>[e.time,e.value])):null,i=(0,o.AZ)(r)?new Map(r.points.map(e=>[e.time,e.value])):null,a=l?null:(0,o.He)(n),u=i?null:(0,o.He)(r);return{kind:"series",points:t.points.map(e=>{var t,n;let r=(0,o.yx)(e.value)?null!==(t=null==l?void 0:l.get(e.time))&&void 0!==t?t:a:null!==(n=null==i?void 0:i.get(e.time))&&void 0!==n?n:u;return{time:e.time,value:(0,o.yx)(r)}})}}}),p({name:"value_at",label:"Value At",description:"Value at an index.",category:"Transform",args:[{name:"series",type:"series"},{name:"index",type:"number"}],returnType:"number",example:"value_at(m1, 0)",evaluate:e=>{var t,n,r;let[l,i]=e;return(0,o.AZ)(l)&&null!==(r=(0,o.yx)(null===(t=l.points[Math.floor(null!==(n=(0,o.He)(i))&&void 0!==n?n:0)])||void 0===t?void 0:t.value))&&void 0!==r?r:0}}),p({name:"upper",label:"Upper",description:"Mean plus rolling standard deviation multiplier.",category:"Statistics",args:[{name:"series",type:"series"},{name:"period",type:"number"},{name:"multiplier",type:"number",optional:!0}],minArgs:2,returnType:"series",example:"upper(m1, 30, 2)",evaluate:e=>{var t;let[n,r,l]=e;return S(n,r,null!==(t=(0,o.He)(l))&&void 0!==t?t:2,"upper")}}),p({name:"lower",label:"Lower",description:"Mean minus rolling standard deviation multiplier.",category:"Statistics",args:[{name:"series",type:"series"},{name:"period",type:"number"},{name:"multiplier",type:"number",optional:!0}],minArgs:2,returnType:"series",example:"lower(m1, 30, 2)",evaluate:e=>{var t;let[n,r,l]=e;return S(n,r,null!==(t=(0,o.He)(l))&&void 0!==t?t:2,"lower")}}),p({name:"subset",label:"Subset",description:"Keeps values between start and end indexes.",category:"Transform",args:[{name:"series",type:"series"},{name:"start",type:"number"},{name:"end",type:"number"}],returnType:"series",example:"subset(m1, 10, 100)",evaluate:e=>{var t,n;let[r,l,i]=e;if(!(0,o.AZ)(r))return r;let a=Math.floor(null!==(t=(0,o.He)(l))&&void 0!==t?t:0),u=Math.floor(null!==(n=(0,o.He)(i))&&void 0!==n?n:r.points.length-1);return{kind:"series",points:r.points.map((e,t)=>({time:e.time,value:t>=a&&t<=u?e.value:null}))}}}),p({name:"round",label:"Round",description:"Rounds to decimal places.",category:"Math",args:[{name:"value",type:"any"},{name:"decimals",type:"number",optional:!0}],minArgs:1,returnType:"series",example:"round(m1, 2)",evaluate:e=>{var t;let[n,r]=e,l=Math.pow(10,Math.max(0,Math.floor(null!==(t=(0,o.He)(r))&&void 0!==t?t:0)));return(0,o.KH)(n,e=>null==e?null:Math.round(e*l)/l)}}),p({name:"drawdown",label:"Drawdown",description:"Percent drawdown from cumulative high.",category:"Risk Metrics",args:[{name:"series",type:"series"}],returnType:"series",example:"drawdown(m1)",evaluate:e=>{let[t]=e;if(!(0,o.AZ)(t))return 0;let n=null;return{kind:"series",points:t.points.map(e=>{let t=(0,o.yx)(e.value);if(null==t)return{time:e.time,value:null};let r=Math.abs(n=null==n?t:Math.max(n,t));return{time:e.time,value:0===r?null:(t-n)/r*100}})}}}),p({name:"rolling_drawdown",label:"Rolling Drawdown",description:"Current percent drawdown from the rolling high over a trailing window.",category:"Risk Metrics",args:[{name:"series",type:"series"},{name:"period",type:"number"}],returnType:"series",example:"rolling_drawdown(m1, 365)",examples:["rolling_drawdown(m1, 365)","rolling_drawdown(price, 180)"],notes:"Compares each value with the rolling maximum over the trailing window. The function starts plotting after the full window is available.",evaluate:e=>{let[t,n]=e;return function(e,t){var n;if(!(0,o.AZ)(e))return 0;let r=Math.max(1,Math.floor(null!==(n=(0,o.He)(t))&&void 0!==n?n:1)),l=e.points.map(e=>(0,o.yx)(e.value));return{kind:"series",points:e.points.map((e,t)=>{let n=l[t];if(null==n)return{time:e.time,value:null};let a=l.slice(Math.max(0,t-r+1),t+1).filter(e=>null!=e);if(a.length<r)return{time:e.time,value:null};let o=(0,i.u)(a),u=Math.abs(o);return{time:e.time,value:0===u?null:(n-o)/u*100}})}}(t,n)}}),p({name:"drawup",label:"Drawup",description:"Percent advance from the cumulative low.",category:"Risk Metrics",args:[{name:"series",type:"series"}],returnType:"series",example:"drawup(m1)",examples:["drawup(m1)","drawup(price)"],notes:"Returns percent advance from the cumulative low. If the cumulative low is zero, the formula uses the lowest non-zero value seen so far so the series can keep plotting over time.",evaluate:e=>{let[t]=e;return function(e){if(!(0,o.AZ)(e))return 0;let t=null,n=null;return{kind:"series",points:e.points.map(e=>{let r=(0,o.yx)(e.value);if(null==r)return{time:e.time,value:null};t=null==t?r:Math.min(t,r),0!==r&&(n=null==n?r:Math.min(n,r));let l=0===t?n:t;if(null==l)return{time:e.time,value:0};let i=Math.abs(l);return 0===i?{time:e.time,value:0}:{time:e.time,value:Math.max(0,(r-l)/i*100)}})}}(t)}}),p({name:"max_drawdown",label:"Max Drawdown",description:"Worst peak-to-trough drawdown inside the trailing rolling window ending at each point.",category:"Risk Metrics",args:[{name:"series",type:"series"},{name:"period",type:"number"}],returnType:"series",example:"max_drawdown(m1, 365)",examples:["max_drawdown(m1, 365)","max_drawdown(m2, 365)","abs(max_drawdown(m1, 365))"],notes:"The period is a trailing number of observations; for daily data, max_drawdown(m1, 365) returns the worst drawdown foun
1d inside the last 365 days. The result follows drawdown convention and is negative percent. Use abs(max_drawdown(...)) to plot positive magnitude.",evaluate:e=>{let[t,n]=e;return s(t,n,x)}}),p({name:"sortino_ratio",label:"Sortino Ratio",description:"Rolling Sortino ratio using downside deviation instead of total volatility.",category:"Risk Metrics",args:[{name:"series",type:"series"},{name:"period",type:"number",optional:!0},{name:"periodsPerYear",type:"number",optional:!0},{name:"riskFreeRate",type:"number",optional:!0}],minArgs:1,returnType:"series",example:"sortino_ratio(m1, 365)",examples:["sortino_ratio(m1, 365)","sortino_ratio(m1, 180, 365)","sortino_ratio(strategy_equity, 365)"],evaluate:e=>{let[t,n,r,l]=e;return function(e,t,n,r){let l=_(n),i=A(r,l);return F(e,t,e=>{let t=(0,o.J6)(e);if(null==t)return null;let n=e.map(e=>Math.min(0,e-i)).map(e=>e*e),r=(0,o.J6)(n);return null==r||0===r?null:(t-i)/Math.sqrt(r)*Math.sqrt(l)})}(t,n,r,l)}}),p({name:"calmar_ratio",label:"Calmar Ratio",description:"Rolling annualized return divided by maximum drawdown over the same window.",category:"Risk Metrics",args:[{name:"series",type:"series"},{name:"period",type:"number",optional:!0},{name:"periodsPerYear",type:"number",optional:!0}],minArgs:1,returnType:"series",example:"calmar_ratio(m1, 365)",examples:["calmar_ratio(m1, 365)","calmar_ratio(strategy_equity, 365)","calmar_ratio(price, 730)"],evaluate:e=>{let[t,n,r]=e;return function(e,t,n){if(!(0,o.AZ)(e))return 0;let r=k(t),l=_(n),i=e.points.map(e=>(0,o.yx)(e.value));return{kind:"series",points:e.points.map((e,t)=>{if(null==i[t])return{time:e.time,value:null};let n=i.slice(Math.max(0,t-r+1),t+1).filter(e=>null!=e);if(n.length<r||n[0]<=0||n[n.length-1]<=0)return{time:e.time,value:null};let a=Math.pow(n[n.length-1]/n[0],l/Math.max(1,n.length-1))-1,o=x(n),u=null==o?0:Math.abs(o/100);return{time:e.time,value:0===u?null:a/u}})}}(t,n,r)}}),p({name:"mean_return",label:"Mean Return",description:"Rolling average period return in percent.",category:"Risk Metrics",args:[{name:"series",type:"series"},{name:"period",type:"number",optional:!0}],minArgs:1,returnType:"series",example:"mean_return(m1, 30)",evaluate:e=>{let[t,n]=e;return F(t,n,e=>{let t=(0,o.J6)(e);return null==t?null:100*t})}}),p({name:"realized_vol",label:"Realized Volatility",description:"Rolling annualized realized volatility in percent.",category:"Risk Metrics",args:[{name:"series",type:"series"},{name:"period",type:"number",optional:!0},{name:"periodsPerYear",type:"number",optional:!0}],minArgs:1,returnType:"series",example:"realized_vol(m1, 30, 365)",evaluate:e=>{let[t,n,r]=e;return function(e,t,n){let r=_(n);return F(e,t,e=>{let t=(0,o.qo)(e);return null==t?null:t*Math.sqrt(r)*100})}(t,n,r)}}),p({name:"sharpe_ratio_geometric",label:"Sharpe Ratio Geometric",description:"Rolling geometric Sharpe ratio approximation.",category:"Risk Metrics",args:[{name:"series",type:"series"},{name:"period",type:"number",optional:!0},{name:"periodsPerYear",type:"number",optional:!0},{name:"riskFreeRate",type:"number",optional:!0}],minArgs:1,returnType:"series",example:"sharpe_ratio_geometric(m1, 365, 365)",evaluate:e=>{let[t,n,r,l]=e;return I(t,n,r,l,"geometric")}}),p({name:"sharpe_ratio_arithmetic",label:"Sharpe Ratio Arithmetic",description:"Rolling arithmetic Sharpe ratio approximation.",category:"Risk Metrics",args:[{name:"series",type:"series"},{name:"period",type:"number",optional:!0},{name:"periodsPerYear",type:"number",optional:!0},{name:"riskFreeRate",type:"number",optional:!0}],minArgs:1,returnType:"series",example:"sharpe_ratio_arithmetic(m1, 365, 365)",evaluate:e=>{let[t,n,r,l]=e;return I(t,n,r,l,"arithmetic")}}),p({name:"mean_return_total",label:"Mean Return Total",description:"Full-sample average period return in percent.",category:"Risk Metrics",args:[{name:"series",type:"series"}],returnType:"number",example:"mean_return_total(m1)",evaluate:e=>{let[t]=e;return function(e){let t=(0,o.J6)(C(e));return null==t?0:100*t}(t)}}),p({name:"realized_vol_total",label:"Realized Volatility Total",description:"Full-sample annualized realized volatility in percent.",category:"Risk Metrics",args:[{name:"series",type:"series"},{name:"periodsPerYear",type:"number",optional:!0}],minArgs:1,returnType:"number",example:"realized_vol_total(m1, 365)",evaluate:e=>{let[t,n]=e;return function(e,t){let n=(0,o.qo)(C(e));return null==n?0:n*Math.sqrt(_(t))*100}
1(t,n)}}),p({name:"sharpe_ratio_geometric_total",label:"Sharpe Ratio Geometric Total",description:"Full-sample geometric Sharpe ratio approximation.",category:"Risk Metrics",args:[{name:"series",type:"series"},{name:"periodsPerYear",type:"number",optional:!0},{name:"riskFreeRate",type:"number",optional:!0}],minArgs:1,returnType:"number",example:"sharpe_ratio_geometric_total(m1, 365)",evaluate:e=>{let[t,n,r]=e;return D(t,n,r,"geometric")}}),p({name:"sharpe_ratio_arithmetic_total",label:"Sharpe Ratio Arithmetic Total",description:"Full-sample arithmetic Sharpe ratio approximation.",category:"Risk Metrics",args:[{name:"series",type:"series"},{name:"periodsPerYear",type:"number",optional:!0},{name:"riskFreeRate",type:"number",optional:!0}],minArgs:1,returnType:"number",example:"sharpe_ratio_arithmetic_total(m1, 365)",evaluate:e=>{let[t,n,r]=e;return D(t,n,r,"arithmetic")}})];function y(e,t,n){if(!(0,o.AZ)(e)||!(0,o.AZ)(t))return 0;let r=new Map(t.points.map(e=>[e.time,e.value])),l=Math.max(1,Math.floor(n));return{kind:"series",points:e.points.map((t,i)=>{var a,u;let s=n===Number.MAX_SAFE_INTEGER?0:Math.max(0,i-l+1),c=[],m=[];if(e.points.slice(s,i+1).forEach(e=>{let t=(0,o.yx)(e.value),n=(0,o.yx)(r.get(e.time));null!=t&&null!=n&&(c.push(t),m.push(n))}),c.length<2)return{time:t.time,value:null};let d=null!==(a=(0,o.J6)(c))&&void 0!==a?a:0,p=null!==(u=(0,o.J6)(m))&&void 0!==u?u:0,f=0,v=0,h=0;for(let e=0;e<c.length;e+=1)f+=(c[e]-d)*(m[e]-p),v+=Math.pow(c[e]-d,2),h+=Math.pow(m[e]-p,2);let y=Math.sqrt(v*h);return{time:t.time,value:0===y?null:f/y}})}}function g(e,t){if(!(0,o.AZ)(e)||!(0,o.AZ)(t))return[];if((0,o.Or)(e.points,t.points)){let n=e.points,r=t.points,l=Array(n.length),i=null,a=null;for(let e=0;e<n.length;e+=1){let t=(0,o.yx)(n[e].value);null!=t&&(i=t);let u=(0,o.yx)(r[e].value);null!=u&&(a=u),l[e]={time:n[e].time,a:i,b:a}}return l}let n=(0,a.cY)([e.points,t.points],{preferDenseDaily:!1}),r=n.length>0?n:e.points.length>=t.points.length?e.points:t.points,l=(0,a.N_)(e.points,r),i=(0,a.N_)(t.points,r);return r.map((e,t)=>{var n,r;return{time:e.time,a:(0,o.yx)(null===(n=l[t])||void 0===n?void 0:n.value),b:(0,o.yx)(null===(r=i[t])||void 0===r?void 0:r.value)}})}function b(e,t,n){let r=g(e,t);return 0===r.length?0:{kind:"series",points:r.map((e,t)=>{if(0===t)return{time:e.time,value:0};let l=r[t-1];if(null==e.a||null==e.b||null==l.a||null==l.b)return{time:e.time,value:0};let i="over"===n?l.a<l.b&&e.a>=e.b:l.a>l.b&&e.a<=e.b;return{time:e.time,value:i?1:0}})}}function w(e){return e.map((t,n)=>{let r=e[n-1],l=(null==r?void 0:r.a)==null||0===r.a||null==t.a?null:t.a/r.a-1,i=(null==r?void 0:r.b)==null||0===r.b||null==t.b?null:t.b/r.b-1;return{time:t.time,a:l,b:i}})}function x(e){if(e.length<2)return null;let t=e[0],n=0;return e.forEach(e=>{let r=Math.abs(t=Math.max(t,e));0!==r&&(n=Math.min(n,(e-t)/r))}),100*n}function S(e,t,n,r){return s(e,t,e=>{let t=(0,o.J6)(e),l=(0,o.qo)(e);return null==t||null==l?null:"upper"===r?t+l*n:t-l*n})}function M(e){return(0,o.AZ)(e)?{kind:"series",points:e.points.map((t,n)=>{var r;let l=(0,o.yx)(t.value),i=(0,o.yx)(null===(r=e.points[n-1])||void 0===r?void 0:r.value);return{time:t.time,value:null==l||null==i||0===i?null:(l-i)/i}})}:0}let N=365;function k(e){var t;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:30;return Math.max(1,Math.floor(null==e?n:null!==(t=(0,o.He)(e))&&void 0!==t?t:n))}function _(e){var t;return Math.max(1,null==e?N:null!==(t=(0,o.He)(e))&&void 0!==t?t:N)}function A(e,t){var n;return(null==e?0:null!==(n=(0,o.He)(e))&&void 0!==n?n:0)/100/t}function C(e){return(0,o.IQ)(M(e)).map(e=>(0,o.yx)(e.value)).filter(e=>null!=e)}function T(e,t,n,r){if(e.length<2)return null;let l=(0,o.qo)(e);if(null==l||0===l)return null;let i="geometric"===r?function(e){if(0===e.length)return null;let t=1;for(let n of e){let e=1+n;if(e<=0)return null;t*=e}return Math.pow(t,1/e.length)-1}(e):(0,o.J6)(e);return null==i?null:(i-A(n,t))/l*Math.sqrt(t)}function F(e,t,n){let r=M(e);if(!(0,o.AZ)(r))return 0;let l=k(t);return{kind:"series",points:r.points.map((e,t)=>{let i=r.points.slice(Math.max(0,t-l+1),t+1).map(e=>(0,o.yx)(e.value)).filter(e=>null!=e);return{time:e.time,value:i.length>=l?n(i):null}})}}function I(e,t,n,r,l){let i=_(n);return F(e,t,e=>T(e,i,r,l))}function D(e,t,n,r){var l;return null!==(l=T(C(e),_(t),n,r))&&void 0!==l?l:0}let E=h.reduce((e,t)=>
1(e[t.name]=t,e),{});h.map(e=>e.name)},58512:function(e,t,n){n.d(t,{Oz:function(){return h},TT:function(){return _},_I:function(){return d},_L:function(){return A},jm:function(){return S},nC:function(){return M},pf:function(){return k},pq:function(){return N},rH:function(){return x},sf:function(){return I}});var r=n(13347);let l=["open interest","funding rate","long short","long/short","liquidation","perpetual","futures","whale vs retail","top trader","basis","premium index"];function i(e){return e.filter(e=>null!=e&&""!==String(e).trim()).map(e=>String(e)).join(" ")}function a(e,t,n){if(!e||0===n.length)return!1;if(e.includes(t))return!0;let r=e.split(" ").filter(Boolean);return n.every(e=>r.some(t=>t===e||t.startsWith(e)))}function o(e){return(0,r.sg)(i([x(e),e.metricName,e.chartName,e.metricCode,e.metricScale,e.categoryName,e.subcategoryName,e.url,e.collection]))}function u(e){let t=new Set;return(e||[]).forEach(e=>{let n=(0,r.sg)(e.name||"");n&&t.add(n)}),{set:t,list:Array.from(t)}}function s(e,t){return 0!==t.set.size&&[x(e),e.metricName,e.chartName,"".concat(e.subcategoryName||""," ").concat(x(e))].map(e=>(0,r.sg)(e||"")).filter(Boolean).some(e=>t.set.has(e)||t.list.some(t=>t.length>=5&&(e.includes(t)||e.length>=5&&t.includes(e))))}function c(e){return e.startsWith("__menu_option_")}function m(e){let t=Number(e.menuOptionId);if(Number.isFinite(t)&&t>0)return"menu:".concat(t);let n=String(e.menuOptionName||"").trim();return n?["menu",e.menuCategoryName||e.categoryName,e.menuSubcategoryName||e.subcategoryName,n].filter(Boolean).join("::"):""}function d(e){let t=m(e),n=function(e){let t=String(e.metricCode||"").trim();if(t&&!c(t))return"code:".concat(t);let n=String(e.url||"").trim();return n?"url:".concat(n):""}(e);return t?n?"".concat(t,"::").concat(n):t:[e.metricCode,e.chartName,e.metricName,e.categoryName,e.subcategoryName,e.collection,e.url].filter(
1Boolean).join("::")}let p={btc:"BTC",eth:"ETH",lth:"LTH",sth:"STH",mvrv:"MVRV",nupl:"NUPL",pct:"Percent",pnl:"PnL",sma:"SMA",sopr:"SOPR",usd:"USD",utxo:"UTXO"},f=new Set(["a","an","and","as","at","by","for","from","in","of","on","or","the","to","vs","with"]);function v(e,t){let n=e.toLowerCase();return p[n]||(t>0&&f.has(n)?n:"".concat(n.charAt(0).toUpperCase()).concat(n.slice(1)))}function h(e){let t=String(e||"").trim();if(!t)return"";let n=t.replace(/[?#].*$/,"");return(n.split("/").filter(Boolean).pop()||n).replace(/([a-z])([A-Z])/g,"$1 $2").replace(/[_\-.]+/g," ").split(/\s+/).map(e=>e.trim()).filter(Boolean).map(v).join(" ")}function y(e){return h(e.metricName)||h(e.metricCode)||""}function g(e,t){let n=(0,r.sg)(e),l=(0,r.sg)(t);if(!n||!l||n===l||!l.includes(n))return!1;let i=new Set(n.split(" ").filter(Boolean));return l.split(" ").filter(Boolean).some(e=>!i.has(e))}function b(e){return null!=e&&""!==e}function w(e){if(!b(e))return 1;if("string"==typeof e){let t=(0,r.sg)(e);if(t.includes("free"))return 1;if(t.includes("pro")||t.includes("premium"))return 2}let t=Number(e);return!Number.isFinite(t)||t<0?1:t<=1?1:t}function x(e){let t=String(e.menuOptionName||"").trim(),n=String(e.chartName||"").trim(),r=y(e),l=t||n;return l?g(l,r)?r:l:r||"Metric"}function S(e){var t;let n=String(e.menuOptionName||"").trim(),r=y(e),l=b(e.tier),i=b(e.menuTier);if(n&&g(n,r)){if(l&&i)return Math.max(w(e.tier),w(e.menuTier));if(l)return w(e.tier)}return w(null!==(t=e.menuTier)&&void 0!==t?t:e.tier)}function M(e){return S(e)>1?"Pro":"Free"}function N(e,t){let n=(0,r.sg)(t);if(!n)return 0;let l=(0,r.sg)(t).split(" ").filter(Boolean),u=(0,r.sg)(i([x(e),e.metricName,e.chartName,e.metricCode])),s=(0,r.sg)(i([e.metricScale,e.categoryName,e.subcategoryName,e.url,e.collection])),c=o(e);return u.includes(n)?500:a(u,n,l)?450:s.includes(n)?350:a(s,n,l)?300:c.includes(n)?200:a(c,n,l)?180:!function(e,t){if(0===t.length)return!1;let n=(0,r.sg)(e.metricDescription||"");if(!n)return!1;let l=new Set(n.split(" ").filter(Boolean));return t.every(e=>l.has(e))}(e,l)?0:50}function k(e,t){return!(0,r.sg)(t)||N(e,t)>0}function _(e,t){let n=u(t.menuOptions),a=u(t.derivativeMenuOptions);return e.filter(e=>(function(e){let t=(0,r.sg)(e.categoryName||""),n=String(e.customChartType||"").trim(),l=String(e.metricCode||"").trim(),a=String(e.url||"").trim(),o=(0,r.sg)(i([x(e),e.metricName,e.chartName,e.categoryName,e.subcategoryName]));return!(!l&&!a||!0===e.custom||n||"cycle"===t||o.includes("liquidation level")||o.includes("liquidation levels"))})(e)&&function(e,t,n,i){let a=o(e),u=(0,r.sg)(e.collection||""),c=(0,r.sg)(e.categoryName||""),m=(0,r.sg)(e.url||""),d=c.includes("macro")||u.includes("macro")||m.includes("getmacro"),p=c.includes("sentiment")||"social"===c||u.includes("sentiment")||m.includes("sentiment")||m.includes("social"),f=s(e,n),v=s(e,i),h=c.includes("derivative")||"derivatives"===u||u.includes("derivative")||m.includes("derivatives")||a.includes("derivative")||l.some(e=>a.includes(e))||v;return"MacroEconomics"===t?f||d:"Sentiment"===t?f||p:"Derivatives"===t?v||h:f||!d&&!p&&!h}(e,t.category,n,a))}function A(e){let t=new Map;return e.forEach(e=>{let n=d(e);t.has(n)||t.set(n,e)}),Array.from(t.values())}function C(e){let t=String(e.metricCode||"").trim();return!!(String(e.url||"").trim()||t&&!c(t))}function T(e,t,n){let r=C(t)?m(t):"";if(!r)return;let l=(e.get(r)||0)+n;l>0?e.set(r,l):e.delete(r)}function F(e,t,n){let r=d(n),l=m(n),i=C(n);if(l&&i){let n=e.get(l);n&&!C(n)&&(e.delete(l),T(t,n,-1))}if(l&&!i&&(t.get(l)||0)>0)return;let a=e.get(r);(!a||!C(a)&&C(n)||!a.menuOptionId&&n.menuOptionId)&&(a&&T(t,a,-1),e.set(r,n),T(t,n,1))}function I(e,t,n){let r=new Map,l=new Map;return _(e,n).forEach(e=>{F(r,l,e)}),_(t,n).forEach(e=>{F(r,l,e)}),Array.from(r.values())}},34112:function(e,t,n){n.d(t,{M:function(){return a}});var r=n(87196),l=n(48438);function i(e){return null!=e&&isFinite(Number(e))?Number(e):null}function a(e){let{baseRows:t,indexRows:n,maEmaSource:a,metrics:o,movingAveragePeriods:u,emaPeriods:s,resolveDataKey:c,formatTime:m}=e,d=t.map(e=>({...e})),p=[],f=[];
1return o.forEach(e=>{let t=c(e.code.charAt(0).toLowerCase()+e.code.slice(1));u.forEach(e=>{let l=new Map((0,r.h)(a.map(e=>({time:m(e.time),metric:i(e[t])})),e).map(e=>[e.time,e.metric])),o="ma_".concat(t,"_").concat(e);p.push(o),n.forEach((e,t)=>{let n=l.get(m(e.time));d[t][o]=null==n?null:Number(n)})}),s.forEach(e=>{let r=a.map(e=>({time:m(e.time),metric:i(e[t])})).filter(e=>null!==e.metric),o=(0,l.y)(r,e),u=new Map;r.forEach((e,t)=>{var n,r;u.set(e.time,null!==(r=null===(n=o[t])||void 0===n?void 0:n.metric)&&void 0!==r?r:null)});let s="ema_".concat(t,"_").concat(e);f.push(s),n.forEach((e,t)=>{let n=u.get(m(e.time));d[t][s]=null==n?null:Number(n)})})}),{enrichedRows:d,maKeys:p,emaKeys:f}}},92212:function(e,t,n){n.d(t,{j:function(){return r}});function r(){let e="undefined"!=typeof crypto&&"randomUUID"in crypto?crypto.randomUUID():Math.random().toString(36).slice(2);return"my-chart-".concat(e)}},24422:function(e,t,n){n.d(t,{UN:function(){return c},hZ:function(){return d},oX:function(){return u},pK:function(){return m}});var r=n(38908);let l={sqrt:.5,cube_root:1/3,power_015:.15,power_025:.25,power_033:1/3,power_050:.5,power_075:.75};function i(e){for(let t of e){let e=(0,r.yx)(t.value);if(null!=e&&0!==e)return e}return null}function a(e){let t=i(e);return null==t?e.map(e=>({time:e.time,value:null})):e.map(e=>{let n=(0,r.yx)(e.value);return{time:e.time,value:null==n?null:(n-t)/t*100}})}let o={wow:7,mom:30,qoq:90,hoh:180,yoy:365};function u(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"percent";if(!Number.isFinite(t)||t<=0)return e.map(e=>({time:e.time,value:(0,r.yx)(e.value)}));let l=864e5*t,i=n||"percent",a=e.map((e,t)=>({index:t,time:function(e){if("number"==typeof e&&Number.isFinite(e))return e;if(null==e)return null;let t=new Date(String(e)).getTime();return Number.isFinite(t)?t:null}(e.time),value:(0,r.yx)(e.value)})).filter(e=>null!=e.time).sort((e,t)=>e.time-t.time||e.index-t.index),o=a.filter(e=>null!=e.value),u=e.map(e=>({time:e.time,value:null})),s=-1;return a.forEach(e=>{if(null==e.value)return;let t=e.time-l;for(;s+1<o.length&&o[s+1].time<=t;)s+=1;let n=s>=0?o[s].value:null;if(null!=n){if("absolute"===i){u[e.index].value=e.value-n;return}0!==n&&(u[e.index].value=(e.value/n-1)*100)}}),u}function s(e){let t=new Date(e);return Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate())}function c(e){let t=e.map(e=>({time:function(e){if("number"==typeof e&&Number.isFinite(e))return e;if(null==e)return null;let t=String(e).trim(),n=t.match(/^(\d{4})-(\d{2})-(\d{2})(?:[ T](\d{2}):(\d{2}))?/);if(n){let[,e,t,r,l="0",i="0"]=n;return Date.UTC(Number(e),Number(t)-1,Number(r),Number(l),Number(i))}let r=new Date(t).getTime();return Number.isFinite(r)?r:null}(e.time),value:(0,r.yx)(e.value)})).filter(e=>null!=e.time).sort((e,t)=>e.time-t.time);if(t.length<=1)return e.map(e=>({time:e.time,value:(0,r.yx)(e.value)}));let n=t.filter(e=>null!=e.value);if(0===n.length)return t.map(e=>({time:new Date(s(e.time)).toISOString().slice(0,10),value:null}));let l=s(t[0].time),i=s(t[t.length-1].time),a=[],o=-1;for(let e=l;e<=i;e+=864e5){let t=e+864e5-1;for(;o+1<n.length&&n[o+1].time<=t;)o+=1;a.push({time:new Date(e).toISOString().slice(0,10),value:o>=0?n[o].value:null})}return a}function m(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"percent";
1return t&&"none"!==t?u(e,o[t],n):e.map(e=>({time:e.time,value:(0,r.yx)(e.value)}))}function d(e,t,n){switch(t){case"log":return e.map(e=>{let t=(0,r.yx)(e.value);return{time:e.time,value:null!=t&&t>0?t:null}});case"sqrt":return e.map(e=>{let t=(0,r.yx)(e.value);return{time:e.time,value:null!=t&&t>=0?Math.sqrt(t):null}});case"cube_root":return e.map(e=>{let t=(0,r.yx)(e.value);return{time:e.time,value:null==t?null:Math.cbrt(t)}});case"power_015":case"power_025":case"power_033":case"power_050":case"power_075":return e.map(e=>{let n=(0,r.yx)(e.value),i=l[t]||1;return{time:e.time,value:null!=n&&n>=0?Math.pow(n,i):null}});case"percent_return":case"percent":return a(e);case"indexed_100":{let t=i(e);if(null==t)return e.map(e=>({time:e.time,value:null}));return e.map(e=>{let n=(0,r.yx)(e.value);return{time:e.time,value:null==n?null:n/t*100}})}case"btc_relative":case"asset_relative":return n?function(e,t){let n=new Map(a(t).map(e=>[e.time,e.value]));return a(e).map(e=>{let t=n.get(e.time);return null!=e.value&&null!=t&&Number.isFinite(t)?{time:e.time,value:e.value-t}:{time:e.time,value:null}})}(e,n):a(e);default:return e.map(e=>({time:e.time,value:(0,r.yx)(e.value)}))}}},12705:function(e,t,n){function r(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=new Map,r=new Map,l=[],i=0,a=0;return e.forEach(e=>{if(e.id===t.excludeSeriesId)return;let o="formula"===e.type?"f".concat(++a):"m".concat(++i);n.set(e.id,o),r.set(e.source,o),l.push({id:o,source:e.source,label:e.label,seriesId:e.id,type:e.type})}),{bySeriesId:n,bySource:r,tokens:l}}function l(e,t){return e.bySeriesId.get(t.id)||e.bySource.get(t.source)||t.source}function i(e,t,n,r){e[n.source]=r,e[n.id]=r,e[l(t,n)]=r}function a(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=r(e,t),l={},a={kind:"series",points:[{time:"sample_1",value:1},{time:"sample_2",value:2}]};return e.forEach(e=>{e.id!==t.excludeSeriesId&&i(l,n,e,a)}),l}n.d(t,{Pe:function(){return r},Q6:function(){return l},lN:function(){return a},q_:function(){return i}})},91767:function(e,t,n){n.d(t,{MS:function(){return d},N_:function(){return m},cY:function(){return c}});var r=n(46166);let l=e=>"object"==typeof e&&null!=e&&"kind"in e&&"series"===e.kind;function i(e){let t=new Date(e).getTime();return Number.isFinite(t)?t:null}function a(e){let t=new Date(e);return Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate())}function o(e){if(null==e)return null;let t=Number(e);return Number.isFinite(t)?t:null}function u(e){let t=new Map;return e.forEach(e=>{null!=i(e.time)&&t.set(e.time,{time:e.time,value:o(e.value)})}),Array.from(t.values()).sort((e,t)=>{var n,r;return(null!==(n=i(e.time))&&void 0!==n?n:0)-(null!==(r=i(t.time))&&void 0!==r?r:0)})}function s(e){let t=new Map;return e.forEach(e=>{e.forEach(e=>{let n=i(e.time);null==n||t.has(n)||t.set(n,e.time)})}),Array.from(t.entries()).sort((e,t)=>{let[n]=e,[r]=t;return n-r}).map(e=>{let[,t]=e;return{time:t,value:null}})}function c(e){var t,n,o;let c=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(null===(t=c.templatePoints)||void 0===t?void 0:t.length)return u(c.templatePoints).map(e=>({time:e.time,value:null}));let m=e.map(e=>Array.isArray(e)?u(e):l(e)?u(e.points):[]).filter(e=>e.length>0);return 0===m.length?[]:(null!==(n=c.preferDenseDaily)&&void 0!==n?!n:(o=c.interval)&&"1d"!==o&&"day"!==o&&"daily"!==o)?s(m):function(e){let t=e.flat().map(e=>i(e.time)).filter(e=>null!=e);if(0===t.length)return[];let n=a((0,r.G)(t)),l=Math.floor((a((0,r.u)(t))-n)/864e5)+1;return l<=0||l>3e4?s(e):Array.from({length:l},(e,t)=>({time:new Date(n+864e5*t).toISOString().slice(0,10),value:null}))}(m)}function m(e,t){if(0===t.length)return u(e);let n=u(e).map(e=>{var t;return{...e,ms:null!==(t=i(e.time))&&void 0!==t?t:0}}),r=0,l=null;return t.map(e=>{let t=i(e.time);if(null==t)return{time:e.time,value:null};for(;r<n.length&&n[r].ms<=t;){let e=o(n[r].value);null!=e&&(l=e),r+=1}return{time:e.time,value:l}})}function d(e,t){return 0===t.length?e:Object.fromEntries(Object.entries(e).map(e=>{let[n,r]=e;return l(r)?[n,{kind:"series",points:m(r.points,t)}]:[n,r]}))}},38908:function(e,t,n){n.d(t,{AZ:function(){return l},C2:function(){return d},He:function(){return i},IQ:function(){return o},J6:function(){return m},Jl:function(){return c},KH:function(){return u},Or:function(){return s},qo:function(){return p},yx:function(){return a}});var r=n(91767);let l=e=>"object"==typeof e&&null!=e&&"kind"in e&&"series"===e.kind,i=e=>{if("number"==typeof e&&Number.isFinite(e))return e;if("boolean"==typeof e)return e?1:0;if("string"==typeof e&&""!==e.trim()){let t=Number(e);return Number.isFinite(t)?t:null}return null},a=e=>{if(null==e)return null;let t=Number(e);return Number.isFinite(t)?t:null},o=e=>l(e)?e.points:[{time:"value",value:i(e)}],u=(e,t)=>
1{if(!l(e)){var n;let r=i(e);return null!==(n=t(r,0,[{time:"value",value:r}]))&&void 0!==n?n:0}return{kind:"series",points:e.points.map((n,r)=>({time:n.time,value:t(a(n.value),r,e.points)}))}},s=(e,t)=>{if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n].time!==t[n].time)return!1;return!0},c=(e,t,n)=>{let o=l(e),u=l(t);if(!o&&!u){var c;let r=i(e),l=i(t);return null==r||null==l?0:null!==(c=n(r,l))&&void 0!==c?c:0}if(o&&u&&s(e.points,t.points)){let r=e.points,l=t.points,i=Array(r.length),o=null,u=null;for(let e=0;e<r.length;e+=1){let t=a(r[e].value);null!=t&&(o=t);let s=a(l[e].value);null!=s&&(u=s),i[e]={time:r[e].time,value:null==o||null==u?null:n(o,u)}}return{kind:"series",points:i}}if(o!==u){let r=o?e:t,l=i(o?t:e),u=r.points,s=Array(u.length),c=null;for(let e=0;e<u.length;e+=1){let t=a(u[e].value);null!=t&&(c=t),s[e]={time:u[e].time,value:null==c||null==l?null:o?n(c,l):n(l,c)}}return{kind:"series",points:s}}let m=(0,r.cY)([l(e)?e.points:[],l(t)?t.points:[]],{preferDenseDaily:!1}),d=m.length>0?m:l(e)?e.points:l(t)?t.points:[],p=l(e)?(0,r.N_)(e.points,d):null,f=l(t)?(0,r.N_)(t.points,d):null,v=p?null:i(e),h=f?null:i(t);return{kind:"series",points:d.map((e,t)=>{var r,l;let i=a(p?null===(r=p[t])||void 0===r?void 0:r.value:v),o=a(f?null===(l=f[t])||void 0===l?void 0:l.value:h);return{time:e.time,value:null==i||null==o?null:n(i,o)}})}};function m(e){return 0===e.length?null:e.reduce((e,t)=>e+t,0)/e.length}function d(e){if(0===e.length)return null;let t=[...e].sort((e,t)=>e-t),n=Math.floor(t.length/2);return t.length%2==0?(t[n-1]+t[n])/2:t[n]}function p(e){if(0===e.length)return null;let t=m(e);return null==t?null:Math.sqrt(e.reduce((e,n)=>e+Math.pow(n-t,2),0)/e.length)}},35840:function(e,t,n){n.d(t,{Tq:function(){return i},h4:function(){return u},ob:function(){return l},yl:function(){return s},zg:function(){return a}});var r=n(38908);function l(e,t,n){let l=Math.max(1,Math.floor(Number(n)||1));if("ema"===t){let t=2/(l+1),n=null;return e.map(e=>{let l=(0,r.yx)(e.value);return null==l?{time:e.time,value:null}:(n=null==n?l:l*t+n*(1-t),{time:e.time,value:n})})}return e.map((n,i)=>{let a;let o=e.slice(Math.max(0,i-l+1),i+1).map(e=>(0,r.yx)(e.value)).filter(e=>null!=e);switch(t){case"sma":a=o.length>=l?(0,r.J6)(o):null;break;case"median":a=o.length>=l?(0,r.C2)(o):null;break;case"sum":a=o.length>=l?o.reduce((e,t)=>e+t,0):null;break;case"std":a=o.length>=l?(0,r.qo)(o):null;break;default:a=(0,r.yx)(n.value)}return{time:n.time,value:a}})}let i=Object.entries({sma:"SMA",ema:"EMA",median:"Median",sum:"Sum",std:"Std Dev"}).map(e=>{let[t,n]=e;return{value:t,label:n}});function a(){let e="undefined"!=typeof crypto&&"randomUUID"in crypto?crypto.randomUUID():Math.random().toString(36).slice(2);return"smoothing_".concat(e)}function o(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return{id:e.id||"smoothing_".concat(n+1),type:e.type||"sma",period:Math.max(1,Math.floor(Number(e.period)||30)),source:e.source||t.source,axis:e.axis||t.axis,color:e.color||t.color,style:e.style||t.style,lineStyle:e.lineStyle||"solid",lineWidth:Math.min(8,Math.max(1,Number(e.lineWidth)||2)),applyToSource:!!e.applyToSource,visible:e.visible}}function u(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return o({id:a(),type:"sma",period:30,source:e.source,axis:e.axis,color:e.color,style:e.style,lineStyle:"solid",lineWidth:2,applyToSource:!1,...t},e)}function s(e){return(Array.isArray(e.smoothings)&&e.smoothings.length>0?e.smoothings:e.smoothing?[e.smoothing]:[]).map((t,n)=>o(t,e,n))}},31155:function(e,t,n){function r(e){let t=function(e){let t=e.trim().toLowerCase(),n=t.match(/^#([0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/);if(n){let e=n[1];(3===e.length||4===e.length)&&(e=e.split("").map(e=>e+e).join(""));let t=parseInt(e.slice(0,2),16);return{r:t,g:parseInt(e.slice(2,4),16),b:parseInt(e.slice(4,6),16),a:8===e.length?parseInt(e.slice(6,8),16)/255:1}}let r=t.match(/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*([\d.]+)\s*)?\)$/);return r?{r:Number(r[1]),g:Number(r[2]),b:Number(r[3]),a:null!=r[4]?Number(r[4]):1}:null}(e);if(!t)return null;let n=255===t.r&&255===t.g&&255===t.b,r=0===t.r&&0===t.g&&0===t.b;return n||r?Math.max(0,Math.min(1,t.a)):null}function l(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n="dark"===e?255:0;return t>=1?"dark"===e?"#FFFFFF":"#000000":"rgba(".concat(n,", ").concat(n,", ").concat(n,", ").concat(Math.max(0,Math.min(1,t)),")")}function i(e,t){var n,i,a,o,u;let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"#1946E5",c=null==e?void 0:e.colorThemeManaged;if(!1===c&&(null==e?void 0:e.color))return e.color;let m=!!((null==e?void 0:null===(n=e.metric)||void 0===n?void 0:n.metricCode)==="priceUSD"||(null==e?void 0:null===(i=e.metric)||void 0===i?void 0:i.categoryName)==="__price__"||(null==e?void 0:null===(a=e.source)||void 0===a?void 0:a.startsWith("price_usd"))),d=!0===c||null==c&&(!(o=null==e?void 0:e.color)||null!=r(o));return m&&d?l(t,(null==e?void 0:e.color)&&null!==(u=r(e.color))&&void 0!==u?u:1):(null==e?void 0:e.color)||(m?l(t):s)}n.d(t,{uj:function(){return i}})},13814:function(e,t,n){n.d(t,{FW:function(){return d},RX:function(){return o},_I:function(){return u},gp:function(){return c},jb:function(){return s},pA:function(){return a},qV:function(){return i},vb:function(){return m},wo:function(){return l},ye:function(){return r}});let r="alphractal:workbench-trendline-draw-start",l="alphractal:workbench-trendline-draw-cancel",i="alphractal:workbench-trendline-draw-complete",a="alphractal:workbench-drawing-select",o="alphractal:workbench-drawing-update";function u(e){window.dispatchEvent(new CustomEvent(r,{detail:e}))}function s(e){window.dispatchEvent(new CustomEvent(l,{detail:{chartId:e}}))}function c(e){window.dispatchEvent(new CustomEvent(i,{detail:e}))}function m(e){window.dispatchEvent(new CustomEvent(a,{detail:e}))}function d(e){window.dispatchEvent(new CustomEvent(o,{detail:e}))}},91854:function(e,t,n){n.d(t,{Dz:function(){return i},J:function(){return l},Jk:function(){return r},W8:function(){return a},dK:function(){return u},ye:function(){return o}});let r="#2196F3";function l(e){return"value"===e?"linear":"log2"===e?"log":"linear"===e||"log"===e||"sqrt"===e||"cube_root"===e||"power_015"===e||"power_025"===e||"power_033"===e||"power_050"===e||"power_075"===e||"percent_return"===e||"indexed_100"===e||"percent"===e||"btc_relative"===e||"asset_relative"===e?e:"linear"}function i(e){return"bar"===e||"area"===e||"line"===e||"scatter"===e||"bubble"===e?e:"line"}function a(e){if("right"===e||"new"===e||"left"===e)return e;let t=null==e?void 0:e.trim().toLowerCase();return o(t)?t:"left"}function o(e){return/^y([3-9]|[1-9][0-9]+)$/.test(e||"")}function u(e){return"price"===e||"percent"===e||"number"===e?e:"number"}},80865:function(e,t,n){n.d(t,{O:function(){return A}});var r=n(2265),l=n(13814),i=n(62984);let a="workbench-drawing";function o(e){var t,n,r,l,i,a,o,u,s,c,m,d,p,f,v,h;return[Number(null!==(d=null!==(m=null!==(c=null!==(s=null==e?void 0:e.offsetX)&&void 0!==s?s:null==e?void 0:null===(t=e.event)||void 0===t?void 0:t.offsetX)&&void 0!==c?c:null==e?void 0:null===(n=e.event)||void 0===n?void 0:n.zrX)&&void 0!==m?m:null==e?void 0:null===(l=e.target)||void 0===l?void 0:null===(r=l.shape)||void 0===r?void 0:r.cx)&&void 0!==d?d:0),Number(null!==(h=null!==(v=null!==(f=null!==(p=null==e?void 0:e.offsetY)&&void 0!==p?p:null==e?void 0:null===(i=e.event)||void 0===i?void 0:i.offsetY)&&void 0!==f?f:null==e?void 0:null===(a=e.event)||void 0===a?void 0:a.zrY)&&void 0!==v?v:null==e?void 0:null===(u=e.target)||void 0===u?void 0:null===(o=u.shape)||void 0===o?void 0:o.cy)&&void 0!==h?h:0)]}function u(e){return Array.isArray(e)&&e.length>=2&&Number.isFinite(e[0])&&Number.isFinite(e[1])}function s(e){var t,n,r,l;e.cancelBubble=!0,null===(n=e.event)||void 0===n||null===(t=n.preventDefault)||void 0===t||t.call(n),null===(l=e.event)||void 0===l||null===(r=l.stopPropagation)||void 0===r||r.call(l)}function c(e,t){try{let n=e.getOption(),r=(Array.isArray(n.series)?n.series:[]).find(e=>(null==e?void 0:e.workbenchSeriesId)===t),l=Number(null==r?void 0:r.yAxisIndex);return Number.isFinite(l)?l:0}catch(e){return 0}}function m(e,t,n){try{if(!e.containPixel({gridIndex:0},t))return null;let r=e.convertFromPixel({xAxisIndex:0,yAxisIndex:n},t);if(!Array.isArray(r)||r.length<2)return null;let l=function(e){let t=Number(e),n=Number.isFinite(t)?t:new Date(String(e)).getTime();return Number.isFinite(n)?new Date(n).toISOString().slice(0,10):null}(r[0]),i=Number(r[1]);if(!l||!Number.isFinite(i))return null;return{pixel:t,time:l,value:i}}catch(e){return null}}function d(e,t){try{var n,r;if(!e||(null===(n=e.isDisposed)||void 0===n?void 0:n.call(e)))return;let l=null===(r=e.getDom)||void 0===r?void 0:r.call(e);l&&(l.style.cursor=t)}catch(e){}}function p(e,t,n){try{let r=new Date(t.time).getTime(),l=e.convertToPixel({xAxisIndex:0,yAxisIndex:n},[Number.isFinite(r)?r:t.time,t.value]);if(!Array.isArray(l)||l.length<2)return null;let i=Number(l[0]),a=Number(l[1]);return Number.isFinite(i)&&Number.isFinite(a)?[i,a]:null}catch(e){return null}}function f(e,t,n){let r=n[0]-t[0],l=n[1]-t[1],i=r*r+l*l;if(0===i)return Math.hypot(e[0]-t[0],e[1]-t[1]);let a=Math.max(0,Math.min(1,((e[0]-t[0])*r+(e[1]-t[1])*l)/i));return Math.hypot(e[0]-(t[0]+a*r),e[1]-(t[1]+a*l))}function v(e,t,n){let r,l;let i=t[0]-e[0],a=t[1]-e[1];if(1e-4>Math.abs(i))r=[n[0],e[1]],l=[n[0],t[1]];else{let o=e[1]+a/i*(n[0]-e[0]),u=n[1]-o;r=[e[0],e[1]+u],l=[t[0],t[1]+u]}return{parallelStart:r,parallelEnd:l,segments:[[e,t],[r,l],[e,r],[t,l]]}}function h(e,t){return"".concat(a,"-").concat(e,"-").concat(t)}function y(e){let t=["shape","start","end","third"];return"arrow"===e.type&&t.push("arrow"),t.map(t=>h(e.id,t))}function g(e){return"dotted"===e?[2,4]:"solid"!==e?[8,6]:void 0}var b=n(22738);let w="workbench-trendline-preview-line",x="workbench-trendline-preview-arrow",S="workbench-trendline-preview-start",M="workbench-trendline-preview-end",N="workbench-trendline-preview-help";function k(e,t){try{var n,r;if(!e||(null===(n=e.isDisposed)||void 0===n?void 0:n.call(e)))return;null===(r=e.getDom)||void 0===r||r.call(e),e.setOption(t,!1)}catch(e){}}function _(e,t,n,r,i,a,c,d){return{id:h(n.id,r),$action:"replace",type:"circle",z:1201,x:i[0],y:i[1],scaleX:1,scaleY:1,rotation:0,draggable:!0,cursor:"move",shape:{cx:0,cy:0,r:5},style:{fill:n.color,stroke:"#ffffff",lineWidth:1.6,shadowBlur:8,shadowColor:n.color},onclick:t=>{s(t),(0,l.vb)({chartId:e,drawingId:n.id})},ondragstart:t=>{s(t),c(!0),(0,l.vb)({chartId:e,drawingId:n.id})},ondragend:p=>{s(p);let f=function(e,t,n){let r=m(e,t,n);
1return r?{time:r.time,value:r.value}:null}(t,function(e,t){var n,r,l,i,a,s,c,m,d,p,f,v,h,y,g,b,w;let x=Number(null!==(m=null!==(c=null==e?void 0:e.offsetX)&&void 0!==c?c:null==e?void 0:null===(n=e.event)||void 0===n?void 0:n.offsetX)&&void 0!==m?m:null==e?void 0:null===(r=e.event)||void 0===r?void 0:r.zrX),S=Number(null!==(p=null!==(d=null==e?void 0:e.offsetY)&&void 0!==d?d:null==e?void 0:null===(l=e.event)||void 0===l?void 0:l.offsetY)&&void 0!==p?p:null==e?void 0:null===(i=e.event)||void 0===i?void 0:i.zrY);if(Number.isFinite(x)&&Number.isFinite(S))return[x,S];let M=null==e?void 0:e.target,N=(null==M?void 0:M.shape)||{},k=Number(null!==(v=null!==(f=N.cx)&&void 0!==f?f:N.x)&&void 0!==v?v:t[0]),_=Number(null!==(y=null!==(h=N.cy)&&void 0!==h?h:N.y)&&void 0!==y?y:t[1]),A=Number(null!==(g=null==M?void 0:M.x)&&void 0!==g?g:null==M?void 0:null===(a=M.position)||void 0===a?void 0:a[0]),C=Number(null!==(b=null==M?void 0:M.y)&&void 0!==b?b:null==M?void 0:null===(s=M.position)||void 0===s?void 0:s[1]);if(Number.isFinite(A)&&Number.isFinite(C)){let e=[A+k,C+_];if(u(e))return e}try{let e=null==M?void 0:null===(w=M.transformCoordToGlobal)||void 0===w?void 0:w.call(M,k,_);if(Array.isArray(e)&&Number.isFinite(Number(e[0]))&&Number.isFinite(Number(e[1])))return[Number(e[0]),Number(e[1])]}catch(e){}let T=[k+(Number.isFinite(A)?A:0),_+(Number.isFinite(C)?C:0)];if(u(T))return T;let F=o(e);return u(F)?F:t}(p,i),a);if(!f){window.setTimeout(()=>{c(!1),d()},80);return}let v=[...n.points];"start"===r&&(v[0]=f),"end"===r&&(v[1]=f),"third"===r&&(v[2]=f);let h="parallel_channel"===n.type&&v[2]?[v[0],v[1],v[2]]:[v[0],v[1]];(0,l.FW)({chartId:e,drawing:{...n,points:h}}),window.setTimeout(()=>{c(!1),d()},80)},ondragcancel:()=>{c(!1),d(40)}}}function A(e){let{chartId:t,getChartInstance:n,drawings:u=[],editable:h=!1}=e,A=(0,r.useRef)(n),C=(0,r.useRef)(u),T=(0,r.useRef)(h),F=(0,r.useRef)(null),I=(0,r.useRef)([]),D=(0,r.useRef)(""),E=(0,r.useRef)(null),R=(0,r.useRef)(null),O=(0,r.useRef)(!1),z=(0,r.useRef)(0),W=(0,r.useRef)(null),P=(0,r.useRef)(null),H=(0,r.useRef)(null);(0,r.useEffect)(()=>{A.current=n}),(0,r.useEffect)(()=>{C.current=u||[],T.current=h},[u,h]);let U=()=>{var e,n;let r=null===(e=A.current)||void 0===e?void 0:e.call(A);if(!t||!r||(null===(n=r.isDisposed)||void 0===n?void 0:n.call(r))||O.current)return;let l=C.current.flatMap(e=>(function(e,t,n,r,l,i,a){if(!1===n.visible)return[];let o=c(t,n.seriesId),u=p(t,n.points[0],o),s=p(t,n.points[1],o);if(!u||!s)return[];let m=[];if(r&&l&&(m.push(_(e,t,n,"start",u,o,i,a)),"text"!==n.type&&m.push(_(e,t,n,"end",s,o,i,a)),"parallel_channel"===n.type&&n.points[2])){let r=p(t,n.points[2],o);r&&m.push(_(e,t,n,"third",r,o,i,a))}return m})(t,r,e,T.current,F.current===e.id,e=>{O.current=e},Z)),i=l.map(e=>String((null==e?void 0:e.id)||"")).filter(Boolean),a=C.current.flatMap(y),o=Array.from(new Set([...I.current,...a])).filter(e=>!i.includes(e)).map(e=>({id:e,$action:"remove"})),u=JSON.stringify({graphics:l.map(e=>{var t;return{id:null==e?void 0:e.id,type:null==e?void 0:e.type,x:Math.round(10*Number((null==e?void 0:e.x)||0))/10,y:Math.round(10*Number((null==e?void 0:e.y)||0))/10,fill:null==e?void 0:null===(t=e.style)||void 0===t?void 0:t.fill}}),removals:o.map(e=>e.id)});u!==D.current&&(I.current=i,D.current=u,z.current=performance.now()+100,k(r,{graphic:[...o,...l]}))},Z=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;if(O.current)return;null!=E.current&&cancelAnimationFrame(E.current),null!=R.current&&window.clearTimeout(R.current);let t=()=>{E.current=requestAnimationFrame(()=>{E.current=requestAnimationFrame(()=>{E.current=null,U()})})};if(e>0){R.current=window.setTimeout(()=>{R.current=null,t()},e);return}t()},L=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;D.current="",Z(e)},Y=()=>{var e;let t=null===(e=A.current)||void 0===e?void 0:e.call(A);null!=E.current&&(cancelAnimationFrame(E.current),E.current=null),null!=R.current&&(window.clearTimeout(R.current),R.current=null);let n=I.current.map(e=>({id:e,$action:"remove"}));I.current=[],D.current="",n.length&&k(t,{graphic:n})};(0,r.useEffect)(()=>
1{if(!t||!h){Y();return}L();let e=window.setTimeout(()=>L(),120);return()=>{window.clearTimeout(e)}},[t,u,h]),(0,r.useEffect)(()=>{if(!t||!h)return;let e=e=>{let n=e.detail;n&&n.chartId===t&&(F.current=n.drawingId,L())};return window.addEventListener(l.pA,e),()=>{window.removeEventListener(l.pA,e)}},[t,h]),(0,r.useEffect)(()=>{if(!t||!h){Y();return}let e=null,n=null,r=0,u=()=>{var s,m,d,h,y,g,b,w,x,S,M;let N=null===(s=A.current)||void 0===s?void 0:s.call(A);if(!N||(null===(m=N.isDisposed)||void 0===m?void 0:m.call(N))){r<8&&(r+=1,n=window.setTimeout(u,100));return}let k=()=>{!O.current&&(performance.now()<z.current||L())},_=()=>{L(16)},F=e=>{var n,r;if(!T.current||W.current||O.current)return;let a=null===(n=A.current)||void 0===n?void 0:n.call(A);if(!a||(null===(r=a.isDisposed)||void 0===r?void 0:r.call(a)))return;let u=function(e,t,n){if(!e.containPixel({gridIndex:0},t))return null;for(let a=n.length-1;a>=0;a-=1){var r,l;let o=n[a];if(!1===o.visible||!(null===(r=o.points)||void 0===r?void 0:r[0])||!(null===(l=o.points)||void 0===l?void 0:l[1]))continue;let u=c(e,o.seriesId),s=p(e,o.points[0],u),m=p(e,o.points[1],u);if(!s||!m)continue;let d=Math.max(9,Number(o.lineWidth||2)+5);if("text"===o.type){if(22>=Math.hypot(t[0]-s[0],t[1]-s[1]))return o.id;continue}if("rectangle"===o.type){let e=Math.min(s[0],m[0]),n=Math.max(s[0],m[0]),r=Math.min(s[1],m[1]),l=Math.max(s[1],m[1]),i=t[0]>=e&&t[0]<=n&&t[1]>=r&&t[1]<=l,a=t[0]>=e-d&&t[0]<=n+d&&t[1]>=r-d&&t[1]<=l+d&&(Math.abs(t[0]-e)<=d||Math.abs(t[0]-n)<=d||Math.abs(t[1]-r)<=d||Math.abs(t[1]-l)<=d);if(i||a)return o.id;continue}if("fib_retracement"===o.type){let e=Math.min(s[0],m[0])-d,n=Math.max(s[0],m[0])+d;if(t[0]>=e&&t[0]<=n&&i.Xg.some(e=>{let n=s[1]+(m[1]-s[1])*e.ratio;return Math.abs(t[1]-n)<=d}))return o.id;continue}if("parallel_channel"===o.type&&o.points[2]){let n=p(e,o.points[2],u);if(!n)continue;if(v(s,m,n).segments.some(e=>{let[n,r]=e;return f(t,n,r)<=d}))return o.id;continue}if(f(t,s,m)<=d)return o.id}return null}(a,o(e),C.current);u&&(0,l.vb)({chartId:t,drawingId:u})},I=e=>{if(!T.current||W.current||O.current)return;let n=function(e,t){var n,r;let l=String((null==e?void 0:e.seriesId)||(null==e?void 0:null===(n=e.series)||void 0===n?void 0:n.id)||""),i=String((null==e?void 0:e.seriesName)||""),o="".concat(a,"-");if(l.startsWith(o)){let e=l.slice(o.length);return t.some(t=>t.id===e)?e:null}let u=String((null==e?void 0:null===(r=e.data)||void 0===r?void 0:r.workbenchDrawingId)||"");if(u&&t.some(e=>e.id===u))return u;let s=t.find(e=>e.label===i);return(null==s?void 0:s.id)||null}(e,C.current);n&&(0,l.vb)({chartId:t,drawingId:n})},D=e=>{T.current&&(W.current||O.current||function(e,t){var n,r,l,i;if(t.shiftKey||t.ctrlKey||t.metaKey)return;let a=null===(n=e.getDom)||void 0===n?void 0:n.call(e),o=null==a?void 0:null===(r=a.getBoundingClientRect)||void 0===r?void 0:r.call(a);if(!o)return;let u=[t.clientX-o.left,t.clientY-o.top];try{if(!e.containPixel({gridIndex:0},u))return!1}catch(e){return!1}let{start:s,end:c,xZoomIndexes:m}=function(e){try{var t;let n=e.getOption(),r=Array.isArray(n.dataZoom)?n.dataZoom:n.dataZoom?[n.dataZoom]:[],l=r.map((e,t)=>(null==e?void 0:e.yAxisIndex)==null?t:null).filter(e=>null!=e),i=r[null!==(t=l[0])&&void 0!==t?t:0]||{};return{start:Number.isFinite(Number(i.start))?Number(i.start):0,end:Number.isFinite(Number(i.end))?Number(i.end):100,xZoomIndexes:l.length>0?l:[0]}}catch(e){return{start:0,end:100,xZoomIndexes:[0]}}}(e),d=Math.max(.1,c-s),p=Math.max(.25,Math.min(100,d*(t.deltaY<0?.82:1.18)));if(.001>Math.abs(p-d))return;let f=Math.max(1,(null===(l=e.getWidth)||void 0===l?void 0:l.call(e))||o.width||1),v=Math.max(0,Math.min(1,u[0]/f)),h=s+d*v,y=h-p*v,g=h+p*(1-v);y<0&&(g-=y,y=0),g>100&&(y-=g-100,g=100),y=Math.max(0,y),g=Math.min(100,g),t.preventDefault(),t.stopPropagation(),null===(i=e.dispatchAction)||void 0===i||i.call(e,{type:"dataZoom",batch:m.map(e=>({dataZoomIndex:e,start:y,end:g}))})}(N,e))};null===(d=N.on)||void 0===d||d.call(N,"rendered",k),null===(h=N.on)||void 0===h||h.call(N,"finished",k),null===(y=N.on)||void 0===y||y.call(N,"dataZoom",_),null===(g=N.on)||void 0===g||g.call(N,"legendselectchanged",_),null===(b=N.on)||void 0===b||b.call(N,"click",I);let E=null===(w=N.getZr)||void 0===w?void 0:w.call(N);null==E||null===(x=E.on)||void 0===x||x.call(E,"mouseup",_),null==E||null===(S=E.on)||void 0===S||S.call(E,"click",F);let R=null===(M=N.getDom)||void 0===M?void 0:M.call(N);null==R||R.addEventListener("wheel",D,{capture:!0,passive:!1});let P="undefined"!=typeof ResizeObserver&&R?new ResizeObserver(()=>L(32)):null;null==P||P.observe(R),e=()=>{var e,t,n,r,l,i,a;null===(e=N.off)||void 0===e||e.call(N,"rendered",k),null===(t=N.off)||void 0===t||t.call(N,"finished",k),null===(n=N.off)||void 0===n||n.call(N,"dataZoom",_),null===(r=N.off)||void 0===r||r.call(N,"legendselectchanged",_),null===(l=N.off)||void 0===l||l.call(N,"click",I),null==E||null===(i=E.off)||void 0===i||i.call(E,"mouseup",_),null==E||null===(a=E.off)||void 0===a||a.call(E,"click",F),null==R||R.removeEventListener("wheel",D,{capture:!0}),null==P||P.disconnect()}};return u(),()=>{null!=n&&window.clearTimeout(n),null==e||e(),Y()}},[t,h]),(0,r.useEffect)(()=>
1{if(!t||!h)return;let e=()=>{var e,t;let n=null===(e=A.current)||void 0===e?void 0:e.call(A);null!=P.current&&(cancelAnimationFrame(P.current),P.current=null),null===(t=H.current)||void 0===t||t.call(H),H.current=null,requestAnimationFrame(()=>{!function(e){let t=Array.from({length:12},(e,t)=>[{id:"".concat(w,"-").concat(t),$action:"remove"},{id:"".concat(w,"-label-").concat(t),$action:"remove"}]).flat();k(e,{graphic:[{id:w,$action:"remove"},{id:x,$action:"remove"},{id:S,$action:"remove"},{id:M,$action:"remove"},{id:N,$action:"remove"},...t]})}(n)}),d(n,""),W.current=null},n=(e,t,n,r,l)=>{null!=P.current&&cancelAnimationFrame(P.current),P.current=requestAnimationFrame(()=>{P.current=null,function(e,t,n,r,l){var a,o,u,s;if(null===(a=e.isDisposed)||void 0===a?void 0:a.call(e))return;let c=t.color||"#2f7df6",m=t.lineWidth||2,d=t.lineStyle||"dashed",p=t.drawingType||"trendline",f=Math.max(8,Math.min(72,Number(t.fontSize||14))),h=!1!==t.textBackground,y=!1!==t.textBorder,_="rectangle"===p?"rectangle":"arrow"===p?"arrow":"text"===p?"text":"fib_retracement"===p?"Fib retracement":"parallel_channel"===p?"parallel channel":"trendline",A=[{id:N,type:"text",right:18,top:14,z:1e3,silent:!0,style:{text:"text"===p?"Click the chart to place text":"parallel_channel"===p?n?r?"Click to place the parallel edge":"Click to place the channel baseline":"Click to start a parallel channel":n?"Click again to place the ".concat(_):"Click the chart to start a ".concat(_),fill:"#e2e8f0",backgroundColor:"rgba(15,23,42,0.88)",borderColor:"rgba(47,125,246,0.45)",borderWidth:1,borderRadius:8,padding:[6,9],font:"600 12px Inter, sans-serif"}}];if(n&&A.push({id:S,type:"circle",z:1e3,silent:!0,shape:{cx:n.pixel[0],cy:n.pixel[1],r:4},style:{fill:c,stroke:"#ffffff",lineWidth:1.5}}),n&&"text"===p&&A.push({id:w,type:"text",x:n.pixel[0],y:n.pixel[1],z:1e3,silent:!0,style:{text:t.label||"Text",fill:c,backgroundColor:h?"rgba(15,23,42,0.72)":"transparent",borderColor:y?c:"transparent",borderWidth:y?1:0,borderRadius:h||y?6:0,padding:h||y?[5,7]:[0,0],font:"700 ".concat(f,"px Inter, sans-serif")}}),n&&r){if("rectangle"===p){let e=Math.min(n.pixel[0],r.pixel[0]),l=Math.min(n.pixel[1],r.pixel[1]);A.push({id:w,type:"rect",z:999,silent:!0,shape:{x:e,y:l,width:Math.abs(r.pixel[0]-n.pixel[0]),height:Math.abs(r.pixel[1]-n.pixel[1])},style:{fill:(u=t.fillColor||c,s=null!==(o=t.fillOpacity)&&void 0!==o?o:.16,(0,b.cp)(u,s,[47,125,246])),stroke:c,lineWidth:m,lineDash:g(d),shadowBlur:10,shadowColor:c}})}else"fib_retracement"===p?i.Xg.forEach((e,t)=>{let l=n.pixel[1]+(r.pixel[1]-n.pixel[1])*e.ratio;A.push({id:"".concat(w,"-").concat(t),type:"line",z:999,silent:!0,shape:{x1:n.pixel[0],y1:l,x2:r.pixel[0],y2:l},style:{stroke:c,lineWidth:Math.max(1,m-.5),lineDash:g(d),opacity:.9}}),A.push({id:"".concat(w,"-label-").concat(t),type:"text",x:r.pixel[0]+6,y:l-7,z:1e3,silent:!0,style:{text:e.label,fill:c,backgroundColor:"rgba(15,23,42,0.65)",borderRadius:4,padding:[2,4],font:"600 10px Inter, sans-serif"}})}):"parallel_channel"===p&&l?v(n.pixel,r.pixel,l.pixel).segments.forEach((e,t)=>{let[n,r]=e;A.push({id:"".concat(w,"-").concat(t),type:"line",z:999,silent:!0,shape:{x1:n[0],y1:n[1],x2:r[0],y2:r[1]},style:{stroke:c,lineWidth:m,lineDash:g(d),shadowBlur:10,shadowColor:c}})}):(A.push({id:w,type:"line",z:999,silent:!0,shape:{x1:n.pixel[0],y1:n.pixel[1],x2:r.pixel[0],y2:r.pixel[1]},style:{stroke:c,lineWidth:m,lineDash:g(d),shadowBlur:10,shadowColor:c}}),"arrow"===p&&A.push({id:x,type:"polygon",z:1e3,silent:!0,shape:{points:function(e,t){let n=Math.atan2(t[1]-e[1],t[0]-e[0]),r=Math.PI/7;return[t,[t[0]-11*Math.cos(n-r),t[1]-11*Math.sin(n-r)],[t[0]-11*Math.cos(n+r),t[1]-11*Math.sin(n+r)]]}(n.pixel,r.pixel)},style:{fill:c,stroke:c,lineWidth:1}}));A.push({id:M,type:"circle",z:1e3,silent:!0,shape:{cx:r.pixel[0],cy:r.pixel[1],r:4},style:{fill:c,stroke:"#ffffff",lineWidth:1.5}})}k(e,{graphic:A})}(e,t,n,r,l)})},r=e=>{var t,r;let l=W.current;if(!(null==l?void 0:l.startPoint))return;let i=null===(t=A.current)||void 0===t?void 0:t.call(A);if(!i||(null===(r=i.isDisposed)||void 0===r?void 0:r.call(i)))return;let a=m(i,o(e),l.yAxisIndex);if(a){if(s(e),"parallel_channel"===l.detail.drawingType&&l.endPoint){n(i,l.detail,l.startPoint,l.endPoint,a);return}n(i,l.detail,l.startPoint,a)}},a=t=>{var r,i;let a=W.current;if(!a)return;let u=null===(r=A.current)||void 0===r?void 0:r.call(A);if(!u||(null===(i=u.isDisposed)||void 0===i?void 0:i.call(u)))return;let c=m(u,o(t),a.yAxisIndex);if(!c)return;if(s(t),!a.startPoint){if("text"===a.detail.drawingType){(0,l.gp)({...a.detail,startTime:c.time,endTime:c.time,startValue:c.value,endValue:c.value}),e();return}W.current={...a,startPoint:c},n(u,a.detail,c);return}if("parallel_channel"===a.detail.drawingType&&!a.endPoint){W.current={...a,endPoint:c},n(u,a.detail,a.startPoint,c);return}let d=a.endPoint||c;(0,l.gp)({...a.detail,startTime:a.startPoint.time,endTime:d.time,thirdTime:"parallel_channel"===a.detail.drawingType?c.time:void 0,startValue:a.startPoint.value,endValue:d.value,thirdValue:"parallel_channel"===a.detail.drawingType?c.value:void 0}),e()},u=e=>{var l,i,o,u,s,m;let p=e.detail;if(!p||p.chartId!==t)return;let f=null===(l=A.current)||void 0===l?void 0:l.call(A);if(!f||(null===(i=f.isDisposed)||void 0===i?void 0:i.call(f)))return;null===(o=H.current)||void 0===o||o.call(H);let v=null===(u=f.getZr)||void 0===u?void 0:u.call(f);null==v||null===(s=v.on)||void 0===s||s.call(v,"mousemove",r),null==v||null===(m=v.on)||void 0===m||m.call(v,"click",a),H.current=()=>{var e,t;null==v||null===(e=v.off)||void 0===e||e.call(v,"mousemove",r),null==v||null===(t=v.off)||void 0===t||t.call(v,"click",a)}
1,W.current={detail:p,yAxisIndex:c(f,p.seriesId),startPoint:null,endPoint:null},d(f,"crosshair"),n(f,p,null)},p=n=>{let r=n.detail;r&&r.chartId===t&&e()},f=t=>{"Escape"===t.key&&W.current&&(t.preventDefault(),e())};return window.addEventListener(l.ye,u),window.addEventListener(l.wo,p),window.addEventListener("keydown",f),()=>{window.removeEventListener(l.ye,u),window.removeEventListener(l.wo,p),window.removeEventListener("keydown",f),e()}},[t,h])}},49184:function(e,t,n){function r(e){return String(e||"").replace(/[_./-]+/g," ").toLowerCase().trim()}function l(e,t){return RegExp("(^|\\s)".concat(t,"(\\s|$)"),"i").test(e)}function i(e,t){let n=String((null==e?void 0:e.metricCode)||"").toLowerCase(),i=r((null==e?void 0:e.area)||t),a=r([null==e?void 0:e.metricCode,null==e?void 0:e.metricName,null==e?void 0:e.chartName,null==e?void 0:e.categoryName,null==e?void 0:e.subcategoryName,null==e?void 0:e.area,t].filter(Boolean).join(" ")),o="priceusd"===n||n.includes("usd")||l(a,"usd"),u=n.includes("price")||l(a,"price"),s=i.includes("derivative")&&(o||a.includes("open interest")||a.includes("liquidation")||a.includes("notional")||a.includes("premium")||a.includes("basis"));return(null==e?void 0:e.categoryName)==="__price__"||o||u||s}function a(e){var t,n,r,l;let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"number";return(null==e?void 0:e.rateOfChange)&&"none"!==e.rateOfChange&&"absolute"!==e.rateOfChangeMode||(null==e?void 0:e.scale)==="percent_return"||(null==e?void 0:e.scale)==="percent"||(null==e?void 0:e.scale)==="btc_relative"||(null==e?void 0:e.scale)==="asset_relative"?"percent":(null==e?void 0:e.scale)==="sqrt"||(null==e?void 0:e.scale)==="cube_root"||(null==e?void 0:null===(t=e.scale)||void 0===t?void 0:t.startsWith("power_"))?"number":(null==e?void 0:e.formatter)==="percent"?"percent":e&&i({...e.metric||{},metricCode:(null===(n=e.metric)||void 0===n?void 0:n.metricCode)||e.source,metricName:(null===(r=e.metric)||void 0===r?void 0:r.metricName)||e.label},null===(l=e.metric)||void 0===l?void 0:l.area)?"price":(null==e?void 0:e.formatter)?e.formatter:a}function o(e,t){return i(e||void 0,t)?"price":"number"}function u(e){let t=r(e);return l(t,"price")||"priceusd"===t}n.d(t,{Wb:function(){return o},fm:function(){return a},lc:function(){return u}})}}]); 2//# sourceMappingURL=8078-9ad87fb7a93dc6e3.js.map 3//# chunkId=01a109f9-10fc-7b43-ad34-accf1312e186
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.