Files
penracourses/static/js/cornerstone.min.js
T
Ross 3367328d94 .
2021-07-26 10:48:08 +01:00

3 lines
85 KiB
JavaScript

/*! cornerstone-core - 2.3.0 - 2019-07-03 | (c) 2016 Chris Hafey | https://github.com/cornerstonejs/cornerstone */
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("cornerstone-core",[],t):"object"==typeof exports?exports["cornerstone-core"]=t():e.cornerstone=t()}(window,function(){return function(r){var a={};function n(e){if(a[e])return a[e].exports;var t=a[e]={i:e,l:!1,exports:{}};return r[e].call(t.exports,t,t.exports,n),t.l=!0,t.exports}return n.m=r,n.c=a,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var a in t)n.d(r,a,function(e){return t[e]}.bind(null,a));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,r){"use strict";function n(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}r.r(t);var C={NEW_IMAGE:"cornerstonenewimage",INVALIDATED:"cornerstoneinvalidated",PRE_RENDER:"cornerstoneprerender",IMAGE_CACHE_MAXIMUM_SIZE_CHANGED:"cornerstoneimagecachemaximumsizechanged",IMAGE_CACHE_PROMISE_REMOVED:"cornerstoneimagecachepromiseremoved",IMAGE_CACHE_FULL:"cornerstoneimagecachefull",IMAGE_CACHE_CHANGED:"cornerstoneimagecachechanged",WEBGL_TEXTURE_REMOVED:"cornerstonewebgltextureremoved",WEBGL_TEXTURE_CACHE_FULL:"cornerstonewebgltexturecachefull",IMAGE_LOADED:"cornerstoneimageloaded",IMAGE_LOAD_FAILED:"cornerstoneimageloadfailed",ELEMENT_RESIZED:"cornerstoneelementresized",IMAGE_RENDERED:"cornerstoneimagerendered",LAYER_ADDED:"cornerstonelayeradded",LAYER_REMOVED:"cornerstonelayerremoved",ACTIVE_LAYER_CHANGED:"cornerstoneactivelayerchanged",ELEMENT_DISABLED:"cornerstoneelementdisabled",ELEMENT_ENABLED:"cornerstoneelementenabled"},o=new(function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.listeners={},this.namespaces={}}var t,r,a;return t=e,(r=[{key:"addEventNamespaceListener",value:function(e,t){e.indexOf(".")<=0||(this.namespaces[e]=t,this.addEventListener(e.split(".")[0],t))}},{key:"removeEventNamespaceListener",value:function(e){e.indexOf(".")<=0||!this.namespaces[e]||(this.removeEventListener(e.split(".")[0],this.namespaces[e]),delete this.namespaces[e])}},{key:"addEventListener",value:function(e,t){0<e.indexOf(".")?this.addEventNamespaceListener(e,t):(e in this.listeners||(this.listeners[e]=[]),this.listeners[e].push(t))}},{key:"removeEventListener",value:function(e,t){if(0<e.indexOf("."))this.removeEventNamespaceListener(e);else if(e in this.listeners)for(var r=this.listeners[e],a=0,n=r.length;a<n;a++)if(r[a]===t)return void r.splice(a,1)}},{key:"dispatchEvent",value:function(e){if(!(e.type in this.listeners))return!0;for(var t=this.listeners[e.type],r=0,a=t.length;r<a;r++)t[r].call(this,e);return!e.defaultPrevented}}])&&n(t.prototype,r),a&&n(t,a),e}()),a=[];function T(e){if(void 0===e)throw new Error("getEnabledElement: parameter element must not be undefined");for(var t=0;t<a.length;t++)if(a[t].element===e)return a[t];throw new Error("element not enabled")}function i(e){if(void 0===e)throw new Error("getEnabledElement: enabledElement element must not be undefined");a.push(e)}function l(t){var r=[];return a.forEach(function(e){e.image&&e.image.imageId===t&&r.push(e)}),r}function s(){return a}function d(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}var u={viewport:{}},m=function(e){u.viewport=e||{}};function c(e,t){if(null==e)throw new Error(t)}var L=function(e){var t,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null;return c(e,"getImageSize: parameter image must not be undefined"),c(e.width,"getImageSize: parameter image must have width"),c(e.height,"getImageSize: parameter image must have height"),null!=(t=r)&&0!==t&&180!==t?{height:e.width,width:e.height}:{width:e.width,height:e.height}},v=function(e,t){var r=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;c(e,"getImageScale: parameter windowSize must not be undefined"),c(t,"getImageScale: parameter image must not be undefined");var a=L(t,r),n=t.rowPixelSpacing||1,i=t.columnPixelSpacing||1,o=1,l=1;n<i?l=i/n:o=n/i;var s=e.height/a.height/o,d=e.width/a.width/l;return{verticalScale:s,horizontalScale:d,scaleFactor:Math.min(d,s)}},g=function(e,t){if(void 0===e)throw new Error("getDefaultViewport: parameter canvas must not be undefined");return void 0===t?(r={scale:1,translation:{x:0,y:0},voi:{windowWidth:void 0,windowCenter:void 0},invert:!1,pixelReplication:!1,rotation:0,hflip:!1,vflip:!1,modalityLUT:void 0,voiLUT:void 0,colormap:void 0,labelmap:!1,displayedArea:{tlhc:{x:1,y:1},brhc:{x:1,y:1},rowPixelSpacing:1,columnPixelSpacing:1,presentationSizeMode:"NONE"}},Object.assign({},r,u.viewport)):{scale:v(e,t,0).scaleFactor,translation:{x:0,y:0},voi:{windowWidth:t.windowWidth,windowCenter:t.windowCenter},invert:t.invert,pixelReplication:!1,rotation:0,hflip:!1,vflip:!1,modalityLUT:t.modalityLUT,voiLUT:t.voiLUT,colormap:t.colormap,labelmap:Boolean(t.labelmap),displayedArea:{tlhc:{x:1,y:1},brhc:{x:t.columns,y:t.rows},rowPixelSpacing:void 0===t.rowPixelSpacing?1:t.rowPixelSpacing,columnPixelSpacing:void 0===t.columnPixelSpacing?1:t.columnPixelSpacing,presentationSizeMode:"NONE"}};var r},f=function(e){var t=1<arguments.length&&void 0!==arguments[1]&&arguments[1];e.needsRedraw=!0,t&&(e.invalid=!0)},A=function(e){var t=1<arguments.length&&void 0!==arguments[1]&&arguments[1],r=T(e);if(void 0===r.image&&!r.layers.length)throw new Error("updateImage: image has not been loaded yet");f(r,t)};function D(e,t){var r,a=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;return"function"==typeof window.CustomEvent?r=new CustomEvent(t,{detail:a,cancelable:!0}):(r=document.createEvent("CustomEvent")).initCustomEvent(t,!0,!0,a),e.dispatchEvent(r)}function h(e,t,r){D(t.element,e,{viewport:t.viewport,element:t.element,image:t.image,enabledElement:t,layerId:r})}function p(e,t){if(e.layerId===t.layerId)throw new Error("rescaleImage: both arguments represent the same layer");var r=e.image,a=t.image;if(r.imageId&&a.imageId){var n=t.viewport.displayedArea.columnPixelSpacing*a.width/(e.viewport.displayedArea.columnPixelSpacing*r.width),i=t.viewport.scale/e.viewport.scale*n;t.viewport.scale=e.viewport.scale*i}}function w(e,t,r){var a,n="".concat(d()+d(),"-").concat(d(),"-").concat(d(),"-").concat(d(),"-").concat(d()).concat(d()).concat(d()),i=T(e),o=i.layers;t&&(a=g(i.canvas,t),r&&r.viewport&&(a=Object.assign(a,r.viewport))),!1!==i.syncViewports&&(i.syncViewports=!0);var l={image:t,layerId:n,viewport:a,options:r||{},renderingTools:{}};return o.length&&t&&p(o[0],l),o.push(l),h(C.LAYER_ADDED,i,n),1===o.length&&t&&I(e,n),n}function b(e,t){var r=T(e),a=r.layers,n=r.layers.findIndex(function(e){return e.layerId===t});-1!==n&&(a.splice(n,1),t===r.activeLayerId&&a.length&&I(e,a[0].layerId),h(C.LAYER_REMOVED,r,t))}function y(e,t){return T(e).layers.find(function(e){return e.layerId===t})}function x(e){return T(e).layers}function E(e){return T(e).layers.filter(function(e){return e.options&&!1!==e.options.visible&&0!==e.options.opacity})}function I(e,t){var r=T(e);if(r.activeLayerId!==t){var a=r.layers.findIndex(function(e){return e.layerId===t});if(-1===a)throw new Error("setActiveLayer: layer not found in layers array");var n=r.layers[a];if(!n.image)throw new Error("setActiveLayer: layer with undefined image cannot be set as active.");r.activeLayerId=t,r.image=n.image,r.viewport=n.viewport,A(e),h(C.ACTIVE_LAYER_CHANGED,r,t)}}function P(e,t,r){var a,n=T(e),i=n.layers[0];if(!(a=r?y(e,r):S(e)))throw new Error("setLayerImage: Layer not found");if(a.image=t){if(!a.viewport){var o=g(n.canvas,t);a.options&&a.options.viewport&&(a.viewport=Object.assign(o,a.options.viewport)),i.layerId!==r&&p(i,a)}}else a.viewport=void 0}function S(e){var t=T(e);return t.layers.find(function(e){return e.layerId===t.activeLayerId})}function R(e){var t=T(e);t.layers=[],delete t.activeLayerId,delete t.lastSyncViewportsState}function _(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function M(e,t,r){if(1<e)throw new Error("HSVToRGB expects hue < 1");var a=[];if(0===t)return a[0]=r,a[1]=r,a[2]=r,a;var n=Math.floor(6*e),i=6*e-n,o=r*(1-t),l=r*(1-t*i),s=r*(1-t*(1-i));switch(n){case 0:case 6:a[0]=r,a[1]=s,a[2]=o;break;case 1:a[0]=l,a[1]=r,a[2]=o;break;case 2:a[0]=o,a[1]=r,a[2]=s;break;case 3:a[0]=o,a[1]=l,a[2]=r;break;case 4:a[0]=s,a[1]=o,a[2]=r;break;case 5:a[0]=r,a[1]=o,a[2]=l}return a}var V=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.NumberOfColors=256,this.Ramp="linear",this.TableRange=[0,255],this.HueRange=[0,.66667],this.SaturationRange=[1,1],this.ValueRange=[1,1],this.AlphaRange=[1,1],this.NaNColor=[128,0,0,255],this.BelowRangeColor=[0,0,0,255],this.UseBelowRangeColor=!0,this.AboveRangeColor=[255,255,255,255],this.UseAboveRangeColor=!0,this.InputRange=[0,255],this.Table=[]}var t,r,a;return t=e,(r=[{key:"setNumberOfTableValues",value:function(e){this.NumberOfColors=e}},{key:"setRamp",value:function(e){this.Ramp=e}},{key:"setTableRange",value:function(e,t){this.TableRange[0]=e,this.TableRange[1]=t}},{key:"setHueRange",value:function(e,t){this.HueRange[0]=e,this.HueRange[1]=t}},{key:"setSaturationRange",value:function(e,t){this.SaturationRange[0]=e,this.SaturationRange[1]=t}},{key:"setValueRange",value:function(e,t){this.ValueRange[0]=e,this.ValueRange[1]=t}},{key:"setRange",value:function(e,t){this.InputRange[0]=e,this.InputRange[1]=t}},{key:"setAlphaRange",value:function(e,t){this.AlphaRange[0]=e,this.AlphaRange[1]=t}},{key:"getColor",value:function(e){return this.mapValue(e)}},{key:"build",value:function(e){if(!(1<this.Table.length)||e){this.Table=[];var t,r,a,n,i=this.NumberOfColors-1;i?(t=(this.HueRange[1]-this.HueRange[0])/i,r=(this.SaturationRange[1]-this.SaturationRange[0])/i,a=(this.ValueRange[1]-this.ValueRange[0])/i,n=(this.AlphaRange[1]-this.AlphaRange[0])/i):t=r=a=n=0;for(var o=0;o<=i;o++){var l=this.HueRange[0]+o*t,s=this.SaturationRange[0]+o*r,d=this.ValueRange[0]+o*a,u=this.AlphaRange[0]+o*n,m=M(l,s,d),c=[];switch(this.Ramp){case"scurve":c[0]=Math.floor(127.5*(1+Math.cos((1-m[0])*Math.PI))),c[1]=Math.floor(127.5*(1+Math.cos((1-m[1])*Math.PI))),c[2]=Math.floor(127.5*(1+Math.cos((1-m[2])*Math.PI))),c[3]=Math.floor(255*u);break;case"linear":c[0]=Math.floor(255*m[0]+.5),c[1]=Math.floor(255*m[1]+.5),c[2]=Math.floor(255*m[2]+.5),c[3]=Math.floor(255*u+.5);break;case"sqrt":c[0]=Math.floor(255*Math.sqrt(m[0])+.5),c[1]=Math.floor(255*Math.sqrt(m[1])+.5),c[2]=Math.floor(255*Math.sqrt(m[2])+.5),c[3]=Math.floor(255*Math.sqrt(u)+.5);break;default:throw new Error("Invalid Ramp value (".concat(this.Ramp,")"))}this.Table.push(c)}this.buildSpecialColors()}}},{key:"buildSpecialColors",value:function(){var e=this.NumberOfColors,t=e+0,r=e+1,a=e+2;this.UseBelowRangeColor||0===e?this.Table[t]=this.BelowRangeColor:this.Table[t]=this.Table[0],this.UseAboveRangeColor||0===e?this.Table[r]=this.AboveRangeColor:this.Table[r]=this.Table[e-1],this.Table[a]=this.NaNColor}},{key:"mapValue",value:function(e){var t=this.getIndex(e);if(t<0)return this.NaNColor;if(0===t){if(this.UseBelowRangeColor&&e<this.TableRange[0])return this.BelowRangeColor}else if(t===this.NumberOfColors-1&&this.UseAboveRangeColor&&e>this.TableRange[1])return this.AboveRangeColor;return this.Table[t]}},{key:"getIndex",value:function(e){var t={Range:[]};if(t.MaxIndex=this.NumberOfColors-1,t.Shift=-this.TableRange[0],this.TableRange[1]<=this.TableRange[0]?t.Scale=Number.MAX_VALUE:t.Scale=t.MaxIndex/(this.TableRange[1]-this.TableRange[0]),t.Range[0]=this.TableRange[0],t.Range[1]=this.TableRange[1],isNaN(e))return-1;var r,a,n,i=(n=(r=e)<(a=t).Range[0]?a.MaxIndex+0+1.5:r>a.Range[1]?a.MaxIndex+1+1.5:(r+a.Shift)*a.Scale,Math.floor(n));return i===this.NumberOfColors+0?i=0:i===this.NumberOfColors+1&&(i=this.NumberOfColors-1),i}},{key:"setTableValue",value:function(e,t){if(5===arguments.length&&(t=Array.prototype.slice.call(arguments,1)),e<0)throw new Error("Can't set the table value for negative index (".concat(e,")"));e>=this.NumberOfColors&&new Error("Index ".concat(e," is greater than the number of colors ").concat(this.NumberOfColors)),this.Table[e]=t,0!==e&&e!==this.NumberOfColors-1||this.buildSpecialColors()}}])&&_(t.prototype,r),a&&_(t,a),e}(),O=[0,0,0,0],U={hotIron:{name:"Hot Iron",numOfColors:256,colors:[[0,0,0,255],[2,0,0,255],[4,0,0,255],[6,0,0,255],[8,0,0,255],[10,0,0,255],[12,0,0,255],[14,0,0,255],[16,0,0,255],[18,0,0,255],[20,0,0,255],[22,0,0,255],[24,0,0,255],[26,0,0,255],[28,0,0,255],[30,0,0,255],[32,0,0,255],[34,0,0,255],[36,0,0,255],[38,0,0,255],[40,0,0,255],[42,0,0,255],[44,0,0,255],[46,0,0,255],[48,0,0,255],[50,0,0,255],[52,0,0,255],[54,0,0,255],[56,0,0,255],[58,0,0,255],[60,0,0,255],[62,0,0,255],[64,0,0,255],[66,0,0,255],[68,0,0,255],[70,0,0,255],[72,0,0,255],[74,0,0,255],[76,0,0,255],[78,0,0,255],[80,0,0,255],[82,0,0,255],[84,0,0,255],[86,0,0,255],[88,0,0,255],[90,0,0,255],[92,0,0,255],[94,0,0,255],[96,0,0,255],[98,0,0,255],[100,0,0,255],[102,0,0,255],[104,0,0,255],[106,0,0,255],[108,0,0,255],[110,0,0,255],[112,0,0,255],[114,0,0,255],[116,0,0,255],[118,0,0,255],[120,0,0,255],[122,0,0,255],[124,0,0,255],[126,0,0,255],[128,0,0,255],[130,0,0,255],[132,0,0,255],[134,0,0,255],[136,0,0,255],[138,0,0,255],[140,0,0,255],[142,0,0,255],[144,0,0,255],[146,0,0,255],[148,0,0,255],[150,0,0,255],[152,0,0,255],[154,0,0,255],[156,0,0,255],[158,0,0,255],[160,0,0,255],[162,0,0,255],[164,0,0,255],[166,0,0,255],[168,0,0,255],[170,0,0,255],[172,0,0,255],[174,0,0,255],[176,0,0,255],[178,0,0,255],[180,0,0,255],[182,0,0,255],[184,0,0,255],[186,0,0,255],[188,0,0,255],[190,0,0,255],[192,0,0,255],[194,0,0,255],[196,0,0,255],[198,0,0,255],[200,0,0,255],[202,0,0,255],[204,0,0,255],[206,0,0,255],[208,0,0,255],[210,0,0,255],[212,0,0,255],[214,0,0,255],[216,0,0,255],[218,0,0,255],[220,0,0,255],[222,0,0,255],[224,0,0,255],[226,0,0,255],[228,0,0,255],[230,0,0,255],[232,0,0,255],[234,0,0,255],[236,0,0,255],[238,0,0,255],[240,0,0,255],[242,0,0,255],[244,0,0,255],[246,0,0,255],[248,0,0,255],[250,0,0,255],[252,0,0,255],[254,0,0,255],[255,0,0,255],[255,2,0,255],[255,4,0,255],[255,6,0,255],[255,8,0,255],[255,10,0,255],[255,12,0,255],[255,14,0,255],[255,16,0,255],[255,18,0,255],[255,20,0,255],[255,22,0,255],[255,24,0,255],[255,26,0,255],[255,28,0,255],[255,30,0,255],[255,32,0,255],[255,34,0,255],[255,36,0,255],[255,38,0,255],[255,40,0,255],[255,42,0,255],[255,44,0,255],[255,46,0,255],[255,48,0,255],[255,50,0,255],[255,52,0,255],[255,54,0,255],[255,56,0,255],[255,58,0,255],[255,60,0,255],[255,62,0,255],[255,64,0,255],[255,66,0,255],[255,68,0,255],[255,70,0,255],[255,72,0,255],[255,74,0,255],[255,76,0,255],[255,78,0,255],[255,80,0,255],[255,82,0,255],[255,84,0,255],[255,86,0,255],[255,88,0,255],[255,90,0,255],[255,92,0,255],[255,94,0,255],[255,96,0,255],[255,98,0,255],[255,100,0,255],[255,102,0,255],[255,104,0,255],[255,106,0,255],[255,108,0,255],[255,110,0,255],[255,112,0,255],[255,114,0,255],[255,116,0,255],[255,118,0,255],[255,120,0,255],[255,122,0,255],[255,124,0,255],[255,126,0,255],[255,128,4,255],[255,130,8,255],[255,132,12,255],[255,134,16,255],[255,136,20,255],[255,138,24,255],[255,140,28,255],[255,142,32,255],[255,144,36,255],[255,146,40,255],[255,148,44,255],[255,150,48,255],[255,152,52,255],[255,154,56,255],[255,156,60,255],[255,158,64,255],[255,160,68,255],[255,162,72,255],[255,164,76,255],[255,166,80,255],[255,168,84,255],[255,170,88,255],[255,172,92,255],[255,174,96,255],[255,176,100,255],[255,178,104,255],[255,180,108,255],[255,182,112,255],[255,184,116,255],[255,186,120,255],[255,188,124,255],[255,190,128,255],[255,192,132,255],[255,194,136,255],[255,196,140,255],[255,198,144,255],[255,200,148,255],[255,202,152,255],[255,204,156,255],[255,206,160,255],[255,208,164,255],[255,210,168,255],[255,212,172,255],[255,214,176,255],[255,216,180,255],[255,218,184,255],[255,220,188,255],[255,222,192,255],[255,224,196,255],[255,226,200,255],[255,228,204,255],[255,230,208,255],[255,232,212,255],[255,234,216,255],[255,236,220,255],[255,238,224,255],[255,240,228,255],[255,242,232,255],[255,244,236,255],[255,246,240,255],[255,248,244,255],[255,250,248,255],[255,252,252,255],[255,255,255,255]]},pet:{name:"PET",numColors:256,colors:[[0,0,0,255],[0,2,1,255],[0,4,3,255],[0,6,5,255],[0,8,7,255],[0,10,9,255],[0,12,11,255],[0,14,13,255],[0,16,15,255],[0,18,17,255],[0,20,19,255],[0,22,21,255],[0,24,23,255],[0,26,25,255],[0,28,27,255],[0,30,29,255],[0,32,31,255],[0,34,33,255],[0,36,35,255],[0,38,37,255],[0,40,39,255],[0,42,41,255],[0,44,43,255],[0,46,45,255],[0,48,47,255],[0,50,49,255],[0,52,51,255],[0,54,53,255],[0,56,55,255],[0,58,57,255],[0,60,59,255],[0,62,61,255],[0,65,63,255],[0,67,65,255],[0,69,67,255],[0,71,69,255],[0,73,71,255],[0,75,73,255],[0,77,75,255],[0,79,77,255],[0,81,79,255],[0,83,81,255],[0,85,83,255],[0,87,85,255],[0,89,87,255],[0,91,89,255],[0,93,91,255],[0,95,93,255],[0,97,95,255],[0,99,97,255],[0,101,99,255],[0,103,101,255],[0,105,103,255],[0,107,105,255],[0,109,107,255],[0,111,109,255],[0,113,111,255],[0,115,113,255],[0,117,115,255],[0,119,117,255],[0,121,119,255],[0,123,121,255],[0,125,123,255],[0,128,125,255],[1,126,127,255],[3,124,129,255],[5,122,131,255],[7,120,133,255],[9,118,135,255],[11,116,137,255],[13,114,139,255],[15,112,141,255],[17,110,143,255],[19,108,145,255],[21,106,147,255],[23,104,149,255],[25,102,151,255],[27,100,153,255],[29,98,155,255],[31,96,157,255],[33,94,159,255],[35,92,161,255],[37,90,163,255],[39,88,165,255],[41,86,167,255],[43,84,169,255],[45,82,171,255],[47,80,173,255],[49,78,175,255],[51,76,177,255],[53,74,179,255],[55,72,181,255],[57,70,183,255],[59,68,185,255],[61,66,187,255],[63,64,189,255],[65,63,191,255],[67,61,193,255],[69,59,195,255],[71,57,197,255],[73,55,199,255],[75,53,201,255],[77,51,203,255],[79,49,205,255],[81,47,207,255],[83,45,209,255],[85,43,211,255],[86,41,213,255],[88,39,215,255],[90,37,217,255],[92,35,219,255],[94,33,221,255],[96,31,223,255],[98,29,225,255],[100,27,227,255],[102,25,229,255],[104,23,231,255],[106,21,233,255],[108,19,235,255],[110,17,237,255],[112,15,239,255],[114,13,241,255],[116,11,243,255],[118,9,245,255],[120,7,247,255],[122,5,249,255],[124,3,251,255],[126,1,253,255],[128,0,255,255],[130,2,252,255],[132,4,248,255],[134,6,244,255],[136,8,240,255],[138,10,236,255],[140,12,232,255],[142,14,228,255],[144,16,224,255],[146,18,220,255],[148,20,216,255],[150,22,212,255],[152,24,208,255],[154,26,204,255],[156,28,200,255],[158,30,196,255],[160,32,192,255],[162,34,188,255],[164,36,184,255],[166,38,180,255],[168,40,176,255],[170,42,172,255],[171,44,168,255],[173,46,164,255],[175,48,160,255],[177,50,156,255],[179,52,152,255],[181,54,148,255],[183,56,144,255],[185,58,140,255],[187,60,136,255],[189,62,132,255],[191,64,128,255],[193,66,124,255],[195,68,120,255],[197,70,116,255],[199,72,112,255],[201,74,108,255],[203,76,104,255],[205,78,100,255],[207,80,96,255],[209,82,92,255],[211,84,88,255],[213,86,84,255],[215,88,80,255],[217,90,76,255],[219,92,72,255],[221,94,68,255],[223,96,64,255],[225,98,60,255],[227,100,56,255],[229,102,52,255],[231,104,48,255],[233,106,44,255],[235,108,40,255],[237,110,36,255],[239,112,32,255],[241,114,28,255],[243,116,24,255],[245,118,20,255],[247,120,16,255],[249,122,12,255],[251,124,8,255],[253,126,4,255],[255,128,0,255],[255,130,4,255],[255,132,8,255],[255,134,12,255],[255,136,16,255],[255,138,20,255],[255,140,24,255],[255,142,28,255],[255,144,32,255],[255,146,36,255],[255,148,40,255],[255,150,44,255],[255,152,48,255],[255,154,52,255],[255,156,56,255],[255,158,60,255],[255,160,64,255],[255,162,68,255],[255,164,72,255],[255,166,76,255],[255,168,80,255],[255,170,85,255],[255,172,89,255],[255,174,93,255],[255,176,97,255],[255,178,101,255],[255,180,105,255],[255,182,109,255],[255,184,113,255],[255,186,117,255],[255,188,121,255],[255,190,125,255],[255,192,129,255],[255,194,133,255],[255,196,137,255],[255,198,141,255],[255,200,145,255],[255,202,149,255],[255,204,153,255],[255,206,157,255],[255,208,161,255],[255,210,165,255],[255,212,170,255],[255,214,174,255],[255,216,178,255],[255,218,182,255],[255,220,186,255],[255,222,190,255],[255,224,194,255],[255,226,198,255],[255,228,202,255],[255,230,206,255],[255,232,210,255],[255,234,214,255],[255,236,218,255],[255,238,222,255],[255,240,226,255],[255,242,230,255],[255,244,234,255],[255,246,238,255],[255,248,242,255],[255,250,246,255],[255,252,250,255],[255,255,255,255]]},hotMetalBlue:{name:"Hot Metal Blue",numColors:256,colors:[[0,0,0,255],[0,0,2,255],[0,0,4,255],[0,0,6,255],[0,0,8,255],[0,0,10,255],[0,0,12,255],[0,0,14,255],[0,0,16,255],[0,0,17,255],[0,0,19,255],[0,0,21,255],[0,0,23,255],[0,0,25,255],[0,0,27,255],[0,0,29,255],[0,0,31,255],[0,0,33,255],[0,0,35,255],[0,0,37,255],[0,0,39,255],[0,0,41,255],[0,0,43,255],[0,0,45,255],[0,0,47,255],[0,0,49,255],[0,0,51,255],[0,0,53,255],[0,0,55,255],[0,0,57,255],[0,0,59,255],[0,0,61,255],[0,0,63,255],[0,0,65,255],[0,0,67,255],[0,0,69,255],[0,0,71,255],[0,0,73,255],[0,0,75,255],[0,0,77,255],[0,0,79,255],[0,0,81,255],[0,0,83,255],[0,0,84,255],[0,0,86,255],[0,0,88,255],[0,0,90,255],[0,0,92,255],[0,0,94,255],[0,0,96,255],[0,0,98,255],[0,0,100,255],[0,0,102,255],[0,0,104,255],[0,0,106,255],[0,0,108,255],[0,0,110,255],[0,0,112,255],[0,0,114,255],[0,0,116,255],[0,0,117,255],[0,0,119,255],[0,0,121,255],[0,0,123,255],[0,0,125,255],[0,0,127,255],[0,0,129,255],[0,0,131,255],[0,0,133,255],[0,0,135,255],[0,0,137,255],[0,0,139,255],[0,0,141,255],[0,0,143,255],[0,0,145,255],[0,0,147,255],[0,0,149,255],[0,0,151,255],[0,0,153,255],[0,0,155,255],[0,0,157,255],[0,0,159,255],[0,0,161,255],[0,0,163,255],[0,0,165,255],[0,0,167,255],[3,0,169,255],[6,0,171,255],[9,0,173,255],[12,0,175,255],[15,0,177,255],[18,0,179,255],[21,0,181,255],[24,0,183,255],[26,0,184,255],[29,0,186,255],[32,0,188,255],[35,0,190,255],[38,0,192,255],[41,0,194,255],[44,0,196,255],[47,0,198,255],[50,0,200,255],[52,0,197,255],[55,0,194,255],[57,0,191,255],[59,0,188,255],[62,0,185,255],[64,0,182,255],[66,0,179,255],[69,0,176,255],[71,0,174,255],[74,0,171,255],[76,0,168,255],[78,0,165,255],[81,0,162,255],[83,0,159,255],[85,0,156,255],[88,0,153,255],[90,0,150,255],[93,2,144,255],[96,4,138,255],[99,6,132,255],[102,8,126,255],[105,9,121,255],[108,11,115,255],[111,13,109,255],[114,15,103,255],[116,17,97,255],[119,19,91,255],[122,21,85,255],[125,23,79,255],[128,24,74,255],[131,26,68,255],[134,28,62,255],[137,30,56,255],[140,32,50,255],[143,34,47,255],[146,36,44,255],[149,38,41,255],[152,40,38,255],[155,41,35,255],[158,43,32,255],[161,45,29,255],[164,47,26,255],[166,49,24,255],[169,51,21,255],[172,53,18,255],[175,55,15,255],[178,56,12,255],[181,58,9,255],[184,60,6,255],[187,62,3,255],[190,64,0,255],[194,66,0,255],[198,68,0,255],[201,70,0,255],[205,72,0,255],[209,73,0,255],[213,75,0,255],[217,77,0,255],[221,79,0,255],[224,81,0,255],[228,83,0,255],[232,85,0,255],[236,87,0,255],[240,88,0,255],[244,90,0,255],[247,92,0,255],[251,94,0,255],[255,96,0,255],[255,98,3,255],[255,100,6,255],[255,102,9,255],[255,104,12,255],[255,105,15,255],[255,107,18,255],[255,109,21,255],[255,111,24,255],[255,113,26,255],[255,115,29,255],[255,117,32,255],[255,119,35,255],[255,120,38,255],[255,122,41,255],[255,124,44,255],[255,126,47,255],[255,128,50,255],[255,130,53,255],[255,132,56,255],[255,134,59,255],[255,136,62,255],[255,137,65,255],[255,139,68,255],[255,141,71,255],[255,143,74,255],[255,145,76,255],[255,147,79,255],[255,149,82,255],[255,151,85,255],[255,152,88,255],[255,154,91,255],[255,156,94,255],[255,158,97,255],[255,160,100,255],[255,162,103,255],[255,164,106,255],[255,166,109,255],[255,168,112,255],[255,169,115,255],[255,171,118,255],[255,173,121,255],[255,175,124,255],[255,177,126,255],[255,179,129,255],[255,181,132,255],[255,183,135,255],[255,184,138,255],[255,186,141,255],[255,188,144,255],[255,190,147,255],[255,192,150,255],[255,194,153,255],[255,196,156,255],[255,198,159,255],[255,200,162,255],[255,201,165,255],[255,203,168,255],[255,205,171,255],[255,207,174,255],[255,209,176,255],[255,211,179,255],[255,213,182,255],[255,215,185,255],[255,216,188,255],[255,218,191,255],[255,220,194,255],[255,222,197,255],[255,224,200,255],[255,226,203,255],[255,228,206,255],[255,229,210,255],[255,231,213,255],[255,233,216,255],[255,235,219,255],[255,237,223,255],[255,239,226,255],[255,240,229,255],[255,242,232,255],[255,244,236,255],[255,246,239,255],[255,248,242,255],[255,250,245,255],[255,251,249,255],[255,253,252,255],[255,255,255,255]]},pet20Step:{name:"PET 20 Step",numColors:256,colors:[[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255]]},gray:{name:"Gray",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[1,1,1]],green:[[0,0,0],[1,1,1]],blue:[[0,0,0],[1,1,1]]}},jet:{name:"Jet",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[.35,0,0],[.66,1,1],[.89,1,1],[1,.5,.5]],green:[[0,0,0],[.125,0,0],[.375,1,1],[.64,1,1],[.91,0,0],[1,0,0]],blue:[[0,.5,.5],[.11,1,1],[.34,1,1],[.65,0,0],[1,0,0]]}},hsv:{name:"HSV",numColors:256,gamma:1,segmentedData:{red:[[0,1,1],[.15873,1,1],[.174603,.96875,.96875],[.333333,.03125,.03125],[.349206,0,0],[.666667,0,0],[.68254,.03125,.03125],[.84127,.96875,.96875],[.857143,1,1],[1,1,1]],green:[[0,0,0],[.15873,.9375,.9375],[.174603,1,1],[.507937,1,1],[.666667,.0625,.0625],[.68254,0,0],[1,0,0]],blue:[[0,0,0],[.333333,0,0],[.349206,.0625,.0625],[.507937,1,1],[.84127,1,1],[.857143,.9375,.9375],[1,.09375,.09375]]}},hot:{name:"Hot",numColors:256,gamma:1,segmentedData:{red:[[0,.0416,.0416],[.365079,1,1],[1,1,1]],green:[[0,0,0],[.365079,0,0],[.746032,1,1],[1,1,1]],blue:[[0,0,0],[.746032,0,0],[1,1,1]]}},cool:{name:"Cool",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[1,1,1]],green:[[0,1,1],[1,0,0]],blue:[[0,1,1],[1,1,1]]}},spring:{name:"Spring",numColors:256,gamma:1,segmentedData:{red:[[0,1,1],[1,1,1]],green:[[0,0,0],[1,1,1]],blue:[[0,1,1],[1,0,0]]}},summer:{name:"Summer",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[1,1,1]],green:[[0,.5,.5],[1,1,1]],blue:[[0,.4,.4],[1,.4,.4]]}},autumn:{name:"Autumn",numColors:256,gamma:1,segmentedData:{red:[[0,1,1],[1,1,1]],green:[[0,0,0],[1,1,1]],blue:[[0,0,0],[1,0,0]]}},winter:{name:"Winter",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[1,0,0]],green:[[0,0,0],[1,1,1]],blue:[[0,1,1],[1,.5,.5]]}},bone:{name:"Bone",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[.746032,.652778,.652778],[1,1,1]],green:[[0,0,0],[.365079,.319444,.319444],[.746032,.777778,.777778],[1,1,1]],blue:[[0,0,0],[.365079,.444444,.444444],[1,1,1]]}},copper:{name:"Copper",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[.809524,1,1],[1,1,1]],green:[[0,0,0],[1,.7812,.7812]],blue:[[0,0,0],[1,.4975,.4975]]}},spectral:{name:"Spectral",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[.05,.4667,.4667],[.1,.5333,.5333],[.15,0,0],[.2,0,0],[.25,0,0],[.3,0,0],[.35,0,0],[.4,0,0],[.45,0,0],[.5,0,0],[.55,0,0],[.6,0,0],[.65,.7333,.7333],[.7,.9333,.9333],[.75,1,1],[.8,1,1],[.85,1,1],[.9,.8667,.8667],[.95,.8,.8],[1,.8,.8]],green:[[0,0,0],[.05,0,0],[.1,0,0],[.15,0,0],[.2,0,0],[.25,.4667,.4667],[.3,.6,.6],[.35,.6667,.6667],[.4,.6667,.6667],[.45,.6,.6],[.5,.7333,.7333],[.55,.8667,.8667],[.6,1,1],[.65,1,1],[.7,.9333,.9333],[.75,.8,.8],[.8,.6,.6],[.85,0,0],[.9,0,0],[.95,0,0],[1,.8,.8]],blue:[[0,0,0],[.05,.5333,.5333],[.1,.6,.6],[.15,.6667,.6667],[.2,.8667,.8667],[.25,.8667,.8667],[.3,.8667,.8667],[.35,.6667,.6667],[.4,.5333,.5333],[.45,0,0],[.5,0,0],[.55,0,0],[.6,0,0],[.65,0,0],[.7,0,0],[.75,0,0],[.8,0,0],[.85,0,0],[.9,0,0],[.95,0,0],[1,.8,.8]]}},coolwarm:{name:"CoolWarm",numColors:256,gamma:1,segmentedData:{red:[[0,.2298057,.2298057],[.03125,.26623388,.26623388],[.0625,.30386891,.30386891],[.09375,.342804478,.342804478],[.125,.38301334,.38301334],[.15625,.424369608,.424369608],[.1875,.46666708,.46666708],[.21875,.509635204,.509635204],[.25,.552953156,.552953156],[.28125,.596262162,.596262162],[.3125,.639176211,.639176211],[.34375,.681291281,.681291281],[.375,.722193294,.722193294],[.40625,.761464949,.761464949],[.4375,.798691636,.798691636],[.46875,.833466556,.833466556],[.5,.865395197,.865395197],[.53125,.897787179,.897787179],[.5625,.924127593,.924127593],[.59375,.944468518,.944468518],[.625,.958852946,.958852946],[.65625,.96732803,.96732803],[.6875,.969954137,.969954137],[.71875,.966811177,.966811177],[.75,.958003065,.958003065],[.78125,.943660866,.943660866],[.8125,.923944917,.923944917],[.84375,.89904617,.89904617],[.875,.869186849,.869186849],[.90625,.834620542,.834620542],[.9375,.795631745,.795631745],[.96875,.752534934,.752534934],[1,.705673158,.705673158]],green:[[0,.298717966,.298717966],[.03125,.353094838,.353094838],[.0625,.406535296,.406535296],[.09375,.458757618,.458757618],[.125,.50941904,.50941904],[.15625,.558148092,.558148092],[.1875,.604562568,.604562568],[.21875,.648280772,.648280772],[.25,.688929332,.688929332],[.28125,.726149107,.726149107],[.3125,.759599947,.759599947],[.34375,.788964712,.788964712],[.375,.813952739,.813952739],[.40625,.834302879,.834302879],[.4375,.849786142,.849786142],[.46875,.860207984,.860207984],[.5,.86541021,.86541021],[.53125,.848937047,.848937047],[.5625,.827384882,.827384882],[.59375,.800927443,.800927443],[.625,.769767752,.769767752],[.65625,.734132809,.734132809],[.6875,.694266682,.694266682],[.71875,.650421156,.650421156],[.75,.602842431,.602842431],[.78125,.551750968,.551750968],[.8125,.49730856,.49730856],[.84375,.439559467,.439559467],[.875,.378313092,.378313092],[.90625,.312874446,.312874446],[.9375,.24128379,.24128379],[.96875,.157246067,.157246067],[1,.01555616,.01555616]],blue:[[0,.753683153,.753683153],[.03125,.801466763,.801466763],[.0625,.84495867,.84495867],[.09375,.883725899,.883725899],[.125,.917387822,.917387822],[.15625,.945619588,.945619588],[.1875,.968154911,.968154911],[.21875,.98478814,.98478814],[.25,.995375608,.995375608],[.28125,.999836203,.999836203],[.3125,.998151185,.998151185],[.34375,.990363227,.990363227],[.375,.976574709,.976574709],[.40625,.956945269,.956945269],[.4375,.931688648,.931688648],[.46875,.901068838,.901068838],[.5,.865395561,.865395561],[.53125,.820880546,.820880546],[.5625,.774508472,.774508472],[.59375,.726736146,.726736146],[.625,.678007945,.678007945],[.65625,.628751763,.628751763],[.6875,.579375448,.579375448],[.71875,.530263762,.530263762],[.75,.481775914,.481775914],[.78125,.434243684,.434243684],[.8125,.387970225,.387970225],[.84375,.343229596,.343229596],[.875,.300267182,.300267182],[.90625,.259301199,.259301199],[.9375,.220525627,.220525627],[.96875,.184115123,.184115123],[1,.150232812,.150232812]]}},blues:{name:"Blues",numColors:256,gamma:1,segmentedData:{red:[[0,.9686274528503418,.9686274528503418],[.125,.8705882430076599,.8705882430076599],[.25,.7764706015586853,.7764706015586853],[.375,.6196078658103943,.6196078658103943],[.5,.41960784792900085,.41960784792900085],[.625,.25882354378700256,.25882354378700256],[.75,.12941177189350128,.12941177189350128],[.875,.0313725508749485,.0313725508749485],[1,.0313725508749485,.0313725508749485]],green:[[0,.9843137264251709,.9843137264251709],[.125,.9215686321258545,.9215686321258545],[.25,.8588235378265381,.8588235378265381],[.375,.7921568751335144,.7921568751335144],[.5,.6823529601097107,.6823529601097107],[.625,.572549045085907,.572549045085907],[.75,.4431372582912445,.4431372582912445],[.875,.3176470696926117,.3176470696926117],[1,.1882352977991104,.1882352977991104]],blue:[[0,1,1],[.125,.9686274528503418,.9686274528503418],[.25,.9372549057006836,.9372549057006836],[.375,.8823529481887817,.8823529481887817],[.5,.8392156958580017,.8392156958580017],[.625,.7764706015586853,.7764706015586853],[.75,.7098039388656616,.7098039388656616],[.875,.6117647290229797,.6117647290229797],[1,.41960784792900085,.41960784792900085]]}}};function N(e,t){for(var r=0,a=e.length-1;r<=a;){var n=r+Math.floor((a-r)/2),i=e[n];if(i===t)return n;t<i?a=n-1:r=n+1}return r}function B(e,t,r){var a,n=[],i=[],o=[],l=[];for(r=null===r?1:r,a=0;a<t.length;a++){var s=t[a];n.push((e-1)*s[0]),i.push(s[1]),o.push(s[1])}var d=function(e,t,r){for(var a=(t-e)/((r=null===r?100:r)-1),n=[];0<r--;)n.push(e),e+=a;return n[n.length-1]=t,n}(0,1,e);for(a=0;a<e;a++)d[a]=(e-1)*Math.pow(d[a],r);var u=function(e,t){var r,a=[],n=t.length;for(e.sort(function(e,t){return e-t}),r=0;r<n;r++)a[r]=N(e,t[r]);return a}(n,d);for(a=1;a<e-1;a++){var m=u[a],c=(d[a]-n[m-1])/(n[m]-n[m-1]),v=i[m]-o[m-1];l[a]=c*v+o[m-1]}return l[0]=o[0],l[e-1]=i[t.length-1],l}function F(e,t){var a=U[e];return a||(a=U[e]=t||{name:"",colors:[]}),!a.colors&&a.segmentedData&&(a.colors=function(e,t,r){var a,n=[];r=null===r?1:r;var i=B(t=null===t?256:t,e.red,r),o=B(t,e.green,r),l=B(t,e.blue,r);for(a=0;a<t;a++){var s=[Math.round(255*i[a]),Math.round(255*o[a]),Math.round(255*l[a]),255];n.push(s)}return n}(a.segmentedData,a.numColors,a.gamma)),{getId:function(){return e},getColorSchemeName:function(){return a.name},setColorSchemeName:function(e){a.name=e},getNumberOfColors:function(){return a.colors.length},setNumberOfColors:function(e){for(;a.colors.length<e;)a.colors.push(O);a.colors.length=e},getColor:function(e){return this.isValidIndex(e)?a.colors[e]:O},getColorRepeating:function(e){var t=a.colors.length;return e=t?e%t:0,this.getColor(e)},setColor:function(e,t){this.isValidIndex(e)&&(a.colors[e]=t)},addColor:function(e){a.colors.push(e)},insertColor:function(e,t){this.isValidIndex(e)&&a.colors.splice(e,1,t)},removeColor:function(e){this.isValidIndex(e)&&a.colors.splice(e,1)},clearColors:function(){a.colors=[]},buildLookupTable:function(e){if(e){var t=a.colors.length;e.setNumberOfTableValues(t);for(var r=0;r<t;r++)e.setTableValue(r,a.colors[r])}},createLookupTable:function(){var e=new V;return this.buildLookupTable(e),e},isValidIndex:function(e){return 0<=e&&e<a.colors.length}}}var G={getColormap:F,getColormapsList:function(){var r=[];return Object.keys(U).forEach(function(e){if(U.hasOwnProperty(e)){var t=U[e];r.push({id:e,name:t.name})}}),r.sort(function(e,t){var r=e.name.toLowerCase(),a=t.name.toLowerCase();return r===a?0:r<a?-1:1}),r},LookupTable:V};function z(e,t){if(e.color&&!e.falseColor)throw new Error("Color transforms are not implemented yet");var r,a,n=e.minPixelValue,i=0,o=0,l=e.width*e.height,s=e.origPixelData||e.getPixelData(),d=new Uint8Array(4*l);if(e.color=!0,e.falseColor=!0,e.origPixelData=s,t instanceof G.LookupTable)for(t.build();o<l;)r=s[o++],a=t.mapValue(r),d[i++]=a[0],d[i++]=a[1],d[i++]=a[2],d[i++]=a[3];else if(n<0)for(;o<l;)r=s[o++],d[i++]=t[r+-n][0],d[i++]=t[r+-n][1],d[i++]=t[r+-n][2],d[i++]=t[r+-n][3];else for(;o<l;)r=s[o++],d[i++]=t[r][0],d[i++]=t[r][1],d[i++]=t[r][2],d[i++]=t[r][3];e.rgba=!0,e.cachedLut=void 0,e.render=void 0,e.slope=1,e.intercept=0,e.minPixelValue=0,e.maxPixelValue=255,e.windowWidth=255,e.windowCenter=128,e.getPixelData=function(){return d}}function k(e){return!(!e.restore||"function"!=typeof e.restore)&&(e.restore(),!0)}function W(e,t){if(e.color&&!e.falseColor)throw new Error("Color transforms are not implemented yet");var r;(r=t)&&"string"==typeof r&&(r=F(r));var a=(t=r).getId();if(e.colormapId===a)return!1;if(k(e),a){var n=e.minPixelValue||0,i=e.maxPixelValue||255;e.restore=function(t){if(t.restore)return t.restore;var r=t.color,a=t.rgba,n=t.cachedLut,i=t.slope,o=t.windowWidth,l=t.windowCenter,s=t.minPixelValue,d=t.maxPixelValue;return function(){if(t.color=r,t.rgba=a,t.cachedLut=n,t.slope=i,t.windowWidth=o,t.windowCenter=l,t.minPixelValue=s,t.maxPixelValue=d,t.origPixelData){var e=t.origPixelData;t.getPixelData=function(){return e}}t.origPixelData=void 0,t.colormapId=void 0,t.falseColor=void 0}}(e);var o=t.createLookupTable();o.setTableRange(n,i),z(e,o);var l=function(e){for(var t,r=Number.MAX_VALUE,a=Number.MIN_VALUE,n=e.length,i=0;i<n;i++)r=r<(t=e[i])?r:t,a=t<a?a:t;return{minPixelValue:r,maxPixelValue:a}}(e.getPixelData());e.minPixelValue=l.minPixelValue,e.maxPixelValue=l.maxPixelValue,e.windowWidth=255,e.windowCenter=128,e.colormapId=a}return!0}function j(e,t){return W(T(e).image,t)}function H(e,t){var r=T(e);return!1===r.data.hasOwnProperty(t)&&(r.data[t]={}),r.data[t]}function X(e,t){delete T(e).data[t]}var Y=1073741824,q=0,K={},Z=[];function J(){if(!(q<=Y)){for(Z.sort(function(e,t){return e.timeStamp>t.timeStamp?-1:e.timeStamp<t.timeStamp?1:0});Y<q;){var e=Z[Z.length-1].imageId;ee(e),D(o,C.IMAGE_CACHE_PROMISE_REMOVED,{imageId:e})}var t=te();D(o,C.IMAGE_CACHE_FULL,t)}}function Q(t,e){if(void 0===t)throw new Error("putImageLoadObject: imageId must not be undefined");if(void 0===e.promise)throw new Error("putImageLoadObject: imageLoadObject.promise must not be undefined");if(!0===K.hasOwnProperty(t))throw new Error("putImageLoadObject: imageId already in cache");if(e.cancelFn&&"function"!=typeof e.cancelFn)throw new Error("putImageLoadObject: imageLoadObject.cancelFn must be a function");var r={loaded:!1,imageId:t,sharedCacheKey:void 0,imageLoadObject:e,timeStamp:Date.now(),sizeInBytes:0};K[t]=r,Z.push(r),e.promise.then(function(e){if(-1!==Z.indexOf(r)){if(r.loaded=!0,void 0===(r.image=e).sizeInBytes)throw new Error("putImageLoadObject: image.sizeInBytes must not be undefined");if(void 0===e.sizeInBytes.toFixed)throw new Error("putImageLoadObject: image.sizeInBytes is not a number");r.sizeInBytes=e.sizeInBytes,q+=r.sizeInBytes;var t={action:"addImage",image:r};D(o,C.IMAGE_CACHE_CHANGED,t),r.sharedCacheKey=e.sharedCacheKey,J()}},function(){var e=K[t];Z.splice(Z.indexOf(e),1),delete K[t]})}function $(e){if(void 0===e)throw new Error("getImageLoadObject: imageId must not be undefined");var t=K[e];if(void 0!==t)return t.timeStamp=Date.now(),t.imageLoadObject}function ee(e){if(void 0===e)throw new Error("removeImageLoadObject: imageId must not be undefined");var t=K[e];if(void 0===t)throw new Error("removeImageLoadObject: imageId was not present in imageCache");Z.splice(Z.indexOf(t),1),q-=t.sizeInBytes;var r,a={action:"deleteImage",image:t};D(o,C.IMAGE_CACHE_CHANGED,a),(r=t.imageLoadObject).promise.then(function(){r.decache&&r.decache()},function(){r.decache&&r.decache()}),delete K[e]}function te(){return{maximumSizeInBytes:Y,cacheSizeInBytes:q,numberOfImagesCached:Z.length}}var re,ae={imageCache:K,cachedImages:Z,setMaximumSizeBytes:function(e){if(void 0===e)throw new Error("setMaximumSizeBytes: parameter numBytes must not be undefined");if(void 0===e.toFixed)throw new Error("setMaximumSizeBytes: parameter numBytes must be a number");Y=e,D(o,C.IMAGE_CACHE_MAXIMUM_SIZE_CHANGED),J()},putImageLoadObject:Q,getImageLoadObject:$,removeImageLoadObject:ee,getCacheInfo:te,purgeCache:function(){for(;0<Z.length;)ee(Z[0].imageId)},changeImageIdCacheSize:function(e,a){var n=K[e];n&&n.imageLoadObject.promise.then(function(e){var t=a-e.sizeInBytes;e.sizeInBytes=a,n.sizeInBytes=a,q+=t;var r={action:"changeImageSize",image:e};D(o,C.IMAGE_CACHE_CHANGED,r)})}},ne={};function ie(r,e){var t=r.indexOf(":"),a=r.substring(0,t),n=ne[a];if(null==n){if(void 0!==re)return re(r);throw new Error("loadImageFromImageLoader: no image loader for imageId")}var i=n(r,e);return i.promise.then(function(e){D(o,C.IMAGE_LOADED,{image:e})},function(e){var t={imageId:r,error:e};D(o,C.IMAGE_LOAD_FAILED,t)}),i}function oe(e,t){if(void 0===e)throw new Error("loadImage: parameter imageId must not be undefined");var r=$(e);return void 0!==r?r.promise:ie(e,t).promise}function le(e,t){if(void 0===e)throw new Error("loadAndCacheImage: parameter imageId must not be undefined");var r=$(e);return void 0!==r||Q(e,r=ie(e,t)),r.promise}function se(e,t){ne[e]=t}function de(e){var t=re;return re=e,t}function ue(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}var me=function(){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),this.reset()}var e,r,a;return e=t,(r=[{key:"reset",value:function(){this.m=[1,0,0,1,0,0]}},{key:"clone",value:function(){var e=new t;return e.m[0]=this.m[0],e.m[1]=this.m[1],e.m[2]=this.m[2],e.m[3]=this.m[3],e.m[4]=this.m[4],e.m[5]=this.m[5],e}},{key:"multiply",value:function(e){var t=this.m[0]*e.m[0]+this.m[2]*e.m[1],r=this.m[1]*e.m[0]+this.m[3]*e.m[1],a=this.m[0]*e.m[2]+this.m[2]*e.m[3],n=this.m[1]*e.m[2]+this.m[3]*e.m[3],i=this.m[0]*e.m[4]+this.m[2]*e.m[5]+this.m[4],o=this.m[1]*e.m[4]+this.m[3]*e.m[5]+this.m[5];this.m[0]=t,this.m[1]=r,this.m[2]=a,this.m[3]=n,this.m[4]=i,this.m[5]=o}},{key:"invert",value:function(){var e=1/(this.m[0]*this.m[3]-this.m[1]*this.m[2]),t=this.m[3]*e,r=-this.m[1]*e,a=-this.m[2]*e,n=this.m[0]*e,i=e*(this.m[2]*this.m[5]-this.m[3]*this.m[4]),o=e*(this.m[1]*this.m[4]-this.m[0]*this.m[5]);this.m[0]=t,this.m[1]=r,this.m[2]=a,this.m[3]=n,this.m[4]=i,this.m[5]=o}},{key:"rotate",value:function(e){var t=Math.cos(e),r=Math.sin(e),a=this.m[0]*t+this.m[2]*r,n=this.m[1]*t+this.m[3]*r,i=this.m[0]*-r+this.m[2]*t,o=this.m[1]*-r+this.m[3]*t;this.m[0]=a,this.m[1]=n,this.m[2]=i,this.m[3]=o}},{key:"translate",value:function(e,t){this.m[4]+=this.m[0]*e+this.m[2]*t,this.m[5]+=this.m[1]*e+this.m[3]*t}},{key:"scale",value:function(e,t){this.m[0]*=e,this.m[1]*=e,this.m[2]*=t,this.m[3]*=t}},{key:"transformPoint",value:function(e,t){var r=e,a=t;return{x:e=r*this.m[0]+a*this.m[2]+this.m[4],y:t=r*this.m[1]+a*this.m[3]+this.m[5]}}}])&&ue(e.prototype,r),a&&ue(e,a),t}(),ce=function(e,t){var r=new me;r.translate(e.canvas.width/2,e.canvas.height/2);var a=e.viewport.rotation;0!==a&&r.rotate(a*Math.PI/180);var n=e.viewport.scale,i=e.viewport.scale,o=e.viewport.displayedArea.brhc.x-(e.viewport.displayedArea.tlhc.x-1),l=e.viewport.displayedArea.brhc.y-(e.viewport.displayedArea.tlhc.y-1);if("NONE"===e.viewport.displayedArea.presentationSizeMode)e.image.rowPixelSpacing<e.image.columnPixelSpacing?n*=e.image.columnPixelSpacing/e.image.rowPixelSpacing:e.image.columnPixelSpacing<e.image.rowPixelSpacing&&(i*=e.image.rowPixelSpacing/e.image.columnPixelSpacing);else if(n=e.viewport.displayedArea.columnPixelSpacing,i=e.viewport.displayedArea.rowPixelSpacing,"SCALE TO FIT"===e.viewport.displayedArea.presentationSizeMode){var s=e.canvas.height/(l*i),d=e.canvas.width/(o*n);n=i=Math.min(d,s),e.viewport.displayedArea.rowPixelSpacing<e.viewport.displayedArea.columnPixelSpacing?n*=e.viewport.displayedArea.columnPixelSpacing/e.viewport.displayedArea.rowPixelSpacing:e.viewport.displayedArea.columnPixelSpacing<e.viewport.displayedArea.rowPixelSpacing&&(i*=e.viewport.displayedArea.rowPixelSpacing/e.viewport.displayedArea.columnPixelSpacing)}return r.scale(n,i),0!==a&&r.rotate(-a*Math.PI/180),r.translate(e.viewport.translation.x,e.viewport.translation.y),0!==a&&r.rotate(a*Math.PI/180),void 0!==t&&r.scale(t,t),e.viewport.hflip&&r.scale(-1,1),e.viewport.vflip&&r.scale(1,-1),r.translate(-o/2,-l/2),r},ve=function(e){return ce(e)},ge=function(e,t){var r=T(e),a=ve(r);return a.invert(),a.transformPoint(t.x,t.y)},fe=function(e){if(void 0===e)throw new Error("disable: element must not be undefined");for(var t=s(),r=0;r<t.length;r++)if(t[r].element===e){var a={element:e};D(e,C.ELEMENT_DISABLED,a),D(o,C.ELEMENT_DISABLED,a),t[r].element.removeChild(t[r].canvas),t[r].canvas=void 0,t.splice(r,1);break}},he=function(){return window.performance?performance.now():Date.now()},pe=function(e,t,r){if(void 0===e)throw new Error("displayImage: parameter element must not be undefined");if(void 0===t)throw new Error("displayImage: parameter image must not be undefined");var a,n=T(e),i=n.image;if(n.image=t,n.layers&&n.layers.length&&P(e,t),void 0===n.viewport&&(n.viewport=g(n.canvas,t)),r)for(var o in r)null!==r[o]&&(n.viewport[o]=r[o]);void 0!==n.lastImageTimeStamp&&(a=(1e3/(he()-n.lastImageTimeStamp)).toFixed());n.lastImageTimeStamp=he();var l={viewport:n.viewport,element:n.element,image:n.image,oldImage:i,enabledElement:n,frameRate:a};D(n.element,C.NEW_IMAGE,l),A(e)},we=function(e){var t=T(e);if(void 0===t.image)throw new Error("draw: image has not been loaded yet");f(t)},be=function(){for(var e=s(),t=0;t<e.length;t++){var r=e[t];!0===r.invalid&&f(r,!0)}},ye=function(e){var t=T(e),r=t.image;t.viewport.scale=v(t.canvas,r,t.viewport.rotation).scaleFactor,t.viewport.translation.x=0,t.viewport.translation.y=0,A(e)};var xe=function(e,t){var r,a,n=T(e),i=n.canvas.width,o=n.canvas.height;r=e,(a=n.canvas).width!==r.clientWidth&&(a.width=r.clientWidth,a.style.width="".concat(r.clientWidth,"px")),a.height!==r.clientHeight&&(a.height=r.clientHeight,a.style.height="".concat(r.clientHeight,"px"));var l,s,d,u,m,c,v,g,f,h,p,w,b,y,x,E,I={element:e};(D(e,C.ELEMENT_RESIZED,I),void 0!==n.image)&&(t||(f=i,h=o,p=(g=n).viewport.scale,w=L(g.image,g.viewport.rotation),b=Math.round(w.width*p),y=Math.round(w.height*p),x=g.viewport.translation.x,E=g.viewport.translation.y,b===f&&y<=h||b<=f&&y===h&&0===x&&0===E)?ye(e):(s=i,d=o,u=(l=n).viewport.scale,m=l.canvas.width/s,c=l.canvas.height/d,v=Math.sqrt(m*c),l.viewport.scale=v*u,A(e)))},Ee=function(e,t,r){var a=he(),n=e.getPixelData();e.stats.lastGetPixelDataTime=he()-a;var i=n.length,o=e.minPixelValue,l=3,s=0;if(a=he(),n instanceof Int16Array)if(o<0)for(;s<i;)r[l]=t[n[s++]+-o],l+=4;else for(;s<i;)r[l]=t[n[s++]],l+=4;else if(n instanceof Uint16Array)for(;s<i;)r[l]=t[n[s++]],l+=4;else if(o<0)for(;s<i;)r[l]=t[n[s++]+-o],l+=4;else for(;s<i;)r[l]=t[n[s++]],l+=4;e.stats.lastStoredPixelDataToCanvasImageDataTime=he()-a},Ie=function(e,t,r){var a=he(),n=e.getPixelData();e.stats.lastGetPixelDataTime=he()-a;var i,o=n.length,l=e.minPixelValue,s=0,d=0;if(a=he(),n instanceof Int16Array)if(l<0)for(;d<o;)i=t[n[d++]+-l],r[s++]=i,r[s++]=i,r[s++]=i,r[s++]=255;else for(;d<o;)i=t[n[d++]],r[s++]=i,r[s++]=i,r[s++]=i,r[s++]=255;else if(n instanceof Uint16Array)for(;d<o;)i=t[n[d++]],r[s++]=i,r[s++]=i,r[s++]=i,r[s++]=255;else if(l<0)for(;d<o;)i=t[n[d++]+-l],r[s++]=i,r[s++]=i,r[s++]=i,r[s++]=255;else for(;d<o;)i=t[n[d++]],r[s++]=i,r[s++]=i,r[s++]=i,r[s++]=255;e.stats.lastStoredPixelDataToCanvasImageDataTime=he()-a},Ce=function(e,t,r){if(void 0===e)throw new Error("setToPixelCoordinateSystem: parameter enabledElement must not be undefined");if(void 0===t)throw new Error("setToPixelCoordinateSystem: parameter context must not be undefined");var a=ce(e,r);t.setTransform(a.m[0],a.m[1],a.m[2],a.m[3],a.m[4],a.m[5])},Te={};var Le={storedPixelDataToImageData:function(e){for(var t=e.getPixelData(),r=new Uint8Array(e.width*e.height*3),a=0,n=0;n<t.length;n++){var i=Math.abs(t[n]);r[a++]=255&i,r[a++]=i>>8,r[a++]=t[n]<0?0:1}return r}};Te.frag="precision mediump float;uniform sampler2D u_image;uniform float ww;uniform float wc;uniform float slope;uniform float intercept;uniform int invert;varying vec2 v_texCoord;void main() {vec4 color = texture2D(u_image, v_texCoord);float intensity = color.r*256.0 + color.g*65536.0;if (color.b == 0.0)intensity = -intensity;intensity = intensity * slope + intercept;float center0 = wc - 0.5;float width0 = max(ww, 1.0);intensity = (intensity - center0) / width0 + 0.5;intensity = clamp(intensity, 0.0, 1.0);gl_FragColor = vec4(intensity, intensity, intensity, 1.0);if (invert == 1)gl_FragColor.rgb = 1.0 - gl_FragColor.rgb;}";var Ae={};var De={storedPixelDataToImageData:function(e){for(var t=e.getPixelData(),r=new Uint8Array(e.width*e.height*2),a=0,n=0;n<t.length;n++)r[a++]=t[n],r[a++]=t[n]<0?0:1;return r}};Ae.frag="precision mediump float;uniform sampler2D u_image;uniform float ww;uniform float wc;uniform float slope;uniform float intercept;uniform int invert;varying vec2 v_texCoord;void main() {vec4 color = texture2D(u_image, v_texCoord);float intensity = color.r*256.;if (color.a == 0.0)intensity = -intensity;intensity = intensity * slope + intercept;float center0 = wc - 0.5;float width0 = max(ww, 1.0);intensity = (intensity - center0) / width0 + 0.5;intensity = clamp(intensity, 0.0, 1.0);gl_FragColor = vec4(intensity, intensity, intensity, 1.0);if (invert == 1)gl_FragColor.rgb = 1.0 - gl_FragColor.rgb;}";var Pe={};var Se={storedPixelDataToImageData:function(e){var t=e.minPixelValue,r=0,a=0,n=e.width*e.height*4,i=e.width*e.height*3,o=e.getPixelData(),l=new Uint8Array(i);if(t<0)for(;a<n;)l[r++]=o[a++]+-t,l[r++]=o[a++]+-t,l[r++]=o[a++]+-t,a+=1;else for(;a<n;)l[r++]=o[a++],l[r++]=o[a++],l[r++]=o[a++],a+=1;return l}};Pe.frag="precision mediump float;uniform sampler2D u_image;uniform float ww;uniform float wc;uniform float slope;uniform float intercept;uniform float minPixelValue;uniform int invert;varying vec2 v_texCoord;void main() {vec3 color = texture2D(u_image, v_texCoord).xyz;color = color * 256.0 * slope + intercept;float center0 = wc - 0.5 - minPixelValue;float width0 = max(ww, 1.0);color = (color - center0) / width0 + 0.5;gl_FragColor = vec4(color, 1);if (invert == 1)gl_FragColor.rgb = 1. - gl_FragColor.rgb;}";var Re={};var _e={storedPixelDataToImageData:function(e){for(var t=e.getPixelData(),r=new Uint8Array(e.width*e.height*2),a=0,n=0;n<t.length;n++){var i=t[n];r[a++]=255&i,r[a++]=i>>8}return r}};Re.frag="precision mediump float;uniform sampler2D u_image;uniform float ww;uniform float wc;uniform float slope;uniform float intercept;uniform int invert;varying vec2 v_texCoord;void main() {vec4 color = texture2D(u_image, v_texCoord);float intensity = color.r*256.0 + color.a*65536.0;intensity = intensity * slope + intercept;float center0 = wc - 0.5;float width0 = max(ww, 1.0);intensity = (intensity - center0) / width0 + 0.5;intensity = clamp(intensity, 0.0, 1.0);gl_FragColor = vec4(intensity, intensity, intensity, 1.0);if (invert == 1)gl_FragColor.rgb = 1.0 - gl_FragColor.rgb;}";var Me={};var Ve={storedPixelDataToImageData:function(e){return e.getPixelData()}};Me.frag="precision mediump float;uniform sampler2D u_image;uniform float ww;uniform float wc;uniform float slope;uniform float intercept;uniform int invert;varying vec2 v_texCoord;void main() {vec4 color = texture2D(u_image, v_texCoord);float intensity = color.r*256.0;intensity = intensity * slope + intercept;float center0 = wc - 0.5;float width0 = max(ww, 1.0);intensity = (intensity - center0) / width0 + 0.5;intensity = clamp(intensity, 0.0, 1.0);gl_FragColor = vec4(intensity, intensity, intensity, 1.0);if (invert == 1)gl_FragColor.rgb = 1.0 - gl_FragColor.rgb;}";var Oe={int16:Te,int8:Ae,rgb:Pe,uint16:Re,uint8:Me},Ue={int16:Le,int8:De,rgb:Se,uint16:_e,uint8:Ve},Ne="attribute vec2 a_position;attribute vec2 a_texCoord;uniform vec2 u_resolution;varying vec2 v_texCoord;void main() {vec2 zeroToOne = a_position / u_resolution;vec2 zeroToTwo = zeroToOne * 2.0;vec2 clipSpace = zeroToTwo - 1.0;gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1);v_texCoord = a_texCoord;}",Be={},Fe=[],Ge=268435456,ze=0;function ke(){if(!(ze<=Ge)){for(Fe.sort(function(e,t){return e.timeStamp>t.timeStamp?-1:e.timeStamp<t.timeStamp?1:0});Ge<ze;){var e=Fe[Fe.length-1];ze-=e.sizeInBytes,delete Be[e.imageId],Fe.pop(),D(o,C.WEBGL_TEXTURE_REMOVED,{imageId:e.imageId})}var t={maximumSizeInBytes:Ge,cacheSizeInBytes:ze,numberOfImagesCached:Fe.length};D(o,C.WEBGL_TEXTURE_CACHE_FULL,t)}}var We={purgeCache:function(){for(;0<Fe.length;){var e=Fe.pop();delete Be[e.imageId]}ze=0},getImageTexture:function(e){if(void 0===e)throw new Error("getImageTexture: imageId must not be undefined");var t=Be[e];if(void 0!==t)return t.timeStamp=new Date,t.imageTexture},putImageTexture:function(e,t){var r=e.imageId;if(void 0===e)throw new Error("putImageTexture: image must not be undefined");if(void 0===r)throw new Error("putImageTexture: imageId must not be undefined");if(void 0===t)throw new Error("putImageTexture: imageTexture must not be undefined");if(!0===Object.prototype.hasOwnProperty.call(Be,r))throw new Error("putImageTexture: imageId already in cache");var a={imageId:r,imageTexture:t,timeStamp:new Date,sizeInBytes:t.sizeInBytes};if(Be[r]=a,Fe.push(a),void 0===t.sizeInBytes)throw new Error("putImageTexture: imageTexture.sizeInBytes must not be undefined");if(void 0===t.sizeInBytes.toFixed)throw new Error("putImageTexture: imageTexture.sizeInBytes is not a number");ze+=a.sizeInBytes,ke()},removeImageTexture:function(e){if(void 0===e)throw new Error("removeImageTexture: imageId must not be undefined");var t=Be[e];if(void 0===t)throw new Error("removeImageTexture: imageId must not be undefined");return Fe.splice(Fe.indexOf(t),1),ze-=t.sizeInBytes,delete Be[e],t.imageTexture},setMaximumSizeBytes:function(e){if(void 0===e)throw new Error("setMaximumSizeBytes: parameter numBytes must not be undefined");if(void 0===e.toFixed)throw new Error("setMaximumSizeBytes: parameter numBytes must be a number");Ge=e,ke()}};function je(e,t,r){var a=e.createShader(r);if(e.shaderSource(a,t),e.compileShader(a),!e.getShaderParameter(a,e.COMPILE_STATUS)&&!e.isContextLost()){var n=e.getShaderInfoLog(a);console.error("Could not compile shader:\n".concat(n))}return a}var He,Xe,Ye,qe=function(e,t,r){return function(e,t,r){var a=e.createProgram();if(e.attachShader(a,t),e.attachShader(a,r),e.linkProgram(a),!e.getProgramParameter(a,e.LINK_STATUS)&&!e.isContextLost()){var n=e.getProgramInfoLog(a);console.error("WebGL program filed to link:\n".concat(n))}return a}(e,je(e,t,e.VERTEX_SHADER),je(e,r,e.FRAGMENT_SHADER))},Ke=document.createElement("canvas"),Ze=!1;function Je(){!0!==Ze&&function(e){He=null;try{var t={preserveDrawingBuffer:!0};He=e.getContext("webgl",t)||e.getContext("experimental-webgl",t),e.removeEventListener("webglcontextlost",Qe,!1),e.addEventListener("webglcontextlost",Qe,!1),e.removeEventListener("webglcontextrestored",$e,!1),e.addEventListener("webglcontextrestored",$e,!1)}catch(e){throw new Error("Error creating WebGL context")}He||(console.error("Unable to initialize WebGL. Your browser may not support it."),He=null);return He}(Ke)&&(Ye=He.createBuffer(),He.bindBuffer(He.ARRAY_BUFFER,Ye),He.bufferData(He.ARRAY_BUFFER,new Float32Array([1,1,0,1,1,0,0,0]),He.STATIC_DRAW),Xe=He.createBuffer(),He.bindBuffer(He.ARRAY_BUFFER,Xe),He.bufferData(He.ARRAY_BUFFER,new Float32Array([1,1,0,1,1,0,0,0]),He.STATIC_DRAW),function(){for(var e in Oe){var t=Oe[e];t.attributes={},t.uniforms={},t.vert=Ne,t.program=qe(He,t.vert,t.frag),t.attributes.texCoordLocation=He.getAttribLocation(t.program,"a_texCoord"),He.enableVertexAttribArray(t.attributes.texCoordLocation),t.attributes.positionLocation=He.getAttribLocation(t.program,"a_position"),He.enableVertexAttribArray(t.attributes.positionLocation),t.uniforms.resolutionLocation=He.getUniformLocation(t.program,"u_resolution")}}(),Ze=!0)}function Qe(e){e.preventDefault(),console.warn("WebGL Context Lost!")}function $e(e){e.preventDefault(),Ze=!1,We.purgeCache(),Je()}function et(e){if(e.color)return"rgb";var t=e.getPixelData();return t instanceof Int16Array?"int16":t instanceof Uint16Array?"uint16":t instanceof Int8Array?"int8":"uint8"}function tt(e){var t=We.getImageTexture(e.imageId);return t||(t=function(e){var t={uint8:He.LUMINANCE,int8:He.LUMINANCE_ALPHA,uint16:He.LUMINANCE_ALPHA,int16:He.RGB,rgb:He.RGB},r=et(e),a=t[r],n=He.createTexture();He.bindTexture(He.TEXTURE_2D,n),He.texParameteri(He.TEXTURE_2D,He.TEXTURE_MIN_FILTER,He.NEAREST),He.texParameteri(He.TEXTURE_2D,He.TEXTURE_MAG_FILTER,He.NEAREST),He.texParameteri(He.TEXTURE_2D,He.TEXTURE_WRAP_S,He.CLAMP_TO_EDGE),He.texParameteri(He.TEXTURE_2D,He.TEXTURE_WRAP_T,He.CLAMP_TO_EDGE),He.pixelStorei(He.UNPACK_ALIGNMENT,1);var i=Ue[r].storedPixelDataToImageData(e,e.width,e.height);return He.texImage2D(He.TEXTURE_2D,0,a,e.width,e.height,0,a,He.UNSIGNED_BYTE,i),{texture:n,sizeInBytes:e.width*e.height*{int8:1,uint16:2,int16:3,rgb:3}[r]}}(e),We.putImageTexture(e,t)),t.texture}function rt(e,t,r,a,n){for(var i in He.clearColor(1,0,0,1),He.viewport(0,0,a,n),He.clear(He.COLOR_BUFFER_BIT|He.DEPTH_BUFFER_BIT),He.useProgram(e.program),He.bindBuffer(He.ARRAY_BUFFER,Xe),He.vertexAttribPointer(e.attributes.texCoordLocation,2,He.FLOAT,!1,0,0),He.bindBuffer(He.ARRAY_BUFFER,Ye),He.vertexAttribPointer(e.attributes.positionLocation,2,He.FLOAT,!1,0,0),t){var o=He.getUniformLocation(e.program,i);if(o){var l=t[i],s=l.type,d=l.value;"i"===s?He.uniform1i(o,d):"f"===s?He.uniform1f(o,d):"2f"===s&&He.uniform2f(o,d[0],d[1])}}var u,m,c;m=a,c=n,(u=He).bufferData(u.ARRAY_BUFFER,new Float32Array([m,c,0,c,m,0,0,0]),u.STATIC_DRAW),He.activeTexture(He.TEXTURE0),He.bindTexture(He.TEXTURE_2D,r),He.drawArrays(He.TRIANGLE_STRIP,0,4)}var at={createProgramFromString:qe,renderer:{render:function(e){var t=e.image;Ke.width=t.width,Ke.height=t.height;var r,a=e.viewport,n=(r=et(t),Oe.hasOwnProperty(r)?Oe[r]:Oe.rgb),i=tt(t);return rt(n,{u_resolution:{type:"2f",value:[t.width,t.height]},wc:{type:"f",value:a.voi.windowCenter},ww:{type:"f",value:a.voi.windowWidth},slope:{type:"f",value:t.slope},intercept:{type:"f",value:t.intercept},minPixelValue:{type:"f",value:t.minPixelValue},invert:{type:"i",value:a.invert?1:0}},i,t.width,t.height),Ke},initRenderer:Je,getRenderCanvas:function(){return Ke},isWebGLAvailable:function(){var e={failIfMajorPerformanceCaveat:!0};try{var t=document.createElement("canvas");return Boolean(window.WebGLRenderingContext)&&(t.getContext("webgl",e)||t.getContext("experimental-webgl",e))}catch(e){return!1}}},textureCache:We};Object.defineProperty(at,"isWebGLInitialized",{enumerable:!0,configurable:!1,get:function(){return Ze}});var nt=at;function it(e,t){if(!((r=e).voiLUT&&r.voiLUT.lut&&0<r.voiLUT.lut.length||void 0!==r.voi.windowWidth&&void 0!==r.voi.windowCenter)){var r,a=t.maxPixelValue*t.slope+t.intercept,n=t.minPixelValue*t.slope+t.intercept,i=a-n,o=(a+n)/2;void 0===e.voi?e.voi={windowWidth:i,windowCenter:o}:(e.voi.windowWidth=i,e.voi.windowCenter=o)}}var ot=function(e,t){return!e&&!t||!(!e||!t)&&e.id===t.id};var lt=function(e,t,r){return r?(n=(a=r).lut[0],i=a.lut[a.lut.length-1],o=a.firstValueMapped+a.lut.length,function(e){return e<a.firstValueMapped?n:o<=e?i:a.lut[e]}):(l=e,s=t,function(e){return e*l+s});var a,n,i,o,l,s};function st(e){return function(e){if(Array.isArray(e)){for(var t=0,r=new Array(e.length);t<e.length;t++)r[t]=e[t];return r}}(e)||function(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}var dt=function(e,t,r){return r?(a=r,n=Math.max.apply(Math,st(a.lut)).toString(2).length-8,i=a.lut[0]>>n,o=a.lut[a.lut.length-1]>>n,l=a.firstValueMapped+a.lut.length-1,function(e){return e<a.firstValueMapped?i:l<=e?o:a.lut[e-a.firstValueMapped]>>n}):(s=e,d=t,function(e){return 255*((e-d)/s+.5)});var a,n,i,o,l,s,d},ut=function(e,t,r,a,n,i){var o=e.maxPixelValue,l=e.minPixelValue,s=Math.min(l,0);if(void 0===e.cachedLut){var d=o-s+1;e.cachedLut={},e.cachedLut.lutArray=new Uint8ClampedArray(d)}var u=e.cachedLut.lutArray,m=lt(e.slope,e.intercept,n),c=dt(t,r,i);if(!0===a)for(var v=l;v<=o;v++)u[v+-s]=255-c(m(v));else for(var g=l;g<=o;g++)u[g+-s]=c(m(g));return u},mt=function(e,t,r){return void 0!==e.cachedLut&&e.cachedLut.windowCenter===t.voi.windowCenter&&e.cachedLut.windowWidth===t.voi.windowWidth&&ot(e.cachedLut.modalityLUT,t.modalityLUT)&&ot(e.cachedLut.voiLUT,t.voiLUT)&&e.cachedLut.invert===t.invert&&!0!==r||(it(t,e),ut(e,t.voi.windowWidth,t.voi.windowCenter,t.invert,t.modalityLUT,t.voiLUT),e.cachedLut.windowWidth=t.voi.windowWidth,e.cachedLut.windowCenter=t.voi.windowCenter,e.cachedLut.invert=t.invert,e.cachedLut.voiLUT=t.voiLUT,e.cachedLut.modalityLUT=t.modalityLUT),e.cachedLut.lutArray},ct=function(e,t){var r=e.renderingTools.lastRenderedImageId,a=e.renderingTools.lastRenderedViewport;return t.imageId!==r||!a||a.windowCenter!==e.viewport.voi.windowCenter||a.windowWidth!==e.viewport.voi.windowWidth||a.invert!==e.viewport.invert||a.rotation!==e.viewport.rotation||a.hflip!==e.viewport.hflip||a.vflip!==e.viewport.vflip||a.modalityLUT!==e.viewport.modalityLUT||a.voiLUT!==e.viewport.voiLUT||a.colormap!==e.viewport.colormap},vt=function(e,t){var r=e.renderingTools.renderCanvas;r.width=t.width,r.height=t.height;var a=r.getContext("2d");a.fillStyle="white",a.fillRect(0,0,r.width,r.height);var n=a.getImageData(0,0,t.width,t.height);e.renderingTools.renderCanvasContext=a,e.renderingTools.renderCanvasData=n},gt=function(e){var t=e.image.imageId,r=e.viewport,a=e.image.color;return e.renderingTools.lastRenderedImageId=t,e.renderingTools.lastRenderedIsColor=a,e.renderingTools.lastRenderedViewport={windowCenter:r.voi.windowCenter,windowWidth:r.voi.windowWidth,invert:r.invert,rotation:r.rotation,hflip:r.hflip,vflip:r.vflip,modalityLUT:r.modalityLUT,voiLUT:r.voiLUT,colormap:r.colormap},e.renderingTools};function ft(e,t,r){var a=!(3<arguments.length&&void 0!==arguments[3])||arguments[3],n=!0===e.renderingTools.lastRenderedIsColor;e.renderingTools.renderCanvas&&!n||(e.renderingTools.renderCanvas=document.createElement("canvas"),vt(e,t));var i=e.renderingTools.renderCanvas;if(!1===ct(e,t)&&!0!==r)return i;i.width===t.width&&i.height===t.height||vt(e,t);var o=he(),l=mt(t,e.viewport,r);t.stats=t.stats||{},t.stats.lastLutGenerateTime=he()-o;var s=e.renderingTools.renderCanvasData,d=e.renderingTools.renderCanvasContext;return a?Ee(t,l,s.data):Ie(t,l,s.data),o=he(),d.putImageData(s,0,0),t.stats.lastPutImageDataTime=he()-o,i}function ht(e,t){if(void 0===e)throw new Error("drawImage: enabledElement parameter must not be undefined");var r=e.image;if(void 0===r)throw new Error("drawImage: image must be loaded before it can be drawn");var a,n=e.canvas.getContext("2d");n.setTransform(1,0,0,1,0,0),n.fillStyle="black",n.fillRect(0,0,e.canvas.width,e.canvas.height),n.imageSmoothingEnabled=!e.viewport.pixelReplication,n.mozImageSmoothingEnabled=n.imageSmoothingEnabled,Ce(e,n),a=e.options&&e.options.renderer&&"webgl"===e.options.renderer.toLowerCase()?nt.renderer.render(e):ft(e,r,t);var i=e.viewport.displayedArea.tlhc.x-1,o=e.viewport.displayedArea.tlhc.y-1,l=e.viewport.displayedArea.brhc.x-i,s=e.viewport.displayedArea.brhc.y-o;n.drawImage(a,i,o,l,s,0,0,l,s),e.renderingTools=gt(e)}var pt=function(e,t,r,a,n){var i=e.maxPixelValue,o=e.minPixelValue,l=Math.min(o,0);if(void 0===e.cachedLut){var s=i-l+1;e.cachedLut={},e.cachedLut.lutArray=new Uint8ClampedArray(s)}var d=e.cachedLut.lutArray,u=dt(t,r,n);if(!0===a)for(var m=o;m<=i;m++)d[m+-l]=255-u(m);else for(var c=o;c<=i;c++)d[c+-l]=u(c);return d},wt=function(e,t,r){var a=he(),n=e.getPixelData();e.stats.lastGetPixelDataTime=he()-a;var i=e.minPixelValue,o=0,l=0,s=n.length;if(a=he(),i<0)for(;l<s;)r[o++]=t[n[l++]+-i],r[o++]=t[n[l++]+-i],r[o]=t[n[l]+-i],l+=2,o+=2;else for(;l<s;)r[o++]=t[n[l++]],r[o++]=t[n[l++]],r[o]=t[n[l]],l+=2,o+=2;e.stats.lastStoredPixelDataToCanvasImageDataTime=he()-a},bt=function(e,t,r){var a=he(),n=e.getPixelData();e.stats.lastGetPixelDataTime=he()-a;var i=e.minPixelValue,o=0,l=0,s=n.length;if(a=he(),i<0)for(;l<s;)r[o++]=t[n[l++]+-i],r[o++]=t[n[l++]+-i],r[o++]=t[n[l++]+-i],r[o++]=n[l++];else for(;l<s;)r[o++]=t[n[l++]],r[o++]=t[n[l++]],r[o++]=t[n[l++]],r[o++]=n[l++];e.stats.lastStoredPixelDataToCanvasImageDataTime=he()-a};function yt(e,t,r){var a=!0===e.renderingTools.lastRenderedIsColor;e.renderingTools.renderCanvas&&a||(e.renderingTools.renderCanvas=document.createElement("canvas"));var n=e.renderingTools.renderCanvas;if(255===e.viewport.voi.windowWidth&&128===e.viewport.voi.windowCenter&&!1===e.viewport.invert&&t.getCanvas&&t.getCanvas())return t.getCanvas();if(!1===ct(e,t)&&!0!==r)return n;n.width===t.width&&n.height===t.height||vt(e,t);var i,o,l=he(),s=(i=t,o=e.viewport,void 0!==i.cachedLut&&i.cachedLut.windowCenter===o.voi.windowCenter&&i.cachedLut.windowWidth===o.voi.windowWidth&&i.cachedLut.invert===o.invert||(pt(i,o.voi.windowWidth,o.voi.windowCenter,o.invert),i.cachedLut.windowWidth=o.voi.windowWidth,i.cachedLut.windowCenter=o.voi.windowCenter,i.cachedLut.invert=o.invert),i.cachedLut.lutArray);t.stats=t.stats||{},t.stats.lastLutGenerateTime=he()-l;var d=e.renderingTools.renderCanvasData,u=e.renderingTools.renderCanvasContext;return t.rgba?bt(t,s,d.data):wt(t,s,d.data),l=he(),u.putImageData(d,0,0),t.stats.lastPutImageDataTime=he()-l,n}function xt(e,t){if(void 0===e)throw new Error("renderColorImage: enabledElement parameter must not be undefined");var r=e.image;if(void 0===r)throw new Error("renderColorImage: image must be loaded before it can be drawn");var a,n=e.canvas.getContext("2d");n.setTransform(1,0,0,1,0,0),n.fillStyle="black",n.fillRect(0,0,e.canvas.width,e.canvas.height),n.imageSmoothingEnabled=!e.viewport.pixelReplication,n.mozImageSmoothingEnabled=n.imageSmoothingEnabled,Ce(e,n),a=e.options&&e.options.renderer&&"webgl"===e.options.renderer.toLowerCase()?nt.renderer.render(e):yt(e,r,t);var i=e.viewport.displayedArea.tlhc.x-1,o=e.viewport.displayedArea.tlhc.y-1,l=e.viewport.displayedArea.brhc.x-i,s=e.viewport.displayedArea.brhc.y-o;n.drawImage(a,i,o,l,s,0,0,l,s),e.renderingTools=gt(e)}var Et=function(e,t,r,a){var n=he(),i=e.getPixelData();e.stats.lastGetPixelDataTime=he()-n;var o,l,s=i.length,d=e.minPixelValue,u=0,m=0;if(n=he(),l=r instanceof G.LookupTable?r.Table:r,d<0)for(;m<s;)o=l[t[i[m++]+-d]],a[u++]=o[0],a[u++]=o[1],a[u++]=o[2],a[u++]=o[3];else for(;m<s;)o=l[t[i[m++]]],a[u++]=o[0],a[u++]=o[1],a[u++]=o[2],a[u++]=o[3];e.stats.lastStoredPixelDataToCanvasImageDataTime=he()-n};function It(e,t,r){e.renderingTools.renderCanvas||(e.renderingTools.renderCanvas=document.createElement("canvas"));var a=e.renderingTools.renderCanvas,n=e.viewport.colormap||e.options.colormap;if(e.options.colormap&&console.warn("enabledElement.options.colormap is deprecated. Use enabledElement.viewport.colormap instead"),n&&"string"==typeof n&&(n=G.getColormap(n)),!n)throw new Error("renderPseudoColorImage: colormap not found.");var i=n.getId();if(!1===ct(e,t)&&!0!==r&&e.renderingTools.colormapId===i)return a;a.width===t.width&&a.height===t.height||vt(e,t);var o=he();e.renderingTools.colorLut&&!r&&e.renderingTools.colormapId===i||(n.setNumberOfColors(256),e.renderingTools.colorLut=n.createLookupTable(),e.renderingTools.colormapId=i);var l=mt(t,e.viewport,r);t.stats=t.stats||{},t.stats.lastLutGenerateTime=he()-o;var s=e.renderingTools.colorLut,d=e.renderingTools.renderCanvasData,u=e.renderingTools.renderCanvasContext;return Et(t,l,s,d.data),o=he(),u.putImageData(d,0,0),t.stats.lastPutImageDataTime=he()-o,a}function Ct(e,t){if(void 0===e)throw new Error("drawImage: enabledElement parameter must not be undefined");var r=e.image;if(void 0===r)throw new Error("drawImage: image must be loaded before it can be drawn");var a=e.canvas.getContext("2d");a.setTransform(1,0,0,1,0,0),a.fillStyle="black",a.fillRect(0,0,e.canvas.width,e.canvas.height),a.imageSmoothingEnabled=!e.viewport.pixelReplication,a.mozImageSmoothingEnabled=a.imageSmoothingEnabled,Ce(e,a);var n=It(e,r,t),i=e.viewport.displayedArea.tlhc.x-1,o=e.viewport.displayedArea.tlhc.y-1,l=e.viewport.displayedArea.brhc.x-i,s=e.viewport.displayedArea.brhc.y-o;a.drawImage(n,i,o,l,s,0,0,l,s),e.renderingTools=gt(e)}var Tt=function(e,t,r){var a=he(),n=e.getPixelData();e.stats.lastGetPixelDataTime=he()-a;var i,o,l=n.length,s=e.minPixelValue,d=0,u=0;if(a=he(),o=t instanceof G.LookupTable?t.Table:t,s<0)for(;u<l;)i=o[n[u++]+-s],r[d++]=i[0],r[d++]=i[1],r[d++]=i[2],r[d++]=i[3];else for(;u<l;)i=o[n[u++]],r[d++]=i[0],r[d++]=i[1],r[d++]=i[2],r[d++]=i[3];e.stats.lastStoredPixelDataToCanvasImageDataTime=he()-a};function Lt(e,t,r){e.renderingTools.renderCanvas||(e.renderingTools.renderCanvas=document.createElement("canvas"));var a=e.renderingTools.renderCanvas,n=e.viewport.colormap||e.options.colormap;if(e.options.colormap&&console.warn("enabledElement.options.colormap is deprecated. Use enabledElement.viewport.colormap instead"),n&&"string"==typeof n&&(n=G.getColormap(n)),!n)throw new Error("renderLabelMapImage: colormap not found.");var i=n.getId();if(!1===ct(e,t)&&!0!==r&&e.renderingTools.colormapId===i)return a;a.width===t.width&&a.height===t.height||vt(e,t);var o=he();e.renderingTools.colorLut&&!r&&e.renderingTools.colormapId===i||(e.renderingTools.colorLut=n.createLookupTable(),e.renderingTools.colormapId=i),t.stats=t.stats||{},t.stats.lastLutGenerateTime=he()-o;var l=e.renderingTools.colorLut,s=e.renderingTools.renderCanvasData,d=e.renderingTools.renderCanvasContext;return Tt(t,l,s.data),o=he(),d.putImageData(s,0,0),t.stats.lastPutImageDataTime=he()-o,a}function At(e,t){if(void 0===e)throw new Error("renderLabelMapImage: enabledElement parameter must not be undefined");var r=e.image;if(void 0===r)throw new Error("renderLabelMapImage: image must be loaded before it can be drawn");var a=e.canvas.getContext("2d");a.setTransform(1,0,0,1,0,0),a.fillStyle="black",a.fillRect(0,0,e.canvas.width,e.canvas.height),a.imageSmoothingEnabled=!e.viewport.pixelReplication,a.mozImageSmoothingEnabled=a.imageSmoothingEnabled,Ce(e,a);var n=Lt(e,r,t),i=e.viewport.displayedArea.tlhc.x-1,o=e.viewport.displayedArea.tlhc.y-1,l=e.viewport.displayedArea.brhc.x-i,s=e.viewport.displayedArea.brhc.y-o;a.drawImage(n,i,o,l,s,0,0,l,s),e.renderingTools=gt(e)}function Dt(e){var t=e.syncProps||{};t.originalScale=e.viewport.scale,e.syncProps=t}function Pt(e,n){e.forEach(function(e){if(e!==n&&e.viewport&&n.viewport){e.syncProps||Dt(e);var t,r,a=(r=e,(t=n).syncProps||Dt(t),r.syncProps||Dt(r),r.syncProps.originalScale/t.syncProps.originalScale);e.viewport.scale=n.viewport.scale*a,e.viewport.rotation=n.viewport.rotation,e.viewport.translation={x:n.viewport.translation.x/a,y:n.viewport.translation.y/a},e.viewport.hflip=n.viewport.hflip,e.viewport.vflip=n.viewport.vflip}})}function St(d,e,u){e.forEach(function(e,t){if(e.image){d.save(),e.canvas=d.canvas,Ce(e,d);var r=e.viewport.colormap||e.options.colormap,a=e.viewport.labelmap,n=e.invalid||u;if(r&&""!==r&&!0===a)!function(e,t){if(void 0===e)throw new Error("addLabelMapLayer: layer parameter must not be undefined");var r=e.image;if(void 0===r)throw new Error("addLabelMapLayer: image must be loaded before it can be drawn");e.canvas=Lt(e,r,t);var a=e.canvas.getContext("2d");a.imageSmoothingEnabled=!e.viewport.pixelReplication,a.mozImageSmoothingEnabled=a.imageSmoothingEnabled,e.renderingTools=gt(e)}(e,n);else if(r&&""!==r)!function(e,t){if(void 0===e)throw new Error("addPseudoColorLayer: layer parameter must not be undefined");var r=e.image;if(void 0===r)throw new Error("addPseudoColorLayer: image must be loaded before it can be drawn");e.canvas=It(e,r,t);var a=e.canvas.getContext("2d");a.imageSmoothingEnabled=!e.viewport.pixelReplication,a.mozImageSmoothingEnabled=a.imageSmoothingEnabled,e.renderingTools=gt(e)}(e,n);else if(!0===e.image.color)!function(e,t){if(void 0===e)throw new Error("addColorLayer: layer parameter must not be undefined");var r=e.image;if(void 0===r)throw new Error("addColorLayer: image must be loaded before it can be drawn");r.rgba=!0,e.canvas=yt(e,r,t);var a=e.canvas.getContext("2d");a.imageSmoothingEnabled=!e.viewport.pixelReplication,a.mozImageSmoothingEnabled=a.imageSmoothingEnabled,e.renderingTools=gt(e)}(e,n);else{!function(e,t){var r=2<arguments.length&&void 0!==arguments[2]&&arguments[2];if(void 0===e)throw new Error("addGrayscaleLayer: layer parameter must not be undefined");var a=e.image;if(void 0===a)throw new Error("addGrayscaleLayer: image must be loaded before it can be drawn");e.canvas=ft(e,a,t,r);var n=e.canvas.getContext("2d");n.imageSmoothingEnabled=!e.viewport.pixelReplication,n.mozImageSmoothingEnabled=n.imageSmoothingEnabled,e.renderingTools=gt(e)}(e,n,0===t)}e.options&&e.options.opacity?d.globalAlpha=e.options.opacity:d.globalAlpha=1,e.options&&e.options.fillStyle&&(d.fillStyle=e.options.fillStyle),d.imageSmoothingEnabled=!e.viewport.pixelReplication,d.mozImageSmoothingEnabled=d.imageSmoothingEnabled;var i=e.viewport.displayedArea.tlhc.x-1,o=e.viewport.displayedArea.tlhc.y-1,l=e.viewport.displayedArea.brhc.x-i,s=e.viewport.displayedArea.brhc.y-o;d.drawImage(e.canvas,i,o,l,s,0,0,l,s),d.restore(),e.invalid=!1}})}var Rt=function(e,t){var r=e.image,a=e.element,n=e.layers||[];if(e.canvas&&(e.image||n.length)){var i=he();if(r.stats={lastGetPixelDataTime:-1,lastStoredPixelDataToCanvasImageDataTime:-1,lastPutImageDataTime:-1,lastRenderTime:-1,lastLutGenerateTime:-1},n&&n.length)!function(e,t){var r=e.element,a=x(r),n=S(r),i=E(r),o=!e.lastSyncViewportsState&&e.syncViewports;e.lastSyncViewportsState=e.syncViewports,o&&a.forEach(function(e){e.viewport&&Dt(e)}),!0===e.syncViewports&&Pt(i,n);var l=e.canvas.getContext("2d");l.setTransform(1,0,0,1,0,0),l.fillStyle="black",l.fillRect(0,0,e.canvas.width,e.canvas.height),St(l,i,t)}(e,t);else if(r){var o=r.render;o||(o=e.viewport.colormap&&""!==e.viewport.colormap&&!0===e.image.labelmap?At:e.viewport.colormap&&""!==e.viewport.colormap?Ct:r.color?xt:ht),o(e,t)}var l=he()-i,s={viewport:e.viewport,element:a,image:r,enabledElement:e,canvasContext:e.canvas.getContext("2d"),renderTimeInMs:l};r.stats.lastRenderTime=l,e.invalid=!1,e.needsRedraw=!1,D(a,C.IMAGE_RENDERED,s)}};var _t=function(e){return window.requestAnimationFrame(e)||window.webkitRequestAnimationFrame(e)||window.mozRequestAnimationFrame(e)||window.oRequestAnimationFrame(e)||window.msRequestAnimationFrame(e)||(t=e,void window.setTimeout(t,1e3/60));var t},Mt=function(e){return nt.renderer.isWebGLAvailable()?(nt.renderer.initRenderer(),e.renderer="webgl",!0):(console.error("WebGL not available, falling back to Canvas renderer"),delete e.renderer,!1)},Vt="cornerstone-canvas";function Ot(e){var t,r,a="canvas.".concat(Vt);return e.querySelector(a)||(t=e,(r=document.createElement("canvas")).style.display="block",r.classList.add(Vt),t.appendChild(r),r)}var Ut=function(e,t){if(void 0===e)throw new Error("enable: parameter element cannot be undefined");t&&t.renderer&&"webgl"===t.renderer.toLowerCase()&&Mt(t);var r,n={element:e,canvas:Ot(e),image:void 0,invalid:!1,needsRedraw:!0,options:t,layers:[],data:{},renderingTools:{},uuid:(r=(new Date).getTime(),"undefined"!=typeof performance&&"function"==typeof performance.now&&(r+=performance.now()),"x.x.x.x.x.x.xxxx.xxx.x.x.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx".replace(/[xy]/g,function(e){var t=(r+16*Math.random())%16|0;return r=Math.floor(r/16),("x"===e?t:3&t|8).toString(16)}))};i(n),D(o,C.ELEMENT_ENABLED,n),xe(e,!0),function e(t){if(void 0!==n.canvas){var r,a={enabledElement:n,timestamp:t};D(n.element,C.PRE_RENDER,a),n.needsRedraw&&(void 0!==(r=n).image||0<r.layers.length)&&Rt(n,n.invalid),_t(e)}}()},Nt=function(e,t){var r=T(e);return g(r.canvas,t)},Bt=function(e){return T(e).image},Ft=function(e,t,r,a,n){if(void 0===e)throw new Error("getStoredPixels: parameter element must not be undefined");t=Math.round(t),r=Math.round(r);for(var i=T(e),o=[],l=0,s=i.image.getPixelData(),d=0;d<n;d++)for(var u=0;u<a;u++){var m=(d+r)*i.image.columns+(u+t);o[l++]=s[m]}return o},Gt=function(e,t,r,a,n){var i=Ft(e,t,r,a,n),o=T(e),l=lt(o.image.slope,o.image.intercept,o.viewport.modalityLUT);return i.map(l)},zt=function(e){var t=T(e).viewport;if(void 0!==t)return Object.assign({},t)},kt={drawImage:f,generateLut:ut,getDefaultViewport:g,requestAnimationFrame:_t,setDefaultViewport:m,storedPixelDataToCanvasImageData:Ee,storedPixelDataToCanvasImageDataRGBA:Ie,storedPixelDataToCanvasImageDataColorLUT:Tt,storedPixelDataToCanvasImageDataPseudocolorLUT:Et,storedColorPixelDataToCanvasImageData:wt,getTransform:ve,calculateTransform:ce,Transform:me},Wt=function(e){var t=T(e);t.invalid=!0,t.needsRedraw=!0;var r={element:e};D(e,C.INVALIDATED,r)},jt=function(e){l(e).forEach(function(e){f(e,!0)})},Ht=[];var Xt={addProvider:function(e){var t,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;for(t=0;t<Ht.length&&!(Ht[t].priority<=r);t++);Ht.splice(t,0,{priority:r,provider:e})},removeProvider:function(e){for(var t=0;t<Ht.length;t++)if(Ht[t].provider===e){Ht.splice(t,1);break}},get:function(e,t){for(var r=0;r<Ht.length;r++){var a=Ht[r].provider(e,t);if(void 0!==a)return a}}},Yt=function(e,t,r){var a=T(e);if(void 0===a.image)throw new Error("image has not been loaded yet");var n=e.getBoundingClientRect(),i={x:t-n.left-window.pageXOffset,y:r-n.top-window.pageYOffset},o=ve(a);return o.invert(),o.transformPoint(i.x,i.y)},qt=function(e,t){var r=T(e);return ve(r).transformPoint(t.x,t.y)};var Kt=function(e,t){var r=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null,a=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;if(void 0===e)throw new Error("renderToCanvas: parameter canvas cannot be undefined");a&&a.renderer&&"webgl"===a.renderer.toLowerCase()&&Mt(a);var n=g(e,t);r&&Object.assign(n,r);var i,o={element:i=e,canvas:i,image:t,invalid:!0,needsRedraw:!0,options:a,layers:[],data:{},renderingTools:{},viewport:n},l={enabledElement:o,timestamp:Date.now()};D(o.element,C.PRE_RENDER,l),Rt(o,o.invalid)};function Zt(e,t){if(void 0===e)throw new Error("renderWebImage: enabledElement parameter must not be undefined");var r=e.image;if(void 0===r)throw new Error("renderWebImage: image must be loaded before it can be drawn");if(e.viewport.voi.windowWidth===e.image.windowWidth&&e.viewport.voi.windowCenter===e.image.windowCenter&&!1===e.viewport.invert){var a=e.canvas.getContext("2d");a.setTransform(1,0,0,1,0,0),a.fillStyle="black",a.fillRect(0,0,e.canvas.width,e.canvas.height),a.imageSmoothingEnabled=!e.viewport.pixelReplication,a.mozImageSmoothingEnabled=a.imageSmoothingEnabled,Ce(e,a);var n=e.viewport.displayedArea.tlhc.x-1,i=e.viewport.displayedArea.tlhc.y-1,o=e.viewport.displayedArea.brhc.x-n,l=e.viewport.displayedArea.brhc.y-i;a.drawImage(r.getImage(),n,i,o,l,0,0,o,l)}else xt(e,t)}var Jt={colorImage:xt,grayscaleImage:ht,webImage:Zt,pseudoColorImage:Ct,labelMapImage:At,toCanvas:Kt},Qt=function(e){var t=T(e);t.viewport=g(t.canvas,t.image),A(e)},$t=function(e,t){var r=T(e);if(void 0===r.viewport&&(r.viewport=g(r.canvas)),t)for(var a in t)null!==t[a]&&(r.viewport[a]=t[a]);r.viewport.voi.windowWidth&&(r.viewport.voi.windowWidth=Math.max(t.voi.windowWidth,1e-6)),r.viewport.scale&&(r.viewport.scale=Math.max(t.scale,1e-4)),r.viewport.rotation%=360,r.viewport.rotation<0&&(r.viewport.rotation+=360),r.image&&A(e)};r.d(t,"drawImage",function(){return f}),r.d(t,"generateLut",function(){return ut}),r.d(t,"getDefaultViewport",function(){return g}),r.d(t,"setDefaultViewport",function(){return m}),r.d(t,"requestAnimationFrame",function(){return _t}),r.d(t,"storedPixelDataToCanvasImageData",function(){return Ee}),r.d(t,"storedColorPixelDataToCanvasImageData",function(){return wt}),r.d(t,"storedPixelDataToCanvasImageDataColorLUT",function(){return Tt}),r.d(t,"storedPixelDataToCanvasImageDataPseudocolorLUT",function(){return Et}),r.d(t,"internal",function(){return kt}),r.d(t,"renderLabelMapImage",function(){return At}),r.d(t,"renderPseudoColorImage",function(){return Ct}),r.d(t,"renderColorImage",function(){return xt}),r.d(t,"renderGrayscaleImage",function(){return ht}),r.d(t,"renderWebImage",function(){return Zt}),r.d(t,"renderToCanvas",function(){return Kt}),r.d(t,"canvasToPixel",function(){return ge}),r.d(t,"disable",function(){return fe}),r.d(t,"displayImage",function(){return pe}),r.d(t,"draw",function(){return we}),r.d(t,"drawInvalidated",function(){return be}),r.d(t,"enable",function(){return Ut}),r.d(t,"getElementData",function(){return H}),r.d(t,"removeElementData",function(){return X}),r.d(t,"getEnabledElement",function(){return T}),r.d(t,"addEnabledElement",function(){return i}),r.d(t,"getEnabledElementsByImageId",function(){return l}),r.d(t,"getEnabledElements",function(){return s}),r.d(t,"addLayer",function(){return w}),r.d(t,"removeLayer",function(){return b}),r.d(t,"getLayer",function(){return y}),r.d(t,"getLayers",function(){return x}),r.d(t,"getVisibleLayers",function(){return E}),r.d(t,"setActiveLayer",function(){return I}),r.d(t,"getActiveLayer",function(){return S}),r.d(t,"purgeLayers",function(){return R}),r.d(t,"setLayerImage",function(){return P}),r.d(t,"fitToWindow",function(){return ye}),r.d(t,"getDefaultViewportForImage",function(){return Nt}),r.d(t,"getImage",function(){return Bt}),r.d(t,"getPixels",function(){return Gt}),r.d(t,"getStoredPixels",function(){return Ft}),r.d(t,"getViewport",function(){return zt}),r.d(t,"loadImage",function(){return oe}),r.d(t,"loadAndCacheImage",function(){return le}),r.d(t,"registerImageLoader",function(){return se}),r.d(t,"registerUnknownImageLoader",function(){return de}),r.d(t,"invalidate",function(){return Wt}),r.d(t,"invalidateImageId",function(){return jt}),r.d(t,"pageToPixel",function(){return Yt}),r.d(t,"pixelToCanvas",function(){return qt}),r.d(t,"reset",function(){return Qt}),r.d(t,"resize",function(){return xe}),r.d(t,"setToPixelCoordinateSystem",function(){return Ce}),r.d(t,"setViewport",function(){return $t}),r.d(t,"updateImage",function(){return A}),r.d(t,"pixelDataToFalseColorData",function(){return z}),r.d(t,"rendering",function(){return Jt}),r.d(t,"imageCache",function(){return ae}),r.d(t,"metaData",function(){return Xt}),r.d(t,"webGL",function(){return nt}),r.d(t,"colors",function(){return G}),r.d(t,"convertImageToFalseColorImage",function(){return W}),r.d(t,"convertToFalseColorImage",function(){return j}),r.d(t,"restoreImage",function(){return k}),r.d(t,"EVENTS",function(){return C}),r.d(t,"events",function(){return o}),r.d(t,"triggerEvent",function(){return D});var er={drawImage:f,generateLut:ut,getDefaultViewport:g,requestAnimationFrame:_t,storedPixelDataToCanvasImageData:Ee,storedColorPixelDataToCanvasImageData:wt,storedPixelDataToCanvasImageDataColorLUT:Tt,storedPixelDataToCanvasImageDataPseudocolorLUT:Et,internal:kt,renderLabelMapImage:At,renderPseudoColorImage:Ct,renderColorImage:xt,renderGrayscaleImage:ht,renderWebImage:Zt,renderToCanvas:Kt,canvasToPixel:ge,disable:fe,displayImage:pe,draw:we,drawInvalidated:be,enable:Ut,getElementData:H,removeElementData:X,getEnabledElement:T,addEnabledElement:i,getEnabledElementsByImageId:l,getEnabledElements:s,addLayer:w,removeLayer:b,getLayer:y,getLayers:x,getVisibleLayers:E,setActiveLayer:I,getActiveLayer:S,purgeLayers:R,setLayerImage:P,fitToWindow:ye,getDefaultViewportForImage:Nt,setDefaultViewport:m,getImage:Bt,getPixels:Gt,getStoredPixels:Ft,getViewport:zt,loadImage:oe,loadAndCacheImage:le,registerImageLoader:se,registerUnknownImageLoader:de,invalidate:Wt,invalidateImageId:jt,pageToPixel:Yt,pixelToCanvas:qt,reset:Qt,resize:xe,setToPixelCoordinateSystem:Ce,setViewport:$t,updateImage:A,pixelDataToFalseColorData:z,rendering:Jt,imageCache:ae,metaData:Xt,webGL:nt,colors:G,convertImageToFalseColorImage:W,convertToFalseColorImage:j,restoreImage:k,EVENTS:C,events:o,triggerEvent:D};t.default=er}])});
//# sourceMappingURL=cornerstone.min.js.map