UNPKG

cod-dicomweb-server

Version:

A wadors server proxy that get data from a Cloud Optimized Dicom format.

14 lines 182 kB
/*! * * cod-dicomweb-server v1.3.18 * git+https://github.com/gradienthealth/cod-dicomweb-server.git * * Copyright (c) Adithyan Dinesh and project contributors. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * */ !function(A,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e=t();for(var r in e)("object"==typeof exports?exports:A)[r]=e[r]}}(self,(()=>(()=>{var A={915:function(A,t,e){ /*! dicom-parser - 1.8.12 - 2023-02-20 | (c) 2017 Chris Hafey | https://github.com/cornerstonejs/dicomParser */ A.exports=function(A){return e=[function(t,e){t.exports=A},function(A,t,e){"use strict";e.r(t),e.d(t,"isStringVr",(function(){return n})),e.d(t,"isPrivateTag",(function(){return i})),e.d(t,"parsePN",(function(){return o})),e.d(t,"parseTM",(function(){return a})),e.d(t,"parseDA",(function(){return c})),e.d(t,"explicitElementToString",(function(){return g})),e.d(t,"explicitDataSetToJS",(function(){return u})),e.d(t,"createJPEGBasicOffsetTable",(function(){return l})),e.d(t,"parseDicomDataSetExplicit",(function(){return x})),e.d(t,"parseDicomDataSetImplicit",(function(){return G})),e.d(t,"readFixedString",(function(){return Q})),e.d(t,"alloc",(function(){return N})),e.d(t,"version",(function(){return R})),e.d(t,"bigEndianByteArrayParser",(function(){return U})),e.d(t,"ByteStream",(function(){return M})),e.d(t,"sharedCopy",(function(){return P})),e.d(t,"DataSet",(function(){return y})),e.d(t,"findAndSetUNElementLength",(function(){return h})),e.d(t,"findEndOfEncapsulatedElement",(function(){return E})),e.d(t,"findItemDelimitationItemAndSetElementLength",(function(){return p})),e.d(t,"littleEndianByteArrayParser",(function(){return q})),e.d(t,"parseDicom",(function(){return T})),e.d(t,"readDicomElementExplicit",(function(){return k})),e.d(t,"readDicomElementImplicit",(function(){return v})),e.d(t,"readEncapsulatedImageFrame",(function(){return W})),e.d(t,"readEncapsulatedPixelData",(function(){return X})),e.d(t,"readEncapsulatedPixelDataFromFragments",(function(){return j})),e.d(t,"readPart10Header",(function(){return J})),e.d(t,"readSequenceItemsExplicit",(function(){return L})),e.d(t,"readSequenceItemsImplicit",(function(){return D})),e.d(t,"readSequenceItem",(function(){return w})),e.d(t,"readTag",(function(){return B}));var r={AE:!0,AS:!0,AT:!1,CS:!0,DA:!0,DS:!0,DT:!0,FL:!1,FD:!1,IS:!0,LO:!0,LT:!0,OB:!1,OD:!1,OF:!1,OW:!1,PN:!0,SH:!0,SL:!1,SQ:!1,SS:!1,ST:!0,TM:!0,UI:!0,UL:!1,UN:void 0,UR:!0,US:!1,UT:!0},n=function(A){return r[A]},i=function(A){if(A=parseInt(A[4],16),isNaN(A))throw"dicomParser.isPrivateTag: cannot parse last character of group";return A%2==1},o=function(A){if(void 0!==A)return{familyName:(A=A.split("^"))[0],givenName:A[1],middleName:A[2],prefix:A[3],suffix:A[4]}};function a(A,t){if(2<=A.length){var e=parseInt(A.substring(0,2),10),r=4<=A.length?parseInt(A.substring(2,4),10):void 0,n=6<=A.length?parseInt(A.substring(4,6),10):void 0,i=(i=8<=A.length?A.substring(7,13):void 0)?parseInt(i,10)*Math.pow(10,6-i.length):void 0;if(t&&(isNaN(e)||void 0!==r&&isNaN(r)||void 0!==n&&isNaN(n)||void 0!==i&&isNaN(i)||e<0||23<e||r&&(r<0||59<r)||n&&(n<0||59<n)||i&&(i<0||999999<i)))throw"invalid TM '".concat(A,"'");return{hours:e,minutes:r,seconds:n,fractionalSeconds:i}}if(t)throw"invalid TM '".concat(A,"'")}function s(A,t,e){return!isNaN(e)&&0<t&&t<=12&&0<A&&A<=function(A,t){switch(A){case 2:return t%4==0&&t%100||t%400==0?29:28;case 9:case 4:case 6:case 11:return 30;default:return 31}}(t,e)}function c(A,t){if(A&&8===A.length){var e=parseInt(A.substring(0,4),10),r=parseInt(A.substring(4,6),10),n=parseInt(A.substring(6,8),10);if(t&&!0!==s(n,r,e))throw"invalid DA '".concat(A,"'");return{year:e,month:r,day:n}}if(t)throw"invalid DA '".concat(A,"'")}function g(A,t){if(void 0===A||void 0===t)throw"dicomParser.explicitElementToString: missing required parameters";if(void 0===t.vr)throw"dicomParser.explicitElementToString: cannot convert implicit element to string";var e,r=t.vr,i=t.tag;function o(t,e){for(var r="",n=0;n<t;n++)0!==n&&(r+="/"),r+=e.call(A,i,n).toString();return r}if(!0===n(r))e=A.string(i);else{if("AT"===r){var a=A.uint32(i);return void 0===a?void 0:"x".concat((a=a<0?4294967295+a+1:a).toString(16).toUpperCase())}"US"===r?e=o(t.length/2,A.uint16):"SS"===r?e=o(t.length/2,A.int16):"UL"===r?e=o(t.length/4,A.uint32):"SL"===r?e=o(t.length/4,A.int32):"FD"===r?e=o(t.length/8,A.double):"FL"===r&&(e=o(t.length/4,A.float))}return e}function u(A,t){if(void 0===A)throw"dicomParser.explicitDataSetToJS: missing required parameter dataSet";t=t||{omitPrivateAttibutes:!0,maxElementLength:128};var e,r={};for(e in A.elements){var n=A.elements[e];if(!0!==t.omitPrivateAttibutes||!i(e))if(n.items){for(var o=[],a=0;a<n.items.length;a++)o.push(u(n.items[a].dataSet,t));r[e]=o}else{var s=void 0;n.length<t.maxElementLength&&(s=g(A,n)),r[e]=void 0!==s?s:{dataOffset:n.dataOffset,length:n.length}}}return r}function f(A,t){return 255===A.byteArray[t]&&217===A.byteArray[t+1]}function I(A,t,e){for(var r,n,i=e;i<t.fragments.length;i++)if(n=i,f(r=A,(n=t.fragments[n]).position+n.length-2)||f(r,n.position+n.length-3))return i}function l(A,t,e){if(void 0===A)throw"dicomParser.createJPEGBasicOffsetTable: missing required parameter dataSet";if(void 0===t)throw"dicomParser.createJPEGBasicOffsetTable: missing required parameter pixelDataElement";if("x7fe00010"!==t.tag)throw"dicomParser.createJPEGBasicOffsetTable: parameter 'pixelDataElement' refers to non pixel data tag (expected tag = x7fe00010'";if(!0!==t.encapsulatedPixelData)throw"dicomParser.createJPEGBasicOffsetTable: parameter 'pixelDataElement' refers to pixel data element that does not have encapsulated pixel data";if(!0!==t.hadUndefinedLength)throw"dicomParser.createJPEGBasicOffsetTable: parameter 'pixelDataElement' refers to pixel data element that does not have encapsulated pixel data";if(void 0===t.basicOffsetTable)throw"dicomParser.createJPEGBasicOffsetTable: parameter 'pixelDataElement' refers to pixel data element that does not have encapsulated pixel data";if(void 0===t.fragments)throw"dicomParser.createJPEGBasicOffsetTable: parameter 'pixelDataElement' refers to pixel data element that does not have encapsulated pixel data";if(t.fragments.length<=0)throw"dicomParser.createJPEGBasicOffsetTable: parameter 'pixelDataElement' refers to pixel data element that does not have encapsulated pixel data";if(e&&e.length<=0)throw"dicomParser.createJPEGBasicOffsetTable: parameter 'fragments' must not be zero length";e=e||t.fragments;for(var r=[],n=0;;){r.push(t.fragments[n].offset);var i=I(A,t,n);if(void 0===i||i===t.fragments.length-1)return r;n=i+1}}function B(A){if(void 0===A)throw"dicomParser.readTag: missing required parameter 'byteStream'";var t=256*A.readUint16()*256;return A=A.readUint16(),"x".concat("00000000".concat((t+A).toString(16)).substr(-8))}function E(A,t,e){if(void 0===A)throw"dicomParser.findEndOfEncapsulatedElement: missing required parameter 'byteStream'";if(void 0===t)throw"dicomParser.findEndOfEncapsulatedElement: missing required parameter 'element'";if(t.encapsulatedPixelData=!0,t.basicOffsetTable=[],t.fragments=[],"xfffee000"!==B(A))throw"dicomParser.findEndOfEncapsulatedElement: basic offset table not found";for(var r=A.readUint32()/4,n=0;n<r;n++){var i=A.readUint32();t.basicOffsetTable.push(i)}for(var o=A.position;A.position<A.byteArray.length;){var a=B(A),s=A.readUint32();if("xfffee0dd"===a)return A.seek(s),void(t.length=A.position-t.dataOffset);if("xfffee000"!==a)return e&&e.push("unexpected tag ".concat(a," while searching for end of pixel data element with undefined length")),s>A.byteArray.length-A.position&&(s=A.byteArray.length-A.position),t.fragments.push({offset:A.position-o-8,position:A.position,length:s}),A.seek(s),void(t.length=A.position-t.dataOffset);t.fragments.push({offset:A.position-o-8,position:A.position,length:s}),A.seek(s)}e&&e.push("pixel data element ".concat(t.tag," missing sequence delimiter tag xfffee0dd"))}function h(A,t){if(void 0===A)throw"dicomParser.findAndSetUNElementLength: missing required parameter 'byteStream'";for(var e=A.byteArray.length-8;A.position<=e;)if(65534===A.readUint16()&&57565===A.readUint16())return 0!==A.readUint32()&&A.warnings("encountered non zero length following item delimiter at position ".concat(A.position-4," while reading element of undefined length with tag ").concat(t.tag)),void(t.length=A.position-t.dataOffset);t.length=A.byteArray.length-t.dataOffset,A.seek(A.byteArray.length-A.position)}function Q(A,t,e){if(e<0)throw"dicomParser.readFixedString - length cannot be less than 0";if(t+e>A.length)throw"dicomParser.readFixedString: attempt to read past end of buffer";for(var r,n="",i=0;i<e;i++){if(0===(r=A[t+i]))return t+=e,n;n+=String.fromCharCode(r)}return n}function C(A,t){for(var e=0;e<t.length;e++){var r=t[e];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(A,r.key,r)}}function d(A,t){return void 0!==A.parser?A.parser:t}var y=function(){function A(t,e,r){!function(A,t){if(!(A instanceof t))throw new TypeError("Cannot call a class as a function")}(this,A),this.byteArrayParser=t,this.byteArray=e,this.elements=r}var t,e,r;return t=A,(e=[{key:"uint16",value:function(A,t){if(t=void 0!==t?t:0,(A=this.elements[A])&&0!==A.length)return d(A,this.byteArrayParser).readUint16(this.byteArray,A.dataOffset+2*t)}},{key:"int16",value:function(A,t){if(t=void 0!==t?t:0,(A=this.elements[A])&&0!==A.length)return d(A,this.byteArrayParser).readInt16(this.byteArray,A.dataOffset+2*t)}},{key:"uint32",value:function(A,t){if(t=void 0!==t?t:0,(A=this.elements[A])&&0!==A.length)return d(A,this.byteArrayParser).readUint32(this.byteArray,A.dataOffset+4*t)}},{key:"int32",value:function(A,t){if(t=void 0!==t?t:0,(A=this.elements[A])&&0!==A.length)return d(A,this.byteArrayParser).readInt32(this.byteArray,A.dataOffset+4*t)}},{key:"float",value:function(A,t){if(t=void 0!==t?t:0,(A=this.elements[A])&&0!==A.length)return d(A,this.byteArrayParser).readFloat(this.byteArray,A.dataOffset+4*t)}},{key:"double",value:function(A,t){if(t=void 0!==t?t:0,(A=this.elements[A])&&0!==A.length)return d(A,this.byteArrayParser).readDouble(this.byteArray,A.dataOffset+8*t)}},{key:"numStringValues",value:function(A){if((A=this.elements[A])&&0<A.length)return null===(A=Q(this.byteArray,A.dataOffset,A.length).match(/\\/g))?1:A.length+1}},{key:"string",value:function(A,t){return(A=this.elements[A])&&A.Value?A.Value:A&&0<A.length?(A=Q(this.byteArray,A.dataOffset,A.length),0<=t?A.split("\\")[t].trim():A.trim()):void 0}},{key:"text",value:function(A,t){if((A=this.elements[A])&&0<A.length)return A=Q(this.byteArray,A.dataOffset,A.length),0<=t?A.split("\\")[t].replace(/ +$/,""):A.replace(/ +$/,"")}},{key:"floatString",value:function(A,t){var e=this.elements[A];if(e&&0<e.length&&void 0!==(t=this.string(A,t=void 0!==t?t:0)))return parseFloat(t)}},{key:"intString",value:function(A,t){var e=this.elements[A];if(e&&0<e.length&&void 0!==(t=this.string(A,t=void 0!==t?t:0)))return parseInt(t)}},{key:"attributeTag",value:function(A){if((e=this.elements[A])&&4===e.length){var t=d(e,this.byteArrayParser).readUint16,e=(A=this.byteArray,e.dataOffset);return"x".concat("00000000".concat((256*t(A,e)*256+t(A,e+2)).toString(16)).substr(-8))}}}])&&C(t.prototype,e),r&&C(t,r),Object.defineProperty(t,"prototype",{writable:!1}),A}();function p(A,t){if(void 0===A)throw"dicomParser.readDicomElementImplicit: missing required parameter 'byteStream'";for(var e=A.byteArray.length-8;A.position<=e;)if(65534===A.readUint16()&&57357===A.readUint16())return 0!==A.readUint32()&&A.warnings("encountered non zero length following item delimiter at position ".concat(A.position-4," while reading element of undefined length with tag ").concat(t.tag)),void(t.length=A.position-t.dataOffset);t.length=A.byteArray.length-t.dataOffset,A.seek(A.byteArray.length-A.position)}var m=function(A,t){return void 0!==A.vr?"SQ"===A.vr:t.position+4<=t.byteArray.length?(A=B(t),t.seek(-4),"xfffee000"===A||"xfffee0dd"===A):(t.warnings.push("eof encountered before finding sequence item tag or sequence delimiter tag in peeking to determine VR"),!1)};function v(A,t,e){if(void 0===A)throw"dicomParser.readDicomElementImplicit: missing required parameter 'byteStream'";var r;return 4294967295===(r={tag:r=B(A),vr:void 0!==e?e(r):void 0,length:A.readUint32(),dataOffset:A.position}).length&&(r.hadUndefinedLength=!0),r.tag===t||(!m(r,A)||i(r.tag)&&!r.hadUndefinedLength?r.hadUndefinedLength?p(A,r):A.seek(r.length):(D(A,r,e),i(r.tag)&&(r.items=void 0))),r}function w(A){if(void 0===A)throw"dicomParser.readSequenceItem: missing required parameter 'byteStream'";var t={tag:B(A),length:A.readUint32(),dataOffset:A.position};if("xfffee000"!==t.tag)throw"dicomParser.readSequenceItem: item tag (FFFE,E000) not found at offset ".concat(A.position);return t}function b(A,t){var e=w(A);return 4294967295===e.length?(e.hadUndefinedLength=!0,e.dataSet=function(A,t){for(var e={};A.position<A.byteArray.length;){var r=v(A,void 0,t);if("xfffee00d"===(e[r.tag]=r).tag)return new y(A.byteArrayParser,A.byteArray,e)}return A.warnings.push("eof encountered before finding sequence item delimiter in sequence item of undefined length"),new y(A.byteArrayParser,A.byteArray,e)}(A,t),e.length=A.position-e.dataOffset):(e.dataSet=new y(A.byteArrayParser,A.byteArray,{}),G(e.dataSet,A,A.position+e.length,{vrCallback:t})),e}function D(A,t,e){if(void 0===A)throw"dicomParser.readSequenceItemsImplicit: missing required parameter 'byteStream'";if(void 0===t)throw"dicomParser.readSequenceItemsImplicit: missing required parameter 'element'";t.items=[],(4294967295===t.length?function(A,t,e){for(;A.position+4<=A.byteArray.length;){var r=B(A);if(A.seek(-4),"xfffee0dd"===r)return t.length=A.position-t.dataOffset,A.seek(8);r=b(A,e),t.items.push(r)}A.warnings.push("eof encountered before finding sequence delimiter in sequence of undefined length"),t.length=A.byteArray.length-t.dataOffset}:function(A,t,e){for(var r=t.dataOffset+t.length;A.position<r;){var n=b(A,e);t.items.push(n)}})(A,t,e)}function S(A,t){var e=w(A);return 4294967295===e.length?(e.hadUndefinedLength=!0,e.dataSet=function(A,t){for(var e={};A.position<A.byteArray.length;){var r=k(A,t);if("xfffee00d"===(e[r.tag]=r).tag)return new y(A.byteArrayParser,A.byteArray,e)}return t.push("eof encountered before finding item delimiter tag while reading sequence item of undefined length"),new y(A.byteArrayParser,A.byteArray,e)}(A,t),e.length=A.position-e.dataOffset):(e.dataSet=new y(A.byteArrayParser,A.byteArray,{}),x(e.dataSet,A,A.position+e.length)),e}function L(A,t,e){if(void 0===A)throw"dicomParser.readSequenceItemsExplicit: missing required parameter 'byteStream'";if(void 0===t)throw"dicomParser.readSequenceItemsExplicit: missing required parameter 'element'";t.items=[],(4294967295===t.length?function(A,t,e){for(;A.position+4<=A.byteArray.length;){var r=B(A);if(A.seek(-4),"xfffee0dd"===r)return t.length=A.position-t.dataOffset,A.seek(8);r=S(A,e),t.items.push(r)}e.push("eof encountered before finding sequence delimitation tag while reading sequence of undefined length"),t.length=A.position-t.dataOffset}:function(A,t,e){for(var r=t.dataOffset+t.length;A.position<r;){var n=S(A,e);t.items.push(n)}})(A,t,e)}var F=function(A){return"OB"===A||"OD"===A||"OL"===A||"OW"===A||"SQ"===A||"OF"===A||"UC"===A||"UR"===A||"UT"===A||"UN"===A?4:2};function k(A,t,e){if(void 0===A)throw"dicomParser.readDicomElementExplicit: missing required parameter 'byteStream'";var r={tag:B(A),vr:A.readFixedString(2)};return 2===F(r.vr)?r.length=A.readUint16():(A.seek(2),r.length=A.readUint32()),r.dataOffset=A.position,4294967295===r.length&&(r.hadUndefinedLength=!0),r.tag===e||("SQ"===r.vr?L(A,r,t):4294967295===r.length?"x7fe00010"===r.tag?E(A,r,t):("UN"===r.vr?D:p)(A,r):A.seek(r.length)),r}function x(A,t,e){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:{};if(e=void 0===e?t.byteArray.length:e,void 0===t)throw"dicomParser.parseDicomDataSetExplicit: missing required parameter 'byteStream'";if(e<t.position||e>t.byteArray.length)throw"dicomParser.parseDicomDataSetExplicit: invalid value for parameter 'maxP osition'";for(var n=A.elements;t.position<e;){var i=k(t,A.warnings,r.untilTag);if((n[i.tag]=i).tag===r.untilTag)return}if(t.position>e)throw"dicomParser:parseDicomDataSetExplicit: buffer overrun"}function G(A,t,e){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:{};if(e=void 0===e?A.byteArray.length:e,void 0===t)throw"dicomParser.parseDicomDataSetImplicit: missing required parameter 'byteStream'";if(e<t.position||e>t.byteArray.length)throw"dicomParser.parseDicomDataSetImplicit: invalid value for parameter 'maxPosition'";for(var n=A.elements;t.position<e;){var i=v(t,r.untilTag,r.vrCallback);if((n[i.tag]=i).tag===r.untilTag)return}}function N(A,t){if("undefined"!=typeof Buffer&&A instanceof Buffer)return Buffer.alloc(t);if(A instanceof Uint8Array)return new Uint8Array(t);throw"dicomParser.alloc: unknown type for byteArray"}var R="1.8.12",U={readUint16:function(A,t){if(t<0)throw"bigEndianByteArrayParser.readUint16: position cannot be less than 0";if(t+2>A.length)throw"bigEndianByteArrayParser.readUint16: attempt to read past end of buffer";return(A[t]<<8)+A[t+1]},readInt16:function(A,t){if(t<0)throw"bigEndianByteArrayParser.readInt16: position cannot be less than 0";if(t+2>A.length)throw"bigEndianByteArrayParser.readInt16: attempt to read past end of buffer";return 32768&(t=(A[t]<<8)+A[t+1])?t-65535-1:t},readUint32:function(A,t){if(t<0)throw"bigEndianByteArrayParser.readUint32: position cannot be less than 0";if(t+4>A.length)throw"bigEndianByteArrayParser.readUint32: attempt to read past end of buffer";return 256*(256*(256*A[t]+A[t+1])+A[t+2])+A[t+3]},readInt32:function(A,t){if(t<0)throw"bigEndianByteArrayParser.readInt32: position cannot be less than 0";if(t+4>A.length)throw"bigEndianByteArrayParser.readInt32: attempt to read past end of buffer";return(A[t]<<24)+(A[t+1]<<16)+(A[t+2]<<8)+A[t+3]},readFloat:function(A,t){if(t<0)throw"bigEndianByteArrayParser.readFloat: position cannot be less than 0";if(t+4>A.length)throw"bigEndianByteArrayParser.readFloat: attempt to read past end of buffer";var e=new Uint8Array(4);return e[3]=A[t],e[2]=A[t+1],e[1]=A[t+2],e[0]=A[t+3],new Float32Array(e.buffer)[0]},readDouble:function(A,t){if(t<0)throw"bigEndianByteArrayParser.readDouble: position cannot be less than 0";if(t+8>A.length)throw"bigEndianByteArrayParser.readDouble: attempt to read past end of buffer";var e=new Uint8Array(8);return e[7]=A[t],e[6]=A[t+1],e[5]=A[t+2],e[4]=A[t+3],e[3]=A[t+4],e[2]=A[t+5],e[1]=A[t+6],e[0]=A[t+7],new Float64Array(e.buffer)[0]}};function P(A,t,e){if("undefined"!=typeof Buffer&&A instanceof Buffer)return A.slice(t,t+e);if(A instanceof Uint8Array)return new Uint8Array(A.buffer,A.byteOffset+t,e);throw"dicomParser.from: unknown type for byteArray"}function O(A,t){for(var e=0;e<t.length;e++){var r=t[e];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(A,r.key,r)}}var M=function(){function A(t,e,r){if(function(A,t){if(!(A instanceof t))throw new TypeError("Cannot call a class as a function")}(this,A),void 0===t)throw"dicomParser.ByteStream: missing required parameter 'byteArrayParser'";if(void 0===e)throw"dicomParser.ByteStream: missing required parameter 'byteArray'";if(e instanceof Uint8Array==0&&("undefined"==typeof Buffer||e instanceof Buffer==0))throw"dicomParser.ByteStream: parameter byteArray is not of type Uint8Array or Buffer";if(r<0)throw"dicomParser.ByteStream: parameter 'position' cannot be less than 0";if(r>=e.length)throw"dicomParser.ByteStream: parameter 'position' cannot be greater than or equal to 'byteArray' length";this.byteArrayParser=t,this.byteArray=e,this.position=r||0,this.warnings=[]}var t,e,r;return t=A,(e=[{key:"seek",value:function(A){if(this.position+A<0)throw"dicomParser.ByteStream.prototype.seek: cannot seek to position < 0";this.position+=A}},{key:"readByteStream",value:function(t){if(this.position+t>this.byteArray.length)throw"dicomParser.ByteStream.prototype.readByteStream: readByteStream - buffer overread";var e=P(this.byteArray,this.position,t);return this.position+=t,new A(this.byteArrayParser,e)}},{key:"getSize",value:function(){return this.byteArray.length}},{key:"readUint16",value:function(){var A=this.byteArrayParser.readUint16(this.byteArray,this.position);return this.position+=2,A}},{key:"readUint32",value:function(){var A=this.byteArrayParser.readUint32(this.byteArray,this.position);return this.position+=4,A}},{key:"readFixedString",value:function(A){var t=Q(this.byteArray,this.position,A);return this.position+=A,t}}])&&O(t.prototype,e),r&&O(t,r),Object.defineProperty(t,"prototype",{writable:!1}),A}(),q={readUint16:function(A,t){if(t<0)throw"littleEndianByteArrayParser.readUint16: position cannot be less than 0";if(t+2>A.length)throw"littleEndianByteArrayParser.readUint16: attempt to read past end of buffer";return A[t]+256*A[t+1]},readInt16:function(A,t){if(t<0)throw"littleEndianByteArrayParser.readInt16: position cannot be less than 0";if(t+2>A.length)throw"littleEndianByteArrayParser.readInt16: attempt to read past end of buffer";return 32768&(t=A[t]+(A[t+1]<<8))?t-65535-1:t},readUint32:function(A,t){if(t<0)throw"littleEndianByteArrayParser.readUint32: position cannot be less than 0";if(t+4>A.length)throw"littleEndianByteArrayParser.readUint32: attempt to read past end of buffer";return A[t]+256*A[t+1]+256*A[t+2]*256+256*A[t+3]*256*256},readInt32:function(A,t){if(t<0)throw"littleEndianByteArrayParser.readInt32: position cannot be less than 0";if(t+4>A.length)throw"littleEndianByteArrayParser.readInt32: attempt to read past end of buffer";return A[t]+(A[t+1]<<8)+(A[t+2]<<16)+(A[t+3]<<24)},readFloat:function(A,t){if(t<0)throw"littleEndianByteArrayParser.readFloat: position cannot be less than 0";if(t+4>A.length)throw"littleEndianByteArrayParser.readFloat: attempt to read past end of buffer";var e=new Uint8Array(4);return e[0]=A[t],e[1]=A[t+1],e[2]=A[t+2],e[3]=A[t+3],new Float32Array(e.buffer)[0]},readDouble:function(A,t){if(t<0)throw"littleEndianByteArrayParser.readDouble: position cannot be less than 0";if(t+8>A.length)throw"littleEndianByteArrayParser.readDouble: attempt to read past end of buffer";var e=new Uint8Array(8);return e[0]=A[t],e[1]=A[t+1],e[2]=A[t+2],e[3]=A[t+3],e[4]=A[t+4],e[5]=A[t+5],e[6]=A[t+6],e[7]=A[t+7],new Float64Array(e.buffer)[0]}};function J(A){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};if(void 0===A)throw"dicomParser.readPart10Header: missing required parameter 'byteArray'";var e=t.TransferSyntaxUID,r=new M(q,A);return function(){var A=function(){if(r.getSize()<=132&&e)return!1;if(r.seek(128),"DICM"===r.readFixedString(4))return!0;if(!(t||{}).TransferSyntaxUID)throw"dicomParser.readPart10Header: DICM prefix not found at location 132 - this is not a valid DICOM P10 file.";return r.seek(0),!1}(),n=[],i={};if(!A)return r.position=0,{elements:{x00020010:{tag:"x00020010",vr:"UI",Value:e}},warnings:n};for(;r.position<r.byteArray.length;){var o=r.position,a=k(r,n);if("x0002ffff"<a.tag){r.position=o;break}a.parser=q,i[a.tag]=a}return(A=new y(r.byteArrayParser,r.byteArray,i)).warnings=r.warnings,A.position=r.position,A}()}var Y="1.2.840.10008.1.2.2";function T(A){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};if(void 0===A)throw new Error("dicomParser.parseDicom: missing required parameter 'byteArray'");var r,n=function(t){if(void 0===t.elements.x00020010)throw new Error("dicomParser.parseDicom: missing required meta header attribute 0002,0010");return(t=t.elements.x00020010)&&t.Value||Q(A,t.dataOffset,t.length)};function i(r){var i="1.2.840.10008.1.2"!==(o=n(r)),o=function(r,n){var i="[object process]"===Object.prototype.toString.call("undefined"!=typeof process?process:0);if("1.2.840.10008.1.2.1.99"!==r)return new M(r===Y?U:q,A,n);if(t&&t.inflater)return r=t.inflater(A,n),new M(q,r,0);if(1==i){var o=e(0),a=P(A,n,A.length-n);return o=o.inflateRawSync(a),a=N(A,o.length+n),A.copy(a,0,0,n),o.copy(a,n),new M(q,a,0)}if("undefined"==typeof pako)throw"dicomParser.parseDicom: no inflater available to handle deflate transfer syntax";return o=A.slice(n),a=pako.inflateRaw(o),(o=N(A,a.length+n)).set(A.slice(0,n),0),o.set(a,n),new M(q,o,0)}(o,r.position);(r=new y(o.byteArrayParser,o.byteArray,{})).warnings=o.warnings;try{(i?x:G)(r,o,o.byteArray.length,t)}catch(o){throw{exception:o,dataSet:r}}return r}return function(A,t){for(var e in A.elements)A.elements.hasOwnProperty(e)&&(t.elements[e]=A.elements[e]);return void 0!==A.warnings&&(t.warnings=A.warnings.concat(t.warnings)),t}(r=J(A,t),i(r))}var H=function(A,t,e){for(var r=0,n=t;n<t+e;n++)r+=A[n].length;return r};function j(A,t,e,r,n){if(n=n||t.fragments,void 0===A)throw"dicomParser.readEncapsulatedPixelDataFromFragments: missing required parameter 'dataSet'";if(void 0===t)throw"dicomParser.readEncapsulatedPixelDataFromFragments: missing required parameter 'pixelDataElement'";if(void 0===e)throw"dicomParser.readEncapsulatedPixelDataFromFragments: missing required parameter 'startFragmentIndex'";if(void 0===(r=r||1))throw"dicomParser.readEncapsulatedPixelDataFromFragments: missing required parameter 'numFragments'";if("x7fe00010"!==t.tag)throw"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'pixelDataElement' refers to non pixel data tag (expected tag = x7fe00010";if(!0!==t.encapsulatedPixelData)throw"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'pixelDataElement' refers to pixel data element that does not have encapsulated pixel data";if(!0!==t.hadUndefinedLength)throw"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'pixelDataElement' refers to pixel data element that does not have encapsulated pixel data";if(void 0===t.basicOffsetTable)throw"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'pixelDataElement' refers to pixel data element that does not have encapsulated pixel data";if(void 0===t.fragments)throw"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'pixelDataElement' refers to pixel data element that does not have encapsulated pixel data";if(t.fragments.length<=0)throw"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'pixelDataElement' refers to pixel data element that does not have encapsulated pixel data";if(e<0)throw"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'startFragmentIndex' must be >= 0";if(e>=t.fragments.length)throw"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'startFragmentIndex' must be < number of fragments";if(r<1)throw"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'numFragments' must be > 0";if(e+r>t.fragments.length)throw"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'startFragment' + 'numFragments' < number of fragments";var i=new M(A.byteArrayParser,A.byteArray,t.dataOffset);if("xfffee000"!==(t=w(i)).tag)throw"dicomParser.readEncapsulatedPixelData: missing basic offset table xfffee000";i.seek(t.length);var o=i.position;if(1===r)return P(i.byteArray,o+n[e].offset+8,n[e].length);t=H(n,e,r);for(var a=N(i.byteArray,t),s=0,c=e;c<e+r;c++)for(var g=o+n[c].offset+8,u=0;u<n[c].length;u++)a[s++]=i.byteArray[g++];return a}var K=function(A,t){for(var e=0;e<A.length;e++)if(A[e].offset===t)return e},_=function(A,t,e,r){if(A===t.length-1)return e.length-r;for(var n=t[A+1],i=r+1;i<e.length;i++)if(e[i].offset===n)return i-r;throw"dicomParser.calculateNumberOfFragmentsForFrame: could not find fragment with offset matching basic offset table"};function W(A,t,e,r,n){if(r=r||t.basicOffsetTable,n=n||t.fragments,void 0===A)throw"dicomParser.readEncapsulatedImageFrame: missing required parameter 'dataSet'";if(void 0===t)throw"dicomParser.readEncapsulatedImageFrame: missing required parameter 'pixelDataElement'";if(void 0===e)throw"dicomParser.readEncapsulatedImageFrame: missing required parameter 'frameIndex'";if(void 0===r)throw"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' does not have basicOffsetTable";if("x7fe00010"!==t.tag)throw"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' refers to non pixel data tag (expected tag = x7fe00010)";if(!0!==t.encapsulatedPixelData)throw"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' refers to pixel data element that does not have encapsulated pixel data";if(!0!==t.hadUndefinedLength)throw"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' refers to pixel data element that does not have undefined length";if(void 0===t.fragments)throw"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' refers to pixel data element that does not have fragments";if(0===r.length)throw"dicomParser.readEncapsulatedImageFrame: basicOffsetTable has zero entries";if(e<0)throw"dicomParser.readEncapsulatedImageFrame: parameter 'frameIndex' must be >= 0";if(e>=r.length)throw"dicomParser.readEncapsulatedImageFrame: parameter 'frameIndex' must be < basicOffsetTable.length";var i=r[e];if(void 0===(i=K(n,i)))throw"dicomParser.readEncapsulatedImageFrame: unable to find fragment that matches basic offset table entry";return j(A,t,i,_(e,r,n,i),n)}var V=!1;function X(A,t,e){if(V||(V=!0,console&&console.log&&console.log("WARNING: dicomParser.readEncapsulatedPixelData() has been deprecated")),void 0===A)throw"dicomParser.readEncapsulatedPixelData: missing required parameter 'dataSet'";if(void 0===t)throw"dicomParser.readEncapsulatedPixelData: missing required parameter 'element'";if(void 0===e)throw"dicomParser.readEncapsulatedPixelData: missing required parameter 'frame'";if("x7fe00010"!==t.tag)throw"dicomParser.readEncapsulatedPixelData: parameter 'element' refers to non pixel data tag (expected tag = x7fe00010)";if(!0!==t.encapsulatedPixelData)throw"dicomParser.readEncapsulatedPixelData: parameter 'element' refers to pixel data element that does not have encapsulated pixel data";if(!0!==t.hadUndefinedLength)throw"dicomParser.readEncapsulatedPixelData: parameter 'element' refers to pixel data element that does not have encapsulated pixel data";if(void 0===t.basicOffsetTable)throw"dicomParser.readEncapsulatedPixelData: parameter 'element' refers to pixel data element that does not have encapsulated pixel data";if(void 0===t.fragments)throw"dicomParser.readEncapsulatedPixelData: parameter 'element' refers to pixel data element that does not have encapsulated pixel data";if(e<0)throw"dicomParser.readEncapsulatedPixelData: parameter 'frame' must be >= 0";return 0!==t.basicOffsetTable.length?W(A,t,e):j(A,t,0,t.fragments.length)}t.default={isStringVr:n,isPrivateTag:i,parsePN:o,parseTM:a,parseDA:c,explicitElementToString:g,explicitDataSetToJS:u,createJPEGBasicOffsetTable:l,parseDicomDataSetExplicit:x,parseDicomDataSetImplicit:G,readFixedString:Q,alloc:N,version:R,bigEndianByteArrayParser:U,ByteStream:M,sharedCopy:P,DataSet:y,findAndSetUNElementLength:h,findEndOfEncapsulatedElement:E,findItemDelimitationItemAndSetElementLength:p,littleEndianByteArrayParser:q,parseDicom:T,readDicomElementExplicit:k,readDicomElementImplicit:v,readEncapsulatedImageFrame:W,readEncapsulatedPixelData:X,readEncapsulatedPixelDataFromFragments:j,readPart10Header:J,readSequenceItemsExplicit:L,readSequenceItemsImplicit:D,readSequenceItem:w,readTag:B,LEI:"1.2.840.10008.1.2",LEE:"1.2.840.10008.1.2.1"}}],r={},t.m=e,t.c=r,t.d=function(A,e,r){t.o(A,e)||Object.defineProperty(A,e,{enumerable:!0,get:r})},t.r=function(A){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(A,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(A,"__esModule",{value:!0})},t.t=function(A,e){if(1&e&&(A=t(A)),8&e)return A;if(4&e&&"object"==typeof A&&A&&A.__esModule)return A;var r=Object.create(null);if(t.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:A}),2&e&&"string"!=typeof A)for(var n in A)t.d(r,n,function(t){return A[t]}.bind(null,n));return r},t.n=function(A){var e=A&&A.__esModule?function(){return A.default}:function(){return A};return t.d(e,"a",e),e},t.o=function(A,t){return Object.prototype.hasOwnProperty.call(A,t)},t.p="",t(t.s=1);function t(A){if(r[A])return r[A].exports;var n=r[A]={i:A,l:!1,exports:{}};return e[A].call(n.exports,n,n.exports,t),n.l=!0,n.exports}var e,r}(e(559))},559:()=>{}},t={};function e(r){var n=t[r];if(void 0!==n)return n.exports;var i=t[r]={exports:{}};return A[r].call(i.exports,i,i.exports,e),i.exports}e.m=A,e.d=(A,t)=>{for(var r in t)e.o(t,r)&&!e.o(A,r)&&Object.defineProperty(A,r,{enumerable:!0,get:t[r]})},e.u=A=>A+".js",e.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(A){if("object"==typeof window)return window}}(),e.o=(A,t)=>Object.prototype.hasOwnProperty.call(A,t),e.r=A=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(A,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(A,"__esModule",{value:!0})},(()=>{var A;e.g.importScripts&&(A=e.g.location+"");var t=e.g.document;if(!A&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(A=t.currentScript.src),!A)){var r=t.getElementsByTagName("script");if(r.length)for(var n=r.length-1;n>-1&&(!A||!/^http(s?):/.test(A));)A=r[n--].src}if(!A)throw new Error("Automatic publicPath is not supported in this browser");A=A.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),e.p=A})(),e.b=document.baseURI||self.location.href;var r={};return(()=>{"use strict";e.r(r),e.d(r,{CodDicomWebServer:()=>$t,FetchType:()=>o,clearPartialFiles:()=>bA,default:()=>Ae});var A={};e.r(A),e.d(A,{DataRetrieveMode:()=>s,FetchType:()=>o,RequestType:()=>a,URLType:()=>c});var t={};e.r(t),e.d(t,{DOMAIN:()=>q,FILE_EXTENSIONS:()=>J,URL_VALIDATION_STRING:()=>Y});var n={};e.r(n),e.d(n,{FILE_PARTIAL_WORKER_NAME:()=>T,FILE_STREAMING_WORKER_NAME:()=>H,FILE_SYSTEM_ROUTES:()=>_,IDB_DIR_HANDLE_KEY:()=>K,THRESHOLD:()=>j});var i={};e.r(i),e.d(i,{METADATA_VERSION:()=>W});var o=function(A){return A[A.BYTES_OPTIMIZED=0]="BYTES_OPTIMIZED",A[A.API_OPTIMIZED=1]="API_OPTIMIZED",A}({}),a=function(A){return A[A.FRAME=0]="FRAME",A[A.THUMBNAIL=1]="THUMBNAIL",A[A.SERIES_METADATA=2]="SERIES_METADATA",A[A.INSTANCE_METADATA=3]="INSTANCE_METADATA",A}({}),s=function(A){return A[A.WORKER=0]="WORKER",A[A.REQUEST=1]="REQUEST",A}({}),c=function(A){return A[A.THUMBNAIL=0]="THUMBNAIL",A[A.FILE=1]="FILE",A[A.OTHERS=2]="OTHERS",A}({}),g=e(915);function u(A){return u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(A){return typeof A}:function(A){return A&&"function"==typeof Symbol&&A.constructor===Symbol&&A!==Symbol.prototype?"symbol":typeof A},u(A)}function f(A,t){return function(A){if(Array.isArray(A))return A}(A)||function(A,t){var e=null==A?null:"undefined"!=typeof Symbol&&A[Symbol.iterator]||A["@@iterator"];if(null!=e){var r,n,i,o,a=[],s=!0,c=!1;try{if(i=(e=e.call(A)).next,0===t){if(Object(e)!==e)return;s=!1}else for(;!(s=(r=i.call(e)).done)&&(a.push(r.value),a.length!==t);s=!0);}catch(A){c=!0,n=A}finally{try{if(!s&&null!=e.return&&(o=e.return(),Object(o)!==o))return}finally{if(c)throw n}}return a}}(A,t)||function(A,t){if(A){if("string"==typeof A)return I(A,t);var e={}.toString.call(A).slice(8,-1);return"Object"===e&&A.constructor&&(e=A.constructor.name),"Map"===e||"Set"===e?Array.from(A):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?I(A,t):void 0}}(A,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function I(A,t){(null==t||t>A.length)&&(t=A.length);for(var e=0,r=Array(t);e<t;e++)r[e]=A[e];return r}function l(A,t){var e=Object.keys(A);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(A);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(A,t).enumerable}))),e.push.apply(e,r)}return e}function B(A){for(var t=1;t<arguments.length;t++){var e=null!=arguments[t]?arguments[t]:{};t%2?l(Object(e),!0).forEach((function(t){h(A,t,e[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(A,Object.getOwnPropertyDescriptors(e)):l(Object(e)).forEach((function(t){Object.defineProperty(A,t,Object.getOwnPropertyDescriptor(e,t))}))}return A}function E(A,t){for(var e=0;e<t.length;e++){var r=t[e];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(A,Q(r.key),r)}}function h(A,t,e){return(t=Q(t))in A?Object.defineProperty(A,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):A[t]=e,A}function Q(A){var t=function(A,t){if("object"!=u(A)||!A)return A;var e=A[Symbol.toPrimitive];if(void 0!==e){var r=e.call(A,t||"default");if("object"!=u(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(A)}(A,"string");return"symbol"==u(t)?t:t+""}const C=function(){return A=function A(){!function(A,t){if(!(A instanceof t))throw new TypeError("Cannot call a class as a function")}(this,A),h(this,"files",{})},(t=[{key:"set",value:function(A,t){this.files[A]=B(B({},t),{},{lastModified:Date.now()})}},{key:"get",value:function(A,t){return!this.files[A]||t&&this.files[A].position<=t.endByte?null:t?this.files[A].data.slice(t.startByte,t.endByte):this.files[A].data}},{key:"setPosition",value:function(A,t){this.files[A]&&(this.files[A].position=t,this.files[A].lastModified=Date.now())}},{key:"getPosition",value:function(A){var t;return null===(t=this.files[A])||void 0===t?void 0:t.position}},{key:"append",value:function(A,t,e){this.files[A]&&e&&(this.files[A].data.set(t,e-t.length),this.setPosition(A,e))}},{key:"getTotalSize",value:function(){return Object.values(this.files).reduce((function(A,t){return A+t.data.byteLength}),0)}},{key:"remove",value:function(A){try{delete this.files[A],console.log("Removed ".concat(A," from CodDicomwebServer cache"))}catch(t){console.warn("Error removing ".concat(A," from CodDicomwebServer cache:"),t)}}},{key:"purge",value:function(){var A=this,t=Object.keys(this.files),e=this.getTotalSize();t.forEach((function(t){return A.remove(t)})),console.log("Purged ".concat(e-this.getTotalSize()," bytes from CodDicomwebServer cache"))}},{key:"decacheNecessaryBytes",value:function(A,t){var e=this,r=this.getTotalSize(),n=[],i=0;return Object.entries(this.files).sort((function(A,t){var e=f(A,2)[1],r=f(t,2)[1];return e.lastModified-r.lastModified})).forEach((function(e){var r=f(e,2),o=r[0],a=r[1];i<t&&o!==A&&(n.push(o),i+=a.data.byteLength)})),n.forEach((function(A){return e.remove(A)})),console.log("Decached ".concat(r-this.getTotalSize()," bytes")),i}}])&&E(A.prototype,t),e&&E(A,e),Object.defineProperty(A,"prototype",{writable:!1}),A;var A,t,e}();let d,y,p;const m={env:{emscripten_notify_memory_growth:function(A){p=new Uint8Array(y.exports.memory.buffer)}}};class v{init(){return d||(d="undefined"!=typeof fetch?fetch("data:application/wasm;base64,"+w).then((A=>A.arrayBuffer())).then((A=>WebAssembly.instantiate(A,m))).then(this._init):WebAssembly.instantiate(Buffer.from(w,"base64"),m).then(this._init),d)}_init(A){y=A.instance,m.env.emscripten_notify_memory_growth(0)}decode(A,t=0){if(!y)throw new Error("ZSTDDecoder: Await .init() before decoding.");const e=A.byteLength,r=y.exports.malloc(e);p.set(A,r),t=t||Number(y.exports.ZSTD_findDecompressedSize(r,e));const n=y.exports.malloc(t),i=y.exports.ZSTD_decompress(n,t,r,e),o=p.slice(n,n+i);return y.exports.free(r),y.exports.free(n),o}}const w="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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQhBSAGQQR2IQRBICAAdCIAQQFyIQkgASgCACEPQQAhAiADIQYCQANAIAlBAkggAiAPS3JFBEAgAiEHAkAgCARAA0AgBEH//wNxQf//A0YEQCAHQRhqIQcgBiAQSQR/IAZBAmoiBigAACAFdgUgBUEQaiEFIARBEHYLIQQMAQsLA0AgBEEDcSIIQQNGBEAgBUECaiEFIARBAnYhBCAHQQNqIQcMAQsLIAcgCGoiByAPSw0EIAVBAmohBQNAIAIgB0kEQCANIAJBAXRqQQA7AQAgAkEBaiECDAELCyAGIA5LQQAgBiAFQQN1aiIHIAxLG0UEQCAHKAAAIAVBB3EiBXYhBAwCCyAEQQJ2IQQLIAYhBwsCfyALQX9qIAQgAEF/anEiBiAAQQF0QX9qIgggCWsiEUkNABogBCAIcSIEQQAgESAEIABIG2shBiALCyEIIA0gAkEBdGogBkF/aiIEOwEAIAlBASAGayAEIAZBAUgbayEJA0AgCSAASARAIABBAXUhACALQX9qIQsMAQsLAn8gByAOS0EAIAcgBSAIaiIFQQN1aiIGIAxLG0UEQCAFQQdxDAELIAUgDCIGIAdrQQN0awshBSACQQFqIQIgBEUhCCAGKAAAIAVBH3F2IQQMAQsLQWwgCUEBRyAFQSBKcg0BGiABIAJBf2o2AgAgBiAFQQdqQQN1aiADawwBC0FQCyEAIApBEGokACAACwkAQQFBBSAAGwsMACAAIAEoAAA2AAALqgMBCn8jAEHwAGsiCiQAIAJBAWohDiAAQQhqIQtBgIAEIAVBf2p0QRB1IQxBACECQQEhBkEBIAV0IglBf2oiDyEIA0AgAiAORkUEQAJAIAEgAkEBdCINai8BACIHQf//A0YEQCALIAhBA3RqIAI2AgQgCEF/aiEIQQEhBwwBCyAGQQAgDCAHQRB0QRB1ShshBgsgCiANaiAHOwEAIAJBAWohAgwBCwsgACAFNgIEIAAgBjYCACAJQQN2IAlBAXZqQQNqIQxBACEAQQAhBkEAIQIDQCAGIA5GBEADQAJAIAAgCUYNACAKIAsgAEEDdGoiASgCBCIGQQF0aiICIAIvAQAiAkEBajsBACABIAUgAhAUayIIOgADIAEgAiAIQf8BcXQgCWs7AQAgASAEIAZBAnQiAmooAgA6AAIgASACIANqKAIANgIEIABBAWohAAwBCwsFIAEgBkEBdGouAQAhDUEAIQcDQCAHIA1ORQRAIAsgAkEDdGogBjYCBANAIAIgDGogD3EiAiAISw0ACyAHQQFqIQcMAQsLIAZBAWohBgwBCwsgCkHwAGokAAsjAEIAIAEQCSAAhUKHla+vmLbem55/fkLj3MqV/M7y9YV/fAsQACAAQn43AwggACABNgIACyQBAX8gAARAIAEoAgQiAgRAIAEoAgggACACEQEADwsgABAmCwsfACAAIAEgAi8BABAINgIAIAEQBBogACACQQRqNgIEC0oBAX9BoCAoAgAiASAAaiIAQX9MBEBBiCBBMDYCAEF/DwsCQCAAPwBBEHRNDQAgABBmDQBBiCBBMDYCAEF/DwtBoCAgADYCACABC9cBAQh/Qbp/IQoCQCACKAIEIgggAigCACIJaiIOIAEgAGtLDQBBbCEKIAkgBCADKAIAIgtrSw0AIAAgCWoiBCACKAIIIgxrIQ0gACABQWBqIg8gCyAJQQAQKSADIAkgC2o2AgACQAJAIAwgBCAFa00EQCANIQUMAQsgDCAEIAZrSw0CIAcgDSAFayIAaiIBIAhqIAdNBEAgBCABIAgQDxoMAgsgBCABQQAgAGsQDyEBIAIgACAIaiIINgIEIAEgAGshBAsgBCAPIAUgCEEBECkLIA4hCgsgCgubAgEBfyMAQYABayINJAAgDSADNgJ8AkAgAkEDSwRAQX8hCQwBCwJAAkACQAJAIAJBAWsOAwADAgELIAZFBEBBuH8hCQwEC0FsIQkgBS0AACICIANLDQMgACAHIAJBAnQiAmooAgAgAiAIaigCABA7IAEgADYCAEEBIQkMAwsgASAJNgIAQQAhCQwCCyAKRQRAQWwhCQwCC0EAIQkgC0UgDEEZSHINAUEIIAR0QQhqIQBBACECA0AgAiAATw0CIAJBQGshAgwAAAsAC0FsIQkgDSANQfwAaiANQfgAaiAFIAYQFSICEAMNACANKAJ4IgMgBEsNACAAIA0gDSgCfCAHIAggAxAYIAEgADYCACACIQkLIA1BgAFqJAAgCQsLACAAIAEgAhALGgsQACAALwAAIAAtAAJBEHRyCy8AAn9BuH8gAUEISQ0AGkFyIAAoAAQiAEF3Sw0AGkG4fyAAQQhqIgAgACABSxsLCwkAIAAgATsAAAsDAAELigYBBX8gACAAKAIAIgVBfnE2AgBBACAAIAVBAXZqQYQgKAIAIgQgAEYbIQECQAJAIAAoAgQiAkUNACACKAIAIgNBAXENACACQQhqIgUgA0EBdkF4aiIDQQggA0EISxtnQR9zQQJ0QYAfaiIDKAIARgRAIAMgAigCDDYCAAsgAigCCCIDBEAgAyACKAIMNgIECyACKAIMIgMEQCADIAIoAgg2AgALIAIgAigCACAAKAIAQX5xajYCAEGEICEAAkACQCABRQ0AIAEgAjYCBCABKAIAIgNBAXENASADQQF2QXhqIgNBCCADQQhLG2dBH3NBAnRBgB9qIgMoAgAgAUEIakYEQCADIAEoAgw2AgALIAEoAggiAwRAIAMgASgCDDYCBAsgASgCDCIDBEAgAyABKAIINgIAQYQgKAIAIQQLIAIgAigCACABKAIAQX5xajYCACABIARGDQAgASABKAIAQQF2akEEaiEACyAAIAI2AgALIAIoAgBBAXZBeGoiAEEIIABBCEsbZ0Efc0ECdEGAH2oiASgCACEAIAEgBTYCACACIAA2AgwgAkEANgIIIABFDQEgACAFNgIADwsCQCABRQ0AIAEoAgAiAkEBcQ0AIAJBAXZBeGoiAkEIIAJBCEsbZ0Efc0ECdEGAH2oiAigCACABQQhqRgRAIAIgASgCDDYCAAsgASgCCCICBEAgAiABKAIMNgIECyABKAIMIgIEQCACIAEoAgg2AgBBhCAoAgAhBAsgACAAKAIAIAEoAgBBfnFqIgI2AgACQCABIARHBEAgASABKAIAQQF2aiAANgIEIAAoAgAhAgwBC0GEICAANgIACyACQQF2QXhqIgFBCCABQQhLG2dBH3NBAnRBgB9qIgIoAgAhASACIABBCGoiAjYCACAAIAE2AgwgAEEANgIIIAFFDQEgASACNgIADwsgBUEBdkF4aiIBQQggAUEISxtnQR9zQQJ0QYAfaiICKAIAIQEgAiAAQQhqIgI2AgAgACABNgIMIABBADYCCCABRQ0AIAEgAjYCAAsLDgAgAARAIABBeGoQJQsLgAIBA38CQCAAQQ9qQXhxQYQgKAIAKAIAQQF2ayICEB1Bf0YNAAJAQYQgKAIAIgAoAgAiAUEBcQ0AIAFBAXZBeGoiAUEIIAFBCEsbZ0Efc0ECdEGAH2oiASgCACAAQQhqRgRAIAEgACgCDDYCAAsgACgCCCIBBEAgASAAKAIMNgIECyAAKAIMIgFFDQAgASAAKAIINgIAC0EBIQEgACAAKAIAIAJBAXRqIgI2AgAgAkEBcQ0AIAJBAXZBeGoiAkEIIAJBCEsbZ0Efc0ECdEGAH2oiAygCACECIAMgAEEIaiIDNgIAIAAgAjYCDCAAQQA2AgggAkUNACACIAM2AgALIAELtwIBA38CQAJAIABBASAAGyICEDgiAA0AAkACQEGEICgCACIARQ0AIAAoAgAiA0EBcQ0AIAAgA0EBcjYCACADQQF2QXhqIgFBCCABQQhLG2dBH3NBAnRBgB9qIgEoAgAgAEEIakYEQCABIAAoAgw2AgALIAAoAggiAQRAIAEgACgCDDYCBAsgACgCDCIBBEAgASAAKAIINgIACyACECchAkEAIQFBhCAoAgAhACACDQEgACAAKAIAQX5xNgIAQQAPCyACQQ9qQXhxIgMQHSICQX9GDQIgAkEHakF4cSIAIAJHBEAgACACaxAdQX9GDQMLAkBBhCAoAgAiAUUEQEGAICAANgIADAELIAAgATYCBAtBhCAgADYCACAAIANBAXRBAXI2AgAMAQsgAEUNAQsgAEEIaiEBCyABC7kDAQJ/IAAgA2ohBQJAIANBB0wEQANAIAAgBU8NAiAAIAItAAA6AAAgAEEBaiEAIAJBAWohAgwAAAsACyAEQQFGBEACQCAAIAJrIgZBB00EQCAAIAItAAA6AAAgACACLQABOgABIAAgAi0AAjoAAiAAIAItAAM6AAMgAEEEaiACIAZBAnQiBkHAHmooAgBqIgIQFyACIAZB4B5qKAIAayECDAELIAAgAhAMCyACQQhqIQIgAEEIaiEACwJAAkACQAJAIAUgAU0EQCAAIANqIQEgBEEBRyAAIAJrQQ9Kcg0BA0AgACACEAwgAkEIaiECIABBCGoiACABSQ0ACwwFCyAAIAFLBEAgACEBDAQLIARBAUcgACACa0EPSnINASAAIQMgAiEEA0AgAyAEEAwgBEEIaiEEIANBCGoiAyABSQ0ACwwCCwNAIAAgAhAHIAJBEGohAiAAQRBqIgAgAUkNAAsMAwsgACEDIAIhBANAIAMgBBAHIARBEGohBCADQRBqIgMgAUkNAAsLIAIgASAAa2ohAgsDQCABIAVPDQEgASACLQAAOgAAIAFBAWohASACQQFqIQIMAAALAAsLQQECfyAAIAAoArjgASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigCACACaiAAQQZ2IgFBAnRBsB5qKAIAaiAAQSBxIgBFaiABRSAAQQV2cWoFQbh/CwsdACAAKAKQ4gEQWiAAQQA2AqDiASAAQgA3A5DiAQu1AwEFfyMAQZACayIKJABBuH8hBgJAIAVFDQAgBCwAACIIQf8BcSEHAkAgCEF/TARAIAdBgn9qQQF2IgggBU8NAkFsIQYgB0GBf2oiBUGAAk8NAiAEQQFqIQdBACEGA0AgBiAFTwRAIAUhBiAIIQcMAwUgACAGaiAHIAZBAXZqIgQtAABBBHY6AAAgACAGQQFyaiAELQAAQQ9xOgAAIAZBAmohBgwBCwAACwALIAcgBU8NASAAIARBAWogByAKEFMiBhADDQELIAYhBEEAIQYgAUEAQTQQECEJQQAhBQNAIAQgBkcEQCAAIAZqIggtAAAiAUELSwRAQWwhBgwDBSAJIAFBAnRqIgEgASgCAEEBajYCACAGQQFqIQZBASAILQAAdEEBdSAFaiEFDAILAAsLQWwhBiAFRQ0AIAUQFEEBaiIBQQxLDQAgAyABNgIAQQFBASABdCAFayIDEBQiAXQgA0cNACAAIARqIAFBAWoiADoAACAJIABBAnRqIgAgACgCAEEBajYCACAJKAIEIgBBAkkgAEEBcXINACACIARBAWo2AgAgB0EBaiEGCyAKQZACaiQAIAYLxhEBDH8jAEHwAGsiBSQAQWwhCwJAIANBCkkNACACLwAAIQogAi8AAiEJIAIvAAQhByAFQQhqIAQQDgJAIAMgByAJIApqakEGaiIMSQ0AIAUtAAohCCAFQdgAaiACQQZqIgIgChAGI