-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy path41.bundle.f3548266c696620718c0.js
2 lines (2 loc) · 271 KB
/
41.bundle.f3548266c696620718c0.js
1
2
"use strict";(globalThis.webpackChunk=globalThis.webpackChunk||[]).push([[41],{76255:(e,t,n)=>{n.d(t,{It:()=>d,R4:()=>m});var o=n(41766),r=n(11374),i=n.n(r),a=n(5085),s=n(77954);const l={default:{[a.ld.topLeft]:[],[a.ld.topRight]:[],[a.ld.bottomLeft]:[],[a.ld.bottomRight]:[]}},c=(0,o.createContext)(l);function d({children:e,service:t}){const[n,r]=(0,o.useReducer)(((e,t)=>{switch(t.type){case"SET_ACTION_COMPONENT":{const{viewportId:n,id:o,component:r,location:i,indexPriority:a=0}=t.payload;let s=e?.[n]?.[i]?[...e[n][i]]:[];const l=s.findIndex((e=>e.id===o));if(-1!==l&&(s=[...s.slice(0,l),...s.slice(l+1)]),r){const e=s.findIndex((e=>a<=e.indexPriority));s=[...s.slice(0,e),{id:o,component:r,indexPriority:a},...s.slice(e+1)]}return{...e,[n]:{...e[n],[i]:s}}}case"CLEAR_ACTION_COMPONENTS":{const n=t.payload,o={...e};return delete o[n],o}default:return{...e}}}),l),i=(0,o.useCallback)((()=>n),[n]),a=(0,o.useCallback)((e=>{r({type:"SET_ACTION_COMPONENT",payload:e})}),[r]),s=(0,o.useCallback)((e=>{e.forEach((e=>r({type:"SET_ACTION_COMPONENT",payload:e})))}),[r]),d=(0,o.useCallback)((e=>r({type:"CLEAR_ACTION_COMPONENTS",payload:e})),[r]);(0,o.useEffect)((()=>{t&&t.setServiceImplementation({getState:i,setComponent:a,setComponents:s,clear:d})}),[i,t,a,s]);const m={getState:i,setComponent:e=>t.setComponent(e),setComponents:e=>t.setComponents(e),clear:e=>t.clear(e)},p=(0,o.useMemo)((()=>[n,m]),[n,m]);return o.createElement(c.Provider,{value:p},e)}d.propTypes={children:i().node,service:i().instanceOf(s.A).isRequired};const m=()=>(0,o.useContext)(c)},77422:(e,t,n)=>{n.r(t),n.d(t,{ImageOverlayViewerTool:()=>U,Types:()=>r,default:()=>Zn,getActiveViewportEnabledElement:()=>w,measurementMappingUtils:()=>o,toolNames:()=>R});var o={};n.r(o),n.d(o,{getDisplayUnit:()=>k,getFirstAnnotationSelected:()=>F,getHandlesFromPoints:()=>x,getSOPInstanceAttributes:()=>P.A,isAnnotationSelected:()=>G,setAnnotationSelected:()=>L});var r={};n.r(r);var i=n(41766),a=n(44656),s=n(24542),l=n(23722),c=n(55411),d=n(54578),m=n.n(d),p=n(45561),u=n.n(p);const{registerVolumeLoader:g}=a.volumeLoader;let h=!1;function I(e,t,n){m().external.cornerstone=a,m().external.dicomParser=u(),g("cornerstoneStreamingImageVolume",l.FC),g("cornerstoneStreamingDynamicImageVolume",l.Mr),m().configure({decodeConfig:{convertFloatPixelDataToInt:!1,use16BitDataType:Boolean(t.useNorm16Texture)||Boolean(t.preferSizeOverAccuracy)},beforeSend:function(t){const o=n.getActiveDataSource()?.[0].getConfig()??{},r=e.getAuthorizationHeader(),i={Accept:c.utils.generateAcceptHeader(o.acceptHeader,o.requestTransferSyntaxUID,o.omitQuotationForMultipartRequest)};return r&&Object.assign(i,r),i},errorInterceptor:e=>{c.r_.getHTTPErrorHandler(e)}}),function(e){const t={maxWebWorkers:Math.min(Math.max(navigator.hardwareConcurrency-1,1),e.maxNumberOfWebWorkers),startWebWorkersOnDemand:!0,taskConfiguration:{decodeTask:{initializeCodecsOnStartup:!1,usePDFJS:!1,strict:!1}}};h||(m().webWorkerManager.initialize(t),h=!0)}(t)}var S=n(5085);function v(e,t,n){const o=!!n&&n.exclusive,r=n?n.items:[];return new Promise(((n,i)=>{t.create({id:"select-annotation",isDraggable:!1,showOverlay:!0,content:S.nd,defaultPosition:{x:window.innerWidth/2,y:window.innerHeight/2},contentProps:{labellingDoneCallback:o=>{t.dismiss({id:"select-annotation"}),"string"==typeof o&&(e.label=o),n(e)},measurementData:e,componentClassName:{},labelData:r,exclusive:o}})}))}const f=function(e,t,n,o=!0,r={}){const a="dialog-enter-annotation",s=t?o?t.text:t.label:"",{dialogTitle:l="Annotation",inputLabel:c="Enter your annotation",validateFunc:d=(e=>!0)}=r,m=({action:t,value:o})=>{switch(t.id){case"save":if("function"==typeof d&&!d(o.label))return;n(o.label,t.id);break;case"cancel":n("",t.id)}e.dismiss({id:a})};e&&e.create({id:a,centralize:!0,isDraggable:!1,showOverlay:!0,content:S.lG,contentProps:{title:l,value:{label:s},noCloseButton:!0,onClose:()=>e.dismiss({id:a}),actions:[{id:"cancel",text:"Cancel",type:S.Ny.NW.secondary},{id:"save",text:"Save",type:S.Ny.NW.primary}],onSubmit:m,body:({value:e,setValue:t})=>i.createElement(S.pd,{autoFocus:!0,className:"border-primary-main bg-black",type:"text",id:"annotation",label:c,labelClassName:"text-white text-[14px] leading-[1.2]",value:e.label,onChange:e=>{e.persist(),t((t=>({...t,label:e.target.value})))},onKeyPress:t=>{"Enter"===t.key&&m({value:e,action:{id:"save"}})}})}})};var y=n(71353);function w(e){const{activeViewportId:t}=e.getState(),{element:n}=(0,y.kJ)(t)||{};return(0,a.getEnabledElement)(n)}const{calibrateImageSpacing:T}=s.utilities;class E extends s.LengthTool{constructor(...e){super(...e),this._renderingViewport=void 0,this._lengthToolRenderAnnotation=this.renderAnnotation,this.renderAnnotation=(e,t)=>{const{viewport:n}=e;return this._renderingViewport=n,this._lengthToolRenderAnnotation(e,t)}}_getTextLines(e,t){const[n,o]=e.handles.points.map((e=>this._renderingViewport.worldToCanvas(e)));return[`${Math.round(100*function(e,t){const n=e[0]-t[0],o=e[1]-t[1];return Math.sqrt(n*n+o*o)}(n,o))/100}px`]}}E.toolName="CalibrationLine";const D=E;function b(e,t){const{uiDialogService:n,viewportGridService:o}=e.services,r=t.detail,{annotation:{metadata:i,data:a}}=r,{referencedImageId:s}=i,l=w(o),{viewport:c}=l,d=Math.round(100*function(e,t){const n=e[0]-t[0],o=e[1]-t[1],r=e[2]-t[2];return Math.sqrt(n*n+o*o+r*r)}(a.handles.points[0],a.handles.points[1]))/100;return new Promise(((e,t)=>{n?f(n,{text:"",label:`${d}`},((n,o)=>{"save"===o?((e=>{const t=e/d;T(s,c.getRenderingEngine(),{type:"User",scale:1/t})})(Number.parseFloat(n)),e(!0)):t("cancel")}),!1,{dialogTitle:"Calibration",inputLabel:"Actual Physical distance (mm)",validateFunc:e=>{try{const t=Number.parseFloat(e);return!isNaN(t)&&0!==t}catch{return!1}}}):t("UIDialogService is not initiated")}))}var O=n(17541);const N=new Map,A={add:(e,t)=>{N.get(e)!==t&&N.set(e,t)},get:(e,t)=>{if(!Array.isArray(t)&&"overlayPlaneModule"===e)return N.get(t)}};a.metaData.addProvider(A.get,1e4);const C=A;class M extends s.AnnotationDisplayTool{constructor(e={},t={supportedInteractionTypes:[],configuration:{fillColor:[255,127,127,255]}}){super(e,t),this.onSetToolDisabled=()=>{},this.renderAnnotation=(e,t)=>{const{viewport:n}=e,o=this.getReferencedImageId(n);if(!o)return;const r=a.metaData.get("overlayPlaneModule",o),i=r?.overlays;return i?.length?(i.forEach((e=>{e.x||=0,e.y||=0})),M.addOverlayPlaneModule(o,r),this._getCachedStat(o,r,this.configuration.fillColor).then((n=>{n.overlays.forEach((n=>{this._renderOverlay(e,t,n)}))})),!0):void 0}}getReferencedImageId(e){if(e instanceof a.VolumeViewport)return;return this.getTargetId(e).split("imageId:")[1]}_renderOverlay(e,t,n){const{viewport:o}=e,r=this.getReferencedImageId(o);if(!r)return;const{_id:i,columns:l,rows:c,x:d,y:m}=n,p=a.utilities.imageToWorldCoords(r,[d-1,m-1]),u=o.worldToCanvas(p),g=a.utilities.imageToWorldCoords(r,[l,c]),h=o.worldToCanvas(g),I=`image-overlay-${i}`,S=t.getSvgNode(I),v={"data-id":I,width:h[0]-u[0],height:h[1]-u[1],x:u[0],y:u[1],href:n.dataUrl};if(isNaN(v.x)||isNaN(v.y)||isNaN(v.width)||isNaN(v.height))return console.warn("Invalid rendering attribute for image overlay",v["data-id"]),!1;if(S)s.drawing.setAttributesIfNecessary(v,S),t.setNodeTouched(I);else{const e=document.createElementNS("http://www.w3.org/2000/svg","image");s.drawing.setNewAttributesIfValid(v,e),t.appendNode(e,I)}return!0}async _getCachedStat(e,t,n){if(0===t.overlays.filter((e=>e.pixelData&&!e.dataUrl)).length)return t;const o=await Promise.all(t.overlays.filter((e=>e.pixelData)).map((async(e,t)=>{let o=null;if(e.pixelData.Value)o=e.pixelData.Value;else if(e.pixelData instanceof Array)o=e.pixelData[0];else if(e.pixelData.retrieveBulkData)o=await e.pixelData.retrieveBulkData();else if(e.pixelData.InlineBinary){const t=(0,O.Vk)(e.pixelData.InlineBinary);o=await t.arrayBuffer()}if(!o)return;const r=this._renderOverlayToDataUrl({width:e.columns,height:e.rows},e.color||n,o);return{...e,_id:(0,O.Os)(),dataUrl:r,color:n}})));return t.overlays=o,t}_isSameColor(e,t){return e&&t&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]}_renderOverlayToDataUrl({width:e,height:t},n,o){const r=new DataView(o),i=e*t,a=document.createElement("canvas");a.width=e,a.height=t;const s=a.getContext("2d");s.clearRect(0,0,e,t),s.globalCompositeOperation="copy";const l=s.getImageData(0,0,e,t),c=l.data;for(let e=0,t=0,o=0;e<i;e++)r.getUint8(o)&1<<t&&(c[4*e]=n[0],c[4*e+1]=n[1],c[4*e+2]=n[2],c[4*e+3]=n[3]),t>=7?(t=0,o++):t++;return s.putImageData(l,0,0),a.toDataURL()}}M.toolName="ImageOverlayViewer",M.addOverlayPlaneModule=C.add;const U=M;const R={Pan:s.PanTool.toolName,ArrowAnnotate:s.ArrowAnnotateTool.toolName,WindowLevel:s.WindowLevelTool.toolName,StackScroll:s.StackScrollTool.toolName,StackScrollMouseWheel:s.StackScrollMouseWheelTool.toolName,Zoom:s.ZoomTool.toolName,VolumeRotateMouseWheel:s.VolumeRotateMouseWheelTool.toolName,MipJumpToClick:s.MIPJumpToClickTool.toolName,Length:s.LengthTool.toolName,DragProbe:s.DragProbeTool.toolName,Probe:s.ProbeTool.toolName,RectangleROI:s.RectangleROITool.toolName,RectangleROIThreshold:s.RectangleROIThresholdTool.toolName,EllipticalROI:s.EllipticalROITool.toolName,CircleROI:s.CircleROITool.toolName,Bidirectional:s.BidirectionalTool.toolName,Angle:s.AngleTool.toolName,CobbAngle:s.CobbAngleTool.toolName,Magnify:s.MagnifyTool.toolName,Crosshairs:s.CrosshairsTool.toolName,SegmentationDisplay:s.SegmentationDisplayTool.toolName,Brush:s.BrushTool.toolName,PaintFill:s.PaintFillTool.toolName,ReferenceLines:s.ReferenceLinesTool.toolName,CalibrationLine:D.toolName,TrackballRotateTool:s.TrackballRotateTool.toolName,CircleScissors:s.CircleScissorsTool.toolName,RectangleScissors:s.RectangleScissorsTool.toolName,SphereScissors:s.SphereScissorsTool.toolName,ImageOverlayViewer:U.toolName,AdvancedMagnify:s.AdvancedMagnifyTool.toolName,UltrasoundDirectional:s.UltrasoundDirectionalTool.toolName,SplineROI:s.SplineROITool.toolName,LivewireContour:s.LivewireContourTool.toolName,PlanarFreehandROI:s.PlanarFreehandROITool.toolName,OrientationMarker:s.OrientationMarkerTool.toolName},V=["Length","EllipticalROI","CircleROI","Bidirectional","ArrowAnnotate","Angle","CobbAngle","Probe","RectangleROI","PlanarFreehandROI","SplineROI","LivewireContour","Probe","UltrasoundDirectionalTool"];var P=n(1663);const _={toAnnotation:e=>{},toMeasurement:(e,t,n,o,r)=>{const{annotation:i,viewportId:a}=e,{metadata:s,data:l,annotationUID:d}=i;if(!s||!l)return console.warn("Length tool: Missing metadata or data"),null;const{toolName:m,referencedImageId:p,FrameOfReferenceUID:u}=s;if(!V.includes(m))throw new Error("Tool not supported");const{SOPInstanceUID:g,SeriesInstanceUID:h,StudyInstanceUID:I}=(0,P.A)(p,n,a);let S;S=g?t.getDisplaySetForSOPInstanceUID(g,h):t.getDisplaySetsForSeries(h);const{points:v,textBox:f}=l.handles,y=function(e,t){const{metadata:n,data:o}=e,{cachedStats:r}=o,{referencedImageId:i}=n;if(!Object.keys(r).length)return[];const a=[];return Object.keys(r).forEach((e=>{const n=r[e];if(!i)throw new Error("Non-acquisition plane measurement mapping not supported");const{SOPInstanceUID:o,SeriesInstanceUID:s,frameNumber:l}=(0,P.A)(i),c=t.getDisplaySetForSOPInstanceUID(o,s,l),{SeriesNumber:d}=c,{length:m,unit:p="mm"}=n;a.push({SeriesInstanceUID:s,SOPInstanceUID:o,SeriesNumber:d,frameNumber:l,unit:p,length:m})})),a}(i,t),w=function(e,t,n){if(!e||!e.length)return"";const o=[],{length:r,SeriesNumber:i,SOPInstanceUID:a,frameNumber:s,unit:l}=e[0],d=t.images.find((e=>e.SOPInstanceUID===a));let m;d&&(m=d.InstanceNumber);const p=m?` I: ${m}`:"",u=t.isMultiFrame?` F: ${s}`:"";if(null==r)return o;const g=c.utils.roundNumber(r,2);return o.push(`${g} ${l} (S: ${i}${p}${u})`),o}(y,S);return{uid:d,SOPInstanceUID:g,FrameOfReferenceUID:u,points:v,textBox:f,metadata:s,referenceSeriesUID:h,referenceStudyUID:I,frameNumber:y[0]?.frameNumber||1,toolName:s.toolName,displaySetInstanceUID:S.displaySetInstanceUID,label:l.label,displayText:w,data:l.cachedStats,type:o(m),getReport:()=>function(e,t,n,o){const r=[],i=[];r.push("AnnotationType"),i.push("Cornerstone:Length"),e.forEach((e=>{const{length:t,unit:n}=e;r.push("Length"),i.push(t),r.push("Unit"),i.push(n)})),n&&(r.push("FrameOfReferenceUID"),i.push(n));t&&(r.push("points"),i.push(t.map((e=>e.join(" "))).join(";")));return{columns:r,values:i}}(y,v,u)}}};function x(e){if(e.longAxis&&e.shortAxis){const t={};return t.start=e.longAxis[0],t.end=e.longAxis[1],t.perpendicularStart=e.longAxis[0],t.perpendicularEnd=e.longAxis[1],t}return e.map(((e,t)=>t%10==0?{start:e}:{end:e})).reduce(((e,t)=>Object.assign(e,{...t})),{})}function G(e){return s.annotation.selection.isAnnotationSelected(e)}function L(e,t){G(e)!==t&&s.annotation.selection.setAnnotationSelected(e,t)}function F(e){const[t]=s.annotation.selection.getAnnotationsSelected()||[];if(t)return s.annotation.state.getAnnotation(t)}const k=e=>null==e?"":e;const $={toAnnotation:e=>{},toMeasurement:(e,t,n,o,r)=>{const{annotation:i,viewportId:a}=e,{metadata:s,data:l,annotationUID:d}=i;if(!s||!l)return console.warn("Length tool: Missing metadata or data"),null;const{toolName:m,referencedImageId:p,FrameOfReferenceUID:u}=s;if(!V.includes(m))throw new Error("Tool not supported");const{SOPInstanceUID:g,SeriesInstanceUID:h,StudyInstanceUID:I}=(0,P.A)(p,n,a);let S;S=g?t.getDisplaySetForSOPInstanceUID(g,h):t.getDisplaySetsForSeries(h);const{points:v,textBox:f}=l.handles,y=function(e,t){const{metadata:n,data:o}=e,{cachedStats:r}=o,{referencedImageId:i,referencedSeriesInstanceUID:a}=n;if(!Object.keys(r).length)return[];const s=[];return Object.keys(r).forEach((e=>{const n=r[e];if(!i)throw new Error("Non-acquisition plane measurement mapping not supported");const{SOPInstanceUID:o,SeriesInstanceUID:a,frameNumber:l}=(0,P.A)(i),c=t.getDisplaySetForSOPInstanceUID(o,a,l),{SeriesNumber:d}=c,{length:m,width:p,unit:u}=n;s.push({SeriesInstanceUID:a,SOPInstanceUID:o,SeriesNumber:d,frameNumber:l,unit:u,length:m,width:p})})),s}(i,t),w=function(e,t,n){if(!e||!e.length)return"";const o=[],{length:r,width:i,unit:a,SeriesNumber:s,SOPInstanceUID:l,frameNumber:d}=e[0],m=c.utils.roundNumber(r,2),p=c.utils.roundNumber(i,2),u=t.images.find((e=>e.SOPInstanceUID===l));let g;u&&(g=u.InstanceNumber);const h=g?` I: ${g}`:"",I=t.isMultiFrame?` F: ${d}`:"";return o.push(`L: ${m} ${k(a)} (S: ${s}${h}${I})`),o.push(`W: ${p} ${k(a)}`),o}(y,S);return{uid:d,SOPInstanceUID:g,FrameOfReferenceUID:u,points:v,textBox:f,metadata:s,referenceSeriesUID:h,referenceStudyUID:I,frameNumber:y[0]?.frameNumber||1,toolName:s.toolName,displaySetInstanceUID:S.displaySetInstanceUID,label:l.label,displayText:w,data:l.cachedStats,type:o(m),getReport:()=>function(e,t,n,o){const r=[],i=[];r.push("AnnotationType"),i.push("Cornerstone:Bidirectional"),e.forEach((e=>{const{length:t,width:n,unit:o}=e;r.push("Length","Width","Unit"),i.push(t,n,o)})),n&&(r.push("FrameOfReferenceUID"),i.push(n));t&&(r.push("points"),i.push(t.map((e=>e.join(" "))).join(";")));return{columns:r,values:i}}(y,v,u)}}};const B={toAnnotation:e=>{},toMeasurement:(e,t,n,o,r)=>{const{annotation:i,viewportId:a}=e,{metadata:s,data:l,annotationUID:d}=i;if(!s||!l)return console.warn("Length tool: Missing metadata or data"),null;const{toolName:m,referencedImageId:p,FrameOfReferenceUID:u}=s;if(!V.includes(m))throw new Error("Tool not supported");const{SOPInstanceUID:g,SeriesInstanceUID:h,StudyInstanceUID:I}=(0,P.A)(p,n,a);let S;S=g?t.getDisplaySetForSOPInstanceUID(g,h):t.getDisplaySetsForSeries(h);const{points:v,textBox:f}=l.handles,y=function(e,t){const{metadata:n,data:o}=e,{cachedStats:r}=o,{referencedImageId:i}=n;if(!Object.keys(r).length)return[];const a=[];return Object.keys(r).forEach((e=>{const n=r[e];if(!i)throw new Error("Non-acquisition plane measurement mapping not supported");const{SOPInstanceUID:o,SeriesInstanceUID:s,frameNumber:l}=(0,P.A)(i),c=t.getDisplaySetForSOPInstanceUID(o,s,l),{SeriesNumber:d}=c,{mean:m,stdDev:p,max:u,area:g,Modality:h,areaUnit:I,modalityUnit:S}=n;a.push({SeriesInstanceUID:s,SOPInstanceUID:o,SeriesNumber:d,frameNumber:l,Modality:h,unit:S,areaUnit:I,mean:m,stdDev:p,max:u,area:g})})),a}(i,t),w=function(e,t,n){if(!e||!e.length)return"";const o=[],{area:r,SOPInstanceUID:i,frameNumber:a,areaUnit:s}=e[0],l=t.images.find((e=>e.SOPInstanceUID===i));let d;l&&(d=l.InstanceNumber);const m=d?` I: ${d}`:"",p=t.isMultiFrame?` F: ${a}`:"",u=c.utils.roundNumber(r,2);return o.push(`${u} ${k(s)}`),e.forEach((e=>{const{unit:t,max:n,SeriesNumber:r}=e;let i="";if(n){i=`Max: ${c.utils.roundNumber(n,2)} <small>${k(t)}</small> `}const a=`${i}(S:${r}${m}${p})`;o.includes(a)||o.push(a)})),o}(y,S);return{uid:d,SOPInstanceUID:g,FrameOfReferenceUID:u,points:v,textBox:f,metadata:s,referenceSeriesUID:h,referenceStudyUID:I,frameNumber:y[0]?.frameNumber||1,toolName:s.toolName,displaySetInstanceUID:S.displaySetInstanceUID,label:l.label,displayText:w,data:l.cachedStats,type:o(m),getReport:()=>function(e,t,n,o){const r=[],i=[];r.push("AnnotationType"),i.push("Cornerstone:EllipticalROI"),e.forEach((e=>{const{mean:t,stdDev:n,max:o,area:a,unit:s,areaUnit:l}=e;t&&s&&o&&a&&(r.push(`max (${s})`,`mean (${s})`,`std (${s})`,"Area","Unit"),i.push(o,t,n,a,l))})),n&&(r.push("FrameOfReferenceUID"),i.push(n));t&&(r.push("points"),i.push(t.map((e=>e.join(" "))).join(";")));return{columns:r,values:i}}(y,v,u)}}},z={toAnnotation:e=>{},toMeasurement:(e,t,n,o,r)=>{const{annotation:i,viewportId:a}=e,{metadata:s,data:l,annotationUID:d}=i;if(!s||!l)return console.warn("Length tool: Missing metadata or data"),null;const{toolName:m,referencedImageId:p,FrameOfReferenceUID:u}=s;if(!V.includes(m))throw new Error("Tool not supported");const{SOPInstanceUID:g,SeriesInstanceUID:h,StudyInstanceUID:I}=(0,P.A)(p,n,a);let S;S=g?t.getDisplaySetForSOPInstanceUID(g,h):t.getDisplaySetsForSeries(h);const{points:v,textBox:f}=l.handles,y=function(e,t){const{metadata:n,data:o}=e,{cachedStats:r}=o,{referencedImageId:i}=n;if(!Object.keys(r).length)return[];const a=[];return Object.keys(r).forEach((e=>{const n=r[e];if(!i)throw new Error("Non-acquisition plane measurement mapping not supported");const{SOPInstanceUID:o,SeriesInstanceUID:s,frameNumber:l}=(0,P.A)(i),c=t.getDisplaySetForSOPInstanceUID(o,s,l),{SeriesNumber:d}=c,{mean:m,stdDev:p,max:u,area:g,Modality:h,areaUnit:I,modalityUnit:S}=n;a.push({SeriesInstanceUID:s,SOPInstanceUID:o,SeriesNumber:d,frameNumber:l,Modality:h,unit:S,mean:m,stdDev:p,max:u,area:g,areaUnit:I})})),a}(i,t),w=function(e,t,n){if(!e||!e.length)return"";const o=[],{area:r,SOPInstanceUID:i,frameNumber:a,areaUnit:s}=e[0],l=t.images.find((e=>e.SOPInstanceUID===i));let d;l&&(d=l.InstanceNumber);const m=d?` I: ${d}`:"",p=t.isMultiFrame?` F: ${a}`:"",u=c.utils.roundNumber(r||0,2);return o.push(`${u} ${k(s)}`),e.forEach((e=>{const{unit:t,max:n,SeriesNumber:r}=e;let i="";if(n){i=`Max: ${c.utils.roundNumber(n,2)} <small>${k(t)}</small> `}const a=`${i}(S:${r}${m}${p})`;o.includes(a)||o.push(a)})),o}(y,S);return{uid:d,SOPInstanceUID:g,FrameOfReferenceUID:u,points:v,textBox:f,metadata:s,referenceSeriesUID:h,referenceStudyUID:I,frameNumber:y[0]?.frameNumber||1,toolName:s.toolName,displaySetInstanceUID:S.displaySetInstanceUID,label:l.label,displayText:w,data:l.cachedStats,type:o(m),getReport:()=>function(e,t,n,o){const r=[],i=[];r.push("AnnotationType"),i.push("Cornerstone:CircleROI"),e.forEach((e=>{const{mean:t,stdDev:n,max:o,area:a,unit:s,areaUnit:l}=e;t&&s&&o&&a&&(r.push(`max (${s})`,`mean (${s})`,`std (${s})`,"Area","Unit"),i.push(o,t,n,a,l))})),n&&(r.push("FrameOfReferenceUID"),i.push(n));t&&(r.push("points"),i.push(t.map((e=>e.join(" "))).join(";")));return{columns:r,values:i}}(y,v,u)}}};const j=z;const W={toAnnotation:e=>{},toMeasurement:(e,t,n,o,r)=>{const{annotation:i,viewportId:a}=e,{metadata:s,data:l,annotationUID:c}=i;if(!s||!l)return console.warn("Length tool: Missing metadata or data"),null;const{toolName:d,referencedImageId:m,FrameOfReferenceUID:p}=s;if(!V.includes(d))throw new Error("Tool not supported");const{SOPInstanceUID:u,SeriesInstanceUID:g,StudyInstanceUID:h}=(0,P.A)(m,n,a);let I;I=u?t.getDisplaySetForSOPInstanceUID(u,g):t.getDisplaySetsForSeries(g);const{points:S,textBox:v}=l.handles,f=function(e,t){const{metadata:n,data:o}=e,{text:r}=o,{referencedImageId:i}=n,a=[],{SOPInstanceUID:s,SeriesInstanceUID:l,frameNumber:c}=(0,P.A)(i),d=t.getDisplaySetForSOPInstanceUID(s,l,c),{SeriesNumber:m}=d;return a.push({SeriesInstanceUID:l,SOPInstanceUID:s,SeriesNumber:m,frameNumber:c,text:r}),a}(i,t),y=function(e,t,n){if(!e)return"";const o=[],{SeriesNumber:r,SOPInstanceUID:i,frameNumber:a}=e[0],s=t.images.find((e=>e.SOPInstanceUID===i));let l;s&&(l=s.InstanceNumber);const c=l?` I: ${l}`:"",d=t.isMultiFrame?` F: ${a}`:"";return o.push(`(S: ${r}${c}${d})`),o}(f,I);return{uid:c,SOPInstanceUID:u,FrameOfReferenceUID:p,points:S,textBox:v,metadata:s,referenceSeriesUID:g,referenceStudyUID:h,frameNumber:f[0]?.frameNumber||1,toolName:s.toolName,displaySetInstanceUID:I.displaySetInstanceUID,label:l.text,displayText:y,data:l.cachedStats,type:o(d),getReport:()=>{throw new Error("Not implemented")}}}},q={toAnnotation:e=>{},toMeasurement:(e,t,n,o,r)=>{const{annotation:i,viewportId:a}=e,{metadata:s,data:l,annotationUID:d}=i;if(!s||!l)return console.warn("Cobb Angle tool: Missing metadata or data"),null;const{toolName:m,referencedImageId:p,FrameOfReferenceUID:u}=s;if(!V.includes(m))throw new Error("Tool not supported");const{SOPInstanceUID:g,SeriesInstanceUID:h,StudyInstanceUID:I}=(0,P.A)(p,n,a);let S;S=g?t.getDisplaySetForSOPInstanceUID(g,h):t.getDisplaySetsForSeries(h);const{points:v,textBox:f}=l.handles,y=function(e,t){const{metadata:n,data:o}=e,{cachedStats:r}=o,{referencedImageId:i}=n;if(!Object.keys(r).length)return;const a=[];return Object.keys(r).forEach((e=>{const n=r[e];if(!i)throw new Error("Non-acquisition plane measurement mapping not supported");const{SOPInstanceUID:o,SeriesInstanceUID:s,frameNumber:l}=(0,P.A)(i),c=t.getDisplaySetForSOPInstanceUID(o,s,l),{SeriesNumber:d}=c,{angle:m}=n,p="°";a.push({SeriesInstanceUID:s,SOPInstanceUID:o,SeriesNumber:d,frameNumber:l,unit:p,angle:m})})),a}(i,t),w=function(e,t,n){if(!e||!e.length)return"";const o=[],{angle:r,unit:i,SeriesNumber:a,SOPInstanceUID:s,frameNumber:l}=e[0],d=t.images.find((e=>e.SOPInstanceUID===s));let m;d&&(m=d.InstanceNumber);const p=m?` I: ${m}`:"",u=t.isMultiFrame?` F: ${l}`:"";if(void 0===r)return o;const g=c.utils.roundNumber(r,2);return o.push(`${g} ${k(i)} (S: ${a}${p}${u})`),o}(y,S);return{uid:d,SOPInstanceUID:g,FrameOfReferenceUID:u,points:v,textBox:f,metadata:s,referenceSeriesUID:h,referenceStudyUID:I,frameNumber:y?.[0]?.frameNumber||1,toolName:s.toolName,displaySetInstanceUID:S.displaySetInstanceUID,label:l.label,displayText:w,data:l.cachedStats,type:o(m),getReport:()=>function(e,t,n,o){const r=[],i=[];r.push("AnnotationType"),i.push("Cornerstone:CobbAngle"),e.forEach((e=>{const{angle:t,unit:n}=e;r.push(`Angle (${n})`),i.push(t)})),n&&(r.push("FrameOfReferenceUID"),i.push(n));t&&(r.push("points"),i.push(t.map((e=>e.join(" "))).join(";")));return{columns:r,values:i}}(y,v,u)}}};const H=q,Y={toAnnotation:e=>{},toMeasurement:(e,t,n,o,r)=>{const{annotation:i,viewportId:a}=e,{metadata:s,data:l,annotationUID:d}=i;if(!s||!l)return console.warn("Length tool: Missing metadata or data"),null;const{toolName:m,referencedImageId:p,FrameOfReferenceUID:u}=s;if(!V.includes(m))throw new Error("Tool not supported");const{SOPInstanceUID:g,SeriesInstanceUID:h,StudyInstanceUID:I}=(0,P.A)(p,n,a);let S;S=g?t.getDisplaySetForSOPInstanceUID(g,h):t.getDisplaySetsForSeries(h);const{points:v,textBox:f}=l.handles,y=function(e,t){const{metadata:n,data:o}=e,{cachedStats:r}=o,{referencedImageId:i}=n;if(!Object.keys(r).length)return;const a=[];return Object.keys(r).forEach((e=>{const n=r[e];if(!i)throw new Error("Non-acquisition plane measurement mapping not supported");const{SOPInstanceUID:o,SeriesInstanceUID:s,frameNumber:l}=(0,P.A)(i),c=t.getDisplaySetForSOPInstanceUID(o,s,l),{SeriesNumber:d}=c,{angle:m}=n,p="°";a.push({SeriesInstanceUID:s,SOPInstanceUID:o,SeriesNumber:d,frameNumber:l,unit:p,angle:m})})),a}(i,t),w=function(e,t,n){if(!e||!e.length)return"";const o=[],{angle:r,unit:i,SeriesNumber:a,SOPInstanceUID:s,frameNumber:l}=e[0],d=t.images.find((e=>e.SOPInstanceUID===s));let m;d&&(m=d.InstanceNumber);const p=m?` I: ${m}`:"",u=t.isMultiFrame?` F: ${l}`:"";if(void 0===r)return o;const g=c.utils.roundNumber(r,2);return o.push(`${g} ${k(i)} (S: ${a}${p}${u})`),o}(y,S);return{uid:d,SOPInstanceUID:g,FrameOfReferenceUID:u,points:v,textBox:f,metadata:s,referenceSeriesUID:h,referenceStudyUID:I,frameNumber:y?.[0]?.frameNumber||1,toolName:s.toolName,displaySetInstanceUID:S.displaySetInstanceUID,label:l.label,displayText:w,data:l.cachedStats,type:o(m),getReport:()=>function(e,t,n,o){const r=[],i=[];r.push("AnnotationType"),i.push("Cornerstone:Angle"),e.forEach((e=>{const{angle:t,unit:n}=e;r.push(`Angle (${n})`),i.push(t)})),n&&(r.push("FrameOfReferenceUID"),i.push(n));t&&(r.push("points"),i.push(t.map((e=>e.join(" "))).join(";")));return{columns:r,values:i}}(y,v,u)}}};const Z=Y;function K(e,t,n){const{PlanarFreehandROI:o}=n.get("cornerstone.measurements"),{displayText:r}=o,{metadata:i,data:a}=e;if(!a.cachedStats||!a.cachedStats[`imageId:${i.referencedImageId}`])return[];const{SOPInstanceUID:s,frameNumber:l}=(0,P.A)(i.referencedImageId),d=[],m=t.images.find((e=>e.SOPInstanceUID===s));let p;m&&(p=m.InstanceNumber);const u=p?` I: ${p}`:"",g=t.isMultiFrame?` F: ${l}`:"",{SeriesNumber:h}=t;h&&d.push(`S: ${h}${u}${g}`);const I=a.cachedStats[`imageId:${i.referencedImageId}`],S=e=>Array.isArray(e)?e.map((e=>isNaN(e)?e:c.utils.roundNumber(e))):isNaN(e)?e:c.utils.roundNumber(e);return r.forEach((({displayName:e,value:t,type:n})=>{if("value"===n){const n=I[t],o=I[((e,t)=>e.find((({type:e,for:n})=>"unit"===e&&n.includes(t)))?.value)(r,t)]||"";d.push(((e,t,n)=>`${e}: ${Array.isArray(t)?S(t).join(", "):S(t)} ${n}`)(e,n,o))}})),d}const Q={toAnnotation:e=>{},toMeasurement:(e,t,n,o,r)=>{const{annotation:i}=e,{metadata:a,data:s,annotationUID:l}=i;if(!a||!s)return console.warn("PlanarFreehandROI tool: Missing metadata or data"),null;const{toolName:c,referencedImageId:d,FrameOfReferenceUID:m}=a;if(!V.includes(c))throw new Error(`Tool ${c} not supported`);const{SOPInstanceUID:p,SeriesInstanceUID:u,frameNumber:g,StudyInstanceUID:h}=(0,P.A)(d);let I;return I=p?t.getDisplaySetForSOPInstanceUID(p,u):t.getDisplaySetsForSeries(u),{uid:l,SOPInstanceUID:p,FrameOfReferenceUID:m,points:s.contour.polyline,textBox:s.handles.textBox,metadata:a,frameNumber:g,referenceSeriesUID:u,referenceStudyUID:h,toolName:a.toolName,displaySetInstanceUID:I.displaySetInstanceUID,label:s.label,displayText:K(i,I,r),data:s.cachedStats,type:o(c),getReport:()=>function(e,t){const{PlanarFreehandROI:n}=t.get("cornerstone.measurements"),{report:o}=n,r=[],i=[];r.push("AnnotationType"),i.push("Cornerstone:PlanarFreehandROI");const{metadata:a,data:s}=e,l=s.cachedStats[`imageId:${a.referencedImageId}`];o.forEach((({name:e,value:t})=>{r.push(e),l[t]?i.push(l[t]):i.push("not available")})),a.FrameOfReferenceUID&&(r.push("FrameOfReferenceUID"),i.push(a.FrameOfReferenceUID));s.contour.polyline&&(r.push("points"),i.push(s.contour.polyline.map((e=>e.join(" "))).join(";")));return{columns:r,values:i}}(i,r)}}},J={toAnnotation:e=>{},toMeasurement:(e,t,n,o,r)=>{const{annotation:i,viewportId:a}=e,{metadata:s,data:l,annotationUID:d}=i;if(!s||!l)return console.warn("Rectangle ROI tool: Missing metadata or data"),null;const{toolName:m,referencedImageId:p,FrameOfReferenceUID:u}=s;if(!V.includes(m))throw new Error("Tool not supported");const{SOPInstanceUID:g,SeriesInstanceUID:h,StudyInstanceUID:I}=(0,P.A)(p,n,a);let S;S=g?t.getDisplaySetForSOPInstanceUID(g,h):t.getDisplaySetsForSeries(h);const{points:v,textBox:f}=l.handles,y=function(e,t){const{metadata:n,data:o}=e,{cachedStats:r}=o,{referencedImageId:i}=n;if(!Object.keys(r).length)return[];const a=[];return Object.keys(r).forEach((e=>{const n=r[e];if(!i)throw new Error("Non-acquisition plane measurement mapping not supported");const{SOPInstanceUID:o,SeriesInstanceUID:s,frameNumber:l}=(0,P.A)(i),c=t.getDisplaySetForSOPInstanceUID(o,s,l),{SeriesNumber:d}=c,{mean:m,stdDev:p,max:u,area:g,Modality:h,modalityUnit:I,areaUnit:S}=n;a.push({SeriesInstanceUID:s,SOPInstanceUID:o,SeriesNumber:d,frameNumber:l,Modality:h,unit:I,mean:m,stdDev:p,max:u,area:g,areaUnit:S})})),a}(i,t),w=function(e,t,n){if(!e||!e.length)return"";const o=[],{area:r,SOPInstanceUID:i,frameNumber:a,areaUnit:s}=e[0],l=t.images.find((e=>e.SOPInstanceUID===i));let d;l&&(d=l.InstanceNumber);const m=d?` I: ${d}`:"",p=t.isMultiFrame?` F: ${a}`:"",u=c.utils.roundNumber(r||0,2);return o.push(`${u} ${k(s)}`),e.forEach((e=>{const{unit:t,max:n,SeriesNumber:r}=e;let i="";if(n){i=`Max: ${c.utils.roundNumber(n,2)} <small>${k(t)}</small> `}const a=`${i}(S:${r}${m}${p})`;o.includes(a)||o.push(a)})),o}(y,S);return{uid:d,SOPInstanceUID:g,FrameOfReferenceUID:u,points:v,textBox:f,metadata:s,referenceSeriesUID:h,referenceStudyUID:I,frameNumber:y[0]?.frameNumber||1,toolName:s.toolName,displaySetInstanceUID:S.displaySetInstanceUID,label:l.label,displayText:w,data:l.cachedStats,type:o(m),getReport:()=>function(e,t,n,o){const r=[],i=[];r.push("AnnotationType"),i.push("Cornerstone:RectangleROI"),e.forEach((e=>{const{mean:t,stdDev:n,max:o,area:a,unit:s,areaUnit:l}=e;t&&s&&o&&a&&(r.push("Maximum","Mean","Std Dev","Pixel Unit","Area","Unit"),i.push(o,t,n,s,a,l))})),n&&(r.push("FrameOfReferenceUID"),i.push(n));t&&(r.push("points"),i.push(t.map((e=>e.join(" "))).join(";")));return{columns:r,values:i}}(y,v,u)}}};const X=J;function ee(e,t,n){const{SplineROI:o}=n.get("cornerstone.measurements"),{displayText:r}=o,{metadata:i,data:a}=e;if(!a.cachedStats||!a.cachedStats[`imageId:${i.referencedImageId}`])return[];const{SOPInstanceUID:s,frameNumber:l}=(0,P.A)(i.referencedImageId),d=[],m=t.images.find((e=>e.SOPInstanceUID===s));let p;m&&(p=m.InstanceNumber);const u=p?` I: ${p}`:"",g=t.isMultiFrame?` F: ${l}`:"",{SeriesNumber:h}=t;h&&d.push(`S: ${h}${u}${g}`);const I=a.cachedStats[`imageId:${i.referencedImageId}`],S=e=>Array.isArray(e)?e.map((e=>isNaN(e)?e:c.utils.roundNumber(e))):isNaN(e)?e:c.utils.roundNumber(e);return r.forEach((({displayName:e,value:t,type:n})=>{if("value"===n){const n=I[t],o=I[((e,t)=>e.find((({type:e,for:n})=>"unit"===e&&n.includes(t)))?.value)(r,t)]||"";d.push(((e,t,n)=>`${e}: ${Array.isArray(t)?S(t).join(", "):S(t)} ${n}`)(e,n,o))}})),d}const te={toAnnotation:e=>{},toMeasurement:(e,t,n,o,r)=>{const{annotation:i}=e,{metadata:a,data:s,annotationUID:l}=i;if(!a||!s)return console.warn("SplineROI tool: Missing metadata or data"),null;const{toolName:c,referencedImageId:d,FrameOfReferenceUID:m}=a;if(!V.includes(c))throw new Error(`Tool ${c} not supported`);const{SOPInstanceUID:p,SeriesInstanceUID:u,frameNumber:g,StudyInstanceUID:h}=(0,P.A)(d);let I;return I=p?t.getDisplaySetForSOPInstanceUID(p,u):t.getDisplaySetsForSeries(u),{uid:l,SOPInstanceUID:p,FrameOfReferenceUID:m,points:s.contour.polyline,textBox:s.handles.textBox,metadata:a,frameNumber:g,referenceSeriesUID:u,referenceStudyUID:h,toolName:a.toolName,displaySetInstanceUID:I.displaySetInstanceUID,label:s.label,displayText:ee(i,I,r),data:s.cachedStats,type:o(c),getReport:()=>function(e,t){const{SplineROI:n}=t.get("cornerstone.measurements"),{report:o}=n,r=[],i=[];r.push("AnnotationType"),i.push("Cornerstone:SplineROI");const{metadata:a,data:s}=e,l=s.cachedStats[`imageId:${a.referencedImageId}`];o.forEach((({name:e,value:t})=>{r.push(e),l[t]?i.push(l[t]):i.push("not available")})),a.FrameOfReferenceUID&&(r.push("FrameOfReferenceUID"),i.push(a.FrameOfReferenceUID));s.contour.polyline&&(r.push("points"),i.push(s.contour.polyline.map((e=>e.join(" "))).join(";")));return{columns:r,values:i}}(i,r)}}};function ne(e,t,n){const{metadata:o,data:r}=e;if(!r.cachedStats||!r.cachedStats[`imageId:${o.referencedImageId}`])return[];const{area:i,areaUnit:a}=r.cachedStats[`imageId:${o.referencedImageId}`],{SOPInstanceUID:s,frameNumber:l}=(0,P.A)(o.referencedImageId),d=[],m=t.images.find((e=>e.SOPInstanceUID===s));let p;m&&(p=m.InstanceNumber);const u=p?` I: ${p}`:"",g=t.isMultiFrame?` F: ${l}`:"",{SeriesNumber:h}=t;if(h&&d.push(`S: ${h}${u}${g}`),i){const e=c.utils.roundNumber(i||0,2);d.push(`${e} ${k(a)}`)}return d}const oe={toAnnotation:e=>{},toMeasurement:(e,t,n,o,r)=>{const{annotation:i}=e,{metadata:a,data:s,annotationUID:l}=i;if(!a||!s)return console.warn("Livewire tool: Missing metadata or data"),null;const{toolName:c,referencedImageId:d,FrameOfReferenceUID:m}=a;if(!V.includes(c))throw new Error(`Tool ${c} not supported`);const{SOPInstanceUID:p,SeriesInstanceUID:u,frameNumber:g,StudyInstanceUID:h}=(0,P.A)(d);let I;return I=p?t.getDisplaySetForSOPInstanceUID(p,u):t.getDisplaySetsForSeries(u),{uid:l,SOPInstanceUID:p,FrameOfReferenceUID:m,points:s.contour.polyline,textBox:s.handles.textBox,metadata:a,frameNumber:g,referenceSeriesUID:u,referenceStudyUID:h,toolName:a.toolName,displaySetInstanceUID:I.displaySetInstanceUID,label:s.label,displayText:ne(i,I,r),data:s.cachedStats,type:o(c),getReport:()=>function(e,t){const n=[],o=[];n.push("AnnotationType"),o.push("Cornerstone:Livewire");const{metadata:r,data:i}=e;r.FrameOfReferenceUID&&(n.push("FrameOfReferenceUID"),o.push(r.FrameOfReferenceUID));i.contour.polyline&&(n.push("points"),o.push(i.contour.polyline.map((e=>e.join(" "))).join(";")));return{columns:n,values:o}}(i)}}};const re={toAnnotation:e=>{},toMeasurement:(e,t,n,o,r)=>{const{annotation:i,viewportId:a}=e,{metadata:s,data:l,annotationUID:d}=i;if(!s||!l)return console.warn("Length tool: Missing metadata or data"),null;const{toolName:m,referencedImageId:p,FrameOfReferenceUID:u}=s;if(!V.includes(m))throw new Error("Tool not supported");const{SOPInstanceUID:g,SeriesInstanceUID:h,StudyInstanceUID:I}=(0,P.A)(p);let S;S=g?t.getDisplaySetForSOPInstanceUID(g,h):t.getDisplaySetsForSeries(h);const{points:v}=l.handles,f=function(e,t){const{metadata:n,data:o}=e,{cachedStats:r}=o,{referencedImageId:i}=n;if(!Object.keys(r).length)return;const a=[];return Object.keys(r).forEach((e=>{const n=r[e];if(!i)throw new Error("Non-acquisition plane measurement mapping not supported");const{SOPInstanceUID:o,SeriesInstanceUID:s,frameNumber:l}=(0,P.A)(i),c=t.getDisplaySetForSOPInstanceUID(o,s,l),{SeriesNumber:d}=c,{value:m}=n,p="HU";a.push({SeriesInstanceUID:s,SOPInstanceUID:o,SeriesNumber:d,frameNumber:l,unit:p,value:m})})),a}(i,t),y=function(e,t,n){if(!e||!e.length)return"";const o=[],{value:r,unit:i,SeriesNumber:a,SOPInstanceUID:s,frameNumber:l}=e[0],d=t.images.find((e=>e.SOPInstanceUID===s));let m;d&&(m=d.InstanceNumber);const p=m?` I: ${m}`:"",u=t.isMultiFrame?` F: ${l}`:"";if(void 0===r)return o;const g=c.utils.roundNumber(r,2);return o.push(`${g} ${k(i)} (S: ${a}${p}${u})`),o}(f,S);return{uid:d,SOPInstanceUID:g,FrameOfReferenceUID:u,points:v,metadata:s,referenceSeriesUID:h,referenceStudyUID:I,frameNumber:f?.[0]?.frameNumber||1,toolName:s.toolName,displaySetInstanceUID:S.displaySetInstanceUID,label:l.label,displayText:y,data:l.cachedStats,type:o(m),getReport:()=>function(e,t,n,o){const r=[],i=[];r.push("AnnotationType"),i.push("Cornerstone:Probe"),e.forEach((e=>{const{value:t,unit:n}=e;r.push(`Probe (${n})`),i.push(t)})),n&&(r.push("FrameOfReferenceUID"),i.push(n));t&&(r.push("points"),i.push(t.map((e=>e.join(" "))).join(";")));return{columns:r,values:i}}(f,v,u)}}};const ie={toAnnotation:e=>{},toMeasurement:(e,t,n,o,r)=>{const{annotation:i,viewportId:a}=e,{metadata:s,data:l,annotationUID:d}=i;if(!s||!l)return console.warn("Length tool: Missing metadata or data"),null;const{toolName:m,referencedImageId:p,FrameOfReferenceUID:u}=s;if(!V.includes(m))throw new Error("Tool not supported");const{SOPInstanceUID:g,SeriesInstanceUID:h,StudyInstanceUID:I}=(0,P.A)(p);let S;S=g?t.getDisplaySetForSOPInstanceUID(g,h):t.getDisplaySetsForSeries(h);const{points:v}=l.handles,f=function(e,t){const{metadata:n,data:o}=e,{cachedStats:r}=o,{referencedImageId:i}=n;if(!Object.keys(r).length)return;const a=[];return Object.keys(r).forEach((e=>{const n=r[e];if(!i)throw new Error("Non-acquisition plane measurement mapping not supported");const{SOPInstanceUID:o,SeriesInstanceUID:s,frameNumber:l}=(0,P.A)(i),c=t.getDisplaySetForSOPInstanceUID(o,s,l),{SeriesNumber:d}=c,{xValues:m,yValues:p,units:u,isUnitless:g,isHorizontal:h}=n;a.push({SeriesInstanceUID:s,SOPInstanceUID:o,SeriesNumber:d,frameNumber:l,xValues:m,yValues:p,units:u,isUnitless:g,isHorizontal:h})})),a}(i,t),y=function(e,t,n){if(!e||!e.length)return"";const o=[],{xValues:r,yValues:i,units:a,isUnitless:s,SeriesNumber:l,SOPInstanceUID:d,frameNumber:m}=e[0],p=t.images.find((e=>e.SOPInstanceUID===d));let u;p&&(u=p.InstanceNumber);const g=u?` I: ${u}`:"",h=t.isMultiFrame?` F: ${m}`:"",I=`(S: ${l}${g}${h})`;if(void 0===r||void 0===i)return o;if(s)o.push(`${c.utils.roundNumber(r[0],2)} ${a[0]} ${I}`);else{const e=Math.abs(r[1]-r[0]),t=Math.abs(i[1]-i[0]);o.push(`${c.utils.roundNumber(e)} ${a[0]} ${I}`),o.push(`${c.utils.roundNumber(t)} ${a[1]} ${I}`)}return o}(f,S);return{uid:d,SOPInstanceUID:g,FrameOfReferenceUID:u,points:v,metadata:s,referenceSeriesUID:h,referenceStudyUID:I,frameNumber:f?.[0]?.frameNumber||1,toolName:s.toolName,displaySetInstanceUID:S.displaySetInstanceUID,label:l.label,displayText:y,data:l.cachedStats,type:o(m),getReport:()=>function(e,t,n,o){const r=[],i=[];r.push("AnnotationType"),i.push("Cornerstone:UltrasoundDirectional"),e.forEach((e=>{const{xValues:t,yValues:n,units:o,isUnitless:a}=e;if(a)r.push("Length"+o[0]),i.push(c.utils.roundNumber(t[0],2));else{const e=Math.abs(t[1]-t[0]),a=Math.abs(n[1]-n[0]);r.push("Time"+o[0]),i.push(c.utils.roundNumber(e,2)),r.push("Length"+o[1]),i.push(c.utils.roundNumber(a,2))}})),n&&(r.push("FrameOfReferenceUID"),i.push(n));t&&(r.push("points"),i.push(t.map((e=>e.join(" "))).join(";")));return{columns:r,values:i}}(f,v,u)}}},ae=(e,t,n,o)=>{const r=e=>{const{POLYLINE:t,ELLIPSE:n,CIRCLE:o,RECTANGLE:r,BIDIRECTIONAL:i,POINT:a,ANGLE:s}=c.MeasurementService.VALUE_TYPES;return{Length:t,EllipticalROI:n,CircleROI:o,RectangleROI:r,PlanarFreehandROI:t,Bidirectional:i,ArrowAnnotate:a,CobbAngle:s,Angle:s,SplineROI:t,LivewireContour:t,Probe:a,UltrasoundDirectional:t}[e]};return{Length:{toAnnotation:_.toAnnotation,toMeasurement:e=>_.toMeasurement(e,t,n,r,o),matchingCriteria:[{valueType:c.MeasurementService.VALUE_TYPES.POLYLINE,points:2}]},Bidirectional:{toAnnotation:$.toAnnotation,toMeasurement:e=>$.toMeasurement(e,t,n,r,o),matchingCriteria:[{valueType:c.MeasurementService.VALUE_TYPES.POLYLINE,points:2},{valueType:c.MeasurementService.VALUE_TYPES.POLYLINE,points:2}]},EllipticalROI:{toAnnotation:B.toAnnotation,toMeasurement:e=>B.toMeasurement(e,t,n,r,o),matchingCriteria:[{valueType:c.MeasurementService.VALUE_TYPES.ELLIPSE}]},CircleROI:{toAnnotation:j.toAnnotation,toMeasurement:e=>j.toMeasurement(e,t,n,r,o),matchingCriteria:[{valueType:c.MeasurementService.VALUE_TYPES.CIRCLE}]},RectangleROI:{toAnnotation:X.toAnnotation,toMeasurement:e=>X.toMeasurement(e,t,n,r,o),matchingCriteria:[{valueType:c.MeasurementService.VALUE_TYPES.POLYLINE}]},PlanarFreehandROI:{toAnnotation:Q.toAnnotation,toMeasurement:e=>Q.toMeasurement(e,t,n,r,o),matchingCriteria:[{valueType:c.MeasurementService.VALUE_TYPES.POLYLINE}]},SplineROI:{toAnnotation:te.toAnnotation,toMeasurement:e=>te.toMeasurement(e,t,n,r,o),matchingCriteria:[{valueType:c.MeasurementService.VALUE_TYPES.POLYLINE}]},LivewireContour:{toAnnotation:oe.toAnnotation,toMeasurement:e=>oe.toMeasurement(e,t,n,r,o),matchingCriteria:[{valueType:c.MeasurementService.VALUE_TYPES.POLYLINE}]},ArrowAnnotate:{toAnnotation:W.toAnnotation,toMeasurement:e=>W.toMeasurement(e,t,n,r,o),matchingCriteria:[{valueType:c.MeasurementService.VALUE_TYPES.POINT,points:1}]},Probe:{toAnnotation:re.toAnnotation,toMeasurement:e=>re.toMeasurement(e,t,n,r,o),matchingCriteria:[{valueType:c.MeasurementService.VALUE_TYPES.POINT,points:1}]},CobbAngle:{toAnnotation:H.toAnnotation,toMeasurement:e=>H.toMeasurement(e,t,n,r,o),matchingCriteria:[{valueType:c.MeasurementService.VALUE_TYPES.ANGLE}]},Angle:{toAnnotation:Z.toAnnotation,toMeasurement:e=>Z.toMeasurement(e,t,n,r,o),matchingCriteria:[{valueType:c.MeasurementService.VALUE_TYPES.ANGLE}]},UltrasoundDirectional:{toAnnotation:ie.toAnnotation,toMeasurement:e=>ie.toMeasurement(e,t,n,r,o),matchingCriteria:[{valueType:c.MeasurementService.VALUE_TYPES.POLYLINE,points:2}]}}},{removeAnnotation:se}=s.annotation.state,le=s.Enums.Events,ce="Cornerstone3DTools",de=e=>{const{measurementService:t,displaySetService:n,cornerstoneViewportService:o,customizationService:r}=e.services,i=((e,t,n,o)=>{const{Length:r,Bidirectional:i,EllipticalROI:a,CircleROI:s,ArrowAnnotate:l,Angle:c,CobbAngle:d,RectangleROI:m,PlanarFreehandROI:p,SplineROI:u,LivewireContour:g,Probe:h,UltrasoundDirectional:I}=ae(e,t,n,o),S=e.createSource(ce,"0.1");return e.addMapping(S,"Length",r.matchingCriteria,r.toAnnotation,r.toMeasurement),e.addMapping(S,"Crosshairs",r.matchingCriteria,(()=>(console.warn("Crosshairs mapping not implemented."),{})),(()=>(console.warn("Crosshairs mapping not implemented."),{}))),e.addMapping(S,"Bidirectional",i.matchingCriteria,i.toAnnotation,i.toMeasurement),e.addMapping(S,"EllipticalROI",a.matchingCriteria,a.toAnnotation,a.toMeasurement),e.addMapping(S,"CircleROI",s.matchingCriteria,s.toAnnotation,s.toMeasurement),e.addMapping(S,"ArrowAnnotate",l.matchingCriteria,l.toAnnotation,l.toMeasurement),e.addMapping(S,"CobbAngle",d.matchingCriteria,d.toAnnotation,d.toMeasurement),e.addMapping(S,"Angle",c.matchingCriteria,c.toAnnotation,c.toMeasurement),e.addMapping(S,"RectangleROI",m.matchingCriteria,m.toAnnotation,m.toMeasurement),e.addMapping(S,"PlanarFreehandROI",p.matchingCriteria,p.toAnnotation,p.toMeasurement),e.addMapping(S,"SplineROI",u.matchingCriteria,u.toAnnotation,u.toMeasurement),e.addMapping(S,"CalibrationLine",r.matchingCriteria,r.toAnnotation,r.toMeasurement),e.addMapping(S,"LivewireContour",g.matchingCriteria,g.toAnnotation,g.toMeasurement),e.addMapping(S,"Probe",h.matchingCriteria,h.toAnnotation,h.toMeasurement),e.addMapping(S,"UltrasoundDirectionalTool",I.matchingCriteria,I.toAnnotation,I.toMeasurement),S})(t,n,o,r);me(t,o,i);const{annotationToMeasurement:s,remove:l}=i;function c(t){try{const n=t.detail,{annotation:{metadata:r,annotationUID:i}}=n,{toolName:a}=r;t.type===p&&a===R.CalibrationLine?b(e,t).then((()=>{console.log("calibration applied")}),(()=>!0)).finally((()=>{se(i),d(t),o.resize()})):(n.uid=i,s(a,n))}catch(e){console.warn("Failed to update measurement:",e)}}function d(e){try{try{const n=e.detail,{annotation:{annotationUID:o}}=n;t.getMeasurement(o)&&(console.log("~~ removeEvt",e),l(o,n))}catch(e){console.warn("Failed to update measurement:",e)}}catch(e){console.warn("Failed to remove measurement:",e)}}const m=le.ANNOTATION_ADDED,p=le.ANNOTATION_COMPLETED,u=le.ANNOTATION_MODIFIED,g=le.ANNOTATION_REMOVED,h=le.ANNOTATION_SELECTION_CHANGE;return a.eventTarget.addEventListener(m,c),a.eventTarget.addEventListener(p,c),a.eventTarget.addEventListener(u,(function(e){try{const n=e.detail,{annotation:{metadata:o,annotationUID:r}}=n;if(!t.getMeasurement(r))return;const{toolName:i}=o;n.uid=r,s(i,n,!0)}catch(e){console.warn("Failed to update measurement:",e)}})),a.eventTarget.addEventListener(g,d),a.eventTarget.addEventListener(h,(function(e){try{const n=e.detail,{added:o,removed:r}=n;r&&r.forEach((e=>t.setMeasurementSelected(e,!1))),o&&o.forEach((e=>t.setMeasurementSelected(e,!0)))}catch(e){console.warn("Failed to select and unselect measurements:",e)}})),i},me=(e,t,n)=>{const{MEASUREMENT_REMOVED:o,MEASUREMENTS_CLEARED:r,MEASUREMENT_UPDATED:i,RAW_MEASUREMENT_ADDED:a}=e.EVENTS;e.getSource(ce,"0.1");e.subscribe(r,(({measurements:e})=>{if(Object.keys(e).length)for(const t of Object.values(e)){const{uid:e,source:n}=t;n.name===ce&&se(e)}})),e.subscribe(i,(({source:e,measurement:t,notYetUpdatedAtSource:n})=>{if(e.name!==ce)return;if(!1===n)return;const{uid:o,label:r}=t,i=s.annotation.state.getAnnotation(o),{data:a,metadata:l}=i;a&&(a.label!==r&&(a.label=r),"ArrowAnnotate"===l.toolName&&(a.text=r))})),e.subscribe(a,(({source:e,measurement:t,data:n,dataSource:o})=>{if(e.name!==ce)return;const{referenceSeriesUID:r,referenceStudyUID:i,SOPInstanceUID:a}=t,l=c.DicomMetadataStore.getInstance(i,r,a);let d,m=1;t?.metadata?.referencedImageId?(d=t.metadata.referencedImageId,m=(0,P.A)(t.metadata.referencedImageId).frameNumber):d=o.getImageIdsForInstance({instance:l});s.annotation.state.getAnnotationManager().addAnnotation({annotationUID:t.uid,highlighted:!1,isLocked:!1,invalidated:!1,metadata:{toolName:t.toolName,FrameOfReferenceUID:t.FrameOfReferenceUID,referencedImageId:d},data:{...n.annotation.data||{},text:n.annotation.data.text,handles:{...n.annotation.data.handles},cachedStats:{...n.annotation.data.cachedStats},label:n.annotation.data.label,frameNumber:m}})})),e.subscribe(o,(({source:e,measurement:n})=>{if(e?.name&&e.name!==ce)return;se(n);t.getRenderingEngine().render()}))};function pe(e){const t=function(e){return e?e.getActors().map((e=>a.cache.getVolume(e.uid))):[]}(e);return t.find((e=>e.isDynamicVolume()))??t[0]}const ue=function(e){const{cineService:t}=e.services;t.setServiceImplementation({getSyncedViewports:t=>function(e,t){const{viewportGridService:n,cornerstoneViewportService:o}=e.services,{viewports:r}=n.getState(),i=r.get(t);if("volume"!==i?.viewportOptions?.viewportType)return[];const a=o.getCornerstoneViewport(t),s=a?pe(a):null;if(!s?.isDynamicVolume())return[];const{volumeId:l}=s;return Array.from(r.values()).filter((({viewportId:e})=>{const n=o.getCornerstoneViewport(e);return e!==t&&n?.hasVolumeId(l)})).map((({viewportId:e})=>({viewportId:e})))}(e,t),playClip:(e,t)=>s.utilities.cine.playClip(e,t),stopClip:(e,t)=>s.utilities.cine.stopClip(e,t)})};var ge=n(5517);const he=new Map,Ie=new Map;function Se({data:{viewportId:e,volumeInputArray:t},displaySetsMatchDetails:n,viewportMatchDetails:o}){Ie.set(e,t);for(const e of t){const{volumeId:t}=e,n=a.cache.getVolume(t);if(!n)return;if(!he.has(t)){const{metadata:e}=n;he.set(t,e.SeriesInstanceUID)}}const r=new Set;Ie.forEach(((e,t)=>{e.forEach((e=>{const{volumeId:t}=e;r.add(t)}))}));const i=new Set;if(o.forEach((e=>{const{displaySetsInfo:t}=e;t.forEach((({displaySetInstanceUID:e})=>{i.add(e)}))})),r.size!==i.size)return;const s=Array.from(he.keys()).slice().map((e=>a.cache.getVolume(e))),l=[];s.forEach((e=>{const t=e.getImageLoadRequests();if(!t.length||!t[0]||!t[0].imageId)return;const n=function(e){const t=e.length-1,n=Math.floor(e.length/2);let o=n,r=n;const i=[{imageId:e[n],imageIdIndex:n}],a={currentPositionDownToMinimum:!1,currentPositionUpToMaximum:!1};for(0===n?a.currentPositionDownToMinimum=!0:n===t&&(a.currentPositionUpToMaximum=!0);!a.currentPositionDownToMinimum||!a.currentPositionUpToMaximum;)a.currentPositionDownToMinimum||(o--,i.push({imageId:e[o],imageIdIndex:o}),0===o&&(a.currentPositionDownToMinimum=!0)),a.currentPositionUpToMaximum||(r++,i.push({imageId:e[r],imageIdIndex:r}),r===t&&(a.currentPositionUpToMaximum=!0));return i}(t.map((e=>e.imageId))).map((({imageId:e})=>t.find((t=>t.imageId===e))));l.push(n)}));const c=(0,ge.compact)((0,ge.flatten)((0,ge.zip)(...l))),d=[];c.forEach((e=>{const{imageId:t}=e;l.forEach((e=>{const n=e.find((e=>e.imageId===t));n&&d.push(n)}))}));const m=a.Enums.RequestType.Prefetch;d.forEach((({callLoadImage:e,additionalDetails:t,imageId:n,imageIdIndex:o,options:r})=>{const i=e.bind(null,n,o,r);a.imageLoadPoolManager.addRequest(i,m,t,0)})),he.clear();const p=new Map(Ie);return Ie.clear(),p}const ve=new Map,fe=new Map;function ye({data:{viewportId:e,volumeInputArray:t},displaySetsMatchDetails:n}){fe.set(e,t);for(const e of t){const{volumeId:t}=e,n=a.cache.getVolume(t);if(!n)return void console.log("interleaveNthLoader::No volume, can't load it");if(!ve.has(t)){const{metadata:e}=n;ve.set(t,e.SeriesInstanceUID)}}const o=function(e){if(!e||!e.length)return[];if(1===e.length)return e[0];console.time("interleave");const t=[...e],n=[];for(let e=0;t.length>0;e++)for(const o of t)e>=o.length?t.splice(t.indexOf(o),1):n.push(o[e]);return console.timeEnd("interleave"),n}(Array.from(ve.keys()).slice().map((e=>a.cache.getVolume(e))).map((e=>e.getImageLoadRequests())).filter((e=>e?.[0]?.imageId)).map((e=>function(e){const t=[[],[],[],[],[]],n=e.length/2-3,o=n+6;for(let r=0;r<e.length;r++)r<2||r>e.length-4||r>n&&r<o?t[0].push(e[r]):r%7==2?t[1].push(e[r]):r%7==5?t[2].push(e[r]):t[r%2+3].push(e[r]);return[...t[0],...t[1],...t[2],...t[3],...t[4]]}(e)))),r=a.Enums.RequestType.Prefetch;o.forEach((({callLoadImage:e,additionalDetails:t,imageId:n,imageIdIndex:o,options:i})=>{const s=e.bind(null,n,o,i);a.imageLoadPoolManager.addRequest(s,r,t,0)})),ve.clear();const i=new Map(fe);return fe.clear(),i}const we=new Map,Te=new Map;function Ee({data:{viewportId:e,volumeInputArray:t},displaySetsMatchDetails:n,viewportMatchDetails:o}){Te.set(e,t);for(const e of t){const{volumeId:t}=e,n=a.cache.getVolume(t);if(!n)return;if(!we.has(t)){const{metadata:e}=n;we.set(t,e.SeriesInstanceUID)}}const r=[],i=new Set;Array.from(o.values()).forEach((e=>{const{displaySetsInfo:t}=e;let n=0;t.forEach((({displaySetInstanceUID:e,displaySetOptions:t})=>{t?.options?.skipLoading||(n++,i.add(e))})),n&&r.push(e)}));const s=new Set;Te.forEach(((e,t)=>{e.forEach((e=>{const{volumeId:t}=e;s.add(t)}))}));const l=new Set;if(o.forEach((e=>{const{displaySetsInfo:t}=e;t.forEach((({displaySetInstanceUID:e})=>{l.add(e)}))})),s.size!==l.size)return;const c=Array.from(we.keys()).slice().map((e=>a.cache.getVolume(e))),d=[];c.forEach((e=>{const t=e.getImageLoadRequests();t.length&&t[0]&&t[0].imageId&&d.push(t.reverse())}));const m=(0,ge.compact)((0,ge.flatten)((0,ge.zip)(...d))),p=[];m.forEach((e=>{const{imageId:t}=e;d.forEach((e=>{const n=e.find((e=>e.imageId===t));n&&p.push(n)}))}));const u=a.Enums.RequestType.Prefetch;p.forEach((({callLoadImage:e,additionalDetails:t,imageId:n,imageIdIndex:o,options:r})=>{const i=e.bind(null,n,o,r);a.imageLoadPoolManager.addRequest(i,u,t,0)})),we.clear();const g=new Map(Te);return Te.clear(),g}const De=(e,t)=>{if(!t?.detail)return;const{element:n,currentPoints:o}=t.detail;return e.runCommand("getNearbyAnnotation",{element:n,canvasCoordinates:o?.canvas},"CORNERSTONE")},be=s.Enums.Events,Oe={button1:{commands:[{commandName:"closeContextMenu"}]},button3:{commands:[{commandName:"showCornerstoneContextMenu",commandOptions:{requireNearbyToolData:!0,menuId:"measurementsContextMenu"}}]}};const Ne=function({cornerstoneViewportService:e,customizationService:t,commandsManager:n}){const o=e=>{const o=function(e){const t=e.detail.event.which,n=[];return e.detail.event.altKey&&n.push("alt"),e.detail.event.ctrlKey&&n.push("ctrl"),e.detail.event.shiftKey&&n.push("shift"),n.push("button"),n.push(t),n.join("")}(e);((e,o)=>{const r=(t.get("cornerstoneViewportClickCommands")||Oe)[e];if(!r)return;let i=null;r.commands.some((e=>e.commandOptions?.requireNearbyToolData))&&(i=De(n,o));const a={nearbyToolData:i,event:o};n.run(r,a)})(o,e)};a.eventTarget.addEventListener(a.EVENTS.ELEMENT_ENABLED,function(t){const{viewportId:n,element:r}=t.detail;e.getViewportInfo(n)&&((0,y.ye)(n,r),r.addEventListener(be.MOUSE_CLICK,o))}.bind(null)),a.eventTarget.addEventListener(a.EVENTS.ELEMENT_DISABLED,function(e){const{element:t}=e.detail;t.removeEventListener(be.MOUSE_CLICK,o)}.bind(null))},Ae=s.Enums.Events,Ce={doubleClick:{commandName:"toggleOneUp",commandOptions:{}}};const Me=function({customizationService:e,commandsManager:t}){const n=n=>{if(De(t,n))return;const o=function(e){const t=[];return e.detail.event.altKey&&t.push("alt"),e.detail.event.ctrlKey&&t.push("ctrl"),e.detail.event.shiftKey&&t.push("shift"),t.push("doubleClick"),t.join("")}(n),r=(e.get("cornerstoneViewportClickCommands")||Ce)[o];r&&t.run(r)};a.eventTarget.addEventListener(a.EVENTS.ELEMENT_ENABLED,function(e){const{element:t}=e.detail;t.addEventListener(Ae.MOUSE_DOUBLE_CLICK,n)}.bind(null)),a.eventTarget.addEventListener(a.EVENTS.ELEMENT_DISABLED,function(e){const{element:t}=e.detail;t.removeEventListener(Ae.MOUSE_DOUBLE_CLICK,n)}.bind(null))},Ue=[],Re={viewportsWaiting:0};function Ve(e){if("preRender"===e.detail.viewportStatus)return;const{TimingEnum:t}=c.Enums;c.Rm.timeEnd(t.DISPLAY_SETS_TO_FIRST_IMAGE),c.Rm.timeEnd(t.STUDY_TO_FIRST_IMAGE),c.Rm.timeEnd(t.SCRIPT_TO_VIEW),Re.viewportsWaiting-=1,e.detail.element.removeEventListener(a.EVENTS.IMAGE_RENDERED,Ve),Re.viewportsWaiting||c.Rm.timeEnd(t.DISPLAY_SETS_TO_ALL_IMAGES)}const Pe=[{ColorSpace:"RGB",Name:"Grayscale",name:"Grayscale",NanColor:[1,0,0],RGBPoints:[0,0,0,0,1,1,1,1],description:"Grayscale"},{ColorSpace:"RGB",Name:"X Ray",name:"X Ray",NanColor:[1,0,0],RGBPoints:[0,1,1,1,1,0,0,0],description:"X Ray"},{ColorSpace:"RGB",Name:"hsv",name:"hsv",RGBPoints:[-1,1,0,0,-.666666,1,0,1,-.333333,0,0,1,0,0,1,1,.33333,0,1,0,.66666,1,1,0,1,1,0,0],description:"HSV"},{ColorSpace:"RGB",Name:"hot_iron",name:"hot_iron",RGBPoints:[0,.0039215686,.0039215686,.0156862745,.00392156862745098,.0039215686,.0039215686,.0156862745,.00784313725490196,.0039215686,.0039215686,.031372549,.011764705882352941,.0039215686,.0039215686,.0470588235,.01568627450980392,.0039215686,.0039215686,.062745098,.0196078431372549,.0039215686,.0039215686,.0784313725,.023529411764705882,.0039215686,.0039215686,.0941176471,.027450980392156862,.0039215686,.0039215686,.1098039216,.03137254901960784,.0039215686,.0039215686,.1254901961,.03529411764705882,.0039215686,.0039215686,.1411764706,.0392156862745098,.0039215686,.0039215686,.1568627451,.043137254901960784,.0039215686,.0039215686,.1725490196,.047058823529411764,.0039215686,.0039215686,.1882352941,.050980392156862744,.0039215686,.0039215686,.2039215686,.054901960784313725,.0039215686,.0039215686,.2196078431,.05882352941176471,.0039215686,.0039215686,.2352941176,.06274509803921569,.0039215686,.0039215686,.2509803922,.06666666666666667,.0039215686,.0039215686,.262745098,.07058823529411765,.0039215686,.0039215686,.2784313725,.07450980392156863,.0039215686,.0039215686,.2941176471,.0784313725490196,.0039215686,.0039215686,.3098039216,.08235294117647059,.0039215686,.0039215686,.3254901961,.08627450980392157,.0039215686,.0039215686,.3411764706,.09019607843137255,.0039215686,.0039215686,.3568627451,.09411764705882353,.0039215686,.0039215686,.3725490196,.09803921568627451,.0039215686,.0039215686,.3882352941,.10196078431372549,.0039215686,.0039215686,.4039215686,.10588235294117647,.0039215686,.0039215686,.4196078431,.10980392156862745,.0039215686,.0039215686,.4352941176,.11372549019607843,.0039215686,.0039215686,.4509803922,.11764705882352942,.0039215686,.0039215686,.4666666667,.12156862745098039,.0039215686,.0039215686,.4823529412,.12549019607843137,.0039215686,.0039215686,.4980392157,.12941176470588237,.0039215686,.0039215686,.5137254902,.13333333333333333,.0039215686,.0039215686,.5294117647,.13725490196078433,.0039215686,.0039215686,.5450980392,.1411764705882353,.0039215686,.0039215686,.5607843137,.1450980392156863,.0039215686,.0039215686,.5764705882,.14901960784313725,.0039215686,.0039215686,.5921568627,.15294117647058825,.0039215686,.0039215686,.6078431373,.1568627450980392,.0039215686,.0039215686,.6235294118,.1607843137254902,.0039215686,.0039215686,.6392156863,.16470588235294117,.0039215686,.0039215686,.6549019608,.16862745098039217,.0039215686,.0039215686,.6705882353,.17254901960784313,.0039215686,.0039215686,.6862745098,.17647058823529413,.0039215686,.0039215686,.7019607843,.1803921568627451,.0039215686,.0039215686,.7176470588,.1843137254901961,.0039215686,.0039215686,.7333333333,.18823529411764706,.0039215686,.0039215686,.7490196078,.19215686274509805,.0039215686,.0039215686,.7607843137,.19607843137254902,.0039215686,.0039215686,.7764705882,.2,.0039215686,.0039215686,.7921568627,.20392156862745098,.0039215686,.0039215686,.8078431373,.20784313725490197,.0039215686,.0039215686,.8235294118,.21176470588235294,.0039215686,.0039215686,.8392156863,.21568627450980393,.0039215686,.0039215686,.8549019608,.2196078431372549,.0039215686,.0039215686,.8705882353,.2235294117647059,.0039215686,.0039215686,.8862745098,.22745098039215686,.0039215686,.0039215686,.9019607843,.23137254901960785,.0039215686,.0039215686,.9176470588,.23529411764705885,.0039215686,.0039215686,.9333333333,.23921568627450984,.0039215686,.0039215686,.9490196078,.24313725490196078,.0039215686,.0039215686,.9647058824,.24705882352941178,.0039215686,.0039215686,.9803921569,.25098039215686274,.0039215686,.0039215686,.9960784314,.2549019607843137,.0039215686,.0039215686,.9960784314,.25882352941176473,.0156862745,.0039215686,.9803921569,.2627450980392157,.031372549,.0039215686,.9647058824,.26666666666666666,.0470588235,.0039215686,.9490196078,.27058823529411763,.062745098,.0039215686,.9333333333,.27450980392156865,.0784313725,.0039215686,.9176470588,.2784313725490196,.0941176471,.0039215686,.9019607843,.2823529411764706,.1098039216,.0039215686,.8862745098,.28627450980392155,.1254901961,.0039215686,.8705882353,.2901960784313726,.1411764706,.0039215686,.8549019608,.29411764705882354,.1568627451,.0039215686,.8392156863,.2980392156862745,.1725490196,.0039215686,.8235294118,.30196078431372547,.1882352941,.0039215686,.8078431373,.3058823529411765,.2039215686,.0039215686,.7921568627,.30980392156862746,.2196078431,.0039215686,.7764705882,.3137254901960784,.2352941176,.0039215686,.7607843137,.3176470588235294,.2509803922,.0039215686,.7490196078,.3215686274509804,.262745098,.0039215686,.7333333333,.3254901960784314,.2784313725,.0039215686,.7176470588,.32941176470588235,.2941176471,.0039215686,.7019607843,.3333333333333333,.3098039216,.0039215686,.6862745098,.33725490196078434,.3254901961,.0039215686,.6705882353,.3411764705882353,.3411764706,.0039215686,.6549019608,.34509803921568627,.3568627451,.0039215686,.6392156863,.34901960784313724,.3725490196,.0039215686,.6235294118,.35294117647058826,.3882352941,.0039215686,.6078431373,.3568627450980392,.4039215686,.0039215686,.5921568627,.3607843137254902,.4196078431,.0039215686,.5764705882,.36470588235294116,.4352941176,.0039215686,.5607843137,.3686274509803922,.4509803922,.0039215686,.5450980392,.37254901960784315,.4666666667,.0039215686,.5294117647,.3764705882352941,.4823529412,.0039215686,.5137254902,.3803921568627451,.4980392157,.0039215686,.4980392157,.3843137254901961,.5137254902,.0039215686,.4823529412,.38823529411764707,.5294117647,.0039215686,.4666666667,.39215686274509803,.5450980392,.0039215686,.4509803922,.396078431372549,.5607843137,.0039215686,.4352941176,.4,.5764705882,.0039215686,.4196078431,.403921568627451,.5921568627,.0039215686,.4039215686,.40784313725490196,.6078431373,.0039215686,.3882352941,.4117647058823529,.6235294118,.0039215686,.3725490196,.41568627450980394,.6392156863,.0039215686,.3568627451,.4196078431372549,.6549019608,.0039215686,.3411764706,.4235294117647059,.6705882353,.0039215686,.3254901961,.42745098039215684,.6862745098,.0039215686,.3098039216,.43137254901960786,.7019607843,.0039215686,.2941176471,.43529411764705883,.7176470588,.0039215686,.2784313725,.4392156862745098,.7333333333,.0039215686,.262745098,.44313725490196076,.7490196078,.0039215686,.2509803922,.4470588235294118,.7607843137,.0039215686,.2352941176,.45098039215686275,.7764705882,.0039215686,.2196078431,.4549019607843137,.7921568627,.0039215686,.2039215686,.4588235294117647,.8078431373,.0039215686,.1882352941,.4627450980392157,.8235294118,.0039215686,.1725490196,.4666666666666667,.8392156863,.0039215686,.1568627451,.4705882352941177,.8549019608,.0039215686,.1411764706,.4745098039215686,.8705882353,.0039215686,.1254901961,.4784313725490197,.8862745098,.0039215686,.1098039216,.48235294117647065,.9019607843,.0039215686,.0941176471,.48627450980392156,.9176470588,.0039215686,.0784313725,.49019607843137253,.9333333333,.0039215686,.062745098,.49411764705882355,.9490196078,.0039215686,.0470588235,.4980392156862745,.9647058824,.0039215686,.031372549,.5019607843137255,.9803921569,.0039215686,.0156862745,.5058823529411764,.9960784314,.0039215686,.0039215686,.5098039215686274,.9960784314,.0156862745,.0039215686,.5137254901960784,.9960784314,.031372549,.0039215686,.5176470588235295,.9960784314,.0470588235,.0039215686,.5215686274509804,.9960784314,.062745098,.0039215686,.5254901960784314,.9960784314,.0784313725,.0039215686,.5294117647058824,.9960784314,.0941176471,.0039215686,.5333333333333333,.9960784314,.1098039216,.0039215686,.5372549019607843,.9960784314,.1254901961,.0039215686,.5411764705882353,.9960784314,.1411764706,.0039215686,.5450980392156862,.9960784314,.1568627451,.0039215686,.5490196078431373,.9960784314,.1725490196,.0039215686,.5529411764705883,.9960784314,.1882352941,.0039215686,.5568627450980392,.9960784314,.2039215686,.0039215686,.5607843137254902,.9960784314,.2196078431,.0039215686,.5647058823529412,.9960784314,.2352941176,.0039215686,.5686274509803921,.9960784314,.2509803922,.0039215686,.5725490196078431,.9960784314,.262745098,.0039215686,.5764705882352941,.9960784314,.2784313725,.0039215686,.5803921568627451,.9960784314,.2941176471,.0039215686,.5843137254901961,.9960784314,.3098039216,.0039215686,.5882352941176471,.9960784314,.3254901961,.0039215686,.592156862745098,.9960784314,.3411764706,.0039215686,.596078431372549,.9960784314,.3568627451,.0039215686,.6,.9960784314,.3725490196,.0039215686,.6039215686274509,.9960784314,.3882352941,.0039215686,.6078431372549019,.9960784314,.4039215686,.0039215686,.611764705882353,.9960784314,.4196078431,.0039215686,.615686274509804,.9960784314,.4352941176,.0039215686,.6196078431372549,.9960784314,.4509803922,.0039215686,.6235294117647059,.9960784314,.4666666667,.0039215686,.6274509803921569,.9960784314,.4823529412,.0039215686,.6313725490196078,.9960784314,.4980392157,.0039215686,.6352941176470588,.9960784314,.5137254902,.0039215686,.6392156862745098,.9960784314,.5294117647,.0039215686,.6431372549019608,.9960784314,.5450980392,.0039215686,.6470588235294118,.9960784314,.5607843137,.0039215686,.6509803921568628,.9960784314,.5764705882,.0039215686,.6549019607843137,.9960784314,.5921568627,.0039215686,.6588235294117647,.9960784314,.6078431373,.0039215686,.6627450980392157,.9960784314,.6235294118,.0039215686,.6666666666666666,.9960784314,.6392156863,.0039215686,.6705882352941176,.9960784314,.6549019608,.0039215686,.6745098039215687,.9960784314,.6705882353,.0039215686,.6784313725490196,.9960784314,.6862745098,.0039215686,.6823529411764706,.9960784314,.7019607843,.0039215686,.6862745098039216,.9960784314,.7176470588,.0039215686,.6901960784313725,.9960784314,.7333333333,.0039215686,.6941176470588235,.9960784314,.7490196078,.0039215686,.6980392156862745,.9960784314,.7607843137,.0039215686,.7019607843137254,.9960784314,.7764705882,.0039215686,.7058823529411765,.9960784314,.7921568627,.0039215686,.7098039215686275,.9960784314,.8078431373,.0039215686,.7137254901960784,.9960784314,.8235294118,.0039215686,.7176470588235294,.9960784314,.8392156863,.0039215686,.7215686274509804,.9960784314,.8549019608,.0039215686,.7254901960784313,.9960784314,.8705882353,.0039215686,.7294117647058823,.9960784314,.8862745098,.0039215686,.7333333333333333,.9960784314,.9019607843,.0039215686,.7372549019607844,.9960784314,.9176470588,.0039215686,.7411764705882353,.9960784314,.9333333333,.0039215686,.7450980392156863,.9960784314,.9490196078,.0039215686,.7490196078431373,.9960784314,.9647058824,.0039215686,.7529411764705882,.9960784314,.9803921569,.0039215686,.7568627450980392,.9960784314,.9960784314,.0039215686,.7607843137254902,.9960784314,.9960784314,.0196078431,.7647058823529411,.9960784314,.9960784314,.0352941176,.7686274509803922,.9960784314,.9960784314,.0509803922,.7725490196078432,.9960784314,.9960784314,.0666666667,.7764705882352941,.9960784314,.9960784314,.0823529412,.7803921568627451,.9960784314,.9960784314,.0980392157,.7843137254901961,.9960784314,.9960784314,.1137254902,.788235294117647,.9960784314,.9960784314,.1294117647,.792156862745098,.9960784314,.9960784314,.1450980392,.796078431372549,.9960784314,.9960784314,.1607843137,.8,.9960784314,.9960784314,.1764705882,.803921568627451,.9960784314,.9960784314,.1921568627,.807843137254902,.9960784314,.9960784314,.2078431373,.8117647058823529,.9960784314,.9960784314,.2235294118,.8156862745098039,.9960784314,.9960784314,.2392156863,.8196078431372549,.9960784314,.9960784314,.2509803922,.8235294117647058,.9960784314,.9960784314,.2666666667,.8274509803921568,.9960784314,.9960784314,.2823529412,.8313725490196079,.9960784314,.9960784314,.2980392157,.8352941176470589,.9960784314,.9960784314,.3137254902,.8392156862745098,.9960784314,.9960784314,.3333333333,.8431372549019608,.9960784314,.9960784314,.3490196078,.8470588235294118,.9960784314,.9960784314,.3647058824,.8509803921568627,.9960784314,.9960784314,.3803921569,.8549019607843137,.9960784314,.9960784314,.3960784314,.8588235294117647,.9960784314,.9960784314,.4117647059,.8627450980392157,.9960784314,.9960784314,.4274509804,.8666666666666667,.9960784314,.9960784314,.4431372549,.8705882352941177,.9960784314,.9960784314,.4588235294,.8745098039215686,.9960784314,.9960784314,.4745098039,.8784313725490196,.9960784314,.9960784314,.4901960784,.8823529411764706,.9960784314,.9960784314,.5058823529,.8862745098039215,.9960784314,.9960784314,.5215686275,.8901960784313725,.9960784314,.9960784314,.537254902,.8941176470588236,.9960784314,.9960784314,.5529411765,.8980392156862745,.9960784314,.9960784314,.568627451,.9019607843137255,.9960784314,.9960784314,.5843137255,.9058823529411765,.9960784314,.9960784314,.6,.9098039215686274,.9960784314,.9960784314,.6156862745,.9137254901960784,.9960784314,.9960784314,.631372549,.9176470588235294,.9960784314,.9960784314,.6470588235,.9215686274509803,.9960784314,.9960784314,.6666666667,.9254901960784314,.9960784314,.9960784314,.6823529412,.9294117647058824,.9960784314,.9960784314,.6980392157,.9333333333333333,.9960784314,.9960784314,.7137254902,.9372549019607843,.9960784314,.9960784314,.7294117647,.9411764705882354,.9960784314,.9960784314,.7450980392,.9450980392156864,.9960784314,.9960784314,.7568627451,.9490196078431372,.9960784314,.9960784314,.7725490196,.9529411764705882,.9960784314,.9960784314,.7882352941,.9568627450980394,.9960784314,.9960784314,.8039215686,.9607843137254903,.9960784314,.9960784314,.8196078431,.9647058823529413,.9960784314,.9960784314,.8352941176,.9686274509803922,.9960784314,.9960784314,.8509803922,.9725490196078431,.9960784314,.9960784314,.8666666667,.9764705882352941,.9960784314,.9960784314,.8823529412,.9803921568627451,.9960784314,.9960784314,.8980392157,.984313725490196,.9960784314,.9960784314,.9137254902,.9882352941176471,.9960784314,.9960784314,.9294117647,.9921568627450981,.9960784314,.9960784314,.9450980392,.996078431372549,.9960784314,.9960784314,.9607843137,1,.9960784314,.9960784314,.9607843137],description:"Hot Iron"},{ColorSpace:"RGB",Name:"red_hot",name:"red_hot",RGBPoints:[0,0,0,0,.00392156862745098,0,0,0,.00784313725490196,0,0,0,.011764705882352941,0,0,0,.01568627450980392,.0039215686,.0039215686,.0039215686,.0196078431372549,.0039215686,.0039215686,.0039215686,.023529411764705882,.0039215686,.0039215686,.0039215686,.027450980392156862,.0039215686,.0039215686,.0039215686,.03137254901960784,.0039215686,.0039215686,.0039215686,.03529411764705882,.0156862745,0,0,.0392156862745098,.0274509804,0,0,.043137254901960784,.0392156863,0,0,.047058823529411764,.0509803922,0,0,.050980392156862744,.062745098,0,0,.054901960784313725,.0784313725,0,0,.05882352941176471,.0901960784,0,0,.06274509803921569,.1058823529,0,0,.06666666666666667,.1176470588,0,0,.07058823529411765,.1294117647,0,0,.07450980392156863,.1411764706,0,0,.0784313725490196,.1529411765,0,0,.08235294117647059,.1647058824,0,0,.08627450980392157,.1764705882,0,0,.09019607843137255,.1882352941,0,0,.09411764705882353,.2039215686,0,0,.09803921568627451,.2156862745,0,0,.10196078431372549,.2274509804,0,0,.10588235294117647,.2392156863,0,0,.10980392156862745,.2549019608,0,0,.11372549019607843,.2666666667,0,0,.11764705882352942,.2784313725,0,0,.12156862745098039,.2901960784,0,0,.12549019607843137,.3058823529,0,0,.12941176470588237,.3176470588,0,0,.13333333333333333,.3294117647,0,0,.13725490196078433,.3411764706,0,0,.1411764705882353,.3529411765,0,0,.1450980392156863,.3647058824,0,0,.14901960784313725,.3764705882,0,0,.15294117647058825,.3882352941,0,0,.1568627450980392,.4039215686,0,0,.1607843137254902,.4156862745,0,0,.16470588235294117,.431372549,0,0,.16862745098039217,.4431372549,0,0,.17254901960784313,.4588235294,0,0,.17647058823529413,.4705882353,0,0,.1803921568627451,.4823529412,0,0,.1843137254901961,.4941176471,0,0,.18823529411764706,.5098039216,0,0,.19215686274509805,.5215686275,0,0,.19607843137254902,.5333333333,0,0,.2,.5450980392,0,0,.20392156862745098,.5568627451,0,0,.20784313725490197,.568627451,0,0,.21176470588235294,.5803921569,0,0,.21568627450980393,.5921568627,0,0,.2196078431372549,.6078431373,0,0,.2235294117647059,.6196078431,0,0,.22745098039215686,.631372549,0,0,.23137254901960785,.6431372549,0,0,.23529411764705885,.6588235294,0,0,.23921568627450984,.6705882353,0,0,.24313725490196078,.6823529412,0,0,.24705882352941178,.6941176471,0,0,.25098039215686274,.7098039216,0,0,.2549019607843137,.7215686275,0,0,.25882352941176473,.7333333333,0,0,.2627450980392157,.7450980392,0,0,.26666666666666666,.7568627451,0,0,.27058823529411763,.768627451,0,0,.27450980392156865,.7843137255,0,0,.2784313725490196,.7960784314,0,0,.2823529411764706,.8117647059,0,0,.28627450980392155,.8235294118,0,0,.2901960784313726,.8352941176,0,0,.29411764705882354,.8470588235,0,0,.2980392156862745,.862745098,0,0,.30196078431372547,.8745098039,0,0,.3058823529411765,.8862745098,0,0,.30980392156862746,.8980392157,0,0,.3137254901960784,.9137254902,0,0,.3176470588235294,.9254901961,0,0,.3215686274509804,.937254902,0,0,.3254901960784314,.9490196078,0,0,.32941176470588235,.9607843137,0,0,.3333333333333333,.968627451,0,0,.33725490196078434,.9803921569,.0039215686,0,.3411764705882353,.9882352941,.0078431373,0,.34509803921568627,1,.0117647059,0,.34901960784313724,1,.0235294118,0,.35294117647058826,1,.0352941176,0,.3568627450980392,1,.0470588235,0,.3607843137254902,1,.062745098,0,.36470588235294116,1,.0745098039,0,.3686274509803922,1,.0862745098,0,.37254901960784315,1,.0980392157,0,.3764705882352941,1,.1137254902,0,.3803921568627451,1,.1254901961,0,.3843137254901961,1,.137254902,0,.38823529411764707,1,.1490196078,0,.39215686274509803,1,.1647058824,0,.396078431372549,1,.1764705882,0,.4,1,.1882352941,0,.403921568627451,1,.2,0,.40784313725490196,1,.2156862745,0,.4117647058823529,1,.2274509804,0,.41568627450980394,1,.2392156863,0,.4196078431372549,1,.2509803922,0,.4235294117647059,1,.2666666667,0,.42745098039215684,1,.2784313725,0,.43137254901960786,1,.2901960784,0,.43529411764705883,1,.3019607843,0,.4392156862745098,1,.3176470588,0,.44313725490196076,1,.3294117647,0,.4470588235294118,1,.3411764706,0,.45098039215686275,1,.3529411765,0,.4549019607843137,1,.368627451,0,.4588235294117647,1,.3803921569,0,.4627450980392157,1,.3921568627,0,.4666666666666667,1,.4039215686,0,.4705882352941177,1,.4156862745,0,.4745098039215686,1,.4274509804,0,.4784313725490197,1,.4392156863,0,.48235294117647065,1,.4509803922,0,.48627450980392156,1,.4666666667,0,.49019607843137253,1,.4784313725,0,.49411764705882355,1,.4941176471,0,.4980392156862745,1,.5058823529,0,.5019607843137255,1,.5215686275,0,.5058823529411764,1,.5333333333,0,.5098039215686274,1,.5450980392,0,.5137254901960784,1,.5568627451,0,.5176470588235295,1,.568627451,0,.5215686274509804,1,.5803921569,0,.5254901960784314,1,.5921568627,0,.5294117647058824,1,.6039215686,0,.5333333333333333,1,.6196078431,0,.5372549019607843,1,.631372549,0,.5411764705882353,1,.6431372549,0,.5450980392156862,1,.6549019608,0,.5490196078431373,1,.6705882353,0,.5529411764705883,1,.6823529412,0,.5568627450980392,1,.6941176471,0,.5607843137254902,1,.7058823529,0,.5647058823529412,1,.7215686275,0,.5686274509803921,1,.7333333333,0,.5725490196078431,1,.7450980392,0,.5764705882352941,1,.7568627451,0,.5803921568627451,1,.7725490196,0,.5843137254901961,1,.7843137255,0,.5882352941176471,1,.7960784314,0,.592156862745098,1,.8078431373,0,.596078431372549,1,.8196078431,0,.6,1,.831372549,0,.6039215686274509,1,.8470588235,0,.6078431372549019,1,.8588235294,0,.611764705882353,1,.8745098039,0,.615686274509804,1,.8862745098,0,.6196078431372549,1,.8980392157,0,.6235294117647059,1,.9098039216,0,.6274509803921569,1,.9254901961,0,.6313725490196078,1,.937254902,0,.6352941176470588,1,.9490196078,0,.6392156862745098,1,.9607843137,0,.6431372549019608,1,.9764705882,0,.6470588235294118,1,.9803921569,.0039215686,.6509803921568628,1,.9882352941,.0117647059,.6549019607843137,1,.9921568627,.0156862745,.6588235294117647,1,1,.0235294118,.6627450980392157,1,1,.0352941176,.6666666666666666,1,1,.0470588235,.6705882352941176,1,1,.0588235294,.6745098039215687,1,1,.0745098039,.6784313725490196,1,1,.0862745098,.6823529411764706,1,1,.0980392157,.6862745098039216,1,1,.1098039216,.6901960784313725,1,1,.1254901961,.6941176470588235,1,1,.137254902,.6980392156862745,1,1,.1490196078,.7019607843137254,1,1,.1607843137,.7058823529411765,1,1,.1764705882,.7098039215686275,1,1,.1882352941,.7137254901960784,1,1,.2,.7176470588235294,1,1,.2117647059,.7215686274509804,1,1,.2274509804,.7254901960784313,1,1,.2392156863,.7294117647058823,1,1,.2509803922,.7333333333333333,1,1,.262745098,.7372549019607844,1,1,.2784313725,.7411764705882353,1,1,.2901960784,.7450980392156863,1,1,.3019607843,.7490196078431373,1,1,.3137254902,.7529411764705882,1,1,.3294117647,.7568627450980392,1,1,.3411764706,.7607843137254902,1,1,.3529411765,.7647058823529411,1,1,.3647058824,.7686274509803922,1,1,.3803921569,.7725490196078432,1,1,.3921568627,.7764705882352941,1,1,.4039215686,.7803921568627451,1,1,.4156862745,.7843137254901961,1,1,.431372549,.788235294117647,1,1,.4431372549,.792156862745098,1,1,.4549019608,.796078431372549,1,1,.4666666667,.8,1,1,.4784313725,.803921568627451,1,1,.4901960784,.807843137254902,1,1,.5019607843,.8117647058823529,1,1,.5137254902,.8156862745098039,1,1,.5294117647,.8196078431372549,1,1,.5411764706,.8235294117647058,1,1,.5568627451,.8274509803921568,1,1,.568627451,.8313725490196079,1,1,.5843137255,.8352941176470589,1,1,.5960784314,.8392156862745098,1,1,.6078431373,.8431372549019608,1,1,.6196078431,.8470588235294118,1,1,.631372549,.8509803921568627,1,1,.6431372549,.8549019607843137,1,1,.6549019608,.8588235294117647,1,1,.6666666667,.8627450980392157,1,1,.6823529412,.8666666666666667,1,1,.6941176471,.8705882352941177,1,1,.7058823529,.8745098039215686,1,1,.7176470588,.8784313725490196,1,1,.7333333333,.8823529411764706,1,1,.7450980392,.8862745098039215,1,1,.7568627451,.8901960784313725,1,1,.768627451,.8941176470588236,1,1,.7843137255,.8980392156862745,1,1,.7960784314,.9019607843137255,1,1,.8078431373,.9058823529411765,1,1,.8196078431,.9098039215686274,1,1,.8352941176,.9137254901960784,1,1,.8470588235,.9176470588235294,1,1,.8588235294,.9215686274509803,1,1,.8705882353,.9254901960784314,1,1,.8823529412,.9294117647058824,1,1,.8941176471,.9333333333333333,1,1,.9098039216,.9372549019607843,1,1,.9215686275,.9411764705882354,1,1,.937254902,.9450980392156864,1,1,.9490196078,.9490196078431372,1,1,.9607843137,.9529411764705882,1,1,.9725490196,.9568627450980394,1,1,.9882352941,.9607843137254903,1,1,.9882352941,.9647058823529413,1,1,.9921568627,.9686274509803922,1,1,.9960784314,.9725490196078431,1,1,1,.9764705882352941,1,1,1,.9803921568627451,1,1,1,.984313725490196,1,1,1,.9882352941176471,1,1,1,.9921568627450981,1,1,1,.996078431372549,1,1,1,1,1,1,1],description:"Red Hot"},{ColorSpace:"RGB",Name:"s_pet",name:"s_pet",RGBPoints:[0,.0156862745,.0039215686,.0156862745,.00392156862745098,.0156862745,.0039215686,.0156862745,.00784313725490196,.0274509804,.0039215686,.031372549,.011764705882352941,.0352941176,.0039215686,.0509803922,.01568627450980392,.0392156863,.0039215686,.0666666667,.0196078431372549,.0509803922,.0039215686,.0823529412,.023529411764705882,.062745098,.0039215686,.0980392157,.027450980392156862,.0705882353,.0039215686,.1176470588,.03137254901960784,.0745098039,.0039215686,.1333333333,.03529411764705882,.0862745098,.0039215686,.1490196078,.0392156862745098,.0980392157,.0039215686,.1647058824,.043137254901960784,.1058823529,.0039215686,.1843137255,.047058823529411764,.1098039216,.0039215686,.2,.050980392156862744,.1215686275,.0039215686,.2156862745,.054901960784313725,.1333333333,.0039215686,.231372549,.05882352941176471,.137254902,.0039215686,.2509803922,.06274509803921569,.1490196078,.0039215686,.262745098,.06666666666666667,.1607843137,.0039215686,.2784313725,.07058823529411765,.168627451,.0039215686,.2941176471,.07450980392156863,.1725490196,.0039215686,.3137254902,.0784313725490196,.1843137255,.0039215686,.3294117647,.08235294117647059,.1960784314,.0039215686,.3450980392,.08627450980392157,.2039215686,.0039215686,.3607843137,.09019607843137255,.2078431373,.0039215686,.3803921569,.09411764705882353,.2196078431,.0039215686,.3960784314,.09803921568627451,.231372549,.0039215686,.4117647059,.10196078431372549,.2392156863,.0039215686,.4274509804,.10588235294117647,.2431372549,.0039215686,.4470588235,.10980392156862745,.2509803922,.0039215686,.462745098,.11372549019607843,.262745098,.0039215686,.4784313725,.11764705882352942,.2666666667,.0039215686,.4980392157,.12156862745098039,.2666666667,.0039215686,.4980392157,.12549019607843137,.262745098,.0039215686,.5137254902,.12941176470588237,.2509803922,.0039215686,.5294117647,.13333333333333333,.2431372549,.0039215686,.5450980392,.13725490196078433,.2392156863,.0039215686,.5607843137,.1411764705882353,.231372549,.0039215686,.5764705882,.1450980392156863,.2196078431,.0039215686,.5921568627,.14901960784313725,.2078431373,.0039215686,.6078431373,.15294117647058825,.2039215686,.0039215686,.6235294118,.1568627450980392,.1960784314,.0039215686,.6392156863,.1607843137254902,.1843137255,.0039215686,.6549019608,.16470588235294117,.1725490196,.0039215686,.6705882353,.16862745098039217,.168627451,.0039215686,.6862745098,.17254901960784313,.1607843137,.0039215686,.7019607843,.17647058823529413,.1490196078,.0039215686,.7176470588,.1803921568627451,.137254902,.0039215686,.7333333333,.1843137254901961,.1333333333,.0039215686,.7490196078,.18823529411764706,.1215686275,.0039215686,.7607843137,.19215686274509805,.1098039216,.0039215686,.7764705882,.19607843137254902,.1058823529,.0039215686,.7921568627,.2,.0980392157,.0039215686,.8078431373,.20392156862745098,.0862745098,.0039215686,.8235294118,.20784313725490197,.0745098039,.0039215686,.8392156863,.21176470588235294,.0705882353,.0039215686,.8549019608,.21568627450980393,.062745098,.0039215686,.8705882353,.2196078431372549,.0509803922,.0039215686,.8862745098,.2235294117647059,.0392156863,.0039215686,.9019607843,.22745098039215686,.0352941176,.0039215686,.9176470588,.23137254901960785,.0274509804,.0039215686,.9333333333,.23529411764705885,.0156862745,.0039215686,.9490196078,.23921568627450984,.0078431373,.0039215686,.9647058824,.24313725490196078,.0039215686,.0039215686,.9960784314,.24705882352941178,.0039215686,.0039215686,.9960784314,.25098039215686274,.0039215686,.0196078431,.9647058824,.2549019607843137,.0039215686,.0392156863,.9490196078,.25882352941176473,.0039215686,.0549019608,.9333333333,.2627450980392157,.0039215686,.0745098039,.9176470588,.26666666666666666,.0039215686,.0901960784,.9019607843,.27058823529411763,.0039215686,.1098039216,.8862745098,.27450980392156865,.0039215686,.1254901961,.8705882353,.2784313725490196,.0039215686,.1450980392,.8549019608,.2823529411764706,.0039215686,.1607843137,.8392156863,.28627450980392155,.0039215686,.1803921569,.8235294118,.2901960784313726,.0039215686,.1960784314,.8078431373,.29411764705882354,.0039215686,.2156862745,.7921568627,.2980392156862745,.0039215686,.231372549,.7764705882,.30196078431372547,.0039215686,.2509803922,.7607843137,.3058823529411765,.0039215686,.262745098,.7490196078,.30980392156862746,.0039215686,.2823529412,.7333333333,.3137254901960784,.0039215686,.2980392157,.7176470588,.3176470588235294,.0039215686,.3176470588,.7019607843,.3215686274509804,.0039215686,.3333333333,.6862745098,.3254901960784314,.0039215686,.3529411765,.6705882353,.32941176470588235,.0039215686,.368627451,.6549019608,.3333333333333333,.0039215686,.3882352941,.6392156863,.33725490196078434,.0039215686,.4039215686,.6235294118,.3411764705882353,.0039215686,.4235294118,.6078431373,.34509803921568627,.0039215686,.4392156863,.5921568627,.34901960784313724,.0039215686,.4588235294,.5764705882,.35294117647058826,.0039215686,.4745098039,.5607843137,.3568627450980392,.0039215686,.4941176471,.5450980392,.3607843137254902,.0039215686,.5098039216,.5294117647,.36470588235294116,.0039215686,.5294117647,.5137254902,.3686274509803922,.0039215686,.5450980392,.4980392157,.37254901960784315,.0039215686,.5647058824,.4784313725,.3764705882352941,.0039215686,.5803921569,.462745098,.3803921568627451,.0039215686,.6,.4470588235,.3843137254901961,.0039215686,.6156862745,.4274509804,.38823529411764707,.0039215686,.6352941176,.4117647059,.39215686274509803,.0039215686,.6509803922,.3960784314,.396078431372549,.0039215686,.6705882353,.3803921569,.4,.0039215686,.6862745098,.3607843137,.403921568627451,.0039215686,.7058823529,.3450980392,.40784313725490196,.0039215686,.7215686275,.3294117647,.4117647058823529,.0039215686,.7411764706,.3137254902,.41568627450980394,.0039215686,.7529411765,.2941176471,.4196078431372549,.0039215686,.7960784314,.2784313725,.4235294117647059,.0039215686,.7960784314,.262745098,.42745098039215684,.0392156863,.8039215686,.2509803922,.43137254901960786,.0745098039,.8117647059,.231372549,.43529411764705883,.1098039216,.8196078431,.2156862745,.4392156862745098,.1450980392,.8274509804,.2,.44313725490196076,.1803921569,.8352941176,.1843137255,.4470588235294118,.2156862745,.8431372549,.1647058824,.45098039215686275,.2509803922,.8509803922,.1490196078,.4549019607843137,.2823529412,.8588235294,.1333333333,.4588235294117647,.3176470588,.8666666667,.1176470588,.4627450980392157,.3529411765,.8745098039,.0980392157,.4666666666666667,.3882352941,.8823529412,.0823529412,.4705882352941177,.4235294118,.8901960784,.0666666667,.4745098039215686,.4588235294,.8980392157,.0509803922,.4784313725490197,.4941176471,.9058823529,.0431372549,.48235294117647065,.5294117647,.9137254902,.031372549,.48627450980392156,.5647058824,.9215686275,.0196078431,.49019607843137253,.6,.9294117647,.0078431373,.49411764705882355,.6352941176,.937254902,.0039215686,.4980392156862745,.6705882353,.9450980392,.0039215686,.5019607843137255,.7058823529,.9490196078,.0039215686,.5058823529411764,.7411764706,.9568627451,.0039215686,.5098039215686274,.7725490196,.9607843137,.0039215686,.5137254901960784,.8078431373,.968627451,.0039215686,.5176470588235295,.8431372549,.9725490196,.0039215686,.5215686274509804,.8784313725,.9803921569,.0039215686,.5254901960784314,.9137254902,.9843137255,.0039215686,.5294117647058824,.9490196078,.9921568627,.0039215686,.5333333333333333,.9960784314,.9960784314,.0039215686,.5372549019607843,.9960784314,.9960784314,.0039215686,.5411764705882353,.9960784314,.9921568627,.0039215686,.5450980392156862,.9960784314,.9843137255,.0039215686,.5490196078431373,.9960784314,.9764705882,.0039215686,.5529411764705883,.9960784314,.968627451,.0039215686,.5568627450980392,.9960784314,.9607843137,.0039215686,.5607843137254902,.9960784314,.9529411765,.0039215686,.5647058823529412,.9960784314,.9450980392,.0039215686,.5686274509803921,.9960784314,.937254902,.0039215686,.5725490196078431,.9960784314,.9294117647,.0039215686,.5764705882352941,.9960784314,.9215686275,.0039215686,.5803921568627451,.9960784314,.9137254902,.0039215686,.5843137254901961,.9960784314,.9058823529,.0039215686,.5882352941176471,.9960784314,.8980392157,.0039215686,.592156862745098,.9960784314,.8901960784,.0039215686,.596078431372549,.9960784314,.8823529412,.0039215686,.6,.9960784314,.8745098039,.0039215686,.6039215686274509,.9960784314,.8666666667,.0039215686,.6078431372549019,.9960784314,.8588235294,.0039215686,.611764705882353,.9960784314,.8509803922,.0039215686,.615686274509804,.9960784314,.8431372549,.0039215686,.6196078431372549,.9960784314,.8352941176,.0039215686,.6235294117647059,.9960784314,.8274509804,.0039215686,.6274509803921569,.9960784314,.8196078431,.0039215686,.6313725490196078,.9960784314,.8117647059,.0039215686,.6352941176470588,.9960784314,.8039215686,.0039215686,.6392156862745098,.9960784314,.7960784314,.0039215686,.6431372549019608,.9960784314,.7882352941,.0039215686,.6470588235294118,.9960784314,.7803921569,.0039215686,.6509803921568628,.9960784314,.7725490196,.0039215686,.6549019607843137,.9960784314,.7647058824,.0039215686,.6588235294117647,.9960784314,.7568627451,.0039215686,.6627450980392157,.9960784314,.7490196078,.0039215686,.6666666666666666,.9960784314,.7450980392,.0039215686,.6705882352941176,.9960784314,.737254902,.0039215686,.6745098039215687,.9960784314,.7294117647,.0039215686,.6784313725490196,.9960784314,.7215686275,.0039215686,.6823529411764706,.9960784314,.7137254902,.0039215686,.6862745098039216,.9960784314,.7058823529,.0039215686,.6901960784313725,.9960784314,.6980392157,.0039215686,.6941176470588235,.9960784314,.6901960784,.0039215686,.6980392156862745,.9960784314,.6823529412,.0039215686,.7019607843137254,.9960784314,.6745098039,.0039215686,.7058823529411765,.9960784314,.6666666667,.0039215686,.7098039215686275,.9960784314,.6588235294,.0039215686,.7137254901960784,.9960784314,.6509803922,.0039215686,.7176470588235294,.9960784314,.6431372549,.0039215686,.7215686274509804,.9960784314,.6352941176,.0039215686,.7254901960784313,.9960784314,.6274509804,.0039215686,.7294117647058823,.9960784314,.6196078431,.0039215686,.7333333333333333,.9960784314,.6117647059,.0039215686,.7372549019607844,.9960784314,.6039215686,.0039215686,.7411764705882353,.9960784314,.5960784314,.0039215686,.7450980392156863,.9960784314,.5882352941,.0039215686,.7490196078431373,.9960784314,.5803921569,.0039215686,.7529411764705882,.9960784314,.5725490196,.0039215686,.7568627450980392,.9960784314,.5647058824,.0039215686,.7607843137254902,.9960784314,.5568627451,.0039215686,.7647058823529411,.9960784314,.5490196078,.0039215686,.7686274509803922,.9960784314,.5411764706,.0039215686,.7725490196078432,.9960784314,.5333333333,.0039215686,.7764705882352941,.9960784314,.5254901961,.0039215686,.7803921568627451,.9960784314,.5176470588,.0039215686,.7843137254901961,.9960784314,.5098039216,.0039215686,.788235294117647,.9960784314,.5019607843,.0039215686,.792156862745098,.9960784314,.4941176471,.0039215686,.796078431372549,.9960784314,.4862745098,.0039215686,.8,.9960784314,.4784313725,.0039215686,.803921568627451,.9960784314,.4705882353,.0039215686,.807843137254902,.9960784314,.462745098,.0039215686,.8117647058823529,.9960784314,.4549019608,.0039215686,.8156862745098039,.9960784314,.4470588235,.0039215686,.8196078431372549,.9960784314,.4392156863,.0039215686,.8235294117647058,.9960784314,.431372549,.0039215686,.8274509803921568,.9960784314,.4235294118,.0039215686,.8313725490196079,.9960784314,.4156862745,.0039215686,.8352941176470589,.9960784314,.4078431373,.0039215686,.8392156862745098,.9960784314,.4,.0039215686,.8431372549019608,.9960784314,.3921568627,.0039215686,.8470588235294118,.9960784314,.3843137255,.0039215686,.8509803921568627,.9960784314,.3764705882,.0039215686,.8549019607843137,.9960784314,.368627451,.0039215686,.8588235294117647,.9960784314,.3607843137,.0039215686,.8627450980392157,.9960784314,.3529411765,.0039215686,.8666666666666667,.9960784314,.3450980392,.0039215686,.8705882352941177,.9960784314,.337254902,.0039215686,.8745098039215686,.9960784314,.3294117647,.0039215686,.8784313725490196,.9960784314,.3215686275,.0039215686,.8823529411764706,.9960784314,.3137254902,.0039215686,.8862745098039215,.9960784314,.3058823529,.0039215686,.8901960784313725,.9960784314,.2980392157,.0039215686,.8941176470588236,.9960784314,.2901960784,.0039215686,.8980392156862745,.9960784314,.2823529412,.0039215686,.9019607843137255,.9960784314,.2705882353,.0039215686,.9058823529411765,.9960784314,.2588235294,.0039215686,.9098039215686274,.9960784314,.2509803922,.0039215686,.9137254901960784,.9960784314,.2431372549,.0039215686,.9176470588235294,.9960784314,.231372549,.0039215686,.9215686274509803,.9960784314,.2196078431,.0039215686,.9254901960784314,.9960784314,.2117647059,.0039215686,.9294117647058824,.9960784314,.2,.0039215686,.9333333333333333,.9960784314,.1882352941,.0039215686,.9372549019607843,.9960784314,.1764705882,.0039215686,.9411764705882354,.9960784314,.168627451,.0039215686,.9450980392156864,.9960784314,.1568627451,.0039215686,.9490196078431372,.9960784314,.1450980392,.0039215686,.9529411764705882,.9960784314,.1333333333,.0039215686,.9568627450980394,.9960784314,.1254901961,.0039215686,.9607843137254903,.9960784314,.1137254902,.0039215686,.9647058823529413,.9960784314,.1019607843,.0039215686,.9686274509803922,.9960784314,.0901960784,.0039215686,.9725490196078431,.9960784314,.0823529412,.0039215686,.9764705882352941,.9960784314,.0705882353,.0039215686,.9803921568627451,.9960784314,.0588235294,.0039215686,.984313725490196,.9960784314,.0470588235,.0039215686,.9882352941176471,.9960784314,.0392156863,.0039215686,.9921568627450981,.9960784314,.0274509804,.0039215686,.996078431372549,.9960784314,.0156862745,.0039215686,1,.9960784314,.0156862745,.0039215686],description:"S PET"},{ColorSpace:"RGB",Name:"perfusion",name:"perfusion",RGBPoints:[0,0,0,0,.00392156862745098,.0078431373,.0235294118,.0235294118,.00784313725490196,.0078431373,.031372549,.0470588235,.011764705882352941,.0078431373,.0392156863,.062745098,.01568627450980392,.0078431373,.0470588235,.0862745098,.0196078431372549,.0078431373,.0549019608,.1019607843,.023529411764705882,.0078431373,.0549019608,.1254901961,.027450980392156862,.0078431373,.062745098,.1411764706,.03137254901960784,.0078431373,.0705882353,.1647058824,.03529411764705882,.0078431373,.0784313725,.1803921569,.0392156862745098,.0078431373,.0862745098,.2039215686,.043137254901960784,.0078431373,.0862745098,.2196078431,.047058823529411764,.0078431373,.0941176471,.2431372549,.050980392156862744,.0078431373,.1019607843,.2666666667,.054901960784313725,.0078431373,.1098039216,.2823529412,.05882352941176471,.0078431373,.1176470588,.3058823529,.06274509803921569,.0078431373,.1176470588,.3215686275,.06666666666666667,.0078431373,.1254901961,.3450980392,.07058823529411765,.0078431373,.1333333333,.3607843137,.07450980392156863,.0078431373,.1411764706,.3843137255,.0784313725490196,.0078431373,.1490196078,.4,.08235294117647059,.0078431373,.1490196078,.4235294118,.08627450980392157,.0078431373,.1568627451,.4392156863,.09019607843137255,.0078431373,.1647058824,.462745098,.09411764705882353,.0078431373,.1725490196,.4784313725,.09803921568627451,.0078431373,.1803921569,.5019607843,.10196078431372549,.0078431373,.1803921569,.5254901961,.10588235294117647,.0078431373,.1882352941,.5411764706,.10980392156862745,.0078431373,.1960784314,.5647058824,.11372549019607843,.0078431373,.2039215686,.5803921569,.11764705882352942,.0078431373,.2117647059,.6039215686,.12156862745098039,.0078431373,.2117647059,.6196078431,.12549019607843137,.0078431373,.2196078431,.6431372549,.12941176470588237,.0078431373,.2274509804,.6588235294,.13333333333333333,.0078431373,.2352941176,.6823529412,.13725490196078433,.0078431373,.2431372549,.6980392157,.1411764705882353,.0078431373,.2431372549,.7215686275,.1450980392156863,.0078431373,.2509803922,.737254902,.14901960784313725,.0078431373,.2588235294,.7607843137,.15294117647058825,.0078431373,.2666666667,.7843137255,.1568627450980392,.0078431373,.2745098039,.8,.1607843137254902,.0078431373,.2745098039,.8235294118,.16470588235294117,.0078431373,.2823529412,.8392156863,.16862745098039217,.0078431373,.2901960784,.862745098,.17254901960784313,.0078431373,.2980392157,.8784313725,.17647058823529413,.0078431373,.3058823529,.9019607843,.1803921568627451,.0078431373,.3058823529,.9176470588,.1843137254901961,.0078431373,.2980392157,.9411764706,.18823529411764706,.0078431373,.3058823529,.9568627451,.19215686274509805,.0078431373,.2980392157,.9803921569,.19607843137254902,.0078431373,.2980392157,.9882352941,.2,.0078431373,.2901960784,.9803921569,.20392156862745098,.0078431373,.2901960784,.9647058824,.20784313725490197,.0078431373,.2823529412,.9568627451,.21176470588235294,.0078431373,.2823529412,.9411764706,.21568627450980393,.0078431373,.2745098039,.9333333333,.2196078431372549,.0078431373,.2666666667,.9176470588,.2235294117647059,.0078431373,.2666666667,.9098039216,.22745098039215686,.0078431373,.2588235294,.9019607843,.23137254901960785,.0078431373,.2588235294,.8862745098,.23529411764705885,.0078431373,.2509803922,.8784313725,.23921568627450984,.0078431373,.2509803922,.862745098,.24313725490196078,.0078431373,.2431372549,.8549019608,.24705882352941178,.0078431373,.2352941176,.8392156863,.25098039215686274,.0078431373,.2352941176,.831372549,.2549019607843137,.0078431373,.2274509804,.8235294118,.25882352941176473,.0078431373,.2274509804,.8078431373,.2627450980392157,.0078431373,.2196078431,.8,.26666666666666666,.0078431373,.2196078431,.7843137255,.27058823529411763,.0078431373,.2117647059,.7764705882,.27450980392156865,.0078431373,.2039215686,.7607843137,.2784313725490196,.0078431373,.2039215686,.7529411765,.2823529411764706,.0078431373,.1960784314,.7450980392,.28627450980392155,.0078431373,.1960784314,.7294117647,.2901960784313726,.0078431373,.1882352941,.7215686275,.29411764705882354,.0078431373,.1882352941,.7058823529,.2980392156862745,.0078431373,.1803921569,.6980392157,.30196078431372547,.0078431373,.1803921569,.6823529412,.3058823529411765,.0078431373,.1725490196,.6745098039,.30980392156862746,.0078431373,.1647058824,.6666666667,.3137254901960784,.0078431373,.1647058824,.6509803922,.3176470588235294,.0078431373,.1568627451,.6431372549,.3215686274509804,.0078431373,.1568627451,.6274509804,.3254901960784314,.0078431373,.1490196078,.6196078431,.32941176470588235,.0078431373,.1490196078,.6039215686,.3333333333333333,.0078431373,.1411764706,.5960784314,.33725490196078434,.0078431373,.1333333333,.5882352941,.3411764705882353,.0078431373,.1333333333,.5725490196,.34509803921568627,.0078431373,.1254901961,.5647058824,.34901960784313724,.0078431373,.1254901961,.5490196078,.35294117647058826,.0078431373,.1176470588,.5411764706,.3568627450980392,.0078431373,.1176470588,.5254901961,.3607843137254902,.0078431373,.1098039216,.5176470588,.36470588235294116,.0078431373,.1019607843,.5098039216,.3686274509803922,.0078431373,.1019607843,.4941176471,.37254901960784315,.0078431373,.0941176471,.4862745098,.3764705882352941,.0078431373,.0941176471,.4705882353,.3803921568627451,.0078431373,.0862745098,.462745098,.3843137254901961,.0078431373,.0862745098,.4470588235,.38823529411764707,.0078431373,.0784313725,.4392156863,.39215686274509803,.0078431373,.0705882353,.431372549,.396078431372549,.0078431373,.0705882353,.4156862745,.4,.0078431373,.062745098,.4078431373,.403921568627451,.0078431373,.062745098,.3921568627,.40784313725490196,.0078431373,.0549019608,.3843137255,.4117647058823529,.0078431373,.0549019608,.368627451,.41568627450980394,.0078431373,.0470588235,.3607843137,.4196078431372549,.0078431373,.0470588235,.3529411765,.4235294117647059,.0078431373,.0392156863,.337254902,.42745098039215684,.0078431373,.031372549,.3294117647,.43137254901960786,.0078431373,.031372549,.3137254902,.43529411764705883,.0078431373,.0235294118,.3058823529,.4392156862745098,.0078431373,.0235294118,.2901960784,.44313725490196076,.0078431373,.0156862745,.2823529412,.4470588235294118,.0078431373,.0156862745,.2745098039,.45098039215686275,.0078431373,.0078431373,.2588235294,.4549019607843137,.0235294118,.0078431373,.2509803922,.4588235294117647,.0078431373,.0078431373,.2352941176,.4627450980392157,.0078431373,.0078431373,.2274509804,.4666666666666667,.0078431373,.0078431373,.2117647059,.4705882352941177,.0078431373,.0078431373,.2039215686,.4745098039215686,.0078431373,.0078431373,.1960784314,.4784313725490197,.0078431373,.0078431373,.1803921569,.48235294117647065,.0078431373,.0078431373,.1725490196,.48627450980392156,.0078431373,.0078431373,.1568627451,.49019607843137253,.0078431373,.0078431373,.1490196078,.49411764705882355,.0078431373,.0078431373,.1333333333,.4980392156862745,.0078431373,.0078431373,.1254901961,.5019607843137255,.0078431373,.0078431373,.1176470588,.5058823529411764,.0078431373,.0078431373,.1019607843,.5098039215686274,.0078431373,.0078431373,.0941176471,.5137254901960784,.0078431373,.0078431373,.0784313725,.5176470588235295,.0078431373,.0078431373,.0705882353,.5215686274509804,.0078431373,.0078431373,.0549019608,.5254901960784314,.0078431373,.0078431373,.0470588235,.5294117647058824,.0235294118,.0078431373,.0392156863,.5333333333333333,.031372549,.0078431373,.0235294118,.5372549019607843,.0392156863,.0078431373,.0156862745,.5411764705882353,.0549019608,.0078431373,0,.5450980392156862,.062745098,.0078431373,0,.5490196078431373,.0705882353,.0078431373,0,.5529411764705883,.0862745098,.0078431373,0,.5568627450980392,.0941176471,.0078431373,0,.5607843137254902,.1019607843,.0078431373,0,.5647058823529412,.1098039216,.0078431373,0,.5686274509803921,.1254901961,.0078431373,0,.5725490196078431,.1333333333,.0078431373,0,.5764705882352941,.1411764706,.0078431373,0,.5803921568627451,.1568627451,.0078431373,0,.5843137254901961,.1647058824,.0078431373,0,.5882352941176471,.1725490196,.0078431373,0,.592156862745098,.1882352941,.0078431373,0,.596078431372549,.1960784314,.0078431373,0,.6,.2039215686,.0078431373,0,.6039215686274509,.2117647059,.0078431373,0,.6078431372549019,.2274509804,.0078431373,0,.611764705882353,.2352941176,.0078431373,0,.615686274509804,.2431372549,.0078431373,0,.6196078431372549,.2588235294,.0078431373,0,.6235294117647059,.2666666667,.0078431373,0,.6274509803921569,.2745098039,0,0,.6313725490196078,.2901960784,.0156862745,0,.6352941176470588,.2980392157,.0235294118,0,.6392156862745098,.3058823529,.0392156863,0,.6431372549019608,.3137254902,.0470588235,0,.6470588235294118,.3294117647,.0549019608,0,.6509803921568628,.337254902,.0705882353,0,.6549019607843137,.3450980392,.0784313725,0,.6588235294117647,.3607843137,.0862745098,0,.6627450980392157,.368627451,.1019607843,0,.6666666666666666,.3764705882,.1098039216,0,.6705882352941176,.3843137255,.1176470588,0,.6745098039215687,.4,.1333333333,0,.6784313725490196,.4078431373,.1411764706,0,.6823529411764706,.4156862745,.1490196078,0,.6862745098039216,.431372549,.1647058824,0,.6901960784313725,.4392156863,.1725490196,0,.6941176470588235,.4470588235,.1803921569,0,.6980392156862745,.462745098,.1960784314,0,.7019607843137254,.4705882353,.2039215686,0,.7058823529411765,.4784313725,.2117647059,0,.7098039215686275,.4862745098,.2274509804,0,.7137254901960784,.5019607843,.2352941176,0,.7176470588235294,.5098039216,.2431372549,0,.7215686274509804,.5176470588,.2588235294,0,.7254901960784313,.5333333333,.2666666667,0,.7294117647058823,.5411764706,.2745098039,0,.7333333333333333,.5490196078,.2901960784,0,.7372549019607844,.5647058824,.2980392157,0,.7411764705882353,.5725490196,.3058823529,0,.7450980392156863,.5803921569,.3215686275,0,.7490196078431373,.5882352941,.3294117647,0,.7529411764705882,.6039215686,.337254902,0,.7568627450980392,.6117647059,.3529411765,0,.7607843137254902,.6196078431,.3607843137,0,.7647058823529411,.6352941176,.368627451,0,.7686274509803922,.6431372549,.3843137255,0,.7725490196078432,.6509803922,.3921568627,0,.7764705882352941,.6588235294,.4,0,.7803921568627451,.6745098039,.4156862745,0,.7843137254901961,.6823529412,.4235294118,0,.788235294117647,.6901960784,.431372549,0,.792156862745098,.7058823529,.4470588235,0,.796078431372549,.7137254902,.4549019608,0,.8,.7215686275,.462745098,0,.803921568627451,.737254902,.4784313725,0,.807843137254902,.7450980392,.4862745098,0,.8117647058823529,.7529411765,.4941176471,0,.8156862745098039,.7607843137,.5098039216,0,.8196078431372549,.7764705882,.5176470588,0,.8235294117647058,.7843137255,.5254901961,0,.8274509803921568,.7921568627,.5411764706,0,.8313725490196079,.8078431373,.5490196078,0,.8352941176470589,.8156862745,.5568627451,0,.8392156862745098,.8235294118,.5725490196,0,.8431372549019608,.8392156863,.5803921569,0,.8470588235294118,.8470588235,.5882352941,0,.8509803921568627,.8549019608,.6039215686,0,.8549019607843137,.862745098,.6117647059,0,.8588235294117647,.8784313725,.6196078431,0,.8627450980392157,.8862745098,.6352941176,0,.8666666666666667,.8941176471,.6431372549,0,.8705882352941177,.9098039216,.6509803922,0,.8745098039215686,.9176470588,.6666666667,0,.8784313725490196,.9254901961,.6745098039,0,.8823529411764706,.9411764706,.6823529412,0,.8862745098039215,.9490196078,.6980392157,0,.8901960784313725,.9568627451,.7058823529,0,.8941176470588236,.9647058824,.7137254902,0,.8980392156862745,.9803921569,.7294117647,0,.9019607843137255,.9882352941,.737254902,0,.9058823529411765,.9960784314,.7450980392,0,.9098039215686274,.9960784314,.7607843137,0,.9137254901960784,.9960784314,.768627451,0,.9176470588235294,.9960784314,.7764705882,0,.9215686274509803,.9960784314,.7921568627,0,.9254901960784314,.9960784314,.8,0,.9294117647058824,.9960784314,.8078431373,0,.9333333333333333,.9960784314,.8235294118,0,.9372549019607843,.9960784314,.831372549,0,.9411764705882354,.9960784314,.8392156863,0,.9450980392156864,.9960784314,.8549019608,0,.9490196078431372,.9960784314,.862745098,.0549019608,.9529411764705882,.9960784314,.8705882353,.1098039216,.9568627450980394,.9960784314,.8862745098,.1647058824,.9607843137254903,.9960784314,.8941176471,.2196078431,.9647058823529413,.9960784314,.9019607843,.2666666667,.9686274509803922,.9960784314,.9176470588,.3215686275,.9725490196078431,.9960784314,.9254901961,.3764705882,.9764705882352941,.9960784314,.9333333333,.431372549,.9803921568627451,.9960784314,.9490196078,.4862745098,.984313725490196,.9960784314,.9568627451,.5333333333,.9882352941176471,.9960784314,.9647058824,.5882352941,.9921568627450981,.9960784314,.9803921569,.6431372549,.996078431372549,.9960784314,.9882352941,.6980392157,1,.9960784314,.9960784314,.7450980392],description:"Perfusion"},{ColorSpace:"RGB",Name:"rainbow_2",name:"rainbow_2",RGBPoints:[0,0,0,0,.00392156862745098,.0156862745,0,.0117647059,.00784313725490196,.0352941176,0,.0274509804,.011764705882352941,.0509803922,0,.0392156863,.01568627450980392,.0705882353,0,.0549019608,.0196078431372549,.0862745098,0,.0745098039,.023529411764705882,.1058823529,0,.0901960784,.027450980392156862,.1215686275,0,.1098039216,.03137254901960784,.1411764706,0,.1254901961,.03529411764705882,.1568627451,0,.1490196078,.0392156862745098,.1764705882,0,.168627451,.043137254901960784,.1960784314,0,.1882352941,.047058823529411764,.2117647059,0,.2078431373,.050980392156862744,.2274509804,0,.231372549,.054901960784313725,.2392156863,0,.2470588235,.05882352941176471,.2509803922,0,.2666666667,.06274509803921569,.2666666667,0,.2823529412,.06666666666666667,.2705882353,0,.3019607843,.07058823529411765,.2823529412,0,.3176470588,.07450980392156863,.2901960784,0,.337254902,.0784313725490196,.3019607843,0,.3568627451,.08235294117647059,.3098039216,0,.3725490196,.08627450980392157,.3137254902,0,.3921568627,.09019607843137255,.3215686275,0,.4078431373,.09411764705882353,.3254901961,0,.4274509804,.09803921568627451,.3333333333,0,.4431372549,.10196078431372549,.3294117647,0,.462745098,.10588235294117647,.337254902,0,.4784313725,.10980392156862745,.3411764706,0,.4980392157,.11372549019607843,.3450980392,0,.5176470588,.11764705882352942,.337254902,0,.5333333333,.12156862745098039,.3411764706,0,.5529411765,.12549019607843137,.3411764706,0,.568627451,.12941176470588237,.3411764706,0,.5882352941,.13333333333333333,.3333333333,0,.6039215686,.13725490196078433,.3294117647,0,.6235294118,.1411764705882353,.3294117647,0,.6392156863,.1450980392156863,.3294117647,0,.6588235294,.14901960784313725,.3254901961,0,.6784313725,.15294117647058825,.3098039216,0,.6941176471,.1568627450980392,.3058823529,0,.7137254902,.1607843137254902,.3019607843,0,.7294117647,.16470588235294117,.2980392157,0,.7490196078,.16862745098039217,.2784313725,0,.7647058824,.17254901960784313,.2745098039,0,.7843137255,.17647058823529413,.2666666667,0,.8,.1803921568627451,.2588235294,0,.8196078431,.1843137254901961,.2352941176,0,.8392156863,.18823529411764706,.2274509804,0,.8549019608,.19215686274509805,.2156862745,0,.8745098039,.19607843137254902,.2078431373,0,.8901960784,.2,.1803921569,0,.9098039216,.20392156862745098,.168627451,0,.9254901961,.20784313725490197,.1568627451,0,.9450980392,.21176470588235294,.1411764706,0,.9607843137,.21568627450980393,.1294117647,0,.9803921569,.2196078431372549,.0980392157,0,1,.2235294117647059,.0823529412,0,1,.22745098039215686,.062745098,0,1,.23137254901960785,.0470588235,0,1,.23529411764705885,.0156862745,0,1,.23921568627450984,0,0,1,.24313725490196078,0,.0156862745,1,.24705882352941178,0,.031372549,1,.25098039215686274,0,.062745098,1,.2549019607843137,0,.0823529412,1,.25882352941176473,0,.0980392157,1,.2627450980392157,0,.1137254902,1,.26666666666666666,0,.1490196078,1,.27058823529411763,0,.1647058824,1,.27450980392156865,0,.1803921569,1,.2784313725490196,0,.2,1,.2823529411764706,0,.2156862745,1,.28627450980392155,0,.2470588235,1,.2901960784313726,0,.262745098,1,.29411764705882354,0,.2823529412,1,.2980392156862745,0,.2980392157,1,.30196078431372547,0,.3294117647,1,.3058823529411765,0,.3490196078,1,.30980392156862746,0,.3647058824,1,.3137254901960784,0,.3803921569,1,.3176470588235294,0,.4156862745,1,.3215686274509804,0,.431372549,1,.3254901960784314,0,.4470588235,1,.32941176470588235,0,.4666666667,1,.3333333333333333,0,.4980392157,1,.33725490196078434,0,.5137254902,1,.3411764705882353,0,.5294117647,1,.34509803921568627,0,.5490196078,1,.34901960784313724,0,.5647058824,1,.35294117647058826,0,.5960784314,1,.3568627450980392,0,.6156862745,1,.3607843137254902,0,.631372549,1,.36470588235294116,0,.6470588235,1,.3686274509803922,0,.6823529412,1,.37254901960784315,0,.6980392157,1,.3764705882352941,0,.7137254902,1,.3803921568627451,0,.7333333333,1,.3843137254901961,0,.7647058824,1,.38823529411764707,0,.7803921569,1,.39215686274509803,0,.7960784314,1,.396078431372549,0,.8156862745,1,.4,0,.8470588235,1,.403921568627451,0,.862745098,1,.40784313725490196,0,.8823529412,1,.4117647058823529,0,.8980392157,1,.41568627450980394,0,.9137254902,1,.4196078431372549,0,.9490196078,1,.4235294117647059,0,.9647058824,1,.42745098039215684,0,.9803921569,1,.43137254901960786,0,1,1,.43529411764705883,0,1,.9647058824,.4392156862745098,0,1,.9490196078,.44313725490196076,0,1,.9333333333,.4470588235294118,0,1,.9137254902,.45098039215686275,0,1,.8823529412,.4549019607843137,0,1,.862745098,.4588235294117647,0,1,.8470588235,.4627450980392157,0,1,.831372549,.4666666666666667,0,1,.7960784314,.4705882352941177,0,1,.7803921569,.4745098039215686,0,1,.7647058824,.4784313725490197,0,1,.7490196078,.48235294117647065,0,1,.7333333333,.48627450980392156,0,1,.6980392157,.49019607843137253,0,1,.6823529412,.49411764705882355,0,1,.6666666667,.4980392156862745,0,1,.6470588235,.5019607843137255,0,1,.6156862745,.5058823529411764,0,1,.5960784314,.5098039215686274,0,1,.5803921569,.5137254901960784,0,1,.5647058824,.5176470588235295,0,1,.5294117647,.5215686274509804,0,1,.5137254902,.5254901960784314,0,1,.4980392157,.5294117647058824,0,1,.4823529412,.5333333333333333,0,1,.4470588235,.5372549019607843,0,1,.431372549,.5411764705882353,0,1,.4156862745,.5450980392156862,0,1,.4,.5490196078431373,0,1,.3803921569,.5529411764705883,0,1,.3490196078,.5568627450980392,0,1,.3294117647,.5607843137254902,0,1,.3137254902,.5647058823529412,0,1,.2980392157,.5686274509803921,0,1,.262745098,.5725490196078431,0,1,.2470588235,.5764705882352941,0,1,.231372549,.5803921568627451,0,1,.2156862745,.5843137254901961,0,1,.1803921569,.5882352941176471,0,1,.1647058824,.592156862745098,0,1,.1490196078,.596078431372549,0,1,.1333333333,.6,0,1,.0980392157,.6039215686274509,0,1,.0823529412,.6078431372549019,0,1,.062745098,.611764705882353,0,1,.0470588235,.615686274509804,0,1,.031372549,.6196078431372549,0,1,0,.6235294117647059,.0156862745,1,0,.6274509803921569,.031372549,1,0,.6313725490196078,.0470588235,1,0,.6352941176470588,.0823529412,1,0,.6392156862745098,.0980392157,1,0,.6431372549019608,.1137254902,1,0,.6470588235294118,.1294117647,1,0,.6509803921568628,.1647058824,1,0,.6549019607843137,.1803921569,1,0,.6588235294117647,.2,1,0,.6627450980392157,.2156862745,1,0,.6666666666666666,.2470588235,1,0,.6705882352941176,.262745098,1,0,.6745098039215687,.2823529412,1,0,.6784313725490196,.2980392157,1,0,.6823529411764706,.3137254902,1,0,.6862745098039216,.3490196078,1,0,.6901960784313725,.3647058824,1,0,.6941176470588235,.3803921569,1,0,.6980392156862745,.3960784314,1,0,.7019607843137254,.431372549,1,0,.7058823529411765,.4470588235,1,0,.7098039215686275,.4666666667,1,0,.7137254901960784,.4823529412,1,0,.7176470588235294,.5137254902,1,0,.7215686274509804,.5294117647,1,0,.7254901960784313,.5490196078,1,0,.7294117647058823,.5647058824,1,0,.7333333333333333,.6,1,0,.7372549019607844,.6156862745,1,0,.7411764705882353,.631372549,1,0,.7450980392156863,.6470588235,1,0,.7490196078431373,.662745098,1,0,.7529411764705882,.6980392157,1,0,.7568627450980392,.7137254902,1,0,.7607843137254902,.7333333333,1,0,.7647058823529411,.7490196078,1,0,.7686274509803922,.7803921569,1,0,.7725490196078432,.7960784314,1,0,.7764705882352941,.8156862745,1,0,.7803921568627451,.831372549,1,0,.7843137254901961,.8666666667,1,0,.788235294117647,.8823529412,1,0,.792156862745098,.8980392157,1,0,.796078431372549,.9137254902,1,0,.8,.9490196078,1,0,.803921568627451,.9647058824,1,0,.807843137254902,.9803921569,1,0,.8117647058823529,1,1,0,.8156862745098039,1,.9803921569,0,.8196078431372549,1,.9490196078,0,.8235294117647058,1,.9333333333,0,.8274509803921568,1,.9137254902,0,.8313725490196079,1,.8980392157,0,.8352941176470589,1,.8666666667,0,.8392156862745098,1,.8470588235,0,.8431372549019608,1,.831372549,0,.8470588235294118,1,.8156862745,0,.8509803921568627,1,.7803921569,0,.8549019607843137,1,.7647058824,0,.8588235294117647,1,.7490196078,0,.8627450980392157,1,.7333333333,0,.8666666666666667,1,.6980392157,0,.8705882352941177,1,.6823529412,0,.8745098039215686,1,.6666666667,0,.8784313725490196,1,.6470588235,0,.8823529411764706,1,.631372549,0,.8862745098039215,1,.6,0,.8901960784313725,1,.5803921569,0,.8941176470588236,1,.5647058824,0,.8980392156862745,1,.5490196078,0,.9019607843137255,1,.5137254902,0,.9058823529411765,1,.4980392157,0,.9098039215686274,1,.4823529412,0,.9137254901960784,1,.4666666667,0,.9176470588235294,1,.431372549,0,.9215686274509803,1,.4156862745,0,.9254901960784314,1,.4,0,.9294117647058824,1,.3803921569,0,.9333333333333333,1,.3490196078,0,.9372549019607843,1,.3333333333,0,.9411764705882354,1,.3137254902,0,.9450980392156864,1,.2980392157,0,.9490196078431372,1,.2823529412,0,.9529411764705882,1,.2470588235,0,.9568627450980394,1,.231372549,0,.9607843137254903,1,.2156862745,0,.9647058823529413,1,.2,0,.9686274509803922,1,.1647058824,0,.9725490196078431,1,.1490196078,0,.9764705882352941,1,.1333333333,0,.9803921568627451,1,.1137254902,0,.984313725490196,1,.0823529412,0,.9882352941176471,1,.0666666667,0,.9921568627450981,1,.0470588235,0,.996078431372549,1,.031372549,0,1,1,0,0],description:"Rainbow"},{ColorSpace:"RGB",Name:"suv",name:"suv",RGBPoints:[0,1,1,1,.00392156862745098,1,1,1,.00784313725490196,1,1,1,.011764705882352941,1,1,1,.01568627450980392,1,1,1,.0196078431372549,1,1,1,.023529411764705882,1,1,1,.027450980392156862,1,1,1,.03137254901960784,1,1,1,.03529411764705882,1,1,1,.0392156862745098,1,1,1,.043137254901960784,1,1,1,.047058823529411764,1,1,1,.050980392156862744,1,1,1,.054901960784313725,1,1,1,.05882352941176471,1,1,1,.06274509803921569,1,1,1,.06666666666666667,1,1,1,.07058823529411765,1,1,1,.07450980392156863,1,1,1,.0784313725490196,1,1,1,.08235294117647059,1,1,1,.08627450980392157,1,1,1,.09019607843137255,1,1,1,.09411764705882353,1,1,1,.09803921568627451,1,1,1,.10196078431372549,.737254902,.737254902,.737254902,.10588235294117647,.737254902,.737254902,.737254902,.10980392156862745,.737254902,.737254902,.737254902,.11372549019607843,.737254902,.737254902,.737254902,.11764705882352942,.737254902,.737254902,.737254902,.12156862745098039,.737254902,.737254902,.737254902,.12549019607843137,.737254902,.737254902,.737254902,.12941176470588237,.737254902,.737254902,.737254902,.13333333333333333,.737254902,.737254902,.737254902,.13725490196078433,.737254902,.737254902,.737254902,.1411764705882353,.737254902,.737254902,.737254902,.1450980392156863,.737254902,.737254902,.737254902,.14901960784313725,.737254902,.737254902,.737254902,.15294117647058825,.737254902,.737254902,.737254902,.1568627450980392,.737254902,.737254902,.737254902,.1607843137254902,.737254902,.737254902,.737254902,.16470588235294117,.737254902,.737254902,.737254902,.16862745098039217,.737254902,.737254902,.737254902,.17254901960784313,.737254902,.737254902,.737254902,.17647058823529413,.737254902,.737254902,.737254902,.1803921568627451,.737254902,.737254902,.737254902,.1843137254901961,.737254902,.737254902,.737254902,.18823529411764706,.737254902,.737254902,.737254902,.19215686274509805,.737254902,.737254902,.737254902,.19607843137254902,.737254902,.737254902,.737254902,.2,.737254902,.737254902,.737254902,.20392156862745098,.431372549,0,.568627451,.20784313725490197,.431372549,0,.568627451,.21176470588235294,.431372549,0,.568627451,.21568627450980393,.431372549,0,.568627451,.2196078431372549,.431372549,0,.568627451,.2235294117647059,.431372549,0,.568627451,.22745098039215686,.431372549,0,.568627451,.23137254901960785,.431372549,0,.568627451,.23529411764705885,.431372549,0,.568627451,.23921568627450984,.431372549,0,.568627451,.24313725490196078,.431372549,0,.568627451,.24705882352941178,.431372549,0,.568627451,.25098039215686274,.431372549,0,.568627451,.2549019607843137,.431372549,0,.568627451,.25882352941176473,.431372549,0,.568627451,.2627450980392157,.431372549,0,.568627451,.26666666666666666,.431372549,0,.568627451,.27058823529411763,.431372549,0,.568627451,.27450980392156865,.431372549,0,.568627451,.2784313725490196,.431372549,0,.568627451,.2823529411764706,.431372549,0,.568627451,.28627450980392155,.431372549,0,.568627451,.2901960784313726,.431372549,0,.568627451,.29411764705882354,.431372549,0,.568627451,.2980392156862745,.431372549,0,.568627451,.30196078431372547,.431372549,0,.568627451,.3058823529411765,.2509803922,.3333333333,.6509803922,.30980392156862746,.2509803922,.3333333333,.6509803922,.3137254901960784,.2509803922,.3333333333,.6509803922,.3176470588235294,.2509803922,.3333333333,.6509803922,.3215686274509804,.2509803922,.3333333333,.6509803922,.3254901960784314,.2509803922,.3333333333,.6509803922,.32941176470588235,.2509803922,.3333333333,.6509803922,.3333333333333333,.2509803922,.3333333333,.6509803922,.33725490196078434,.2509803922,.3333333333,.6509803922,.3411764705882353,.2509803922,.3333333333,.6509803922,.34509803921568627,.2509803922,.3333333333,.6509803922,.34901960784313724,.2509803922,.3333333333,.6509803922,.35294117647058826,.2509803922,.3333333333,.6509803922,.3568627450980392,.2509803922,.3333333333,.6509803922,.3607843137254902,.2509803922,.3333333333,.6509803922,.36470588235294116,.2509803922,.3333333333,.6509803922,.3686274509803922,.2509803922,.3333333333,.6509803922,.37254901960784315,.2509803922,.3333333333,.6509803922,.3764705882352941,.2509803922,.3333333333,.6509803922,.3803921568627451,.2509803922,.3333333333,.6509803922,.3843137254901961,.2509803922,.3333333333,.6509803922,.38823529411764707,.2509803922,.3333333333,.6509803922,.39215686274509803,.2509803922,.3333333333,.6509803922,.396078431372549,.2509803922,.3333333333,.6509803922,.4,.2509803922,.3333333333,.6509803922,.403921568627451,.2509803922,.3333333333,.6509803922,.40784313725490196,0,.8,1,.4117647058823529,0,.8,1,.41568627450980394,0,.8,1,.4196078431372549,0,.8,1,.4235294117647059,0,.8,1,.42745098039215684,0,.8,1,.43137254901960786,0,.8,1,.43529411764705883,0,.8,1,.4392156862745098,0,.8,1,.44313725490196076,0,.8,1,.4470588235294118,0,.8,1,.45098039215686275,0,.8,1,.4549019607843137,0,.8,1,.4588235294117647,0,.8,1,.4627450980392157,0,.8,1,.4666666666666667,0,.8,1,.4705882352941177,0,.8,1,.4745098039215686,0,.8,1,.4784313725490197,0,.8,1,.48235294117647065,0,.8,1,.48627450980392156,0,.8,1,.49019607843137253,0,.8,1,.49411764705882355,0,.8,1,.4980392156862745,0,.8,1,.5019607843137255,0,.8,1,.5058823529411764,0,.6666666667,.5333333333,.5098039215686274,0,.6666666667,.5333333333,.5137254901960784,0,.6666666667,.5333333333,.5176470588235295,0,.6666666667,.5333333333,.5215686274509804,0,.6666666667,.5333333333,.5254901960784314,0,.6666666667,.5333333333,.5294117647058824,0,.6666666667,.5333333333,.5333333333333333,0,.6666666667,.5333333333,.5372549019607843,0,.6666666667,.5333333333,.5411764705882353,0,.6666666667,.5333333333,.5450980392156862,0,.6666666667,.5333333333,.5490196078431373,0,.6666666667,.5333333333,.5529411764705883,0,.6666666667,.5333333333,.5568627450980392,0,.6666666667,.5333333333,.5607843137254902,0,.6666666667,.5333333333,.5647058823529412,0,.6666666667,.5333333333,.5686274509803921,0,.6666666667,.5333333333,.5725490196078431,0,.6666666667,.5333333333,.5764705882352941,0,.6666666667,.5333333333,.5803921568627451,0,.6666666667,.5333333333,.5843137254901961,0,.6666666667,.5333333333,.5882352941176471,0,.6666666667,.5333333333,.592156862745098,0,.6666666667,.5333333333,.596078431372549,0,.6666666667,.5333333333,.6,0,.6666666667,.5333333333,.6039215686274509,0,.6666666667,.5333333333,.6078431372549019,.4,1,.4,.611764705882353,.4,1,.4,.615686274509804,.4,1,.4,.6196078431372549,.4,1,.4,.6235294117647059,.4,1,.4,.6274509803921569,.4,1,.4,.6313725490196078,.4,1,.4,.6352941176470588,.4,1,.4,.6392156862745098,.4,1,.4,.6431372549019608,.4,1,.4,.6470588235294118,.4,1,.4,.6509803921568628,.4,1,.4,.6549019607843137,.4,1,.4,.6588235294117647,.4,1,.4,.6627450980392157,.4,1,.4,.6666666666666666,.4,1,.4,.6705882352941176,.4,1,.4,.6745098039215687,.4,1,.4,.6784313725490196,.4,1,.4,.6823529411764706,.4,1,.4,.6862745098039216,.4,1,.4,.6901960784313725,.4,1,.4,.6941176470588235,.4,1,.4,.6980392156862745,.4,1,.4,.7019607843137254,.4,1,.4,.7058823529411765,1,.9490196078,0,.7098039215686275,1,.9490196078,0,.7137254901960784,1,.9490196078,0,.7176470588235294,1,.9490196078,0,.7215686274509804,1,.9490196078,0,.7254901960784313,1,.9490196078,0,.7294117647058823,1,.9490196078,0,.7333333333333333,1,.9490196078,0,.7372549019607844,1,.9490196078,0,.7411764705882353,1,.9490196078,0,.7450980392156863,1,.9490196078,0,.7490196078431373,1,.9490196078,0,.7529411764705882,1,.9490196078,0,.7568627450980392,1,.9490196078,0,.7607843137254902,1,.9490196078,0,.7647058823529411,1,.9490196078,0,.7686274509803922,1,.9490196078,0,.7725490196078432,1,.9490196078,0,.7764705882352941,1,.9490196078,0,.7803921568627451,1,.9490196078,0,.7843137254901961,1,.9490196078,0,.788235294117647,1,.9490196078,0,.792156862745098,1,.9490196078,0,.796078431372549,1,.9490196078,0,.8,1,.9490196078,0,.803921568627451,1,.9490196078,0,.807843137254902,.9490196078,.6509803922,.2509803922,.8117647058823529,.9490196078,.6509803922,.2509803922,.8156862745098039,.9490196078,.6509803922,.2509803922,.8196078431372549,.9490196078,.6509803922,.2509803922,.8235294117647058,.9490196078,.6509803922,.2509803922,.8274509803921568,.9490196078,.6509803922,.2509803922,.8313725490196079,.9490196078,.6509803922,.2509803922,.8352941176470589,.9490196078,.6509803922,.2509803922,.8392156862745098,.9490196078,.6509803922,.2509803922,.8431372549019608,.9490196078,.6509803922,.2509803922,.8470588235294118,.9490196078,.6509803922,.2509803922,.8509803921568627,.9490196078,.6509803922,.2509803922,.8549019607843137,.9490196078,.6509803922,.2509803922,.8588235294117647,.9490196078,.6509803922,.2509803922,.8627450980392157,.9490196078,.6509803922,.2509803922,.8666666666666667,.9490196078,.6509803922,.2509803922,.8705882352941177,.9490196078,.6509803922,.2509803922,.8745098039215686,.9490196078,.6509803922,.2509803922,.8784313725490196,.9490196078,.6509803922,.2509803922,.8823529411764706,.9490196078,.6509803922,.2509803922,.8862745098039215,.9490196078,.6509803922,.2509803922,.8901960784313725,.9490196078,.6509803922,.2509803922,.8941176470588236,.9490196078,.6509803922,.2509803922,.8980392156862745,.9490196078,.6509803922,.2509803922,.9019607843137255,.9490196078,.6509803922,.2509803922,.9058823529411765,.9490196078,.6509803922,.2509803922,.9098039215686274,1,0,0,.9137254901960784,1,0,0,.9176470588235294,1,0,0,.9215686274509803,1,0,0,.9254901960784314,1,0,0,.9294117647058824,1,0,0,.9333333333333333,1,0,0,.9372549019607843,1,0,0,.9411764705882354,1,0,0,.9450980392156864,1,0,0,.9490196078431372,1,0,0,.9529411764705882,1,0,0,.9568627450980394,1,0,0,.9607843137254903,1,0,0,.9647058823529413,1,0,0,.9686274509803922,1,0,0,.9725490196078431,1,0,0,.9764705882352941,1,0,0,.9803921568627451,1,0,0,.984313725490196,1,0,0,.9882352941176471,1,0,0,.9921568627450981,1,0,0,.996078431372549,1,0,0,1,1,0,0],description:"SUV"},{ColorSpace:"RGB",Name:"ge_256",name:"ge_256",RGBPoints:[0,.0039215686,.0078431373,.0078431373,.00392156862745098,.0039215686,.0078431373,.0078431373,.00784313725490196,.0039215686,.0078431373,.0117647059,.011764705882352941,.0039215686,.0117647059,.0156862745,.01568627450980392,.0039215686,.0117647059,.0196078431,.0196078431372549,.0039215686,.0156862745,.0235294118,.023529411764705882,.0039215686,.0156862745,.0274509804,.027450980392156862,.0039215686,.0196078431,.031372549,.03137254901960784,.0039215686,.0196078431,.0352941176,.03529411764705882,.0039215686,.0235294118,.0392156863,.0392156862745098,.0039215686,.0235294118,.0431372549,.043137254901960784,.0039215686,.0274509804,.0470588235,.047058823529411764,.0039215686,.0274509804,.0509803922,.050980392156862744,.0039215686,.031372549,.0549019608,.054901960784313725,.0039215686,.031372549,.0588235294,.05882352941176471,.0039215686,.0352941176,.062745098,.06274509803921569,.0039215686,.0352941176,.0666666667,.06666666666666667,.0039215686,.0392156863,.0705882353,.07058823529411765,.0039215686,.0392156863,.0745098039,.07450980392156863,.0039215686,.0431372549,.0784313725,.0784313725490196,.0039215686,.0431372549,.0823529412,.08235294117647059,.0039215686,.0470588235,.0862745098,.08627450980392157,.0039215686,.0470588235,.0901960784,.09019607843137255,.0039215686,.0509803922,.0941176471,.09411764705882353,.0039215686,.0509803922,.0980392157,.09803921568627451,.0039215686,.0549019608,.1019607843,.10196078431372549,.0039215686,.0549019608,.1058823529,.10588235294117647,.0039215686,.0588235294,.1098039216,.10980392156862745,.0039215686,.0588235294,.1137254902,.11372549019607843,.0039215686,.062745098,.1176470588,.11764705882352942,.0039215686,.062745098,.1215686275,.12156862745098039,.0039215686,.0666666667,.1254901961,.12549019607843137,.0039215686,.0666666667,.1294117647,.12941176470588237,.0039215686,.0705882353,.1333333333,.13333333333333333,.0039215686,.0705882353,.137254902,.13725490196078433,.0039215686,.0745098039,.1411764706,.1411764705882353,.0039215686,.0745098039,.1450980392,.1450980392156863,.0039215686,.0784313725,.1490196078,.14901960784313725,.0039215686,.0784313725,.1529411765,.15294117647058825,.0039215686,.0823529412,.1568627451,.1568627450980392,.0039215686,.0823529412,.1607843137,.1607843137254902,.0039215686,.0862745098,.1647058824,.16470588235294117,.0039215686,.0862745098,.168627451,.16862745098039217,.0039215686,.0901960784,.1725490196,.17254901960784313,.0039215686,.0901960784,.1764705882,.17647058823529413,.0039215686,.0941176471,.1803921569,.1803921568627451,.0039215686,.0941176471,.1843137255,.1843137254901961,.0039215686,.0980392157,.1882352941,.18823529411764706,.0039215686,.0980392157,.1921568627,.19215686274509805,.0039215686,.1019607843,.1960784314,.19607843137254902,.0039215686,.1019607843,.2,.2,.0039215686,.1058823529,.2039215686,.20392156862745098,.0039215686,.1058823529,.2078431373,.20784313725490197,.0039215686,.1098039216,.2117647059,.21176470588235294,.0039215686,.1098039216,.2156862745,.21568627450980393,.0039215686,.1137254902,.2196078431,.2196078431372549,.0039215686,.1137254902,.2235294118,.2235294117647059,.0039215686,.1176470588,.2274509804,.22745098039215686,.0039215686,.1176470588,.231372549,.23137254901960785,.0039215686,.1215686275,.2352941176,.23529411764705885,.0039215686,.1215686275,.2392156863,.23921568627450984,.0039215686,.1254901961,.2431372549,.24313725490196078,.0039215686,.1254901961,.2470588235,.24705882352941178,.0039215686,.1294117647,.2509803922,.25098039215686274,.0039215686,.1294117647,.2509803922,.2549019607843137,.0078431373,.1254901961,.2549019608,.25882352941176473,.0156862745,.1254901961,.2588235294,.2627450980392157,.0235294118,.1215686275,.262745098,.26666666666666666,.031372549,.1215686275,.2666666667,.27058823529411763,.0392156863,.1176470588,.2705882353,.27450980392156865,.0470588235,.1176470588,.2745098039,.2784313725490196,.0549019608,.1137254902,.2784313725,.2823529411764706,.062745098,.1137254902,.2823529412,.28627450980392155,.0705882353,.1098039216,.2862745098,.2901960784313726,.0784313725,.1098039216,.2901960784,.29411764705882354,.0862745098,.1058823529,.2941176471,.2980392156862745,.0941176471,.1058823529,.2980392157,.30196078431372547,.1019607843,.1019607843,.3019607843,.3058823529411765,.1098039216,.1019607843,.3058823529,.30980392156862746,.1176470588,.0980392157,.3098039216,.3137254901960784,.1254901961,.0980392157,.3137254902,.3176470588235294,.1333333333,.0941176471,.3176470588,.3215686274509804,.1411764706,.0941176471,.3215686275,.3254901960784314,.1490196078,.0901960784,.3254901961,.32941176470588235,.1568627451,.0901960784,.3294117647,.3333333333333333,.1647058824,.0862745098,.3333333333,.33725490196078434,.1725490196,.0862745098,.337254902,.3411764705882353,.1803921569,.0823529412,.3411764706,.34509803921568627,.1882352941,.0823529412,.3450980392,.34901960784313724,.1960784314,.0784313725,.3490196078,.35294117647058826,.2039215686,.0784313725,.3529411765,.3568627450980392,.2117647059,.0745098039,.3568627451,.3607843137254902,.2196078431,.0745098039,.3607843137,.36470588235294116,.2274509804,.0705882353,.3647058824,.3686274509803922,.2352941176,.0705882353,.368627451,.37254901960784315,.2431372549,.0666666667,.3725490196,.3764705882352941,.2509803922,.0666666667,.3764705882,.3803921568627451,.2549019608,.062745098,.3803921569,.3843137254901961,.262745098,.062745098,.3843137255,.38823529411764707,.2705882353,.0588235294,.3882352941,.39215686274509803,.2784313725,.0588235294,.3921568627,.396078431372549,.2862745098,.0549019608,.3960784314,.4,.2941176471,.0549019608,.4,.403921568627451,.3019607843,.0509803922,.4039215686,.40784313725490196,.3098039216,.0509803922,.4078431373,.4117647058823529,.3176470588,.0470588235,.4117647059,.41568627450980394,.3254901961,.0470588235,.4156862745,.4196078431372549,.3333333333,.0431372549,.4196078431,.4235294117647059,.3411764706,.0431372549,.4235294118,.42745098039215684,.3490196078,.0392156863,.4274509804,.43137254901960786,.3568627451,.0392156863,.431372549,.43529411764705883,.3647058824,.0352941176,.4352941176,.4392156862745098,.3725490196,.0352941176,.4392156863,.44313725490196076,.3803921569,.031372549,.4431372549,.4470588235294118,.3882352941,.031372549,.4470588235,.45098039215686275,.3960784314,.0274509804,.4509803922,.4549019607843137,.4039215686,.0274509804,.4549019608,.4588235294117647,.4117647059,.0235294118,.4588235294,.4627450980392157,.4196078431,.0235294118,.462745098,.4666666666666667,.4274509804,.0196078431,.4666666667,.4705882352941177,.4352941176,.0196078431,.4705882353,.4745098039215686,.4431372549,.0156862745,.4745098039,.4784313725490197,.4509803922,.0156862745,.4784313725,.48235294117647065,.4588235294,.0117647059,.4823529412,.48627450980392156,.4666666667,.0117647059,.4862745098,.49019607843137253,.4745098039,.0078431373,.4901960784,.49411764705882355,.4823529412,.0078431373,.4941176471,.4980392156862745,.4901960784,.0039215686,.4980392157,.5019607843137255,.4980392157,.0117647059,.4980392157,.5058823529411764,.5058823529,.0156862745,.4901960784,.5098039215686274,.5137254902,.0235294118,.4823529412,.5137254901960784,.5215686275,.0274509804,.4745098039,.5176470588235295,.5294117647,.0352941176,.4666666667,.5215686274509804,.537254902,.0392156863,.4588235294,.5254901960784314,.5450980392,.0470588235,.4509803922,.5294117647058824,.5529411765,.0509803922,.4431372549,.5333333333333333,.5607843137,.0588235294,.4352941176,.5372549019607843,.568627451,.062745098,.4274509804,.5411764705882353,.5764705882,.0705882353,.4196078431,.5450980392156862,.5843137255,.0745098039,.4117647059,.5490196078431373,.5921568627,.0823529412,.4039215686,.5529411764705883,.6,.0862745098,.3960784314,.5568627450980392,.6078431373,.0941176471,.3882352941,.5607843137254902,.6156862745,.0980392157,.3803921569,.5647058823529412,.6235294118,.1058823529,.3725490196,.5686274509803921,.631372549,.1098039216,.3647058824,.5725490196078431,.6392156863,.1176470588,.3568627451,.5764705882352941,.6470588235,.1215686275,.3490196078,.5803921568627451,.6549019608,.1294117647,.3411764706,.5843137254901961,.662745098,.1333333333,.3333333333,.5882352941176471,.6705882353,.1411764706,.3254901961,.592156862745098,.6784313725,.1450980392,.3176470588,.596078431372549,.6862745098,.1529411765,.3098039216,.6,.6941176471,.1568627451,.3019607843,.6039215686274509,.7019607843,.1647058824,.2941176471,.6078431372549019,.7098039216,.168627451,.2862745098,.611764705882353,.7176470588,.1764705882,.2784313725,.615686274509804,.7254901961,.1803921569,.2705882353,.6196078431372549,.7333333333,.1882352941,.262745098,.6235294117647059,.7411764706,.1921568627,.2549019608,.6274509803921569,.7490196078,.2,.2509803922,.6313725490196078,.7529411765,.2039215686,.2431372549,.6352941176470588,.7607843137,.2117647059,.2352941176,.6392156862745098,.768627451,.2156862745,.2274509804,.6431372549019608,.7764705882,.2235294118,.2196078431,.6470588235294118,.7843137255,.2274509804,.2117647059,.6509803921568628,.7921568627,.2352941176,.2039215686,.6549019607843137,.8,.2392156863,.1960784314,.6588235294117647,.8078431373,.2470588235,.1882352941,.6627450980392157,.8156862745,.2509803922,.1803921569,.6666666666666666,.8235294118,.2549019608,.1725490196,.6705882352941176,.831372549,.2588235294,.1647058824,.6745098039215687,.8392156863,.2666666667,.1568627451,.6784313725490196,.8470588235,.2705882353,.1490196078,.6823529411764706,.8549019608,.2784313725,.1411764706,.6862745098039216,.862745098,.2823529412,.1333333333,.6901960784313725,.8705882353,.2901960784,.1254901961,.6941176470588235,.8784313725,.2941176471,.1176470588,.6980392156862745,.8862745098,.3019607843,.1098039216,.7019607843137254,.8941176471,.3058823529,.1019607843,.7058823529411765,.9019607843,.3137254902,.0941176471,.7098039215686275,.9098039216,.3176470588,.0862745098,.7137254901960784,.9176470588,.3254901961,.0784313725,.7176470588235294,.9254901961,.3294117647,.0705882353,.7215686274509804,.9333333333,.337254902,.062745098,.7254901960784313,.9411764706,.3411764706,.0549019608,.7294117647058823,.9490196078,.3490196078,.0470588235,.7333333333333333,.9568627451,.3529411765,.0392156863,.7372549019607844,.9647058824,.3607843137,.031372549,.7411764705882353,.9725490196,.3647058824,.0235294118,.7450980392156863,.9803921569,.3725490196,.0156862745,.7490196078431373,.9882352941,.3725490196,.0039215686,.7529411764705882,.9960784314,.3843137255,.0156862745,.7568627450980392,.9960784314,.3921568627,.031372549,.7607843137254902,.9960784314,.4039215686,.0470588235,.7647058823529411,.9960784314,.4117647059,.062745098,.7686274509803922,.9960784314,.4235294118,.0784313725,.7725490196078432,.9960784314,.431372549,.0941176471,.7764705882352941,.9960784314,.4431372549,.1098039216,.7803921568627451,.9960784314,.4509803922,.1254901961,.7843137254901961,.9960784314,.462745098,.1411764706,.788235294117647,.9960784314,.4705882353,.1568627451,.792156862745098,.9960784314,.4823529412,.1725490196,.796078431372549,.9960784314,.4901960784,.1882352941,.8,.9960784314,.5019607843,.2039215686,.803921568627451,.9960784314,.5098039216,.2196078431,.807843137254902,.9960784314,.5215686275,.2352941176,.8117647058823529,.9960784314,.5294117647,.2509803922,.8156862745098039,.9960784314,.5411764706,.262745098,.8196078431372549,.9960784314,.5490196078,.2784313725,.8235294117647058,.9960784314,.5607843137,.2941176471,.8274509803921568,.9960784314,.568627451,.3098039216,.8313725490196079,.9960784314,.5803921569,.3254901961,.8352941176470589,.9960784314,.5882352941,.3411764706,.8392156862745098,.9960784314,.6,.3568627451,.8431372549019608,.9960784314,.6078431373,.3725490196,.8470588235294118,.9960784314,.6196078431,.3882352941,.8509803921568627,.9960784314,.6274509804,.4039215686,.8549019607843137,.9960784314,.6392156863,.4196078431,.8588235294117647,.9960784314,.6470588235,.4352941176,.8627450980392157,.9960784314,.6588235294,.4509803922,.8666666666666667,.9960784314,.6666666667,.4666666667,.8705882352941177,.9960784314,.6784313725,.4823529412,.8745098039215686,.9960784314,.6862745098,.4980392157,.8784313725490196,.9960784314,.6980392157,.5137254902,.8823529411764706,.9960784314,.7058823529,.5294117647,.8862745098039215,.9960784314,.7176470588,.5450980392,.8901960784313725,.9960784314,.7254901961,.5607843137,.8941176470588236,.9960784314,.737254902,.5764705882,.8980392156862745,.9960784314,.7450980392,.5921568627,.9019607843137255,.9960784314,.7529411765,.6078431373,.9058823529411765,.9960784314,.7607843137,.6235294118,.9098039215686274,.9960784314,.7725490196,.6392156863,.9137254901960784,.9960784314,.7803921569,.6549019608,.9176470588235294,.9960784314,.7921568627,.6705882353,.9215686274509803,.9960784314,.8,.6862745098,.9254901960784314,.9960784314,.8117647059,.7019607843,.9294117647058824,.9960784314,.8196078431,.7176470588,.9333333333333333,.9960784314,.831372549,.7333333333,.9372549019607843,.9960784314,.8392156863,.7490196078,.9411764705882354,.9960784314,.8509803922,.7607843137,.9450980392156864,.9960784314,.8588235294,.7764705882,.9490196078431372,.9960784314,.8705882353,.7921568627,.9529411764705882,.9960784314,.8784313725,.8078431373,.9568627450980394,.9960784314,.8901960784,.8235294118,.9607843137254903,.9960784314,.8980392157,.8392156863,.9647058823529413,.9960784314,.9098039216,.8549019608,.9686274509803922,.9960784314,.9176470588,.8705882353,.9725490196078431,.9960784314,.9294117647,.8862745098,.9764705882352941,.9960784314,.937254902,.9019607843,.9803921568627451,.9960784314,.9490196078,.9176470588,.984313725490196,.9960784314,.9568627451,.9333333333,.9882352941176471,.9960784314,.968627451,.9490196078,.9921568627450981,.9960784314,.9764705882,.9647058824,.996078431372549,.9960784314,.9882352941,.9803921569,1,.9960784314,.9882352941,.9803921569],description:"GE 256"},{ColorSpace:"RGB",Name:"ge",name:"ge",RGBPoints:[0,.0078431373,.0078431373,.0078431373,.00392156862745098,.0078431373,.0078431373,.0078431373,.00784313725490196,.0078431373,.0078431373,.0078431373,.011764705882352941,.0078431373,.0078431373,.0078431373,.01568627450980392,.0078431373,.0078431373,.0078431373,.0196078431372549,.0078431373,.0078431373,.0078431373,.023529411764705882,.0078431373,.0078431373,.0078431373,.027450980392156862,.0078431373,.0078431373,.0078431373,.03137254901960784,.0078431373,.0078431373,.0078431373,.03529411764705882,.0078431373,.0078431373,.0078431373,.0392156862745098,.0078431373,.0078431373,.0078431373,.043137254901960784,.0078431373,.0078431373,.0078431373,.047058823529411764,.0078431373,.0078431373,.0078431373,.050980392156862744,.0078431373,.0078431373,.0078431373,.054901960784313725,.0078431373,.0078431373,.0078431373,.05882352941176471,.0117647059,.0078431373,.0078431373,.06274509803921569,.0078431373,.0156862745,.0156862745,.06666666666666667,.0078431373,.0235294118,.0235294118,.07058823529411765,.0078431373,.031372549,.031372549,.07450980392156863,.0078431373,.0392156863,.0392156863,.0784313725490196,.0078431373,.0470588235,.0470588235,.08235294117647059,.0078431373,.0549019608,.0549019608,.08627450980392157,.0078431373,.062745098,.062745098,.09019607843137255,.0078431373,.0705882353,.0705882353,.09411764705882353,.0078431373,.0784313725,.0784313725,.09803921568627451,.0078431373,.0901960784,.0862745098,.10196078431372549,.0078431373,.0980392157,.0941176471,.10588235294117647,.0078431373,.1058823529,.1019607843,.10980392156862745,.0078431373,.1137254902,.1098039216,.11372549019607843,.0078431373,.1215686275,.1176470588,.11764705882352942,.0078431373,.1294117647,.1254901961,.12156862745098039,.0078431373,.137254902,.1333333333,.12549019607843137,.0078431373,.1450980392,.1411764706,.12941176470588237,.0078431373,.1529411765,.1490196078,.13333333333333333,.0078431373,.1647058824,.1568627451,.13725490196078433,.0078431373,.1725490196,.1647058824,.1411764705882353,.0078431373,.1803921569,.1725490196,.1450980392156863,.0078431373,.1882352941,.1803921569,.14901960784313725,.0078431373,.1960784314,.1882352941,.15294117647058825,.0078431373,.2039215686,.1960784314,.1568627450980392,.0078431373,.2117647059,.2039215686,.1607843137254902,.0078431373,.2196078431,.2117647059,.16470588235294117,.0078431373,.2274509804,.2196078431,.16862745098039217,.0078431373,.2352941176,.2274509804,.17254901960784313,.0078431373,.2470588235,.2352941176,.17647058823529413,.0078431373,.2509803922,.2431372549,.1803921568627451,.0078431373,.2549019608,.2509803922,.1843137254901961,.0078431373,.262745098,.2509803922,.18823529411764706,.0078431373,.2705882353,.2588235294,.19215686274509805,.0078431373,.2784313725,.2666666667,.19607843137254902,.0078431373,.2862745098,.2745098039,.2,.0078431373,.2941176471,.2823529412,.20392156862745098,.0078431373,.3019607843,.2901960784,.20784313725490197,.0078431373,.3137254902,.2980392157,.21176470588235294,.0078431373,.3215686275,.3058823529,.21568627450980393,.0078431373,.3294117647,.3137254902,.2196078431372549,.0078431373,.337254902,.3215686275,.2235294117647059,.0078431373,.3450980392,.3294117647,.22745098039215686,.0078431373,.3529411765,.337254902,.23137254901960785,.0078431373,.3607843137,.3450980392,.23529411764705885,.0078431373,.368627451,.3529411765,.23921568627450984,.0078431373,.3764705882,.3607843137,.24313725490196078,.0078431373,.3843137255,.368627451,.24705882352941178,.0078431373,.3960784314,.3764705882,.25098039215686274,.0078431373,.4039215686,.3843137255,.2549019607843137,.0078431373,.4117647059,.3921568627,.25882352941176473,.0078431373,.4196078431,.4,.2627450980392157,.0078431373,.4274509804,.4078431373,.26666666666666666,.0078431373,.4352941176,.4156862745,.27058823529411763,.0078431373,.4431372549,.4235294118,.27450980392156865,.0078431373,.4509803922,.431372549,.2784313725490196,.0078431373,.4588235294,.4392156863,.2823529411764706,.0078431373,.4705882353,.4470588235,.28627450980392155,.0078431373,.4784313725,.4549019608,.2901960784313726,.0078431373,.4862745098,.462745098,.29411764705882354,.0078431373,.4941176471,.4705882353,.2980392156862745,.0078431373,.5019607843,.4784313725,.30196078431372547,.0117647059,.5098039216,.4862745098,.3058823529411765,.0196078431,.5019607843,.4941176471,.30980392156862746,.0274509804,.4941176471,.5058823529,.3137254901960784,.0352941176,.4862745098,.5137254902,.3176470588235294,.0431372549,.4784313725,.5215686275,.3215686274509804,.0509803922,.4705882353,.5294117647,.3254901960784314,.0588235294,.462745098,.537254902,.32941176470588235,.0666666667,.4549019608,.5450980392,.3333333333333333,.0745098039,.4470588235,.5529411765,.33725490196078434,.0823529412,.4392156863,.5607843137,.3411764705882353,.0901960784,.431372549,.568627451,.34509803921568627,.0980392157,.4235294118,.5764705882,.34901960784313724,.1058823529,.4156862745,.5843137255,.35294117647058826,.1137254902,.4078431373,.5921568627,.3568627450980392,.1215686275,.4,.6,.3607843137254902,.1294117647,.3921568627,.6078431373,.36470588235294116,.137254902,.3843137255,.6156862745,.3686274509803922,.1450980392,.3764705882,.6235294118,.37254901960784315,.1529411765,.368627451,.631372549,.3764705882352941,.1607843137,.3607843137,.6392156863,.3803921568627451,.168627451,.3529411765,.6470588235,.3843137254901961,.1764705882,.3450980392,.6549019608,.38823529411764707,.1843137255,.337254902,.662745098,.39215686274509803,.1921568627,.3294117647,.6705882353,.396078431372549,.2,.3215686275,.6784313725,.4,.2078431373,.3137254902,.6862745098,.403921568627451,.2156862745,.3058823529,.6941176471,.40784313725490196,.2235294118,.2980392157,.7019607843,.4117647058823529,.231372549,.2901960784,.7098039216,.41568627450980394,.2392156863,.2823529412,.7176470588,.4196078431372549,.2470588235,.2745098039,.7254901961,.4235294117647059,.2509803922,.2666666667,.7333333333,.42745098039215684,.2509803922,.2588235294,.7411764706,.43137254901960786,.2588235294,.2509803922,.7490196078,.43529411764705883,.2666666667,.2509803922,.7490196078,.4392156862745098,.2745098039,.2431372549,.7568627451,.44313725490196076,.2823529412,.2352941176,.7647058824,.4470588235294118,.2901960784,.2274509804,.7725490196,.45098039215686275,.2980392157,.2196078431,.7803921569,.4549019607843137,.3058823529,.2117647059,.7882352941,.4588235294117647,.3137254902,.2039215686,.7960784314,.4627450980392157,.3215686275,.1960784314,.8039215686,.4666666666666667,.3294117647,.1882352941,.8117647059,.4705882352941177,.337254902,.1803921569,.8196078431,.4745098039215686,.3450980392,.1725490196,.8274509804,.4784313725490197,.3529411765,.1647058824,.8352941176,.48235294117647065,.3607843137,.1568627451,.8431372549,.48627450980392156,.368627451,.1490196078,.8509803922,.49019607843137253,.3764705882,.1411764706,.8588235294,.49411764705882355,.3843137255,.1333333333,.8666666667,.4980392156862745,.3921568627,.1254901961,.8745098039,.5019607843137255,.4,.1176470588,.8823529412,.5058823529411764,.4078431373,.1098039216,.8901960784,.5098039215686274,.4156862745,.1019607843,.8980392157,.5137254901960784,.4235294118,.0941176471,.9058823529,.5176470588235295,.431372549,.0862745098,.9137254902,.5215686274509804,.4392156863,.0784313725,.9215686275,.5254901960784314,.4470588235,.0705882353,.9294117647,.5294117647058824,.4549019608,.062745098,.937254902,.5333333333333333,.462745098,.0549019608,.9450980392,.5372549019607843,.4705882353,.0470588235,.9529411765,.5411764705882353,.4784313725,.0392156863,.9607843137,.5450980392156862,.4862745098,.031372549,.968627451,.5490196078431373,.4941176471,.0235294118,.9764705882,.5529411764705883,.4980392157,.0156862745,.9843137255,.5568627450980392,.5058823529,.0078431373,.9921568627,.5607843137254902,.5137254902,.0156862745,.9803921569,.5647058823529412,.5215686275,.0235294118,.9647058824,.5686274509803921,.5294117647,.0352941176,.9490196078,.5725490196078431,.537254902,.0431372549,.9333333333,.5764705882352941,.5450980392,.0509803922,.9176470588,.5803921568627451,.5529411765,.062745098,.9019607843,.5843137254901961,.5607843137,.0705882353,.8862745098,.5882352941176471,.568627451,.0784313725,.8705882353,.592156862745098,.5764705882,.0901960784,.8549019608,.596078431372549,.5843137255,.0980392157,.8392156863,.6,.5921568627,.1098039216,.8235294118,.6039215686274509,.6,.1176470588,.8078431373,.6078431372549019,.6078431373,.1254901961,.7921568627,.611764705882353,.6156862745,.137254902,.7764705882,.615686274509804,.6235294118,.1450980392,.7607843137,.6196078431372549,.631372549,.1529411765,.7490196078,.6235294117647059,.6392156863,.1647058824,.737254902,.6274509803921569,.6470588235,.1725490196,.7215686275,.6313725490196078,.6549019608,.1843137255,.7058823529,.6352941176470588,.662745098,.1921568627,.6901960784,.6392156862745098,.6705882353,.2,.6745098039,.6431372549019608,.6784313725,.2117647059,.6588235294,.6470588235294118,.6862745098,.2196078431,.6431372549,.6509803921568628,.6941176471,.2274509804,.6274509804,.6549019607843137,.7019607843,.2392156863,.6117647059,.6588235294117647,.7098039216,.2470588235,.5960784314,.6627450980392157,.7176470588,.2509803922,.5803921569,.6666666666666666,.7254901961,.2588235294,.5647058824,.6705882352941176,.7333333333,.2666666667,.5490196078,.6745098039215687,.7411764706,.2784313725,.5333333333,.6784313725490196,.7490196078,.2862745098,.5176470588,.6823529411764706,.7490196078,.2941176471,.5019607843,.6862745098039216,.7529411765,.3058823529,.4862745098,.6901960784313725,.7607843137,.3137254902,.4705882353,.6941176470588235,.768627451,.3215686275,.4549019608,.6980392156862745,.7764705882,.3333333333,.4392156863,.7019607843137254,.7843137255,.3411764706,.4235294118,.7058823529411765,.7921568627,.3529411765,.4078431373,.7098039215686275,.8,.3607843137,.3921568627,.7137254901960784,.8078431373,.368627451,.3764705882,.7176470588235294,.8156862745,.3803921569,.3607843137,.7215686274509804,.8235294118,.3882352941,.3450980392,.7254901960784313,.831372549,.3960784314,.3294117647,.7294117647058823,.8392156863,.4078431373,.3137254902,.7333333333333333,.8470588235,.4156862745,.2980392157,.7372549019607844,.8549019608,.4274509804,.2823529412,.7411764705882353,.862745098,.4352941176,.2666666667,.7450980392156863,.8705882353,.4431372549,.2509803922,.7490196078431373,.8784313725,.4549019608,.2431372549,.7529411764705882,.8862745098,.462745098,.2274509804,.7568627450980392,.8941176471,.4705882353,.2117647059,.7607843137254902,.9019607843,.4823529412,.1960784314,.7647058823529411,.9098039216,.4901960784,.1803921569,.7686274509803922,.9176470588,.4980392157,.1647058824,.7725490196078432,.9254901961,.5098039216,.1490196078,.7764705882352941,.9333333333,.5176470588,.1333333333,.7803921568627451,.9411764706,.5294117647,.1176470588,.7843137254901961,.9490196078,.537254902,.1019607843,.788235294117647,.9568627451,.5450980392,.0862745098,.792156862745098,.9647058824,.5568627451,.0705882353,.796078431372549,.9725490196,.5647058824,.0549019608,.8,.9803921569,.5725490196,.0392156863,.803921568627451,.9882352941,.5843137255,.0235294118,.807843137254902,.9921568627,.5921568627,.0078431373,.8117647058823529,.9921568627,.6039215686,.0274509804,.8156862745098039,.9921568627,.6117647059,.0509803922,.8196078431372549,.9921568627,.6196078431,.0745098039,.8235294117647058,.9921568627,.631372549,.0980392157,.8274509803921568,.9921568627,.6392156863,.1215686275,.8313725490196079,.9921568627,.6470588235,.1411764706,.8352941176470589,.9921568627,.6588235294,.1647058824,.8392156862745098,.9921568627,.6666666667,.1882352941,.8431372549019608,.9921568627,.6784313725,.2117647059,.8470588235294118,.9921568627,.6862745098,.2352941176,.8509803921568627,.9921568627,.6941176471,.2509803922,.8549019607843137,.9921568627,.7058823529,.2705882353,.8588235294117647,.9921568627,.7137254902,.2941176471,.8627450980392157,.9921568627,.7215686275,.3176470588,.8666666666666667,.9921568627,.7333333333,.3411764706,.8705882352941177,.9921568627,.7411764706,.3647058824,.8745098039215686,.9921568627,.7490196078,.3843137255,.8784313725490196,.9921568627,.7529411765,.4078431373,.8823529411764706,.9921568627,.7607843137,.431372549,.8862745098039215,.9921568627,.7725490196,.4549019608,.8901960784313725,.9921568627,.7803921569,.4784313725,.8941176470588236,.9921568627,.7882352941,.4980392157,.8980392156862745,.9921568627,.8,.5215686275,.9019607843137255,.9921568627,.8078431373,.5450980392,.9058823529411765,.9921568627,.8156862745,.568627451,.9098039215686274,.9921568627,.8274509804,.5921568627,.9137254901960784,.9921568627,.8352941176,.6156862745,.9176470588235294,.9921568627,.8470588235,.6352941176,.9215686274509803,.9921568627,.8549019608,.6588235294,.9254901960784314,.9921568627,.862745098,.6823529412,.9294117647058824,.9921568627,.8745098039,.7058823529,.9333333333333333,.9921568627,.8823529412,.7294117647,.9372549019607843,.9921568627,.8901960784,.7490196078,.9411764705882354,.9921568627,.9019607843,.7647058824,.9450980392156864,.9921568627,.9098039216,.7882352941,.9490196078431372,.9921568627,.9215686275,.8117647059,.9529411764705882,.9921568627,.9294117647,.8352941176,.9568627450980394,.9921568627,.937254902,.8588235294,.9607843137254903,.9921568627,.9490196078,.8784313725,.9647058823529413,.9921568627,.9568627451,.9019607843,.9686274509803922,.9921568627,.9647058824,.9254901961,.9725490196078431,.9921568627,.9764705882,.9490196078,.9764705882352941,.9921568627,.9843137255,.9725490196,.9803921568627451,.9921568627,.9921568627,.9921568627,.984313725490196,.9921568627,.9921568627,.9921568627,.9882352941176471,.9921568627,.9921568627,.9921568627,.9921568627450981,.9921568627,.9921568627,.9921568627,.996078431372549,.9921568627,.9921568627,.9921568627,1,.9921568627,.9921568627,.9921568627],description:"GE"},{ColorSpace:"RGB",Name:"siemens",name:"siemens",RGBPoints:[0,.0078431373,.0039215686,.1254901961,.00392156862745098,.0078431373,.0039215686,.1254901961,.00784313725490196,.0078431373,.0039215686,.1882352941,.011764705882352941,.0117647059,.0039215686,.2509803922,.01568627450980392,.0117647059,.0039215686,.3098039216,.0196078431372549,.0156862745,.0039215686,.3725490196,.023529411764705882,.0156862745,.0039215686,.3725490196,.027450980392156862,.0156862745,.0039215686,.3725490196,.03137254901960784,.0156862745,.0039215686,.3725490196,.03529411764705882,.0156862745,.0039215686,.3725490196,.0392156862745098,.0156862745,.0039215686,.3725490196,.043137254901960784,.0156862745,.0039215686,.3725490196,.047058823529411764,.0156862745,.0039215686,.3725490196,.050980392156862744,.0156862745,.0039215686,.3725490196,.054901960784313725,.0156862745,.0039215686,.3725490196,.05882352941176471,.0156862745,.0039215686,.3725490196,.06274509803921569,.0156862745,.0039215686,.3882352941,.06666666666666667,.0156862745,.0039215686,.4078431373,.07058823529411765,.0156862745,.0039215686,.4235294118,.07450980392156863,.0156862745,.0039215686,.4431372549,.0784313725490196,.0156862745,.0039215686,.462745098,.08235294117647059,.0156862745,.0039215686,.4784313725,.08627450980392157,.0156862745,.0039215686,.4980392157,.09019607843137255,.0196078431,.0039215686,.5137254902,.09411764705882353,.0196078431,.0039215686,.5333333333,.09803921568627451,.0196078431,.0039215686,.5529411765,.10196078431372549,.0196078431,.0039215686,.568627451,.10588235294117647,.0196078431,.0039215686,.5882352941,.10980392156862745,.0196078431,.0039215686,.6039215686,.11372549019607843,.0196078431,.0039215686,.6235294118,.11764705882352942,.0196078431,.0039215686,.6431372549,.12156862745098039,.0235294118,.0039215686,.6588235294,.12549019607843137,.0235294118,.0039215686,.6784313725,.12941176470588237,.0235294118,.0039215686,.6980392157,.13333333333333333,.0235294118,.0039215686,.7137254902,.13725490196078433,.0235294118,.0039215686,.7333333333,.1411764705882353,.0235294118,.0039215686,.7490196078,.1450980392156863,.0235294118,.0039215686,.7647058824,.14901960784313725,.0235294118,.0039215686,.7843137255,.15294117647058825,.0274509804,.0039215686,.8,.1568627450980392,.0274509804,.0039215686,.8196078431,.1607843137254902,.0274509804,.0039215686,.8352941176,.16470588235294117,.0274509804,.0039215686,.8549019608,.16862745098039217,.0274509804,.0039215686,.8745098039,.17254901960784313,.0274509804,.0039215686,.8901960784,.17647058823529413,.0274509804,.0039215686,.9098039216,.1803921568627451,.031372549,.0039215686,.9294117647,.1843137254901961,.031372549,.0039215686,.9254901961,.18823529411764706,.0509803922,.0039215686,.9098039216,.19215686274509805,.0705882353,.0039215686,.8901960784,.19607843137254902,.0901960784,.0039215686,.8705882353,.2,.1137254902,.0039215686,.8509803922,.20392156862745098,.1333333333,.0039215686,.831372549,.20784313725490197,.1529411765,.0039215686,.8117647059,.21176470588235294,.1725490196,.0039215686,.7921568627,.21568627450980393,.1960784314,.0039215686,.7725490196,.2196078431372549,.2156862745,.0039215686,.7529411765,.2235294117647059,.2352941176,.0039215686,.737254902,.22745098039215686,.2509803922,.0039215686,.7176470588,.23137254901960785,.2745098039,.0039215686,.6980392157,.23529411764705885,.2941176471,.0039215686,.6784313725,.23921568627450984,.3137254902,.0039215686,.6588235294,.24313725490196078,.3333333333,.0039215686,.6392156863,.24705882352941178,.3568627451,.0039215686,.6196078431,.25098039215686274,.3764705882,.0039215686,.6,.2549019607843137,.3960784314,.0039215686,.5803921569,.25882352941176473,.4156862745,.0039215686,.5607843137,.2627450980392157,.4392156863,.0039215686,.5411764706,.26666666666666666,.4588235294,.0039215686,.5215686275,.27058823529411763,.4784313725,.0039215686,.5019607843,.27450980392156865,.4980392157,.0039215686,.4823529412,.2784313725490196,.5215686275,.0039215686,.4666666667,.2823529411764706,.5411764706,.0039215686,.4470588235,.28627450980392155,.5607843137,.0039215686,.4274509804,.2901960784313726,.5803921569,.0039215686,.4078431373,.29411764705882354,.6039215686,.0039215686,.3882352941,.2980392156862745,.6235294118,.0039215686,.368627451,.30196078431372547,.6431372549,.0039215686,.3490196078,.3058823529411765,.662745098,.0039215686,.3294117647,.30980392156862746,.6862745098,.0039215686,.3098039216,.3137254901960784,.7058823529,.0039215686,.2901960784,.3176470588235294,.7254901961,.0039215686,.2705882353,.3215686274509804,.7450980392,.0039215686,.2509803922,.3254901960784314,.7647058824,.0039215686,.2352941176,.32941176470588235,.7843137255,.0039215686,.2156862745,.3333333333333333,.8039215686,.0039215686,.1960784314,.33725490196078434,.8235294118,.0039215686,.1764705882,.3411764705882353,.8470588235,.0039215686,.1568627451,.34509803921568627,.8666666667,.0039215686,.137254902,.34901960784313724,.8862745098,.0039215686,.1176470588,.35294117647058826,.9058823529,.0039215686,.0980392157,.3568627450980392,.9294117647,.0039215686,.0784313725,.3607843137254902,.9490196078,.0039215686,.0588235294,.36470588235294116,.968627451,.0039215686,.0392156863,.3686274509803922,.9921568627,.0039215686,.0235294118,.37254901960784315,.9529411765,.0039215686,.0588235294,.3764705882352941,.9529411765,.0078431373,.0549019608,.3803921568627451,.9529411765,.0156862745,.0549019608,.3843137254901961,.9529411765,.0235294118,.0549019608,.38823529411764707,.9529411765,.031372549,.0549019608,.39215686274509803,.9529411765,.0352941176,.0549019608,.396078431372549,.9529411765,.0431372549,.0549019608,.4,.9529411765,.0509803922,.0549019608,.403921568627451,.9529411765,.0588235294,.0549019608,.40784313725490196,.9529411765,.062745098,.0549019608,.4117647058823529,.9529411765,.0705882353,.0549019608,.41568627450980394,.9529411765,.0784313725,.0509803922,.4196078431372549,.9529411765,.0862745098,.0509803922,.4235294117647059,.9568627451,.0941176471,.0509803922,.42745098039215684,.9568627451,.0980392157,.0509803922,.43137254901960786,.9568627451,.1058823529,.0509803922,.43529411764705883,.9568627451,.1137254902,.0509803922,.4392156862745098,.9568627451,.1215686275,.0509803922,.44313725490196076,.9568627451,.1254901961,.0509803922,.4470588235294118,.9568627451,.1333333333,.0509803922,.45098039215686275,.9568627451,.1411764706,.0509803922,.4549019607843137,.9568627451,.1490196078,.0470588235,.4588235294117647,.9568627451,.1568627451,.0470588235,.4627450980392157,.9568627451,.1607843137,.0470588235,.4666666666666667,.9568627451,.168627451,.0470588235,.4705882352941177,.9607843137,.1764705882,.0470588235,.4745098039215686,.9607843137,.1843137255,.0470588235,.4784313725490197,.9607843137,.1882352941,.0470588235,.48235294117647065,.9607843137,.1960784314,.0470588235,.48627450980392156,.9607843137,.2039215686,.0470588235,.49019607843137253,.9607843137,.2117647059,.0470588235,.49411764705882355,.9607843137,.2196078431,.0431372549,.4980392156862745,.9607843137,.2235294118,.0431372549,.5019607843137255,.9607843137,.231372549,.0431372549,.5058823529411764,.9607843137,.2392156863,.0431372549,.5098039215686274,.9607843137,.2470588235,.0431372549,.5137254901960784,.9607843137,.2509803922,.0431372549,.5176470588235295,.9647058824,.2549019608,.0431372549,.5215686274509804,.9647058824,.262745098,.0431372549,.5254901960784314,.9647058824,.2705882353,.0431372549,.5294117647058824,.9647058824,.2745098039,.0431372549,.5333333333333333,.9647058824,.2823529412,.0392156863,.5372549019607843,.9647058824,.2901960784,.0392156863,.5411764705882353,.9647058824,.2980392157,.0392156863,.5450980392156862,.9647058824,.3058823529,.0392156863,.5490196078431373,.9647058824,.3098039216,.0392156863,.5529411764705883,.9647058824,.3176470588,.0392156863,.5568627450980392,.9647058824,.3254901961,.0392156863,.5607843137254902,.9647058824,.3333333333,.0392156863,.5647058823529412,.9647058824,.337254902,.0392156863,.5686274509803921,.968627451,.3450980392,.0392156863,.5725490196078431,.968627451,.3529411765,.0352941176,.5764705882352941,.968627451,.3607843137,.0352941176,.5803921568627451,.968627451,.368627451,.0352941176,.5843137254901961,.968627451,.3725490196,.0352941176,.5882352941176471,.968627451,.3803921569,.0352941176,.592156862745098,.968627451,.3882352941,.0352941176,.596078431372549,.968627451,.3960784314,.0352941176,.6,.968627451,.4,.0352941176,.6039215686274509,.968627451,.4078431373,.0352941176,.6078431372549019,.968627451,.4156862745,.0352941176,.611764705882353,.968627451,.4235294118,.031372549,.615686274509804,.9725490196,.431372549,.031372549,.6196078431372549,.9725490196,.4352941176,.031372549,.6235294117647059,.9725490196,.4431372549,.031372549,.6274509803921569,.9725490196,.4509803922,.031372549,.6313725490196078,.9725490196,.4588235294,.031372549,.6352941176470588,.9725490196,.462745098,.031372549,.6392156862745098,.9725490196,.4705882353,.031372549,.6431372549019608,.9725490196,.4784313725,.031372549,.6470588235294118,.9725490196,.4862745098,.031372549,.6509803921568628,.9725490196,.4941176471,.0274509804,.6549019607843137,.9725490196,.4980392157,.0274509804,.6588235294117647,.9725490196,.5058823529,.0274509804,.6627450980392157,.9764705882,.5137254902,.0274509804,.6666666666666666,.9764705882,.5215686275,.0274509804,.6705882352941176,.9764705882,.5254901961,.0274509804,.6745098039215687,.9764705882,.5333333333,.0274509804,.6784313725490196,.9764705882,.5411764706,.0274509804,.6823529411764706,.9764705882,.5490196078,.0274509804,.6862745098039216,.9764705882,.5529411765,.0274509804,.6901960784313725,.9764705882,.5607843137,.0235294118,.6941176470588235,.9764705882,.568627451,.0235294118,.6980392156862745,.9764705882,.5764705882,.0235294118,.7019607843137254,.9764705882,.5843137255,.0235294118,.7058823529411765,.9764705882,.5882352941,.0235294118,.7098039215686275,.9764705882,.5960784314,.0235294118,.7137254901960784,.9803921569,.6039215686,.0235294118,.7176470588235294,.9803921569,.6117647059,.0235294118,.7215686274509804,.9803921569,.6156862745,.0235294118,.7254901960784313,.9803921569,.6235294118,.0235294118,.7294117647058823,.9803921569,.631372549,.0196078431,.7333333333333333,.9803921569,.6392156863,.0196078431,.7372549019607844,.9803921569,.6470588235,.0196078431,.7411764705882353,.9803921569,.6509803922,.0196078431,.7450980392156863,.9803921569,.6588235294,.0196078431,.7490196078431373,.9803921569,.6666666667,.0196078431,.7529411764705882,.9803921569,.6745098039,.0196078431,.7568627450980392,.9803921569,.6784313725,.0196078431,.7607843137254902,.9843137255,.6862745098,.0196078431,.7647058823529411,.9843137255,.6941176471,.0196078431,.7686274509803922,.9843137255,.7019607843,.0156862745,.7725490196078432,.9843137255,.7098039216,.0156862745,.7764705882352941,.9843137255,.7137254902,.0156862745,.7803921568627451,.9843137255,.7215686275,.0156862745,.7843137254901961,.9843137255,.7294117647,.0156862745,.788235294117647,.9843137255,.737254902,.0156862745,.792156862745098,.9843137255,.7411764706,.0156862745,.796078431372549,.9843137255,.7490196078,.0156862745,.8,.9843137255,.7529411765,.0156862745,.803921568627451,.9843137255,.7607843137,.0156862745,.807843137254902,.9882352941,.768627451,.0156862745,.8117647058823529,.9882352941,.768627451,.0156862745,.8156862745098039,.9843137255,.7843137255,.0117647059,.8196078431372549,.9843137255,.8,.0117647059,.8235294117647058,.9843137255,.8156862745,.0117647059,.8274509803921568,.9803921569,.831372549,.0117647059,.8313725490196079,.9803921569,.8431372549,.0117647059,.8352941176470589,.9803921569,.8588235294,.0078431373,.8392156862745098,.9803921569,.8745098039,.0078431373,.8431372549019608,.9764705882,.8901960784,.0078431373,.8470588235294118,.9764705882,.9058823529,.0078431373,.8509803921568627,.9764705882,.9176470588,.0078431373,.8549019607843137,.9764705882,.9333333333,.0039215686,.8588235294117647,.9725490196,.9490196078,.0039215686,.8627450980392157,.9725490196,.9647058824,.0039215686,.8666666666666667,.9725490196,.9803921569,.0039215686,.8705882352941177,.9725490196,.9960784314,.0039215686,.8745098039215686,.9725490196,.9960784314,.0039215686,.8784313725490196,.9725490196,.9960784314,.0352941176,.8823529411764706,.9725490196,.9960784314,.0666666667,.8862745098039215,.9725490196,.9960784314,.0980392157,.8901960784313725,.9725490196,.9960784314,.1294117647,.8941176470588236,.9725490196,.9960784314,.1647058824,.8980392156862745,.9764705882,.9960784314,.1960784314,.9019607843137255,.9764705882,.9960784314,.2274509804,.9058823529411765,.9764705882,.9960784314,.2549019608,.9098039215686274,.9764705882,.9960784314,.2901960784,.9137254901960784,.9764705882,.9960784314,.3215686275,.9176470588235294,.9803921569,.9960784314,.3529411765,.9215686274509803,.9803921569,.9960784314,.3843137255,.9254901960784314,.9803921569,.9960784314,.4156862745,.9294117647058824,.9803921569,.9960784314,.4509803922,.9333333333333333,.9803921569,.9960784314,.4823529412,.9372549019607843,.9843137255,.9960784314,.5137254902,.9411764705882354,.9843137255,.9960784314,.5450980392,.9450980392156864,.9843137255,.9960784314,.5803921569,.9490196078431372,.9843137255,.9960784314,.6117647059,.9529411764705882,.9843137255,.9960784314,.6431372549,.9568627450980394,.9882352941,.9960784314,.6745098039,.9607843137254903,.9882352941,.9960784314,.7058823529,.9647058823529413,.9882352941,.9960784314,.7411764706,.9686274509803922,.9882352941,.9960784314,.768627451,.9725490196078431,.9882352941,.9960784314,.8,.9764705882352941,.9921568627,.9960784314,.831372549,.9803921568627451,.9921568627,.9960784314,.8666666667,.984313725490196,.9921568627,.9960784314,.8980392157,.9882352941176471,.9921568627,.9960784314,.9294117647,.9921568627450981,.9921568627,.9960784314,.9607843137,.996078431372549,.9960784314,.9960784314,.9607843137,1,.9960784314,.9960784314,.9607843137],description:"Siemens"}],{registerColormap:_e}=a.utilities.colormap;async function xe({servicesManager:e,commandsManager:t,extensionManager:n,appConfig:o}){const r=o.useSharedArrayBuffer;let i=!1;"AUTO"===r?a.setUseSharedArrayBuffer(a.Enums.SharedArrayBufferModes.AUTO):"FALSE"===r||!1===r?(a.setUseSharedArrayBuffer(a.Enums.SharedArrayBufferModes.FALSE),i=!0):a.setUseSharedArrayBuffer(a.Enums.SharedArrayBufferModes.TRUE),await(0,a.init)({rendering:{preferSizeOverAccuracy:Boolean(o.preferSizeOverAccuracy),useNorm16Texture:Boolean(o.useNorm16Texture)}}),a.setUseCPURendering(Boolean(o.useCPURendering)),a.setConfiguration({...a.getConfiguration(),rendering:{...a.getConfiguration().rendering,strictZSpacingForVolumeViewport:o.strictZSpacingForVolumeViewport}});const{maxCacheSize:d}=o;d&&a.cache.setMaxCacheSize(d),function(e={}){s.CrosshairsTool.isAnnotation=!1,s.ReferenceLinesTool.isAnnotation=!1,(0,s.init)(e),(0,s.addTool)(s.PanTool),(0,s.addTool)(s.WindowLevelTool),(0,s.addTool)(s.StackScrollMouseWheelTool),(0,s.addTool)(s.StackScrollTool),(0,s.addTool)(s.ZoomTool),(0,s.addTool)(s.ProbeTool),(0,s.addTool)(s.VolumeRotateMouseWheelTool),(0,s.addTool)(s.MIPJumpToClickTool),(0,s.addTool)(s.LengthTool),(0,s.addTool)(s.RectangleROITool),(0,s.addTool)(s.RectangleROIThresholdTool),(0,s.addTool)(s.EllipticalROITool),(0,s.addTool)(s.CircleROITool),(0,s.addTool)(s.BidirectionalTool),(0,s.addTool)(s.ArrowAnnotateTool),(0,s.addTool)(s.DragProbeTool),(0,s.addTool)(s.AngleTool),(0,s.addTool)(s.CobbAngleTool),(0,s.addTool)(s.MagnifyTool),(0,s.addTool)(s.CrosshairsTool),(0,s.addTool)(s.SegmentationDisplayTool),(0,s.addTool)(s.RectangleScissorsTool),(0,s.addTool)(s.SphereScissorsTool),(0,s.addTool)(s.CircleScissorsTool),(0,s.addTool)(s.BrushTool),(0,s.addTool)(s.PaintFillTool),(0,s.addTool)(s.ReferenceLinesTool),(0,s.addTool)(D),(0,s.addTool)(s.TrackballRotateTool),(0,s.addTool)(U),(0,s.addTool)(s.AdvancedMagnifyTool),(0,s.addTool)(s.UltrasoundDirectionalTool),(0,s.addTool)(s.PlanarFreehandROITool),(0,s.addTool)(s.SplineROITool),(0,s.addTool)(s.LivewireContourTool),(0,s.addTool)(s.OrientationMarkerTool);const t=s.annotation.config.style.getDefaultToolStyles();s.annotation.config.style.setDefaultToolStyles({global:{...t.global,textBoxFontSize:"15px",lineWidth:"1.5"}})}(),a.Settings.getRuntimeSettings().set("useCursors",Boolean(o.useCursors));const{userAuthenticationService:m,customizationService:p,uiModalService:u,uiNotificationService:g,cornerstoneViewportService:h,hangingProtocolService:S,toolbarService:v,viewportGridService:f,stateSyncService:y,segmentationService:w}=e.services;v.registerEventForToolbarUpdate(h,[h.EVENTS.VIEWPORT_DATA_CHANGED]),v.registerEventForToolbarUpdate(w,[w.EVENTS.SEGMENTATION_ADDED,w.EVENTS.SEGMENTATION_REMOVED,w.EVENTS.SEGMENTATION_UPDATED]),v.registerEventForToolbarUpdate(a.eventTarget,[s.Enums.Events.TOOL_ACTIVATED]),window.services=e.services,window.extensionManager=n,window.commandsManager=t,!o.showWarningMessageForCrossOrigin||window.crossOriginIsolated||i||g.show({title:"Cross Origin Isolation",message:"Cross Origin Isolation is not enabled, read more about it here: https://docs.ohif.org/faq/",type:"warning"}),o.showCPUFallbackMessage&&a.getShouldUseCPURendering()&&function(e,t){const n=t=>{if(100===t)return e.show({content:Ge,title:"OHIF Fell Back to CPU Rendering"}),!0},{unsubscribe:o}=t.subscribe(t.EVENTS.PROTOCOL_CHANGED,(()=>{n(100)&&o()}))}(u,S),y.register("lutPresentationStore",{clearOnModeExit:!0}),y.register("synchronizersStore",{clearOnModeExit:!0}),y.register("positionPresentationStore",{clearOnModeExit:!0}),y.register("toggleOneUpViewportGridStore",{clearOnModeExit:!0});const T=s.Enums.SegmentationRepresentations.Labelmap;s.segmentation.config.setGlobalRepresentationConfig(T,{fillAlpha:.5,fillAlphaInactive:.2,outlineOpacity:1,outlineOpacityInactive:.65});const E=c.Ay.classes.MetadataProvider;a.volumeLoader.registerVolumeLoader("cornerstoneStreamingImageVolume",l.FC),a.volumeLoader.registerVolumeLoader("cornerstoneStreamingDynamicImageVolume",l.Mr),S.registerImageLoadStrategy("interleaveCenter",Se),S.registerImageLoadStrategy("interleaveTopToBottom",Ee),S.registerImageLoadStrategy("nth",ye),a.metaData.addProvider(a.utilities.calibratedPixelSpacingMetadataProvider.get.bind(a.utilities.calibratedPixelSpacingMetadataProvider)),a.metaData.addProvider(E.get.bind(E),9999),a.imageLoadPoolManager.maxNumRequests={interaction:o?.maxNumRequests?.interaction||100,thumbnail:o?.maxNumRequests?.thumbnail||75,prefetch:o?.maxNumRequests?.prefetch||10},I(m,o,n),this.measurementServiceSource=de(e),ue(e),S.subscribe(S.EVENTS.CUSTOM_IMAGE_LOAD_PERFORMED,(e=>{for(const t of e.entries()){const[e,n]=t,o=h.getCornerstoneViewport(e),r=h.getViewportInfo(e),{lutPresentationStore:i,positionPresentationStore:a}=y.getState(),{presentationIds:s}=r.getViewportOptions(),l={positionPresentation:a[s?.positionPresentationId],lutPresentation:i[s?.lutPresentationId]};h.setVolumesForViewport(o,n,l)}})),f.subscribe(f.EVENTS.GRID_SIZE_CHANGED,(()=>{h.resize(!0)})),Ne({cornerstoneViewportService:h,customizationService:p,commandsManager:t}),Me({customizationService:p,commandsManager:t});const b=({detail:e})=>{c.r_.getHTTPErrorHandler()(e.error)};a.eventTarget.addEventListener(a.EVENTS.STACK_VIEWPORT_NEW_STACK,(e=>{const{element:t}=e.detail;s.utilities.stackContextPrefetch.enable(t)})),a.eventTarget.addEventListener(a.EVENTS.IMAGE_LOAD_FAILED,b),a.eventTarget.addEventListener(a.EVENTS.IMAGE_LOAD_ERROR,b),a.eventTarget.addEventListener(a.EVENTS.ELEMENT_ENABLED,function(e){const{element:n}=e.detail;n.addEventListener(a.EVENTS.CAMERA_RESET,(e=>{const{element:n}=e.detail,{viewportId:o}=(0,a.getEnabledElement)(n);t.runCommand("resetCrosshairs",{viewportId:o})})),function({element:e}){if(!Ue.length){const{TimingEnum:e}=c.Enums;Ue.push(e.DISPLAY_SETS_TO_ALL_IMAGES,e.DISPLAY_SETS_TO_FIRST_IMAGE,e.STUDY_TO_FIRST_IMAGE)}Ue.find((e=>c.Rm.timingKeys[e]))&&(Re.viewportsWaiting+=1,e.addEventListener(a.EVENTS.IMAGE_RENDERED,Ve))}({element:n})}.bind(null)),a.eventTarget.addEventListener(a.EVENTS.ELEMENT_DISABLED,function(e){const{element:t}=e.detail}.bind(null)),Pe.forEach(_e);const O=(0,ge.debounce)((e=>{g.show({title:e.type,message:e.message,type:"error"})}),300);a.eventTarget.addEventListener(a.EVENTS.ERROR_EVENT,(({detail:e})=>{O(e)}))}function Ge(){return i.createElement("div",null,i.createElement("p",null,"Your computer does not have enough GPU power to support the default GPU rendering mode. OHIF has switched to CPU rendering mode. Please note that CPU rendering does not support all features such as Volume Rendering, Multiplanar Reconstruction, and Segmentation Overlays."))}window.cornerstone=a,window.cornerstoneTools=s;var Le=n(5013),Fe=n(11374),ke=n.n(Fe),$e=n(61466),Be=n.n($e);const ze={PROGRESS:"event:DicomFileUploader:progress"};let je=function(e){return e[e.NotStarted=0]="NotStarted",e[e.InProgress=1]="InProgress",e[e.Success=2]="Success",e[e.Failed=3]="Failed",e[e.Cancelled=4]="Cancelled",e}({});class We{constructor(e,t){this.message=void 0,this.status=void 0,this.message=t,this.status=e}}class qe extends c.Rc{constructor(e,t){super(ze),this._file=void 0,this._fileId=void 0,this._dataSource=void 0,this._loadPromise=void 0,this._abortController=new AbortController,this._status=je.NotStarted,this._percentComplete=0,this._file=e,this._fileId=m().wadouri.fileManager.add(e),this._dataSource=t}getFileId(){return this._fileId}getFileName(){return this._file.name}getFileSize(){return this._file.size}cancel(){this._abortController.abort()}getStatus(){return this._status}getPercentComplete(){return this._percentComplete}async load(){return this._loadPromise||(this._loadPromise=new Promise(((e,t)=>{const n={progress:e=>{e.lengthComputable&&(this._status=je.InProgress,this._percentComplete=Math.round(100*e.loaded/e.total),this._broadcastEvent(ze.PROGRESS,{fileId:this._fileId,percentComplete:this._percentComplete}))},timeout:()=>{this._reject(t,new We(je.Failed,"The request timed out."))},abort:()=>{this._reject(t,new We(je.Cancelled,"Cancelled"))},error:()=>{this._reject(t,new We(je.Failed,"The request failed."))}};m().wadouri.loadFileRequest(this._fileId).then((o=>{if(this._abortController.signal.aborted)return void this._reject(t,new We(je.Cancelled,"Cancelled"));if(!this._checkDicomFile(o))return void this._reject(t,new We(je.Failed,"Not a valid DICOM file."));const r=new XMLHttpRequest;return this._addRequestCallbacks(r,n),this._dataSource.store.dicom(o,r).then((()=>{this._status=je.Success,e()})).catch((e=>{this._reject(t,e)}))})).catch((e=>{this._reject(t,e)}))}))),this._loadPromise}_isRejected(){return this._status===je.Failed||this._status===je.Cancelled}_reject(e,t){if(!this._isRejected()){if(t instanceof We)return this._status=t.status,void e(t);this._status=je.Failed,t.message?e(new We(je.Failed,t.message)):e(new We(je.Failed,t))}}_addRequestCallbacks(e,t){const n=()=>e.abort();this._abortController.signal.addEventListener("abort",n);for(const[n,o]of Object.entries(t))e.upload.addEventListener(n,o);const o=()=>{this._abortController.signal.removeEventListener("abort",n);for(const[n,o]of Object.entries(t))e.upload.removeEventListener(n,o);e.removeEventListener("loadend",o)};e.addEventListener("loadend",o)}_checkDicomFile(e){if(e.length<=132)return!1;const t=new Uint8Array(e.slice(128,132));return Array.from("DICM").every(((e,n)=>e.charCodeAt(0)===t[n]))}}const He=(0,i.memo)((({dicomFileUploader:e})=>{const[t,n]=(0,i.useState)(e.getPercentComplete()),[o,r]=(0,i.useState)(""),[a,s]=(0,i.useState)(e.getStatus()),l=(0,i.useCallback)((()=>a===je.Failed||a===je.Cancelled||a===je.Success),[a]);(0,i.useEffect)((()=>{const t=e.subscribe(ze.PROGRESS,(e=>{n(e.percentComplete)}));return e.load().catch((e=>{s(e.status),r(e.message??"")})).finally((()=>s(e.getStatus()))),()=>t.unsubscribe()}),[]);const c=(0,i.useCallback)((()=>{e.cancel()}),[]);return i.createElement("div",{className:"min-h-14 border-secondary-light flex w-full items-center overflow-hidden border-b p-2.5 text-lg"},i.createElement("div",{className:"self-top flex w-0 shrink grow flex-col gap-1"},i.createElement("div",{className:"flex gap-4"},i.createElement("div",{className:"flex w-6 shrink-0 items-center justify-center"},(()=>{switch(e.getStatus()){case je.Success:return i.createElement(S.In,{name:"status-tracked",className:"text-primary-light"});case je.InProgress:return i.createElement(S.In,{name:"icon-transferring"});case je.Failed:return i.createElement(S.In,{name:"icon-alert-small"});case je.Cancelled:return i.createElement(S.In,{name:"icon-alert-outline"});default:return i.createElement(i.Fragment,null)}})()),i.createElement("div",{className:"overflow-hidden text-ellipsis whitespace-nowrap"},e.getFileName())),o&&i.createElement("div",{className:"pl-10"},o)),i.createElement("div",{className:"flex w-24 items-center"},!l()&&i.createElement(i.Fragment,null,e.getStatus()===je.InProgress&&i.createElement("div",{className:"w-10 text-right"},t,"%"),i.createElement("div",{className:"ml-auto flex cursor-pointer"},i.createElement(S.In,{className:"text-primary-active self-center",name:"close",onClick:c})))))}));He.propTypes={dicomFileUploader:ke().instanceOf(qe).isRequired};const Ye=He,Ze=1e3,Ke=6e4,Qe=36e5,Je=15e3,Xe="text-ellipsis whitespace-nowrap overflow-hidden";function et({dicomFileUploaderArr:e,onComplete:t}){const[n]=(0,i.useState)(e.reduce(((e,t)=>e+t.getFileSize()),0)),o=(0,i.useRef)(0),r=(0,i.useRef)(0),[a,s]=(0,i.useState)(null),[l,c]=(0,i.useState)(0),[d,m]=(0,i.useState)(0),[p,u]=(0,i.useState)(0),[g,h]=(0,i.useState)(!1),I=(0,i.useRef)();(0,i.useEffect)((()=>{let e,t=0,i=Date.now();const a=()=>{const s=o.current-t,l=Date.now(),c=l-i;r.current=s/c,t=o.current,i=l,n-o.current>0&&(e=r.current>=75?setTimeout(a,Je):setTimeout(a,3e4))};return e=setTimeout(a,Je),()=>{clearTimeout(e)}}),[]),(0,i.useEffect)((()=>{let t=null;const i=e.map((e=>{let i=0;const a=a=>{const l=i;if(i=Math.round(a/100*e.getFileSize()),o.current=Math.min(n,o.current-l+i),c(o.current/n*100),0!==r.current){const e=n-o.current,i=Math.round(e/r.current);if(null===t)return t=i,void s(t);if(i<Ke){const e=Math.ceil(t/Ze),n=Math.ceil(i/Ze)-e;return void((n<0||n>2)&&(t=i,s(t)))}if(i<Qe){const e=Math.ceil(t/Ke),n=Math.ceil(i/Ke)-e;return void((n<0||n>2)&&(t=i,s(t)))}t=i,s(t)}};return e.load().catch((e=>{e.status===je.Failed&&u((e=>e+1))})).finally((()=>{a(100),m((e=>e+1))})),e.subscribe(ze.PROGRESS,(e=>{a(e.percentComplete)}))}));return()=>{i.forEach((e=>e.unsubscribe()))}}),[]);const v=(0,i.useCallback)((async()=>{for(const t of e){new Promise(((e,n)=>{setTimeout((()=>{t.cancel(),e()}),0)}))}}),[]),f=(0,i.useCallback)((()=>{if(null==a)return"";if(a<Ke){const e=Math.ceil(a/Ze);return`${e} ${1===e?"second":"seconds"}`}if(a<Qe){const e=Math.ceil(a/Ke);return`${e} ${1===e?"minute":"minutes"}`}const e=Math.ceil(a/Qe);return`${e} ${1===e?"hour":"hours"}`}),[a]),y=(0,i.useCallback)((()=>Math.min(100,Math.round(l))),[l]),w=(0,i.useCallback)((()=>y()<1&&(I?.current?.offsetWidth??0)*(l/100)<1),[y,l]),T=(0,i.useCallback)((()=>({width:`${2*e.length.toString().length+4}ch`})),[]),E=()=>i.createElement("div",{className:"ml-auto flex w-6 justify-center"},p>0&&i.createElement("div",{onClick:()=>h((e=>!e))},i.createElement(S.In,{className:"cursor-pointer",name:"icon-status-alert"})));return i.createElement("div",{className:"flex grow flex-col"},i.createElement("div",{className:"bg-primary-dark flex h-14 items-center px-1 pb-4 text-lg"},d===e.length?i.createElement(i.Fragment,null,i.createElement("span",{className:Xe},`${e.length} ${e.length>1?"files":"file"} completed.`),i.createElement(S.$n,{disabled:!1,className:"ml-auto",onClick:t},"Close")):i.createElement(i.Fragment,null,i.createElement("span",{style:T(),className:Be()(Xe,"text-end")},`${d} of ${e.length}`," "),i.createElement("span",{className:Xe}," files completed."," "),i.createElement("span",{className:Xe},a?`Less than ${f()} remaining. `:""),i.createElement("span",{className:Be()(Xe,"text-primary-active hover:text-primary-light active:text-aqua-pale ml-auto cursor-pointer"),onClick:v},"Cancel All Uploads"))),i.createElement("div",{className:"flex grow flex-col overflow-hidden bg-black text-lg"},i.createElement("div",{className:"ohif-scrollbar border-secondary-light overflow-y-scroll border-b px-2"},i.createElement("div",{className:"min-h-14 flex w-full items-center p-2.5"},d===e.length?i.createElement(i.Fragment,null,i.createElement("div",{className:"text-primary-light text-xl"},p>0?`Completed with ${p} ${p>1?"errors":"error"}!`:"Completed!"),E()):i.createElement(i.Fragment,null,i.createElement("div",{ref:I,className:"flex-grow"},i.createElement(S.dD,{progress:w()?void 0:Math.min(100,l)})),i.createElement("div",{className:"ml-1 flex w-24 items-center"},i.createElement("div",{className:"w-10 text-right"},`${y()}%`),E())))),i.createElement("div",{className:"ohif-scrollbar h-1 grow overflow-y-scroll px-2"},e.filter((e=>!g||e.getStatus()===je.Failed)).map((e=>i.createElement(Ye,{key:e.getFileId(),dicomFileUploader:e}))))))}et.propTypes={dicomFileUploaderArr:ke().arrayOf(ke().instanceOf(qe)).isRequired,onComplete:ke().func.isRequired};const tt=et;function nt(){return nt=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},nt.apply(this,arguments)}function ot({dataSource:e,onComplete:t,onStarted:n}){const o="min-h-[480px] flex flex-col bg-black select-none",[r,a]=(0,i.useState)([]),s=(0,i.useCallback)((async t=>{n(),a(t.map((t=>new qe(t,e))))}),[]);return i.createElement(i.Fragment,null,r.length?i.createElement("div",{className:Be()("h-[calc(100vh-300px)]",o)},i.createElement(tt,{dicomFileUploaderArr:Array.from(r),onComplete:t})):i.createElement("div",{className:Be()("h-[480px]",o)},i.createElement(Le.A,{onDrop:e=>{s(e)},noClick:!0},(({getRootProps:e})=>i.createElement("div",nt({},e(),{className:"dicom-upload-drop-area-border-dash m-5 flex h-full flex-col items-center justify-center"}),i.createElement("div",{className:"flex gap-3"},i.createElement(Le.A,{onDrop:s,noDrag:!0},(({getRootProps:e,getInputProps:t})=>i.createElement("div",e(),i.createElement(S.$n,{disabled:!1,onClick:()=>{}},"Add files",i.createElement("input",t()))))),i.createElement(Le.A,{onDrop:s,noDrag:!0},(({getRootProps:e,getInputProps:t})=>i.createElement("div",e(),i.createElement(S.$n,{type:S.Ny.NW.secondary,disabled:!1,onClick:()=>{}},"Add folder",i.createElement("input",nt({},t(),{webkitdirectory:"true",mozdirectory:"true"}))))))),i.createElement("div",{className:"pt-5"},"or drag images or folders here"),i.createElement("div",{className:"text-aqua-pale pt-3 text-lg"},"(DICOM files supported)"))))))}ot.propTypes={dataSource:ke().object.isRequired,onComplete:ke().func.isRequired,onStarted:ke().func.isRequired};const rt=ot,it={CT:[{description:"Soft tissue",window:"400",level:"40"},{description:"Lung",window:"1500",level:"-600"},{description:"Liver",window:"150",level:"90"},{description:"Bone",window:"2500",level:"480"},{description:"Brain",window:"80",level:"40"}],PT:[{description:"Default",window:"5",level:"2.5"},{description:"SUV",window:"0",level:"3"},{description:"SUV",window:"0",level:"5"},{description:"SUV",window:"0",level:"7"},{description:"SUV",window:"0",level:"8"},{description:"SUV",window:"0",level:"10"},{description:"SUV",window:"0",level:"15"}]},{VIEWPORT_PRESETS:at}=a.CONSTANTS,st={active:[{toolName:R.WindowLevel,bindings:[{mouseButton:s.Enums.MouseBindings.Primary}]},{toolName:R.Pan,bindings:[{mouseButton:s.Enums.MouseBindings.Auxiliary}]},{toolName:R.Zoom,bindings:[{mouseButton:s.Enums.MouseBindings.Secondary}]},{toolName:R.StackScrollMouseWheel,bindings:[]}],enabled:[{toolName:R.SegmentationDisplay}]};const lt=function(){return[{name:"cornerstoneDicomUploadComponent",value:{id:"dicomUploadComponent",component:rt}},{name:"default",value:[{id:"cornerstone.overlayViewportTools",tools:st},{id:"cornerstone.windowLevelPresets",presets:it},{id:"cornerstone.colorbar",width:"16px",colorbarTickPosition:"left",colormaps:Pe,colorbarContainerPosition:"right",colorbarInitialColormap:"Grayscale"},{id:"cornerstone.3dVolumeRendering",volumeRenderingPresets:at,volumeRenderingQualityRange:{min:1,max:4,step:1}},{id:"cornerstone.measurements",Angle:{displayText:[],report:[]},CobbAngle:{displayText:[],report:[]},ArrowAnnotate:{displayText:[],report:[]},RectangleROi:{displayText:[],report:[]},CircleROI:{displayText:[],report:[]},EllipticalROI:{displayText:[],report:[]},Bidirectional:{displayText:[],report:[]},Length:{displayText:[],report:[]},LivewireContour:{displayText:[],report:[]},SplineROI:{displayText:[{displayName:"Area",value:"area",type:"value"},{value:"areaUnit",for:["area"],type:"unit"}],report:[{displayName:"Area",value:"area",type:"value"},{displayName:"Unit",value:"areaUnit",type:"value"}]},PlanarFreehandROI:{displayText:[{displayName:"Mean",value:"mean",type:"value"},{displayName:"Max",value:"max",type:"value"},{displayName:"Area",value:"area",type:"value"},{value:"modalityUnit",for:["mean","max"],type:"unit"},{value:"areaUnit",for:["area"],type:"unit"}],report:[{displayName:"Mean",value:"mean",type:"value"},{displayName:"Max",value:"max",type:"value"},{displayName:"Area",value:"area",type:"value"},{displayName:"Unit",value:"unit",type:"value"}]}}]}]};var ct=n(44753),dt=n(90445);const mt=512,pt=1e4,ut="cornerstone-viewport-download-form",gt=({onClose:e,activeViewportId:t,cornerstoneViewportService:n})=>{const o=(0,y.kJ)(t),r=o?.element,l=(0,a.getEnabledElement)(r),{viewportId:c,renderingEngineId:d,viewport:m}=l,p=s.ToolGroupManager.getToolGroupForViewport(c,d),u=Object.keys(p.toolOptions).reduce(((e,t)=>{const n=p.toolOptions[t],{mode:o,bindings:r}=n;return{...e,[t]:{mode:o,bindings:r}}}),{});(0,i.useEffect)((()=>()=>{Object.keys(u).forEach((e=>{const{mode:t,bindings:n}=u[e];p.setToolMode(e,t,{bindings:n})}))}),[]);return i.createElement(S.VS,{onClose:e,minimumSize:100,maximumSize:pt,defaultSize:mt,activeViewportElement:r,enableViewport:e=>{if(e){const{renderingEngine:t,viewport:n}=(0,a.getEnabledElement)(r),o={viewportId:ut,element:e,type:n.type,defaultOptions:{background:n.defaultOptions.background,orientation:n.defaultOptions.orientation}};t.enableElement(o)}},disableViewport:e=>{if(e){const{renderingEngine:t}=(0,a.getEnabledElement)(e);return new Promise((e=>{t.disableElement(ut)}))}},updateViewportPreview:(e,t,n)=>new Promise((t=>{const o=(0,a.getEnabledElement)(e),{viewport:r,renderingEngine:i}=o;i.resize(),r.render(),e.addEventListener(a.Enums.Events.IMAGE_RENDERED,(function o(i){const s=(0,a.getEnabledElement)(i.target),{viewport:l}=s,{element:c}=l,d=(0,a.getOrCreateCanvas)(c),p="image/"+n,u=d.toDataURL(p,1);let g=c.offsetHeight,h=c.offsetWidth;if(g>mt||h>mt){const e=mt/Math.max(g,h);h*=e,g*=e}t({dataUrl:u,width:g,height:h}),e.removeEventListener(a.Enums.Events.IMAGE_RENDERED,o),r.resetCamera();const I=m.getViewPresentation();r.setView(m.getViewReference(),I),r.render()}))})),loadImage:(e,t,o,r)=>new Promise((i=>{if(e&&t){const t=(0,a.getEnabledElement)(e);if(!t)return;const{viewport:s}=t,l=n.getRenderingEngine().getViewport(ut);if(l instanceof a.StackViewport){const e=s.getCurrentImageId(),t=s.getProperties();l.setStack([e]).then((()=>{try{l.setProperties(t);const e=Math.min(o||image.width,pt),n=Math.min(r||image.height,pt);i({width:e,height:n})}catch(e){console.warn("Unable to set properties",e)}}))}else if(l instanceof a.BaseVolumeViewport){s.getActors().forEach((e=>{l.addActor(e)})),l.render();const e=Math.min(o||image.width,pt),t=Math.min(r||image.height,pt);i({width:e,height:t})}}})),toggleAnnotations:(e,t,n)=>{const o=(0,a.getEnabledElement)(n),r=(0,a.getEnabledElement)(t),{viewportId:i,renderingEngineId:l}=o,{viewportId:c}=r;if(!o||!r)return;const d=s.ToolGroupManager.getToolGroupForViewport(i,l);d.addViewport(c,l),Object.keys(d.getToolInstances()).forEach((t=>{if(e&&"Crosshairs"!==t)try{d.setToolEnabled(t)}catch(e){console.log(e)}else d.setToolDisabled(t)}))},downloadBlob:(e,t)=>{const n=`${e}.${t}`,o=document.querySelector(`div[data-viewport-uid="${ut}"]`);(0,dt.A)(o).then((e=>{const o=document.createElement("a");o.download=n,o.href=e.toDataURL(t,1),o.click()}))}})};gt.propTypes={onClose:ke().func,activeViewportId:ke().string.isRequired};const ht=gt;function It(e,t){let{viewports:n}=e.getState();return n=[...n.values()],n=n.filter((e=>e.displaySetInstanceUIDs&&e.displaySetInstanceUIDs.length)),n=n.filter((e=>{const{displaySetInstanceUIDs:n}=e;for(const e of n){const n=t.getDisplaySetByUID(e);return!(!n||!n.isReconstructable)}})),n}const St=e=>`VOI_SYNC_${e}`;function vt(e,t,n){const{syncGroupService:o,cornerstoneViewportService:r}=n.services;e.forEach((e=>{const{viewportId:n}=e.viewportOptions,i=r.getCornerstoneViewport(n);i&&o.removeViewportFromSyncGroup(i.id,i.getRenderingEngine().id,t)}))}const ft={imageSlice:function({servicesManager:e,viewports:t,syncId:n}){const{syncGroupService:o,viewportGridService:r,displaySetService:i,cornerstoneViewportService:a}=e.services;n||="IMAGE_SLICE_SYNC";const s=t||It(r,i);if(s.some((e=>!!o.getSynchronizersForViewport(e.viewportOptions.viewportId).find((e=>e.id===n)))))return function(e,t){const{syncGroupService:n,viewportGridService:o,displaySetService:r,cornerstoneViewportService:i}=t.services,a=It(o,r);a.forEach((t=>{const{viewportId:o}=t.viewportOptions,r=i.getCornerstoneViewport(o);r&&n.removeViewportFromSyncGroup(r.id,r.getRenderingEngine().id,e)}))}(n,e);s.forEach((e=>{const{viewportId:t}=e.viewportOptions,r=a.getCornerstoneViewport(t);r&&o.addViewportToSyncGroup(t,r.getRenderingEngine().id,{type:"imageSlice",id:n,source:!0,target:!0})}))},voi:function({servicesManager:e,viewports:t,syncId:n}){const{syncGroupService:o,viewportGridService:r,displaySetService:i,cornerstoneViewportService:a}=e.services,s=t||function(e,t){let{viewports:n}=e.getState();return n=[...n.values()],n.reduce(((e,n)=>{const{displaySetInstanceUIDs:o}=n,r=o[0],i=t.getDisplaySetByUID(r).Modality;return e[i]||(e[i]=[]),e[i].push(n),e}),{})}(r,i);for(const[t,r]of Object.entries(s)){const i=n||St(t);if(r.some((e=>!!o.getSynchronizersForViewport(e.viewportOptions.viewportId).find((e=>e.id===i)))))return vt(r,i,e);r.forEach((e=>{const{viewportId:t}=e.viewportOptions,n=a.getCornerstoneViewport(t);n&&o.addViewportToSyncGroup(t,n.getRenderingEngine().id,{type:"voi",id:i,source:!0,target:!0})}))}}};const yt=function({servicesManager:e,commandsManager:t}){const{viewportGridService:n,toolGroupService:o,cineService:r,uiDialogService:i,cornerstoneViewportService:l,uiNotificationService:c,measurementService:d,customizationService:m,colorbarService:p,hangingProtocolService:u,syncGroupService:g}=e.services,{measurementServiceSource:h}=this;function I(){return w(n)}function f(){const e=I();return o.getToolGroupForViewport(e.id)}const y={showCornerstoneContextMenu:e=>{const n=I()?.viewport?.element,o={...e,element:n},{useSelectedAnnotation:r,nearbyToolData:i,event:a}=o;if(r&&!i){const e=F();if(!(!o.allowedSelectedTools||o.allowedSelectedTools.includes(e?.metadata?.toolName)))return;o.nearbyToolData=e}o.defaultPointsPosition=[],o.selectorProps={toolName:o.nearbyToolData?.metadata?.toolName,value:o.nearbyToolData,uid:o.nearbyToolData?.annotationUID,nearbyToolData:o.nearbyToolData,event:a,...o.selectorProps},t.run(e,o)},getNearbyToolData:({nearbyToolData:e,element:t,canvasCoordinates:n})=>e??s.utilities.getAnnotationNearPoint(t,n),getNearbyAnnotation({element:e,canvasCoordinates:t}){const n=y.getNearbyToolData({nearbyToolData:null,element:e,canvasCoordinates:t});return n?.metadata?.toolName&&(t=>{const n=(0,a.getEnabledElement)(e);if(!n)return;const{renderingEngineId:o,viewportId:r}=n,i=s.ToolGroupManager.getToolGroupForViewport(r,o).getToolInstance(t);return i?.constructor?.isAnnotation??!0})(n.metadata.toolName)?n:null},deleteMeasurement:({uid:e})=>{e&&h.remove(e)},setMeasurementLabel:({uid:e})=>{const t=m.get("measurementLabels");v(d.getMeasurement(e),i,t).then((t=>{d.update(e,{...t},!0)}))},updateMeasurement:e=>{const{code:t,uid:n,textLabel:o,label:r}=e,i={...d.getMeasurement(n)};if(void 0!==o&&(i.label=o),void 0!==t){const e=t.type||"finding";if(t.ref&&!t.CodeValue){const e=t.ref.indexOf(":");t.CodeValue=t.ref.substring(e+1),t.CodeMeaning=t.text||r,t.CodingSchemeDesignator=t.ref.substring(0,e)}i[e]=t,"finding"!==e&&(i.findingSites?(i.findingSites=i.findingSites.filter((t=>t.type!==e)),i.findingSites.push(t)):i.findingSites=[t])}d.update(i.uid,i,!0)},getActiveViewportEnabledElement:I,setViewportActive:({viewportId:e})=>{l.getViewportInfo(e)?n.setActiveViewportId(e):console.warn("No viewport found for viewportId:",e)},arrowTextCallback:({callback:e,data:t,uid:n})=>{const o=m.get("measurementLabels");!function(e,t,n,o){const r=!!o&&o.exclusive,i=o?o.items:[],{validateFunc:a=(e=>!0)}=n;e.create({id:"select-annotation",centralize:!0,isDraggable:!1,showOverlay:!0,content:S.nd,contentProps:{labellingDoneCallback:n=>{if("string"==typeof n){if("function"==typeof a&&!a(n))return;t(n,"save")}else t("","cancel");e.dismiss({id:"select-annotation"})},measurementData:{label:""},componentClassName:{},labelData:i,exclusive:r}})}(i,e,{},o)},toggleCine:()=>{const{viewports:e}=n.getState(),{isCineEnabled:t}=r.getState();r.setIsCineEnabled(!t),e.forEach(((e,t)=>r.setCine({id:t,isPlaying:!1})))},setViewportWindowLevel({viewportId:e,window:t,level:n}){const o=Number(t),r=Number(n),i=l.getRenderingEngine().getViewport(e),{lower:s,upper:c}=a.utilities.windowLevel.toLowHighRange(o,r);i.setProperties({voiRange:{upper:c,lower:s}}),i.render()},toggleViewportColorbar:({viewportId:e,displaySetInstanceUIDs:t,options:n={}})=>{p.hasColorbar(e)?p.removeColorbar(e):p.addColorbar(e,t,n)},setWindowLevel(e){const{toolGroupId:t}=e,{viewportId:n}=I(),r=o.getToolGroupForViewport(n);t&&t!==r||y.setViewportWindowLevel({...e,viewportId:n})},setToolEnabled:({toolName:e,toggle:t,toolGroupId:r})=>{const{viewports:i}=n.getState();if(!i.size)return;const a=o.getToolGroup(r??null);if(!a||!a.hasTool(e))return;const c=a.getToolOptions(e).mode===s.Enums.ToolModes.Enabled;t&&c?a.setToolDisabled(e):a.setToolEnabled(e);l.getRenderingEngine().render()},toggleEnabledDisabledToolbar({value:e,itemId:t,toolGroupId:n}){const r=t||e;n=n??f();const i=o.getToolGroup(n);if(!i||!i.hasTool(r))return;i.getToolOptions(r).mode===s.Enums.ToolModes.Enabled?i.setToolDisabled(r):i.setToolEnabled(r)},toggleActiveDisabledToolbar({value:e,itemId:t,toolGroupId:n}){const r=t||e;n=n??f();const i=o.getToolGroup(n);if(!i||!i.hasTool(r))return;const a=[s.Enums.ToolModes.Active,s.Enums.ToolModes.Enabled,s.Enums.ToolModes.Passive].includes(i.getToolOptions(r).mode);if(a?i.setToolDisabled(r):y.setToolActive({toolName:r,toolGroupId:n}),a){const e=i.getPrevActivePrimaryToolName();e!==r&&y.setToolActive({toolName:e,toolGroupId:n})}},setToolActiveToolbar:({value:e,itemId:t,toolGroupIds:n=[]})=>{const r=t||e;(n=n.length?n:o.getToolGroupIds()).forEach((e=>{y.setToolActive({toolName:r,toolGroupId:e})}))},setToolActive:({toolName:e,toolGroupId:t=null})=>{const{viewports:r}=n.getState();if(!r.size)return;const i=o.getToolGroup(t);if(!i)return;if(!i.hasTool(e))return;const a=i.getActivePrimaryMouseButtonTool();if(a){const e=i.getToolConfiguration(a);e?.disableOnPassive?i.setToolDisabled(a):i.setToolPassive(a)}i.setToolActive(e,{bindings:[{mouseButton:s.Enums.MouseBindings.Primary}]})},showDownloadViewportModal:()=>{const{activeViewportId:t}=n.getState();if(!l.getCornerstoneViewport(t))return void c.show({title:"Download Image",message:"Image cannot be downloaded",type:"error"});const{uiModalService:o}=e.services;o&&o.show({content:ht,title:"Download High Quality Image",contentProps:{activeViewportId:t,onClose:o.hide,cornerstoneViewportService:l}})},rotateViewport:({rotation:e})=>{const t=I();if(!t)return;const{viewport:n}=t;if(n instanceof a.BaseVolumeViewport){const t=n.getCamera(),o=e*Math.PI/180,r=ct.pB.identity(new Float32Array(16));ct.pB.rotate(r,r,o,t.viewPlaneNormal);const i=ct.eR.transformMat4(ct.eR.create(),t.viewUp,r);n.setCamera({viewUp:i}),n.render()}else if(void 0!==n.getRotation){const t=(n.getRotation()+e)%360;n.setProperties({rotation:t}),n.render()}},flipViewportHorizontal:()=>{const e=I();if(!e)return;const{viewport:t}=e,{flipHorizontal:n}=t.getCamera();t.setCamera({flipHorizontal:!n}),t.render()},flipViewportVertical:()=>{const e=I();if(!e)return;const{viewport:t}=e,{flipVertical:n}=t.getCamera();t.setCamera({flipVertical:!n}),t.render()},invertViewport:({element:e})=>{let t;if(t=void 0===e?I():e,!t)return;const{viewport:n}=t,{invert:o}=n.getProperties();n.setProperties({invert:!o}),n.render()},resetViewport:()=>{const e=I();if(!e)return;const{viewport:t}=e;t.resetProperties?.(),t.resetCamera(),t.render()},scaleViewport:({direction:e})=>{const t=I(),n=e>0?.9:1.1;if(!t)return;const{viewport:o}=t;if(o instanceof a.StackViewport)if(e){const{parallelScale:e}=o.getCamera();o.setCamera({parallelScale:e*n}),o.render()}else o.resetCamera(),o.render()},jumpToImage:({imageIndex:e,viewport:t})=>{let n;if(t)n=l.getCornerstoneViewport(t.id);else{const e=I();if(!e)return;n=e.viewport}let o=0;if(n instanceof a.StackViewport)o=n.getImageIds().length;else{if(!(n instanceof a.VolumeViewport))throw new Error("Unsupported viewport type");o=a.utilities.getImageSliceDataForVolumeViewport(n).numberOfSlices}const r=e<0?o+e:e;if(r>=o||r<0)throw new Error(`Can't jump to ${e}`);const i={imageIndex:r};s.utilities.jumpToSlice(n.element,i)},scroll:({direction:e})=>{const t=I();if(!t)return;const{viewport:n}=t,o={delta:e};s.utilities.scroll(n,o)},setViewportColormap:({viewportId:e,displaySetInstanceUID:t,colormap:o,opacity:r=1,immediate:i=!1})=>{const s=l.getCornerstoneViewport(e),c=s.getActors();let d;const{viewportMatchDetails:m}=u.getActiveProtocol(),p=m.get(e)?.displaySetsInfo;if(p){const e=p.find((e=>e.displaySetInstanceUID===t));d=e?.displaySetOptions?.options?.colormap?.opacity}o={...o,opacity:d||r};const g=(e,t)=>{const n=c.find((e=>e.uid.includes(t))),{actor:r,uid:i}=n;e.setProperties({colormap:o,volumeActor:r},i)};if(s instanceof a.StackViewport&&g(s,e),s instanceof a.VolumeViewport){if(!t){const{viewports:o}=n.getState();t=o.get(e)?.displaySetInstanceUIDs[0]}g(s,t)}i&&s.render()},changeActiveViewport:({direction:e=1})=>{const{activeViewportId:t,viewports:o}=n.getState(),r=Array.from(o.keys()),i=(r.indexOf(t)+e+r.length)%r.length;n.setActiveViewportId(r[i])},toggleSynchronizer:({type:t,viewports:n,syncId:o})=>{const r=g.getSynchronizer(o);if(r)return void(r.isDisabled()?r.setEnabled(!0):r.setEnabled(!1));const i=ft[t];i&&i({servicesManager:e,viewports:n,syncId:o})},setSourceViewportForReferenceLinesTool:({viewportId:e})=>{if(!e){const{activeViewportId:t}=n.getState();e=t??"default"}const t=o.getToolGroupForViewport(e);t?.setToolConfiguration(s.ReferenceLinesTool.toolName,{sourceViewportId:e},!0);l.getRenderingEngine().render()},storePresentation:({viewportId:e})=>{l.storePresentation({viewportId:e})},updateVolumeData:({volume:e})=>{const{imageData:t,vtkOpenGLTexture:n}=e,o=t.getDimensions()[2];[...Array(o).keys()].forEach((e=>{n.setUpdatedFrame(e)})),t.modified()},attachProtocolViewportDataListener:({protocol:e,stageIndex:n})=>{const o=l.EVENTS.VIEWPORT_DATA_CHANGED,r=e.callbacks.onViewportDataInitialized,i=e.stages?.[n]?.viewports.length??1;let a=0;const{unsubscribe:s}=l.subscribe(o,(e=>{a++,a===i&&(t.run(...r),s(o))}))},setViewportPreset:({viewportId:e,preset:t})=>{const n=l.getCornerstoneViewport(e);n&&(n.setProperties({preset:t}),n.render())},setVolumeRenderingQulaity:({viewportId:e,volumeQuality:t})=>{const n=l.getCornerstoneViewport(e),{actor:o}=n.getActors()[0],r=o.getMapper(),i=r.getInputData(),a=i.getDimensions(),s=i.getSpacing(),c=ct.eR.length(ct.eR.fromValues(a[0]*s[0],a[1]*s[1],a[2]*s[2]));let d=s.reduce(((e,t)=>e+t))/3;d/=t>1?.5*t**2:1;const m=c/d+1;r.setMaximumSamplesPerRay(m),r.setSampleDistance(d),n.render()},shiftVolumeOpacityPoints:({viewportId:e,shift:t})=>{const n=l.getCornerstoneViewport(e),{actor:o}=n.getActors()[0],r=o.getProperty().getScalarOpacity(0),i=[],a=r.getSize();for(let e=0;e<a;e++){const t=[0,0,0,0];r.getNodeValue(e,t),i.push(t)}i.forEach((e=>{e[0]+=t})),r.removeAllPoints(),i.forEach((e=>{r.addPoint(...e)})),n.render()},setVolumeLighting:({viewportId:e,options:t})=>{const n=l.getCornerstoneViewport(e),{actor:o}=n.getActors()[0],r=o.getProperty();void 0!==t.shade&&r.setShade(t.shade),void 0!==t.ambient&&r.setAmbient(t.ambient),void 0!==t.diffuse&&r.setDiffuse(t.diffuse),void 0!==t.specular&&r.setSpecular(t.specular),n.render()},resetCrosshairs:({viewportId:e})=>{const t=[],n=e=>{const n=o.getToolGroup(e);t.push(n.getToolInstance("Crosshairs"))};if(e){n(o.getToolGroupForViewport(e).id)}else{o.getToolGroupIds().forEach(n)}t.forEach((e=>{e?.resetCrosshairs()}))}},T={showCornerstoneContextMenu:{commandFn:y.showCornerstoneContextMenu,options:{menuCustomizationId:"measurementsContextMenu",commands:[{commandName:"showContextMenu"}]}},getNearbyToolData:{commandFn:y.getNearbyToolData},getNearbyAnnotation:{commandFn:y.getNearbyAnnotation,storeContexts:[],options:{}},toggleViewportColorbar:{commandFn:y.toggleViewportColorbar},deleteMeasurement:{commandFn:y.deleteMeasurement},setMeasurementLabel:{commandFn:y.setMeasurementLabel},updateMeasurement:{commandFn:y.updateMeasurement},setViewportWindowLevel:{commandFn:y.setViewportWindowLevel},setWindowLevel:{commandFn:y.setWindowLevel},setToolActive:{commandFn:y.setToolActive},setToolActiveToolbar:{commandFn:y.setToolActiveToolbar},setToolEnabled:{commandFn:y.setToolEnabled},rotateViewportCW:{commandFn:y.rotateViewport,options:{rotation:90}},rotateViewportCCW:{commandFn:y.rotateViewport,options:{rotation:-90}},incrementActiveViewport:{commandFn:y.changeActiveViewport},decrementActiveViewport:{commandFn:y.changeActiveViewport,options:{direction:-1}},flipViewportHorizontal:{commandFn:y.flipViewportHorizontal},flipViewportVertical:{commandFn:y.flipViewportVertical},invertViewport:{commandFn:y.invertViewport},resetViewport:{commandFn:y.resetViewport},scaleUpViewport:{commandFn:y.scaleViewport,options:{direction:1}},scaleDownViewport:{commandFn:y.scaleViewport,options:{direction:-1}},fitViewportToWindow:{commandFn:y.scaleViewport,options:{direction:0}},nextImage:{commandFn:y.scroll,options:{direction:1}},previousImage:{commandFn:y.scroll,options:{direction:-1}},firstImage:{commandFn:y.jumpToImage,options:{imageIndex:0}},lastImage:{commandFn:y.jumpToImage,options:{imageIndex:-1}},jumpToImage:{commandFn:y.jumpToImage},showDownloadViewportModal:{commandFn:y.showDownloadViewportModal},toggleCine:{commandFn:y.toggleCine},arrowTextCallback:{commandFn:y.arrowTextCallback},setViewportActive:{commandFn:y.setViewportActive},setViewportColormap:{commandFn:y.setViewportColormap},setSourceViewportForReferenceLinesTool:{commandFn:y.setSourceViewportForReferenceLinesTool},storePresentation:{commandFn:y.storePresentation},attachProtocolViewportDataListener:{commandFn:y.attachProtocolViewportDataListener},setViewportPreset:{commandFn:y.setViewportPreset},setVolumeRenderingQulaity:{commandFn:y.setVolumeRenderingQulaity},shiftVolumeOpacityPoints:{commandFn:y.shiftVolumeOpacityPoints},setVolumeLighting:{commandFn:y.setVolumeLighting},resetCrosshairs:{commandFn:y.resetCrosshairs},toggleSynchronizer:{commandFn:y.toggleSynchronizer},updateVolumeData:{commandFn:y.updateVolumeData},toggleEnabledDisabledToolbar:{commandFn:y.toggleEnabledDisabledToolbar},toggleActiveDisabledToolbar:{commandFn:y.toggleActiveDisabledToolbar}};return{actions:y,definitions:T,defaultContext:"CORNERSTONE"}},wt={id:"fourUp",locked:!0,name:"3D four up",icon:"layout-advanced-3d-four-up",isPreset:!0,createdDate:"2023-03-15T10:29:44.894Z",modifiedDate:"2023-03-15T10:29:44.894Z",availableTo:{},editableBy:{},protocolMatchingRules:[],imageLoadStrategy:"interleaveCenter",displaySetSelectors:{mprDisplaySet:{seriesMatchingRules:[{weight:1,attribute:"isReconstructable",constraint:{equals:{value:!0}},required:!0}]}},stages:[{id:"fourUpStage",name:"fourUp",viewportStructure:{layoutType:"grid",properties:{rows:2,columns:2}},viewports:[{viewportOptions:{toolGroupId:"mpr",viewportType:"volume",orientation:"axial",initialImageOptions:{preset:"middle"},syncGroups:[{type:"voi",id:"mpr",source:!0,target:!0,options:{syncColormap:!0}}]},displaySets:[{id:"mprDisplaySet"}]},{viewportOptions:{toolGroupId:"volume3d",viewportType:"volume3d",orientation:"coronal",customViewportProps:{hideOverlays:!0}},displaySets:[{id:"mprDisplaySet",options:{displayPreset:{CT:"CT-Bone",MR:"MR-Default",default:"CT-Bone"}}}]},{viewportOptions:{toolGroupId:"mpr",viewportType:"volume",orientation:"coronal",initialImageOptions:{preset:"middle"},syncGroups:[{type:"voi",id:"mpr",source:!0,target:!0,options:{syncColormap:!0}}]},displaySets:[{id:"mprDisplaySet"}]},{viewportOptions:{toolGroupId:"mpr",viewportType:"volume",orientation:"sagittal",initialImageOptions:{preset:"middle"},syncGroups:[{type:"voi",id:"mpr",source:!0,target:!0,options:{syncColormap:!0}}]},displaySets:[{id:"mprDisplaySet"}]}]}]},Tt={id:"main3D",locked:!0,name:"3D main",icon:"layout-advanced-3d-main",isPreset:!0,createdDate:"2023-03-15T10:29:44.894Z",modifiedDate:"2023-03-15T10:29:44.894Z",availableTo:{},editableBy:{},protocolMatchingRules:[],imageLoadStrategy:"interleaveCenter",displaySetSelectors:{mprDisplaySet:{seriesMatchingRules:[{weight:1,attribute:"isReconstructable",constraint:{equals:{value:!0}},required:!0}]}},stages:[{id:"main3DStage",name:"main3D",viewportStructure:{layoutType:"grid",properties:{rows:2,columns:3,layoutOptions:[{x:0,y:0,width:1,height:.5},{x:0,y:.5,width:1/3,height:.5},{x:1/3,y:.5,width:1/3,height:.5},{x:2/3,y:.5,width:1/3,height:.5}]}},viewports:[{viewportOptions:{toolGroupId:"volume3d",viewportType:"volume3d",orientation:"coronal",customViewportProps:{hideOverlays:!0}},displaySets:[{id:"mprDisplaySet",options:{displayPreset:{CT:"CT-Bone",MR:"MR-Default",default:"CT-Bone"}}}]},{viewportOptions:{toolGroupId:"mpr",viewportType:"volume",orientation:"axial",initialImageOptions:{preset:"middle"},syncGroups:[{type:"voi",id:"mpr",source:!0,target:!0,options:{syncColormap:!0}}]},displaySets:[{id:"mprDisplaySet"}]},{viewportOptions:{toolGroupId:"mpr",viewportType:"volume",orientation:"coronal",initialImageOptions:{preset:"middle"},syncGroups:[{type:"voi",id:"mpr",source:!0,target:!0,options:{syncColormap:!0}}]},displaySets:[{id:"mprDisplaySet"}]},{viewportOptions:{toolGroupId:"mpr",viewportType:"volume",orientation:"sagittal",initialImageOptions:{preset:"middle"},syncGroups:[{type:"voi",id:"mpr",source:!0,target:!0,options:{syncColormap:!0}}]},displaySets:[{id:"mprDisplaySet"}]}]}]},Et={id:"mpr",name:"MPR",locked:!0,icon:"layout-advanced-mpr",isPreset:!0,createdDate:"2021-02-23",modifiedDate:"2023-08-15",availableTo:{},editableBy:{},numberOfPriorsReferenced:0,protocolMatchingRules:[],imageLoadStrategy:"nth",callbacks:{onLayoutChange:[{commandName:"toggleHangingProtocol",commandOptions:{protocolId:"mpr"},context:"DEFAULT"}]},displaySetSelectors:{activeDisplaySet:{seriesMatchingRules:[{weight:1,attribute:"isReconstructable",constraint:{equals:{value:!0}},required:!0}]}},stages:[{name:"MPR 1x3",viewportStructure:{layoutType:"grid",properties:{rows:1,columns:3,layoutOptions:[{x:0,y:0,width:1/3,height:1},{x:1/3,y:0,width:1/3,height:1},{x:2/3,y:0,width:1/3,height:1}]}},viewports:[{viewportOptions:{viewportId:"mpr-axial",toolGroupId:"mpr",viewportType:"volume",orientation:"axial",initialImageOptions:{preset:"middle"},syncGroups:[{type:"voi",id:"mpr",source:!0,target:!0,options:{syncColormap:!0}}]},displaySets:[{id:"activeDisplaySet"}]},{viewportOptions:{viewportId:"mpr-sagittal",toolGroupId:"mpr",viewportType:"volume",orientation:"sagittal",initialImageOptions:{preset:"middle"},syncGroups:[{type:"voi",id:"mpr",source:!0,target:!0,options:{syncColormap:!0}}]},displaySets:[{id:"activeDisplaySet"}]},{viewportOptions:{viewportId:"mpr-coronal",toolGroupId:"mpr",viewportType:"volume",orientation:"coronal",initialImageOptions:{preset:"middle"},syncGroups:[{type:"voi",id:"mpr",source:!0,target:!0,options:{syncColormap:!0}}]},displaySets:[{id:"activeDisplaySet"}]}]}]},Dt={id:"mprAnd3DVolumeViewport",locked:!0,name:"mpr",createdDate:"2023-03-15T10:29:44.894Z",modifiedDate:"2023-03-15T10:29:44.894Z",availableTo:{},editableBy:{},protocolMatchingRules:[],imageLoadStrategy:"interleaveCenter",displaySetSelectors:{mprDisplaySet:{seriesMatchingRules:[{weight:1,attribute:"isReconstructable",constraint:{equals:{value:!0}},required:!0},{attribute:"Modality",constraint:{equals:{value:"CT"}},required:!0}]}},stages:[{id:"mpr3Stage",name:"mpr",viewportStructure:{layoutType:"grid",properties:{rows:2,columns:2}},viewports:[{viewportOptions:{toolGroupId:"mpr",viewportType:"volume",orientation:"axial",initialImageOptions:{preset:"middle"},syncGroups:[{type:"voi",id:"mpr",source:!0,target:!0,options:{syncColormap:!0}}]},displaySets:[{id:"mprDisplaySet"}]},{viewportOptions:{toolGroupId:"volume3d",viewportType:"volume3d",orientation:"coronal",customViewportProps:{hideOverlays:!0}},displaySets:[{id:"mprDisplaySet",options:{displayPreset:{CT:"CT-Bone",MR:"MR-Default",default:"CT-Bone"}}}]},{viewportOptions:{toolGroupId:"mpr",viewportType:"volume",orientation:"coronal",initialImageOptions:{preset:"middle"},syncGroups:[{type:"voi",id:"mpr",source:!0,target:!0,options:{syncColormap:!0}}]},displaySets:[{id:"mprDisplaySet"}]},{viewportOptions:{toolGroupId:"mpr",viewportType:"volume",orientation:"sagittal",initialImageOptions:{preset:"middle"},syncGroups:[{type:"voi",id:"mpr",source:!0,target:!0,options:{syncColormap:!0}}]},displaySets:[{id:"mprDisplaySet"}]}]}]},bt={id:"only3D",locked:!0,name:"3D only",icon:"layout-advanced-3d-only",isPreset:!0,createdDate:"2023-03-15T10:29:44.894Z",modifiedDate:"2023-03-15T10:29:44.894Z",availableTo:{},editableBy:{},protocolMatchingRules:[],imageLoadStrategy:"interleaveCenter",displaySetSelectors:{mprDisplaySet:{seriesMatchingRules:[{weight:1,attribute:"isReconstructable",constraint:{equals:{value:!0}},required:!0}]}},stages:[{id:"only3DStage",name:"only3D",viewportStructure:{layoutType:"grid",properties:{rows:1,columns:1}},viewports:[{viewportOptions:{toolGroupId:"volume3d",viewportType:"volume3d",orientation:"coronal",customViewportProps:{hideOverlays:!0}},displaySets:[{id:"mprDisplaySet",options:{displayPreset:{CT:"CT-Bone",MR:"MR-Default",default:"CT-Bone"}}}]}]}]},Ot={id:"primary3D",locked:!0,name:"3D primary",icon:"layout-advanced-3d-primary",isPreset:!0,createdDate:"2023-03-15T10:29:44.894Z",modifiedDate:"2023-03-15T10:29:44.894Z",availableTo:{},editableBy:{},protocolMatchingRules:[],imageLoadStrategy:"interleaveCenter",displaySetSelectors:{mprDisplaySet:{seriesMatchingRules:[{weight:1,attribute:"isReconstructable",constraint:{equals:{value:!0}},required:!0}]}},stages:[{id:"primary3DStage",name:"primary3D",viewportStructure:{layoutType:"grid",properties:{rows:3,columns:3,layoutOptions:[{x:0,y:0,width:2/3,height:1},{x:2/3,y:0,width:1/3,height:1/3},{x:2/3,y:1/3,width:1/3,height:1/3},{x:2/3,y:2/3,width:1/3,height:1/3}]}},viewports:[{viewportOptions:{toolGroupId:"volume3d",viewportType:"volume3d",orientation:"coronal",customViewportProps:{hideOverlays:!0}},displaySets:[{id:"mprDisplaySet",options:{displayPreset:{CT:"CT-Bone",MR:"MR-Default",default:"CT-Bone"}}}]},{viewportOptions:{toolGroupId:"mpr",viewportType:"volume",orientation:"axial",initialImageOptions:{preset:"middle"},syncGroups:[{type:"voi",id:"mpr",source:!0,target:!0,options:{syncColormap:!0}}]},displaySets:[{id:"mprDisplaySet"}]},{viewportOptions:{toolGroupId:"mpr",viewportType:"volume",orientation:"coronal",initialImageOptions:{preset:"middle"},syncGroups:[{type:"voi",id:"mpr",source:!0,target:!0,options:{syncColormap:!0}}]},displaySets:[{id:"mprDisplaySet"}]},{viewportOptions:{toolGroupId:"mpr",viewportType:"volume",orientation:"sagittal",initialImageOptions:{preset:"middle"},syncGroups:[{type:"voi",id:"mpr",source:!0,target:!0,options:{syncColormap:!0}}]},displaySets:[{id:"mprDisplaySet"}]}]}]},Nt={id:"primaryAxial",locked:!0,name:"Axial Primary",icon:"layout-advanced-axial-primary",isPreset:!0,createdDate:"2023-03-15T10:29:44.894Z",modifiedDate:"2023-03-15T10:29:44.894Z",availableTo:{},editableBy:{},protocolMatchingRules:[],imageLoadStrategy:"interleaveCenter",displaySetSelectors:{mprDisplaySet:{seriesMatchingRules:[{weight:1,attribute:"isReconstructable",constraint:{equals:{value:!0}},required:!0}]}},stages:[{id:"primaryAxialStage",name:"primaryAxial",viewportStructure:{layoutType:"grid",properties:{rows:2,columns:3,layoutOptions:[{x:0,y:0,width:2/3,height:1},{x:2/3,y:0,width:1/3,height:.5},{x:2/3,y:.5,width:1/3,height:.5}]}},viewports:[{viewportOptions:{toolGroupId:"mpr",viewportType:"volume",orientation:"axial",initialImageOptions:{preset:"middle"},syncGroups:[{type:"voi",id:"mpr",source:!0,target:!0,options:{syncColormap:!0}}]},displaySets:[{id:"mprDisplaySet"}]},{viewportOptions:{toolGroupId:"mpr",viewportType:"volume",orientation:"sagittal",initialImageOptions:{preset:"middle"},syncGroups:[{type:"voi",id:"mpr",source:!0,target:!0,options:{syncColormap:!0}}]},displaySets:[{id:"mprDisplaySet"}]},{viewportOptions:{toolGroupId:"mpr",viewportType:"volume",orientation:"coronal",initialImageOptions:{preset:"middle"},syncGroups:[{type:"voi",id:"mpr",source:!0,target:!0,options:{syncColormap:!0}}]},displaySets:[{id:"mprDisplaySet"}]}]}]};const At=function(){return[{name:Et.id,protocol:Et},{name:Dt.id,protocol:Dt},{name:wt.id,protocol:wt},{name:Tt.id,protocol:Tt},{name:Nt.id,protocol:Nt},{name:bt.id,protocol:bt},{name:Ot.id,protocol:Ot}]},Ct=e=>e?"!text-primary-active":"!text-common-bright hover:!bg-primary-dark hover:text-primary-light";function Mt({viewportId:e,button:t,disabledText:n,offModes:o,toolGroupService:r}){const i=r.getToolGroupForViewport(e);if(!i)return;const a=Ut(t);if(!i.hasTool(a))return{disabled:!0,className:"!text-common-bright ohif-disabled",disabledText:n??"Not available on the current viewport"};const s=o.includes(i.getToolOptions(a).mode);return{className:Ct(!s)}}function Ut(e){const{props:t}=e,n=t?.commands||e.commands,o=(Array.isArray(n)?n:[n])[0];return o?.commandOptions?o.commandOptions.toolName??t?.id??e.id:t?.id??e.id}var Rt;const Vt={VIEWPORT_ADDED:"event::cornerstone::toolgroupservice:viewportadded",TOOLGROUP_CREATED:"event::cornerstone::toolgroupservice:toolgroupcreated",TOOL_ACTIVATED:"event::cornerstone::toolgroupservice:toolactivated",PRIMARY_TOOL_ACTIVATED:"event::cornerstone::toolgroupservice:primarytoolactivated"};class Pt{constructor(e){this.serviceManager=void 0,this.toolGroupIds=new Set,this.listeners=void 0,this.EVENTS=void 0,this._onToolActivated=e=>{const{toolGroupId:t,toolName:n,toolBindingsOptions:o}=e.detail,r=o.bindings?.some((e=>e.mouseButton===s.Enums.MouseBindings.Primary)),i={toolGroupId:t,toolName:n,toolBindingsOptions:o};this._broadcastEvent(Vt.TOOL_ACTIVATED,i),r&&this._broadcastEvent(Vt.PRIMARY_TOOL_ACTIVATED,i)};const{cornerstoneViewportService:t,viewportGridService:n,uiNotificationService:o}=e.services;this.cornerstoneViewportService=t,this.viewportGridService=n,this.uiNotificationService=o,this.listeners={},this.EVENTS=Vt,Object.assign(this,c.Ml),this._init()}onModeExit(){this.destroy()}_init(){a.eventTarget.addEventListener(s.Enums.Events.TOOL_ACTIVATED,this._onToolActivated)}getToolGroup(e){let t=e;if(!t){const e=w(this.viewportGridService);if(!e)return;const{renderingEngineId:n,viewportId:o}=e,r=s.ToolGroupManager.getToolGroupForViewport(o,n);if(!r)return void console.warn("No tool group found for viewportId:",o,"and renderingEngineId:",n);t=r.id}return s.ToolGroupManager.getToolGroup(t)}getToolGroupIds(){return Array.from(this.toolGroupIds)}getToolGroupForViewport(e){const t=this.cornerstoneViewportService.getRenderingEngine();return s.ToolGroupManager.getToolGroupForViewport(e,t.id)}getActiveToolForViewport(e){const t=this.getToolGroupForViewport(e);if(t)return t.getActivePrimaryMouseButtonTool()}destroy(){s.ToolGroupManager.destroy(),this.toolGroupIds=new Set,a.eventTarget.removeEventListener(s.Enums.Events.TOOL_ACTIVATED,this._onToolActivated)}destroyToolGroup(e){s.ToolGroupManager.destroyToolGroup(e),this.toolGroupIds.delete(e)}removeViewportFromToolGroup(e,t,n){const o=s.ToolGroupManager.getToolGroupForViewport(e,t);if(!o)return;o.removeViewports(t,e);0===o.getViewportIds().length&&n&&s.ToolGroupManager.destroyToolGroup(o.id)}addViewportToToolGroup(e,t,n){if(n){let o=s.ToolGroupManager.getToolGroup(n);o||(o=this.createToolGroup(n)),o.addViewport(e,t)}else{s.ToolGroupManager.getAllToolGroups().forEach((n=>{n.addViewport(e,t)}))}this._broadcastEvent(Vt.VIEWPORT_ADDED,{viewportId:e,toolGroupId:n})}createToolGroup(e){if(this.getToolGroup(e))throw new Error(`ToolGroup ${e} already exists`);const t=s.ToolGroupManager.createToolGroup(e);return this.toolGroupIds.add(e),this._broadcastEvent(Vt.TOOLGROUP_CREATED,{toolGroupId:e}),t}addToolsToToolGroup(e,t,n={}){const o=s.ToolGroupManager.getToolGroup(e);this._addTools(o,t,n),this._setToolsMode(o,t)}createToolGroupAndAddTools(e,t){const n=this.createToolGroup(e);return this.addToolsToToolGroup(e,t),n}getToolConfiguration(e,t){const n=s.ToolGroupManager.getToolGroup(e);if(!n)return null;const o=n.getToolInstance(t);return o?o.configuration:null}setToolConfiguration(e,t,n){s.ToolGroupManager.getToolGroup(e).getToolInstance(t).configuration=n}getActivePrimaryMouseButtonTool(e){return this.getToolGroup(e)?.getActivePrimaryMouseButtonTool()}_setToolsMode(e,t){const{active:n,passive:o,enabled:r,disabled:i}=t;n&&n.forEach((({toolName:t,bindings:n})=>{e.setToolActive(t,{bindings:n})})),o&&o.forEach((({toolName:t})=>{e.setToolPassive(t)})),r&&r.forEach((({toolName:t})=>{e.setToolEnabled(t)})),i&&i.forEach((({toolName:t})=>{e.setToolDisabled(t)}))}_addTools(e,t){const n=t=>{t.forEach((({toolName:t,parentTool:n,configuration:o})=>{n?e.addToolInstance(t,n,{...o}):e.addTool(t,{...o})}))};t.active&&n(t.active),t.passive&&n(t.passive),t.enabled&&n(t.enabled),t.disabled&&n(t.disabled)}}Rt=Pt,Pt.REGISTRATION={name:"toolGroupService",altName:"ToolGroupService",create:({servicesManager:e})=>new Rt(e)};const _t=Pt;var xt;const Gt={TOOL_GROUP_CREATED:"event::cornerstone::syncgroupservice:toolgroupcreated"},Lt="cameraposition",Ft="voi",kt="zoompan",$t="stackimage",Bt="imageslice";class zt{constructor(e){this.servicesManager=void 0,this.listeners={},this.EVENTS=void 0,this.synchronizerCreators={[Lt]:s.synchronizers.createCameraPositionSynchronizer,[Ft]:s.synchronizers.createVOISynchronizer,[kt]:s.synchronizers.createZoomPanSynchronizer,[$t]:s.synchronizers.createImageSliceSynchronizer,[Bt]:s.synchronizers.createImageSliceSynchronizer},this.synchronizersByType={},this.servicesManager=e,this.listeners={},this.EVENTS=Gt,Object.assign(this,c.Ml)}_createSynchronizer(e,t,n){this.synchronizersByType[e]=this.synchronizersByType[e]||[];const o=this.synchronizerCreators[e.toLowerCase()];if(o){const r=o(t,n);if(r)return this.synchronizersByType[e].push(r),r}else console.warn(`Unknown synchronizer type: ${e}, id: ${t}`)}getSyncCreatorForType(e){return this.synchronizerCreators[e.toLowerCase()]}addSynchronizerType(e,t){this.synchronizerCreators[e.toLowerCase()]=t}getSynchronizer(e){return s.SynchronizerManager.getSynchronizer(e)}getSynchronizersOfType(e){return this.synchronizersByType[e]}_getOrCreateSynchronizer(e,t,n){let o=s.SynchronizerManager.getSynchronizer(t);return o||(o=this._createSynchronizer(e,t,n)),o}addViewportToSyncGroup(e,t,n){if(!n)return;(Array.isArray(n)?n:[n]).forEach((n=>{const o=(e=>"string"==typeof e?{type:e}:e)(n),{type:r,target:i=!0,source:a=!0,options:s={},id:l=r}=o,c=this._getOrCreateSynchronizer(r,l,s);c.setOptions(e,s);const d={viewportId:e,renderingEngineId:t};i&&a?c.add(d):a?c.addSource(d):i&&c.addTarget(d)}))}destroy(){s.SynchronizerManager.destroy()}getSynchronizersForViewport(e){const t=(0,a.getRenderingEngines)().find((t=>t.getViewports().find((t=>t.id===e))))||(0,a.getRenderingEngines)()[0];return s.SynchronizerManager.getAllSynchronizers().filter((n=>n.hasSourceViewport(t.id,e)||n.hasTargetViewport(t.id,e)))}removeViewportFromSyncGroup(e,t,n){const o=s.SynchronizerManager.getAllSynchronizers();(n?o.filter((e=>e.id===n)):o).forEach((n=>{if(!n)return;n.remove({viewportId:e,renderingEngineId:t});const o=n.getSourceViewports(),r=n.getTargetViewports();o.length||r.length||s.SynchronizerManager.destroySynchronizer(n.id)}))}}xt=zt,zt.REGISTRATION={name:"syncGroupService",altName:"SyncGroupService",create:({servicesManager:e})=>new xt(e)};const jt=zt;var Wt,qt=n(71932),Ht=n.n(qt);function Yt(e,t){const n=1-t;return e<1/4?4*Math.pow(2*e,3)*n+t:e<.5?(1-Math.pow(-4*e+2,3)/2)*n+t:e<3/4?(1-Math.pow(4*e-2,3)/2)*n+t:-4*Math.pow(2*e-2,3)*n+t}const Zt=s.Enums.SegmentationRepresentations.Labelmap,Kt=s.Enums.SegmentationRepresentations.Contour,Qt={SEGMENTATION_UPDATED:"event::segmentation_updated",SEGMENTATION_DATA_MODIFIED:"event::segmentation_data_modified",SEGMENTATION_ADDED:"event::segmentation_added",SEGMENTATION_REMOVED:"event::segmentation_removed",SEGMENTATION_CONFIGURATION_CHANGED:"event::segmentation_configuration_changed",SEGMENT_LOADING_COMPLETE:"event::segment_loading_complete",SEGMENTATION_LOADING_COMPLETE:"event::segmentation_loading_complete"},Jt={opacity:255,isVisible:!0,isLocked:!1};class Xt extends c.Rc{constructor({servicesManager:e}){super(Qt),this.segmentations=void 0,this.servicesManager=void 0,this.highlightIntervalId=null,this.EVENTS=Qt,this.destroy=()=>{a.eventTarget.removeEventListener(s.Enums.Events.SEGMENTATION_MODIFIED,this._onSegmentationModifiedFromSource),a.eventTarget.removeEventListener(s.Enums.Events.SEGMENTATION_DATA_MODIFIED,this._onSegmentationDataModified),Object.keys(this.segmentations).forEach((e=>{this._removeSegmentationFromCornerstone(e)})),this.segmentations={},this.listeners={}},this.setSegmentRGBA=(e,t,n,o)=>{const r=this.getSegmentation(e);if(void 0===r)throw new Error(`no segmentation for segmentationId: ${e}`);const i=!0;this._setSegmentOpacity(e,t,n[3],o,i),this._setSegmentColor(e,t,[n[0],n[1],n[2]],o,i),this._broadcastEvent(this.EVENTS.SEGMENTATION_UPDATED,{segmentation:r})},this.calculateCentroids=(e,t)=>{const n=this.getSegmentation(e),o=this.getLabelmapVolume(e),{dimensions:r,imageData:i}=o,a=o.getScalarData(),[s,l,c]=r,d=s*l,m=t?[t]:n.segments.filter((e=>e?.segmentIndex)).map((e=>e.segmentIndex)),p=new Set(m),u=new Map;for(const e of p)u.set(e,{x:0,y:0,z:0,count:0});let g=0;for(let e=0;e<c;e++)for(let t=0;t<d;t++){const n=a[g++];if(p.has(n)){const o=u.get(n);o.x+=t%s,o.y+=t/s|0,o.z+=e,o.count++}}const h=new Map;for(const[e,t]of u){const n=t.count,o={x:t.x/n,y:t.y/n,z:t.z/n};o.world=i.indexToWorld([o.x,o.y,o.z]),h.set(e,o)}return this.setCentroids(e,h),h},this.setCentroids=(e,t)=>{const n=this.getSegmentation(e),o=this.getLabelmapVolume(e).imageData;n.cachedStats?n.cachedStats.segmentCenter||(n.cachedStats.segmentCenter={}):n.cachedStats={segmentCenter:{}};for(const[e,r]of t){let t=r.world;t&&0!==t.length||(t=o.indexToWorld(r.image)),n.cachedStats.segmentCenter[e]={center:{image:r.image,world:t}}}this.addOrUpdateSegmentation(n,!0,!0)},this.createSegmentationForDisplaySet=async(e,t)=>{const{displaySetService:n}=this.servicesManager.services,o=n.getDisplaySetByUID(e),r=Zt,i=this._getVolumeIdForDisplaySet(o),s=t?.segmentationId??`${a.utilities.uuidv4()}`;await a.volumeLoader.createAndCacheDerivedSegmentationVolume(i,{volumeId:s,targetBuffer:{type:"Uint8Array",sharedArrayBuffer:window.SharedArrayBuffer}});const l={...this._getDefaultSegmentationScheme(),id:s,displaySetInstanceUID:e,label:t?.label,isActive:!0,type:r,FrameOfReferenceUID:t?.FrameOfReferenceUID||o.instances?.[0]?.FrameOfReferenceUID,representationData:{LABELMAP:{volumeId:s,referencedVolumeId:i}},description:`S${o.SeriesNumber}: ${o.SeriesDescription}`};return this.addOrUpdateSegmentation(l),s},this.toggleSegmentationVisibility=e=>{this._toggleSegmentationVisibility(e,!1)},this.addSegmentationRepresentationToToolGroup=async(e,t,n=!1,o=s.Enums.SegmentationRepresentations.Labelmap,r=!1)=>{const i=this.getSegmentation(t);if(!i)throw new Error(`Segmentation with segmentationId ${t} not found.`);n&&(i.hydrated=!0);const a=await s.segmentation.addSegmentationRepresentations(e,[{segmentationId:t,type:o}]);this._setActiveSegmentationForToolGroup(t,e,a[0]);for(const n of i.segments){if(null==n)continue;const{segmentIndex:o,color:r,isLocked:i,isVisible:a,opacity:s}=n,l=!0;void 0!==r&&this._setSegmentColor(t,o,r,e,l),void 0!==s&&this._setSegmentOpacity(t,o,s,e,l),void 0!==a&&this._setSegmentVisibility(t,o,a,e,l),i&&this._setSegmentLocked(t,o,i,l)}r||this._broadcastEvent(this.EVENTS.SEGMENTATION_UPDATED,{segmentation:i})},this.setSegmentRGBAColor=(e,t,n,o)=>{const r=this.getSegmentation(e);if(void 0===r)throw new Error(`no segmentation for segmentationId: ${e}`);this._setSegmentOpacity(e,t,n[3],o,!0),this._setSegmentColor(e,t,[n[0],n[1],n[2]],o,!0),this._broadcastEvent(this.EVENTS.SEGMENTATION_UPDATED,{segmentation:r})},this.getToolGroupIdsWithSegmentation=e=>s.segmentation.state.getToolGroupIdsWithSegmentation(e),this.hydrateSegmentation=(e,t=!1)=>{const n=this.getSegmentation(e);if(!n)throw new Error(`Segmentation with segmentationId ${e} not found.`);n.hydrated=!0,this._setDisplaySetIsHydrated(e,!0),t||this._broadcastEvent(this.EVENTS.SEGMENTATION_UPDATED,{segmentation:n})},this.getConfiguration=e=>{e=e??this._getApplicableToolGroupId();const t=this.getSegmentationRepresentationsForToolGroup(e),n=t?.[0]?.type||Zt,o=s.segmentation.config.getGlobalConfig(),{renderInactiveSegmentations:r}=o,i=o.representations[n],{renderOutline:a,outlineWidthActive:l,renderFill:c,fillAlpha:d,fillAlphaInactive:m,outlineOpacity:p,outlineOpacityInactive:u}=i;return{brushSize:1,brushThresholdGate:1,fillAlpha:d,fillAlphaInactive:m,outlineWidthActive:l,renderFill:c,renderInactiveSegmentations:r,renderOutline:a,outlineOpacity:p,outlineOpacityInactive:u}},this.setConfiguration=e=>{const{fillAlpha:t,fillAlphaInactive:n,outlineWidthActive:o,outlineOpacity:r,renderFill:i,renderInactiveSegmentations:a,renderOutline:l}=e,c=(e,t,n=null)=>{if(void 0!==t){const o=n?n(t):t;this._setSegmentationConfig(e,o)}};if(c("renderOutline",l),c("outlineWidthActive",o),c("outlineOpacity",r,(e=>e/100)),c("fillAlpha",t,(e=>e/100)),c("renderFill",i),c("fillAlphaInactive",n,(e=>e/100)),c("outlineOpacityInactive",n,(e=>Math.max(.75,e/100))),void 0!==a){const e=s.segmentation.config.getGlobalConfig();e.renderInactiveSegmentations=a,s.segmentation.config.setGlobalConfig(e)}this._broadcastEvent(this.EVENTS.SEGMENTATION_CONFIGURATION_CHANGED,this.getConfiguration())},this.getLabelmapVolume=e=>a.cache.getVolume(e),this.getSegmentationRepresentationsForToolGroup=e=>s.segmentation.state.getSegmentationRepresentations(e),this._toggleSegmentationVisibility=(e,t=!1)=>{const n=this.segmentations[e];if(!n)throw new Error(`Segmentation with segmentationId ${e} not found.`);n.isVisible=!n.isVisible,this._updateCornerstoneSegmentationVisibility(e),!1===t&&this._broadcastEvent(this.EVENTS.SEGMENTATION_UPDATED,{segmentation:n})},this._setSegmentColor=(e,t,n,o,r=!1)=>{const i=this.getSegmentation(e);if(void 0===i)throw new Error(`no segmentation for segmentationId: ${e}`);const a=this._getSegmentInfo(i,t);if(void 0===a)throw new Error(`Segment ${t} not yet added to segmentation: ${e}`);o=o??this._getApplicableToolGroupId();const l=this._getSegmentationRepresentation(e,o);if(!l)throw new Error("Must add representation to toolgroup before setting segments");const{segmentationRepresentationUID:c}=l,d=s.segmentation.config.color.getColorForSegmentIndex(o,c,t);s.segmentation.config.color.setColorForSegmentIndex(o,c,t,[...n,d[3]]),a.color=n,!1===r&&this._broadcastEvent(this.EVENTS.SEGMENTATION_UPDATED,{segmentation:i})},this._setSegmentOpacity=(e,t,n,o,r=!1)=>{const i=this.getSegmentation(e);if(void 0===i)throw new Error(`no segmentation for segmentationId: ${e}`);const a=this._getSegmentInfo(i,t);if(void 0===a)throw new Error(`Segment ${t} not yet added to segmentation: ${e}`);o=o??this._getApplicableToolGroupId();const l=this._getSegmentationRepresentation(e,o);if(!l)throw new Error("Must add representation to toolgroup before setting segments");const{segmentationRepresentationUID:c}=l,d=s.segmentation.config.color.getColorForSegmentIndex(o,c,t);s.segmentation.config.color.setColorForSegmentIndex(o,c,t,[d[0],d[1],d[2],n]),a.opacity=n,!1===r&&this._broadcastEvent(this.EVENTS.SEGMENTATION_UPDATED,{segmentation:i})},this._setSegmentationConfig=(e,t)=>{const n=this.getSegmentations()[0].type,{cornerstoneViewportService:o}=this.servicesManager.services,r=s.segmentation.config.getGlobalConfig();r.representations[n][e]=t,s.segmentation.config.setGlobalConfig(r);const i=o.getRenderingEngine(),a=o.getViewportIds();i.renderViewports(a)},this._onSegmentationDataModified=e=>{const{segmentationId:t}=e.detail,n=this.getSegmentation(t);void 0!==n&&this._broadcastEvent(this.EVENTS.SEGMENTATION_DATA_MODIFIED,{segmentation:n})},this._onSegmentationModifiedFromSource=e=>{const{segmentationId:t}=e.detail,n=this.segmentations[t];if(void 0===n)return;const o=s.segmentation.state.getSegmentation(t);if(!o)return;const{activeSegmentIndex:r,cachedStats:i,segmentsLocked:a,label:l,type:c}=o;if(![Zt,Kt].includes(c))throw new Error(`Unsupported segmentation type: ${c}. Only ${Zt} and ${Kt} are supported.`);const d=o.representationData[c],m={...n,activeSegmentIndex:r,cachedStats:i,displayText:[],id:t,label:l,segmentsLocked:a,type:c,representationData:{[c]:{...d}}};try{this.addOrUpdateSegmentation(m)}catch(e){console.warn(`Failed to add/update segmentation ${t}`,e)}},this._updateCornerstoneSegmentationVisibility=e=>{s.segmentation.state.getToolGroupIdsWithSegmentation(e).forEach((t=>{const n=s.segmentation.state.getSegmentationRepresentations(t);if(0===n.length)return;const o=n.find((t=>t.segmentationId===e)),{segmentsHidden:r}=o,i=!(0===r.size);s.segmentation.config.visibility.setSegmentationVisibility(t,o.segmentationRepresentationUID,i);const{segmentation:a}=this._getSegmentationInfo(e,t);a.segments.filter(Boolean).forEach((e=>{e.isVisible=i}))}))},this._getApplicableToolGroupId=()=>{const{toolGroupService:e,viewportGridService:t,cornerstoneViewportService:n}=this.servicesManager.services,o=n.getViewportInfo(t.getActiveViewportId());if(!o){return e.getToolGroupIds()[0]}return o.getToolGroupId()},this.arrayOfObjects=e=>Object.entries(e).map((e=>({[e[0]]:e[1]}))),this.segmentations={},this.servicesManager=e,this._initSegmentationService()}addSegment(e,t={}){if(0===t?.segmentIndex)throw new Error('Segment index 0 is reserved for "no label"');const n=t.toolGroupId??this._getApplicableToolGroupId(),{segmentationRepresentationUID:o,segmentation:r}=this._getSegmentationInfo(e,n);let i=t.segmentIndex;if(i||(i=0===r.segments.length?1:r.segments.length),this._getSegmentInfo(r,i))throw new Error(`Segment ${i} already exists`);const a=s.segmentation.config.color.getColorForSegmentIndex(n,o,i);r.segments[i]={label:t.properties?.label??`Segment ${i}`,segmentIndex:i,color:[a[0],a[1],a[2]],opacity:a[3],isVisible:!0,isLocked:!1},r.segmentCount++,this._setActiveSegment(e,i);const l=!0;if(void 0!==t.properties){const{color:o,opacity:r,isLocked:a,visibility:s,active:c}=t.properties;void 0!==o&&this._setSegmentColor(e,i,o,n,l),void 0!==r&&this._setSegmentOpacity(e,i,r,n,l),void 0!==s&&this._setSegmentVisibility(e,i,s,n,l),!0===c&&this._setActiveSegment(e,i,l),void 0!==a&&this._setSegmentLocked(e,i,a,l)}null===r.activeSegmentIndex&&this._setActiveSegment(e,i,l),this._broadcastEvent(this.EVENTS.SEGMENTATION_UPDATED,{segmentation:r})}removeSegment(e,t){const n=this.getSegmentation(e);if(void 0===n)throw new Error(`no segmentation for segmentationId: ${e}`);if(0===t)throw new Error('Segment index 0 is reserved for "no label"');if(!this._getSegmentInfo(n,t))return;n.segmentCount--,n.segments[t]=null;const o=this.getLabelmapVolume(e),{dimensions:r}=o,i=o.getScalarData(),a=r[0]*r[1],l=r[2];let c=0;const d=new Set;for(let e=0;e<l;e++)for(let n=0;n<a;n++)i[c]===t&&(i[c]=0,d.add(e)),c++;const m=Array.from(d);if(s.segmentation.triggerSegmentationEvents.triggerSegmentationDataModified(e,m),n.activeSegmentIndex===t){const t=Object.keys(n.segments),o=t.length?Number(t[0]):1;this._setActiveSegment(e,o,!0)}this._broadcastEvent(this.EVENTS.SEGMENTATION_UPDATED,{segmentation:n})}setSegmentVisibility(e,t,n,o,r=!1){this._setSegmentVisibility(e,t,n,o,r)}setSegmentLocked(e,t,n){this._setSegmentLocked(e,t,n,!1)}toggleSegmentLocked(e,t){const n=this.getSegmentation(e),o=!this._getSegmentInfo(n,t).isLocked;this._setSegmentLocked(e,t,o)}setSegmentColor(e,t,n,o){this._setSegmentColor(e,t,n,o)}setSegmentOpacity(e,t,n,o){this._setSegmentOpacity(e,t,n,o)}setActiveSegmentationForToolGroup(e,t){t=t??this._getApplicableToolGroupId();this._setActiveSegmentationForToolGroup(e,t,!1)}setActiveSegment(e,t){this._setActiveSegment(e,t,!1)}getSegmentations(e=!0){const t=this._getSegmentations();return t&&t.filter((t=>!e||t.hydrated))}_getSegmentations(){const e=this.arrayOfObjects(this.segmentations);return e&&e.map((e=>this.segmentations[Object.keys(e)[0]]))}getActiveSegmentation(){return this.getSegmentations().find((e=>e.isActive))}getActiveSegment(){const e=this.getActiveSegmentation(),{activeSegmentIndex:t,segments:n}=e;if(null!==t)return n[t]}getSegmentation(e){return this.segmentations[e]}addOrUpdateSegmentation(e,t=!1,n=!1){const{id:o}=e;let r=this.segmentations[o];if(r)return Object.assign(r,e),this._updateCornerstoneSegmentations({segmentationId:o,notYetUpdatedAtSource:n}),t||this._broadcastEvent(this.EVENTS.SEGMENTATION_UPDATED,{segmentation:r}),o;const i=e.type,a=e.representationData[i];return s.segmentation.addSegmentations([{segmentationId:o,representation:{type:i,data:{...a}}}]),this.segmentations[o]={...e,label:e.label||"",segments:e.segments||[null],activeSegmentIndex:e.activeSegmentIndex??null,segmentCount:e.segmentCount??0,isActive:!1,isVisible:!0},r=this.segmentations[o],this._updateCornerstoneSegmentations({segmentationId:o,notYetUpdatedAtSource:!0}),t||this._broadcastEvent(this.EVENTS.SEGMENTATION_ADDED,{segmentation:r}),r.id}async createSegmentationForSEGDisplaySet(e,t,n=!1){const o=Zt;t=t??e.displaySetInstanceUID;const r={...this._getDefaultSegmentationScheme(),id:t,displaySetInstanceUID:e.displaySetInstanceUID,type:o,label:e.SeriesDescription,representationData:{[Zt]:{volumeId:t,referencedVolumeId:e.referencedVolumeId}}},i=this.getLabelmapVolume(t),s=this.getSegmentation(t);if(i&&s)return this.addOrUpdateSegmentation(Object.assign(r,s),n);const{labelmapBufferArray:l,referencedVolumeId:c}=e;if(!l||!c)throw new Error("No labelmapBufferArray or referencedVolumeId found for the SEG displaySet");if(!a.cache.getVolume(c))throw new Error(`No volume found for referencedVolumeId: ${c}`);const d=await a.volumeLoader.createAndCacheDerivedVolume(c,{volumeId:t,targetBuffer:{type:"Uint8Array",sharedArrayBuffer:window.SharedArrayBuffer}}),m=d.getScalarData(),p=e.segMetadata.data;return m.set(new Uint8Array(l[0])),r.segments=p.map(((t,n)=>{if(0===n)return;const{SegmentedPropertyCategoryCodeSequence:o,SegmentNumber:i,SegmentLabel:a,SegmentAlgorithmType:s,SegmentAlgorithmName:l,SegmentedPropertyTypeCodeSequence:c,rgba:m}=t,{x:p,y:u,z:g}=e.centroids.get(n),h=d.imageData.indexToWorld([p,u,g]);return r.cachedStats={...r.cachedStats,segmentCenter:{...r.cachedStats.segmentCenter,[n]:{center:{image:[p,u,g],world:h},modifiedTime:e.SeriesDate}}},{label:a||`Segment ${i}`,segmentIndex:Number(i),category:o?o.CodeMeaning:"",type:c?c.CodeMeaning:"",algorithmType:s,algorithmName:l,color:m,opacity:255,isVisible:!0,isLocked:!1}})),r.segmentCount=p.length-1,e.isLoaded=!0,this._broadcastEvent(Qt.SEGMENTATION_LOADING_COMPLETE,{segmentationId:t,segDisplaySet:e}),this.addOrUpdateSegmentation(r,n)}async createSegmentationForRTDisplaySet(e,t,n=!1){const o=Kt;t=t??e.displaySetInstanceUID;const{structureSet:r}=e;if(!r)throw new Error("To create the contours from RT displaySet, the displaySet should be loaded first, you can perform rtDisplaySet.load() before calling this method.");const i=this._getDefaultSegmentationScheme(),s=e.displaySetInstanceUID,l=function(e,t){return e.ROIContours.map((({contourPoints:e,ROINumber:n,ROIName:o,colorArray:r})=>{const i=o||n;return{data:e.map((({points:e,...t})=>({...t,points:e.map((({x:e,y:t,z:n})=>[e,t,n]))}))),id:i,segmentIndex:n,color:r,geometryId:`${t}:${i}:segmentIndex-${n}`}}))}(r,s);l.sort(((e,t)=>e.segmentIndex-t.segmentIndex));const c=l.map((({geometryId:e})=>e)),d={...i,id:t,displaySetInstanceUID:s,type:o,label:e.SeriesDescription,representationData:{[Kt]:{geometryIds:c}}},m=this.getSegmentation(t);if(m)return this.addOrUpdateSegmentation(Object.assign(d,m),n);if(!r.ROIContours?.length)throw new Error("The structureSet does not contain any ROIContours. Please ensure the structureSet is loaded first.");const p={},u=async t=>{const{data:n,id:o,color:i,segmentIndex:s,geometryId:c}=t;try{const t=await a.geometryLoader.createAndCacheGeometry(c,{geometryData:{data:n,id:o,color:i,frameOfReferenceUID:r.frameOfReferenceUID,segmentIndex:s},type:a.Enums.GeometryType.CONTOUR}),m=t.data.getCentroid();p[s]={center:{world:m},modifiedTime:e.SeriesDate},d.segments[s]={label:o,segmentIndex:s,color:i,...Jt};const u=Object.keys(p).length,g=Math.round(u/l.length*100);this._broadcastEvent(Qt.SEGMENT_LOADING_COMPLETE,{percentComplete:g,numSegments:l.length})}catch(e){console.warn(e)}},g=[];for(let e=0;e<l.length;e++){const t=new Promise(((t,n)=>{setTimeout((()=>{u(l[e]).then((()=>{t()}))}),0)}));g.push(t)}return await Promise.all(g),d.segmentCount=l.length,e.isLoaded=!0,d.cachedStats={...d.cachedStats,segmentCenter:{...d.cachedStats.segmentCenter,...p}},this._broadcastEvent(Qt.SEGMENTATION_LOADING_COMPLETE,{segmentationId:t,rtDisplaySet:e}),this.addOrUpdateSegmentation(d,n)}jumpToSegmentCenter(e,t,n,o=.9,r=!0,i=750,l=!1,c="ease-in-out"){const{toolGroupService:d}=this.servicesManager.services,m=this._getSegmentCenter(e,t);if(!m?.world)return;const{world:p}=m;n=n||this._getToolGroupIdsWithSegmentation(e);const u=[];Array.isArray(n)?n.forEach((e=>{u.push(d.getToolGroup(e))})):u.push(d.getToolGroup(n)),u.forEach((n=>{const d=n.getViewportsInfo();for(const{viewportId:e,renderingEngineId:t}of d){const{viewport:n}=(0,a.getEnabledElementByIds)(e,t);s.utilities.viewport.jumpToWorld(n,p)}r&&this.highlightSegment(e,t,n.id,o,i,l,c)}))}highlightSegment(e,t,n,o=.9,r=750,i=!0,a="ease-in-out"){this.highlightIntervalId&&clearInterval(this.highlightIntervalId);const s=this.getSegmentation(e);n=n??this._getApplicableToolGroupId();const l=this._getSegmentationRepresentation(e,n),{type:c}=l,{segments:d}=s;(c===Zt?this._highlightLabelmap.bind(this):this._highlightContour.bind(this))(t,c===Zt?o:1-o,i,d,n,r,l)}_setDisplaySetIsHydrated(e,t){const{displaySetService:n}=this.servicesManager.services,o=n.getDisplaySetByUID(e);o&&(o.isHydrated=t,n.setDisplaySetMetadataInvalidated(e,!1))}_highlightLabelmap(e,t,n,o,r,i,a){const l={[e]:{LABELMAP:{fillAlpha:t}}};if(n)for(let t=0;t<o.length;t++)t!==e&&(l[t]={LABELMAP:{fillAlpha:0}});const{fillAlpha:c}=this.getConfiguration(r);let d=null;const m=t=>{null===d&&(d=t);const n=t-d,o=Math.min(n/i,1);s.segmentation.config.setSegmentSpecificConfig(r,a.segmentationRepresentationUID,{[e]:{LABELMAP:{fillAlpha:Yt(o,c)}}}),o<1?requestAnimationFrame(m):s.segmentation.config.setSegmentSpecificConfig(r,a.segmentationRepresentationUID,{})};requestAnimationFrame(m)}_highlightContour(e,t,n,o,r,i,a){const l=performance.now(),c=t=>{const n=(t-l)/i;if(n>=1)return void s.segmentation.config.setSegmentSpecificConfig(r,a.segmentationRepresentationUID,{});const o=1-Yt(n,d=.1)+d;var d;s.segmentation.config.setSegmentSpecificConfig(r,a.segmentationRepresentationUID,{[e]:{CONTOUR:{fillAlpha:o}}}),requestAnimationFrame(c)};requestAnimationFrame(c)}removeSegmentationRepresentationFromToolGroup(e,t){const n=t||[];if(!n.length){const t=s.segmentation.state.getSegmentationRepresentations(e);if(!t||!t.length)return;n.push(...t.map((e=>e.segmentationRepresentationUID)))}s.segmentation.removeSegmentationsFromToolGroup(e,n)}remove(e){const t=this.segmentations[e],n=t.isActive;if(!e||!t)return void console.warn("No segmentationId provided, or unable to find segmentation by id.");const{colorLUTIndex:o}=t,{updatedToolGroupIds:r}=this._removeSegmentationFromCornerstone(e);if(s.segmentation.state.removeColorLUT(o),delete this.segmentations[e],n){const e=this._getSegmentations().filter((e=>e.hydrated));if(e.length){const{id:t}=e[0];r.forEach((e=>{this._setActiveSegmentationForToolGroup(t,e,!1)}))}}this._setDisplaySetIsHydrated(e,!1),this._broadcastEvent(this.EVENTS.SEGMENTATION_REMOVED,{segmentationId:e})}setSegmentLabel(e,t,n){this._setSegmentLabel(e,t,n)}_setSegmentLabel(e,t,n,o=!1){const r=this.getSegmentation(e);if(void 0===r)throw new Error(`no segmentation for segmentationId: ${e}`);const i=r.segments[t];if(void 0===i)throw new Error(`Segment ${t} not yet added to segmentation: ${e}`);i.label=n,!1===o&&this._broadcastEvent(this.EVENTS.SEGMENTATION_UPDATED,{segmentation:r})}shouldRenderSegmentation(e,t){if(!e?.length)return!1;const{displaySetService:n}=this.servicesManager.services;let o=!1;for(const r of e){const e=n.getDisplaySetByUID(r);if(e.isReconstructable&&e?.images?.[0]?.FrameOfReferenceUID===t){o=!0;break}}return o}_getDefaultSegmentationScheme(){return{activeSegmentIndex:1,cachedStats:{},label:"",segmentsLocked:[],displayText:[],hydrated:!1,segmentCount:0,segments:[],isVisible:!0,isActive:!1}}_setActiveSegmentationForToolGroup(e,t,n=!1){const o=this._getSegmentations(),r=this.getSegmentation(e);if(void 0===r)throw new Error(`no segmentation for segmentationId: ${e}`);o.forEach((t=>{t.isActive=t.id===e}));const i=this._getSegmentationRepresentation(e,t);s.segmentation.activeSegmentation.setActiveSegmentationRepresentation(t,i.segmentationRepresentationUID),!1===n&&this._broadcastEvent(this.EVENTS.SEGMENTATION_UPDATED,{segmentation:r})}_setActiveSegment(e,t,n=!1){const o=this.getSegmentation(e);if(void 0===o)throw new Error(`no segmentation for segmentationId: ${e}`);s.segmentation.segmentIndex.setActiveSegmentIndex(e,t),o.activeSegmentIndex=t,!1===n&&this._broadcastEvent(this.EVENTS.SEGMENTATION_UPDATED,{segmentation:o})}_getSegmentInfo(e,t){const n=e.segments;if(n)return n&&n.length>0?n[t]:void 0}_getVolumeIdForDisplaySet(e){return`${e.volumeLoaderSchema??"cornerstoneStreamingImageVolume"}:${e.displaySetInstanceUID}`}_getSegmentCenter(e,t){const n=this.getSegmentation(e);if(!n)return;const{cachedStats:o}=n;if(!o)return;const{segmentCenter:r}=o;if(!r)return;const{center:i}=r[t];return i}_setSegmentLocked(e,t,n,o=!1){const r=this.getSegmentation(e);if(void 0===r)throw new Error(`no segmentation for segmentationId: ${e}`);const i=this._getSegmentInfo(r,t);if(void 0===i)throw new Error(`Segment ${t} not yet added to segmentation: ${e}`);i.isLocked=n,s.segmentation.segmentLocking.setSegmentIndexLocked(e,t,n),!1===o&&this._broadcastEvent(this.EVENTS.SEGMENTATION_UPDATED,{segmentation:r})}_setSegmentVisibility(e,t,n,o,r=!1){o=o??this._getApplicableToolGroupId();const{segmentationRepresentationUID:i,segmentation:a}=this._getSegmentationInfo(e,o);if(void 0===a)throw new Error(`no segmentation for segmentationId: ${e}`);const l=this._getSegmentInfo(a,t);if(void 0===l)throw new Error(`Segment ${t} not yet added to segmentation: ${e}`);l.isVisible=n,s.segmentation.config.visibility.setSegmentVisibility(o,i,t,n),a.isVisible=a.segments.filter(Boolean).every((e=>e.isVisible)),!1===r&&this._broadcastEvent(this.EVENTS.SEGMENTATION_UPDATED,{segmentation:a})}_setSegmentLabel(e,t,n,o=!1){const r=this.getSegmentation(e);if(void 0===r)throw new Error(`no segmentation for segmentationId: ${e}`);const i=this._getSegmentInfo(r,t);if(void 0===i)throw new Error(`Segment ${t} not yet added to segmentation: ${e}`);i.label=n,!1===o&&this._broadcastEvent(this.EVENTS.SEGMENTATION_UPDATED,{segmentation:r})}_getSegmentationRepresentation(e,t){const n=this.getSegmentationRepresentationsForToolGroup(t);if(!n?.length)return;return n.find((t=>t.segmentationId===e))}_initSegmentationService(){a.eventTarget.addEventListener(s.Enums.Events.SEGMENTATION_MODIFIED,this._onSegmentationModifiedFromSource),a.eventTarget.addEventListener(s.Enums.Events.SEGMENTATION_DATA_MODIFIED,this._onSegmentationDataModified)}_getSegmentationInfo(e,t){const n=this.getSegmentation(e);if(void 0===n)throw new Error(`no segmentation for segmentationId: ${e}`);const o=this._getSegmentationRepresentation(e,t);if(!o)throw new Error("Must add representation to toolgroup before setting segments");const{segmentationRepresentationUID:r}=o;return{segmentationRepresentationUID:r,segmentation:n}}_removeSegmentationFromCornerstone(e){const t=s.segmentation.state,n=t.getSegmentation(e),o=new Set;if(!n)return;return t.getToolGroupIdsWithSegmentation(e).forEach((n=>{const r=t.getSegmentationRepresentations(n),i=[];r.forEach((t=>{t.segmentationId===e&&(i.push(t.segmentationRepresentationUID),o.add(n))})),s.segmentation.removeSegmentationsFromToolGroup(n,i,!0)})),t.removeSegmentation(e),a.cache.getVolumeLoadObject(e)&&a.cache.removeVolumeLoadObject(e),{updatedToolGroupIds:Array.from(o)}}_updateCornerstoneSegmentations({segmentationId:e,notYetUpdatedAtSource:t}){if(!1===t)return;const n=s.segmentation.state.getSegmentation(e),o=this.segmentations[e],{label:r,cachedStats:i}=o;n.label!==r&&(n.label=r),Ht()(n.cachedStats,i)||(n.cachedStats=i)}_getToolGroupIdsWithSegmentation(e){return s.segmentation.state.getToolGroupIdsWithSegmentation(e)}_getFrameOfReferenceUIDForSeg(e){const t=e.instance?.FrameOfReferenceUID;if(t)return t;const n=e.instance?.ReferencedFrameOfReferenceSequence;return n?n.FrameOfReferenceUID:void 0}}Wt=Xt,Xt.REGISTRATION={name:"segmentationService",altName:"SegmentationService",create:({servicesManager:e})=>new Wt({servicesManager:e})};const en=Xt;function tn(e){const t=e.toLowerCase();if("stack"===t)return a.Enums.ViewportType.STACK;if("volume"===t||"orthographic"===t)return a.Enums.ViewportType.ORTHOGRAPHIC;if("volume3d"===t)return a.Enums.ViewportType.VOLUME_3D;throw new Error(`Invalid viewport type: ${e}. Valid types are: stack, volume`)}var nn;const on="cornerstoneStreamingImageVolume";class rn{constructor(e){this.stackImageIds=new Map,this.volumeImageIds=new Map,this.servicesManager=void 0,this.servicesManager=e}getCacheSize(){return a.cache.getCacheSize()}getCacheFreeSpace(){return a.cache.getBytesAvailable()}async createViewportData(e,t,n,o){let r=t.viewportType;this._shouldRenderSegmentation(e)&&(r=r===a.Enums.ViewportType.VOLUME_3D?a.Enums.ViewportType.VOLUME_3D:"volume",t.viewportType=r);const i=tn(r);let s;return i===a.Enums.ViewportType.STACK&&(s=await this._getStackViewportData(n,e,o,i)),i!==a.Enums.ViewportType.ORTHOGRAPHIC&&i!==a.Enums.ViewportType.VOLUME_3D||(s=await this._getVolumeViewportData(n,e,i)),s.viewportType=i,s}async invalidateViewportData(e,t,n,o){if(e.viewportType===a.Enums.ViewportType.STACK)return this._getCornerstoneStackImageIds(o.getDisplaySetByUID(t),n);const r=`${on}:${t}`;a.cache.getVolume(r)&&(a.cache.removeVolumeLoadObject(r),this.volumeImageIds.delete(r));const i=e.data.map((({displaySetInstanceUID:e})=>o.getDisplaySetByUID(e)));return await this._getVolumeViewportData(n,i,e.viewportType)}_getStackViewportData(e,t,n,o){const r=t[0];let i=this.stackImageIds.get(r.displaySetInstanceUID);i||(i=this._getCornerstoneStackImageIds(r,e),this.stackImageIds.set(r.displaySetInstanceUID,i));const{displaySetInstanceUID:a,StudyInstanceUID:s,isCompositeStack:l}=r,c={viewportType:o,data:{StudyInstanceUID:s,displaySetInstanceUID:a,isCompositeStack:l,imageIds:i}};return"number"==typeof n&&(c.data.initialImageIndex=n),c}async _getVolumeViewportData(e,t,n){const o=[];for(const n of t){if(n.load&&n.load instanceof Function){const{userAuthenticationService:e}=this.servicesManager.services,t=e.getAuthorizationHeader();await n.load({headers:t}),o.push({studyInstanceUID:n.StudyInstanceUID,displaySetInstanceUID:n.displaySetInstanceUID});continue}const t=`${n.volumeLoaderSchema??on}:${n.displaySetInstanceUID}`;let r=this.volumeImageIds.get(n.displaySetInstanceUID),i=a.cache.getVolume(t);r&&i||(r=this._getCornerstoneVolumeImageIds(n,e),i=await a.volumeLoader.createAndCacheVolume(t,{imageIds:r}),this.volumeImageIds.set(n.displaySetInstanceUID,r)),o.push({StudyInstanceUID:n.StudyInstanceUID,displaySetInstanceUID:n.displaySetInstanceUID,volume:i,volumeId:t,imageIds:r,isDynamicVolume:n.isDynamicVolume})}return{viewportType:n,data:o}}_shouldRenderSegmentation(e){const{segmentationService:t,displaySetService:n}=this.servicesManager.services,o=e.map((({displaySetInstanceUID:e})=>e)),r=t.getSegmentations();for(const e of r){const r=e.displaySetInstanceUID,i=n.getDisplaySetByUID(r),a=i.instances?.[0]||i.instance;if(t.shouldRenderSegmentation(o,a?.FrameOfReferenceUID||i.FrameOfReferenceUID))return!0}}_getCornerstoneStackImageIds(e,t){return t.getImageIdsForDisplaySet(e)}_getCornerstoneVolumeImageIds(e,t){return this._getCornerstoneStackImageIds(e,t)}}nn=rn,rn.REGISTRATION={name:"cornerstoneCacheService",altName:"CornerstoneCacheService",create:({servicesManager:e})=>new nn(e)};const an=rn,sn="OHIFCornerstoneRenderingEngine";const ln="stack",cn="default",dn=(e,t,n)=>e.displaySetInstanceUID===t||!!(n&&e.isCompositeStack&&e.imageIds)&&!!e.imageIds.find((e=>e===n));const mn=class{constructor(e){this.viewportId="",this.element=void 0,this.viewportOptions=void 0,this.displaySetOptions=void 0,this.viewportData=void 0,this.renderingEngineId=void 0,this.destroy=()=>{this.element=null,this.viewportData=null,this.viewportOptions=null,this.displaySetOptions=null},this.viewportId=e,this.setPublicViewportOptions({}),this.setPublicDisplaySetOptions([{}])}contains(e,t){return!!this.viewportData?.data&&(this.viewportData.data.length?!!this.viewportData.data.find((n=>dn(n,e,t))):dn(this.viewportData.data,e,t))}setRenderingEngineId(e){this.renderingEngineId=e}getRenderingEngineId(){return this.renderingEngineId}setViewportId(e){this.viewportId=e}setElement(e){this.element=e}setViewportData(e){this.viewportData=e}getViewportData(){return this.viewportData}getElement(){return this.element}getViewportId(){return this.viewportId}setPublicDisplaySetOptions(e){const t=this.mapDisplaySetOptions(e);return this.setDisplaySetOptions(t),this.displaySetOptions}hasDisplaySet(e){let t=this.getViewportData();return t.viewportType===a.Enums.ViewportType.ORTHOGRAPHIC||t.viewportType===a.Enums.ViewportType.VOLUME_3D?t.data.some((({displaySetInstanceUID:t})=>t===e)):t.data.displaySetInstanceUID===e}setPublicViewportOptions(e){let t=e.viewportType;const{toolGroupId:n=cn,presentationIds:o}=e;let r;return t=tn(t?e.viewportType:ln),e.viewportType?.toLowerCase()!==ln&&(r=function(e){if(e)switch(e.toLowerCase()){case"axial":return a.Enums.OrientationAxis.AXIAL;case"sagittal":return a.Enums.OrientationAxis.SAGITTAL;case"coronal":return a.Enums.OrientationAxis.CORONAL;default:return a.Enums.OrientationAxis.ACQUISITION}return a.Enums.OrientationAxis.ACQUISITION}(e.orientation)),n||(n=cn),this.setViewportOptions({...e,viewportId:this.viewportId,viewportType:t,orientation:r,toolGroupId:n,presentationIds:o}),this.viewportOptions}setViewportOptions(e){this.viewportOptions=e}getViewportOptions(){return this.viewportOptions}getPresentationIds(){const{presentationIds:e}=this.viewportOptions;return e}setDisplaySetOptions(e){this.displaySetOptions=e}getSyncGroups(){return this.viewportOptions.syncGroups||=[],this.viewportOptions.syncGroups}getDisplaySetOptions(){return this.displaySetOptions}getViewportType(){return this.viewportOptions.viewportType||a.Enums.ViewportType.STACK}getToolGroupId(){return this.viewportOptions.toolGroupId}getBackground(){return this.viewportOptions.background||[0,0,0]}getOrientation(){return this.viewportOptions.orientation}getDisplayArea(){return this.viewportOptions.displayArea}getInitialImageOptions(){return this.viewportOptions.initialImageOptions}mapDisplaySetOptions(e=[{}]){const t=[];return e.forEach((e=>{let n=e?.options||e;n||(n={blendMode:void 0,slabThickness:void 0,colormap:void 0,voi:{},voiInverted:!1});const o=function(e){if(!e)return a.Enums.BlendModes.COMPOSITE;if("mip"===e.toLowerCase())return a.Enums.BlendModes.MAXIMUM_INTENSITY_BLEND;throw new Error}(n.blendMode);t.push({voi:n.voi,voiInverted:n.voiInverted,colormap:n.colormap,slabThickness:n.slabThickness,blendMode:o,displayPreset:n.displayPreset})})),t}};var pn=function(e){return e.First="first",e.Last="last",e.Middle="middle",e}(pn||{});const un=pn;var gn;const hn={VIEWPORT_DATA_CHANGED:"event::cornerstoneViewportService:viewportDataChanged",VIEWPORT_VOLUMES_CHANGED:"event::cornerstoneViewportService:viewportVolumesChanged"};class In extends c.Rc{constructor(e){super(hn),this.renderingEngine=void 0,this.viewportsById=new Map,this.viewportGridResizeObserver=void 0,this.viewportsDisplaySets=new Map,this.beforeResizePositionPresentations=new Map,this.enableResizeDetector=void 0,this.resizeRefreshRateMs=void 0,this.resizeRefreshMode=void 0,this.servicesManager=null,this.resizeQueue=[],this.viewportResizeTimer=null,this.gridResizeDelay=50,this.gridResizeTimeOut=null,this.renderingEngine=null,this.viewportGridResizeObserver=null,this.servicesManager=e}enableViewport(e,t){const n=new mn(e);n.setElement(t),this.viewportsById.set(e,n)}getViewportIds(){return Array.from(this.viewportsById.keys())}getRenderingEngine(){const e=(0,a.getRenderingEngine)(sn);return e?(this.renderingEngine=e,this.renderingEngine):(e&&!e.hasBeenDestroyed||(this.renderingEngine=new a.RenderingEngine(sn)),this.renderingEngine)}resize(e=!1){e?(this.performResize(),this.resetGridResizeTimeout(),this.resizeQueue=[],clearTimeout(this.viewportResizeTimer)):this.enqueueViewportResizeRequest()}destroy(){this._removeResizeObserver(),this.viewportGridResizeObserver=null;try{this.renderingEngine?.destroy?.()}catch(e){console.warn("Rendering engine not destroyed",e)}this.viewportsDisplaySets.clear(),this.renderingEngine=null,a.cache.purgeCache()}disableElement(e){this.renderingEngine?.disableElement(e),this.viewportsById.delete(e),this.viewportsDisplaySets.delete(e)}setPresentations(e,t){const n=this.getCornerstoneViewport(e);if(!n)return;if(!t)return;const{lutPresentation:o,positionPresentation:r}=t;if(o){const{presentation:e}=o;n instanceof a.BaseVolumeViewport&&e instanceof Map?e.forEach(((e,t)=>{n.setProperties(e,t)})):n.setProperties(e)}if(r){const{viewPlaneNormal:e,viewUp:t,zoom:o,pan:i}=r.presentation;n.setCamera({viewPlaneNormal:e,viewUp:t}),void 0!==o&&n.setZoom(o),void 0!==i&&n.setPan(i)}}getPositionPresentation(e){const t=this.viewportsById.get(e);if(!t)return;const n=t.getPresentationIds();if(!n)return;const{positionPresentationId:o}=n,r=this.getCornerstoneViewport(e);if(!r)return;const{viewPlaneNormal:i,viewUp:a}=r.getCamera(),s=r.getCurrentImageIdIndex()||0,l=r.getZoom(),c=r.getPan();return{id:o,viewportType:t.getViewportType(),presentation:{initialImageIndex:s,viewUp:a,viewPlaneNormal:i,zoom:l,pan:c}}}getLutPresentation(e){const t=this.viewportsById.get(e);if(!t)return;const n=t.getPresentationIds();if(!n)return;const{lutPresentationId:o}=n,r=this.getCornerstoneViewport(e);if(!r)return;const i=e=>(e.isComputedVOI&&(delete e.voiRange,delete e.VOILUTFunction),e),s=r instanceof a.BaseVolumeViewport?new Map:i(r.getProperties());return s instanceof Map&&r.getActors().forEach((({uid:e})=>{const t=i(r.getProperties(e));s.set(e,t)})),{id:o,viewportType:t.getViewportType(),presentation:s}}getPresentations(e){if(!this.viewportsById.get(e))return;return{positionPresentation:this.getPositionPresentation(e),lutPresentation:this.getLutPresentation(e)}}storePresentation({viewportId:e}){let t=null;try{if(t=this.getPresentations(e),!t?.positionPresentation&&!t?.lutPresentation)return}catch(e){return void console.warn(e)}const{stateSyncService:n,syncGroupService:o}=this.servicesManager.services,r=o.getSynchronizersForViewport(e),{positionPresentationStore:i,synchronizersStore:a,lutPresentationStore:s}=n.getState(),{lutPresentation:l,positionPresentation:c}=t,{id:d}=c,{id:m}=l,p=(e,t,n)=>({...e,[t]:n}),u={};m&&(u.lutPresentationStore=p(s,m,l)),d&&(u.positionPresentationStore=p(i,d,c)),r?.length&&(u.synchronizersStore=p(a,e,r.map((e=>({id:e.id,sourceViewports:[...e.getSourceViewports()],targetViewports:[...e.getTargetViewports()]}))))),n.store(u)}setViewportData(e,t,n,o,r){const i=this.getRenderingEngine(),a=this.viewportsById.get(e);if(this.storePresentation({viewportId:a.getViewportId()}),!a)throw new Error("element is not enabled for the given viewportId");const s=a.setPublicDisplaySetOptions(o),l=a.setPublicViewportOptions(n),c=a.getElement(),d=a.getViewportType(),m=a.getBackground(),p=a.getOrientation(),u=a.getDisplayArea(),g={viewportId:e,element:c,type:d,defaultOptions:{background:m,orientation:p,displayArea:u}};a.setRenderingEngineId(i.id),i.enableElement(g),a.setViewportOptions(l),a.setDisplaySetOptions(s),a.setViewportData(t),a.setViewportId(e),this.viewportsById.set(e,a);const h=i.getViewport(e);this._setDisplaySets(h,t,a,r).then((()=>{this._broadcastEvent(this.EVENTS.VIEWPORT_DATA_CHANGED,{viewportData:t,viewportId:e})}))}getCornerstoneViewport(e){if(!this.getViewportInfo(e)||!this.renderingEngine||this.renderingEngine.hasBeenDestroyed)return null;return this.renderingEngine.getViewport(e)}getViewportInfo(e){return this.viewportsById.get(e)}getViewportIdToJump(e,t,n){const o=this.getViewportInfo(e),{referencedImageId:r}=n;return o?.contains(t,r)?e:[...this.viewportsById.values()].find((e=>e.contains(t,r)))?.viewportId??null}async _setStackViewport(e,t,n,o={}){const r=n.getDisplaySetOptions(),{imageIds:i,initialImageIndex:s,displaySetInstanceUID:l}=t.data;this.viewportsDisplaySets.set(e.id,[l]);let c=o?.positionPresentation?.initialImageIndex??s;null==c&&(c=this._getInitialImageIndexForViewport(n,i)||0);const d={...o.lutPresentation?.properties};if(!o.lutPresentation?.properties){const{voi:e,voiInverted:t,colormap:n}=r[0];if(e&&(e.windowWidth||e.windowCenter)){const{lower:t,upper:n}=a.utilities.windowLevel.toLowHighRange(e.windowWidth,e.windowCenter);d.voiRange={lower:t,upper:n}}void 0!==t&&(d.invert=t),void 0!==n&&(d.colormap=n)}return e.setStack(i,c).then((()=>{e.setProperties({...d}),this.setPresentations(e.id,o)}))}_getInitialImageIndexForViewport(e,t){const n=e.getInitialImageOptions();if(!n)return;const{index:o,preset:r}=n,i=e.getViewportType();let s;if(i===a.Enums.ViewportType.STACK)s=t.length;else{if(i!==a.Enums.ViewportType.ORTHOGRAPHIC)return;{const t=this.getCornerstoneViewport(e.getViewportId()),n=a.utilities.getImageSliceDataForVolumeViewport(t);if(!n)return;({numberOfSlices:s}=n)}}return this._getInitialImageIndex(s,o,r)}_getInitialImageIndex(e,t,n){const o=e-1;return void 0!==t?s.utilities.clip(t,0,o):n===un.First?0:n===un.Last?o:n===un.Middle?o%2==0?o/2:(o+1)/2:0}async _setVolumeViewport(e,t,n,o={}){const r=[],i=n.getDisplaySetOptions(),{hangingProtocolService:a}=this.servicesManager.services,s=[],l=[];for(const[e,n]of t.data.entries()){const{volume:t,imageIds:o,displaySetInstanceUID:a}=n;if(l.push(a),!t){console.log("Volume display set not found");continue}s.push(t);const c=i[e],{volumeId:d}=t;r.push({imageIds:o,volumeId:d,blendMode:c.blendMode,slabThickness:this._getSlabThickness(c,d)})}this.viewportsDisplaySets.set(e.id,l);const c=s.filter((e=>!e.loadStatus.loaded));if(c.length){if(a.getShouldPerformCustomImageLoad())return a.runImageLoadStrategy({viewportId:e.id,volumeInputArray:r});c.forEach((e=>{e.loadStatus.loading||e.load()}))}return this.setVolumesForViewport(e,r,o)}async setVolumesForViewport(e,t,n){const{displaySetService:o,toolGroupService:r,viewportGridService:i}=this.servicesManager.services,l=this.getViewportInfo(e.id),c=l.getDisplaySetOptions(),d=i.getDisplaySetsUIDsForViewport(e.id),m=o.getDisplaySetByUID(d[0]),p=m?.Modality,u=t.map(((e,t)=>{const{volumeId:n}=e,o=c[t],{voi:r,voiInverted:i,colormap:s,displayPreset:l}=o,d={};if(r&&(r.windowWidth||r.windowCenter)){const{lower:e,upper:t}=a.utilities.windowLevel.toLowHighRange(r.windowWidth,r.windowCenter);d.voiRange={lower:e,upper:t}}return void 0!==i&&(d.invert=i),void 0!==s&&(d.colormap=s),void 0!==l&&(d.preset=l[p]||l.default),{properties:d,volumeId:n}}));await e.setVolumes(t),u.forEach((({properties:t,volumeId:n})=>{e.setProperties(t,n)})),this.setPresentations(e.id,n);const g=this.viewportsDisplaySets.get(e.id),h=g.map(o.getDisplaySetByUID).find((e=>e?.isOverlayDisplaySet));h?this.addOverlayRepresentationForDisplaySet(h,e):this._addSegmentationRepresentationToToolGroupIfNecessary(g,e);const I=r.getToolGroupForViewport(e.id);s.utilities.segmentation.triggerSegmentationRender(I.id);const S=this._getInitialImageIndexForViewport(l);void 0!==S&&s.utilities.jumpToSlice(e.element,{imageIndex:S}),e.render(),this._broadcastEvent(this.EVENTS.VIEWPORT_VOLUMES_CHANGED,{viewportInfo:l})}_addSegmentationRepresentationToToolGroupIfNecessary(e,t){const{segmentationService:n,toolGroupService:o}=this.servicesManager.services,r=o.getToolGroupForViewport(t.id),i=n.getSegmentations();for(const t of i){if((n.getSegmentationRepresentationsForToolGroup(r.id)||[]).find((e=>e.segmentationId===t.id)))continue;const{id:o}=t;let i=this._getFrameOfReferenceUID(o);if(!i){const{FrameOfReferenceUID:e}=t;e&&(i=e)}if(!i)return;let a=!1;for(const t of e){if(i===this._getFrameOfReferenceUID(t)){a=!0;break}}if(!a)return;n.addSegmentationRepresentationToToolGroup(r.id,t.id,!1,t.type)}}addOverlayRepresentationForDisplaySet(e,t){const{segmentationService:n,toolGroupService:o}=this.servicesManager.services,{referencedVolumeId:r}=e,i=e.displaySetInstanceUID,l=o.getToolGroupForViewport(t.id),c=r&&void 0!==a.cache.getVolume(r)?s.Enums.SegmentationRepresentations.Labelmap:s.Enums.SegmentationRepresentations.Contour;n.addSegmentationRepresentationToToolGroup(l.id,i,!1,c)}updateViewport(e,t,n=!1){const o=this.getViewportInfo(e),r=this.getCornerstoneViewport(e),i=r.getCamera();let s;(r instanceof a.VolumeViewport||r instanceof a.VolumeViewport3D)&&(s=this._setVolumeViewport(r,t,o).then((()=>{n&&(r.setCamera(i),r.render())}))),r instanceof a.StackViewport&&(s=this._setStackViewport(r,t,o)),s.then((()=>{this._broadcastEvent(this.EVENTS.VIEWPORT_DATA_CHANGED,{viewportData:t,viewportId:e})}))}_setDisplaySets(e,t,n,o={}){if(e instanceof a.StackViewport)return this._setStackViewport(e,t,n,o);if([a.VolumeViewport,a.VolumeViewport3D].some((t=>e instanceof t)))return this._setVolumeViewport(e,t,n,o);throw new Error("Unknown viewport type")}_removeResizeObserver(){this.viewportGridResizeObserver&&this.viewportGridResizeObserver.disconnect()}_getSlabThickness(e,t){const{blendMode:n}=e;if(void 0!==n&&void 0!==e.slabThickness){if("number"==typeof e.slabThickness)return e.slabThickness;if("fullvolume"===e.slabThickness.toLowerCase()){const e=a.cache.getVolume(t),{dimensions:n}=e;return Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2])}}}_getFrameOfReferenceUID(e){const{displaySetService:t}=this.servicesManager.services,n=t.getDisplaySetByUID(e);if(!n)return;if(n.frameOfReferenceUID)return n.frameOfReferenceUID;if("SEG"===n.Modality){const{instance:e}=n;return e.FrameOfReferenceUID}if("RTSTRUCT"===n.Modality){const{instance:e}=n;return e.ReferencedFrameOfReferenceSequence.FrameOfReferenceUID}const{images:o}=n;return o&&o.length?o[0].FrameOfReferenceUID:void 0}enqueueViewportResizeRequest(){this.resizeQueue.push(!1),clearTimeout(this.viewportResizeTimer),this.viewportResizeTimer=setTimeout((()=>{this.processViewportResizeQueue()}),this.gridResizeDelay)}processViewportResizeQueue(){const e=this.resizeQueue.some((e=>e));this.resizeQueue.length>0&&!e&&!this.gridResizeTimeOut&&this.performResize(),this.resizeQueue=[]}performResize(){const e=!1;this.getRenderingEngine().getViewports().forEach((({id:e})=>{const t=this.getPositionPresentation(e);this.beforeResizePositionPresentations.set(e,t)}));const t=this.renderingEngine;t.resize(e),t.render(),this.beforeResizePositionPresentations.forEach(((e,t)=>{this.setPresentations(t,{positionPresentation:e})})),t.resize(e),t.render()}resetGridResizeTimeout(){clearTimeout(this.gridResizeTimeOut),this.gridResizeTimeOut=setTimeout((()=>{this.gridResizeTimeOut=null}),this.gridResizeDelay)}}gn=In,In.REGISTRATION={name:"cornerstoneViewportService",altName:"CornerstoneViewportService",create:({servicesManager:e})=>new gn(e)};const Sn=In;let vn=function(e){return e.Removed="removed",e.Added="added",e.Modified="modified",e}({});var fn;const{ViewportColorbar:yn}=s.utilities.voi.colorbar;class wn extends c.Rc{constructor(){super(wn.EVENTS),this.colorbars={}}addColorbar(e,t,n={}){const o=(0,a.getRenderingEngine)(sn).getViewport(e),{element:r}=o,i=o.getActors(),{position:s,width:l,activeColormapName:c,colormaps:d}=n,m=t.length,p=this.createContainers(m,r,s,l,e);t.forEach(((t,s)=>{const l=i.find((e=>e.uid.includes(t)));if(!l)return;const{uid:m}=l,u=o?.getProperties(m),g=u?.colormap;c&&!g&&this.setViewportColormap(e,t,d[c],!0);const h=p[s],I=new yn({id:`ctColorbar-${e}-${s}`,element:r,colormaps:n.colormaps||{},activeColormapName:g?.name||n?.activeColormapName||"Grayscale",container:h,ticks:{...wn.defaultTickStyles,...n.ticks},volumeId:o instanceof a.VolumeViewport?m:void 0});this.colorbars[e]?this.colorbars[e].push({colorbar:I,container:h}):this.colorbars[e]=[{colorbar:I,container:h}]})),this._broadcastEvent(wn.EVENTS.STATE_CHANGED,{viewportId:e,changeType:vn.Added})}removeColorbar(e){const t=this.colorbars[e];t&&(t.forEach((({colorbar:e,container:t})=>{t.parentNode.removeChild(t)})),delete this.colorbars[e],this._broadcastEvent(wn.EVENTS.STATE_CHANGED,{viewportId:e,changeType:vn.Removed}))}hasColorbar(e){return!!this.colorbars[e]}getState(){return this.colorbars}getViewportColorbar(e){return this.colorbars[e]}onModeExit(){Object.keys(this.colorbars).forEach((e=>{this.removeColorbar(e)}))}setViewportColormap(e,t,n,o=!1){const r=(0,a.getRenderingEngine)(sn).getViewport(e),i=r.getActors(),s=(e,t)=>{const o=i.find((e=>e.uid.includes(t))),{actor:r,uid:a}=o;e.setProperties({colormap:n,volumeActor:r},a)};r instanceof a.StackViewport&&s(r,e),r instanceof a.VolumeViewport&&s(r,t),o&&r.render()}createContainers(e,t,n,o,r){const i=[],a={1:50,2:33}[e]||50/e;return Array.from({length:e}).forEach(((e,s)=>{const l=document.createElement("div");l.id=`ctColorbarContainer-${r}-${s+1}`,Object.assign(l.style,wn.defaultStyles),["top","bottom"].includes(n)?Object.assign(l.style,{width:`${a}%`,height:o||"2.5%",left:(s+1)*a+"%",transform:"translateX(-50%)",...wn.positionStyles[n]}):["left","right"].includes(n)&&Object.assign(l.style,{height:`${a}%`,width:o||"2.5%",top:(s+1)*a+"%",transform:"translateY(-50%)",...wn.positionStyles[n]}),t.appendChild(l),i.push(l)})),i}}fn=wn,wn.EVENTS={STATE_CHANGED:"event::ColorbarService:stateChanged"},wn.defaultStyles={position:"absolute",boxSizing:"border-box",border:"solid 1px #555",cursor:"initial"},wn.positionStyles={left:{left:"5%"},right:{right:"5%"},top:{top:"5%"},bottom:{bottom:"5%"}},wn.defaultTickStyles={position:"left",style:{font:"12px Arial",color:"#fff",maxNumTicks:8,tickSize:5,tickWidth:1,labelMargin:3}},wn.REGISTRATION={name:"colorbarService",create:()=>new fn};const Tn=wn;var En=n(36922);const Dn=e=>{if(e)return"function"==typeof e.getImageId?e.getImageId():e.url},bn=e=>(Array.isArray(e)?e:[e]).some((e=>!e)),On=e=>e&&e.images&&e.images[0],Nn=e=>Dn(e),An=(e,t=c.DICOMWeb.getAuthorizationHeader())=>fetch(e,t).then((e=>e.arrayBuffer())),Cn=e=>a.imageLoader.loadAndCacheImage(e).then((e=>e&&e.data&&e.data.byteArray.buffer)),Mn=(e,t,n,o,r=c.DICOMWeb.getAuthorizationHeader(),i=c.r_.getHTTPErrorHandler())=>{const a={url:e,headers:r,errorInterceptor:i};return new En.FH.DICOMwebClient(a).retrieveInstance({studyInstanceUID:t,seriesInstanceUID:n,sopInstanceUID:o})};const Un=new class{getLocalData(e,t){const n=On(e),o=(e=>e&&e.instance)(e);if(!n&&!o||!o.imageId?.startsWith("dicomfile"))return;let r=Nn(n||o);return bn(r)&&(r=((e,t)=>{const n=e.find((e=>e.displaySets.some((e=>e.displaySetInstanceUID===t)))),{series:o=[]}=n,{instances:r=[]}=o[0]||{},i=r[0];return Dn(i)})(t,e.displaySetInstanceUID)),bn(r)?void 0:m().wadouri.loadFileRequest(r)}getDataByImageType(e){const t=On(e);if(t){const e=Nn(t);let n=An;const o=(e=>{const t=/^\w+\:/,n=t.exec(e);return 0===t.lastIndex&&n&&n[0]&&n[0].replace(":","")||""})(e);switch(o){case"dicomfile":n=Cn.bind(this,e);break;case"wadors":const r=t.getData().wadoRoot,i=t.getStudyInstanceUID(),a=t.getSeriesInstanceUID(),s=t.getSOPInstanceUID();if(bn([r,i,a,s]))return;n=Mn.bind(this,r,i,a,s);break;case"wadouri":if(e=e.substring(e.indexOf(":")+1),bn(e))return;n=An.bind(this,e);break;default:throw new Error(`Unsupported image type: ${o} for imageId: ${e}`)}return n()}}getDataByDatasetType(e){const{StudyInstanceUID:t,SeriesInstanceUID:n,SOPInstanceUID:o,authorizationHeaders:r,wadoRoot:i,wadoUri:a,instance:s}=e;if(!bn(i))return Mn(i,t,n,o,r);if(!bn(a))return An(a,{headers:r});if(!bn(s?.url)){const e=s.url,t=e.startsWith("http")?e:e.substring(e.indexOf(":")+1);return An(t,{headers:r})}}*getLoaderIterator(e,t,n){yield this.getLocalData(e,t),yield this.getDataByImageType(e),yield this.getDataByDatasetType(e)}findDicomDataPromise(e,t,n){e.authorizationHeaders=n;const o=this.getLoaderIterator(e,t);for(const e of o)if(e)return e;throw new Error("Invalid dicom data loader")}},Rn=JSON.parse('{"UU":"@ohif/extension-cornerstone"}').UU;var Vn=n(77954),Pn=n(76255),_n=n(14771),xn=n.n(_n),Gn=n(12882);const Ln=(0,a.getWebWorkerManager)();Ln.registerWorker("histogram-worker",(()=>new Worker(new URL(n.p+n.u(54),n.b),{name:"histogram-worker"})),{autoTerminationOnIdle:1e3});const{Events:Fn}=a.Enums,kn=({servicesManager:e,viewportId:t})=>{const{cornerstoneViewportService:n}=e.services,[o,r]=(0,i.useState)([]),[s,l]=(0,i.useState)({}),c=(0,i.useCallback)((e=>n.getRenderingEngine().getVolumeViewports().filter((t=>{const n=t.getActors().map((e=>e.uid));return e.length===n.length&&e.every((e=>n.includes(e)))}))),[n]),d=(e,t)=>{const n=[];return e.getProperty().getScalarOpacity(0).getNodeValue(t,n),n[1]},m=(0,i.useCallback)(((e,t)=>{const n=e.getActor(t).actor;return((e,t)=>{const n=a.cache.getVolume(e);if(!n)return!1;if("PT"!==n.metadata.Modality)return!1;const o=t.getProperty().getScalarOpacity(0);if(o.getSize()<2)return!1;const r=[],i=[];if(o.getNodeValue(0,r),o.getNodeValue(1,i),0!==r[0]||0!==r[1]||.1!==i[0])return!1;const s=i[1],l=o.getSize(),c=[];for(let e=2;e<l;e++)if(o.getNodeValue(e,c),c[1]!==s)return!1;return!0})(t,n)?d(n,1):(e=>{const t=e.getProperty().getScalarOpacity(0),n=t.getSize(),o=[];t.getNodeValue(0,o);const r=o[1];for(let e=0;e<n;e++){const e=[];if(t.getNodeValue(0,e),e[1]!==r)return!1}return!0})(n)?d(n,0):void 0}),[]),p=(0,i.useCallback)((async e=>{const t=n.getCornerstoneViewport(e);if(!t)return[];const o=n.getViewportInfo(e),r=t.getActors().map((e=>e.uid)),i=t.getProperties(),{voiRange:l}=i,c=l?{windowWidth:l.upper-l.lower,windowCenter:l.lower+(l.upper-l.lower)/2}:void 0,d=await Promise.all(r.map((async(n,r)=>{const i=a.cache.getVolume(n);if(!i)return null;const l=m(t,n),{metadata:d,scaling:p}=i,u=d.Modality,g={min:"PT"===u?.1:-999,max:"PT"===u?5:1e4},h=s[n]??await(async(e,t,n)=>{if(!t?.loadStatus.loaded)return;if(!e.getImageData(t.volumeId))return;let o,r=t.scalarData;if(t.numTimePoints>1){o=t.timePointIndex;const e=Math.round(t.numTimePoints/2);t.timePointIndex=e,r=t.getScalarData(e)}const{dimensions:i,origin:a,direction:s,spacing:l}=t,c=await Ln.executeTask("histogram-worker","getRange",{dimensions:i,origin:a,direction:s,spacing:l,scalarData:r});t.numTimePoints>1&&(t.timePointIndex=o);const{minimum:d,maximum:m}=c,p={numBins:256,min:Math.max(d,n?.min??d),max:Math.min(m,n?.max??m)};return await Ln.executeTask("histogram-worker","calcHistogram",{data:r,options:p})})(t,i,g),{voi:I,colormap:S}=o.displaySetOptions[r];let v;S&&(v=a.utilities.colormap.getColormap(S.name)??Gn.A.getPresetByName(S.name));return{viewportId:e,modality:u,volumeId:n,volumeIndex:r,voi:r?I:c??I,histogram:h,colormap:v,step:p?.PT?.05:1,opacity:l,showOpacitySlider:1===r&&void 0!==l}})));return d.filter(Boolean)}),[s,n,m]),u=(0,i.useCallback)((()=>{p(t).then((e=>{r(e)}))}),[t,p]),g=(0,i.useCallback)((e=>{const{detail:t}=e,{volumeId:n,range:i}=t,a=o.find((e=>e.volumeId===n));if(!a)return;const s=a.voi,l=i.upper-i.lower,c=i.lower+l/2;if(l===s.windowWidth&&c===s.windowCenter)return;const d={...a,voi:{windowWidth:l,windowCenter:c}};r(o.map((e=>e===a?d:e)))}),[o]),h=(0,i.useCallback)(xn()(g,100),[g]),I=(0,i.useCallback)(((e,o)=>{const r=n.getCornerstoneViewport(t),i={lower:o.windowCenter-o.windowWidth/2,upper:o.windowCenter+o.windowWidth/2};r.setProperties({voiRange:i},e),r.render()}),[n,t]),v=(0,i.useCallback)(((e,t,o,r)=>{const i=n.getCornerstoneViewport(e);if(!i)return;const a=i.getActors().map((e=>e.uid));c(a).forEach((e=>{e.setProperties({colormap:{opacity:r}},o),e.render()}))}),[c,n]);return(0,i.useEffect)((()=>{const e=o.filter((e=>!s[e.volumeId]&&e.histogram)).reduce(((e,t)=>(t?.histogram&&(e[t.volumeId]=t.histogram),e)),{});Object.keys(e).length&&l((t=>({...t,...e})))}),[o,s]),(0,i.useEffect)((()=>u()),[t,u]),(0,i.useEffect)((()=>(a.eventTarget.addEventListener(Fn.IMAGE_VOLUME_LOADING_COMPLETED,u),document.addEventListener(Fn.VOI_MODIFIED,h,!0),()=>{a.eventTarget.removeEventListener(Fn.IMAGE_VOLUME_LOADING_COMPLETED,u),document.removeEventListener(Fn.VOI_MODIFIED,h,!0)})),[u,h]),(0,i.useEffect)((()=>{const{unsubscribe:e}=n.subscribe(n.EVENTS.VIEWPORT_VOLUMES_CHANGED,(({viewportInfo:e})=>{e.viewportId===t&&u()}));return()=>{e()}}),[t,n,u]),i.createElement(S.aU,{title:"Window Level"},o.map(((e,t)=>e.histogram?i.createElement(S.bL,{key:e.volumeId,title:`${e.modality}`,histogram:e.histogram,voi:e.voi,step:e.step,showOpacitySlider:e.showOpacitySlider,colormap:e.colormap,onVOIChange:t=>I(e.volumeId,t),opacity:e.opacity,onOpacityChange:n=>v(e.viewportId,t,e.volumeId,n)}):null)))};kn.propTypes={servicesManager:ke().instanceOf(c.CS),viewportId:ke().string.isRequired};const $n=kn,Bn=({servicesManager:e})=>{const[t]=(0,S.ih)(),{activeViewportId:n}=t;return i.createElement(i.Fragment,null,n&&i.createElement($n,{servicesManager:e,viewportId:n}))};Bn.propTypes={servicesManager:ke().instanceOf(c.CS)};const zn=Bn;function jn(){return jn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},jn.apply(this,arguments)}const{helpers:Wn}=l,{getDynamicVolumeInfo:qn}=Wn??{},Hn=i.lazy((()=>n.e(574).then(n.bind(n,71574)))),Yn=e=>i.createElement(i.Suspense,{fallback:i.createElement("div",null,"Loading...")},i.createElement(Hn,e)),Zn={id:Rn,onModeExit:({servicesManager:e})=>{const{cineService:t}=e.services;Object.values(a.Enums.RequestType).forEach((e=>{a.imageLoadPoolManager.clearRequestStack(e),a.imageRetrievalPoolManager.clearRequestStack(e)})),t.setIsCineEnabled(!1),(0,y.cL)()},preRegistration:function(e){const{servicesManager:t,serviceProvidersManager:n}=e;return t.registerService(Sn.REGISTRATION),t.registerService(_t.REGISTRATION),t.registerService(jt.REGISTRATION),t.registerService(en.REGISTRATION),t.registerService(an.REGISTRATION),t.registerService(Vn.A.REGISTRATION),t.registerService(Tn.REGISTRATION),n.registerProvider(Vn.A.REGISTRATION.name,Pn.It),xe.call(this,e)},getToolbarModule:function({commandsManager:e,servicesManager:t}){const{toolGroupService:n,syncGroupService:o,cornerstoneViewportService:r,hangingProtocolService:i,displaySetService:a,viewportGridService:l}=t.services;return[{name:"evaluate.cornerstoneTool",evaluate:({viewportId:e,button:t,disabledText:o})=>{const r=n.getToolGroupForViewport(e);if(!r)return;const i=Ut(t);if(!r||!r.hasTool(i))return{disabled:!0,className:"!text-common-bright ohif-disabled",disabledText:o??"Not available on the current viewport"};const a=r.getActivePrimaryMouseButtonTool()===i;return{disabled:!1,className:a?"!text-black bg-primary-light rounded":"!text-common-bright hover:!bg-primary-dark hover:!text-primary-light rounded",isActive:a}}},{name:"evaluate.group.promoteToPrimaryIfCornerstoneToolNotActiveInTheList",evaluate:({viewportId:e,button:t,itemId:o})=>{const{items:r}=t.props,i=n.getToolGroupForViewport(e);if(!i)return{primary:t.props.primary,items:r};const a=i.getActivePrimaryMouseButtonTool(),s=r.findIndex((e=>Ut(e)===a));if(s>-1)return{primary:r[s],items:r};if(!o)return{primary:t.props.primary,items:r};return{primary:r.find((e=>e.id===o||e.itemId===o)),items:r}}},{name:"evaluate.action",evaluate:({viewportId:e,button:t})=>({className:"!text-common-bright hover:!bg-primary-dark hover:text-primary-light"})},{name:"evaluate.cornerstoneTool.toggle.ifStrictlyDisabled",evaluate:({viewportId:e,button:t,disabledText:o})=>Mt({viewportId:e,button:t,disabledText:o,offModes:[s.Enums.ToolModes.Disabled],toolGroupService:n})},{name:"evaluate.cornerstoneTool.toggle",evaluate:({viewportId:e,button:t,disabledText:o})=>Mt({viewportId:e,button:t,disabledText:o,offModes:[s.Enums.ToolModes.Disabled,s.Enums.ToolModes.Passive],toolGroupService:n})},{name:"evaluate.cornerstone.synchronizer",evaluate:({viewportId:e,button:t})=>{let n=o.getSynchronizersForViewport(e);if(!n?.length)return{className:Ct(!1)};const r=Array.isArray(t.commands)?t.commands?.[0].commandOptions.type:t.commands?.commandOptions.type;if(n=o.getSynchronizersOfType(r),!n?.length)return{className:Ct(!1)};const i=n[0],a=i?._enabled;return{className:Ct(a)}}},{name:"evaluate.not3D",evaluate:({viewportId:e,disabledText:t})=>{const n=r.getCornerstoneViewport(e);if("volume3d"===n?.type)return{disabled:!0,className:"!text-common-bright ohif-disabled",disabledText:t??"Not available on the current viewport"}}},{name:"evaluate.isUS",evaluate:({viewportId:e,disabledText:t})=>{const n=l.getDisplaySetsUIDsForViewport(e);if(!n?.length)return;return n.map(a.getDisplaySetByUID).some((e=>"US"===e?.Modality))?void 0:{disabled:!0,className:"!text-common-bright ohif-disabled",disabledText:t??"Not available on the current viewport"}}},{name:"evaluate.viewportProperties.toggle",evaluate:({viewportId:e,button:t})=>{const n=r.getCornerstoneViewport(e);if(!n||n.isDisabled)return;const o=t.id,i=n.getProperties(),a=n.getCamera(),s=a?.[o]||i?.[o];if(!s)return{disabled:!1,className:"!text-common-bright hover:!bg-primary-dark hover:text-primary-light"};return{className:Ct(s)}}},{name:"evaluate.mpr",evaluate:({viewportId:e,disabledText:t="Selected viewport is not reconstructable"})=>{const{protocol:n}=i.getActiveProtocol(),o=l.getDisplaySetsUIDsForViewport(e);if(!o?.length)return;if(!o.map(a.getDisplaySetByUID).every((e=>e.isReconstructable)))return{disabled:!0,className:"!text-common-bright ohif-disabled",disabledText:t??"Not available on the current viewport"};return{disabled:!1,className:Ct("mpr"===n?.id)}}}]},getPanelModule:({servicesManager:e})=>[{name:"activeViewportWindowLevel",component:()=>i.createElement(zn,{servicesManager:e})}],getHangingProtocolModule:At,getViewportModule:({servicesManager:e,commandsManager:t})=>[{name:"cornerstone",component:n=>{const{toolbarService:o}=e.services;return i.createElement(Yn,jn({},n,{toolbarService:o,servicesManager:e,commandsManager:t}))}}],getCommandsModule:yt,getCustomizationModule:lt,getUtilityModule:({servicesManager:e})=>[{name:"common",exports:{getCornerstoneLibraries:()=>({cornerstone:a,cornerstoneTools:s}),getEnabledElement:y.kJ,dicomLoaderService:Un,showLabelAnnotationPopup:v}},{name:"core",exports:{Enums:a.Enums}},{name:"tools",exports:{toolNames:R,Enums:s.Enums}},{name:"volumeLoader",exports:{getDynamicVolumeInfo:qn}}]}},77954:(e,t,n)=>{n.d(t,{A:()=>s});var o,r=n(55411),i=n(5085);class a extends r.Rc{constructor(){super(a.EVENTS),this.serviceImplementation={},this.LOCATIONS=a.LOCATIONS,this.serviceImplementation={}}setServiceImplementation({getState:e,setComponent:t,setComponents:n,clear:o}){e&&(this.serviceImplementation._getState=e),t&&(this.serviceImplementation._setComponent=t),n&&(this.serviceImplementation._setComponents=n),o&&(this.serviceImplementation._clear=o)}getState(){return this.serviceImplementation._getState()}setComponent(e){this.serviceImplementation._setComponent(e)}setComponents(e){this.serviceImplementation._setComponents(e)}clear(e){this.serviceImplementation._clear(e)}}o=a,a.EVENTS={},a.LOCATIONS=i.ld,a.REGISTRATION={name:"viewportActionCornersService",altName:"ViewportActionCornersService",create:({configuration:e={}})=>new o};const s=a},71353:(e,t,n)=>{n.d(t,{cL:()=>a,kJ:()=>i,ye:()=>r});const o={DEFAULT_CONTEXT:"CORNERSTONE",enabledElements:{}},r=(e,t,n)=>{const r=n||o.DEFAULT_CONTEXT;o.enabledElements[e]={element:t,context:r}},i=e=>o.enabledElements[e],a=()=>{o.enabledElements={}}},1663:(e,t,n)=>{n.d(t,{A:()=>r});var o=n(44656);function r(e){if(e)return function(e){const t=o.metaData.get("instance",e);return{SOPInstanceUID:t.SOPInstanceUID,SeriesInstanceUID:t.SeriesInstanceUID,StudyInstanceUID:t.StudyInstanceUID,frameNumber:t.frameNumber||1}}(e)}}}]);
//# sourceMappingURL=41.bundle.f3548266c696620718c0.js.map