summaryrefslogtreecommitdiff
path: root/www/js/pdf.worker.js
blob: 4a7bd6a8d1b78862bf43b604154a65b0fc14244f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
"undefined"==typeof PDFJS&&(("undefined"!=typeof window?window:this).PDFJS={}),PDFJS.version="1.0.814",PDFJS.build="d6328bb",function(){"use strict";function info(msg){PDFJS.verbosity>=PDFJS.VERBOSITY_LEVELS.infos&&console.log("Info: "+msg)}function warn(msg){PDFJS.verbosity>=PDFJS.VERBOSITY_LEVELS.warnings&&console.log("Warning: "+msg)}function error(msg){if(arguments.length>1){var logArguments=["Error:"];logArguments.push.apply(logArguments,arguments),console.log.apply(console,logArguments),msg=[].join.call(arguments," ")}else console.log("Error: "+msg);throw console.log(backtrace()),UnsupportedManager.notify(UNSUPPORTED_FEATURES.unknown),new Error(msg)}function backtrace(){try{throw new Error}catch(e){return e.stack?e.stack.split("\n").slice(2).join("\n"):""}}function assert(cond,msg){cond||error(msg)}function isValidUrl(url,allowRelative){if(!url)return!1;var protocol=/^[a-z][a-z0-9+\-.]*(?=:)/i.exec(url);if(!protocol)return allowRelative;switch(protocol=protocol[0].toLowerCase()){case"http":case"https":case"ftp":case"mailto":return!0;default:return!1}}function shadow(obj,prop,value){return Object.defineProperty(obj,prop,{value:value,enumerable:!0,configurable:!0,writable:!1}),value}function bytesToString(bytes){var length=bytes.length,MAX_ARGUMENT_COUNT=8192;if(MAX_ARGUMENT_COUNT>length)return String.fromCharCode.apply(null,bytes);for(var strBuf=[],i=0;length>i;i+=MAX_ARGUMENT_COUNT){var chunkEnd=Math.min(i+MAX_ARGUMENT_COUNT,length),chunk=bytes.subarray(i,chunkEnd);strBuf.push(String.fromCharCode.apply(null,chunk))}return strBuf.join("")}function stringToBytes(str){for(var length=str.length,bytes=new Uint8Array(length),i=0;length>i;++i)bytes[i]=255&str.charCodeAt(i);return bytes}function string32(value){return String.fromCharCode(value>>24&255,value>>16&255,value>>8&255,255&value)}function log2(x){for(var n=1,i=0;x>n;)n<<=1,i++;return i}function readInt8(data,start){return data[start]<<24>>24}function readUint16(data,offset){return data[offset]<<8|data[offset+1]}function readUint32(data,offset){return(data[offset]<<24|data[offset+1]<<16|data[offset+2]<<8|data[offset+3])>>>0}function isLittleEndian(){var buffer8=new Uint8Array(2);buffer8[0]=1;var buffer16=new Uint16Array(buffer8.buffer);return 1===buffer16[0]}function hasCanvasTypedArrays(){var canvas=document.createElement("canvas");canvas.width=canvas.height=1;var ctx=canvas.getContext("2d"),imageData=ctx.createImageData(1,1);return"undefined"!=typeof imageData.data.buffer}function stringToPDFString(str){var i,n=str.length,strBuf=[];if("þ"===str[0]&&"ÿ"===str[1])for(i=2;n>i;i+=2)strBuf.push(String.fromCharCode(str.charCodeAt(i)<<8|str.charCodeAt(i+1)));else for(i=0;n>i;++i){var code=PDFStringTranslateTable[str.charCodeAt(i)];strBuf.push(code?String.fromCharCode(code):str.charAt(i))}return strBuf.join("")}function stringToUTF8String(str){return decodeURIComponent(escape(str))}function isEmptyObj(obj){for(var key in obj)return!1;return!0}function isBool(v){return"boolean"==typeof v}function isInt(v){return"number"==typeof v&&(0|v)===v}function isNum(v){return"number"==typeof v}function isString(v){return"string"==typeof v}function isName(v){return v instanceof Name}function isCmd(v,cmd){return v instanceof Cmd&&(void 0===cmd||v.cmd===cmd)}function isDict(v,type){if(!(v instanceof Dict))return!1;if(!type)return!0;var dictType=v.get("Type");return isName(dictType)&&dictType.name===type}function isArray(v){return v instanceof Array}function isStream(v){return"object"==typeof v&&null!==v&&void 0!==v.getBytes}function isArrayBuffer(v){return"object"==typeof v&&null!==v&&void 0!==v.byteLength}function isRef(v){return v instanceof Ref}function createPromiseCapability(){var capability={};return capability.promise=new Promise(function(resolve,reject){capability.resolve=resolve,capability.reject=reject}),capability}function MessageHandler(name,comObj){this.name=name,this.comObj=comObj,this.callbackIndex=1,this.postMessageTransfers=!0;var callbacksCapabilities=this.callbacksCapabilities={},ah=this.actionHandler={};ah.console_log=[function(data){console.log.apply(console,data)}],ah.console_error=[function(data){console.error.apply(console,data)}],ah._unsupported_feature=[function(data){UnsupportedManager.notify(data)}],comObj.onmessage=function(event){var data=event.data;if(data.isReply){var callbackId=data.callbackId;if(data.callbackId in callbacksCapabilities){var callback=callbacksCapabilities[callbackId];delete callbacksCapabilities[callbackId],"error"in data?callback.reject(data.error):callback.resolve(data.data)}else error("Cannot resolve callback "+callbackId)}else if(data.action in ah){var action=ah[data.action];data.callbackId?Promise.resolve().then(function(){return action[0].call(action[1],data.data)}).then(function(result){comObj.postMessage({isReply:!0,callbackId:data.callbackId,data:result})},function(reason){comObj.postMessage({isReply:!0,callbackId:data.callbackId,error:reason})}):action[0].call(action[1],data.data)}else error("Unknown action from worker: "+data.action)}}function getTilingPatternIR(operatorList,dict,args){var matrix=dict.get("Matrix"),bbox=dict.get("BBox"),xstep=dict.get("XStep"),ystep=dict.get("YStep"),paintType=dict.get("PaintType"),tilingType=dict.get("TilingType");return["TilingPattern",args,operatorList,matrix,bbox,xstep,ystep,paintType,tilingType]}function mapSpecialUnicodeValues(code){return code>=65520&&65535>=code?0:code>=62976&&63743>=code?SpecialPUASymbols[code]||code:code}function getUnicodeRangeFor(value){for(var i=0,ii=UnicodeRanges.length;ii>i;i++){var range=UnicodeRanges[i];if(value>=range.begin&&value<range.end)return i}return-1}function isRTLRangeFor(value){var range=UnicodeRanges[13];return value>=range.begin&&value<range.end?!0:(range=UnicodeRanges[11],value>=range.begin&&value<range.end?!0:!1)}function reverseIfRtl(chars){var charsLength=chars.length;if(1>=charsLength||!isRTLRangeFor(chars.charCodeAt(0)))return chars;for(var s="",ii=charsLength-1;ii>=0;ii--)s+=chars[ii];return s}function adjustWidths(properties){if(properties.fontMatrix[0]!==FONT_IDENTITY_MATRIX[0]){var scale=.001/properties.fontMatrix[0],glyphsWidths=properties.widths;for(var glyph in glyphsWidths)glyphsWidths[glyph]*=scale;properties.defaultWidth*=scale}}function getFontType(type,subtype){switch(type){case"Type1":return"Type1C"===subtype?FontType.TYPE1C:FontType.TYPE1;case"CIDFontType0":return"CIDFontType0C"===subtype?FontType.CIDFONTTYPE0C:FontType.CIDFONTTYPE0;case"OpenType":return FontType.OPENTYPE;case"TrueType":return FontType.TRUETYPE;case"CIDFontType2":return FontType.CIDFONTTYPE2;case"MMType1":return FontType.MMTYPE1;case"Type0":return FontType.TYPE0;default:return FontType.UNKNOWN}}function type1FontGlyphMapping(properties,builtInEncoding,glyphNames){var glyphId,charCode,baseEncoding,charCodeToGlyphId=Object.create(null);if(properties.baseEncodingName)for(baseEncoding=Encodings[properties.baseEncodingName],charCode=0;charCode<baseEncoding.length;charCode++)glyphId=glyphNames.indexOf(baseEncoding[charCode]),glyphId>=0&&(charCodeToGlyphId[charCode]=glyphId);else if(properties.flags&FontFlags.Symbolic)for(charCode in builtInEncoding)charCodeToGlyphId[charCode]=builtInEncoding[charCode];else for(baseEncoding=Encodings.StandardEncoding,charCode=0;charCode<baseEncoding.length;charCode++)glyphId=glyphNames.indexOf(baseEncoding[charCode]),glyphId>=0&&(charCodeToGlyphId[charCode]=glyphId);var differences=properties.differences;if(differences)for(charCode in differences){var glyphName=differences[charCode];glyphId=glyphNames.indexOf(glyphName),glyphId>=0&&(charCodeToGlyphId[charCode]=glyphId)}return charCodeToGlyphId}function isEOF(v){return v===EOF}var globalScope="undefined"==typeof window?this:window,FONT_IDENTITY_MATRIX=[.001,0,0,.001,0,0],TextRenderingMode={FILL:0,STROKE:1,FILL_STROKE:2,INVISIBLE:3,FILL_ADD_TO_PATH:4,STROKE_ADD_TO_PATH:5,FILL_STROKE_ADD_TO_PATH:6,ADD_TO_PATH:7,FILL_STROKE_MASK:3,ADD_TO_PATH_FLAG:4},ImageKind={GRAYSCALE_1BPP:1,RGB_24BPP:2,RGBA_32BPP:3},AnnotationType={WIDGET:1,TEXT:2,LINK:3},StreamType={UNKNOWN:0,FLATE:1,LZW:2,DCT:3,JPX:4,JBIG:5,A85:6,AHX:7,CCF:8,RL:9},FontType={UNKNOWN:0,TYPE1:1,TYPE1C:2,CIDFONTTYPE0:3,CIDFONTTYPE0C:4,TRUETYPE:5,CIDFONTTYPE2:6,TYPE3:7,OPENTYPE:8,TYPE0:9,MMTYPE1:10};globalScope.PDFJS||(globalScope.PDFJS={}),globalScope.PDFJS.pdfBug=!1,PDFJS.VERBOSITY_LEVELS={errors:0,warnings:1,infos:5};var OPS=PDFJS.OPS={dependency:1,setLineWidth:2,setLineCap:3,setLineJoin:4,setMiterLimit:5,setDash:6,setRenderingIntent:7,setFlatness:8,setGState:9,save:10,restore:11,transform:12,moveTo:13,lineTo:14,curveTo:15,curveTo2:16,curveTo3:17,closePath:18,rectangle:19,stroke:20,closeStroke:21,fill:22,eoFill:23,fillStroke:24,eoFillStroke:25,closeFillStroke:26,closeEOFillStroke:27,endPath:28,clip:29,eoClip:30,beginText:31,endText:32,setCharSpacing:33,setWordSpacing:34,setHScale:35,setLeading:36,setFont:37,setTextRenderingMode:38,setTextRise:39,moveText:40,setLeadingMoveText:41,setTextMatrix:42,nextLine:43,showText:44,showSpacedText:45,nextLineShowText:46,nextLineSetSpacingShowText:47,setCharWidth:48,setCharWidthAndBounds:49,setStrokeColorSpace:50,setFillColorSpace:51,setStrokeColor:52,setStrokeColorN:53,setFillColor:54,setFillColorN:55,setStrokeGray:56,setFillGray:57,setStrokeRGBColor:58,setFillRGBColor:59,setStrokeCMYKColor:60,setFillCMYKColor:61,shadingFill:62,beginInlineImage:63,beginImageData:64,endInlineImage:65,paintXObject:66,markPoint:67,markPointProps:68,beginMarkedContent:69,beginMarkedContentProps:70,endMarkedContent:71,beginCompat:72,endCompat:73,paintFormXObjectBegin:74,paintFormXObjectEnd:75,beginGroup:76,endGroup:77,beginAnnotations:78,endAnnotations:79,beginAnnotation:80,endAnnotation:81,paintJpegXObject:82,paintImageMaskXObject:83,paintImageMaskXObjectGroup:84,paintImageXObject:85,paintInlineImageXObject:86,paintInlineImageXObjectGroup:87,paintImageXObjectRepeat:88,paintImageMaskXObjectRepeat:89,paintSolidColorImageMask:90,constructPath:91},UNSUPPORTED_FEATURES=PDFJS.UNSUPPORTED_FEATURES={unknown:"unknown",forms:"forms",javaScript:"javaScript",smask:"smask",shadingPattern:"shadingPattern",font:"font"},UnsupportedManager=PDFJS.UnsupportedManager=function(){var listeners=[];return{listen:function(cb){listeners.push(cb)},notify:function(featureId){warn('Unsupported feature "'+featureId+'"');for(var i=0,ii=listeners.length;ii>i;i++)listeners[i](featureId)}}}();PDFJS.isValidUrl=isValidUrl;var PasswordResponses=PDFJS.PasswordResponses={NEED_PASSWORD:1,INCORRECT_PASSWORD:2},PasswordException=function(){function PasswordException(msg,code){this.name="PasswordException",this.message=msg,this.code=code}return PasswordException.prototype=new Error,PasswordException.constructor=PasswordException,PasswordException}();PDFJS.PasswordException=PasswordException;var UnknownErrorException=function(){function UnknownErrorException(msg,details){this.name="UnknownErrorException",this.message=msg,this.details=details}return UnknownErrorException.prototype=new Error,UnknownErrorException.constructor=UnknownErrorException,UnknownErrorException}();PDFJS.UnknownErrorException=UnknownErrorException;var InvalidPDFException=function(){function InvalidPDFException(msg){this.name="InvalidPDFException",this.message=msg}return InvalidPDFException.prototype=new Error,InvalidPDFException.constructor=InvalidPDFException,InvalidPDFException}();PDFJS.InvalidPDFException=InvalidPDFException;var MissingPDFException=function(){function MissingPDFException(msg){this.name="MissingPDFException",this.message=msg}return MissingPDFException.prototype=new Error,MissingPDFException.constructor=MissingPDFException,MissingPDFException}();PDFJS.MissingPDFException=MissingPDFException;var UnexpectedResponseException=function(){function UnexpectedResponseException(msg,status){this.name="UnexpectedResponseException",this.message=msg,this.status=status}return UnexpectedResponseException.prototype=new Error,UnexpectedResponseException.constructor=UnexpectedResponseException,UnexpectedResponseException}();PDFJS.UnexpectedResponseException=UnexpectedResponseException;var NotImplementedException=function(){function NotImplementedException(msg){this.message=msg}return NotImplementedException.prototype=new Error,NotImplementedException.prototype.name="NotImplementedException",NotImplementedException.constructor=NotImplementedException,NotImplementedException}(),MissingDataException=function(){function MissingDataException(begin,end){this.begin=begin,this.end=end,this.message="Missing data ["+begin+", "+end+")"}return MissingDataException.prototype=new Error,MissingDataException.prototype.name="MissingDataException",MissingDataException.constructor=MissingDataException,MissingDataException}(),XRefParseException=function(){function XRefParseException(msg){this.message=msg}return XRefParseException.prototype=new Error,XRefParseException.prototype.name="XRefParseException",XRefParseException.constructor=XRefParseException,XRefParseException}();Object.defineProperty(PDFJS,"isLittleEndian",{configurable:!0,get:function(){return shadow(PDFJS,"isLittleEndian",isLittleEndian())}}),Object.defineProperty(PDFJS,"hasCanvasTypedArrays",{configurable:!0,get:function(){return shadow(PDFJS,"hasCanvasTypedArrays",hasCanvasTypedArrays())}});var Uint32ArrayView=function(){function Uint32ArrayView(buffer,length){this.buffer=buffer,this.byteLength=buffer.length,this.length=void 0===length?this.byteLength>>2:length,ensureUint32ArrayViewProps(this.length)}function createUint32ArrayProp(index){return{get:function(){var buffer=this.buffer,offset=index<<2;return(buffer[offset]|buffer[offset+1]<<8|buffer[offset+2]<<16|buffer[offset+3]<<24)>>>0},set:function(value){var buffer=this.buffer,offset=index<<2;buffer[offset]=255&value,buffer[offset+1]=value>>8&255,buffer[offset+2]=value>>16&255,buffer[offset+3]=value>>>24&255}}}function ensureUint32ArrayViewProps(length){for(;length>uint32ArrayViewSetters;)Object.defineProperty(Uint32ArrayView.prototype,uint32ArrayViewSetters,createUint32ArrayProp(uint32ArrayViewSetters)),uint32ArrayViewSetters++}Uint32ArrayView.prototype=Object.create(null);var uint32ArrayViewSetters=0;return Uint32ArrayView}(),IDENTITY_MATRIX=[1,0,0,1,0,0],Util=PDFJS.Util=function(){function Util(){}var rgbBuf=["rgb(",0,",",0,",",0,")"];return Util.makeCssRgb=function(rgb){return rgbBuf[1]=rgb[0],rgbBuf[3]=rgb[1],rgbBuf[5]=rgb[2],rgbBuf.join("")},Util.transform=function(m1,m2){return[m1[0]*m2[0]+m1[2]*m2[1],m1[1]*m2[0]+m1[3]*m2[1],m1[0]*m2[2]+m1[2]*m2[3],m1[1]*m2[2]+m1[3]*m2[3],m1[0]*m2[4]+m1[2]*m2[5]+m1[4],m1[1]*m2[4]+m1[3]*m2[5]+m1[5]]},Util.applyTransform=function(p,m){var xt=p[0]*m[0]+p[1]*m[2]+m[4],yt=p[0]*m[1]+p[1]*m[3]+m[5];return[xt,yt]},Util.applyInverseTransform=function(p,m){var d=m[0]*m[3]-m[1]*m[2],xt=(p[0]*m[3]-p[1]*m[2]+m[2]*m[5]-m[4]*m[3])/d,yt=(-p[0]*m[1]+p[1]*m[0]+m[4]*m[1]-m[5]*m[0])/d;return[xt,yt]},Util.getAxialAlignedBoundingBox=function(r,m){var p1=Util.applyTransform(r,m),p2=Util.applyTransform(r.slice(2,4),m),p3=Util.applyTransform([r[0],r[3]],m),p4=Util.applyTransform([r[2],r[1]],m);return[Math.min(p1[0],p2[0],p3[0],p4[0]),Math.min(p1[1],p2[1],p3[1],p4[1]),Math.max(p1[0],p2[0],p3[0],p4[0]),Math.max(p1[1],p2[1],p3[1],p4[1])]},Util.inverseTransform=function(m){var d=m[0]*m[3]-m[1]*m[2];return[m[3]/d,-m[1]/d,-m[2]/d,m[0]/d,(m[2]*m[5]-m[4]*m[3])/d,(m[4]*m[1]-m[5]*m[0])/d]},Util.apply3dTransform=function(m,v){return[m[0]*v[0]+m[1]*v[1]+m[2]*v[2],m[3]*v[0]+m[4]*v[1]+m[5]*v[2],m[6]*v[0]+m[7]*v[1]+m[8]*v[2]]},Util.singularValueDecompose2dScale=function(m){var transpose=[m[0],m[2],m[1],m[3]],a=m[0]*transpose[0]+m[1]*transpose[2],b=m[0]*transpose[1]+m[1]*transpose[3],c=m[2]*transpose[0]+m[3]*transpose[2],d=m[2]*transpose[1]+m[3]*transpose[3],first=(a+d)/2,second=Math.sqrt((a+d)*(a+d)-4*(a*d-c*b))/2,sx=first+second||1,sy=first-second||1;return[Math.sqrt(sx),Math.sqrt(sy)]},Util.normalizeRect=function(rect){var r=rect.slice(0);return rect[0]>rect[2]&&(r[0]=rect[2],r[2]=rect[0]),rect[1]>rect[3]&&(r[1]=rect[3],r[3]=rect[1]),r},Util.intersect=function(rect1,rect2){function compare(a,b){return a-b}var orderedX=[rect1[0],rect1[2],rect2[0],rect2[2]].sort(compare),orderedY=[rect1[1],rect1[3],rect2[1],rect2[3]].sort(compare),result=[];return rect1=Util.normalizeRect(rect1),rect2=Util.normalizeRect(rect2),orderedX[0]===rect1[0]&&orderedX[1]===rect2[0]||orderedX[0]===rect2[0]&&orderedX[1]===rect1[0]?(result[0]=orderedX[1],result[2]=orderedX[2],orderedY[0]===rect1[1]&&orderedY[1]===rect2[1]||orderedY[0]===rect2[1]&&orderedY[1]===rect1[1]?(result[1]=orderedY[1],result[3]=orderedY[2],result):!1):!1},Util.sign=function(num){return 0>num?-1:1},Util.appendToArray=function(arr1,arr2){Array.prototype.push.apply(arr1,arr2)},Util.prependToArray=function(arr1,arr2){Array.prototype.unshift.apply(arr1,arr2)},Util.extendObj=function(obj1,obj2){for(var key in obj2)obj1[key]=obj2[key]},Util.getInheritableProperty=function(dict,name){for(;dict&&!dict.has(name);)dict=dict.get("Parent");return dict?dict.get(name):null},Util.inherit=function(sub,base,prototype){sub.prototype=Object.create(base.prototype),sub.prototype.constructor=sub;for(var prop in prototype)sub.prototype[prop]=prototype[prop]},Util.loadScript=function(src,callback){var script=document.createElement("script"),loaded=!1;script.setAttribute("src",src),callback&&(script.onload=function(){loaded||callback(),loaded=!0}),document.getElementsByTagName("head")[0].appendChild(script)},Util}(),PDFStringTranslateTable=(PDFJS.PageViewport=function(){function PageViewport(viewBox,scale,rotation,offsetX,offsetY,dontFlip){this.viewBox=viewBox,this.scale=scale,this.rotation=rotation,this.offsetX=offsetX,this.offsetY=offsetY;var rotateA,rotateB,rotateC,rotateD,centerX=(viewBox[2]+viewBox[0])/2,centerY=(viewBox[3]+viewBox[1])/2;switch(rotation%=360,rotation=0>rotation?rotation+360:rotation){case 180:rotateA=-1,rotateB=0,rotateC=0,rotateD=1;break;case 90:rotateA=0,rotateB=1,rotateC=1,rotateD=0;break;case 270:rotateA=0,rotateB=-1,rotateC=-1,rotateD=0;break;default:rotateA=1,rotateB=0,rotateC=0,rotateD=-1}dontFlip&&(rotateC=-rotateC,rotateD=-rotateD);var offsetCanvasX,offsetCanvasY,width,height;0===rotateA?(offsetCanvasX=Math.abs(centerY-viewBox[1])*scale+offsetX,offsetCanvasY=Math.abs(centerX-viewBox[0])*scale+offsetY,width=Math.abs(viewBox[3]-viewBox[1])*scale,height=Math.abs(viewBox[2]-viewBox[0])*scale):(offsetCanvasX=Math.abs(centerX-viewBox[0])*scale+offsetX,offsetCanvasY=Math.abs(centerY-viewBox[1])*scale+offsetY,width=Math.abs(viewBox[2]-viewBox[0])*scale,height=Math.abs(viewBox[3]-viewBox[1])*scale),this.transform=[rotateA*scale,rotateB*scale,rotateC*scale,rotateD*scale,offsetCanvasX-rotateA*scale*centerX-rotateC*scale*centerY,offsetCanvasY-rotateB*scale*centerX-rotateD*scale*centerY],this.width=width,this.height=height,this.fontScale=scale}return PageViewport.prototype={clone:function(args){args=args||{};var scale="scale"in args?args.scale:this.scale,rotation="rotation"in args?args.rotation:this.rotation;return new PageViewport(this.viewBox.slice(),scale,rotation,this.offsetX,this.offsetY,args.dontFlip)},convertToViewportPoint:function(x,y){return Util.applyTransform([x,y],this.transform)},convertToViewportRectangle:function(rect){var tl=Util.applyTransform([rect[0],rect[1]],this.transform),br=Util.applyTransform([rect[2],rect[3]],this.transform);return[tl[0],tl[1],br[0],br[1]]},convertToPdfPoint:function(x,y){return Util.applyInverseTransform([x,y],this.transform)}},PageViewport}(),[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,728,711,710,729,733,731,730,732,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8226,8224,8225,8230,8212,8211,402,8260,8249,8250,8722,8240,8222,8220,8221,8216,8217,8218,8482,64257,64258,321,338,352,376,381,305,322,339,353,382,0,8364]);PDFJS.createPromiseCapability=createPromiseCapability,function(){function Promise(resolver){this._status=STATUS_PENDING,this._handlers=[];try{resolver.call(this,this._resolve.bind(this),this._reject.bind(this))}catch(e){this._reject(e)}}if(globalScope.Promise)return"function"!=typeof globalScope.Promise.all&&(globalScope.Promise.all=function(iterable){var resolve,reject,count=0,results=[],promise=new globalScope.Promise(function(resolve_,reject_){resolve=resolve_,reject=reject_});return iterable.forEach(function(p,i){count++,p.then(function(result){results[i]=result,count--,0===count&&resolve(results)},reject)}),0===count&&resolve(results),promise}),"function"!=typeof globalScope.Promise.resolve&&(globalScope.Promise.resolve=function(value){return new globalScope.Promise(function(resolve){resolve(value)})}),"function"!=typeof globalScope.Promise.reject&&(globalScope.Promise.reject=function(reason){return new globalScope.Promise(function(resolve,reject){reject(reason)})}),void("function"!=typeof globalScope.Promise.prototype.catch&&(globalScope.Promise.prototype.catch=function(onReject){return globalScope.Promise.prototype.then(void 0,onReject)}));var STATUS_PENDING=0,STATUS_RESOLVED=1,STATUS_REJECTED=2,REJECTION_TIMEOUT=500,HandlerManager={handlers:[],running:!1,unhandledRejections:[],pendingRejectionCheck:!1,scheduleHandlers:function(promise){promise._status!==STATUS_PENDING&&(this.handlers=this.handlers.concat(promise._handlers),promise._handlers=[],this.running||(this.running=!0,setTimeout(this.runHandlers.bind(this),0)))},runHandlers:function(){for(var RUN_TIMEOUT=1,timeoutAt=Date.now()+RUN_TIMEOUT;this.handlers.length>0;){var handler=this.handlers.shift(),nextStatus=handler.thisPromise._status,nextValue=handler.thisPromise._value;try{nextStatus===STATUS_RESOLVED?"function"==typeof handler.onResolve&&(nextValue=handler.onResolve(nextValue)):"function"==typeof handler.onReject&&(nextValue=handler.onReject(nextValue),nextStatus=STATUS_RESOLVED,handler.thisPromise._unhandledRejection&&this.removeUnhandeledRejection(handler.thisPromise))}catch(ex){nextStatus=STATUS_REJECTED,nextValue=ex}if(handler.nextPromise._updateStatus(nextStatus,nextValue),Date.now()>=timeoutAt)break}return this.handlers.length>0?void setTimeout(this.runHandlers.bind(this),0):void(this.running=!1)},addUnhandledRejection:function(promise){this.unhandledRejections.push({promise:promise,time:Date.now()}),this.scheduleRejectionCheck()},removeUnhandeledRejection:function(promise){promise._unhandledRejection=!1;for(var i=0;i<this.unhandledRejections.length;i++)this.unhandledRejections[i].promise===promise&&(this.unhandledRejections.splice(i),i--)},scheduleRejectionCheck:function(){this.pendingRejectionCheck||(this.pendingRejectionCheck=!0,setTimeout(function(){this.pendingRejectionCheck=!1;for(var now=Date.now(),i=0;i<this.unhandledRejections.length;i++)if(now-this.unhandledRejections[i].time>REJECTION_TIMEOUT){var unhandled=this.unhandledRejections[i].promise._value,msg="Unhandled rejection: "+unhandled;unhandled.stack&&(msg+="\n"+unhandled.stack),warn(msg),this.unhandledRejections.splice(i),i--}this.unhandledRejections.length&&this.scheduleRejectionCheck()}.bind(this),REJECTION_TIMEOUT))}};Promise.all=function(promises){function reject(reason){deferred._status!==STATUS_REJECTED&&(results=[],rejectAll(reason))}var resolveAll,rejectAll,deferred=new Promise(function(resolve,reject){resolveAll=resolve,rejectAll=reject}),unresolved=promises.length,results=[];if(0===unresolved)return resolveAll(results),deferred;for(var i=0,ii=promises.length;ii>i;++i){var promise=promises[i],resolve=function(i){return function(value){deferred._status!==STATUS_REJECTED&&(results[i]=value,unresolved--,0===unresolved&&resolveAll(results))}}(i);Promise.isPromise(promise)?promise.then(resolve,reject):resolve(promise)}return deferred},Promise.isPromise=function(value){return value&&"function"==typeof value.then},Promise.resolve=function(value){return new Promise(function(resolve){resolve(value)})},Promise.reject=function(reason){return new Promise(function(resolve,reject){reject(reason)})},Promise.prototype={_status:null,_value:null,_handlers:null,_unhandledRejection:null,_updateStatus:function(status,value){if(this._status!==STATUS_RESOLVED&&this._status!==STATUS_REJECTED){if(status===STATUS_RESOLVED&&Promise.isPromise(value))return void value.then(this._updateStatus.bind(this,STATUS_RESOLVED),this._updateStatus.bind(this,STATUS_REJECTED));this._status=status,this._value=value,status===STATUS_REJECTED&&0===this._handlers.length&&(this._unhandledRejection=!0,HandlerManager.addUnhandledRejection(this)),HandlerManager.scheduleHandlers(this)}},_resolve:function(value){this._updateStatus(STATUS_RESOLVED,value)},_reject:function(reason){this._updateStatus(STATUS_REJECTED,reason)},then:function(onResolve,onReject){var nextPromise=new Promise(function(resolve,reject){this.resolve=resolve,this.reject=reject});return this._handlers.push({thisPromise:this,onResolve:onResolve,onReject:onReject,nextPromise:nextPromise}),HandlerManager.scheduleHandlers(this),nextPromise},"catch":function(onReject){return this.then(void 0,onReject)}},globalScope.Promise=Promise}();!function(){function rpad(str,pad,length){for(;str.length<length;)str+=pad;return str}function StatTimer(){this.started={},this.times=[],this.enabled=!0}return StatTimer.prototype={time:function(name){this.enabled&&(name in this.started&&warn("Timer is already running for "+name),this.started[name]=Date.now())},timeEnd:function(name){this.enabled&&(name in this.started||warn("Timer has not been started for "+name),this.times.push({name:name,start:this.started[name],end:Date.now()}),delete this.started[name])},toString:function(){var i,ii,times=this.times,out="",longest=0;for(i=0,ii=times.length;ii>i;++i){var name=times[i].name;name.length>longest&&(longest=name.length)}for(i=0,ii=times.length;ii>i;++i){var span=times[i],duration=span.end-span.start;out+=rpad(span.name," ",longest)+" "+duration+"ms\n"}return out}},StatTimer}();PDFJS.createBlob=function(data,contentType){if("undefined"!=typeof Blob)return new Blob([data],{type:contentType});var bb=new MozBlobBuilder;return bb.append(data),bb.getBlob(contentType)},PDFJS.createObjectURL=function(){var digits="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";return function(data,contentType){if(!PDFJS.disableCreateObjectURL&&"undefined"!=typeof URL&&URL.createObjectURL){var blob=PDFJS.createBlob(data,contentType);return URL.createObjectURL(blob)}for(var buffer="data:"+contentType+";base64,",i=0,ii=data.length;ii>i;i+=3){var b1=255&data[i],b2=255&data[i+1],b3=255&data[i+2],d1=b1>>2,d2=(3&b1)<<4|b2>>4,d3=ii>i+1?(15&b2)<<2|b3>>6:64,d4=ii>i+2?63&b3:64;buffer+=digits[d1]+digits[d2]+digits[d3]+digits[d4]}return buffer}}(),MessageHandler.prototype={on:function(actionName,handler,scope){var ah=this.actionHandler;ah[actionName]&&error('There is already an actionName called "'+actionName+'"'),ah[actionName]=[handler,scope]},send:function(actionName,data,transfers){var message={action:actionName,data:data};this.postMessage(message,transfers)},sendWithPromise:function(actionName,data,transfers){var callbackId=this.callbackIndex++,message={action:actionName,data:data,callbackId:callbackId},capability=createPromiseCapability();this.callbacksCapabilities[callbackId]=capability;try{this.postMessage(message,transfers)}catch(e){capability.reject(e)}return capability.promise},postMessage:function(message,transfers){transfers&&this.postMessageTransfers?this.comObj.postMessage(message,transfers):this.comObj.postMessage(message)}};var NetworkManager=function(){function NetworkManager(url,args){this.url=url,args=args||{},this.isHttp=/^https?:/i.test(url),this.httpHeaders=this.isHttp&&args.httpHeaders||{},this.withCredentials=args.withCredentials||!1,this.getXhr=args.getXhr||function(){return new XMLHttpRequest},this.currXhrId=0,this.pendingRequests={},this.loadedRequests={}}function getArrayBuffer(xhr){var data=xhr.response;if("string"!=typeof data)return data;for(var length=data.length,buffer=new Uint8Array(length),i=0;length>i;i++)buffer[i]=255&data.charCodeAt(i);return buffer}var OK_RESPONSE=200,PARTIAL_CONTENT_RESPONSE=206;return NetworkManager.prototype={requestRange:function(begin,end,listeners){var args={begin:begin,end:end};for(var prop in listeners)args[prop]=listeners[prop];return this.request(args)},requestFull:function(listeners){return this.request(listeners)},request:function(args){var xhr=this.getXhr(),xhrId=this.currXhrId++,pendingRequest=this.pendingRequests[xhrId]={xhr:xhr};xhr.open("GET",this.url),xhr.withCredentials=this.withCredentials;for(var property in this.httpHeaders){var value=this.httpHeaders[property];"undefined"!=typeof value&&xhr.setRequestHeader(property,value)}if(this.isHttp&&"begin"in args&&"end"in args){var rangeStr=args.begin+"-"+(args.end-1);xhr.setRequestHeader("Range","bytes="+rangeStr),pendingRequest.expectedStatus=206}else pendingRequest.expectedStatus=200;return xhr.responseType="arraybuffer",args.onProgress&&(xhr.onprogress=args.onProgress),args.onError&&(xhr.onerror=function(){args.onError(xhr.status)}),xhr.onreadystatechange=this.onStateChange.bind(this,xhrId),pendingRequest.onHeadersReceived=args.onHeadersReceived,pendingRequest.onDone=args.onDone,pendingRequest.onError=args.onError,xhr.send(null),xhrId},onStateChange:function(xhrId){var pendingRequest=this.pendingRequests[xhrId];if(pendingRequest){var xhr=pendingRequest.xhr;if(xhr.readyState>=2&&pendingRequest.onHeadersReceived&&(pendingRequest.onHeadersReceived(),delete pendingRequest.onHeadersReceived),4===xhr.readyState&&xhrId in this.pendingRequests){if(delete this.pendingRequests[xhrId],0===xhr.status&&this.isHttp)return void(pendingRequest.onError&&pendingRequest.onError(xhr.status));var xhrStatus=xhr.status||OK_RESPONSE,ok_response_on_range_request=xhrStatus===OK_RESPONSE&&pendingRequest.expectedStatus===PARTIAL_CONTENT_RESPONSE;if(!ok_response_on_range_request&&xhrStatus!==pendingRequest.expectedStatus)return void(pendingRequest.onError&&pendingRequest.onError(xhr.status));this.loadedRequests[xhrId]=!0;var chunk=getArrayBuffer(xhr);if(xhrStatus===PARTIAL_CONTENT_RESPONSE){var rangeHeader=xhr.getResponseHeader("Content-Range"),matches=/bytes (\d+)-(\d+)\/(\d+)/.exec(rangeHeader),begin=parseInt(matches[1],10);pendingRequest.onDone({begin:begin,chunk:chunk})}else pendingRequest.onDone({begin:0,chunk:chunk})}}},hasPendingRequests:function(){for(var xhrId in this.pendingRequests)return!0;return!1},getRequestXhr:function(xhrId){return this.pendingRequests[xhrId].xhr},isPendingRequest:function(xhrId){return xhrId in this.pendingRequests},isLoadedRequest:function(xhrId){return xhrId in this.loadedRequests},abortAllRequests:function(){for(var xhrId in this.pendingRequests)this.abortRequest(0|xhrId)},abortRequest:function(xhrId){var xhr=this.pendingRequests[xhrId].xhr;delete this.pendingRequests[xhrId],xhr.abort()}},NetworkManager}(),ChunkedStream=function(){function ChunkedStream(length,chunkSize,manager){this.bytes=new Uint8Array(length),this.start=0,this.pos=0,this.end=length,this.chunkSize=chunkSize,this.loadedChunks=[],this.numChunksLoaded=0,this.numChunks=Math.ceil(length/chunkSize),this.manager=manager,this.initialDataLength=0,this.lastSuccessfulEnsureByteChunk=-1}return ChunkedStream.prototype={getMissingChunks:function(){for(var chunks=[],chunk=0,n=this.numChunks;n>chunk;++chunk)chunk in this.loadedChunks||chunks.push(chunk);return chunks},getBaseStreams:function(){return[this]},allChunksLoaded:function(){return this.numChunksLoaded===this.numChunks},onReceiveData:function(begin,chunk){var end=begin+chunk.byteLength;assert(begin%this.chunkSize===0,"Bad begin offset: "+begin);var length=this.bytes.length;assert(end%this.chunkSize===0||end===length,"Bad end offset: "+end),this.bytes.set(new Uint8Array(chunk),begin);var curChunk,chunkSize=this.chunkSize,beginChunk=Math.floor(begin/chunkSize),endChunk=Math.floor((end-1)/chunkSize)+1;for(curChunk=beginChunk;endChunk>curChunk;++curChunk)curChunk in this.loadedChunks||(this.loadedChunks[curChunk]=!0,++this.numChunksLoaded)},onReceiveInitialData:function(data){this.bytes.set(data),this.initialDataLength=data.length;
for(var endChunk=this.end===data.length?this.numChunks:Math.floor(data.length/this.chunkSize),i=0;endChunk>i;i++)this.loadedChunks[i]=!0,++this.numChunksLoaded},ensureByte:function(pos){var chunk=Math.floor(pos/this.chunkSize);if(chunk!==this.lastSuccessfulEnsureByteChunk){if(!(chunk in this.loadedChunks))throw new MissingDataException(pos,pos+1);this.lastSuccessfulEnsureByteChunk=chunk}},ensureRange:function(begin,end){if(!(begin>=end||end<=this.initialDataLength))for(var chunkSize=this.chunkSize,beginChunk=Math.floor(begin/chunkSize),endChunk=Math.floor((end-1)/chunkSize)+1,chunk=beginChunk;endChunk>chunk;++chunk)if(!(chunk in this.loadedChunks))throw new MissingDataException(begin,end)},nextEmptyChunk:function(beginChunk){var chunk,n;for(chunk=beginChunk,n=this.numChunks;n>chunk;++chunk)if(!(chunk in this.loadedChunks))return chunk;for(chunk=0;beginChunk>chunk;++chunk)if(!(chunk in this.loadedChunks))return chunk;return null},hasChunk:function(chunk){return chunk in this.loadedChunks},get length(){return this.end-this.start},get isEmpty(){return 0===this.length},getByte:function(){var pos=this.pos;return pos>=this.end?-1:(this.ensureByte(pos),this.bytes[this.pos++])},getUint16:function(){var b0=this.getByte(),b1=this.getByte();return(b0<<8)+b1},getInt32:function(){var b0=this.getByte(),b1=this.getByte(),b2=this.getByte(),b3=this.getByte();return(b0<<24)+(b1<<16)+(b2<<8)+b3},getBytes:function(length){var bytes=this.bytes,pos=this.pos,strEnd=this.end;if(!length)return this.ensureRange(pos,strEnd),bytes.subarray(pos,strEnd);var end=pos+length;return end>strEnd&&(end=strEnd),this.ensureRange(pos,end),this.pos=end,bytes.subarray(pos,end)},peekByte:function(){var peekedByte=this.getByte();return this.pos--,peekedByte},peekBytes:function(length){var bytes=this.getBytes(length);return this.pos-=bytes.length,bytes},getByteRange:function(begin,end){return this.ensureRange(begin,end),this.bytes.subarray(begin,end)},skip:function(n){n||(n=1),this.pos+=n},reset:function(){this.pos=this.start},moveStart:function(){this.start=this.pos},makeSubStream:function(start,length,dict){function ChunkedStreamSubstream(){}this.ensureRange(start,start+length),ChunkedStreamSubstream.prototype=Object.create(this),ChunkedStreamSubstream.prototype.getMissingChunks=function(){for(var chunkSize=this.chunkSize,beginChunk=Math.floor(this.start/chunkSize),endChunk=Math.floor((this.end-1)/chunkSize)+1,missingChunks=[],chunk=beginChunk;endChunk>chunk;++chunk)chunk in this.loadedChunks||missingChunks.push(chunk);return missingChunks};var subStream=new ChunkedStreamSubstream;return subStream.pos=subStream.start=start,subStream.end=start+length||this.end,subStream.dict=dict,subStream},isStream:!0},ChunkedStream}(),ChunkedStreamManager=function(){function ChunkedStreamManager(length,chunkSize,url,args){this.stream=new ChunkedStream(length,chunkSize,this),this.length=length,this.chunkSize=chunkSize,this.url=url,this.disableAutoFetch=args.disableAutoFetch;var msgHandler=this.msgHandler=args.msgHandler;if(args.chunkedViewerLoading)msgHandler.on("OnDataRange",this.onReceiveData.bind(this)),msgHandler.on("OnDataProgress",this.onProgress.bind(this)),this.sendRequest=function(begin,end){msgHandler.send("RequestDataRange",{begin:begin,end:end})};else{var getXhr=function(){return new XMLHttpRequest};this.networkManager=new NetworkManager(this.url,{getXhr:getXhr,httpHeaders:args.httpHeaders,withCredentials:args.withCredentials}),this.sendRequest=function(begin,end){this.networkManager.requestRange(begin,end,{onDone:this.onReceiveData.bind(this),onProgress:this.onProgress.bind(this)})}}this.currRequestId=0,this.chunksNeededByRequest={},this.requestsByChunk={},this.callbacksByRequest={},this._loadedStreamCapability=createPromiseCapability(),args.initialData&&this.setInitialData(args.initialData)}return ChunkedStreamManager.prototype={setInitialData:function(data){this.stream.onReceiveInitialData(data),this.stream.allChunksLoaded()?this._loadedStreamCapability.resolve(this.stream):this.msgHandler&&this.msgHandler.send("DocProgress",{loaded:data.length,total:this.length})},onLoadedStream:function(){return this._loadedStreamCapability.promise},requestAllChunks:function(){var missingChunks=this.stream.getMissingChunks();return this.requestChunks(missingChunks),this._loadedStreamCapability.promise},requestChunks:function(chunks,callback){var chunksNeeded,i,ii,requestId=this.currRequestId++;for(this.chunksNeededByRequest[requestId]=chunksNeeded={},i=0,ii=chunks.length;ii>i;i++)this.stream.hasChunk(chunks[i])||(chunksNeeded[chunks[i]]=!0);if(isEmptyObj(chunksNeeded))return void(callback&&callback());this.callbacksByRequest[requestId]=callback;var chunksToRequest=[];for(var chunk in chunksNeeded)chunk=0|chunk,chunk in this.requestsByChunk||(this.requestsByChunk[chunk]=[],chunksToRequest.push(chunk)),this.requestsByChunk[chunk].push(requestId);if(chunksToRequest.length){var groupedChunksToRequest=this.groupChunks(chunksToRequest);for(i=0;i<groupedChunksToRequest.length;++i){var groupedChunk=groupedChunksToRequest[i],begin=groupedChunk.beginChunk*this.chunkSize,end=Math.min(groupedChunk.endChunk*this.chunkSize,this.length);this.sendRequest(begin,end)}}},getStream:function(){return this.stream},requestRange:function(begin,end,callback){end=Math.min(end,this.length);for(var beginChunk=this.getBeginChunk(begin),endChunk=this.getEndChunk(end),chunks=[],chunk=beginChunk;endChunk>chunk;++chunk)chunks.push(chunk);this.requestChunks(chunks,callback)},requestRanges:function(ranges,callback){ranges=ranges||[];for(var chunksToRequest=[],i=0;i<ranges.length;i++)for(var beginChunk=this.getBeginChunk(ranges[i].begin),endChunk=this.getEndChunk(ranges[i].end),chunk=beginChunk;endChunk>chunk;++chunk)chunksToRequest.indexOf(chunk)<0&&chunksToRequest.push(chunk);chunksToRequest.sort(function(a,b){return a-b}),this.requestChunks(chunksToRequest,callback)},groupChunks:function(chunks){for(var groupedChunks=[],beginChunk=-1,prevChunk=-1,i=0;i<chunks.length;++i){var chunk=chunks[i];0>beginChunk&&(beginChunk=chunk),prevChunk>=0&&prevChunk+1!==chunk&&(groupedChunks.push({beginChunk:beginChunk,endChunk:prevChunk+1}),beginChunk=chunk),i+1===chunks.length&&groupedChunks.push({beginChunk:beginChunk,endChunk:chunk+1}),prevChunk=chunk}return groupedChunks},onProgress:function(args){var bytesLoaded=this.stream.numChunksLoaded*this.chunkSize+args.loaded;this.msgHandler.send("DocProgress",{loaded:bytesLoaded,total:this.length})},onReceiveData:function(args){var chunk=args.chunk,begin=args.begin,end=begin+chunk.byteLength,beginChunk=this.getBeginChunk(begin),endChunk=this.getEndChunk(end);this.stream.onReceiveData(begin,chunk),this.stream.allChunksLoaded()&&this._loadedStreamCapability.resolve(this.stream);var i,requestId,loadedRequests=[];for(chunk=beginChunk;endChunk>chunk;++chunk){var requestIds=this.requestsByChunk[chunk]||[];for(delete this.requestsByChunk[chunk],i=0;i<requestIds.length;++i){requestId=requestIds[i];var chunksNeeded=this.chunksNeededByRequest[requestId];chunk in chunksNeeded&&delete chunksNeeded[chunk],isEmptyObj(chunksNeeded)&&loadedRequests.push(requestId)}}if(!this.disableAutoFetch&&isEmptyObj(this.requestsByChunk)){var nextEmptyChunk;if(1===this.stream.numChunksLoaded){var lastChunk=this.stream.numChunks-1;this.stream.hasChunk(lastChunk)||(nextEmptyChunk=lastChunk)}else nextEmptyChunk=this.stream.nextEmptyChunk(endChunk);isInt(nextEmptyChunk)&&this.requestChunks([nextEmptyChunk])}for(i=0;i<loadedRequests.length;++i){requestId=loadedRequests[i];var callback=this.callbacksByRequest[requestId];delete this.callbacksByRequest[requestId],callback&&callback()}this.msgHandler.send("DocProgress",{loaded:this.stream.numChunksLoaded*this.chunkSize,total:this.length})},onError:function(err){this._loadedStreamCapability.reject(err)},getBeginChunk:function(begin){var chunk=Math.floor(begin/this.chunkSize);return chunk},getEndChunk:function(end){if(end%this.chunkSize===0)return end/this.chunkSize;var chunk=Math.floor((end-1)/this.chunkSize)+1;return chunk}},ChunkedStreamManager}(),RANGE_CHUNK_SIZE=65536,BasePdfManager=function(){function BasePdfManager(){throw new Error("Cannot initialize BaseManagerManager")}return BasePdfManager.prototype={onLoadedStream:function(){throw new NotImplementedException},ensureDoc:function(prop,args){return this.ensure(this.pdfDocument,prop,args)},ensureXRef:function(prop,args){return this.ensure(this.pdfDocument.xref,prop,args)},ensureCatalog:function(prop,args){return this.ensure(this.pdfDocument.catalog,prop,args)},getPage:function(pageIndex){return this.pdfDocument.getPage(pageIndex)},cleanup:function(){return this.pdfDocument.cleanup()},ensure:function(){return new NotImplementedException},requestRange:function(){return new NotImplementedException},requestLoadedStream:function(){return new NotImplementedException},updatePassword:function(password){this.pdfDocument.xref.password=this.password=password,this._passwordChangedCapability&&this._passwordChangedCapability.resolve()},passwordChanged:function(){return this._passwordChangedCapability=createPromiseCapability(),this._passwordChangedCapability.promise},terminate:function(){return new NotImplementedException}},BasePdfManager}(),LocalPdfManager=function(){function LocalPdfManager(data,password){var stream=new Stream(data);this.pdfDocument=new PDFDocument(this,stream,password),this._loadedStreamCapability=createPromiseCapability(),this._loadedStreamCapability.resolve(stream)}return LocalPdfManager.prototype=Object.create(BasePdfManager.prototype),LocalPdfManager.prototype.constructor=LocalPdfManager,LocalPdfManager.prototype.ensure=function(obj,prop,args){return new Promise(function(resolve,reject){try{var result,value=obj[prop];result="function"==typeof value?value.apply(obj,args):value,resolve(result)}catch(e){reject(e)}})},LocalPdfManager.prototype.requestRange=function(){return Promise.resolve()},LocalPdfManager.prototype.requestLoadedStream=function(){},LocalPdfManager.prototype.onLoadedStream=function(){return this._loadedStreamCapability.promise},LocalPdfManager.prototype.terminate=function(){},LocalPdfManager}(),NetworkPdfManager=function(){function NetworkPdfManager(args,msgHandler){this.msgHandler=msgHandler;var params={msgHandler:msgHandler,httpHeaders:args.httpHeaders,withCredentials:args.withCredentials,chunkedViewerLoading:args.chunkedViewerLoading,disableAutoFetch:args.disableAutoFetch,initialData:args.initialData};this.streamManager=new ChunkedStreamManager(args.length,RANGE_CHUNK_SIZE,args.url,params),this.pdfDocument=new PDFDocument(this,this.streamManager.getStream(),args.password)}return NetworkPdfManager.prototype=Object.create(BasePdfManager.prototype),NetworkPdfManager.prototype.constructor=NetworkPdfManager,NetworkPdfManager.prototype.ensure=function(obj,prop,args){var pdfManager=this;return new Promise(function(resolve,reject){function ensureHelper(){try{var result,value=obj[prop];result="function"==typeof value?value.apply(obj,args):value,resolve(result)}catch(e){if(!(e instanceof MissingDataException))return void reject(e);pdfManager.streamManager.requestRange(e.begin,e.end,ensureHelper)}}ensureHelper()})},NetworkPdfManager.prototype.requestRange=function(begin,end){return new Promise(function(resolve){this.streamManager.requestRange(begin,end,function(){resolve()})}.bind(this))},NetworkPdfManager.prototype.requestLoadedStream=function(){this.streamManager.requestAllChunks()},NetworkPdfManager.prototype.onLoadedStream=function(){return this.streamManager.onLoadedStream()},NetworkPdfManager.prototype.terminate=function(){this.streamManager.networkManager.abortAllRequests()},NetworkPdfManager}(),Page=function(){function Page(pdfManager,xref,pageIndex,pageDict,ref,fontCache){this.pdfManager=pdfManager,this.pageIndex=pageIndex,this.pageDict=pageDict,this.xref=xref,this.ref=ref,this.fontCache=fontCache,this.idCounters={obj:0},this.resourcesPromise=null}var LETTER_SIZE_MEDIABOX=[0,0,612,792];return Page.prototype={getPageProp:function(key){return this.pageDict.get(key)},getInheritedPageProp:function(key){for(var dict=this.pageDict,value=dict.get(key);void 0===value&&(dict=dict.get("Parent"));)value=dict.get(key);return value},get content(){return this.getPageProp("Contents")},get resources(){var value=this.getInheritedPageProp("Resources");return void 0===value&&(value=Dict.empty),shadow(this,"resources",value)},get mediaBox(){var obj=this.getInheritedPageProp("MediaBox");return isArray(obj)&&4===obj.length||(obj=LETTER_SIZE_MEDIABOX),shadow(this,"mediaBox",obj)},get view(){var mediaBox=this.mediaBox,cropBox=this.getInheritedPageProp("CropBox");return isArray(cropBox)&&4===cropBox.length?(cropBox=Util.intersect(cropBox,mediaBox),cropBox?shadow(this,"view",cropBox):shadow(this,"view",mediaBox)):shadow(this,"view",mediaBox)},get annotationRefs(){return shadow(this,"annotationRefs",this.getInheritedPageProp("Annots"))},get rotate(){var rotate=this.getInheritedPageProp("Rotate")||0;return rotate%90!==0?rotate=0:rotate>=360?rotate%=360:0>rotate&&(rotate=(rotate%360+360)%360),shadow(this,"rotate",rotate)},getContentStream:function(){var stream,content=this.content;if(isArray(content)){var i,xref=this.xref,n=content.length,streams=[];for(i=0;n>i;++i)streams.push(xref.fetchIfRef(content[i]));stream=new StreamsSequenceStream(streams)}else stream=isStream(content)?content:new NullStream;return stream},loadResources:function(keys){return this.resourcesPromise||(this.resourcesPromise=this.pdfManager.ensure(this,"resources")),this.resourcesPromise.then(function(){var objectLoader=new ObjectLoader(this.resources.map,keys,this.xref);return objectLoader.load()}.bind(this))},getOperatorList:function(handler,intent){var self=this,pdfManager=this.pdfManager,contentStreamPromise=pdfManager.ensure(this,"getContentStream",[]),resourcesPromise=this.loadResources(["ExtGState","ColorSpace","Pattern","Shading","XObject","Font"]),partialEvaluator=new PartialEvaluator(pdfManager,this.xref,handler,this.pageIndex,"p"+this.pageIndex+"_",this.idCounters,this.fontCache),dataPromises=Promise.all([contentStreamPromise,resourcesPromise]),pageListPromise=dataPromises.then(function(data){var contentStream=data[0],opList=new OperatorList(intent,handler,self.pageIndex);return handler.send("StartRenderPage",{transparency:partialEvaluator.hasBlendModes(self.resources),pageIndex:self.pageIndex,intent:intent}),partialEvaluator.getOperatorList(contentStream,self.resources,opList).then(function(){return opList})}),annotationsPromise=pdfManager.ensure(this,"annotations");return Promise.all([pageListPromise,annotationsPromise]).then(function(datas){var pageOpList=datas[0],annotations=datas[1];if(0===annotations.length)return pageOpList.flush(!0),pageOpList;var annotationsReadyPromise=Annotation.appendToOperatorList(annotations,pageOpList,pdfManager,partialEvaluator,intent);return annotationsReadyPromise.then(function(){return pageOpList.flush(!0),pageOpList})})},extractTextContent:function(){var handler={on:function(){},send:function(){}},self=this,pdfManager=this.pdfManager,contentStreamPromise=pdfManager.ensure(this,"getContentStream",[]),resourcesPromise=this.loadResources(["ExtGState","XObject","Font"]),dataPromises=Promise.all([contentStreamPromise,resourcesPromise]);return dataPromises.then(function(data){var contentStream=data[0],partialEvaluator=new PartialEvaluator(pdfManager,self.xref,handler,self.pageIndex,"p"+self.pageIndex+"_",self.idCounters,self.fontCache);return partialEvaluator.getTextContent(contentStream,self.resources)})},getAnnotationsData:function(){for(var annotations=this.annotations,annotationsData=[],i=0,n=annotations.length;n>i;++i)annotationsData.push(annotations[i].getData());return annotationsData},get annotations(){for(var annotations=[],annotationRefs=this.annotationRefs||[],i=0,n=annotationRefs.length;n>i;++i){var annotationRef=annotationRefs[i],annotation=Annotation.fromRef(this.xref,annotationRef);annotation&&annotations.push(annotation)}return shadow(this,"annotations",annotations)}},Page}(),PDFDocument=function(){function PDFDocument(pdfManager,arg,password){isStream(arg)?init.call(this,pdfManager,arg,password):isArrayBuffer(arg)?init.call(this,pdfManager,new Stream(arg),password):error("PDFDocument: Unknown argument type")}function init(pdfManager,stream,password){assert(stream.length>0,"stream must have data"),this.pdfManager=pdfManager,this.stream=stream;var xref=new XRef(this.stream,password,pdfManager);this.xref=xref}function find(stream,needle,limit,backwards){var pos=stream.pos,end=stream.end,strBuf=[];pos+limit>end&&(limit=end-pos);for(var n=0;limit>n;++n)strBuf.push(String.fromCharCode(stream.getByte()));var str=strBuf.join("");stream.pos=pos;var index=backwards?str.lastIndexOf(needle):str.indexOf(needle);return-1===index?!1:(stream.pos+=index,!0)}var DocumentInfoValidators={get entries(){return shadow(this,"entries",{Title:isString,Author:isString,Subject:isString,Keywords:isString,Creator:isString,Producer:isString,CreationDate:isString,ModDate:isString,Trapped:isName})}};return PDFDocument.prototype={parse:function(recoveryMode){this.setup(recoveryMode);try{if(this.acroForm=this.catalog.catDict.get("AcroForm"),this.acroForm){this.xfa=this.acroForm.get("XFA");var fields=this.acroForm.get("Fields");fields&&isArray(fields)&&0!==fields.length||this.xfa||(this.acroForm=null)}}catch(ex){info("Something wrong with AcroForm entry"),this.acroForm=null}},get linearization(){var linearization=null;if(this.stream.length)try{linearization=Linearization.create(this.stream)}catch(err){if(err instanceof MissingDataException)throw err;info(err)}return shadow(this,"linearization",linearization)},get startXRef(){var stream=this.stream,startXRef=0,linearization=this.linearization;if(linearization)stream.reset(),find(stream,"endobj",1024)&&(startXRef=stream.pos+6);else{for(var step=1024,found=!1,pos=stream.end;!found&&pos>0;)pos-=step-"startxref".length,0>pos&&(pos=0),stream.pos=pos,found=find(stream,"startxref",step,!0);if(found){stream.skip(9);var ch;do ch=stream.getByte();while(Lexer.isSpace(ch));for(var str="";ch>=32&&57>=ch;)str+=String.fromCharCode(ch),ch=stream.getByte();startXRef=parseInt(str,10),isNaN(startXRef)&&(startXRef=0)}}return shadow(this,"startXRef",startXRef)},get mainXRefEntriesOffset(){var mainXRefEntriesOffset=0,linearization=this.linearization;return linearization&&(mainXRefEntriesOffset=linearization.mainXRefEntriesOffset),shadow(this,"mainXRefEntriesOffset",mainXRefEntriesOffset)},checkHeader:function(){var stream=this.stream;if(stream.reset(),find(stream,"%PDF-",1024)){stream.moveStart();for(var ch,MAX_VERSION_LENGTH=12,version="";(ch=stream.getByte())>32&&!(version.length>=MAX_VERSION_LENGTH);)version+=String.fromCharCode(ch);return void(this.pdfFormatVersion=version.substring(5))}},parseStartXRef:function(){var startXRef=this.startXRef;this.xref.setStartXRef(startXRef)},setup:function(recoveryMode){this.xref.parse(recoveryMode),this.catalog=new Catalog(this.pdfManager,this.xref)},get numPages(){var linearization=this.linearization,num=linearization?linearization.numPages:this.catalog.numPages;return shadow(this,"numPages",num)},get documentInfo(){var infoDict,docInfo={PDFFormatVersion:this.pdfFormatVersion,IsAcroFormPresent:!!this.acroForm,IsXFAPresent:!!this.xfa};try{infoDict=this.xref.trailer.get("Info")}catch(err){info("The document information dictionary is invalid.")}if(infoDict){var validEntries=DocumentInfoValidators.entries;for(var key in validEntries)if(infoDict.has(key)){var value=infoDict.get(key);validEntries[key](value)?docInfo[key]="string"!=typeof value?value:stringToPDFString(value):info('Bad value in document info for "'+key+'"')}}return shadow(this,"documentInfo",docInfo)},get fingerprint(){var hash,xref=this.xref,fileID="";hash=xref.trailer.has("ID")?stringToBytes(xref.trailer.get("ID")[0]):calculateMD5(this.stream.bytes.subarray(0,100),0,100);for(var i=0,n=hash.length;n>i;i++)fileID+=hash[i].toString(16);return shadow(this,"fingerprint",fileID)},getPage:function(pageIndex){return this.catalog.getPage(pageIndex)},cleanup:function(){return this.catalog.cleanup()}},PDFDocument}(),Name=function(){function Name(name){this.name=name}Name.prototype={};var nameCache={};return Name.get=function(name){var nameValue=nameCache[name];return nameValue?nameValue:nameCache[name]=new Name(name)},Name}(),Cmd=function(){function Cmd(cmd){this.cmd=cmd}Cmd.prototype={};var cmdCache={};return Cmd.get=function(cmd){var cmdValue=cmdCache[cmd];return cmdValue?cmdValue:cmdCache[cmd]=new Cmd(cmd)},Cmd}(),Dict=function(){function isRecursionAllowedFor(dict){if(!isName(dict.Type))return!0;var dictType=dict.Type.name;return GETALL_DICTIONARY_TYPES_WHITELIST[dictType]===!0}function Dict(xref){this.map=Object.create(null),this.xref=xref,this.objId=null,this.__nonSerializable__=nonSerializable}var nonSerializable=function(){return nonSerializable},GETALL_DICTIONARY_TYPES_WHITELIST={Background:!0,ExtGState:!0,Halftone:!0,Layout:!0,Mask:!0,Pagination:!0,Printing:!0};return Dict.prototype={assignXref:function(newXref){this.xref=newXref},get:function(key1,key2,key3){var value,xref=this.xref;return"undefined"!=typeof(value=this.map[key1])||key1 in this.map||"undefined"==typeof key2?xref?xref.fetchIfRef(value):value:"undefined"!=typeof(value=this.map[key2])||key2 in this.map||"undefined"==typeof key3?xref?xref.fetchIfRef(value):value:(value=this.map[key3]||null,xref?xref.fetchIfRef(value):value)},getAsync:function(key1,key2,key3){var value,xref=this.xref;return"undefined"!=typeof(value=this.map[key1])||key1 in this.map||"undefined"==typeof key2?xref?xref.fetchIfRefAsync(value):Promise.resolve(value):"undefined"!=typeof(value=this.map[key2])||key2 in this.map||"undefined"==typeof key3?xref?xref.fetchIfRefAsync(value):Promise.resolve(value):(value=this.map[key3]||null,xref?xref.fetchIfRefAsync(value):Promise.resolve(value))},getRaw:function(key){return this.map[key]},getAll:function(){var key,obj,all=Object.create(null),queue=null;for(key in this.map)obj=this.get(key),obj instanceof Dict?isRecursionAllowedFor(obj)?(queue||(queue=[])).push({target:all,key:key,obj:obj}):all[key]=this.getRaw(key):all[key]=obj;if(!queue)return all;for(var processed=Object.create(null);queue.length>0;){var item=queue.shift(),itemObj=item.obj,objId=itemObj.objId;if(objId&&objId in processed)item.target[item.key]=processed[objId];else{var dereferenced=Object.create(null);for(key in itemObj.map)obj=itemObj.get(key),obj instanceof Dict?isRecursionAllowedFor(obj)?queue.push({target:dereferenced,key:key,obj:obj}):dereferenced[key]=itemObj.getRaw(key):dereferenced[key]=obj;objId&&(processed[objId]=dereferenced),item.target[item.key]=dereferenced}}return all},set:function(key,value){this.map[key]=value},has:function(key){return key in this.map},forEach:function(callback){for(var key in this.map)callback(key,this.get(key))}},Dict.empty=new Dict(null),Dict}(),Ref=function(){function Ref(num,gen){this.num=num,this.gen=gen}return Ref.prototype={toString:function(){var str=this.num+"R";return 0!==this.gen&&(str+=this.gen),str}},Ref}(),RefSet=function(){function RefSet(){this.dict={}}return RefSet.prototype={has:function(ref){return ref.toString()in this.dict},put:function(ref){this.dict[ref.toString()]=!0},remove:function(ref){delete this.dict[ref.toString()]}},RefSet}(),RefSetCache=function(){function RefSetCache(){this.dict=Object.create(null)}return RefSetCache.prototype={get:function(ref){return this.dict[ref.toString()]},has:function(ref){return ref.toString()in this.dict},put:function(ref,obj){this.dict[ref.toString()]=obj},putAlias:function(ref,aliasRef){this.dict[ref.toString()]=this.get(aliasRef)},forEach:function(fn,thisArg){for(var i in this.dict)fn.call(thisArg,this.dict[i])},clear:function(){this.dict=Object.create(null)}},RefSetCache}(),Catalog=function(){function Catalog(pdfManager,xref){this.pdfManager=pdfManager,this.xref=xref,this.catDict=xref.getCatalogObj(),this.fontCache=new RefSetCache,assert(isDict(this.catDict),"catalog object is not a dictionary"),this.pagePromises=[]}return Catalog.prototype={get metadata(){var streamRef=this.catDict.getRaw("Metadata");if(!isRef(streamRef))return shadow(this,"metadata",null);var metadata,encryptMetadata=this.xref.encrypt?this.xref.encrypt.encryptMetadata:!1,stream=this.xref.fetch(streamRef,!encryptMetadata);if(stream&&isDict(stream.dict)){var type=stream.dict.get("Type"),subtype=stream.dict.get("Subtype");if(isName(type)&&isName(subtype)&&"Metadata"===type.name&&"XML"===subtype.name)try{metadata=stringToUTF8String(bytesToString(stream.getBytes()))}catch(e){info("Skipping invalid metadata.")}}return shadow(this,"metadata",metadata)},get toplevelPagesDict(){var pagesObj=this.catDict.get("Pages");return assert(isDict(pagesObj),"invalid top-level pages dictionary"),shadow(this,"toplevelPagesDict",pagesObj)},get documentOutline(){var obj=null;try{obj=this.readDocumentOutline()}catch(ex){if(ex instanceof MissingDataException)throw ex;warn("Unable to read document outline")}return shadow(this,"documentOutline",obj)},readDocumentOutline:function(){var xref=this.xref,obj=this.catDict.get("Outlines"),root={items:[]};if(isDict(obj)){obj=obj.getRaw("First");var processed=new RefSet;if(isRef(obj)){var queue=[{obj:obj,parent:root}];for(processed.put(obj);queue.length>0;){var i=queue.shift(),outlineDict=xref.fetchIfRef(i.obj);if(null!==outlineDict){outlineDict.has("Title")||error("Invalid outline item");var dest=outlineDict.get("A");dest?dest=dest.get("D"):outlineDict.has("Dest")&&(dest=outlineDict.getRaw("Dest"),isName(dest)&&(dest=dest.name));var title=outlineDict.get("Title"),outlineItem={dest:dest,title:stringToPDFString(title),color:outlineDict.get("C")||[0,0,0],count:outlineDict.get("Count"),bold:!!(2&outlineDict.get("F")),italic:!!(1&outlineDict.get("F")),items:[]};i.parent.items.push(outlineItem),obj=outlineDict.getRaw("First"),isRef(obj)&&!processed.has(obj)&&(queue.push({obj:obj,parent:outlineItem}),processed.put(obj)),obj=outlineDict.getRaw("Next"),isRef(obj)&&!processed.has(obj)&&(queue.push({obj:obj,parent:i.parent}),processed.put(obj))}}}}return root.items.length>0?root.items:null},get numPages(){var obj=this.toplevelPagesDict.get("Count");return assert(isInt(obj),"page count in top level pages object is not an integer"),shadow(this,"num",obj)},get destinations(){function fetchDestination(dest){return isDict(dest)?dest.get("D"):dest}var nameTreeRef,nameDictionaryRef,xref=this.xref,dests={},obj=this.catDict.get("Names");if(obj&&obj.has("Dests")?nameTreeRef=obj.getRaw("Dests"):this.catDict.has("Dests")&&(nameDictionaryRef=this.catDict.get("Dests")),nameDictionaryRef&&(obj=nameDictionaryRef,obj.forEach(function(key,value){value&&(dests[key]=fetchDestination(value))})),nameTreeRef){var nameTree=new NameTree(nameTreeRef,xref),names=nameTree.getAll();for(var name in names)names.hasOwnProperty(name)&&(dests[name]=fetchDestination(names[name]))}return shadow(this,"destinations",dests)},get attachments(){var nameTreeRef,xref=this.xref,attachments=null,obj=this.catDict.get("Names");if(obj&&(nameTreeRef=obj.getRaw("EmbeddedFiles")),nameTreeRef){var nameTree=new NameTree(nameTreeRef,xref),names=nameTree.getAll();for(var name in names)if(names.hasOwnProperty(name)){var fs=new FileSpec(names[name],xref);attachments||(attachments={}),attachments[stringToPDFString(name)]=fs.serializable}}return shadow(this,"attachments",attachments)},get javaScript(){var xref=this.xref,obj=this.catDict.get("Names"),javaScript=[];if(obj&&obj.has("JavaScript")){var nameTree=new NameTree(obj.getRaw("JavaScript"),xref),names=nameTree.getAll();for(var name in names)if(names.hasOwnProperty(name)){var jsDict=names[name];if(isDict(jsDict)){var type=jsDict.get("S");if(isName(type)&&"JavaScript"===type.name){var js=jsDict.get("JS");(isString(js)||isStream(js))&&(isStream(js)&&(js=bytesToString(js.getBytes())),javaScript.push(stringToPDFString(js)))}}}}var openactionDict=this.catDict.get("OpenAction");if(isDict(openactionDict)){var objType=openactionDict.get("Type"),actionType=openactionDict.get("S"),action=openactionDict.get("N"),isPrintAction=isName(objType)&&"Action"===objType.name&&isName(actionType)&&"Named"===actionType.name&&isName(action)&&"Print"===action.name;isPrintAction&&javaScript.push("print(true);")}return shadow(this,"javaScript",javaScript)},cleanup:function(){var promises=[];return this.fontCache.forEach(function(promise){promises.push(promise)}),Promise.all(promises).then(function(translatedFonts){for(var i=0,ii=translatedFonts.length;ii>i;i++){var font=translatedFonts[i].dict;delete font.translated}this.fontCache.clear()}.bind(this))},getPage:function(pageIndex){return pageIndex in this.pagePromises||(this.pagePromises[pageIndex]=this.getPageDict(pageIndex).then(function(a){var dict=a[0],ref=a[1];return new Page(this.pdfManager,this.xref,pageIndex,dict,ref,this.fontCache)}.bind(this))),this.pagePromises[pageIndex]},getPageDict:function(pageIndex){function next(){for(;nodesToVisit.length;){var currentNode=nodesToVisit.pop();if(isRef(currentNode))return void xref.fetchAsync(currentNode).then(function(obj){return isDict(obj,"Page")||isDict(obj)&&!obj.has("Kids")?void(pageIndex===currentPageIndex?capability.resolve([obj,currentNode]):(currentPageIndex++,next())):(nodesToVisit.push(obj),void next())},capability.reject);assert(isDict(currentNode),"page dictionary kid reference points to wrong type of object");var count=currentNode.get("Count");if(pageIndex>=currentPageIndex+count)currentPageIndex+=count;else{var kids=currentNode.get("Kids");if(assert(isArray(kids),"page dictionary kids object is not an array"),count!==kids.length)for(var last=kids.length-1;last>=0;last--)nodesToVisit.push(kids[last]);else nodesToVisit=[kids[pageIndex-currentPageIndex]],currentPageIndex=pageIndex}}capability.reject("Page index "+pageIndex+" not found.")}var capability=createPromiseCapability(),nodesToVisit=[this.catDict.getRaw("Pages")],currentPageIndex=0,xref=this.xref;return next(),capability.promise},getPageIndex:function(ref){function pagesBeforeRef(kidRef){var parentRef,total=0;return xref.fetchAsync(kidRef).then(function(node){return node?(parentRef=node.getRaw("Parent"),node.getAsync("Parent")):null}).then(function(parent){return parent?parent.getAsync("Kids"):null}).then(function(kids){if(!kids)return null;for(var kidPromises=[],found=!1,i=0;i<kids.length;i++){var kid=kids[i];if(assert(isRef(kid),"kids must be a ref"),kid.num===kidRef.num){found=!0;break}kidPromises.push(xref.fetchAsync(kid).then(function(kid){if(kid.has("Count")){var count=kid.get("Count");total+=count}else total++}))}return found||error("kid ref not found in parents kids"),Promise.all(kidPromises).then(function(){return[total,parentRef]})})}function next(ref){return pagesBeforeRef(ref).then(function(args){if(!args)return total;var count=args[0],parentRef=args[1];return total+=count,next(parentRef)})}var xref=this.xref,total=0;return next(ref)}},Catalog}(),XRef=function(){function XRef(stream,password){this.stream=stream,this.entries=[],this.xrefstms={},this.cache=[],this.password=password,this.stats={streamTypes:[],fontTypes:[]}}return XRef.prototype={setStartXRef:function(startXRef){this.startXRefQueue=[startXRef]},parse:function(recoveryMode){var trailerDict;recoveryMode?(warn("Indexing all PDF objects"),trailerDict=this.indexObjects()):trailerDict=this.readXRef(),trailerDict.assignXref(this),this.trailer=trailerDict;var encrypt=trailerDict.get("Encrypt");if(encrypt){var ids=trailerDict.get("ID"),fileId=ids&&ids.length?ids[0]:"";this.encrypt=new CipherTransformFactory(encrypt,fileId,this.password)}(this.root=trailerDict.get("Root"))||error("Invalid root reference")},processXRefTable:function(parser){"tableState"in this||(this.tableState={entryNum:0,streamPos:parser.lexer.stream.pos,parserBuf1:parser.buf1,parserBuf2:parser.buf2});var obj=this.readXRefTable(parser);isCmd(obj,"trailer")||error("Invalid XRef table: could not find trailer dictionary");var dict=parser.getObj();return!isDict(dict)&&dict.dict&&(dict=dict.dict),isDict(dict)||error("Invalid XRef table: could not parse trailer dictionary"),delete this.tableState,dict
},readXRefTable:function(parser){var stream=parser.lexer.stream,tableState=this.tableState;stream.pos=tableState.streamPos,parser.buf1=tableState.parserBuf1,parser.buf2=tableState.parserBuf2;for(var obj;;){if(!("firstEntryNum"in tableState&&"entryCount"in tableState)){if(isCmd(obj=parser.getObj(),"trailer"))break;tableState.firstEntryNum=obj,tableState.entryCount=parser.getObj()}var first=tableState.firstEntryNum,count=tableState.entryCount;isInt(first)&&isInt(count)||error("Invalid XRef table: wrong types in subsection header");for(var i=tableState.entryNum;count>i;i++){tableState.streamPos=stream.pos,tableState.entryNum=i,tableState.parserBuf1=parser.buf1,tableState.parserBuf2=parser.buf2;var entry={};entry.offset=parser.getObj(),entry.gen=parser.getObj();var type=parser.getObj();isCmd(type,"f")?entry.free=!0:isCmd(type,"n")&&(entry.uncompressed=!0),isInt(entry.offset)&&isInt(entry.gen)&&(entry.free||entry.uncompressed)||error("Invalid entry in XRef subsection: "+first+", "+count),this.entries[i+first]||(this.entries[i+first]=entry)}tableState.entryNum=0,tableState.streamPos=stream.pos,tableState.parserBuf1=parser.buf1,tableState.parserBuf2=parser.buf2,delete tableState.firstEntryNum,delete tableState.entryCount}return 1===first&&this.entries[1]&&this.entries[1].free&&this.entries.shift(),this.entries[0]&&!this.entries[0].free&&error("Invalid XRef table: unexpected first object"),obj},processXRefStream:function(stream){if(!("streamState"in this)){var streamParameters=stream.dict,byteWidths=streamParameters.get("W"),range=streamParameters.get("Index");range||(range=[0,streamParameters.get("Size")]),this.streamState={entryRanges:range,byteWidths:byteWidths,entryNum:0,streamPos:stream.pos}}return this.readXRefStream(stream),delete this.streamState,stream.dict},readXRefStream:function(stream){var i,j,streamState=this.streamState;stream.pos=streamState.streamPos;for(var byteWidths=streamState.byteWidths,typeFieldWidth=byteWidths[0],offsetFieldWidth=byteWidths[1],generationFieldWidth=byteWidths[2],entryRanges=streamState.entryRanges;entryRanges.length>0;){var first=entryRanges[0],n=entryRanges[1];for(isInt(first)&&isInt(n)||error("Invalid XRef range fields: "+first+", "+n),isInt(typeFieldWidth)&&isInt(offsetFieldWidth)&&isInt(generationFieldWidth)||error("Invalid XRef entry fields length: "+first+", "+n),i=streamState.entryNum;n>i;++i){streamState.entryNum=i,streamState.streamPos=stream.pos;var type=0,offset=0,generation=0;for(j=0;typeFieldWidth>j;++j)type=type<<8|stream.getByte();for(0===typeFieldWidth&&(type=1),j=0;offsetFieldWidth>j;++j)offset=offset<<8|stream.getByte();for(j=0;generationFieldWidth>j;++j)generation=generation<<8|stream.getByte();var entry={};switch(entry.offset=offset,entry.gen=generation,type){case 0:entry.free=!0;break;case 1:entry.uncompressed=!0;break;case 2:break;default:error("Invalid XRef entry type: "+type)}this.entries[first+i]||(this.entries[first+i]=entry)}streamState.entryNum=0,streamState.streamPos=stream.pos,entryRanges.splice(0,2)}},indexObjects:function(){function readToken(data,offset){for(var token="",ch=data[offset];13!==ch&&10!==ch&&!(++offset>=data.length);)token+=String.fromCharCode(ch),ch=data[offset];return token}function skipUntil(data,offset,what){for(var length=what.length,dataLength=data.length,skipped=0;dataLength>offset;){for(var i=0;length>i&&data[offset+i]===what[i];)++i;if(i>=length)break;offset++,skipped++}return skipped}var trailerBytes=new Uint8Array([116,114,97,105,108,101,114]),startxrefBytes=new Uint8Array([115,116,97,114,116,120,114,101,102]),endobjBytes=new Uint8Array([101,110,100,111,98,106]),xrefBytes=new Uint8Array([47,88,82,101,102]),stream=this.stream;stream.pos=0;for(var buffer=stream.getBytes(),position=stream.start,length=buffer.length,trailers=[],xrefStms=[];length>position;){var ch=buffer[position];if(32!==ch&&9!==ch&&13!==ch&&10!==ch)if(37!==ch){var m,token=readToken(buffer,position);if("xref"===token)position+=skipUntil(buffer,position,trailerBytes),trailers.push(position),position+=skipUntil(buffer,position,startxrefBytes);else if(m=/^(\d+)\s+(\d+)\s+obj\b/.exec(token)){this.entries[m[1]]={offset:position,gen:0|m[2],uncompressed:!0};var contentLength=skipUntil(buffer,position,endobjBytes)+7,content=buffer.subarray(position,position+contentLength),xrefTagOffset=skipUntil(content,0,xrefBytes);contentLength>xrefTagOffset&&content[xrefTagOffset+5]<64&&(xrefStms.push(position),this.xrefstms[position]=1),position+=contentLength}else position+=token.length+1}else do{if(++position,position>=length)break;ch=buffer[position]}while(13!==ch&&10!==ch);else++position}var i,ii;for(i=0,ii=xrefStms.length;ii>i;++i)this.startXRefQueue.push(xrefStms[i]),this.readXRef(!0);var dict;for(i=0,ii=trailers.length;ii>i;++i){stream.pos=trailers[i];var parser=new Parser(new Lexer(stream),!0,this),obj=parser.getObj();if(isCmd(obj,"trailer")&&isDict(dict=parser.getObj())&&dict.has("ID"))return dict}if(dict)return dict;throw new InvalidPDFException("Invalid PDF structure")},readXRef:function(recoveryMode){var stream=this.stream;try{for(;this.startXRefQueue.length;){var startXRef=this.startXRefQueue[0];stream.pos=startXRef+stream.start;var dict,parser=new Parser(new Lexer(stream),!0,this),obj=parser.getObj();if(isCmd(obj,"xref")){if(dict=this.processXRefTable(parser),this.topDict||(this.topDict=dict),obj=dict.get("XRefStm"),isInt(obj)){var pos=obj;pos in this.xrefstms||(this.xrefstms[pos]=1,this.startXRefQueue.push(pos))}}else isInt(obj)?(isInt(parser.getObj())&&isCmd(parser.getObj(),"obj")&&isStream(obj=parser.getObj())||error("Invalid XRef stream"),dict=this.processXRefStream(obj),this.topDict||(this.topDict=dict),dict||error("Failed to read XRef stream")):error("Invalid XRef stream header");obj=dict.get("Prev"),isInt(obj)?this.startXRefQueue.push(obj):isRef(obj)&&this.startXRefQueue.push(obj.num),this.startXRefQueue.shift()}return this.topDict}catch(e){if(e instanceof MissingDataException)throw e;info("(while reading XRef): "+e)}if(!recoveryMode)throw new XRefParseException},getEntry:function(i){var xrefEntry=this.entries[i];return xrefEntry&&!xrefEntry.free&&xrefEntry.offset?xrefEntry:null},fetchIfRef:function(obj){return isRef(obj)?this.fetch(obj):obj},fetch:function(ref,suppressEncryption){assert(isRef(ref),"ref object is not a reference");var num=ref.num;if(num in this.cache){var cacheEntry=this.cache[num];return cacheEntry}var xrefEntry=this.getEntry(num);return null===xrefEntry?this.cache[num]=null:(xrefEntry=xrefEntry.uncompressed?this.fetchUncompressed(ref,xrefEntry,suppressEncryption):this.fetchCompressed(xrefEntry,suppressEncryption),isDict(xrefEntry)?xrefEntry.objId=ref.toString():isStream(xrefEntry)&&(xrefEntry.dict.objId=ref.toString()),xrefEntry)},fetchUncompressed:function(ref,xrefEntry,suppressEncryption){var gen=ref.gen,num=ref.num;xrefEntry.gen!==gen&&error("inconsistent generation in XRef");var stream=this.stream.makeSubStream(xrefEntry.offset+this.stream.start),parser=new Parser(new Lexer(stream),!0,this),obj1=parser.getObj(),obj2=parser.getObj(),obj3=parser.getObj();if(isInt(obj1)&&parseInt(obj1,10)===num&&isInt(obj2)&&parseInt(obj2,10)===gen&&isCmd(obj3)||error("bad XRef entry"),!isCmd(obj3,"obj")){if(0===obj3.cmd.indexOf("obj")&&(num=parseInt(obj3.cmd.substring(3),10),!isNaN(num)))return num;error("bad XRef entry")}return xrefEntry=this.encrypt&&!suppressEncryption?parser.getObj(this.encrypt.createCipherTransform(num,gen)):parser.getObj(),isStream(xrefEntry)||(this.cache[num]=xrefEntry),xrefEntry},fetchCompressed:function(xrefEntry){var tableOffset=xrefEntry.offset,stream=this.fetch(new Ref(tableOffset,0));isStream(stream)||error("bad ObjStm stream");var first=stream.dict.get("First"),n=stream.dict.get("N");isInt(first)&&isInt(n)||error("invalid first and n parameters for ObjStm stream");var parser=new Parser(new Lexer(stream),!1,this);parser.allowStreams=!0;var i,num,entries=[],nums=[];for(i=0;n>i;++i){num=parser.getObj(),isInt(num)||error("invalid object number in the ObjStm stream: "+num),nums.push(num);var offset=parser.getObj();isInt(offset)||error("invalid object offset in the ObjStm stream: "+offset)}for(i=0;n>i;++i){entries.push(parser.getObj()),num=nums[i];var entry=this.entries[num];entry&&entry.offset===tableOffset&&entry.gen===i&&(this.cache[num]=entries[i])}return xrefEntry=entries[xrefEntry.gen],void 0===xrefEntry&&error("bad XRef entry for compressed object"),xrefEntry},fetchIfRefAsync:function(obj){return isRef(obj)?this.fetchAsync(obj):Promise.resolve(obj)},fetchAsync:function(ref,suppressEncryption){var streamManager=this.stream.manager,xref=this;return new Promise(function tryFetch(resolve,reject){try{resolve(xref.fetch(ref,suppressEncryption))}catch(e){if(e instanceof MissingDataException)return void streamManager.requestRange(e.begin,e.end,function(){tryFetch(resolve,reject)});reject(e)}})},getCatalogObj:function(){return this.root}},XRef}(),NameTree=function(){function NameTree(root,xref){this.root=root,this.xref=xref}return NameTree.prototype={getAll:function(){var dict={};if(!this.root)return dict;var xref=this.xref,processed=new RefSet;processed.put(this.root);for(var queue=[this.root];queue.length>0;){var i,n,obj=xref.fetchIfRef(queue.shift());if(isDict(obj))if(obj.has("Kids")){var kids=obj.get("Kids");for(i=0,n=kids.length;n>i;i++){var kid=kids[i];processed.has(kid)&&error("invalid destinations"),queue.push(kid),processed.put(kid)}}else{var names=obj.get("Names");if(names)for(i=0,n=names.length;n>i;i+=2)dict[names[i]]=xref.fetchIfRef(names[i+1])}}return dict}},NameTree}(),FileSpec=function(){function FileSpec(root,xref){root&&isDict(root)&&(this.xref=xref,this.root=root,root.has("FS")&&(this.fs=root.get("FS")),this.description=root.has("Desc")?stringToPDFString(root.get("Desc")):"",root.has("RF")&&warn("Related file specifications are not supported"),this.contentAvailable=!0,root.has("EF")||(this.contentAvailable=!1,warn("Non-embedded file specifications are not supported")))}function pickPlatformItem(dict){return dict.has("UF")?dict.get("UF"):dict.has("F")?dict.get("F"):dict.has("Unix")?dict.get("Unix"):dict.has("Mac")?dict.get("Mac"):dict.has("DOS")?dict.get("DOS"):null}return FileSpec.prototype={get filename(){if(!this._filename&&this.root){var filename=pickPlatformItem(this.root)||"unnamed";this._filename=stringToPDFString(filename).replace(/\\\\/g,"\\").replace(/\\\//g,"/").replace(/\\/g,"/")}return this._filename},get content(){if(!this.contentAvailable)return null;!this.contentRef&&this.root&&(this.contentRef=pickPlatformItem(this.root.get("EF")));var content=null;if(this.contentRef){var xref=this.xref,fileObj=xref.fetchIfRef(this.contentRef);fileObj&&isStream(fileObj)?content=fileObj.getBytes():warn("Embedded file specification points to non-existing/invalid content")}else warn("Embedded file specification does not have a content");return content},get serializable(){return{filename:this.filename,content:this.content}}},FileSpec}(),ObjectLoader=function(){function mayHaveChildren(value){return isRef(value)||isDict(value)||isArray(value)||isStream(value)}function addChildren(node,nodesToVisit){var value;if(isDict(node)||isStream(node)){var map;map=isDict(node)?node.map:node.dict.map;for(var key in map)value=map[key],mayHaveChildren(value)&&nodesToVisit.push(value)}else if(isArray(node))for(var i=0,ii=node.length;ii>i;i++)value=node[i],mayHaveChildren(value)&&nodesToVisit.push(value)}function ObjectLoader(obj,keys,xref){this.obj=obj,this.keys=keys,this.xref=xref,this.refSet=null}return ObjectLoader.prototype={load:function(){var keys=this.keys;if(this.capability=createPromiseCapability(),!(this.xref.stream instanceof ChunkedStream)||0===this.xref.stream.getMissingChunks().length)return this.capability.resolve(),this.capability.promise;this.refSet=new RefSet;for(var nodesToVisit=[],i=0;i<keys.length;i++)nodesToVisit.push(this.obj[keys[i]]);return this.walk(nodesToVisit),this.capability.promise},walk:function(nodesToVisit){for(var nodesToRevisit=[],pendingRequests=[];nodesToVisit.length;){var currentNode=nodesToVisit.pop();if(isRef(currentNode)){if(this.refSet.has(currentNode))continue;try{var ref=currentNode;this.refSet.put(ref),currentNode=this.xref.fetch(currentNode)}catch(e){if(!(e instanceof MissingDataException))throw e;nodesToRevisit.push(currentNode),pendingRequests.push({begin:e.begin,end:e.end})}}if(currentNode&&currentNode.getBaseStreams){for(var baseStreams=currentNode.getBaseStreams(),foundMissingData=!1,i=0;i<baseStreams.length;i++){var stream=baseStreams[i];stream.getMissingChunks&&stream.getMissingChunks().length&&(foundMissingData=!0,pendingRequests.push({begin:stream.start,end:stream.end}))}foundMissingData&&nodesToRevisit.push(currentNode)}addChildren(currentNode,nodesToVisit)}return pendingRequests.length?void this.xref.stream.manager.requestRanges(pendingRequests,function(){nodesToVisit=nodesToRevisit;for(var i=0;i<nodesToRevisit.length;i++){var node=nodesToRevisit[i];isRef(node)&&this.refSet.remove(node)}this.walk(nodesToVisit)}.bind(this)):(this.refSet=null,void this.capability.resolve())}},ObjectLoader}(),ISOAdobeCharset=[".notdef","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","onesuperior","logicalnot","mu","trademark","Eth","onehalf","plusminus","Thorn","onequarter","divide","brokenbar","degree","thorn","threequarters","twosuperior","registered","minus","eth","multiply","threesuperior","copyright","Aacute","Acircumflex","Adieresis","Agrave","Aring","Atilde","Ccedilla","Eacute","Ecircumflex","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Ntilde","Oacute","Ocircumflex","Odieresis","Ograve","Otilde","Scaron","Uacute","Ucircumflex","Udieresis","Ugrave","Yacute","Ydieresis","Zcaron","aacute","acircumflex","adieresis","agrave","aring","atilde","ccedilla","eacute","ecircumflex","edieresis","egrave","iacute","icircumflex","idieresis","igrave","ntilde","oacute","ocircumflex","odieresis","ograve","otilde","scaron","uacute","ucircumflex","udieresis","ugrave","yacute","ydieresis","zcaron"],ExpertCharset=[".notdef","space","exclamsmall","Hungarumlautsmall","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","questionsmall","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","fi","fl","ffi","ffl","parenleftinferior","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","exclamdownsmall","centoldstyle","Lslashsmall","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","Dotaccentsmall","Macronsmall","figuredash","hypheninferior","Ogoneksmall","Ringsmall","Cedillasmall","onequarter","onehalf","threequarters","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall"],ExpertSubsetCharset=[".notdef","space","dollaroldstyle","dollarsuperior","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","fi","fl","ffi","ffl","parenleftinferior","parenrightinferior","hyphensuperior","colonmonetary","onefitted","rupiah","centoldstyle","figuredash","hypheninferior","onequarter","onehalf","threequarters","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior"],DEFAULT_ICON_SIZE=22,SUPPORTED_TYPES=["Link","Text","Widget"],Annotation=function(){function getTransformMatrix(rect,bbox,matrix){var bounds=Util.getAxialAlignedBoundingBox(bbox,matrix),minX=bounds[0],minY=bounds[1],maxX=bounds[2],maxY=bounds[3];if(minX===maxX||minY===maxY)return[1,0,0,1,rect[0],rect[1]];var xRatio=(rect[2]-rect[0])/(maxX-minX),yRatio=(rect[3]-rect[1])/(maxY-minY);return[xRatio,0,0,yRatio,rect[0]-minX*xRatio,rect[1]-minY*yRatio]}function getDefaultAppearance(dict){var appearanceState=dict.get("AP");if(isDict(appearanceState)){var appearance,appearances=appearanceState.get("N");if(isDict(appearances)){var as=dict.get("AS");as&&appearances.has(as.name)&&(appearance=appearances.get(as.name))}else appearance=appearances;return appearance}}function Annotation(params){var dict=params.dict,data=this.data={};data.subtype=dict.get("Subtype").name;var rect=dict.get("Rect")||[0,0,0,0];data.rect=Util.normalizeRect(rect),data.annotationFlags=dict.get("F");var color=dict.get("C");if(data.color=isArray(color)&&3===color.length?color:[0,0,0],dict.has("BS")){var borderStyle=dict.get("BS");data.borderWidth=borderStyle.has("W")?borderStyle.get("W"):1}else{var borderArray=dict.get("Border")||[0,0,1];data.borderWidth=borderArray[2]||0;var dashArray=borderArray[3];if(data.borderWidth>0&&dashArray)if(isArray(dashArray)){var dashArrayLength=dashArray.length;if(dashArrayLength>0){for(var isInvalid=!1,numPositive=0,i=0;dashArrayLength>i;i++){var validNumber=+dashArray[i]>=0;if(!validNumber){isInvalid=!0;break}dashArray[i]>0&&numPositive++}(isInvalid||0===numPositive)&&(data.borderWidth=0)}}else data.borderWidth=0}this.appearance=getDefaultAppearance(dict),data.hasAppearance=!!this.appearance,data.id=params.ref.num}return Annotation.prototype={getData:function(){return this.data},isInvisible:function(){var data=this.data;return data&&-1!==SUPPORTED_TYPES.indexOf(data.subtype)?!1:!!(data&&data.annotationFlags&&1&data.annotationFlags)},isViewable:function(){var data=this.data;return!(this.isInvisible()||!data||data.annotationFlags&&34&data.annotationFlags||!data.rect)},isPrintable:function(){var data=this.data;return!(!(!this.isInvisible()&&data&&data.annotationFlags&&4&data.annotationFlags)||2&data.annotationFlags||!data.rect)},loadResources:function(keys){return new Promise(function(resolve,reject){this.appearance.dict.getAsync("Resources").then(function(resources){if(!resources)return void resolve();var objectLoader=new ObjectLoader(resources.map,keys,resources.xref);objectLoader.load().then(function(){resolve(resources)},reject)},reject)}.bind(this))},getOperatorList:function(evaluator){if(!this.appearance)return Promise.resolve(new OperatorList);var data=this.data,appearanceDict=this.appearance.dict,resourcesPromise=this.loadResources(["ExtGState","ColorSpace","Pattern","Shading","XObject","Font"]),bbox=appearanceDict.get("BBox")||[0,0,1,1],matrix=appearanceDict.get("Matrix")||[1,0,0,1,0,0],transform=getTransformMatrix(data.rect,bbox,matrix),self=this;return resourcesPromise.then(function(resources){var opList=new OperatorList;return opList.addOp(OPS.beginAnnotation,[data.rect,transform,matrix]),evaluator.getOperatorList(self.appearance,resources,opList).then(function(){return opList.addOp(OPS.endAnnotation,[]),self.appearance.reset(),opList})})}},Annotation.getConstructor=function(subtype,fieldType){if(subtype){if("Link"===subtype)return LinkAnnotation;if("Text"===subtype)return TextAnnotation;if("Widget"===subtype){if(!fieldType)return;return"Tx"===fieldType?TextWidgetAnnotation:WidgetAnnotation}return Annotation}},Annotation.fromRef=function(xref,ref){var dict=xref.fetchIfRef(ref);if(isDict(dict)){var subtype=dict.get("Subtype");if(subtype=isName(subtype)?subtype.name:""){var fieldType=Util.getInheritableProperty(dict,"FT");fieldType=isName(fieldType)?fieldType.name:"";var Constructor=Annotation.getConstructor(subtype,fieldType);if(Constructor){var params={dict:dict,ref:ref},annotation=new Constructor(params);return annotation.isViewable()||annotation.isPrintable()?annotation:void(-1===SUPPORTED_TYPES.indexOf(subtype)&&warn("unimplemented annotation type: "+subtype))}}}},Annotation.appendToOperatorList=function(annotations,opList,pdfManager,partialEvaluator,intent){function reject(e){annotationsReadyCapability.reject(e)}for(var annotationsReadyCapability=createPromiseCapability(),annotationPromises=[],i=0,n=annotations.length;n>i;++i)("display"===intent&&annotations[i].isViewable()||"print"===intent&&annotations[i].isPrintable())&&annotationPromises.push(annotations[i].getOperatorList(partialEvaluator));return Promise.all(annotationPromises).then(function(datas){opList.addOp(OPS.beginAnnotations,[]);for(var i=0,n=datas.length;n>i;++i){var annotOpList=datas[i];opList.addOpList(annotOpList)}opList.addOp(OPS.endAnnotations,[]),annotationsReadyCapability.resolve()},reject),annotationsReadyCapability.promise},Annotation}(),WidgetAnnotation=function(){function WidgetAnnotation(params){Annotation.call(this,params);var dict=params.dict,data=this.data;data.fieldValue=stringToPDFString(Util.getInheritableProperty(dict,"V")||""),data.alternativeText=stringToPDFString(dict.get("TU")||""),data.defaultAppearance=Util.getInheritableProperty(dict,"DA")||"";var fieldType=Util.getInheritableProperty(dict,"FT");data.fieldType=isName(fieldType)?fieldType.name:"",data.fieldFlags=Util.getInheritableProperty(dict,"Ff")||0,this.fieldResources=Util.getInheritableProperty(dict,"DR")||Dict.empty;for(var fieldName=[],namedItem=dict,ref=params.ref;namedItem;){var parent=namedItem.get("Parent"),parentRef=namedItem.getRaw("Parent"),name=namedItem.get("T");if(name)fieldName.unshift(stringToPDFString(name));else{var j,jj,kids=parent.get("Kids");for(j=0,jj=kids.length;jj>j;j++){var kidRef=kids[j];if(kidRef.num===ref.num&&kidRef.gen===ref.gen)break}fieldName.unshift("`"+j)}namedItem=parent,ref=parentRef}data.fullName=fieldName.join(".")}var parent=Annotation.prototype;return Util.inherit(WidgetAnnotation,Annotation,{isViewable:function(){return"Sig"===this.data.fieldType?(warn("unimplemented annotation type: Widget signature"),!1):parent.isViewable.call(this)}}),WidgetAnnotation}(),TextWidgetAnnotation=function(){function TextWidgetAnnotation(params){WidgetAnnotation.call(this,params),this.data.textAlignment=Util.getInheritableProperty(params.dict,"Q"),this.data.annotationType=AnnotationType.WIDGET,this.data.hasHtml=!this.data.hasAppearance&&!!this.data.fieldValue}return Util.inherit(TextWidgetAnnotation,WidgetAnnotation,{getOperatorList:function(evaluator){if(this.appearance)return Annotation.prototype.getOperatorList.call(this,evaluator);var opList=new OperatorList,data=this.data;if(!data.defaultAppearance)return Promise.resolve(opList);var stream=new Stream(stringToBytes(data.defaultAppearance));return evaluator.getOperatorList(stream,this.fieldResources,opList).then(function(){return opList})}}),TextWidgetAnnotation}(),InteractiveAnnotation=function(){function InteractiveAnnotation(params){Annotation.call(this,params),this.data.hasHtml=!0}return Util.inherit(InteractiveAnnotation,Annotation,{}),InteractiveAnnotation}(),TextAnnotation=function(){function TextAnnotation(params){InteractiveAnnotation.call(this,params);var dict=params.dict,data=this.data,content=dict.get("Contents"),title=dict.get("T");data.annotationType=AnnotationType.TEXT,data.content=stringToPDFString(content||""),data.title=stringToPDFString(title||""),data.hasAppearance?data.name="NoIcon":(data.rect[1]=data.rect[3]-DEFAULT_ICON_SIZE,data.rect[2]=data.rect[0]+DEFAULT_ICON_SIZE,data.name=dict.has("Name")?dict.get("Name").name:"Note"),dict.has("C")&&(data.hasBgColor=!0)}return Util.inherit(TextAnnotation,InteractiveAnnotation,{}),TextAnnotation}(),LinkAnnotation=function(){function LinkAnnotation(params){InteractiveAnnotation.call(this,params);var dict=params.dict,data=this.data;data.annotationType=AnnotationType.LINK;var action=dict.get("A");if(action){var linkType=action.get("S").name;if("URI"===linkType){var url=action.get("URI");isName(url)?url="/"+url.name:url&&(url=addDefaultProtocolToUrl(url)),isValidUrl(url,!1)||(url=""),data.url=url}else if("GoTo"===linkType)data.dest=action.get("D");else if("GoToR"===linkType){var urlDict=action.get("F");isDict(urlDict)&&(url=urlDict.get("F")||""),isValidUrl(url,!1)||(url=""),data.url=url,data.dest=action.get("D")}else"Named"===linkType?data.action=action.get("N").name:warn("unrecognized link type: "+linkType)}else if(dict.has("Dest")){var dest=dict.get("Dest");data.dest=isName(dest)?dest.name:dest}}function addDefaultProtocolToUrl(url){return url&&0===url.indexOf("www.")?"http://"+url:url}return Util.inherit(LinkAnnotation,InteractiveAnnotation,{hasOperatorList:function(){return!1}}),LinkAnnotation}(),PDFFunction=function(){var CONSTRUCT_SAMPLED=0,CONSTRUCT_INTERPOLATED=2,CONSTRUCT_STICHED=3,CONSTRUCT_POSTSCRIPT=4;return{getSampleArray:function(size,outputSize,bps,str){var i,ii,length=1;for(i=0,ii=size.length;ii>i;i++)length*=size[i];length*=outputSize;var array=new Array(length),codeSize=0,codeBuf=0,sampleMul=1/(Math.pow(2,bps)-1),strBytes=str.getBytes((length*bps+7)/8),strIdx=0;for(i=0;length>i;i++){for(;bps>codeSize;)codeBuf<<=8,codeBuf|=strBytes[strIdx++],codeSize+=8;codeSize-=bps,array[i]=(codeBuf>>codeSize)*sampleMul,codeBuf&=(1<<codeSize)-1}return array},getIR:function(xref,fn){var dict=fn.dict;dict||(dict=fn);var types=[this.constructSampled,null,this.constructInterpolated,this.constructStiched,this.constructPostScript],typeNum=dict.get("FunctionType"),typeFn=types[typeNum];return typeFn||error("Unknown type of function"),typeFn.call(this,fn,dict,xref)},fromIR:function(IR){var type=IR[0];switch(type){case CONSTRUCT_SAMPLED:return this.constructSampledFromIR(IR);case CONSTRUCT_INTERPOLATED:return this.constructInterpolatedFromIR(IR);case CONSTRUCT_STICHED:return this.constructStichedFromIR(IR);default:return this.constructPostScriptFromIR(IR)}},parse:function(xref,fn){var IR=this.getIR(xref,fn);return this.fromIR(IR)},parseArray:function(xref,fnObj){if(!isArray(fnObj))return this.parse(xref,fnObj);for(var fnArray=[],j=0,jj=fnObj.length;jj>j;j++){var obj=xref.fetchIfRef(fnObj[j]);fnArray.push(PDFFunction.parse(xref,obj))}return function(src,srcOffset,dest,destOffset){for(var i=0,ii=fnArray.length;ii>i;i++)fnArray[i](src,srcOffset,dest,destOffset+i)}},constructSampled:function(str,dict){function toMultiArray(arr){for(var inputLength=arr.length,out=[],index=0,i=0;inputLength>i;i+=2)out[index]=[arr[i],arr[i+1]],++index;return out}var domain=dict.get("Domain"),range=dict.get("Range");domain&&range||error("No domain or range");var inputSize=domain.length/2,outputSize=range.length/2;domain=toMultiArray(domain),range=toMultiArray(range);var size=dict.get("Size"),bps=dict.get("BitsPerSample"),order=dict.get("Order")||1;1!==order&&info("No support for cubic spline interpolation: "+order);var encode=dict.get("Encode");if(!encode){encode=[];for(var i=0;inputSize>i;++i)encode.push(0),encode.push(size[i]-1)}encode=toMultiArray(encode);var decode=dict.get("Decode");decode=decode?toMultiArray(decode):range;var samples=this.getSampleArray(size,outputSize,bps,str);return[CONSTRUCT_SAMPLED,inputSize,domain,encode,decode,samples,size,outputSize,Math.pow(2,bps)-1,range]},constructSampledFromIR:function(IR){function interpolate(x,xmin,xmax,ymin,ymax){return ymin+(x-xmin)*((ymax-ymin)/(xmax-xmin))}return function(src,srcOffset,dest,destOffset){var i,j,m=IR[1],domain=IR[2],encode=IR[3],decode=IR[4],samples=IR[5],size=IR[6],n=IR[7],range=IR[9],cubeVertices=1<<m,cubeN=new Float64Array(cubeVertices),cubeVertex=new Uint32Array(cubeVertices);for(j=0;cubeVertices>j;j++)cubeN[j]=1;var k=n,pos=1;for(i=0;m>i;++i){var domain_2i=domain[i][0],domain_2i_1=domain[i][1],xi=Math.min(Math.max(src[srcOffset+i],domain_2i),domain_2i_1),e=interpolate(xi,domain_2i,domain_2i_1,encode[i][0],encode[i][1]),size_i=size[i];e=Math.min(Math.max(e,0),size_i-1);var e0=size_i-1>e?Math.floor(e):e-1,n0=e0+1-e,n1=e-e0,offset0=e0*k,offset1=offset0+k;for(j=0;cubeVertices>j;j++)j&pos?(cubeN[j]*=n1,cubeVertex[j]+=offset1):(cubeN[j]*=n0,cubeVertex[j]+=offset0);k*=size_i,pos<<=1}for(j=0;n>j;++j){var rj=0;for(i=0;cubeVertices>i;i++)rj+=samples[cubeVertex[i]+j]*cubeN[i];rj=interpolate(rj,0,1,decode[j][0],decode[j][1]),dest[destOffset+j]=Math.min(Math.max(rj,range[j][0]),range[j][1])}}},constructInterpolated:function(str,dict){var c0=dict.get("C0")||[0],c1=dict.get("C1")||[1],n=dict.get("N");isArray(c0)&&isArray(c1)||error("Illegal dictionary for interpolated function");for(var length=c0.length,diff=[],i=0;length>i;++i)diff.push(c1[i]-c0[i]);return[CONSTRUCT_INTERPOLATED,c0,diff,n]},constructInterpolatedFromIR:function(IR){var c0=IR[1],diff=IR[2],n=IR[3],length=diff.length;return function(src,srcOffset,dest,destOffset){for(var x=1===n?src[srcOffset]:Math.pow(src[srcOffset],n),j=0;length>j;++j)dest[destOffset+j]=c0[j]+x*diff[j]}},constructStiched:function(fn,dict,xref){var domain=dict.get("Domain");domain||error("No domain");var inputSize=domain.length/2;1!==inputSize&&error("Bad domain for stiched function");for(var fnRefs=dict.get("Functions"),fns=[],i=0,ii=fnRefs.length;ii>i;++i)fns.push(PDFFunction.getIR(xref,xref.fetchIfRef(fnRefs[i])));var bounds=dict.get("Bounds"),encode=dict.get("Encode");return[CONSTRUCT_STICHED,domain,bounds,encode,fns]},constructStichedFromIR:function(IR){for(var domain=IR[1],bounds=IR[2],encode=IR[3],fnsIR=IR[4],fns=[],tmpBuf=new Float32Array(1),i=0,ii=fnsIR.length;ii>i;i++)fns.push(PDFFunction.fromIR(fnsIR[i]));
return function(src,srcOffset,dest,destOffset){for(var clip=function(v,min,max){return v>max?v=max:min>v&&(v=min),v},v=clip(src[srcOffset],domain[0],domain[1]),i=0,ii=bounds.length;ii>i&&!(v<bounds[i]);++i);var dmin=domain[0];i>0&&(dmin=bounds[i-1]);var dmax=domain[1];i<bounds.length&&(dmax=bounds[i]);var rmin=encode[2*i],rmax=encode[2*i+1];tmpBuf[0]=rmin+(v-dmin)*(rmax-rmin)/(dmax-dmin),fns[i](tmpBuf,0,dest,destOffset)}},constructPostScript:function(fn,dict){var domain=dict.get("Domain"),range=dict.get("Range");domain||error("No domain."),range||error("No range.");var lexer=new PostScriptLexer(fn),parser=new PostScriptParser(lexer),code=parser.parse();return[CONSTRUCT_POSTSCRIPT,domain,range,code]},constructPostScriptFromIR:function(IR){var domain=IR[1],range=IR[2],code=IR[3],compiled=(new PostScriptCompiler).compile(code,domain,range);if(compiled)return new Function("src","srcOffset","dest","destOffset",compiled);info("Unable to compile PS function");var numOutputs=range.length>>1,numInputs=domain.length>>1,evaluator=new PostScriptEvaluator(code),cache={},MAX_CACHE_SIZE=8192,cache_available=MAX_CACHE_SIZE,tmpBuf=new Float32Array(numInputs);return function(src,srcOffset,dest,destOffset){var i,value,key="",input=tmpBuf;for(i=0;numInputs>i;i++)value=src[srcOffset+i],input[i]=value,key+=value+"_";var cachedValue=cache[key];if(void 0!==cachedValue)return void cachedValue.set(dest,destOffset);var output=new Float32Array(numOutputs),stack=evaluator.execute(input),stackIndex=stack.length-numOutputs;for(i=0;numOutputs>i;i++){value=stack[stackIndex+i];var bound=range[2*i];bound>value?value=bound:(bound=range[2*i+1],value>bound&&(value=bound)),output[i]=value}cache_available>0&&(cache_available--,cache[key]=output),output.set(dest,destOffset)}}}}(),PostScriptStack=function(){function PostScriptStack(initialStack){this.stack=initialStack?Array.prototype.slice.call(initialStack,0):[]}var MAX_STACK_SIZE=100;return PostScriptStack.prototype={push:function(value){this.stack.length>=MAX_STACK_SIZE&&error("PostScript function stack overflow."),this.stack.push(value)},pop:function(){return this.stack.length<=0&&error("PostScript function stack underflow."),this.stack.pop()},copy:function(n){this.stack.length+n>=MAX_STACK_SIZE&&error("PostScript function stack overflow.");for(var stack=this.stack,i=stack.length-n,j=n-1;j>=0;j--,i++)stack.push(stack[i])},index:function(n){this.push(this.stack[this.stack.length-n-1])},roll:function(n,p){var i,j,t,stack=this.stack,l=stack.length-n,r=stack.length-1,c=l+(p-Math.floor(p/n)*n);for(i=l,j=r;j>i;i++,j--)t=stack[i],stack[i]=stack[j],stack[j]=t;for(i=l,j=c-1;j>i;i++,j--)t=stack[i],stack[i]=stack[j],stack[j]=t;for(i=c,j=r;j>i;i++,j--)t=stack[i],stack[i]=stack[j],stack[j]=t}},PostScriptStack}(),PostScriptEvaluator=function(){function PostScriptEvaluator(operators){this.operators=operators}return PostScriptEvaluator.prototype={execute:function(initialStack){for(var operator,a,b,stack=new PostScriptStack(initialStack),counter=0,operators=this.operators,length=operators.length;length>counter;)if(operator=operators[counter++],"number"!=typeof operator)switch(operator){case"jz":b=stack.pop(),a=stack.pop(),a||(counter=b);break;case"j":a=stack.pop(),counter=a;break;case"abs":a=stack.pop(),stack.push(Math.abs(a));break;case"add":b=stack.pop(),a=stack.pop(),stack.push(a+b);break;case"and":b=stack.pop(),a=stack.pop(),stack.push(isBool(a)&&isBool(b)?a&&b:a&b);break;case"atan":a=stack.pop(),stack.push(Math.atan(a));break;case"bitshift":b=stack.pop(),a=stack.pop(),stack.push(a>0?a<<b:a>>b);break;case"ceiling":a=stack.pop(),stack.push(Math.ceil(a));break;case"copy":a=stack.pop(),stack.copy(a);break;case"cos":a=stack.pop(),stack.push(Math.cos(a));break;case"cvi":a=0|stack.pop(),stack.push(a);break;case"cvr":break;case"div":b=stack.pop(),a=stack.pop(),stack.push(a/b);break;case"dup":stack.copy(1);break;case"eq":b=stack.pop(),a=stack.pop(),stack.push(a===b);break;case"exch":stack.roll(2,1);break;case"exp":b=stack.pop(),a=stack.pop(),stack.push(Math.pow(a,b));break;case"false":stack.push(!1);break;case"floor":a=stack.pop(),stack.push(Math.floor(a));break;case"ge":b=stack.pop(),a=stack.pop(),stack.push(a>=b);break;case"gt":b=stack.pop(),a=stack.pop(),stack.push(a>b);break;case"idiv":b=stack.pop(),a=stack.pop(),stack.push(a/b|0);break;case"index":a=stack.pop(),stack.index(a);break;case"le":b=stack.pop(),a=stack.pop(),stack.push(b>=a);break;case"ln":a=stack.pop(),stack.push(Math.log(a));break;case"log":a=stack.pop(),stack.push(Math.log(a)/Math.LN10);break;case"lt":b=stack.pop(),a=stack.pop(),stack.push(b>a);break;case"mod":b=stack.pop(),a=stack.pop(),stack.push(a%b);break;case"mul":b=stack.pop(),a=stack.pop(),stack.push(a*b);break;case"ne":b=stack.pop(),a=stack.pop(),stack.push(a!==b);break;case"neg":a=stack.pop(),stack.push(-a);break;case"not":a=stack.pop(),stack.push(isBool(a)?!a:~a);break;case"or":b=stack.pop(),a=stack.pop(),stack.push(isBool(a)&&isBool(b)?a||b:a|b);break;case"pop":stack.pop();break;case"roll":b=stack.pop(),a=stack.pop(),stack.roll(a,b);break;case"round":a=stack.pop(),stack.push(Math.round(a));break;case"sin":a=stack.pop(),stack.push(Math.sin(a));break;case"sqrt":a=stack.pop(),stack.push(Math.sqrt(a));break;case"sub":b=stack.pop(),a=stack.pop(),stack.push(a-b);break;case"true":stack.push(!0);break;case"truncate":a=stack.pop(),a=0>a?Math.ceil(a):Math.floor(a),stack.push(a);break;case"xor":b=stack.pop(),a=stack.pop(),stack.push(isBool(a)&&isBool(b)?a!==b:a^b);break;default:error("Unknown operator "+operator)}else stack.push(operator);return stack.stack}},PostScriptEvaluator}(),PostScriptCompiler=function(){function AstNode(type){this.type=type}function AstArgument(index,min,max){AstNode.call(this,"args"),this.index=index,this.min=min,this.max=max}function AstLiteral(number){AstNode.call(this,"literal"),this.number=number,this.min=number,this.max=number}function AstBinaryOperation(op,arg1,arg2,min,max){AstNode.call(this,"binary"),this.op=op,this.arg1=arg1,this.arg2=arg2,this.min=min,this.max=max}function AstMin(arg,max){AstNode.call(this,"max"),this.arg=arg,this.min=arg.min,this.max=max}function AstVariable(index,min,max){AstNode.call(this,"var"),this.index=index,this.min=min,this.max=max}function AstVariableDefinition(variable,arg){AstNode.call(this,"definition"),this.variable=variable,this.arg=arg}function ExpressionBuilderVisitor(){this.parts=[]}function buildAddOperation(num1,num2){return"literal"===num2.type&&0===num2.number?num1:"literal"===num1.type&&0===num1.number?num2:"literal"===num2.type&&"literal"===num1.type?new AstLiteral(num1.number+num2.number):new AstBinaryOperation("+",num1,num2,num1.min+num2.min,num1.max+num2.max)}function buildMulOperation(num1,num2){if("literal"===num2.type){if(0===num2.number)return new AstLiteral(0);if(1===num2.number)return num1;if("literal"===num1.type)return new AstLiteral(num1.number*num2.number)}if("literal"===num1.type){if(0===num1.number)return new AstLiteral(0);if(1===num1.number)return num2}var min=Math.min(num1.min*num2.min,num1.min*num2.max,num1.max*num2.min,num1.max*num2.max),max=Math.max(num1.min*num2.min,num1.min*num2.max,num1.max*num2.min,num1.max*num2.max);return new AstBinaryOperation("*",num1,num2,min,max)}function buildSubOperation(num1,num2){if("literal"===num2.type){if(0===num2.number)return num1;if("literal"===num1.type)return new AstLiteral(num1.number-num2.number)}return"binary"===num2.type&&"-"===num2.op&&"literal"===num1.type&&1===num1.number&&"literal"===num2.arg1.type&&1===num2.arg1.number?num2.arg2:new AstBinaryOperation("-",num1,num2,num1.min-num2.max,num1.max-num2.min)}function buildMinOperation(num1,max){return num1.min>=max?new AstLiteral(max):num1.max<=max?num1:new AstMin(num1,max)}function PostScriptCompiler(){}return AstNode.prototype.visit=function(){throw new Error("abstract method")},AstArgument.prototype=Object.create(AstNode.prototype),AstArgument.prototype.visit=function(visitor){visitor.visitArgument(this)},AstLiteral.prototype=Object.create(AstNode.prototype),AstLiteral.prototype.visit=function(visitor){visitor.visitLiteral(this)},AstBinaryOperation.prototype=Object.create(AstNode.prototype),AstBinaryOperation.prototype.visit=function(visitor){visitor.visitBinaryOperation(this)},AstMin.prototype=Object.create(AstNode.prototype),AstMin.prototype.visit=function(visitor){visitor.visitMin(this)},AstVariable.prototype=Object.create(AstNode.prototype),AstVariable.prototype.visit=function(visitor){visitor.visitVariable(this)},AstVariableDefinition.prototype=Object.create(AstNode.prototype),AstVariableDefinition.prototype.visit=function(visitor){visitor.visitVariableDefinition(this)},ExpressionBuilderVisitor.prototype={visitArgument:function(arg){this.parts.push("Math.max(",arg.min,", Math.min(",arg.max,", src[srcOffset + ",arg.index,"]))")},visitVariable:function(variable){this.parts.push("v",variable.index)},visitLiteral:function(literal){this.parts.push(literal.number)},visitBinaryOperation:function(operation){this.parts.push("("),operation.arg1.visit(this),this.parts.push(" ",operation.op," "),operation.arg2.visit(this),this.parts.push(")")},visitVariableDefinition:function(definition){this.parts.push("var "),definition.variable.visit(this),this.parts.push(" = "),definition.arg.visit(this),this.parts.push(";")},visitMin:function(max){this.parts.push("Math.min("),max.arg.visit(this),this.parts.push(", ",max.max,")")},toString:function(){return this.parts.join("")}},PostScriptCompiler.prototype={compile:function(code,domain,range){var i,ii,n,j,num1,num2,ast1,ast2,tmpVar,item,stack=[],instructions=[],inputSize=domain.length>>1,outputSize=range.length>>1,lastRegister=0;for(i=0;inputSize>i;i++)stack.push(new AstArgument(i,domain[2*i],domain[2*i+1]));for(i=0,ii=code.length;ii>i;i++)if(item=code[i],"number"!=typeof item)switch(item){case"add":if(stack.length<2)return null;num2=stack.pop(),num1=stack.pop(),stack.push(buildAddOperation(num1,num2));break;case"cvr":if(stack.length<1)return null;break;case"mul":if(stack.length<2)return null;num2=stack.pop(),num1=stack.pop(),stack.push(buildMulOperation(num1,num2));break;case"sub":if(stack.length<2)return null;num2=stack.pop(),num1=stack.pop(),stack.push(buildSubOperation(num1,num2));break;case"exch":if(stack.length<2)return null;ast1=stack.pop(),ast2=stack.pop(),stack.push(ast1,ast2);break;case"pop":if(stack.length<1)return null;stack.pop();break;case"index":if(stack.length<1)return null;if(num1=stack.pop(),"literal"!==num1.type)return null;if(n=num1.number,0>n||(0|n)!==n||stack.length<n)return null;if(ast1=stack[stack.length-n-1],"literal"===ast1.type||"var"===ast1.type){stack.push(ast1);break}tmpVar=new AstVariable(lastRegister++,ast1.min,ast1.max),stack[stack.length-n-1]=tmpVar,stack.push(tmpVar),instructions.push(new AstVariableDefinition(tmpVar,ast1));break;case"dup":if(stack.length<1)return null;if("number"==typeof code[i+1]&&"gt"===code[i+2]&&code[i+3]===i+7&&"jz"===code[i+4]&&"pop"===code[i+5]&&code[i+6]===code[i+1]){num1=stack.pop(),stack.push(buildMinOperation(num1,code[i+1])),i+=6;break}if(ast1=stack[stack.length-1],"literal"===ast1.type||"var"===ast1.type){stack.push(ast1);break}tmpVar=new AstVariable(lastRegister++,ast1.min,ast1.max),stack[stack.length-1]=tmpVar,stack.push(tmpVar),instructions.push(new AstVariableDefinition(tmpVar,ast1));break;case"roll":if(stack.length<2)return null;if(num2=stack.pop(),num1=stack.pop(),"literal"!==num2.type||"literal"!==num1.type)return null;if(j=num2.number,n=num1.number,0>=n||(0|n)!==n||(0|j)!==j||stack.length<n)return null;if(j=(j%n+n)%n,0===j)break;Array.prototype.push.apply(stack,stack.splice(stack.length-n,n-j));break;default:return null}else stack.push(new AstLiteral(item));if(stack.length!==outputSize)return null;var result=[];return instructions.forEach(function(instruction){var statementBuilder=new ExpressionBuilderVisitor;instruction.visit(statementBuilder),result.push(statementBuilder.toString())}),stack.forEach(function(expr,i){var statementBuilder=new ExpressionBuilderVisitor;expr.visit(statementBuilder);var min=range[2*i],max=range[2*i+1],out=[statementBuilder.toString()];min>expr.min&&(out.unshift("Math.max(",min,", "),out.push(")")),max<expr.max&&(out.unshift("Math.min(",max,", "),out.push(")")),out.unshift("dest[destOffset + ",i,"] = "),out.push(";"),result.push(out.join(""))}),result.join("\n")}},PostScriptCompiler}(),ColorSpace=function(){function ColorSpace(){error("should not call ColorSpace constructor")}return ColorSpace.prototype={getRgb:function(src,srcOffset){var rgb=new Uint8Array(3);return this.getRgbItem(src,srcOffset,rgb,0),rgb},getRgbItem:function(){error("Should not call ColorSpace.getRgbItem")},getRgbBuffer:function(){error("Should not call ColorSpace.getRgbBuffer")},getOutputLength:function(){error("Should not call ColorSpace.getOutputLength")},isPassthrough:function(){return!1},fillRgb:function(dest,originalWidth,originalHeight,width,height,actualHeight,bpc,comps,alpha01){var i,ii,count=originalWidth*originalHeight,rgbBuf=null,numComponentColors=1<<bpc,needsResizing=originalHeight!==height||originalWidth!==width;if(this.isPassthrough(bpc))rgbBuf=comps;else if(1===this.numComps&&count>numComponentColors&&"DeviceGray"!==this.name&&"DeviceRGB"!==this.name){var key,allColors=8>=bpc?new Uint8Array(numComponentColors):new Uint16Array(numComponentColors);for(i=0;numComponentColors>i;i++)allColors[i]=i;var colorMap=new Uint8Array(3*numComponentColors);this.getRgbBuffer(allColors,0,numComponentColors,colorMap,0,bpc,0);var destPos,rgbPos;if(needsResizing)for(rgbBuf=new Uint8Array(3*count),rgbPos=0,i=0;count>i;++i)key=3*comps[i],rgbBuf[rgbPos++]=colorMap[key],rgbBuf[rgbPos++]=colorMap[key+1],rgbBuf[rgbPos++]=colorMap[key+2];else for(destPos=0,i=0;count>i;++i)key=3*comps[i],dest[destPos++]=colorMap[key],dest[destPos++]=colorMap[key+1],dest[destPos++]=colorMap[key+2],destPos+=alpha01}else needsResizing?(rgbBuf=new Uint8Array(3*count),this.getRgbBuffer(comps,0,count,rgbBuf,0,bpc,0)):this.getRgbBuffer(comps,0,width*actualHeight,dest,0,bpc,alpha01);if(rgbBuf)if(needsResizing)PDFImage.resize(rgbBuf,bpc,3,originalWidth,originalHeight,width,height,dest,alpha01);else for(rgbPos=0,destPos=0,i=0,ii=width*actualHeight;ii>i;i++)dest[destPos++]=rgbBuf[rgbPos++],dest[destPos++]=rgbBuf[rgbPos++],dest[destPos++]=rgbBuf[rgbPos++],destPos+=alpha01},usesZeroToOneRange:!0},ColorSpace.parse=function(cs,xref,res){var IR=ColorSpace.parseToIR(cs,xref,res);return IR instanceof AlternateCS?IR:ColorSpace.fromIR(IR)},ColorSpace.fromIR=function(IR){var whitePoint,blackPoint,gamma,name=isArray(IR)?IR[0]:IR;switch(name){case"DeviceGrayCS":return this.singletons.gray;case"DeviceRgbCS":return this.singletons.rgb;case"DeviceCmykCS":return this.singletons.cmyk;case"CalGrayCS":return whitePoint=IR[1].WhitePoint,blackPoint=IR[1].BlackPoint,gamma=IR[1].Gamma,new CalGrayCS(whitePoint,blackPoint,gamma);case"CalRGBCS":whitePoint=IR[1].WhitePoint,blackPoint=IR[1].BlackPoint,gamma=IR[1].Gamma;var matrix=IR[1].Matrix;return new CalRGBCS(whitePoint,blackPoint,gamma,matrix);case"PatternCS":var basePatternCS=IR[1];return basePatternCS&&(basePatternCS=ColorSpace.fromIR(basePatternCS)),new PatternCS(basePatternCS);case"IndexedCS":var baseIndexedCS=IR[1],hiVal=IR[2],lookup=IR[3];return new IndexedCS(ColorSpace.fromIR(baseIndexedCS),hiVal,lookup);case"AlternateCS":var numComps=IR[1],alt=IR[2],tintFnIR=IR[3];return new AlternateCS(numComps,ColorSpace.fromIR(alt),PDFFunction.fromIR(tintFnIR));case"LabCS":whitePoint=IR[1].WhitePoint,blackPoint=IR[1].BlackPoint;var range=IR[1].Range;return new LabCS(whitePoint,blackPoint,range);default:error("Unknown name "+name)}return null},ColorSpace.parseToIR=function(cs,xref,res){if(isName(cs)){var colorSpaces=res.get("ColorSpace");if(isDict(colorSpaces)){var refcs=colorSpaces.get(cs.name);refcs&&(cs=refcs)}}cs=xref.fetchIfRef(cs);var mode;if(isName(cs))switch(mode=cs.name,this.mode=mode,mode){case"DeviceGray":case"G":return"DeviceGrayCS";case"DeviceRGB":case"RGB":return"DeviceRgbCS";case"DeviceCMYK":case"CMYK":return"DeviceCmykCS";case"Pattern":return["PatternCS",null];default:error("unrecognized colorspace "+mode)}else if(isArray(cs)){mode=cs[0].name,this.mode=mode;var numComps,params;switch(mode){case"DeviceGray":case"G":return"DeviceGrayCS";case"DeviceRGB":case"RGB":return"DeviceRgbCS";case"DeviceCMYK":case"CMYK":return"DeviceCmykCS";case"CalGray":return params=cs[1].getAll(),["CalGrayCS",params];case"CalRGB":return params=cs[1].getAll(),["CalRGBCS",params];case"ICCBased":var stream=xref.fetchIfRef(cs[1]),dict=stream.dict;if(numComps=dict.get("N"),1===numComps)return"DeviceGrayCS";if(3===numComps)return"DeviceRgbCS";if(4===numComps)return"DeviceCmykCS";break;case"Pattern":var basePatternCS=cs[1];return basePatternCS&&(basePatternCS=ColorSpace.parseToIR(basePatternCS,xref,res)),["PatternCS",basePatternCS];case"Indexed":case"I":var baseIndexedCS=ColorSpace.parseToIR(cs[1],xref,res),hiVal=cs[2]+1,lookup=xref.fetchIfRef(cs[3]);return isStream(lookup)&&(lookup=lookup.getBytes()),["IndexedCS",baseIndexedCS,hiVal,lookup];case"Separation":case"DeviceN":var name=cs[1];numComps=1,isName(name)?numComps=1:isArray(name)&&(numComps=name.length);var alt=ColorSpace.parseToIR(cs[2],xref,res),tintFnIR=PDFFunction.getIR(xref,xref.fetchIfRef(cs[3]));return["AlternateCS",numComps,alt,tintFnIR];case"Lab":return params=cs[1].getAll(),["LabCS",params];default:error('unimplemented color space object "'+mode+'"')}}else error('unrecognized color space object: "'+cs+'"');return null},ColorSpace.isDefaultDecode=function(decode,n){if(!decode)return!0;if(2*n!==decode.length)return warn("The decode map is not the correct length"),!0;for(var i=0,ii=decode.length;ii>i;i+=2)if(0!==decode[i]||1!==decode[i+1])return!1;return!0},ColorSpace.singletons={get gray(){return shadow(this,"gray",new DeviceGrayCS)},get rgb(){return shadow(this,"rgb",new DeviceRgbCS)},get cmyk(){return shadow(this,"cmyk",new DeviceCmykCS)}},ColorSpace}(),AlternateCS=function(){function AlternateCS(numComps,base,tintFn){this.name="Alternate",this.numComps=numComps,this.defaultColor=new Float32Array(numComps);for(var i=0;numComps>i;++i)this.defaultColor[i]=1;this.base=base,this.tintFn=tintFn,this.tmpBuf=new Float32Array(base.numComps)}return AlternateCS.prototype={getRgb:ColorSpace.prototype.getRgb,getRgbItem:function(src,srcOffset,dest,destOffset){var tmpBuf=this.tmpBuf;this.tintFn(src,srcOffset,tmpBuf,0),this.base.getRgbItem(tmpBuf,0,dest,destOffset)},getRgbBuffer:function(src,srcOffset,count,dest,destOffset,bits,alpha01){var i,j,tintFn=this.tintFn,base=this.base,scale=1/((1<<bits)-1),baseNumComps=base.numComps,usesZeroToOneRange=base.usesZeroToOneRange,isPassthrough=(base.isPassthrough(8)||!usesZeroToOneRange)&&0===alpha01,pos=isPassthrough?destOffset:0,baseBuf=isPassthrough?dest:new Uint8Array(baseNumComps*count),numComps=this.numComps,scaled=new Float32Array(numComps),tinted=new Float32Array(baseNumComps);if(usesZeroToOneRange)for(i=0;count>i;i++){for(j=0;numComps>j;j++)scaled[j]=src[srcOffset++]*scale;for(tintFn(scaled,0,tinted,0),j=0;baseNumComps>j;j++)baseBuf[pos++]=255*tinted[j]}else for(i=0;count>i;i++){for(j=0;numComps>j;j++)scaled[j]=src[srcOffset++]*scale;tintFn(scaled,0,tinted,0),base.getRgbItem(tinted,0,baseBuf,pos),pos+=baseNumComps}isPassthrough||base.getRgbBuffer(baseBuf,0,count,dest,destOffset,8,alpha01)},getOutputLength:function(inputLength,alpha01){return this.base.getOutputLength(inputLength*this.base.numComps/this.numComps,alpha01)},isPassthrough:ColorSpace.prototype.isPassthrough,fillRgb:ColorSpace.prototype.fillRgb,isDefaultDecode:function(decodeMap){return ColorSpace.isDefaultDecode(decodeMap,this.numComps)},usesZeroToOneRange:!0},AlternateCS}(),PatternCS=function(){function PatternCS(baseCS){this.name="Pattern",this.base=baseCS}return PatternCS.prototype={},PatternCS}(),IndexedCS=function(){function IndexedCS(base,highVal,lookup){this.name="Indexed",this.numComps=1,this.defaultColor=new Uint8Array([0]),this.base=base,this.highVal=highVal;var lookupArray,baseNumComps=base.numComps,length=baseNumComps*highVal;if(isStream(lookup)){lookupArray=new Uint8Array(length);var bytes=lookup.getBytes(length);lookupArray.set(bytes)}else if(isString(lookup)){lookupArray=new Uint8Array(length);for(var i=0;length>i;++i)lookupArray[i]=lookup.charCodeAt(i)}else lookup instanceof Uint8Array||lookup instanceof Array?lookupArray=lookup:error("Unrecognized lookup table: "+lookup);this.lookup=lookupArray}return IndexedCS.prototype={getRgb:ColorSpace.prototype.getRgb,getRgbItem:function(src,srcOffset,dest,destOffset){var numComps=this.base.numComps,start=src[srcOffset]*numComps;this.base.getRgbItem(this.lookup,start,dest,destOffset)},getRgbBuffer:function(src,srcOffset,count,dest,destOffset,bits,alpha01){for(var base=this.base,numComps=base.numComps,outputDelta=base.getOutputLength(numComps,alpha01),lookup=this.lookup,i=0;count>i;++i){var lookupPos=src[srcOffset++]*numComps;base.getRgbBuffer(lookup,lookupPos,1,dest,destOffset,8,alpha01),destOffset+=outputDelta}},getOutputLength:function(inputLength,alpha01){return this.base.getOutputLength(inputLength*this.base.numComps,alpha01)},isPassthrough:ColorSpace.prototype.isPassthrough,fillRgb:ColorSpace.prototype.fillRgb,isDefaultDecode:function(){return!0},usesZeroToOneRange:!0},IndexedCS}(),DeviceGrayCS=function(){function DeviceGrayCS(){this.name="DeviceGray",this.numComps=1,this.defaultColor=new Float32Array([0])}return DeviceGrayCS.prototype={getRgb:ColorSpace.prototype.getRgb,getRgbItem:function(src,srcOffset,dest,destOffset){var c=255*src[srcOffset]|0;c=0>c?0:c>255?255:c,dest[destOffset]=dest[destOffset+1]=dest[destOffset+2]=c},getRgbBuffer:function(src,srcOffset,count,dest,destOffset,bits,alpha01){for(var scale=255/((1<<bits)-1),j=srcOffset,q=destOffset,i=0;count>i;++i){var c=scale*src[j++]|0;dest[q++]=c,dest[q++]=c,dest[q++]=c,q+=alpha01}},getOutputLength:function(inputLength,alpha01){return inputLength*(3+alpha01)},isPassthrough:ColorSpace.prototype.isPassthrough,fillRgb:ColorSpace.prototype.fillRgb,isDefaultDecode:function(decodeMap){return ColorSpace.isDefaultDecode(decodeMap,this.numComps)},usesZeroToOneRange:!0},DeviceGrayCS}(),DeviceRgbCS=function(){function DeviceRgbCS(){this.name="DeviceRGB",this.numComps=3,this.defaultColor=new Float32Array([0,0,0])}return DeviceRgbCS.prototype={getRgb:ColorSpace.prototype.getRgb,getRgbItem:function(src,srcOffset,dest,destOffset){var r=255*src[srcOffset]|0,g=255*src[srcOffset+1]|0,b=255*src[srcOffset+2]|0;dest[destOffset]=0>r?0:r>255?255:r,dest[destOffset+1]=0>g?0:g>255?255:g,dest[destOffset+2]=0>b?0:b>255?255:b},getRgbBuffer:function(src,srcOffset,count,dest,destOffset,bits,alpha01){if(8===bits&&0===alpha01)return void dest.set(src.subarray(srcOffset,srcOffset+3*count),destOffset);for(var scale=255/((1<<bits)-1),j=srcOffset,q=destOffset,i=0;count>i;++i)dest[q++]=scale*src[j++]|0,dest[q++]=scale*src[j++]|0,dest[q++]=scale*src[j++]|0,q+=alpha01},getOutputLength:function(inputLength,alpha01){return inputLength*(3+alpha01)/3|0},isPassthrough:function(bits){return 8===bits},fillRgb:ColorSpace.prototype.fillRgb,isDefaultDecode:function(decodeMap){return ColorSpace.isDefaultDecode(decodeMap,this.numComps)},usesZeroToOneRange:!0},DeviceRgbCS}(),DeviceCmykCS=function(){function convertToRgb(src,srcOffset,srcScale,dest,destOffset){var c=src[srcOffset+0]*srcScale,m=src[srcOffset+1]*srcScale,y=src[srcOffset+2]*srcScale,k=src[srcOffset+3]*srcScale,r=c*(-4.387332384609988*c+54.48615194189176*m+18.82290502165302*y+212.25662451639585*k+-285.2331026137004)+m*(1.7149763477362134*m-5.6096736904047315*y+-17.873870861415444*k-5.497006427196366)+y*(-2.5217340131683033*y-21.248923337353073*k+17.5119270841813)+k*(-21.86122147463605*k-189.48180835922747)+255|0,g=c*(8.841041422036149*c+60.118027045597366*m+6.871425592049007*y+31.159100130055922*k+-79.2970844816548)+m*(-15.310361306967817*m+17.575251261109482*y+131.35250912493976*k-190.9453302588951)+y*(4.444339102852739*y+9.8632861493405*k-24.86741582555878)+k*(-20.737325471181034*k-187.80453709719578)+255|0,b=c*(.8842522430003296*c+8.078677503112928*m+30.89978309703729*y-.23883238689178934*k+-14.183576799673286)+m*(10.49593273432072*m+63.02378494754052*y+50.606957656360734*k-112.23884253719248)+y*(.03296041114873217*y+115.60384449646641*k+-193.58209356861505)+k*(-22.33816807309886*k-180.12613974708367)+255|0;dest[destOffset]=r>255?255:0>r?0:r,dest[destOffset+1]=g>255?255:0>g?0:g,dest[destOffset+2]=b>255?255:0>b?0:b}function DeviceCmykCS(){this.name="DeviceCMYK",this.numComps=4,this.defaultColor=new Float32Array([0,0,0,1])}return DeviceCmykCS.prototype={getRgb:ColorSpace.prototype.getRgb,getRgbItem:function(src,srcOffset,dest,destOffset){convertToRgb(src,srcOffset,1,dest,destOffset)},getRgbBuffer:function(src,srcOffset,count,dest,destOffset,bits,alpha01){for(var scale=1/((1<<bits)-1),i=0;count>i;i++)convertToRgb(src,srcOffset,scale,dest,destOffset),srcOffset+=4,destOffset+=3+alpha01},getOutputLength:function(inputLength,alpha01){return inputLength/4*(3+alpha01)|0},isPassthrough:ColorSpace.prototype.isPassthrough,fillRgb:ColorSpace.prototype.fillRgb,isDefaultDecode:function(decodeMap){return ColorSpace.isDefaultDecode(decodeMap,this.numComps)},usesZeroToOneRange:!0},DeviceCmykCS}(),CalGrayCS=function(){function CalGrayCS(whitePoint,blackPoint,gamma){this.name="CalGray",this.numComps=1,this.defaultColor=new Float32Array([0]),whitePoint||error("WhitePoint missing - required for color space CalGray"),blackPoint=blackPoint||[0,0,0],gamma=gamma||1,this.XW=whitePoint[0],this.YW=whitePoint[1],this.ZW=whitePoint[2],this.XB=blackPoint[0],this.YB=blackPoint[1],this.ZB=blackPoint[2],this.G=gamma,(this.XW<0||this.ZW<0||1!==this.YW)&&error("Invalid WhitePoint components for "+this.name+", no fallback available"),(this.XB<0||this.YB<0||this.ZB<0)&&(info("Invalid BlackPoint for "+this.name+", falling back to default"),this.XB=this.YB=this.ZB=0),(0!==this.XB||0!==this.YB||0!==this.ZB)&&warn(this.name+", BlackPoint: XB: "+this.XB+", YB: "+this.YB+", ZB: "+this.ZB+", only default values are supported."),this.G<1&&(info("Invalid Gamma: "+this.G+" for "+this.name+", falling back to default"),this.G=1)}function convertToRgb(cs,src,srcOffset,dest,destOffset,scale){var A=src[srcOffset]*scale,AG=Math.pow(A,cs.G),L=cs.YW*AG,val=0|Math.max(295.8*Math.pow(L,.3333333333333333)-40.8,0);dest[destOffset]=val,dest[destOffset+1]=val,dest[destOffset+2]=val}return CalGrayCS.prototype={getRgb:ColorSpace.prototype.getRgb,getRgbItem:function(src,srcOffset,dest,destOffset){convertToRgb(this,src,srcOffset,dest,destOffset,1)},getRgbBuffer:function(src,srcOffset,count,dest,destOffset,bits,alpha01){for(var scale=1/((1<<bits)-1),i=0;count>i;++i)convertToRgb(this,src,srcOffset,dest,destOffset,scale),srcOffset+=1,destOffset+=3+alpha01},getOutputLength:function(inputLength,alpha01){return inputLength*(3+alpha01)},isPassthrough:ColorSpace.prototype.isPassthrough,fillRgb:ColorSpace.prototype.fillRgb,isDefaultDecode:function(decodeMap){return ColorSpace.isDefaultDecode(decodeMap,this.numComps)},usesZeroToOneRange:!0},CalGrayCS}(),CalRGBCS=function(){function CalRGBCS(whitePoint,blackPoint,gamma,matrix){this.name="CalRGB",this.numComps=3,this.defaultColor=new Float32Array(3),whitePoint||error("WhitePoint missing - required for color space CalRGB"),blackPoint=blackPoint||new Float32Array(3),gamma=gamma||new Float32Array([1,1,1]),matrix=matrix||new Float32Array([1,0,0,0,1,0,0,0,1]);var XW=whitePoint[0],YW=whitePoint[1],ZW=whitePoint[2];this.whitePoint=whitePoint;var XB=blackPoint[0],YB=blackPoint[1],ZB=blackPoint[2];this.blackPoint=blackPoint,this.GR=gamma[0],this.GG=gamma[1],this.GB=gamma[2],this.MXA=matrix[0],this.MYA=matrix[1],this.MZA=matrix[2],this.MXB=matrix[3],this.MYB=matrix[4],this.MZB=matrix[5],this.MXC=matrix[6],this.MYC=matrix[7],this.MZC=matrix[8],(0>XW||0>ZW||1!==YW)&&error("Invalid WhitePoint components for "+this.name+", no fallback available"),(0>XB||0>YB||0>ZB)&&(info("Invalid BlackPoint for "+this.name+" ["+XB+", "+YB+", "+ZB+"], falling back to default"),this.blackPoint=new Float32Array(3)),(this.GR<0||this.GG<0||this.GB<0)&&(info("Invalid Gamma ["+this.GR+", "+this.GG+", "+this.GB+"] for "+this.name+", falling back to default"),this.GR=this.GG=this.GB=1),(this.MXA<0||this.MYA<0||this.MZA<0||this.MXB<0||this.MYB<0||this.MZB<0||this.MXC<0||this.MYC<0||this.MZC<0)&&(info("Invalid Matrix for "+this.name+" ["+this.MXA+", "+this.MYA+", "+this.MZA+this.MXB+", "+this.MYB+", "+this.MZB+this.MXC+", "+this.MYC+", "+this.MZC+"], falling back to default"),this.MXA=this.MYB=this.MZC=1,this.MXB=this.MYA=this.MZA=this.MXC=this.MYC=this.MZB=0)}function matrixProduct(a,b,result){result[0]=a[0]*b[0]+a[1]*b[1]+a[2]*b[2],result[1]=a[3]*b[0]+a[4]*b[1]+a[5]*b[2],result[2]=a[6]*b[0]+a[7]*b[1]+a[8]*b[2]}function convertToFlat(sourceWhitePoint,LMS,result){result[0]=1*LMS[0]/sourceWhitePoint[0],result[1]=1*LMS[1]/sourceWhitePoint[1],result[2]=1*LMS[2]/sourceWhitePoint[2]}function convertToD65(sourceWhitePoint,LMS,result){var D65X=.95047,D65Y=1,D65Z=1.08883;result[0]=LMS[0]*D65X/sourceWhitePoint[0],result[1]=LMS[1]*D65Y/sourceWhitePoint[1],result[2]=LMS[2]*D65Z/sourceWhitePoint[2]}function sRGBTransferFunction(color){return.0031308>=color?adjustToRange(0,1,12.92*color):adjustToRange(0,1,1.055*Math.pow(color,1/2.4)-.055)}function adjustToRange(min,max,value){return Math.max(min,Math.min(max,value))}function decodeL(L){return 0>L?-decodeL(-L):L>8?Math.pow((L+16)/116,3):L*DECODE_L_CONSTANT}function compensateBlackPoint(sourceBlackPoint,XYZ_Flat,result){if(0===sourceBlackPoint[0]&&0===sourceBlackPoint[1]&&0===sourceBlackPoint[2])return result[0]=XYZ_Flat[0],result[1]=XYZ_Flat[1],void(result[2]=XYZ_Flat[2]);var zeroDecodeL=decodeL(0),X_DST=zeroDecodeL,X_SRC=decodeL(sourceBlackPoint[0]),Y_DST=zeroDecodeL,Y_SRC=decodeL(sourceBlackPoint[1]),Z_DST=zeroDecodeL,Z_SRC=decodeL(sourceBlackPoint[2]),X_Scale=(1-X_DST)/(1-X_SRC),X_Offset=1-X_Scale,Y_Scale=(1-Y_DST)/(1-Y_SRC),Y_Offset=1-Y_Scale,Z_Scale=(1-Z_DST)/(1-Z_SRC),Z_Offset=1-Z_Scale;result[0]=XYZ_Flat[0]*X_Scale+X_Offset,result[1]=XYZ_Flat[1]*Y_Scale+Y_Offset,result[2]=XYZ_Flat[2]*Z_Scale+Z_Offset}function normalizeWhitePointToFlat(sourceWhitePoint,XYZ_In,result){if(1===sourceWhitePoint[0]&&1===sourceWhitePoint[2])return result[0]=XYZ_In[0],result[1]=XYZ_In[1],void(result[2]=XYZ_In[2]);var LMS=result;matrixProduct(BRADFORD_SCALE_MATRIX,XYZ_In,LMS);var LMS_Flat=tempNormalizeMatrix;convertToFlat(sourceWhitePoint,LMS,LMS_Flat),matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX,LMS_Flat,result)}function normalizeWhitePointToD65(sourceWhitePoint,XYZ_In,result){var LMS=result;matrixProduct(BRADFORD_SCALE_MATRIX,XYZ_In,LMS);var LMS_D65=tempNormalizeMatrix;convertToD65(sourceWhitePoint,LMS,LMS_D65),matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX,LMS_D65,result)}function convertToRgb(cs,src,srcOffset,dest,destOffset,scale){var A=adjustToRange(0,1,src[srcOffset]*scale),B=adjustToRange(0,1,src[srcOffset+1]*scale),C=adjustToRange(0,1,src[srcOffset+2]*scale),AGR=Math.pow(A,cs.GR),BGG=Math.pow(B,cs.GG),CGB=Math.pow(C,cs.GB),X=cs.MXA*AGR+cs.MXB*BGG+cs.MXC*CGB,Y=cs.MYA*AGR+cs.MYB*BGG+cs.MYC*CGB,Z=cs.MZA*AGR+cs.MZB*BGG+cs.MZC*CGB,XYZ=tempConvertMatrix1;XYZ[0]=X,XYZ[1]=Y,XYZ[2]=Z;var XYZ_Flat=tempConvertMatrix2;normalizeWhitePointToFlat(cs.whitePoint,XYZ,XYZ_Flat);var XYZ_Black=tempConvertMatrix1;compensateBlackPoint(cs.blackPoint,XYZ_Flat,XYZ_Black);var XYZ_D65=tempConvertMatrix2;normalizeWhitePointToD65(FLAT_WHITEPOINT_MATRIX,XYZ_Black,XYZ_D65);var SRGB=tempConvertMatrix1;matrixProduct(SRGB_D65_XYZ_TO_RGB_MATRIX,XYZ_D65,SRGB);var sR=sRGBTransferFunction(SRGB[0]),sG=sRGBTransferFunction(SRGB[1]),sB=sRGBTransferFunction(SRGB[2]);dest[destOffset]=Math.round(255*sR),dest[destOffset+1]=Math.round(255*sG),dest[destOffset+2]=Math.round(255*sB)}var BRADFORD_SCALE_MATRIX=new Float32Array([.8951,.2664,-.1614,-.7502,1.7135,.0367,.0389,-.0685,1.0296]),BRADFORD_SCALE_INVERSE_MATRIX=new Float32Array([.9869929,-.1470543,.1599627,.4323053,.5183603,.0492912,-.0085287,.0400428,.9684867]),SRGB_D65_XYZ_TO_RGB_MATRIX=new Float32Array([3.2404542,-1.5371385,-.4985314,-.969266,1.8760108,.041556,.0556434,-.2040259,1.0572252]),FLAT_WHITEPOINT_MATRIX=new Float32Array([1,1,1]),tempNormalizeMatrix=new Float32Array(3),tempConvertMatrix1=new Float32Array(3),tempConvertMatrix2=new Float32Array(3),DECODE_L_CONSTANT=Math.pow(24/116,3)/8;
return CalRGBCS.prototype={getRgb:function(src,srcOffset){var rgb=new Uint8Array(3);return this.getRgbItem(src,srcOffset,rgb,0),rgb},getRgbItem:function(src,srcOffset,dest,destOffset){convertToRgb(this,src,srcOffset,dest,destOffset,1)},getRgbBuffer:function(src,srcOffset,count,dest,destOffset,bits,alpha01){for(var scale=1/((1<<bits)-1),i=0;count>i;++i)convertToRgb(this,src,srcOffset,dest,destOffset,scale),srcOffset+=3,destOffset+=3+alpha01},getOutputLength:function(inputLength,alpha01){return inputLength*(3+alpha01)/3|0},isPassthrough:ColorSpace.prototype.isPassthrough,fillRgb:ColorSpace.prototype.fillRgb,isDefaultDecode:function(decodeMap){return ColorSpace.isDefaultDecode(decodeMap,this.numComps)},usesZeroToOneRange:!0},CalRGBCS}(),LabCS=function(){function LabCS(whitePoint,blackPoint,range){this.name="Lab",this.numComps=3,this.defaultColor=new Float32Array([0,0,0]),whitePoint||error("WhitePoint missing - required for color space Lab"),blackPoint=blackPoint||[0,0,0],range=range||[-100,100,-100,100],this.XW=whitePoint[0],this.YW=whitePoint[1],this.ZW=whitePoint[2],this.amin=range[0],this.amax=range[1],this.bmin=range[2],this.bmax=range[3],this.XB=blackPoint[0],this.YB=blackPoint[1],this.ZB=blackPoint[2],(this.XW<0||this.ZW<0||1!==this.YW)&&error("Invalid WhitePoint components, no fallback available"),(this.XB<0||this.YB<0||this.ZB<0)&&(info("Invalid BlackPoint, falling back to default"),this.XB=this.YB=this.ZB=0),(this.amin>this.amax||this.bmin>this.bmax)&&(info("Invalid Range, falling back to defaults"),this.amin=-100,this.amax=100,this.bmin=-100,this.bmax=100)}function fn_g(x){return x>=6/29?x*x*x:108/841*(x-4/29)}function decode(value,high1,low2,high2){return low2+value*(high2-low2)/high1}function convertToRgb(cs,src,srcOffset,maxVal,dest,destOffset){var Ls=src[srcOffset],as=src[srcOffset+1],bs=src[srcOffset+2];maxVal!==!1&&(Ls=decode(Ls,maxVal,0,100),as=decode(as,maxVal,cs.amin,cs.amax),bs=decode(bs,maxVal,cs.bmin,cs.bmax)),as=as>cs.amax?cs.amax:as<cs.amin?cs.amin:as,bs=bs>cs.bmax?cs.bmax:bs<cs.bmin?cs.bmin:bs;var r,g,b,M=(Ls+16)/116,L=M+as/500,N=M-bs/200,X=cs.XW*fn_g(L),Y=cs.YW*fn_g(M),Z=cs.ZW*fn_g(N);cs.ZW<1?(r=3.1339*X+-1.617*Y+Z*-.4906,g=X*-.9785+1.916*Y+.0333*Z,b=.072*X+Y*-.229+1.4057*Z):(r=3.2406*X+-1.5372*Y+Z*-.4986,g=X*-.9689+1.8758*Y+.0415*Z,b=.0557*X+Y*-.204+1.057*Z),dest[destOffset]=0>=r?0:r>=1?255:255*Math.sqrt(r)|0,dest[destOffset+1]=0>=g?0:g>=1?255:255*Math.sqrt(g)|0,dest[destOffset+2]=0>=b?0:b>=1?255:255*Math.sqrt(b)|0}return LabCS.prototype={getRgb:ColorSpace.prototype.getRgb,getRgbItem:function(src,srcOffset,dest,destOffset){convertToRgb(this,src,srcOffset,!1,dest,destOffset)},getRgbBuffer:function(src,srcOffset,count,dest,destOffset,bits,alpha01){for(var maxVal=(1<<bits)-1,i=0;count>i;i++)convertToRgb(this,src,srcOffset,maxVal,dest,destOffset),srcOffset+=3,destOffset+=3+alpha01},getOutputLength:function(inputLength,alpha01){return inputLength*(3+alpha01)/3|0},isPassthrough:ColorSpace.prototype.isPassthrough,fillRgb:ColorSpace.prototype.fillRgb,isDefaultDecode:function(){return!0},usesZeroToOneRange:!1},LabCS}(),ARCFourCipher=function(){function ARCFourCipher(key){this.a=0,this.b=0;var i,tmp,s=new Uint8Array(256),j=0,keyLength=key.length;for(i=0;256>i;++i)s[i]=i;for(i=0;256>i;++i)tmp=s[i],j=j+tmp+key[i%keyLength]&255,s[i]=s[j],s[j]=tmp;this.s=s}return ARCFourCipher.prototype={encryptBlock:function(data){var i,tmp,tmp2,n=data.length,a=this.a,b=this.b,s=this.s,output=new Uint8Array(n);for(i=0;n>i;++i)a=a+1&255,tmp=s[a],b=b+tmp&255,tmp2=s[b],s[a]=tmp2,s[b]=tmp,output[i]=data[i]^s[tmp+tmp2&255];return this.a=a,this.b=b,output}},ARCFourCipher.prototype.decryptBlock=ARCFourCipher.prototype.encryptBlock,ARCFourCipher}(),calculateMD5=function(){function hash(data,offset,length){var i,j,n,h0=1732584193,h1=-271733879,h2=-1732584194,h3=271733878,paddedLength=length+72&-64,padded=new Uint8Array(paddedLength);for(i=0;length>i;++i)padded[i]=data[offset++];for(padded[i++]=128,n=paddedLength-8;n>i;)padded[i++]=0;padded[i++]=length<<3&255,padded[i++]=length>>5&255,padded[i++]=length>>13&255,padded[i++]=length>>21&255,padded[i++]=length>>>29&255,padded[i++]=0,padded[i++]=0,padded[i++]=0;var w=new Int32Array(16);for(i=0;paddedLength>i;){for(j=0;16>j;++j,i+=4)w[j]=padded[i]|padded[i+1]<<8|padded[i+2]<<16|padded[i+3]<<24;var f,g,a=h0,b=h1,c=h2,d=h3;for(j=0;64>j;++j){16>j?(f=b&c|~b&d,g=j):32>j?(f=d&b|~d&c,g=5*j+1&15):48>j?(f=b^c^d,g=3*j+5&15):(f=c^(b|~d),g=7*j&15);var tmp=d,rotateArg=a+f+k[j]+w[g]|0,rotate=r[j];d=c,c=b,b=b+(rotateArg<<rotate|rotateArg>>>32-rotate)|0,a=tmp}h0=h0+a|0,h1=h1+b|0,h2=h2+c|0,h3=h3+d|0}return new Uint8Array([255&h0,h0>>8&255,h0>>16&255,h0>>>24&255,255&h1,h1>>8&255,h1>>16&255,h1>>>24&255,255&h2,h2>>8&255,h2>>16&255,h2>>>24&255,255&h3,h3>>8&255,h3>>16&255,h3>>>24&255])}var r=new Uint8Array([7,12,17,22,7,12,17,22,7,12,17,22,7,12,17,22,5,9,14,20,5,9,14,20,5,9,14,20,5,9,14,20,4,11,16,23,4,11,16,23,4,11,16,23,4,11,16,23,6,10,15,21,6,10,15,21,6,10,15,21,6,10,15,21]),k=new Int32Array([-680876936,-389564586,606105819,-1044525330,-176418897,1200080426,-1473231341,-45705983,1770035416,-1958414417,-42063,-1990404162,1804603682,-40341101,-1502002290,1236535329,-165796510,-1069501632,643717713,-373897302,-701558691,38016083,-660478335,-405537848,568446438,-1019803690,-187363961,1163531501,-1444681467,-51403784,1735328473,-1926607734,-378558,-2022574463,1839030562,-35309556,-1530992060,1272893353,-155497632,-1094730640,681279174,-358537222,-722521979,76029189,-640364487,-421815835,530742520,-995338651,-198630844,1126891415,-1416354905,-57434055,1700485571,-1894986606,-1051523,-2054922799,1873313359,-30611744,-1560198380,1309151649,-145523070,-1120210379,718787259,-343485551]);return hash}(),Word64=function(){function Word64(highInteger,lowInteger){this.high=0|highInteger,this.low=0|lowInteger}return Word64.prototype={and:function(word){this.high&=word.high,this.low&=word.low},xor:function(word){this.high^=word.high,this.low^=word.low},or:function(word){this.high|=word.high,this.low|=word.low},shiftRight:function(places){places>=32?(this.low=this.high>>>places-32|0,this.high=0):(this.low=this.low>>>places|this.high<<32-places,this.high=this.high>>>places|0)},shiftLeft:function(places){places>=32?(this.high=this.low<<places-32,this.low=0):(this.high=this.high<<places|this.low>>>32-places,this.low=this.low<<places)},rotateRight:function(places){var low,high;32&places?(high=this.low,low=this.high):(low=this.low,high=this.high),places&=31,this.low=low>>>places|high<<32-places,this.high=high>>>places|low<<32-places},not:function(){this.high=~this.high,this.low=~this.low},add:function(word){var lowAdd=(this.low>>>0)+(word.low>>>0),highAdd=(this.high>>>0)+(word.high>>>0);lowAdd>4294967295&&(highAdd+=1),this.low=0|lowAdd,this.high=0|highAdd},copyTo:function(bytes,offset){bytes[offset]=this.high>>>24&255,bytes[offset+1]=this.high>>16&255,bytes[offset+2]=this.high>>8&255,bytes[offset+3]=255&this.high,bytes[offset+4]=this.low>>>24&255,bytes[offset+5]=this.low>>16&255,bytes[offset+6]=this.low>>8&255,bytes[offset+7]=255&this.low},assign:function(word){this.high=word.high,this.low=word.low}},Word64}(),calculateSHA256=function(){function rotr(x,n){return x>>>n|x<<32-n}function ch(x,y,z){return x&y^~x&z}function maj(x,y,z){return x&y^x&z^y&z}function sigma(x){return rotr(x,2)^rotr(x,13)^rotr(x,22)}function sigmaPrime(x){return rotr(x,6)^rotr(x,11)^rotr(x,25)}function littleSigma(x){return rotr(x,7)^rotr(x,18)^x>>>3}function littleSigmaPrime(x){return rotr(x,17)^rotr(x,19)^x>>>10}function hash(data,offset,length){var i,j,n,h0=1779033703,h1=3144134277,h2=1013904242,h3=2773480762,h4=1359893119,h5=2600822924,h6=528734635,h7=1541459225,paddedLength=64*Math.ceil((length+9)/64),padded=new Uint8Array(paddedLength);for(i=0;length>i;++i)padded[i]=data[offset++];for(padded[i++]=128,n=paddedLength-8;n>i;)padded[i++]=0;padded[i++]=0,padded[i++]=0,padded[i++]=0,padded[i++]=length>>>29&255,padded[i++]=length>>21&255,padded[i++]=length>>13&255,padded[i++]=length>>5&255,padded[i++]=length<<3&255;var w=new Uint32Array(64);for(i=0;paddedLength>i;){for(j=0;16>j;++j)w[j]=padded[i]<<24|padded[i+1]<<16|padded[i+2]<<8|padded[i+3],i+=4;for(j=16;64>j;++j)w[j]=littleSigmaPrime(w[j-2])+w[j-7]+littleSigma(w[j-15])+w[j-16]|0;var t1,t2,a=h0,b=h1,c=h2,d=h3,e=h4,f=h5,g=h6,h=h7;for(j=0;64>j;++j)t1=h+sigmaPrime(e)+ch(e,f,g)+k[j]+w[j],t2=sigma(a)+maj(a,b,c),h=g,g=f,f=e,e=d+t1|0,d=c,c=b,b=a,a=t1+t2|0;h0=h0+a|0,h1=h1+b|0,h2=h2+c|0,h3=h3+d|0,h4=h4+e|0,h5=h5+f|0,h6=h6+g|0,h7=h7+h|0}return new Uint8Array([h0>>24&255,h0>>16&255,h0>>8&255,255&h0,h1>>24&255,h1>>16&255,h1>>8&255,255&h1,h2>>24&255,h2>>16&255,h2>>8&255,255&h2,h3>>24&255,h3>>16&255,h3>>8&255,255&h3,h4>>24&255,h4>>16&255,h4>>8&255,255&h4,h5>>24&255,h5>>16&255,h5>>8&255,255&h5,h6>>24&255,h6>>16&255,h6>>8&255,255&h6,h7>>24&255,h7>>16&255,h7>>8&255,255&h7])}var k=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];return hash}(),calculateSHA512=function(){function ch(result,x,y,z,tmp){result.assign(x),result.and(y),tmp.assign(x),tmp.not(),tmp.and(z),result.xor(tmp)}function maj(result,x,y,z,tmp){result.assign(x),result.and(y),tmp.assign(x),tmp.and(z),result.xor(tmp),tmp.assign(y),tmp.and(z),result.xor(tmp)}function sigma(result,x,tmp){result.assign(x),result.rotateRight(28),tmp.assign(x),tmp.rotateRight(34),result.xor(tmp),tmp.assign(x),tmp.rotateRight(39),result.xor(tmp)}function sigmaPrime(result,x,tmp){result.assign(x),result.rotateRight(14),tmp.assign(x),tmp.rotateRight(18),result.xor(tmp),tmp.assign(x),tmp.rotateRight(41),result.xor(tmp)}function littleSigma(result,x,tmp){result.assign(x),result.rotateRight(1),tmp.assign(x),tmp.rotateRight(8),result.xor(tmp),tmp.assign(x),tmp.shiftRight(7),result.xor(tmp)}function littleSigmaPrime(result,x,tmp){result.assign(x),result.rotateRight(19),tmp.assign(x),tmp.rotateRight(61),result.xor(tmp),tmp.assign(x),tmp.shiftRight(6),result.xor(tmp)}function hash(data,offset,length,mode384){mode384=!!mode384;var h0,h1,h2,h3,h4,h5,h6,h7;mode384?(h0=new Word64(3418070365,3238371032),h1=new Word64(1654270250,914150663),h2=new Word64(2438529370,812702999),h3=new Word64(355462360,4144912697),h4=new Word64(1731405415,4290775857),h5=new Word64(2394180231,1750603025),h6=new Word64(3675008525,1694076839),h7=new Word64(1203062813,3204075428)):(h0=new Word64(1779033703,4089235720),h1=new Word64(3144134277,2227873595),h2=new Word64(1013904242,4271175723),h3=new Word64(2773480762,1595750129),h4=new Word64(1359893119,2917565137),h5=new Word64(2600822924,725511199),h6=new Word64(528734635,4215389547),h7=new Word64(1541459225,327033209));var i,j,n,paddedLength=128*Math.ceil((length+17)/128),padded=new Uint8Array(paddedLength);for(i=0;length>i;++i)padded[i]=data[offset++];for(padded[i++]=128,n=paddedLength-16;n>i;)padded[i++]=0;padded[i++]=0,padded[i++]=0,padded[i++]=0,padded[i++]=0,padded[i++]=0,padded[i++]=0,padded[i++]=0,padded[i++]=0,padded[i++]=0,padded[i++]=0,padded[i++]=0,padded[i++]=length>>>29&255,padded[i++]=length>>21&255,padded[i++]=length>>13&255,padded[i++]=length>>5&255,padded[i++]=length<<3&255;var w=new Array(80);for(i=0;80>i;i++)w[i]=new Word64(0,0);var tmp3,a=new Word64(0,0),b=new Word64(0,0),c=new Word64(0,0),d=new Word64(0,0),e=new Word64(0,0),f=new Word64(0,0),g=new Word64(0,0),h=new Word64(0,0),t1=new Word64(0,0),t2=new Word64(0,0),tmp1=new Word64(0,0),tmp2=new Word64(0,0);for(i=0;paddedLength>i;){for(j=0;16>j;++j)w[j].high=padded[i]<<24|padded[i+1]<<16|padded[i+2]<<8|padded[i+3],w[j].low=padded[i+4]<<24|padded[i+5]<<16|padded[i+6]<<8|padded[i+7],i+=8;for(j=16;80>j;++j)tmp3=w[j],littleSigmaPrime(tmp3,w[j-2],tmp2),tmp3.add(w[j-7]),littleSigma(tmp1,w[j-15],tmp2),tmp3.add(tmp1),tmp3.add(w[j-16]);for(a.assign(h0),b.assign(h1),c.assign(h2),d.assign(h3),e.assign(h4),f.assign(h5),g.assign(h6),h.assign(h7),j=0;80>j;++j)t1.assign(h),sigmaPrime(tmp1,e,tmp2),t1.add(tmp1),ch(tmp1,e,f,g,tmp2),t1.add(tmp1),t1.add(k[j]),t1.add(w[j]),sigma(t2,a,tmp2),maj(tmp1,a,b,c,tmp2),t2.add(tmp1),tmp3=h,h=g,g=f,f=e,d.add(t1),e=d,d=c,c=b,b=a,tmp3.assign(t1),tmp3.add(t2),a=tmp3;h0.add(a),h1.add(b),h2.add(c),h3.add(d),h4.add(e),h5.add(f),h6.add(g),h7.add(h)}var result;return mode384?(result=new Uint8Array(48),h0.copyTo(result,0),h1.copyTo(result,8),h2.copyTo(result,16),h3.copyTo(result,24),h4.copyTo(result,32),h5.copyTo(result,40)):(result=new Uint8Array(64),h0.copyTo(result,0),h1.copyTo(result,8),h2.copyTo(result,16),h3.copyTo(result,24),h4.copyTo(result,32),h5.copyTo(result,40),h6.copyTo(result,48),h7.copyTo(result,56)),result}var k=[new Word64(1116352408,3609767458),new Word64(1899447441,602891725),new Word64(3049323471,3964484399),new Word64(3921009573,2173295548),new Word64(961987163,4081628472),new Word64(1508970993,3053834265),new Word64(2453635748,2937671579),new Word64(2870763221,3664609560),new Word64(3624381080,2734883394),new Word64(310598401,1164996542),new Word64(607225278,1323610764),new Word64(1426881987,3590304994),new Word64(1925078388,4068182383),new Word64(2162078206,991336113),new Word64(2614888103,633803317),new Word64(3248222580,3479774868),new Word64(3835390401,2666613458),new Word64(4022224774,944711139),new Word64(264347078,2341262773),new Word64(604807628,2007800933),new Word64(770255983,1495990901),new Word64(1249150122,1856431235),new Word64(1555081692,3175218132),new Word64(1996064986,2198950837),new Word64(2554220882,3999719339),new Word64(2821834349,766784016),new Word64(2952996808,2566594879),new Word64(3210313671,3203337956),new Word64(3336571891,1034457026),new Word64(3584528711,2466948901),new Word64(113926993,3758326383),new Word64(338241895,168717936),new Word64(666307205,1188179964),new Word64(773529912,1546045734),new Word64(1294757372,1522805485),new Word64(1396182291,2643833823),new Word64(1695183700,2343527390),new Word64(1986661051,1014477480),new Word64(2177026350,1206759142),new Word64(2456956037,344077627),new Word64(2730485921,1290863460),new Word64(2820302411,3158454273),new Word64(3259730800,3505952657),new Word64(3345764771,106217008),new Word64(3516065817,3606008344),new Word64(3600352804,1432725776),new Word64(4094571909,1467031594),new Word64(275423344,851169720),new Word64(430227734,3100823752),new Word64(506948616,1363258195),new Word64(659060556,3750685593),new Word64(883997877,3785050280),new Word64(958139571,3318307427),new Word64(1322822218,3812723403),new Word64(1537002063,2003034995),new Word64(1747873779,3602036899),new Word64(1955562222,1575990012),new Word64(2024104815,1125592928),new Word64(2227730452,2716904306),new Word64(2361852424,442776044),new Word64(2428436474,593698344),new Word64(2756734187,3733110249),new Word64(3204031479,2999351573),new Word64(3329325298,3815920427),new Word64(3391569614,3928383900),new Word64(3515267271,566280711),new Word64(3940187606,3454069534),new Word64(4118630271,4000239992),new Word64(116418474,1914138554),new Word64(174292421,2731055270),new Word64(289380356,3203993006),new Word64(460393269,320620315),new Word64(685471733,587496836),new Word64(852142971,1086792851),new Word64(1017036298,365543100),new Word64(1126000580,2618297676),new Word64(1288033470,3409855158),new Word64(1501505948,4234509866),new Word64(1607167915,987167468),new Word64(1816402316,1246189591)];return hash}(),calculateSHA384=function(){function hash(data,offset,length){return calculateSHA512(data,offset,length,!0)}return hash}(),NullCipher=function(){function NullCipher(){}return NullCipher.prototype={decryptBlock:function(data){return data}},NullCipher}(),AES128Cipher=function(){function expandKey128(cipherKey){var b=176,result=new Uint8Array(b);result.set(cipherKey);for(var j=16,i=1;b>j;++i){var t1=result[j-3],t2=result[j-2],t3=result[j-1],t4=result[j-4];t1=s[t1],t2=s[t2],t3=s[t3],t4=s[t4],t1^=rcon[i];for(var n=0;4>n;++n)result[j]=t1^=result[j-16],j++,result[j]=t2^=result[j-16],j++,result[j]=t3^=result[j-16],j++,result[j]=t4^=result[j-16],j++}return result}function decrypt128(input,key){var state=new Uint8Array(16);state.set(input);var i,j,k,t,u,v;for(j=0,k=160;16>j;++j,++k)state[j]^=key[k];for(i=9;i>=1;--i){for(t=state[13],state[13]=state[9],state[9]=state[5],state[5]=state[1],state[1]=t,t=state[14],u=state[10],state[14]=state[6],state[10]=state[2],state[6]=t,state[2]=u,t=state[15],u=state[11],v=state[7],state[15]=state[3],state[11]=t,state[7]=u,state[3]=v,j=0;16>j;++j)state[j]=inv_s[state[j]];for(j=0,k=16*i;16>j;++j,++k)state[j]^=key[k];for(j=0;16>j;j+=4){var s0=mix[state[j]],s1=mix[state[j+1]],s2=mix[state[j+2]],s3=mix[state[j+3]];t=s0^s1>>>8^s1<<24^s2>>>16^s2<<16^s3>>>24^s3<<8,state[j]=t>>>24&255,state[j+1]=t>>16&255,state[j+2]=t>>8&255,state[j+3]=255&t}}for(t=state[13],state[13]=state[9],state[9]=state[5],state[5]=state[1],state[1]=t,t=state[14],u=state[10],state[14]=state[6],state[10]=state[2],state[6]=t,state[2]=u,t=state[15],u=state[11],v=state[7],state[15]=state[3],state[11]=t,state[7]=u,state[3]=v,j=0;16>j;++j)state[j]=inv_s[state[j]],state[j]^=key[j];return state}function encrypt128(input,key){var t,u,v,k,state=new Uint8Array(16);for(state.set(input),j=0;16>j;++j)state[j]^=key[j];for(i=1;10>i;i++){for(j=0;16>j;++j)state[j]=s[state[j]];v=state[1],state[1]=state[5],state[5]=state[9],state[9]=state[13],state[13]=v,v=state[2],u=state[6],state[2]=state[10],state[6]=state[14],state[10]=v,state[14]=u,v=state[3],u=state[7],t=state[11],state[3]=state[15],state[7]=v,state[11]=u,state[15]=t;for(var j=0;16>j;j+=4){var s0=state[j+0],s1=state[j+1],s2=state[j+2],s3=state[j+3];t=s0^s1^s2^s3,state[j+0]^=t^mixCol[s0^s1],state[j+1]^=t^mixCol[s1^s2],state[j+2]^=t^mixCol[s2^s3],state[j+3]^=t^mixCol[s3^s0]}for(j=0,k=16*i;16>j;++j,++k)state[j]^=key[k]}for(j=0;16>j;++j)state[j]=s[state[j]];for(v=state[1],state[1]=state[5],state[5]=state[9],state[9]=state[13],state[13]=v,v=state[2],u=state[6],state[2]=state[10],state[6]=state[14],state[10]=v,state[14]=u,v=state[3],u=state[7],t=state[11],state[3]=state[15],state[7]=v,state[11]=u,state[15]=t,j=0,k=160;16>j;++j,++k)state[j]^=key[k];return state}function AES128Cipher(key){this.key=expandKey128(key),this.buffer=new Uint8Array(16),this.bufferPosition=0}function decryptBlock2(data,finalize){var i,j,ii,sourceLength=data.length,buffer=this.buffer,bufferLength=this.bufferPosition,result=[],iv=this.iv;for(i=0;sourceLength>i;++i)if(buffer[bufferLength]=data[i],++bufferLength,!(16>bufferLength)){var plain=decrypt128(buffer,this.key);for(j=0;16>j;++j)plain[j]^=iv[j];iv=buffer,result.push(plain),buffer=new Uint8Array(16),bufferLength=0}if(this.buffer=buffer,this.bufferLength=bufferLength,this.iv=iv,0===result.length)return new Uint8Array([]);var outputLength=16*result.length;if(finalize){var lastBlock=result[result.length-1],psLen=lastBlock[15];if(16>=psLen){for(i=15,ii=16-psLen;i>=ii;--i)if(lastBlock[i]!==psLen){psLen=0;break}outputLength-=psLen,result[result.length-1]=lastBlock.subarray(0,16-psLen)}}var output=new Uint8Array(outputLength);for(i=0,j=0,ii=result.length;ii>i;++i,j+=16)output.set(result[i],j);return output}for(var rcon=new Uint8Array([141,1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145,57,114,228,211,189,97,194,159,37,74,148,51,102,204,131,29,58,116,232,203,141,1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145,57,114,228,211,189,97,194,159,37,74,148,51,102,204,131,29,58,116,232,203,141,1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145,57,114,228,211,189,97,194,159,37,74,148,51,102,204,131,29,58,116,232,203,141,1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145,57,114,228,211,189,97,194,159,37,74,148,51,102,204,131,29,58,116,232,203,141,1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145,57,114,228,211,189,97,194,159,37,74,148,51,102,204,131,29,58,116,232,203,141]),s=new Uint8Array([99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22]),inv_s=new Uint8Array([82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125]),mixCol=new Uint8Array(256),i=0;256>i;i++)mixCol[i]=128>i?i<<1:i<<1^27;var mix=new Uint32Array([0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795]);return AES128Cipher.prototype={decryptBlock:function(data,finalize){var i,sourceLength=data.length,buffer=this.buffer,bufferLength=this.bufferPosition;for(i=0;16>bufferLength&&sourceLength>i;++i,++bufferLength)buffer[bufferLength]=data[i];return 16>bufferLength?(this.bufferLength=bufferLength,new Uint8Array([])):(this.iv=buffer,this.buffer=new Uint8Array(16),this.bufferLength=0,this.decryptBlock=decryptBlock2,this.decryptBlock(data.subarray(16),finalize))},encrypt:function(data,iv){var i,j,ii,sourceLength=data.length,buffer=this.buffer,bufferLength=this.bufferPosition,result=[];for(iv||(iv=new Uint8Array(16)),i=0;sourceLength>i;++i)if(buffer[bufferLength]=data[i],++bufferLength,!(16>bufferLength)){for(j=0;16>j;++j)buffer[j]^=iv[j];var cipher=encrypt128(buffer,this.key);iv=cipher,result.push(cipher),buffer=new Uint8Array(16),bufferLength=0}if(this.buffer=buffer,this.bufferLength=bufferLength,this.iv=iv,0===result.length)return new Uint8Array([]);var outputLength=16*result.length,output=new Uint8Array(outputLength);for(i=0,j=0,ii=result.length;ii>i;++i,j+=16)output.set(result[i],j);return output}},AES128Cipher}(),AES256Cipher=function(){function expandKey256(cipherKey){var b=240,result=new Uint8Array(b),r=1;result.set(cipherKey);for(var j=32,i=1;b>j;++i){if(j%32===16)t1=s[t1],t2=s[t2],t3=s[t3],t4=s[t4];else if(j%32===0){var t1=result[j-3],t2=result[j-2],t3=result[j-1],t4=result[j-4];t1=s[t1],t2=s[t2],t3=s[t3],t4=s[t4],t1^=r,(r<<=1)>=256&&(r=255&(27^r))}for(var n=0;4>n;++n)result[j]=t1^=result[j-32],j++,result[j]=t2^=result[j-32],j++,result[j]=t3^=result[j-32],j++,result[j]=t4^=result[j-32],j++}return result}function decrypt256(input,key){var state=new Uint8Array(16);state.set(input);var i,j,k,t,u,v;for(j=0,k=224;16>j;++j,++k)state[j]^=key[k];for(i=13;i>=1;--i){for(t=state[13],state[13]=state[9],state[9]=state[5],state[5]=state[1],state[1]=t,t=state[14],u=state[10],state[14]=state[6],state[10]=state[2],state[6]=t,state[2]=u,t=state[15],u=state[11],v=state[7],state[15]=state[3],state[11]=t,state[7]=u,state[3]=v,j=0;16>j;++j)state[j]=inv_s[state[j]];for(j=0,k=16*i;16>j;++j,++k)state[j]^=key[k];for(j=0;16>j;j+=4){var s0=mix[state[j]],s1=mix[state[j+1]],s2=mix[state[j+2]],s3=mix[state[j+3]];t=s0^s1>>>8^s1<<24^s2>>>16^s2<<16^s3>>>24^s3<<8,state[j]=t>>>24&255,state[j+1]=t>>16&255,state[j+2]=t>>8&255,state[j+3]=255&t}}for(t=state[13],state[13]=state[9],state[9]=state[5],state[5]=state[1],state[1]=t,t=state[14],u=state[10],state[14]=state[6],state[10]=state[2],state[6]=t,state[2]=u,t=state[15],u=state[11],v=state[7],state[15]=state[3],state[11]=t,state[7]=u,state[3]=v,j=0;16>j;++j)state[j]=inv_s[state[j]],state[j]^=key[j];return state}function encrypt256(input,key){var t,u,v,k,state=new Uint8Array(16);for(state.set(input),j=0;16>j;++j)state[j]^=key[j];for(i=1;14>i;i++){for(j=0;16>j;++j)state[j]=s[state[j]];v=state[1],state[1]=state[5],state[5]=state[9],state[9]=state[13],state[13]=v,v=state[2],u=state[6],state[2]=state[10],state[6]=state[14],state[10]=v,state[14]=u,v=state[3],u=state[7],t=state[11],state[3]=state[15],state[7]=v,state[11]=u,state[15]=t;for(var j=0;16>j;j+=4){var s0=state[j+0],s1=state[j+1],s2=state[j+2],s3=state[j+3];t=s0^s1^s2^s3,state[j+0]^=t^mixCol[s0^s1],state[j+1]^=t^mixCol[s1^s2],state[j+2]^=t^mixCol[s2^s3],state[j+3]^=t^mixCol[s3^s0]}for(j=0,k=16*i;16>j;++j,++k)state[j]^=key[k]}for(j=0;16>j;++j)state[j]=s[state[j]];for(v=state[1],state[1]=state[5],state[5]=state[9],state[9]=state[13],state[13]=v,v=state[2],u=state[6],state[2]=state[10],state[6]=state[14],state[10]=v,state[14]=u,v=state[3],u=state[7],t=state[11],state[3]=state[15],state[7]=v,state[11]=u,state[15]=t,j=0,k=224;16>j;++j,++k)state[j]^=key[k];return state}function AES256Cipher(key){this.key=expandKey256(key),this.buffer=new Uint8Array(16),this.bufferPosition=0}function decryptBlock2(data,finalize){var i,j,ii,sourceLength=data.length,buffer=this.buffer,bufferLength=this.bufferPosition,result=[],iv=this.iv;for(i=0;sourceLength>i;++i)if(buffer[bufferLength]=data[i],++bufferLength,!(16>bufferLength)){var plain=decrypt256(buffer,this.key);for(j=0;16>j;++j)plain[j]^=iv[j];iv=buffer,result.push(plain),buffer=new Uint8Array(16),bufferLength=0}if(this.buffer=buffer,this.bufferLength=bufferLength,this.iv=iv,0===result.length)return new Uint8Array([]);var outputLength=16*result.length;if(finalize){var lastBlock=result[result.length-1],psLen=lastBlock[15];if(16>=psLen){for(i=15,ii=16-psLen;i>=ii;--i)if(lastBlock[i]!==psLen){psLen=0;break}outputLength-=psLen,result[result.length-1]=lastBlock.subarray(0,16-psLen)}}var output=new Uint8Array(outputLength);for(i=0,j=0,ii=result.length;ii>i;++i,j+=16)output.set(result[i],j);return output}for(var s=(new Uint8Array([141,1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145,57,114,228,211,189,97,194,159,37,74,148,51,102,204,131,29,58,116,232,203,141,1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145,57,114,228,211,189,97,194,159,37,74,148,51,102,204,131,29,58,116,232,203,141,1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145,57,114,228,211,189,97,194,159,37,74,148,51,102,204,131,29,58,116,232,203,141,1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145,57,114,228,211,189,97,194,159,37,74,148,51,102,204,131,29,58,116,232,203,141,1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145,57,114,228,211,189,97,194,159,37,74,148,51,102,204,131,29,58,116,232,203,141]),new Uint8Array([99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22])),inv_s=new Uint8Array([82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125]),mixCol=new Uint8Array(256),i=0;256>i;i++)mixCol[i]=128>i?i<<1:i<<1^27;
var mix=new Uint32Array([0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795]);return AES256Cipher.prototype={decryptBlock:function(data,finalize,iv){var i,sourceLength=data.length,buffer=this.buffer,bufferLength=this.bufferPosition;if(iv)this.iv=iv;else{for(i=0;16>bufferLength&&sourceLength>i;++i,++bufferLength)buffer[bufferLength]=data[i];if(16>bufferLength)return this.bufferLength=bufferLength,new Uint8Array([]);this.iv=buffer,data=data.subarray(16)}return this.buffer=new Uint8Array(16),this.bufferLength=0,this.decryptBlock=decryptBlock2,this.decryptBlock(data,finalize)},encrypt:function(data,iv){var i,j,ii,sourceLength=data.length,buffer=this.buffer,bufferLength=this.bufferPosition,result=[];for(iv||(iv=new Uint8Array(16)),i=0;sourceLength>i;++i)if(buffer[bufferLength]=data[i],++bufferLength,!(16>bufferLength)){for(j=0;16>j;++j)buffer[j]^=iv[j];var cipher=encrypt256(buffer,this.key);this.iv=cipher,result.push(cipher),buffer=new Uint8Array(16),bufferLength=0}if(this.buffer=buffer,this.bufferLength=bufferLength,this.iv=iv,0===result.length)return new Uint8Array([]);var outputLength=16*result.length,output=new Uint8Array(outputLength);for(i=0,j=0,ii=result.length;ii>i;++i,j+=16)output.set(result[i],j);return output}},AES256Cipher}(),PDF17=function(){function compareByteArrays(array1,array2){if(array1.length!==array2.length)return!1;for(var i=0;i<array1.length;i++)if(array1[i]!==array2[i])return!1;return!0}function PDF17(){}return PDF17.prototype={checkOwnerPassword:function(password,ownerValidationSalt,userBytes,ownerPassword){var hashData=new Uint8Array(password.length+56);hashData.set(password,0),hashData.set(ownerValidationSalt,password.length),hashData.set(userBytes,password.length+ownerValidationSalt.length);var result=calculateSHA256(hashData,0,hashData.length);return compareByteArrays(result,ownerPassword)},checkUserPassword:function(password,userValidationSalt,userPassword){var hashData=new Uint8Array(password.length+8);hashData.set(password,0),hashData.set(userValidationSalt,password.length);var result=calculateSHA256(hashData,0,hashData.length);return compareByteArrays(result,userPassword)},getOwnerKey:function(password,ownerKeySalt,userBytes,ownerEncryption){var hashData=new Uint8Array(password.length+56);hashData.set(password,0),hashData.set(ownerKeySalt,password.length),hashData.set(userBytes,password.length+ownerKeySalt.length);var key=calculateSHA256(hashData,0,hashData.length),cipher=new AES256Cipher(key);return cipher.decryptBlock(ownerEncryption,!1,new Uint8Array(16))},getUserKey:function(password,userKeySalt,userEncryption){var hashData=new Uint8Array(password.length+8);hashData.set(password,0),hashData.set(userKeySalt,password.length);var key=calculateSHA256(hashData,0,hashData.length),cipher=new AES256Cipher(key);return cipher.decryptBlock(userEncryption,!1,new Uint8Array(16))}},PDF17}(),PDF20=function(){function concatArrays(array1,array2){var t=new Uint8Array(array1.length+array2.length);return t.set(array1,0),t.set(array2,array1.length),t}function calculatePDF20Hash(password,input,userBytes){for(var k=calculateSHA256(input,0,input.length).subarray(0,32),e=[0],i=0;64>i||e[e.length-1]>i-32;){var arrayLength=password.length+k.length+userBytes.length,k1=new Uint8Array(64*arrayLength),array=concatArrays(password,k);array=concatArrays(array,userBytes);for(var j=0,pos=0;64>j;j++,pos+=arrayLength)k1.set(array,pos);var cipher=new AES128Cipher(k.subarray(0,16));e=cipher.encrypt(k1,k.subarray(16,32));for(var remainder=0,z=0;16>z;z++)remainder*=1,remainder%=3,remainder+=(e[z]>>>0)%3,remainder%=3;0===remainder?k=calculateSHA256(e,0,e.length):1===remainder?k=calculateSHA384(e,0,e.length):2===remainder&&(k=calculateSHA512(e,0,e.length)),i++}return k.subarray(0,32)}function PDF20(){}function compareByteArrays(array1,array2){if(array1.length!==array2.length)return!1;for(var i=0;i<array1.length;i++)if(array1[i]!==array2[i])return!1;return!0}return PDF20.prototype={hash:function(password,concatBytes,userBytes){return calculatePDF20Hash(password,concatBytes,userBytes)},checkOwnerPassword:function(password,ownerValidationSalt,userBytes,ownerPassword){var hashData=new Uint8Array(password.length+56);hashData.set(password,0),hashData.set(ownerValidationSalt,password.length),hashData.set(userBytes,password.length+ownerValidationSalt.length);var result=calculatePDF20Hash(password,hashData,userBytes);return compareByteArrays(result,ownerPassword)},checkUserPassword:function(password,userValidationSalt,userPassword){var hashData=new Uint8Array(password.length+8);hashData.set(password,0),hashData.set(userValidationSalt,password.length);var result=calculatePDF20Hash(password,hashData,[]);return compareByteArrays(result,userPassword)},getOwnerKey:function(password,ownerKeySalt,userBytes,ownerEncryption){var hashData=new Uint8Array(password.length+56);hashData.set(password,0),hashData.set(ownerKeySalt,password.length),hashData.set(userBytes,password.length+ownerKeySalt.length);var key=calculatePDF20Hash(password,hashData,userBytes),cipher=new AES256Cipher(key);return cipher.decryptBlock(ownerEncryption,!1,new Uint8Array(16))},getUserKey:function(password,userKeySalt,userEncryption){var hashData=new Uint8Array(password.length+8);hashData.set(password,0),hashData.set(userKeySalt,password.length);var key=calculatePDF20Hash(password,hashData,[]),cipher=new AES256Cipher(key);return cipher.decryptBlock(userEncryption,!1,new Uint8Array(16))}},PDF20}(),CipherTransform=function(){function CipherTransform(stringCipherConstructor,streamCipherConstructor){this.stringCipherConstructor=stringCipherConstructor,this.streamCipherConstructor=streamCipherConstructor}return CipherTransform.prototype={createStream:function(stream,length){var cipher=new this.streamCipherConstructor;return new DecryptStream(stream,length,function(data,finalize){return cipher.decryptBlock(data,finalize)})},decryptString:function(s){var cipher=new this.stringCipherConstructor,data=stringToBytes(s);return data=cipher.decryptBlock(data,!0),bytesToString(data)}},CipherTransform}(),CipherTransformFactory=function(){function createEncryptionKey20(revision,password,ownerPassword,ownerValidationSalt,ownerKeySalt,uBytes,userPassword,userValidationSalt,userKeySalt,ownerEncryption,userEncryption){if(password){var passwordLength=Math.min(127,password.length);password=password.subarray(0,passwordLength)}else password=[];var pdfAlgorithm;if(pdfAlgorithm=6===revision?new PDF20:new PDF17){if(pdfAlgorithm.checkUserPassword(password,userValidationSalt,userPassword))return pdfAlgorithm.getUserKey(password,userKeySalt,userEncryption);if(pdfAlgorithm.checkOwnerPassword(password,ownerValidationSalt,uBytes,ownerPassword))return pdfAlgorithm.getOwnerKey(password,ownerKeySalt,uBytes,ownerEncryption)}return null}function prepareKeyData(fileId,password,ownerPassword,userPassword,flags,revision,keyLength,encryptMetadata){var j,n,hashDataSize=40+ownerPassword.length+fileId.length,hashData=new Uint8Array(hashDataSize),i=0;if(password)for(n=Math.min(32,password.length);n>i;++i)hashData[i]=password[i];for(j=0;32>i;)hashData[i++]=defaultPasswordBytes[j++];for(j=0,n=ownerPassword.length;n>j;++j)hashData[i++]=ownerPassword[j];for(hashData[i++]=255&flags,hashData[i++]=flags>>8&255,hashData[i++]=flags>>16&255,hashData[i++]=flags>>>24&255,j=0,n=fileId.length;n>j;++j)hashData[i++]=fileId[j];revision>=4&&!encryptMetadata&&(hashData[i++]=255,hashData[i++]=255,hashData[i++]=255,hashData[i++]=255);var hash=calculateMD5(hashData,0,i),keyLengthInBytes=keyLength>>3;if(revision>=3)for(j=0;50>j;++j)hash=calculateMD5(hash,0,keyLengthInBytes);var cipher,checkData,encryptionKey=hash.subarray(0,keyLengthInBytes);if(revision>=3){for(i=0;32>i;++i)hashData[i]=defaultPasswordBytes[i];for(j=0,n=fileId.length;n>j;++j)hashData[i++]=fileId[j];cipher=new ARCFourCipher(encryptionKey),checkData=cipher.encryptBlock(calculateMD5(hashData,0,i)),n=encryptionKey.length;var k,derivedKey=new Uint8Array(n);for(j=1;19>=j;++j){for(k=0;n>k;++k)derivedKey[k]=encryptionKey[k]^j;cipher=new ARCFourCipher(derivedKey),checkData=cipher.encryptBlock(checkData)}for(j=0,n=checkData.length;n>j;++j)if(userPassword[j]!==checkData[j])return null}else for(cipher=new ARCFourCipher(encryptionKey),checkData=cipher.encryptBlock(defaultPasswordBytes),j=0,n=checkData.length;n>j;++j)if(userPassword[j]!==checkData[j])return null;return encryptionKey}function decodeUserPassword(password,ownerPassword,revision,keyLength){var j,n,hashData=new Uint8Array(32),i=0;for(n=Math.min(32,password.length);n>i;++i)hashData[i]=password[i];for(j=0;32>i;)hashData[i++]=defaultPasswordBytes[j++];var hash=calculateMD5(hashData,0,i),keyLengthInBytes=keyLength>>3;if(revision>=3)for(j=0;50>j;++j)hash=calculateMD5(hash,0,hash.length);var cipher,userPassword;if(revision>=3){userPassword=ownerPassword;var k,derivedKey=new Uint8Array(keyLengthInBytes);for(j=19;j>=0;j--){for(k=0;keyLengthInBytes>k;++k)derivedKey[k]=hash[k]^j;cipher=new ARCFourCipher(derivedKey),userPassword=cipher.encryptBlock(userPassword)}}else cipher=new ARCFourCipher(hash.subarray(0,keyLengthInBytes)),userPassword=cipher.encryptBlock(ownerPassword);return userPassword}function CipherTransformFactory(dict,fileId,password){var filter=dict.get("Filter");isName(filter)&&"Standard"===filter.name||error("unknown encryption method"),this.dict=dict;var algorithm=dict.get("V");(!isInt(algorithm)||1!==algorithm&&2!==algorithm&&4!==algorithm&&5!==algorithm)&&error("unsupported encryption algorithm"),this.algorithm=algorithm;var keyLength=dict.get("Length")||40;(!isInt(keyLength)||40>keyLength||keyLength%8!==0)&&error("invalid key length");var ownerPassword=stringToBytes(dict.get("O")).subarray(0,32),userPassword=stringToBytes(dict.get("U")).subarray(0,32),flags=dict.get("P"),revision=dict.get("R"),encryptMetadata=(4===algorithm||5===algorithm)&&dict.get("EncryptMetadata")!==!1;this.encryptMetadata=encryptMetadata;var passwordBytes,fileIdBytes=stringToBytes(fileId);password&&(passwordBytes=stringToBytes(password));var encryptionKey;if(5!==algorithm)encryptionKey=prepareKeyData(fileIdBytes,passwordBytes,ownerPassword,userPassword,flags,revision,keyLength,encryptMetadata);else{var ownerValidationSalt=stringToBytes(dict.get("O")).subarray(32,40),ownerKeySalt=stringToBytes(dict.get("O")).subarray(40,48),uBytes=stringToBytes(dict.get("U")).subarray(0,48),userValidationSalt=stringToBytes(dict.get("U")).subarray(32,40),userKeySalt=stringToBytes(dict.get("U")).subarray(40,48),ownerEncryption=stringToBytes(dict.get("OE")),userEncryption=stringToBytes(dict.get("UE")),perms=stringToBytes(dict.get("Perms"));encryptionKey=createEncryptionKey20(revision,passwordBytes,ownerPassword,ownerValidationSalt,ownerKeySalt,uBytes,userPassword,userValidationSalt,userKeySalt,ownerEncryption,userEncryption,perms)}if(!encryptionKey&&!password)throw new PasswordException("No password given",PasswordResponses.NEED_PASSWORD);if(!encryptionKey&&password){var decodedPassword=decodeUserPassword(passwordBytes,ownerPassword,revision,keyLength);encryptionKey=prepareKeyData(fileIdBytes,decodedPassword,ownerPassword,userPassword,flags,revision,keyLength,encryptMetadata)}if(!encryptionKey)throw new PasswordException("Incorrect Password",PasswordResponses.INCORRECT_PASSWORD);this.encryptionKey=encryptionKey,algorithm>=4&&(this.cf=dict.get("CF"),this.stmf=dict.get("StmF")||identityName,this.strf=dict.get("StrF")||identityName,this.eff=dict.get("EFF")||this.strf)}function buildObjectKey(num,gen,encryptionKey,isAes){var i,n,key=new Uint8Array(encryptionKey.length+9);for(i=0,n=encryptionKey.length;n>i;++i)key[i]=encryptionKey[i];key[i++]=255&num,key[i++]=num>>8&255,key[i++]=num>>16&255,key[i++]=255&gen,key[i++]=gen>>8&255,isAes&&(key[i++]=115,key[i++]=65,key[i++]=108,key[i++]=84);var hash=calculateMD5(key,0,i);return hash.subarray(0,Math.min(encryptionKey.length+5,16))}function buildCipherConstructor(cf,name,num,gen,key){var cfm,cryptFilter=cf.get(name.name);return null!==cryptFilter&&void 0!==cryptFilter&&(cfm=cryptFilter.get("CFM")),cfm&&"None"!==cfm.name?"V2"===cfm.name?function(){return new ARCFourCipher(buildObjectKey(num,gen,key,!1))}:"AESV2"===cfm.name?function(){return new AES128Cipher(buildObjectKey(num,gen,key,!0))}:"AESV3"===cfm.name?function(){return new AES256Cipher(key)}:void error("Unknown crypto method"):function(){return new NullCipher}}var defaultPasswordBytes=new Uint8Array([40,191,78,94,78,117,138,65,100,0,78,86,255,250,1,8,46,46,0,182,208,104,62,128,47,12,169,254,100,83,105,122]),identityName=Name.get("Identity");return CipherTransformFactory.prototype={createCipherTransform:function(num,gen){if(4===this.algorithm||5===this.algorithm)return new CipherTransform(buildCipherConstructor(this.cf,this.stmf,num,gen,this.encryptionKey),buildCipherConstructor(this.cf,this.strf,num,gen,this.encryptionKey));var key=buildObjectKey(num,gen,this.encryptionKey,!1),cipherConstructor=function(){return new ARCFourCipher(key)};return new CipherTransform(cipherConstructor,cipherConstructor)}},CipherTransformFactory}(),PatternType={FUNCTION_BASED:1,AXIAL:2,RADIAL:3,FREE_FORM_MESH:4,LATTICE_FORM_MESH:5,COONS_PATCH_MESH:6,TENSOR_PATCH_MESH:7},Pattern=function(){function Pattern(){error("should not call Pattern constructor")}return Pattern.prototype={getPattern:function(ctx){error("Should not call Pattern.getStyle: "+ctx)}},Pattern.parseShading=function(shading,matrix,xref,res){var dict=isStream(shading)?shading.dict:shading,type=dict.get("ShadingType");switch(type){case PatternType.AXIAL:case PatternType.RADIAL:return new Shadings.RadialAxial(dict,matrix,xref,res);case PatternType.FREE_FORM_MESH:case PatternType.LATTICE_FORM_MESH:case PatternType.COONS_PATCH_MESH:case PatternType.TENSOR_PATCH_MESH:return new Shadings.Mesh(shading,matrix,xref,res);default:return UnsupportedManager.notify(UNSUPPORTED_FEATURES.shadingPattern),new Shadings.Dummy}},Pattern}(),Shadings={};Shadings.SMALL_NUMBER=.01,Shadings.RadialAxial=function(){function RadialAxial(dict,matrix,xref,res){this.matrix=matrix,this.coordsArr=dict.get("Coords"),this.shadingType=dict.get("ShadingType"),this.type="Pattern";var cs=dict.get("ColorSpace","CS");cs=ColorSpace.parse(cs,xref,res),this.cs=cs;var t0=0,t1=1;if(dict.has("Domain")){var domainArr=dict.get("Domain");t0=domainArr[0],t1=domainArr[1]}var extendStart=!1,extendEnd=!1;if(dict.has("Extend")){var extendArr=dict.get("Extend");extendStart=extendArr[0],extendEnd=extendArr[1]}if(!(this.shadingType!==PatternType.RADIAL||extendStart&&extendEnd)){var x1=this.coordsArr[0],y1=this.coordsArr[1],r1=this.coordsArr[2],x2=this.coordsArr[3],y2=this.coordsArr[4],r2=this.coordsArr[5],distance=Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));r2+distance>=r1&&r1+distance>=r2&&warn("Unsupported radial gradient.")}this.extendStart=extendStart,this.extendEnd=extendEnd;var fnObj=dict.get("Function"),fn=PDFFunction.parseArray(xref,fnObj),diff=t1-t0,step=diff/10,colorStops=this.colorStops=[];if(t0>=t1||0>=step)return void info("Bad shading domain.");for(var rgbColor,color=new Float32Array(cs.numComps),ratio=new Float32Array(1),i=t0;t1>=i;i+=step){ratio[0]=i,fn(ratio,0,color,0),rgbColor=cs.getRgb(color,0);var cssColor=Util.makeCssRgb(rgbColor);colorStops.push([(i-t0)/diff,cssColor])}var background="transparent";dict.has("Background")&&(rgbColor=cs.getRgb(dict.get("Background"),0),background=Util.makeCssRgb(rgbColor)),extendStart||(colorStops.unshift([0,background]),colorStops[1][0]+=Shadings.SMALL_NUMBER),extendEnd||(colorStops[colorStops.length-1][0]-=Shadings.SMALL_NUMBER,colorStops.push([1,background])),this.colorStops=colorStops}return RadialAxial.prototype={getIR:function(){var type,p0,p1,r0,r1,coordsArr=this.coordsArr,shadingType=this.shadingType;shadingType===PatternType.AXIAL?(p0=[coordsArr[0],coordsArr[1]],p1=[coordsArr[2],coordsArr[3]],r0=null,r1=null,type="axial"):shadingType===PatternType.RADIAL?(p0=[coordsArr[0],coordsArr[1]],p1=[coordsArr[3],coordsArr[4]],r0=coordsArr[2],r1=coordsArr[5],type="radial"):error("getPattern type unknown: "+shadingType);var matrix=this.matrix;return matrix&&(p0=Util.applyTransform(p0,matrix),p1=Util.applyTransform(p1,matrix)),["RadialAxial",type,this.colorStops,p0,p1,r0,r1]}},RadialAxial}(),Shadings.Mesh=function(){function MeshStreamReader(stream,context){this.stream=stream,this.context=context,this.buffer=0,this.bufferLength=0;var numComps=context.numComps;this.tmpCompsBuf=new Float32Array(numComps);var csNumComps=context.colorSpace;this.tmpCsCompsBuf=context.colorFn?new Float32Array(csNumComps):this.tmpCompsBuf}function decodeType4Shading(mesh,reader){for(var coords=mesh.coords,colors=mesh.colors,operators=[],ps=[],verticesLeft=0;reader.hasData;){var f=reader.readFlag(),coord=reader.readCoordinate(),color=reader.readComponents();if(0===verticesLeft){switch(assert(f>=0&&2>=f,"Unknown type4 flag"),f){case 0:verticesLeft=3;break;case 1:ps.push(ps[ps.length-2],ps[ps.length-1]),verticesLeft=1;break;case 2:ps.push(ps[ps.length-3],ps[ps.length-1]),verticesLeft=1}operators.push(f)}ps.push(coords.length),coords.push(coord),colors.push(color),verticesLeft--,reader.align()}var psPacked=new Int32Array(ps);mesh.figures.push({type:"triangles",coords:psPacked,colors:psPacked})}function decodeType5Shading(mesh,reader,verticesPerRow){for(var coords=mesh.coords,colors=mesh.colors,ps=[];reader.hasData;){var coord=reader.readCoordinate(),color=reader.readComponents();ps.push(coords.length),coords.push(coord),colors.push(color)}var psPacked=new Int32Array(ps);mesh.figures.push({type:"lattice",coords:psPacked,colors:psPacked,verticesPerRow:verticesPerRow})}function buildFigureFromPatch(mesh,index){var figure=mesh.figures[index];assert("patch"===figure.type,"Unexpected patch mesh figure");var coords=mesh.coords,colors=mesh.colors,pi=figure.coords,ci=figure.colors,figureMinX=Math.min(coords[pi[0]][0],coords[pi[3]][0],coords[pi[12]][0],coords[pi[15]][0]),figureMinY=Math.min(coords[pi[0]][1],coords[pi[3]][1],coords[pi[12]][1],coords[pi[15]][1]),figureMaxX=Math.max(coords[pi[0]][0],coords[pi[3]][0],coords[pi[12]][0],coords[pi[15]][0]),figureMaxY=Math.max(coords[pi[0]][1],coords[pi[3]][1],coords[pi[12]][1],coords[pi[15]][1]),splitXBy=Math.ceil((figureMaxX-figureMinX)*TRIANGLE_DENSITY/(mesh.bounds[2]-mesh.bounds[0]));splitXBy=Math.max(MIN_SPLIT_PATCH_CHUNKS_AMOUNT,Math.min(MAX_SPLIT_PATCH_CHUNKS_AMOUNT,splitXBy));var splitYBy=Math.ceil((figureMaxY-figureMinY)*TRIANGLE_DENSITY/(mesh.bounds[3]-mesh.bounds[1]));splitYBy=Math.max(MIN_SPLIT_PATCH_CHUNKS_AMOUNT,Math.min(MAX_SPLIT_PATCH_CHUNKS_AMOUNT,splitYBy));for(var verticesPerRow=splitXBy+1,figureCoords=new Int32Array((splitYBy+1)*verticesPerRow),figureColors=new Int32Array((splitYBy+1)*verticesPerRow),k=0,cl=new Uint8Array(3),cr=new Uint8Array(3),c0=colors[ci[0]],c1=colors[ci[1]],c2=colors[ci[2]],c3=colors[ci[3]],bRow=getB(splitYBy),bCol=getB(splitXBy),row=0;splitYBy>=row;row++){cl[0]=(c0[0]*(splitYBy-row)+c2[0]*row)/splitYBy|0,cl[1]=(c0[1]*(splitYBy-row)+c2[1]*row)/splitYBy|0,cl[2]=(c0[2]*(splitYBy-row)+c2[2]*row)/splitYBy|0,cr[0]=(c1[0]*(splitYBy-row)+c3[0]*row)/splitYBy|0,cr[1]=(c1[1]*(splitYBy-row)+c3[1]*row)/splitYBy|0,cr[2]=(c1[2]*(splitYBy-row)+c3[2]*row)/splitYBy|0;for(var col=0;splitXBy>=col;col++,k++)if(0!==row&&row!==splitYBy||0!==col&&col!==splitXBy){for(var x=0,y=0,q=0,i=0;3>=i;i++)for(var j=0;3>=j;j++,q++){var m=bRow[row][i]*bCol[col][j];x+=coords[pi[q]][0]*m,y+=coords[pi[q]][1]*m}figureCoords[k]=coords.length,coords.push([x,y]),figureColors[k]=colors.length;var newColor=new Uint8Array(3);newColor[0]=(cl[0]*(splitXBy-col)+cr[0]*col)/splitXBy|0,newColor[1]=(cl[1]*(splitXBy-col)+cr[1]*col)/splitXBy|0,newColor[2]=(cl[2]*(splitXBy-col)+cr[2]*col)/splitXBy|0,colors.push(newColor)}}figureCoords[0]=pi[0],figureColors[0]=ci[0],figureCoords[splitXBy]=pi[3],figureColors[splitXBy]=ci[1],figureCoords[verticesPerRow*splitYBy]=pi[12],figureColors[verticesPerRow*splitYBy]=ci[2],figureCoords[verticesPerRow*splitYBy+splitXBy]=pi[15],figureColors[verticesPerRow*splitYBy+splitXBy]=ci[3],mesh.figures[index]={type:"lattice",coords:figureCoords,colors:figureColors,verticesPerRow:verticesPerRow}}function decodeType6Shading(mesh,reader){for(var coords=mesh.coords,colors=mesh.colors,ps=new Int32Array(16),cs=new Int32Array(4);reader.hasData;){var f=reader.readFlag();assert(f>=0&&3>=f,"Unknown type6 flag");var i,ii,pi=coords.length;for(i=0,ii=0!==f?8:12;ii>i;i++)coords.push(reader.readCoordinate());var ci=colors.length;for(i=0,ii=0!==f?2:4;ii>i;i++)colors.push(reader.readComponents());var tmp1,tmp2,tmp3,tmp4;switch(f){case 0:ps[12]=pi+3,ps[13]=pi+4,ps[14]=pi+5,ps[15]=pi+6,ps[8]=pi+2,ps[11]=pi+7,ps[4]=pi+1,ps[7]=pi+8,ps[0]=pi,ps[1]=pi+11,ps[2]=pi+10,ps[3]=pi+9,cs[2]=ci+1,cs[3]=ci+2,cs[0]=ci,cs[1]=ci+3;break;case 1:tmp1=ps[12],tmp2=ps[13],tmp3=ps[14],tmp4=ps[15],ps[12]=pi+5,ps[13]=pi+4,ps[14]=pi+3,ps[15]=pi+2,ps[8]=pi+6,ps[11]=pi+1,ps[4]=pi+7,ps[7]=pi,ps[0]=tmp1,ps[1]=tmp2,ps[2]=tmp3,ps[3]=tmp4,tmp1=cs[2],tmp2=cs[3],cs[2]=ci+1,cs[3]=ci,cs[0]=tmp1,cs[1]=tmp2;break;case 2:ps[12]=ps[15],ps[13]=pi+7,ps[14]=pi+6,ps[15]=pi+5,ps[8]=ps[11],ps[11]=pi+4,ps[4]=ps[7],ps[7]=pi+3,ps[0]=ps[3],ps[1]=pi,ps[2]=pi+1,ps[3]=pi+2,cs[2]=cs[3],cs[3]=ci+1,cs[0]=cs[1],cs[1]=ci;break;case 3:ps[12]=ps[0],ps[13]=ps[1],ps[14]=ps[2],ps[15]=ps[3],ps[8]=pi,ps[11]=pi+7,ps[4]=pi+1,ps[7]=pi+6,ps[0]=pi+2,ps[1]=pi+3,ps[2]=pi+4,ps[3]=pi+5,cs[2]=cs[0],cs[3]=cs[1],cs[0]=ci,cs[1]=ci+1}ps[5]=coords.length,coords.push([(-4*coords[ps[0]][0]-coords[ps[15]][0]+6*(coords[ps[4]][0]+coords[ps[1]][0])-2*(coords[ps[12]][0]+coords[ps[3]][0])+3*(coords[ps[13]][0]+coords[ps[7]][0]))/9,(-4*coords[ps[0]][1]-coords[ps[15]][1]+6*(coords[ps[4]][1]+coords[ps[1]][1])-2*(coords[ps[12]][1]+coords[ps[3]][1])+3*(coords[ps[13]][1]+coords[ps[7]][1]))/9]),ps[6]=coords.length,coords.push([(-4*coords[ps[3]][0]-coords[ps[12]][0]+6*(coords[ps[2]][0]+coords[ps[7]][0])-2*(coords[ps[0]][0]+coords[ps[15]][0])+3*(coords[ps[4]][0]+coords[ps[14]][0]))/9,(-4*coords[ps[3]][1]-coords[ps[12]][1]+6*(coords[ps[2]][1]+coords[ps[7]][1])-2*(coords[ps[0]][1]+coords[ps[15]][1])+3*(coords[ps[4]][1]+coords[ps[14]][1]))/9]),ps[9]=coords.length,coords.push([(-4*coords[ps[12]][0]-coords[ps[3]][0]+6*(coords[ps[8]][0]+coords[ps[13]][0])-2*(coords[ps[0]][0]+coords[ps[15]][0])+3*(coords[ps[11]][0]+coords[ps[1]][0]))/9,(-4*coords[ps[12]][1]-coords[ps[3]][1]+6*(coords[ps[8]][1]+coords[ps[13]][1])-2*(coords[ps[0]][1]+coords[ps[15]][1])+3*(coords[ps[11]][1]+coords[ps[1]][1]))/9]),ps[10]=coords.length,coords.push([(-4*coords[ps[15]][0]-coords[ps[0]][0]+6*(coords[ps[11]][0]+coords[ps[14]][0])-2*(coords[ps[12]][0]+coords[ps[3]][0])+3*(coords[ps[2]][0]+coords[ps[8]][0]))/9,(-4*coords[ps[15]][1]-coords[ps[0]][1]+6*(coords[ps[11]][1]+coords[ps[14]][1])-2*(coords[ps[12]][1]+coords[ps[3]][1])+3*(coords[ps[2]][1]+coords[ps[8]][1]))/9]),mesh.figures.push({type:"patch",coords:new Int32Array(ps),colors:new Int32Array(cs)})}}function decodeType7Shading(mesh,reader){for(var coords=mesh.coords,colors=mesh.colors,ps=new Int32Array(16),cs=new Int32Array(4);reader.hasData;){var f=reader.readFlag();assert(f>=0&&3>=f,"Unknown type7 flag");var i,ii,pi=coords.length;for(i=0,ii=0!==f?12:16;ii>i;i++)coords.push(reader.readCoordinate());var ci=colors.length;for(i=0,ii=0!==f?2:4;ii>i;i++)colors.push(reader.readComponents());var tmp1,tmp2,tmp3,tmp4;switch(f){case 0:ps[12]=pi+3,ps[13]=pi+4,ps[14]=pi+5,ps[15]=pi+6,ps[8]=pi+2,ps[9]=pi+13,ps[10]=pi+14,ps[11]=pi+7,ps[4]=pi+1,ps[5]=pi+12,ps[6]=pi+15,ps[7]=pi+8,ps[0]=pi,ps[1]=pi+11,ps[2]=pi+10,ps[3]=pi+9,cs[2]=ci+1,cs[3]=ci+2,cs[0]=ci,cs[1]=ci+3;break;case 1:tmp1=ps[12],tmp2=ps[13],tmp3=ps[14],tmp4=ps[15],ps[12]=pi+5,ps[13]=pi+4,ps[14]=pi+3,ps[15]=pi+2,ps[8]=pi+6,ps[9]=pi+11,ps[10]=pi+10,ps[11]=pi+1,ps[4]=pi+7,ps[5]=pi+8,ps[6]=pi+9,ps[7]=pi,ps[0]=tmp1,ps[1]=tmp2,ps[2]=tmp3,ps[3]=tmp4,tmp1=cs[2],tmp2=cs[3],cs[2]=ci+1,cs[3]=ci,cs[0]=tmp1,cs[1]=tmp2;break;case 2:ps[12]=ps[15],ps[13]=pi+7,ps[14]=pi+6,ps[15]=pi+5,ps[8]=ps[11],ps[9]=pi+8,ps[10]=pi+11,ps[11]=pi+4,ps[4]=ps[7],ps[5]=pi+9,ps[6]=pi+10,ps[7]=pi+3,ps[0]=ps[3],ps[1]=pi,ps[2]=pi+1,ps[3]=pi+2,cs[2]=cs[3],cs[3]=ci+1,cs[0]=cs[1],cs[1]=ci;break;case 3:ps[12]=ps[0],ps[13]=ps[1],ps[14]=ps[2],ps[15]=ps[3],ps[8]=pi,ps[9]=pi+9,ps[10]=pi+8,ps[11]=pi+7,ps[4]=pi+1,ps[5]=pi+10,ps[6]=pi+11,ps[7]=pi+6,ps[0]=pi+2,ps[1]=pi+3,ps[2]=pi+4,ps[3]=pi+5,cs[2]=cs[0],cs[3]=cs[1],cs[0]=ci,cs[1]=ci+1}mesh.figures.push({type:"patch",coords:new Int32Array(ps),colors:new Int32Array(cs)})}}function updateBounds(mesh){for(var minX=mesh.coords[0][0],minY=mesh.coords[0][1],maxX=minX,maxY=minY,i=1,ii=mesh.coords.length;ii>i;i++){var x=mesh.coords[i][0],y=mesh.coords[i][1];minX=minX>x?x:minX,minY=minY>y?y:minY,maxX=x>maxX?x:maxX,maxY=y>maxY?y:maxY}mesh.bounds=[minX,minY,maxX,maxY]}function packData(mesh){var i,ii,j,jj,coords=mesh.coords,coordsPacked=new Float32Array(2*coords.length);for(i=0,j=0,ii=coords.length;ii>i;i++){var xy=coords[i];coordsPacked[j++]=xy[0],coordsPacked[j++]=xy[1]}mesh.coords=coordsPacked;var colors=mesh.colors,colorsPacked=new Uint8Array(3*colors.length);for(i=0,j=0,ii=colors.length;ii>i;i++){var c=colors[i];colorsPacked[j++]=c[0],colorsPacked[j++]=c[1],colorsPacked[j++]=c[2]}mesh.colors=colorsPacked;var figures=mesh.figures;for(i=0,ii=figures.length;ii>i;i++){var figure=figures[i],ps=figure.coords,cs=figure.colors;for(j=0,jj=ps.length;jj>j;j++)ps[j]*=2,cs[j]*=3}}function Mesh(stream,matrix,xref,res){assert(isStream(stream),"Mesh data is not a stream");var dict=stream.dict;this.matrix=matrix,this.shadingType=dict.get("ShadingType"),this.type="Pattern",this.bbox=dict.get("BBox");var cs=dict.get("ColorSpace","CS");cs=ColorSpace.parse(cs,xref,res),this.cs=cs,this.background=dict.has("Background")?cs.getRgb(dict.get("Background"),0):null;var fnObj=dict.get("Function"),fn=fnObj?PDFFunction.parseArray(xref,fnObj):null;this.coords=[],this.colors=[],this.figures=[];var decodeContext={bitsPerCoordinate:dict.get("BitsPerCoordinate"),bitsPerComponent:dict.get("BitsPerComponent"),bitsPerFlag:dict.get("BitsPerFlag"),decode:dict.get("Decode"),colorFn:fn,colorSpace:cs,numComps:fn?1:cs.numComps},reader=new MeshStreamReader(stream,decodeContext),patchMesh=!1;switch(this.shadingType){case PatternType.FREE_FORM_MESH:decodeType4Shading(this,reader);break;case PatternType.LATTICE_FORM_MESH:var verticesPerRow=0|dict.get("VerticesPerRow");assert(verticesPerRow>=2,"Invalid VerticesPerRow"),decodeType5Shading(this,reader,verticesPerRow);break;case PatternType.COONS_PATCH_MESH:decodeType6Shading(this,reader),patchMesh=!0;break;case PatternType.TENSOR_PATCH_MESH:decodeType7Shading(this,reader),patchMesh=!0;break;default:error("Unsupported mesh type.")}if(patchMesh){updateBounds(this);for(var i=0,ii=this.figures.length;ii>i;i++)buildFigureFromPatch(this,i)}updateBounds(this),packData(this)}MeshStreamReader.prototype={get hasData(){if(this.stream.end)return this.stream.pos<this.stream.end;if(this.bufferLength>0)return!0;var nextByte=this.stream.getByte();return 0>nextByte?!1:(this.buffer=nextByte,this.bufferLength=8,!0)},readBits:function(n){var buffer=this.buffer,bufferLength=this.bufferLength;if(32===n){if(0===bufferLength)return(this.stream.getByte()<<24|this.stream.getByte()<<16|this.stream.getByte()<<8|this.stream.getByte())>>>0;buffer=buffer<<24|this.stream.getByte()<<16|this.stream.getByte()<<8|this.stream.getByte();var nextByte=this.stream.getByte();return this.buffer=nextByte&(1<<bufferLength)-1,(buffer<<8-bufferLength|(255&nextByte)>>bufferLength)>>>0}if(8===n&&0===bufferLength)return this.stream.getByte();for(;n>bufferLength;)buffer=buffer<<8|this.stream.getByte(),bufferLength+=8;return bufferLength-=n,this.bufferLength=bufferLength,this.buffer=buffer&(1<<bufferLength)-1,buffer>>bufferLength},align:function(){this.buffer=0,this.bufferLength=0},readFlag:function(){return this.readBits(this.context.bitsPerFlag)},readCoordinate:function(){var bitsPerCoordinate=this.context.bitsPerCoordinate,xi=this.readBits(bitsPerCoordinate),yi=this.readBits(bitsPerCoordinate),decode=this.context.decode,scale=32>bitsPerCoordinate?1/((1<<bitsPerCoordinate)-1):2.3283064365386963e-10;return[xi*scale*(decode[1]-decode[0])+decode[0],yi*scale*(decode[3]-decode[2])+decode[2]]},readComponents:function(){for(var numComps=this.context.numComps,bitsPerComponent=this.context.bitsPerComponent,scale=32>bitsPerComponent?1/((1<<bitsPerComponent)-1):2.3283064365386963e-10,decode=this.context.decode,components=this.tmpCompsBuf,i=0,j=4;numComps>i;i++,j+=2){var ci=this.readBits(bitsPerComponent);components[i]=ci*scale*(decode[j+1]-decode[j])+decode[j]}var color=this.tmpCsCompsBuf;return this.context.colorFn&&this.context.colorFn(components,0,color,0),this.context.colorSpace.getRgb(color,0)}};var MIN_SPLIT_PATCH_CHUNKS_AMOUNT=3,MAX_SPLIT_PATCH_CHUNKS_AMOUNT=20,TRIANGLE_DENSITY=20,getB=function(){function buildB(count){for(var lut=[],i=0;count>=i;i++){var t=i/count,t_=1-t;lut.push(new Float32Array([t_*t_*t_,3*t*t_*t_,3*t*t*t_,t*t*t]))}return lut}var cache=[];return function(count){return cache[count]||(cache[count]=buildB(count)),cache[count]}}();return Mesh.prototype={getIR:function(){return["Mesh",this.shadingType,this.coords,this.colors,this.figures,this.bounds,this.matrix,this.bbox,this.background]}},Mesh}(),Shadings.Dummy=function(){function Dummy(){this.type="Pattern"}return Dummy.prototype={getIR:function(){return["Dummy"]}},Dummy}();var PartialEvaluator=function(){function PartialEvaluator(pdfManager,xref,handler,pageIndex,uniquePrefix,idCounters,fontCache){this.pdfManager=pdfManager,this.xref=xref,this.handler=handler,this.pageIndex=pageIndex,this.uniquePrefix=uniquePrefix,this.idCounters=idCounters,this.fontCache=fontCache
}function TimeSlotManager(){this.reset()}var TIME_SLOT_DURATION_MS=20,CHECK_TIME_EVERY=100;TimeSlotManager.prototype={check:function(){return++this.checked<CHECK_TIME_EVERY?!1:(this.checked=0,this.endTime<=Date.now())},reset:function(){this.endTime=Date.now()+TIME_SLOT_DURATION_MS,this.checked=0}};var deferred=Promise.resolve(),TILING_PATTERN=1,SHADING_PATTERN=2;return PartialEvaluator.prototype={hasBlendModes:function(resources){if(!isDict(resources))return!1;var processed=Object.create(null);resources.objId&&(processed[resources.objId]=!0);for(var nodes=[resources];nodes.length;){var key,node=nodes.shift(),graphicStates=node.get("ExtGState");if(isDict(graphicStates)){graphicStates=graphicStates.getAll();for(key in graphicStates){var graphicState=graphicStates[key],bm=graphicState.BM;if(isName(bm)&&"Normal"!==bm.name)return!0}}var xObjects=node.get("XObject");if(isDict(xObjects)){xObjects=xObjects.getAll();for(key in xObjects){var xObject=xObjects[key];if(isStream(xObject)){if(xObject.dict.objId){if(processed[xObject.dict.objId])continue;processed[xObject.dict.objId]=!0}var xResources=xObject.dict.get("Resources");!isDict(xResources)||xResources.objId&&processed[xResources.objId]||(nodes.push(xResources),xResources.objId&&(processed[xResources.objId]=!0))}}}}return!1},buildFormXObject:function(resources,xobj,smask,operatorList,initialState){var matrix=xobj.dict.get("Matrix"),bbox=xobj.dict.get("BBox"),group=xobj.dict.get("Group");if(group){var colorSpace,groupOptions={matrix:matrix,bbox:bbox,smask:smask,isolated:!1,knockout:!1},groupSubtype=group.get("S");isName(groupSubtype)&&"Transparency"===groupSubtype.name&&(groupOptions.isolated=group.get("I")||!1,groupOptions.knockout=group.get("K")||!1,colorSpace=group.has("CS")?ColorSpace.parse(group.get("CS"),this.xref,resources):null),smask&&smask.backdrop&&(colorSpace=colorSpace||ColorSpace.singletons.rgb,smask.backdrop=colorSpace.getRgb(smask.backdrop,0)),operatorList.addOp(OPS.beginGroup,[groupOptions])}return operatorList.addOp(OPS.paintFormXObjectBegin,[matrix,bbox]),this.getOperatorList(xobj,xobj.dict.get("Resources")||resources,operatorList,initialState).then(function(){operatorList.addOp(OPS.paintFormXObjectEnd,[]),group&&operatorList.addOp(OPS.endGroup,[groupOptions])})},buildPaintImageXObject:function(resources,image,inline,operatorList,cacheKey,cache){var self=this,dict=image.dict,w=dict.get("Width","W"),h=dict.get("Height","H");if(!(w&&isNum(w)&&h&&isNum(h)))return void warn("Image dimensions are missing, or not numbers.");if(-1!==PDFJS.maxImageSize&&w*h>PDFJS.maxImageSize)return void warn("Image exceeded maximum allowed size and was removed.");var imgData,args,imageMask=dict.get("ImageMask","IM")||!1;if(imageMask){var width=dict.get("Width","W"),height=dict.get("Height","H"),bitStrideLength=width+7>>3,imgArray=image.getBytes(bitStrideLength*height),decode=dict.get("Decode","D"),inverseDecode=!!decode&&decode[0]>0;return imgData=PDFImage.createMask(imgArray,width,height,image instanceof DecodeStream,inverseDecode),imgData.cached=!0,args=[imgData],operatorList.addOp(OPS.paintImageMaskXObject,args),void(cacheKey&&(cache.key=cacheKey,cache.fn=OPS.paintImageMaskXObject,cache.args=args))}var softMask=dict.get("SMask","SM")||!1,mask=dict.get("Mask")||!1,SMALL_IMAGE_DIMENSIONS=200;if(inline&&!softMask&&!mask&&!(image instanceof JpegStream)&&SMALL_IMAGE_DIMENSIONS>w+h){var imageObj=new PDFImage(this.xref,resources,image,inline,null,null);return imgData=imageObj.createImageData(!0),void operatorList.addOp(OPS.paintInlineImageXObject,[imgData])}var uniquePrefix=this.uniquePrefix||"",objId="img_"+uniquePrefix+ ++this.idCounters.obj;return operatorList.addDependency(objId),args=[objId,w,h],!softMask&&!mask&&image instanceof JpegStream&&image.isNativelySupported(this.xref,resources)?(operatorList.addOp(OPS.paintJpegXObject,args),void this.handler.send("obj",[objId,this.pageIndex,"JpegStream",image.getIR()])):(PDFImage.buildImage(self.handler,self.xref,resources,image,inline).then(function(imageObj){var imgData=imageObj.createImageData(!1);self.handler.send("obj",[objId,self.pageIndex,"Image",imgData],[imgData.data.buffer])}).then(null,function(reason){warn("Unable to decode image: "+reason),self.handler.send("obj",[objId,self.pageIndex,"Image",null])}),operatorList.addOp(OPS.paintImageXObject,args),void(cacheKey&&(cache.key=cacheKey,cache.fn=OPS.paintImageXObject,cache.args=args)))},handleSMask:function(smask,resources,operatorList,stateManager){var smaskContent=smask.get("G"),smaskOptions={subtype:smask.get("S").name,backdrop:smask.get("BC")};return this.buildFormXObject(resources,smaskContent,smaskOptions,operatorList,stateManager.state.clone())},handleTilingType:function(fn,args,resources,pattern,patternDict,operatorList){var tilingOpList=new OperatorList;return this.getOperatorList(pattern,patternDict.get("Resources")||resources,tilingOpList).then(function(){operatorList.addDependencies(tilingOpList.dependencies),operatorList.addOp(fn,getTilingPatternIR({fnArray:tilingOpList.fnArray,argsArray:tilingOpList.argsArray},patternDict,args))})},handleSetFont:function(resources,fontArgs,fontRef,operatorList,state){var fontName;fontArgs&&(fontArgs=fontArgs.slice(),fontName=fontArgs[0].name);var self=this;return this.loadFont(fontName,fontRef,this.xref,resources).then(function(translated){return translated.font.isType3Font?translated.loadType3Data(self,resources,operatorList).then(function(){return translated}):translated}).then(function(translated){return state.font=translated.font,translated.send(self.handler),translated.loadedName})},handleText:function(chars,state){var font=state.font,glyphs=font.charsToGlyphs(chars),isAddToPathSet=!!(state.textRenderingMode&TextRenderingMode.ADD_TO_PATH_FLAG);if(font.data&&(isAddToPathSet||PDFJS.disableFontFace))for(var buildPath=function(fontChar){if(!font.renderer.hasBuiltPath(fontChar)){var path=font.renderer.getPathJs(fontChar);this.handler.send("commonobj",[font.loadedName+"_path_"+fontChar,"FontPath",path])}}.bind(this),i=0,ii=glyphs.length;ii>i;i++){var glyph=glyphs[i];if(null!==glyph){buildPath(glyph.fontChar);var accent=glyph.accent;accent&&accent.fontChar&&buildPath(accent.fontChar)}}return glyphs},setGState:function(resources,gState,operatorList,xref,stateManager){var gStateObj=[],gStateMap=gState.map,self=this,promise=Promise.resolve();for(var key in gStateMap){var value=gStateMap[key];switch(key){case"Type":break;case"LW":case"LC":case"LJ":case"ML":case"D":case"RI":case"FL":case"CA":case"ca":gStateObj.push([key,value]);break;case"Font":promise=promise.then(function(){return self.handleSetFont(resources,null,value[0],operatorList,stateManager.state).then(function(loadedName){operatorList.addDependency(loadedName),gStateObj.push([key,[loadedName,value[1]]])})});break;case"BM":gStateObj.push([key,value]);break;case"SMask":if(isName(value)&&"None"===value.name){gStateObj.push([key,!1]);break}var dict=xref.fetchIfRef(value);isDict(dict)?(promise=promise.then(function(){return self.handleSMask(dict,resources,operatorList,stateManager)}),gStateObj.push([key,!0])):warn("Unsupported SMask type");break;case"OP":case"op":case"OPM":case"BG":case"BG2":case"UCR":case"UCR2":case"TR":case"TR2":case"HT":case"SM":case"SA":case"AIS":case"TK":info("graphic state operator "+key);break;default:info("Unknown graphic state operator "+key)}}return promise.then(function(){gStateObj.length>=0&&operatorList.addOp(OPS.setGState,[gStateObj])})},loadFont:function(fontName,font,xref,resources){function errorFont(){return Promise.resolve(new TranslatedFont("g_font_error",new ErrorFont("Font "+fontName+" is not available"),font))}var fontRef;if(font)assert(isRef(font)),fontRef=font;else{var fontRes=resources.get("Font");if(!fontRes)return warn("fontRes not available"),errorFont();fontRef=fontRes.getRaw(fontName)}if(!fontRef)return warn("fontRef not available"),errorFont();if(this.fontCache.has(fontRef))return this.fontCache.get(fontRef);if(font=xref.fetchIfRef(fontRef),!isDict(font))return errorFont();if(font.translated)return font.translated;var fontCapability=createPromiseCapability(),preEvaluatedFont=this.preEvaluateFont(font,xref),descriptor=preEvaluatedFont.descriptor,fontID=fontRef.num+"_"+fontRef.gen;if(isDict(descriptor)){descriptor.fontAliases||(descriptor.fontAliases=Object.create(null));var fontAliases=descriptor.fontAliases,hash=preEvaluatedFont.hash;if(fontAliases[hash]){var aliasFontRef=fontAliases[hash].aliasRef;if(aliasFontRef&&this.fontCache.has(aliasFontRef))return this.fontCache.putAlias(fontRef,aliasFontRef),this.fontCache.get(fontRef)}fontAliases[hash]||(fontAliases[hash]={fontID:Font.getFontID()}),fontAliases[hash].aliasRef=fontRef,fontID=fontAliases[hash].fontID}var fontRefIsDict=isDict(fontRef);fontRefIsDict||this.fontCache.put(fontRef,fontCapability.promise),font.loadedName="g_font_"+(fontRefIsDict?fontName.replace(/\W/g,""):fontID),font.translated=fontCapability.promise;var translatedPromise;try{translatedPromise=Promise.resolve(this.translateFont(preEvaluatedFont,xref))}catch(e){translatedPromise=Promise.reject(e)}return translatedPromise.then(function(translatedFont){if(void 0!==translatedFont.fontType){var xrefFontStats=xref.stats.fontTypes;xrefFontStats[translatedFont.fontType]=!0}fontCapability.resolve(new TranslatedFont(font.loadedName,translatedFont,font))},function(reason){UnsupportedManager.notify(UNSUPPORTED_FEATURES.font);try{var descriptor=preEvaluatedFont.descriptor,fontFile3=descriptor&&descriptor.get("FontFile3"),subtype=fontFile3&&fontFile3.get("Subtype"),fontType=getFontType(preEvaluatedFont.type,subtype&&subtype.name),xrefFontStats=xref.stats.fontTypes;xrefFontStats[fontType]=!0}catch(ex){}fontCapability.resolve(new TranslatedFont(font.loadedName,new ErrorFont(reason instanceof Error?reason.message:reason),font))}),fontCapability.promise},buildPath:function(operatorList,fn,args){var lastIndex=operatorList.length-1;if(args||(args=[]),0>lastIndex||operatorList.fnArray[lastIndex]!==OPS.constructPath)operatorList.addOp(OPS.constructPath,[[fn],args]);else{var opArgs=operatorList.argsArray[lastIndex];opArgs[0].push(fn),Array.prototype.push.apply(opArgs[1],args)}},handleColorN:function(operatorList,fn,args,cs,patterns,resources,xref){var pattern,patternName=args[args.length-1];if(isName(patternName)&&(pattern=patterns.get(patternName.name))){var dict=isStream(pattern)?pattern.dict:pattern,typeNum=dict.get("PatternType");if(typeNum===TILING_PATTERN){var color=cs.base?cs.base.getRgb(args,0):null;return this.handleTilingType(fn,color,resources,pattern,dict,operatorList)}if(typeNum===SHADING_PATTERN){var shading=dict.get("Shading"),matrix=dict.get("Matrix");return pattern=Pattern.parseShading(shading,matrix,xref,resources),operatorList.addOp(fn,pattern.getIR()),Promise.resolve()}return Promise.reject("Unknown PatternType: "+typeNum)}return operatorList.addOp(fn,args),Promise.resolve()},getOperatorList:function(stream,resources,operatorList,initialState){var self=this,xref=this.xref,imageCache={};assert(operatorList),resources=resources||Dict.empty;var xobjs=resources.get("XObject")||Dict.empty,patterns=resources.get("Pattern")||Dict.empty,stateManager=new StateManager(initialState||new EvalState),preprocessor=new EvaluatorPreprocessor(stream,xref,stateManager),timeSlotManager=new TimeSlotManager;return new Promise(function next(resolve,reject){timeSlotManager.reset();for(var stop,i,ii,cs,operation={};!(stop=timeSlotManager.check())&&(operation.args=null,preprocessor.read(operation));){var args=operation.args,fn=operation.fn;switch(0|fn){case OPS.paintXObject:if(args[0].code)break;var name=args[0].name;if(imageCache.key===name){operatorList.addOp(imageCache.fn,imageCache.args),args=null;continue}var xobj=xobjs.get(name);if(xobj){assert(isStream(xobj),"XObject should be a stream");var type=xobj.dict.get("Subtype");if(assert(isName(type),"XObject should have a Name subtype"),"Form"===type.name)return stateManager.save(),self.buildFormXObject(resources,xobj,null,operatorList,stateManager.state.clone()).then(function(){stateManager.restore(),next(resolve,reject)},reject);if("Image"===type.name){self.buildPaintImageXObject(resources,xobj,!1,operatorList,name,imageCache),args=null;continue}if("PS"===type.name){info("Ignored XObject subtype PS");continue}error("Unhandled XObject subtype "+type.name)}break;case OPS.setFont:var fontSize=args[1];return self.handleSetFont(resources,args,null,operatorList,stateManager.state).then(function(loadedName){operatorList.addDependency(loadedName),operatorList.addOp(OPS.setFont,[loadedName,fontSize]),next(resolve,reject)},reject);case OPS.endInlineImage:var cacheKey=args[0].cacheKey;if(cacheKey&&imageCache.key===cacheKey){operatorList.addOp(imageCache.fn,imageCache.args),args=null;continue}self.buildPaintImageXObject(resources,args[0],!0,operatorList,cacheKey,imageCache),args=null;continue;case OPS.showText:args[0]=self.handleText(args[0],stateManager.state);break;case OPS.showSpacedText:var arr=args[0],combinedGlyphs=[],arrLength=arr.length;for(i=0;arrLength>i;++i){var arrItem=arr[i];isString(arrItem)?Array.prototype.push.apply(combinedGlyphs,self.handleText(arrItem,stateManager.state)):isNum(arrItem)&&combinedGlyphs.push(arrItem)}args[0]=combinedGlyphs,fn=OPS.showText;break;case OPS.nextLineShowText:operatorList.addOp(OPS.nextLine),args[0]=self.handleText(args[0],stateManager.state),fn=OPS.showText;break;case OPS.nextLineSetSpacingShowText:operatorList.addOp(OPS.nextLine),operatorList.addOp(OPS.setWordSpacing,[args.shift()]),operatorList.addOp(OPS.setCharSpacing,[args.shift()]),args[0]=self.handleText(args[0],stateManager.state),fn=OPS.showText;break;case OPS.setTextRenderingMode:stateManager.state.textRenderingMode=args[0];break;case OPS.setFillColorSpace:stateManager.state.fillColorSpace=ColorSpace.parse(args[0],xref,resources);continue;case OPS.setStrokeColorSpace:stateManager.state.strokeColorSpace=ColorSpace.parse(args[0],xref,resources);continue;case OPS.setFillColor:cs=stateManager.state.fillColorSpace,args=cs.getRgb(args,0),fn=OPS.setFillRGBColor;break;case OPS.setStrokeColor:cs=stateManager.state.strokeColorSpace,args=cs.getRgb(args,0),fn=OPS.setStrokeRGBColor;break;case OPS.setFillGray:stateManager.state.fillColorSpace=ColorSpace.singletons.gray,args=ColorSpace.singletons.gray.getRgb(args,0),fn=OPS.setFillRGBColor;break;case OPS.setStrokeGray:stateManager.state.strokeColorSpace=ColorSpace.singletons.gray,args=ColorSpace.singletons.gray.getRgb(args,0),fn=OPS.setStrokeRGBColor;break;case OPS.setFillCMYKColor:stateManager.state.fillColorSpace=ColorSpace.singletons.cmyk,args=ColorSpace.singletons.cmyk.getRgb(args,0),fn=OPS.setFillRGBColor;break;case OPS.setStrokeCMYKColor:stateManager.state.strokeColorSpace=ColorSpace.singletons.cmyk,args=ColorSpace.singletons.cmyk.getRgb(args,0),fn=OPS.setStrokeRGBColor;break;case OPS.setFillRGBColor:stateManager.state.fillColorSpace=ColorSpace.singletons.rgb,args=ColorSpace.singletons.rgb.getRgb(args,0);break;case OPS.setStrokeRGBColor:stateManager.state.strokeColorSpace=ColorSpace.singletons.rgb,args=ColorSpace.singletons.rgb.getRgb(args,0);break;case OPS.setFillColorN:if(cs=stateManager.state.fillColorSpace,"Pattern"===cs.name)return self.handleColorN(operatorList,OPS.setFillColorN,args,cs,patterns,resources,xref).then(function(){next(resolve,reject)},reject);args=cs.getRgb(args,0),fn=OPS.setFillRGBColor;break;case OPS.setStrokeColorN:if(cs=stateManager.state.strokeColorSpace,"Pattern"===cs.name)return self.handleColorN(operatorList,OPS.setStrokeColorN,args,cs,patterns,resources,xref).then(function(){next(resolve,reject)},reject);args=cs.getRgb(args,0),fn=OPS.setStrokeRGBColor;break;case OPS.shadingFill:var shadingRes=resources.get("Shading");shadingRes||error("No shading resource found");var shading=shadingRes.get(args[0].name);shading||error("No shading object found");var shadingFill=Pattern.parseShading(shading,null,xref,resources),patternIR=shadingFill.getIR();args=[patternIR],fn=OPS.shadingFill;break;case OPS.setGState:var dictName=args[0],extGState=resources.get("ExtGState");if(!isDict(extGState)||!extGState.has(dictName.name))break;var gState=extGState.get(dictName.name);return self.setGState(resources,gState,operatorList,xref,stateManager).then(function(){next(resolve,reject)},reject);case OPS.moveTo:case OPS.lineTo:case OPS.curveTo:case OPS.curveTo2:case OPS.curveTo3:case OPS.closePath:self.buildPath(operatorList,fn,args);continue;case OPS.rectangle:self.buildPath(operatorList,fn,args);continue}operatorList.addOp(fn,args)}if(stop)return void deferred.then(function(){next(resolve,reject)});for(i=0,ii=preprocessor.savedStatesDepth;ii>i;i++)operatorList.addOp(OPS.restore,[]);resolve()})},getTextContent:function(stream,resources,stateManager){function newTextChunk(){var font=textState.font;return font.loadedName in textContent.styles||(textContent.styles[font.loadedName]={fontFamily:font.fallbackName,ascent:font.ascent,descent:font.descent,vertical:font.vertical}),{str:[],dir:null,width:0,height:0,transform:null,fontName:font.loadedName}}function runBidi(textChunk){var str=textChunk.str.join(""),bidiResult=PDFJS.bidi(str,-1,textState.font.vertical);return textChunk.str=bidiResult.str,textChunk.dir=bidiResult.dir,textChunk}function handleSetFont(fontName,fontRef){return self.loadFont(fontName,fontRef,xref,resources).then(function(translated){textState.font=translated.font,textState.fontMatrix=translated.font.fontMatrix||FONT_IDENTITY_MATRIX})}function buildTextGeometry(chars,textChunk){var font=textState.font;if(textChunk=textChunk||newTextChunk(),!textChunk.transform){var tsm=[textState.fontSize*textState.textHScale,0,0,textState.fontSize,0,textState.textRise],trm=textChunk.transform=Util.transform(textState.ctm,Util.transform(textState.textMatrix,tsm));font.vertical?textChunk.width=Math.sqrt(trm[0]*trm[0]+trm[1]*trm[1]):textChunk.height=Math.sqrt(trm[2]*trm[2]+trm[3]*trm[3])}for(var width=0,height=0,glyphs=font.charsToGlyphs(chars),defaultVMetrics=font.defaultVMetrics,i=0;i<glyphs.length;i++){var glyph=glyphs[i];if(glyph){var vMetricX=null,vMetricY=null,glyphWidth=null;font.vertical?glyph.vmetric?(glyphWidth=glyph.vmetric[0],vMetricX=glyph.vmetric[1],vMetricY=glyph.vmetric[2]):(glyphWidth=glyph.width,vMetricX=.5*glyph.width,vMetricY=defaultVMetrics[2]):glyphWidth=glyph.width;var glyphUnicode=glyph.unicode;void 0!==NormalizedUnicodes[glyphUnicode]&&(glyphUnicode=NormalizedUnicodes[glyphUnicode]),glyphUnicode=reverseIfRtl(glyphUnicode);var tx=0,ty=0;if(font.vertical){var w1=glyphWidth*textState.fontMatrix[0];ty=w1*textState.fontSize+textState.charSpacing,height+=ty}else{var w0=glyphWidth*textState.fontMatrix[0];tx=(w0*textState.fontSize+textState.charSpacing)*textState.textHScale,width+=tx}textState.translateTextMatrix(tx,ty),textChunk.str.push(glyphUnicode)}else width+=textState.wordSpacing*textState.textHScale}var a=textState.textLineMatrix[0],b=textState.textLineMatrix[1],scaleLineX=Math.sqrt(a*a+b*b);a=textState.ctm[0],b=textState.ctm[1];var scaleCtmX=Math.sqrt(a*a+b*b);return font.vertical?textChunk.height+=Math.abs(height*scaleCtmX*scaleLineX):textChunk.width+=width*scaleCtmX*scaleLineX,textChunk}stateManager=stateManager||new StateManager(new TextState);var textContent={items:[],styles:Object.create(null)},bidiTexts=textContent.items,SPACE_FACTOR=.35,MULTI_SPACE_FACTOR=1.5,self=this,xref=this.xref;resources=xref.fetchIfRef(resources)||Dict.empty;var textState,xobjs=null,xobjsCache={},preprocessor=new EvaluatorPreprocessor(stream,xref,stateManager),timeSlotManager=new TimeSlotManager;return new Promise(function next(resolve,reject){timeSlotManager.reset();for(var stop,operation={},args=[];!(stop=timeSlotManager.check())&&(args.length=0,operation.args=args,preprocessor.read(operation));){textState=stateManager.state;var fn=operation.fn;switch(args=operation.args,0|fn){case OPS.setFont:return textState.fontSize=args[1],handleSetFont(args[0].name).then(function(){next(resolve,reject)},reject);case OPS.setTextRise:textState.textRise=args[0];break;case OPS.setHScale:textState.textHScale=args[0]/100;break;case OPS.setLeading:textState.leading=args[0];break;case OPS.moveText:textState.translateTextLineMatrix(args[0],args[1]),textState.textMatrix=textState.textLineMatrix.slice();break;case OPS.setLeadingMoveText:textState.leading=-args[1],textState.translateTextLineMatrix(args[0],args[1]),textState.textMatrix=textState.textLineMatrix.slice();break;case OPS.nextLine:textState.carriageReturn();break;case OPS.setTextMatrix:textState.setTextMatrix(args[0],args[1],args[2],args[3],args[4],args[5]),textState.setTextLineMatrix(args[0],args[1],args[2],args[3],args[4],args[5]);break;case OPS.setCharSpacing:textState.charSpacing=args[0];break;case OPS.setWordSpacing:textState.wordSpacing=args[0];break;case OPS.beginText:textState.textMatrix=IDENTITY_MATRIX.slice(),textState.textLineMatrix=IDENTITY_MATRIX.slice();break;case OPS.showSpacedText:for(var offset,items=args[0],textChunk=newTextChunk(),j=0,jj=items.length;jj>j;j++)if("string"==typeof items[j])buildTextGeometry(items[j],textChunk);else{var val=items[j]/1e3;if(textState.font.vertical?(offset=-val*textState.fontSize*textState.textMatrix[3],textState.translateTextMatrix(0,offset),textChunk.height+=offset):(offset=-val*textState.fontSize*textState.textHScale*textState.textMatrix[0],textState.translateTextMatrix(offset,0),textChunk.width+=offset),items[j]<0&&textState.font.spaceWidth>0){var fakeSpaces=-items[j]/textState.font.spaceWidth;if(fakeSpaces>MULTI_SPACE_FACTOR)for(fakeSpaces=Math.round(fakeSpaces);fakeSpaces--;)textChunk.str.push(" ");else fakeSpaces>SPACE_FACTOR&&textChunk.str.push(" ")}}bidiTexts.push(runBidi(textChunk));break;case OPS.showText:bidiTexts.push(runBidi(buildTextGeometry(args[0])));break;case OPS.nextLineShowText:textState.carriageReturn(),bidiTexts.push(runBidi(buildTextGeometry(args[0])));break;case OPS.nextLineSetSpacingShowText:textState.wordSpacing=args[0],textState.charSpacing=args[1],textState.carriageReturn(),bidiTexts.push(runBidi(buildTextGeometry(args[2])));break;case OPS.paintXObject:if(args[0].code)break;xobjs||(xobjs=resources.get("XObject")||Dict.empty);var name=args[0].name;if(xobjsCache.key===name){xobjsCache.texts&&(Util.appendToArray(bidiTexts,xobjsCache.texts.items),Util.extendObj(textContent.styles,xobjsCache.texts.styles));break}var xobj=xobjs.get(name);if(!xobj)break;assert(isStream(xobj),"XObject should be a stream");var type=xobj.dict.get("Subtype");if(assert(isName(type),"XObject should have a Name subtype"),"Form"!==type.name){xobjsCache.key=name,xobjsCache.texts=null;break}stateManager.save();var matrix=xobj.dict.get("Matrix");return isArray(matrix)&&6===matrix.length&&stateManager.transform(matrix),self.getTextContent(xobj,xobj.dict.get("Resources")||resources,stateManager).then(function(formTextContent){Util.appendToArray(bidiTexts,formTextContent.items),Util.extendObj(textContent.styles,formTextContent.styles),stateManager.restore(),xobjsCache.key=name,xobjsCache.texts=formTextContent,next(resolve,reject)},reject);case OPS.setGState:var dictName=args[0],extGState=resources.get("ExtGState");if(!isDict(extGState)||!extGState.has(dictName.name))break;var gsStateMap=extGState.get(dictName.name),gsStateFont=null;for(var key in gsStateMap)"Font"===key&&(assert(!gsStateFont),gsStateFont=gsStateMap[key]);if(gsStateFont)return textState.fontSize=gsStateFont[1],handleSetFont(gsStateFont[0]).then(function(){next(resolve,reject)},reject)}}return stop?void deferred.then(function(){next(resolve,reject)}):void resolve(textContent)})},extractDataStructures:function(dict,baseDict,xref,properties){var toUnicode=dict.get("ToUnicode")||baseDict.get("ToUnicode");if(toUnicode&&(properties.toUnicode=this.readToUnicode(toUnicode)),properties.composite){var cidSystemInfo=dict.get("CIDSystemInfo");isDict(cidSystemInfo)&&(properties.cidSystemInfo={registry:cidSystemInfo.get("Registry"),ordering:cidSystemInfo.get("Ordering"),supplement:cidSystemInfo.get("Supplement")});var cidToGidMap=dict.get("CIDToGIDMap");isStream(cidToGidMap)&&(properties.cidToGidMap=this.readCidToGidMap(cidToGidMap))}var encoding,differences=[],baseEncodingName=null;if(dict.has("Encoding")){if(encoding=dict.get("Encoding"),isDict(encoding)){if(baseEncodingName=encoding.get("BaseEncoding"),baseEncodingName=isName(baseEncodingName)?baseEncodingName.name:null,encoding.has("Differences"))for(var diffEncoding=encoding.get("Differences"),index=0,j=0,jj=diffEncoding.length;jj>j;j++){var data=diffEncoding[j];isNum(data)?index=data:differences[index++]=data.name}}else isName(encoding)?baseEncodingName=encoding.name:error("Encoding is not a Name nor a Dict");"MacRomanEncoding"!==baseEncodingName&&"MacExpertEncoding"!==baseEncodingName&&"WinAnsiEncoding"!==baseEncodingName&&(baseEncodingName=null)}baseEncodingName?properties.defaultEncoding=Encodings[baseEncodingName].slice():(encoding="TrueType"===properties.type?Encodings.WinAnsiEncoding:Encodings.StandardEncoding,properties.flags&FontFlags.Symbolic&&(encoding=Encodings.MacRomanEncoding,properties.file||(/Symbol/i.test(properties.name)?encoding=Encodings.SymbolSetEncoding:/Dingbats/i.test(properties.name)&&(encoding=Encodings.ZapfDingbatsEncoding))),properties.defaultEncoding=encoding),properties.differences=differences,properties.baseEncodingName=baseEncodingName,properties.dict=dict},readToUnicode:function(toUnicode){var cmap,cmapObj=toUnicode;return isName(cmapObj)?(cmap=CMapFactory.create(cmapObj,{url:PDFJS.cMapUrl,packed:PDFJS.cMapPacked},null).getMap(),new ToUnicodeMap(cmap)):isStream(cmapObj)?(cmap=CMapFactory.create(cmapObj,{url:PDFJS.cMapUrl,packed:PDFJS.cMapPacked},null).getMap(),cmap.forEach(function(token,i){for(var str=[],k=0;k<token.length;k+=2){var w1=token.charCodeAt(k)<<8|token.charCodeAt(k+1);if(55296===(63488&w1)){k+=2;var w2=token.charCodeAt(k)<<8|token.charCodeAt(k+1);str.push(((1023&w1)<<10)+(1023&w2)+65536)}else str.push(w1)}cmap[i]=String.fromCharCode.apply(String,str)}),new ToUnicodeMap(cmap)):null},readCidToGidMap:function(cidToGidStream){for(var glyphsData=cidToGidStream.getBytes(),result=[],j=0,jj=glyphsData.length;jj>j;j++){var glyphID=glyphsData[j++]<<8|glyphsData[j];if(0!==glyphID){var code=j>>1;result[code]=glyphID}}return result},extractWidths:function(dict,xref,descriptor,properties){var defaultVMetrics,i,ii,j,jj,start,code,widths,glyphsWidths=[],defaultWidth=0,glyphsVMetrics=[];if(properties.composite){if(defaultWidth=dict.get("DW")||1e3,widths=dict.get("W"))for(i=0,ii=widths.length;ii>i;i++)if(start=widths[i++],code=xref.fetchIfRef(widths[i]),isArray(code))for(j=0,jj=code.length;jj>j;j++)glyphsWidths[start++]=code[j];else{var width=widths[++i];for(j=start;code>=j;j++)glyphsWidths[j]=width}if(properties.vertical){var vmetrics=dict.get("DW2")||[880,-1e3];if(defaultVMetrics=[vmetrics[1],.5*defaultWidth,vmetrics[0]],vmetrics=dict.get("W2"))for(i=0,ii=vmetrics.length;ii>i;i++)if(start=vmetrics[i++],code=xref.fetchIfRef(vmetrics[i]),isArray(code))for(j=0,jj=code.length;jj>j;j++)glyphsVMetrics[start++]=[code[j++],code[j++],code[j]];else{var vmetric=[vmetrics[++i],vmetrics[++i],vmetrics[++i]];for(j=start;code>=j;j++)glyphsVMetrics[j]=vmetric}}}else{var firstChar=properties.firstChar;if(widths=dict.get("Widths")){for(j=firstChar,i=0,ii=widths.length;ii>i;i++)glyphsWidths[j++]=widths[i];defaultWidth=parseFloat(descriptor.get("MissingWidth"))||0}else{var baseFontName=dict.get("BaseFont");if(isName(baseFontName)){var metrics=this.getBaseFontMetrics(baseFontName.name);glyphsWidths=this.buildCharCodeToWidth(metrics.widths,properties),defaultWidth=metrics.defaultWidth}}}var isMonospace=!0,firstWidth=defaultWidth;for(var glyph in glyphsWidths){var glyphWidth=glyphsWidths[glyph];if(glyphWidth)if(firstWidth){if(firstWidth!==glyphWidth){isMonospace=!1;break}}else firstWidth=glyphWidth}isMonospace&&(properties.flags|=FontFlags.FixedPitch),properties.defaultWidth=defaultWidth,properties.widths=glyphsWidths,properties.defaultVMetrics=defaultVMetrics,properties.vmetrics=glyphsVMetrics},isSerifFont:function(baseFontName){var fontNameWoStyle=baseFontName.split("-")[0];return fontNameWoStyle in serifFonts||-1!==fontNameWoStyle.search(/serif/gi)},getBaseFontMetrics:function(name){var defaultWidth=0,widths=[],monospace=!1,lookupName=stdFontMap[name]||name;lookupName in Metrics||(lookupName=this.isSerifFont(name)?"Times-Roman":"Helvetica");var glyphWidths=Metrics[lookupName];return isNum(glyphWidths)?(defaultWidth=glyphWidths,monospace=!0):widths=glyphWidths,{defaultWidth:defaultWidth,monospace:monospace,widths:widths}},buildCharCodeToWidth:function(widthsByGlyphName,properties){for(var widths=Object.create(null),differences=properties.differences,encoding=properties.defaultEncoding,charCode=0;256>charCode;charCode++)charCode in differences&&widthsByGlyphName[differences[charCode]]?widths[charCode]=widthsByGlyphName[differences[charCode]]:charCode in encoding&&widthsByGlyphName[encoding[charCode]]&&(widths[charCode]=widthsByGlyphName[encoding[charCode]]);return widths},preEvaluateFont:function(dict,xref){var baseDict=dict,type=dict.get("Subtype");assert(isName(type),"invalid font Subtype");var uint8array,composite=!1;if("Type0"===type.name){var df=dict.get("DescendantFonts");df||error("Descendant fonts are not specified"),dict=isArray(df)?xref.fetchIfRef(df[0]):df,type=dict.get("Subtype"),assert(isName(type),"invalid font Subtype"),composite=!0}var descriptor=dict.get("FontDescriptor");if(descriptor){var hash=new MurmurHash3_64,encoding=baseDict.getRaw("Encoding");isName(encoding)?hash.update(encoding.name):isRef(encoding)&&hash.update(encoding.num+"_"+encoding.gen);var toUnicode=dict.get("ToUnicode")||baseDict.get("ToUnicode");if(isStream(toUnicode)){var stream=toUnicode.str||toUnicode;uint8array=stream.buffer?new Uint8Array(stream.buffer.buffer,0,stream.bufferLength):new Uint8Array(stream.bytes.buffer,stream.start,stream.end-stream.start),hash.update(uint8array)}else isName(toUnicode)&&hash.update(toUnicode.name);var widths=dict.get("Widths")||baseDict.get("Widths");widths&&(uint8array=new Uint8Array(new Uint32Array(widths).buffer),hash.update(uint8array))}return{descriptor:descriptor,dict:dict,baseDict:baseDict,composite:composite,type:type.name,hash:hash?hash.hexdigest():""}},translateFont:function(preEvaluatedFont,xref){var properties,baseDict=preEvaluatedFont.baseDict,dict=preEvaluatedFont.dict,composite=preEvaluatedFont.composite,descriptor=preEvaluatedFont.descriptor,type=preEvaluatedFont.type,maxCharIndex=composite?65535:255;if(!descriptor){if("Type3"!==type){var baseFontName=dict.get("BaseFont");isName(baseFontName)||error("Base font is not specified"),baseFontName=baseFontName.name.replace(/[,_]/g,"-");var metrics=this.getBaseFontMetrics(baseFontName),fontNameWoStyle=baseFontName.split("-")[0],flags=(this.isSerifFont(fontNameWoStyle)?FontFlags.Serif:0)|(metrics.monospace?FontFlags.FixedPitch:0)|(symbolsFonts[fontNameWoStyle]?FontFlags.Symbolic:FontFlags.Nonsymbolic);return properties={type:type,name:baseFontName,widths:metrics.widths,defaultWidth:metrics.defaultWidth,flags:flags,firstChar:0,lastChar:maxCharIndex},this.extractDataStructures(dict,dict,xref,properties),properties.widths=this.buildCharCodeToWidth(metrics.widths,properties),new Font(baseFontName,null,properties)}descriptor=new Dict(null),descriptor.set("FontName",Name.get(type))}var firstChar=dict.get("FirstChar")||0,lastChar=dict.get("LastChar")||maxCharIndex,fontName=descriptor.get("FontName"),baseFont=dict.get("BaseFont");if(isString(fontName)&&(fontName=Name.get(fontName)),isString(baseFont)&&(baseFont=Name.get(baseFont)),"Type3"!==type){var fontNameStr=fontName&&fontName.name,baseFontStr=baseFont&&baseFont.name;fontNameStr!==baseFontStr&&(info("The FontDescriptor's FontName is \""+fontNameStr+'" but should be the same as the Font\'s BaseFont "'+baseFontStr+'"'),fontNameStr&&baseFontStr&&0===baseFontStr.indexOf(fontNameStr)&&(fontName=baseFont))}fontName=fontName||baseFont,assert(isName(fontName),"invalid font name");var fontFile=descriptor.get("FontFile","FontFile2","FontFile3");
if(fontFile&&fontFile.dict){var subtype=fontFile.dict.get("Subtype");subtype&&(subtype=subtype.name);var length1=fontFile.dict.get("Length1"),length2=fontFile.dict.get("Length2")}if(properties={type:type,name:fontName.name,subtype:subtype,file:fontFile,length1:length1,length2:length2,loadedName:baseDict.loadedName,composite:composite,wideChars:composite,fixedPitch:!1,fontMatrix:dict.get("FontMatrix")||FONT_IDENTITY_MATRIX,firstChar:firstChar||0,lastChar:lastChar||maxCharIndex,bbox:descriptor.get("FontBBox"),ascent:descriptor.get("Ascent"),descent:descriptor.get("Descent"),xHeight:descriptor.get("XHeight"),capHeight:descriptor.get("CapHeight"),flags:descriptor.get("Flags"),italicAngle:descriptor.get("ItalicAngle"),coded:!1},composite){var cidEncoding=baseDict.get("Encoding");isName(cidEncoding)&&(properties.cidEncoding=cidEncoding.name),properties.cMap=CMapFactory.create(cidEncoding,{url:PDFJS.cMapUrl,packed:PDFJS.cMapPacked},null),properties.vertical=properties.cMap.vertical}return this.extractDataStructures(dict,baseDict,xref,properties),this.extractWidths(dict,xref,descriptor,properties),"Type3"===type&&(properties.isType3Font=!0),new Font(fontName.name,fontFile,properties)}},PartialEvaluator}(),TranslatedFont=function(){function TranslatedFont(loadedName,font,dict){this.loadedName=loadedName,this.font=font,this.dict=dict,this.type3Loaded=null,this.sent=!1}return TranslatedFont.prototype={send:function(handler){if(!this.sent){var fontData=this.font.exportData();handler.send("commonobj",[this.loadedName,"Font",fontData]),this.sent=!0}},loadType3Data:function(evaluator,resources,parentOperatorList){if(assert(this.font.isType3Font),this.type3Loaded)return this.type3Loaded;for(var translatedFont=this.font,loadCharProcsPromise=Promise.resolve(),charProcs=this.dict.get("CharProcs").getAll(),fontResources=this.dict.get("Resources")||resources,charProcKeys=Object.keys(charProcs),charProcOperatorList={},i=0,n=charProcKeys.length;n>i;++i)loadCharProcsPromise=loadCharProcsPromise.then(function(key){var glyphStream=charProcs[key],operatorList=new OperatorList;return evaluator.getOperatorList(glyphStream,fontResources,operatorList).then(function(){charProcOperatorList[key]=operatorList.getIR(),parentOperatorList.addDependencies(operatorList.dependencies)},function(){warn('Type3 font resource "'+key+'" is not available');var operatorList=new OperatorList;charProcOperatorList[key]=operatorList.getIR()})}.bind(this,charProcKeys[i]));return this.type3Loaded=loadCharProcsPromise.then(function(){translatedFont.charProcOperatorList=charProcOperatorList}),this.type3Loaded}},TranslatedFont}(),OperatorList=function(){function getTransfers(queue){for(var transfers=[],fnArray=queue.fnArray,argsArray=queue.argsArray,i=0,ii=queue.length;ii>i;i++)switch(fnArray[i]){case OPS.paintInlineImageXObject:case OPS.paintInlineImageXObjectGroup:case OPS.paintImageMaskXObject:var arg=argsArray[i][0];arg.cached||transfers.push(arg.data.buffer)}return transfers}function OperatorList(intent,messageHandler,pageIndex){this.messageHandler=messageHandler,this.fnArray=[],this.argsArray=[],this.dependencies={},this.pageIndex=pageIndex,this.intent=intent}var CHUNK_SIZE=1e3,CHUNK_SIZE_ABOUT=CHUNK_SIZE-5;return OperatorList.prototype={get length(){return this.argsArray.length},addOp:function(fn,args){this.fnArray.push(fn),this.argsArray.push(args),this.messageHandler&&(this.fnArray.length>=CHUNK_SIZE?this.flush():this.fnArray.length>=CHUNK_SIZE_ABOUT&&(fn===OPS.restore||fn===OPS.endText)&&this.flush())},addDependency:function(dependency){dependency in this.dependencies||(this.dependencies[dependency]=!0,this.addOp(OPS.dependency,[dependency]))},addDependencies:function(dependencies){for(var key in dependencies)this.addDependency(key)},addOpList:function(opList){Util.extendObj(this.dependencies,opList.dependencies);for(var i=0,ii=opList.length;ii>i;i++)this.addOp(opList.fnArray[i],opList.argsArray[i])},getIR:function(){return{fnArray:this.fnArray,argsArray:this.argsArray,length:this.length}},flush:function(lastChunk){"oplist"!==this.intent&&(new QueueOptimizer).optimize(this);var transfers=getTransfers(this);this.messageHandler.send("RenderPageChunk",{operatorList:{fnArray:this.fnArray,argsArray:this.argsArray,lastChunk:lastChunk,length:this.length},pageIndex:this.pageIndex,intent:this.intent},transfers),this.dependencies={},this.fnArray.length=0,this.argsArray.length=0}},OperatorList}(),StateManager=function(){function StateManager(initialState){this.state=initialState,this.stateStack=[]}return StateManager.prototype={save:function(){var old=this.state;this.stateStack.push(this.state),this.state=old.clone()},restore:function(){var prev=this.stateStack.pop();prev&&(this.state=prev)},transform:function(args){this.state.ctm=Util.transform(this.state.ctm,args)}},StateManager}(),TextState=function(){function TextState(){this.ctm=new Float32Array(IDENTITY_MATRIX),this.fontSize=0,this.font=null,this.fontMatrix=FONT_IDENTITY_MATRIX,this.textMatrix=IDENTITY_MATRIX.slice(),this.textLineMatrix=IDENTITY_MATRIX.slice(),this.charSpacing=0,this.wordSpacing=0,this.leading=0,this.textHScale=1,this.textRise=0}return TextState.prototype={setTextMatrix:function(a,b,c,d,e,f){var m=this.textMatrix;m[0]=a,m[1]=b,m[2]=c,m[3]=d,m[4]=e,m[5]=f},setTextLineMatrix:function(a,b,c,d,e,f){var m=this.textLineMatrix;m[0]=a,m[1]=b,m[2]=c,m[3]=d,m[4]=e,m[5]=f},translateTextMatrix:function(x,y){var m=this.textMatrix;m[4]=m[0]*x+m[2]*y+m[4],m[5]=m[1]*x+m[3]*y+m[5]},translateTextLineMatrix:function(x,y){var m=this.textLineMatrix;m[4]=m[0]*x+m[2]*y+m[4],m[5]=m[1]*x+m[3]*y+m[5]},calcRenderMatrix:function(ctm){var tsm=[this.fontSize*this.textHScale,0,0,this.fontSize,0,this.textRise];return Util.transform(ctm,Util.transform(this.textMatrix,tsm))},carriageReturn:function(){this.translateTextLineMatrix(0,-this.leading),this.textMatrix=this.textLineMatrix.slice()},clone:function(){var clone=Object.create(this);return clone.textMatrix=this.textMatrix.slice(),clone.textLineMatrix=this.textLineMatrix.slice(),clone.fontMatrix=this.fontMatrix.slice(),clone}},TextState}(),EvalState=function(){function EvalState(){this.ctm=new Float32Array(IDENTITY_MATRIX),this.font=null,this.textRenderingMode=TextRenderingMode.FILL,this.fillColorSpace=ColorSpace.singletons.gray,this.strokeColorSpace=ColorSpace.singletons.gray}return EvalState.prototype={clone:function(){return Object.create(this)}},EvalState}(),EvaluatorPreprocessor=function(){function EvaluatorPreprocessor(stream,xref,stateManager){this.parser=new Parser(new Lexer(stream,OP_MAP),!1,xref),this.stateManager=stateManager,this.nonProcessedArgs=[]}var OP_MAP={w:{id:OPS.setLineWidth,numArgs:1,variableArgs:!1},J:{id:OPS.setLineCap,numArgs:1,variableArgs:!1},j:{id:OPS.setLineJoin,numArgs:1,variableArgs:!1},M:{id:OPS.setMiterLimit,numArgs:1,variableArgs:!1},d:{id:OPS.setDash,numArgs:2,variableArgs:!1},ri:{id:OPS.setRenderingIntent,numArgs:1,variableArgs:!1},i:{id:OPS.setFlatness,numArgs:1,variableArgs:!1},gs:{id:OPS.setGState,numArgs:1,variableArgs:!1},q:{id:OPS.save,numArgs:0,variableArgs:!1},Q:{id:OPS.restore,numArgs:0,variableArgs:!1},cm:{id:OPS.transform,numArgs:6,variableArgs:!1},m:{id:OPS.moveTo,numArgs:2,variableArgs:!1},l:{id:OPS.lineTo,numArgs:2,variableArgs:!1},c:{id:OPS.curveTo,numArgs:6,variableArgs:!1},v:{id:OPS.curveTo2,numArgs:4,variableArgs:!1},y:{id:OPS.curveTo3,numArgs:4,variableArgs:!1},h:{id:OPS.closePath,numArgs:0,variableArgs:!1},re:{id:OPS.rectangle,numArgs:4,variableArgs:!1},S:{id:OPS.stroke,numArgs:0,variableArgs:!1},s:{id:OPS.closeStroke,numArgs:0,variableArgs:!1},f:{id:OPS.fill,numArgs:0,variableArgs:!1},F:{id:OPS.fill,numArgs:0,variableArgs:!1},"f*":{id:OPS.eoFill,numArgs:0,variableArgs:!1},B:{id:OPS.fillStroke,numArgs:0,variableArgs:!1},"B*":{id:OPS.eoFillStroke,numArgs:0,variableArgs:!1},b:{id:OPS.closeFillStroke,numArgs:0,variableArgs:!1},"b*":{id:OPS.closeEOFillStroke,numArgs:0,variableArgs:!1},n:{id:OPS.endPath,numArgs:0,variableArgs:!1},W:{id:OPS.clip,numArgs:0,variableArgs:!1},"W*":{id:OPS.eoClip,numArgs:0,variableArgs:!1},BT:{id:OPS.beginText,numArgs:0,variableArgs:!1},ET:{id:OPS.endText,numArgs:0,variableArgs:!1},Tc:{id:OPS.setCharSpacing,numArgs:1,variableArgs:!1},Tw:{id:OPS.setWordSpacing,numArgs:1,variableArgs:!1},Tz:{id:OPS.setHScale,numArgs:1,variableArgs:!1},TL:{id:OPS.setLeading,numArgs:1,variableArgs:!1},Tf:{id:OPS.setFont,numArgs:2,variableArgs:!1},Tr:{id:OPS.setTextRenderingMode,numArgs:1,variableArgs:!1},Ts:{id:OPS.setTextRise,numArgs:1,variableArgs:!1},Td:{id:OPS.moveText,numArgs:2,variableArgs:!1},TD:{id:OPS.setLeadingMoveText,numArgs:2,variableArgs:!1},Tm:{id:OPS.setTextMatrix,numArgs:6,variableArgs:!1},"T*":{id:OPS.nextLine,numArgs:0,variableArgs:!1},Tj:{id:OPS.showText,numArgs:1,variableArgs:!1},TJ:{id:OPS.showSpacedText,numArgs:1,variableArgs:!1},"'":{id:OPS.nextLineShowText,numArgs:1,variableArgs:!1},'"':{id:OPS.nextLineSetSpacingShowText,numArgs:3,variableArgs:!1},d0:{id:OPS.setCharWidth,numArgs:2,variableArgs:!1},d1:{id:OPS.setCharWidthAndBounds,numArgs:6,variableArgs:!1},CS:{id:OPS.setStrokeColorSpace,numArgs:1,variableArgs:!1},cs:{id:OPS.setFillColorSpace,numArgs:1,variableArgs:!1},SC:{id:OPS.setStrokeColor,numArgs:4,variableArgs:!0},SCN:{id:OPS.setStrokeColorN,numArgs:33,variableArgs:!0},sc:{id:OPS.setFillColor,numArgs:4,variableArgs:!0},scn:{id:OPS.setFillColorN,numArgs:33,variableArgs:!0},G:{id:OPS.setStrokeGray,numArgs:1,variableArgs:!1},g:{id:OPS.setFillGray,numArgs:1,variableArgs:!1},RG:{id:OPS.setStrokeRGBColor,numArgs:3,variableArgs:!1},rg:{id:OPS.setFillRGBColor,numArgs:3,variableArgs:!1},K:{id:OPS.setStrokeCMYKColor,numArgs:4,variableArgs:!1},k:{id:OPS.setFillCMYKColor,numArgs:4,variableArgs:!1},sh:{id:OPS.shadingFill,numArgs:1,variableArgs:!1},BI:{id:OPS.beginInlineImage,numArgs:0,variableArgs:!1},ID:{id:OPS.beginImageData,numArgs:0,variableArgs:!1},EI:{id:OPS.endInlineImage,numArgs:1,variableArgs:!1},Do:{id:OPS.paintXObject,numArgs:1,variableArgs:!1},MP:{id:OPS.markPoint,numArgs:1,variableArgs:!1},DP:{id:OPS.markPointProps,numArgs:2,variableArgs:!1},BMC:{id:OPS.beginMarkedContent,numArgs:1,variableArgs:!1},BDC:{id:OPS.beginMarkedContentProps,numArgs:2,variableArgs:!1},EMC:{id:OPS.endMarkedContent,numArgs:0,variableArgs:!1},BX:{id:OPS.beginCompat,numArgs:0,variableArgs:!1},EX:{id:OPS.endCompat,numArgs:0,variableArgs:!1},BM:null,BD:null,"true":null,fa:null,fal:null,fals:null,"false":null,nu:null,nul:null,"null":null};return EvaluatorPreprocessor.prototype={get savedStatesDepth(){return this.stateManager.stateStack.length},read:function(operation){for(var args=operation.args;;){var obj=this.parser.getObj();if(isCmd(obj)){var cmd=obj.cmd,opSpec=OP_MAP[cmd];if(!opSpec){warn('Unknown command "'+cmd+'"');continue}var fn=opSpec.id,numArgs=opSpec.numArgs,argsLength=null!==args?args.length:0;if(opSpec.variableArgs)argsLength>numArgs&&info("Command "+fn+": expected [0,"+numArgs+"] args, but received "+argsLength+" args");else{if(argsLength!==numArgs){for(var nonProcessedArgs=this.nonProcessedArgs;argsLength>numArgs;)nonProcessedArgs.push(args.shift()),argsLength--;for(;numArgs>argsLength&&0!==nonProcessedArgs.length;)args||(args=[]),args.unshift(nonProcessedArgs.pop()),argsLength++}if(numArgs>argsLength){info("Command "+fn+": because expected "+numArgs+" args, but received "+argsLength+" args; skipping"),args=null;continue}}return this.preprocessCommand(fn,args),operation.fn=fn,operation.args=args,!0}if(isEOF(obj))return!1;null!==obj&&(args||(args=[]),args.push(obj instanceof Dict?obj.getAll():obj),assert(args.length<=33,"Too many arguments"))}},preprocessCommand:function(fn,args){switch(0|fn){case OPS.save:this.stateManager.save();break;case OPS.restore:this.stateManager.restore();break;case OPS.transform:this.stateManager.transform(args)}}},EvaluatorPreprocessor}(),QueueOptimizer=function(){function addState(parentState,pattern,fn){for(var state=parentState,i=0,ii=pattern.length-1;ii>i;i++){var item=pattern[i];state=state[item]||(state[item]=[])}state[pattern[pattern.length-1]]=fn}function handlePaintSolidColorImageMask(iFirstSave,count,fnArray,argsArray){for(var iFirstPIMXO=iFirstSave+2,i=0;count>i;i++){var arg=argsArray[iFirstPIMXO+4*i],imageMask=1===arg.length&&arg[0];if(!imageMask||1!==imageMask.width||1!==imageMask.height||imageMask.data.length&&(1!==imageMask.data.length||0!==imageMask.data[0]))break;fnArray[iFirstPIMXO+4*i]=OPS.paintSolidColorImageMask}return count-i}function QueueOptimizer(){}var InitialState=[];return addState(InitialState,[OPS.save,OPS.transform,OPS.paintInlineImageXObject,OPS.restore],function(context){for(var MIN_IMAGES_IN_INLINE_IMAGES_BLOCK=10,MAX_IMAGES_IN_INLINE_IMAGES_BLOCK=200,MAX_WIDTH=1e3,IMAGE_PADDING=1,fnArray=context.fnArray,argsArray=context.argsArray,curr=context.iCurr,iFirstSave=curr-3,iFirstTransform=curr-2,iFirstPIIXO=curr-1,i=iFirstSave+4,ii=fnArray.length;ii>i+3&&fnArray[i]===OPS.save&&fnArray[i+1]===OPS.transform&&fnArray[i+2]===OPS.paintInlineImageXObject&&fnArray[i+3]===OPS.restore;)i+=4;var count=Math.min((i-iFirstSave)/4,MAX_IMAGES_IN_INLINE_IMAGES_BLOCK);if(MIN_IMAGES_IN_INLINE_IMAGES_BLOCK>count)return i;var q,maxX=0,map=[],maxLineHeight=0,currentX=IMAGE_PADDING,currentY=IMAGE_PADDING;for(q=0;count>q;q++){var transform=argsArray[iFirstTransform+(q<<2)],img=argsArray[iFirstPIIXO+(q<<2)][0];currentX+img.width>MAX_WIDTH&&(maxX=Math.max(maxX,currentX),currentY+=maxLineHeight+2*IMAGE_PADDING,currentX=0,maxLineHeight=0),map.push({transform:transform,x:currentX,y:currentY,w:img.width,h:img.height}),currentX+=img.width+2*IMAGE_PADDING,maxLineHeight=Math.max(maxLineHeight,img.height)}var imgWidth=Math.max(maxX,currentX)+IMAGE_PADDING,imgHeight=currentY+maxLineHeight+IMAGE_PADDING,imgData=new Uint8Array(imgWidth*imgHeight*4),imgRowSize=imgWidth<<2;for(q=0;count>q;q++){var data=argsArray[iFirstPIIXO+(q<<2)][0].data,rowSize=map[q].w<<2,dataOffset=0,offset=map[q].x+map[q].y*imgWidth<<2;imgData.set(data.subarray(0,rowSize),offset-imgRowSize);for(var k=0,kk=map[q].h;kk>k;k++)imgData.set(data.subarray(dataOffset,dataOffset+rowSize),offset),dataOffset+=rowSize,offset+=imgRowSize;for(imgData.set(data.subarray(dataOffset-rowSize,dataOffset),offset);offset>=0;)data[offset-4]=data[offset],data[offset-3]=data[offset+1],data[offset-2]=data[offset+2],data[offset-1]=data[offset+3],data[offset+rowSize]=data[offset+rowSize-4],data[offset+rowSize+1]=data[offset+rowSize-3],data[offset+rowSize+2]=data[offset+rowSize-2],data[offset+rowSize+3]=data[offset+rowSize-1],offset-=imgRowSize}return fnArray.splice(iFirstSave,4*count,OPS.paintInlineImageXObjectGroup),argsArray.splice(iFirstSave,4*count,[{width:imgWidth,height:imgHeight,kind:ImageKind.RGBA_32BPP,data:imgData},map]),iFirstSave+1}),addState(InitialState,[OPS.save,OPS.transform,OPS.paintImageMaskXObject,OPS.restore],function(context){for(var MIN_IMAGES_IN_MASKS_BLOCK=10,MAX_IMAGES_IN_MASKS_BLOCK=100,MAX_SAME_IMAGES_IN_MASKS_BLOCK=1e3,fnArray=context.fnArray,argsArray=context.argsArray,curr=context.iCurr,iFirstSave=curr-3,iFirstTransform=curr-2,iFirstPIMXO=curr-1,i=iFirstSave+4,ii=fnArray.length;ii>i+3&&fnArray[i]===OPS.save&&fnArray[i+1]===OPS.transform&&fnArray[i+2]===OPS.paintImageMaskXObject&&fnArray[i+3]===OPS.restore;)i+=4;var count=(i-iFirstSave)/4;if(count=handlePaintSolidColorImageMask(iFirstSave,count,fnArray,argsArray),MIN_IMAGES_IN_MASKS_BLOCK>count)return i;var q,iTransform,transformArgs,isSameImage=!1,firstPIMXOArg0=argsArray[iFirstPIMXO][0];if(0===argsArray[iFirstTransform][1]&&0===argsArray[iFirstTransform][2]){isSameImage=!0;var firstTransformArg0=argsArray[iFirstTransform][0],firstTransformArg3=argsArray[iFirstTransform][3];iTransform=iFirstTransform+4;var iPIMXO=iFirstPIMXO+4;for(q=1;count>q;q++,iTransform+=4,iPIMXO+=4)if(transformArgs=argsArray[iTransform],argsArray[iPIMXO][0]!==firstPIMXOArg0||transformArgs[0]!==firstTransformArg0||0!==transformArgs[1]||0!==transformArgs[2]||transformArgs[3]!==firstTransformArg3){MIN_IMAGES_IN_MASKS_BLOCK>q?isSameImage=!1:count=q;break}}if(isSameImage){count=Math.min(count,MAX_SAME_IMAGES_IN_MASKS_BLOCK);var positions=new Float32Array(2*count);for(iTransform=iFirstTransform,q=0;count>q;q++,iTransform+=4)transformArgs=argsArray[iTransform],positions[q<<1]=transformArgs[4],positions[(q<<1)+1]=transformArgs[5];fnArray.splice(iFirstSave,4*count,OPS.paintImageMaskXObjectRepeat),argsArray.splice(iFirstSave,4*count,[firstPIMXOArg0,firstTransformArg0,firstTransformArg3,positions])}else{count=Math.min(count,MAX_IMAGES_IN_MASKS_BLOCK);var images=[];for(q=0;count>q;q++){transformArgs=argsArray[iFirstTransform+(q<<2)];var maskParams=argsArray[iFirstPIMXO+(q<<2)][0];images.push({data:maskParams.data,width:maskParams.width,height:maskParams.height,transform:transformArgs})}fnArray.splice(iFirstSave,4*count,OPS.paintImageMaskXObjectGroup),argsArray.splice(iFirstSave,4*count,[images])}return iFirstSave+1}),addState(InitialState,[OPS.save,OPS.transform,OPS.paintImageXObject,OPS.restore],function(context){var MIN_IMAGES_IN_BLOCK=3,MAX_IMAGES_IN_BLOCK=1e3,fnArray=context.fnArray,argsArray=context.argsArray,curr=context.iCurr,iFirstSave=curr-3,iFirstTransform=curr-2,iFirstPIXO=curr-1,iFirstRestore=curr;if(0!==argsArray[iFirstTransform][1]||0!==argsArray[iFirstTransform][2])return iFirstRestore+1;for(var firstPIXOArg0=argsArray[iFirstPIXO][0],firstTransformArg0=argsArray[iFirstTransform][0],firstTransformArg3=argsArray[iFirstTransform][3],i=iFirstSave+4,ii=fnArray.length;ii>i+3&&fnArray[i]===OPS.save&&fnArray[i+1]===OPS.transform&&fnArray[i+2]===OPS.paintImageXObject&&fnArray[i+3]===OPS.restore&&argsArray[i+1][0]===firstTransformArg0&&0===argsArray[i+1][1]&&0===argsArray[i+1][2]&&argsArray[i+1][3]===firstTransformArg3&&argsArray[i+2][0]===firstPIXOArg0;)i+=4;var count=Math.min((i-iFirstSave)/4,MAX_IMAGES_IN_BLOCK);if(MIN_IMAGES_IN_BLOCK>count)return i;for(var positions=new Float32Array(2*count),iTransform=iFirstTransform,q=0;count>q;q++,iTransform+=4){var transformArgs=argsArray[iTransform];positions[q<<1]=transformArgs[4],positions[(q<<1)+1]=transformArgs[5]}var args=[firstPIXOArg0,firstTransformArg0,firstTransformArg3,positions];return fnArray.splice(iFirstSave,4*count,OPS.paintImageXObjectRepeat),argsArray.splice(iFirstSave,4*count,args),iFirstSave+1}),addState(InitialState,[OPS.beginText,OPS.setFont,OPS.setTextMatrix,OPS.showText,OPS.endText],function(context){for(var MIN_CHARS_IN_BLOCK=3,MAX_CHARS_IN_BLOCK=1e3,fnArray=context.fnArray,argsArray=context.argsArray,curr=context.iCurr,iFirstBeginText=curr-4,iFirstSetFont=curr-3,iFirstSetTextMatrix=curr-2,iFirstShowText=curr-1,iFirstEndText=curr,firstSetFontArg0=argsArray[iFirstSetFont][0],firstSetFontArg1=argsArray[iFirstSetFont][1],i=iFirstBeginText+5,ii=fnArray.length;ii>i+4&&fnArray[i]===OPS.beginText&&fnArray[i+1]===OPS.setFont&&fnArray[i+2]===OPS.setTextMatrix&&fnArray[i+3]===OPS.showText&&fnArray[i+4]===OPS.endText&&argsArray[i+1][0]===firstSetFontArg0&&argsArray[i+1][1]===firstSetFontArg1;)i+=5;var count=Math.min((i-iFirstBeginText)/5,MAX_CHARS_IN_BLOCK);if(MIN_CHARS_IN_BLOCK>count)return i;var iFirst=iFirstBeginText;iFirstBeginText>=4&&fnArray[iFirstBeginText-4]===fnArray[iFirstSetFont]&&fnArray[iFirstBeginText-3]===fnArray[iFirstSetTextMatrix]&&fnArray[iFirstBeginText-2]===fnArray[iFirstShowText]&&fnArray[iFirstBeginText-1]===fnArray[iFirstEndText]&&argsArray[iFirstBeginText-4][0]===firstSetFontArg0&&argsArray[iFirstBeginText-4][1]===firstSetFontArg1&&(count++,iFirst-=5);for(var iEndText=iFirst+4,q=1;count>q;q++)fnArray.splice(iEndText,3),argsArray.splice(iEndText,3),iEndText+=2;return iEndText+1}),QueueOptimizer.prototype={optimize:function(queue){for(var state,fnArray=queue.fnArray,argsArray=queue.argsArray,context={iCurr:0,fnArray:fnArray,argsArray:argsArray},i=0,ii=fnArray.length;ii>i;)state=(state||InitialState)[fnArray[i]],"function"==typeof state?(context.iCurr=i,i=state(context),state=void 0,ii=context.fnArray.length):i++}},QueueOptimizer}(),BUILT_IN_CMAPS=["Adobe-GB1-UCS2","Adobe-CNS1-UCS2","Adobe-Japan1-UCS2","Adobe-Korea1-UCS2","78-EUC-H","78-EUC-V","78-H","78-RKSJ-H","78-RKSJ-V","78-V","78ms-RKSJ-H","78ms-RKSJ-V","83pv-RKSJ-H","90ms-RKSJ-H","90ms-RKSJ-V","90msp-RKSJ-H","90msp-RKSJ-V","90pv-RKSJ-H","90pv-RKSJ-V","Add-H","Add-RKSJ-H","Add-RKSJ-V","Add-V","Adobe-CNS1-0","Adobe-CNS1-1","Adobe-CNS1-2","Adobe-CNS1-3","Adobe-CNS1-4","Adobe-CNS1-5","Adobe-CNS1-6","Adobe-GB1-0","Adobe-GB1-1","Adobe-GB1-2","Adobe-GB1-3","Adobe-GB1-4","Adobe-GB1-5","Adobe-Japan1-0","Adobe-Japan1-1","Adobe-Japan1-2","Adobe-Japan1-3","Adobe-Japan1-4","Adobe-Japan1-5","Adobe-Japan1-6","Adobe-Korea1-0","Adobe-Korea1-1","Adobe-Korea1-2","B5-H","B5-V","B5pc-H","B5pc-V","CNS-EUC-H","CNS-EUC-V","CNS1-H","CNS1-V","CNS2-H","CNS2-V","ETHK-B5-H","ETHK-B5-V","ETen-B5-H","ETen-B5-V","ETenms-B5-H","ETenms-B5-V","EUC-H","EUC-V","Ext-H","Ext-RKSJ-H","Ext-RKSJ-V","Ext-V","GB-EUC-H","GB-EUC-V","GB-H","GB-V","GBK-EUC-H","GBK-EUC-V","GBK2K-H","GBK2K-V","GBKp-EUC-H","GBKp-EUC-V","GBT-EUC-H","GBT-EUC-V","GBT-H","GBT-V","GBTpc-EUC-H","GBTpc-EUC-V","GBpc-EUC-H","GBpc-EUC-V","H","HKdla-B5-H","HKdla-B5-V","HKdlb-B5-H","HKdlb-B5-V","HKgccs-B5-H","HKgccs-B5-V","HKm314-B5-H","HKm314-B5-V","HKm471-B5-H","HKm471-B5-V","HKscs-B5-H","HKscs-B5-V","Hankaku","Hiragana","KSC-EUC-H","KSC-EUC-V","KSC-H","KSC-Johab-H","KSC-Johab-V","KSC-V","KSCms-UHC-H","KSCms-UHC-HW-H","KSCms-UHC-HW-V","KSCms-UHC-V","KSCpc-EUC-H","KSCpc-EUC-V","Katakana","NWP-H","NWP-V","RKSJ-H","RKSJ-V","Roman","UniCNS-UCS2-H","UniCNS-UCS2-V","UniCNS-UTF16-H","UniCNS-UTF16-V","UniCNS-UTF32-H","UniCNS-UTF32-V","UniCNS-UTF8-H","UniCNS-UTF8-V","UniGB-UCS2-H","UniGB-UCS2-V","UniGB-UTF16-H","UniGB-UTF16-V","UniGB-UTF32-H","UniGB-UTF32-V","UniGB-UTF8-H","UniGB-UTF8-V","UniJIS-UCS2-H","UniJIS-UCS2-HW-H","UniJIS-UCS2-HW-V","UniJIS-UCS2-V","UniJIS-UTF16-H","UniJIS-UTF16-V","UniJIS-UTF32-H","UniJIS-UTF32-V","UniJIS-UTF8-H","UniJIS-UTF8-V","UniJIS2004-UTF16-H","UniJIS2004-UTF16-V","UniJIS2004-UTF32-H","UniJIS2004-UTF32-V","UniJIS2004-UTF8-H","UniJIS2004-UTF8-V","UniJISPro-UCS2-HW-V","UniJISPro-UCS2-V","UniJISPro-UTF8-V","UniJISX0213-UTF32-H","UniJISX0213-UTF32-V","UniJISX02132004-UTF32-H","UniJISX02132004-UTF32-V","UniKS-UCS2-H","UniKS-UCS2-V","UniKS-UTF16-H","UniKS-UTF16-V","UniKS-UTF32-H","UniKS-UTF32-V","UniKS-UTF8-H","UniKS-UTF8-V","V","WP-Symbol"],CMap=function(){function CMap(builtInCMap){this.codespaceRanges=[[],[],[],[]],this.numCodespaceRanges=0,this._map=[],this.vertical=!1,this.useCMap=null,this.builtInCMap=builtInCMap}return CMap.prototype={addCodespaceRange:function(n,low,high){this.codespaceRanges[n-1].push(low,high),this.numCodespaceRanges++},mapCidRange:function(low,high,dstLow){for(;high>=low;)this._map[low++]=dstLow++},mapBfRange:function(low,high,dstLow){for(var lastByte=dstLow.length-1;high>=low;)this._map[low++]=dstLow,dstLow=dstLow.substr(0,lastByte)+String.fromCharCode(dstLow.charCodeAt(lastByte)+1)},mapBfRangeToArray:function(low,high,array){for(var i=0,ii=array.length;high>=low&&ii>i;)this._map[low]=array[i++],++low},mapOne:function(src,dst){this._map[src]=dst},lookup:function(code){return this._map[code]},contains:function(code){return void 0!==this._map[code]},forEach:function(callback){var i,map=this._map,length=map.length;if(65536>=length)for(i=0;length>i;i++)void 0!==map[i]&&callback(i,map[i]);else for(i in this._map)callback(i,map[i])},charCodeOf:function(value){return this._map.indexOf(value)},getMap:function(){return this._map},readCharCode:function(str,offset,out){for(var c=0,codespaceRanges=this.codespaceRanges,codespaceRangesLen=this.codespaceRanges.length,n=0;codespaceRangesLen>n;n++){c=(c<<8|str.charCodeAt(offset+n))>>>0;for(var codespaceRange=codespaceRanges[n],k=0,kk=codespaceRange.length;kk>k;){var low=codespaceRange[k++],high=codespaceRange[k++];if(c>=low&&high>=c)return out.charcode=c,void(out.length=n+1)}}out.charcode=0,out.length=1}},CMap}(),IdentityCMap=function(){function IdentityCMap(vertical,n){CMap.call(this),this.vertical=vertical,this.addCodespaceRange(n,0,65535)}return Util.inherit(IdentityCMap,CMap,{}),IdentityCMap.prototype={addCodespaceRange:CMap.prototype.addCodespaceRange,mapCidRange:function(){error("should not call mapCidRange")},mapBfRange:function(){error("should not call mapBfRange")},mapBfRangeToArray:function(){error("should not call mapBfRangeToArray")},mapOne:function(){error("should not call mapCidOne")},lookup:function(code){return isInt(code)&&65535>=code?code:void 0},contains:function(code){return isInt(code)&&65535>=code},forEach:function(callback){for(var i=0;65535>=i;i++)callback(i,i)},charCodeOf:function(value){return isInt(value)&&65535>=value?value:-1},getMap:function(){for(var map=new Array(65536),i=0;65535>=i;i++)map[i]=i;return map},readCharCode:CMap.prototype.readCharCode},IdentityCMap}(),BinaryCMapReader=function(){function fetchBinaryData(url){var nonBinaryRequest=PDFJS.disableWorker,request=new XMLHttpRequest;if(request.open("GET",url,!1),!nonBinaryRequest)try{request.responseType="arraybuffer",nonBinaryRequest="arraybuffer"!==request.responseType}catch(e){nonBinaryRequest=!0}if(nonBinaryRequest&&request.overrideMimeType&&request.overrideMimeType("text/plain; charset=x-user-defined"),request.send(null),(nonBinaryRequest?request.responseText:request.response)||error("Unable to get binary cMap at: "+url),nonBinaryRequest){var data=Array.prototype.map.call(request.responseText,function(ch){return 255&ch.charCodeAt(0)});return new Uint8Array(data)}return new Uint8Array(request.response)}function hexToInt(a,size){for(var n=0,i=0;size>=i;i++)n=n<<8|a[i];return n>>>0}function hexToStr(a,size){return 1===size?String.fromCharCode(a[0],a[1]):3===size?String.fromCharCode(a[0],a[1],a[2],a[3]):String.fromCharCode.apply(null,a.subarray(0,size+1))}function addHex(a,b,size){for(var c=0,i=size;i>=0;i--)c+=a[i]+b[i],a[i]=255&c,c>>=8}function incHex(a,size){for(var c=1,i=size;i>=0&&c>0;i--)c+=a[i],a[i]=255&c,c>>=8}function BinaryCMapStream(data){this.buffer=data,this.pos=0,this.end=data.length,this.tmpBuf=new Uint8Array(MAX_ENCODED_NUM_SIZE)}function processBinaryCMap(url,cMap,extend){var data=fetchBinaryData(url),stream=new BinaryCMapStream(data),header=stream.readByte();cMap.vertical=!!(1&header);for(var code,b,useCMap=null,start=new Uint8Array(MAX_NUM_SIZE),end=new Uint8Array(MAX_NUM_SIZE),char=new Uint8Array(MAX_NUM_SIZE),charCode=new Uint8Array(MAX_NUM_SIZE),tmp=new Uint8Array(MAX_NUM_SIZE);(b=stream.readByte())>=0;){var type=b>>5;if(7!==type){var sequence=!!(16&b),dataSize=15&b;assert(MAX_NUM_SIZE>=dataSize+1);var i,ucs2DataSize=1,subitemsCount=stream.readNumber();switch(type){case 0:for(stream.readHex(start,dataSize),stream.readHexNumber(end,dataSize),addHex(end,start,dataSize),cMap.addCodespaceRange(dataSize+1,hexToInt(start,dataSize),hexToInt(end,dataSize)),i=1;subitemsCount>i;i++)incHex(end,dataSize),stream.readHexNumber(start,dataSize),addHex(start,end,dataSize),stream.readHexNumber(end,dataSize),addHex(end,start,dataSize),cMap.addCodespaceRange(dataSize+1,hexToInt(start,dataSize),hexToInt(end,dataSize));break;case 1:for(stream.readHex(start,dataSize),stream.readHexNumber(end,dataSize),addHex(end,start,dataSize),code=stream.readNumber(),i=1;subitemsCount>i;i++)incHex(end,dataSize),stream.readHexNumber(start,dataSize),addHex(start,end,dataSize),stream.readHexNumber(end,dataSize),addHex(end,start,dataSize),code=stream.readNumber();break;case 2:for(stream.readHex(char,dataSize),code=stream.readNumber(),cMap.mapOne(hexToInt(char,dataSize),code),i=1;subitemsCount>i;i++)incHex(char,dataSize),sequence||(stream.readHexNumber(tmp,dataSize),addHex(char,tmp,dataSize)),code=stream.readSigned()+(code+1),cMap.mapOne(hexToInt(char,dataSize),code);break;case 3:for(stream.readHex(start,dataSize),stream.readHexNumber(end,dataSize),addHex(end,start,dataSize),code=stream.readNumber(),cMap.mapCidRange(hexToInt(start,dataSize),hexToInt(end,dataSize),code),i=1;subitemsCount>i;i++)incHex(end,dataSize),sequence?start.set(end):(stream.readHexNumber(start,dataSize),addHex(start,end,dataSize)),stream.readHexNumber(end,dataSize),addHex(end,start,dataSize),code=stream.readNumber(),cMap.mapCidRange(hexToInt(start,dataSize),hexToInt(end,dataSize),code);break;case 4:for(stream.readHex(char,ucs2DataSize),stream.readHex(charCode,dataSize),cMap.mapOne(hexToInt(char,ucs2DataSize),hexToStr(charCode,dataSize)),i=1;subitemsCount>i;i++)incHex(char,ucs2DataSize),sequence||(stream.readHexNumber(tmp,ucs2DataSize),addHex(char,tmp,ucs2DataSize)),incHex(charCode,dataSize),stream.readHexSigned(tmp,dataSize),addHex(charCode,tmp,dataSize),cMap.mapOne(hexToInt(char,ucs2DataSize),hexToStr(charCode,dataSize));break;case 5:for(stream.readHex(start,ucs2DataSize),stream.readHexNumber(end,ucs2DataSize),addHex(end,start,ucs2DataSize),stream.readHex(charCode,dataSize),cMap.mapBfRange(hexToInt(start,ucs2DataSize),hexToInt(end,ucs2DataSize),hexToStr(charCode,dataSize)),i=1;subitemsCount>i;i++)incHex(end,ucs2DataSize),sequence?start.set(end):(stream.readHexNumber(start,ucs2DataSize),addHex(start,end,ucs2DataSize)),stream.readHexNumber(end,ucs2DataSize),addHex(end,start,ucs2DataSize),stream.readHex(charCode,dataSize),cMap.mapBfRange(hexToInt(start,ucs2DataSize),hexToInt(end,ucs2DataSize),hexToStr(charCode,dataSize));break;default:error("Unknown type: "+type)}}else switch(31&b){case 0:stream.readString();break;case 1:useCMap=stream.readString()}}return useCMap&&extend(useCMap),cMap}function BinaryCMapReader(){}var MAX_NUM_SIZE=16,MAX_ENCODED_NUM_SIZE=19;return BinaryCMapStream.prototype={readByte:function(){return this.pos>=this.end?-1:this.buffer[this.pos++]},readNumber:function(){var last,n=0;do{var b=this.readByte();0>b&&error("unexpected EOF in bcmap"),last=!(128&b),n=n<<7|127&b}while(!last);return n},readSigned:function(){var n=this.readNumber();return 1&n?~(n>>>1):n>>>1},readHex:function(num,size){num.set(this.buffer.subarray(this.pos,this.pos+size+1)),this.pos+=size+1},readHexNumber:function(num,size){var last,stack=this.tmpBuf,sp=0;do{var b=this.readByte();0>b&&error("unexpected EOF in bcmap"),last=!(128&b),stack[sp++]=127&b}while(!last);for(var i=size,buffer=0,bufferSize=0;i>=0;){for(;8>bufferSize&&stack.length>0;)buffer=stack[--sp]<<bufferSize|buffer,bufferSize+=7;num[i]=255&buffer,i--,buffer>>=8,bufferSize-=8}},readHexSigned:function(num,size){this.readHexNumber(num,size);for(var sign=1&num[size]?255:0,c=0,i=0;size>=i;i++)c=(1&c)<<8|num[i],num[i]=c>>1^sign},readString:function(){for(var len=this.readNumber(),s="",i=0;len>i;i++)s+=String.fromCharCode(this.readNumber());return s}},BinaryCMapReader.prototype={read:processBinaryCMap},BinaryCMapReader}(),CMapFactory=function(){function strToInt(str){for(var a=0,i=0;i<str.length;i++)a=a<<8|str.charCodeAt(i);return a>>>0}function expectString(obj){isString(obj)||error("Malformed CMap: expected string.")}function expectInt(obj){isInt(obj)||error("Malformed CMap: expected int.")}function parseBfChar(cMap,lexer){for(;;){var obj=lexer.getObj();if(isEOF(obj))break;if(isCmd(obj,"endbfchar"))return;expectString(obj);var src=strToInt(obj);obj=lexer.getObj(),expectString(obj);var dst=obj;cMap.mapOne(src,dst)}}function parseBfRange(cMap,lexer){for(;;){var obj=lexer.getObj();if(isEOF(obj))break;if(isCmd(obj,"endbfrange"))return;expectString(obj);var low=strToInt(obj);obj=lexer.getObj(),expectString(obj);var high=strToInt(obj);if(obj=lexer.getObj(),isInt(obj)||isString(obj)){var dstLow=isInt(obj)?String.fromCharCode(obj):obj;cMap.mapBfRange(low,high,dstLow)}else{if(!isCmd(obj,"["))break;obj=lexer.getObj();for(var array=[];!isCmd(obj,"]")&&!isEOF(obj);)array.push(obj),obj=lexer.getObj();cMap.mapBfRangeToArray(low,high,array)}}error("Invalid bf range.")}function parseCidChar(cMap,lexer){for(;;){var obj=lexer.getObj();if(isEOF(obj))break;if(isCmd(obj,"endcidchar"))return;expectString(obj);var src=strToInt(obj);obj=lexer.getObj(),expectInt(obj);var dst=obj;cMap.mapOne(src,dst)}}function parseCidRange(cMap,lexer){for(;;){var obj=lexer.getObj();if(isEOF(obj))break;if(isCmd(obj,"endcidrange"))return;expectString(obj);var low=strToInt(obj);obj=lexer.getObj(),expectString(obj);
var high=strToInt(obj);obj=lexer.getObj(),expectInt(obj);var dstLow=obj;cMap.mapCidRange(low,high,dstLow)}}function parseCodespaceRange(cMap,lexer){for(;;){var obj=lexer.getObj();if(isEOF(obj))break;if(isCmd(obj,"endcodespacerange"))return;if(!isString(obj))break;var low=strToInt(obj);if(obj=lexer.getObj(),!isString(obj))break;var high=strToInt(obj);cMap.addCodespaceRange(obj.length,low,high)}error("Invalid codespace range.")}function parseWMode(cMap,lexer){var obj=lexer.getObj();isInt(obj)&&(cMap.vertical=!!obj)}function parseCMap(cMap,lexer,builtInCMapParams,useCMap){var previous,embededUseCMap;objLoop:for(;;){var obj=lexer.getObj();if(isEOF(obj))break;if(isName(obj))"WMode"===obj.name&&parseWMode(cMap,lexer),previous=obj;else if(isCmd(obj))switch(obj.cmd){case"endcmap":break objLoop;case"usecmap":isName(previous)&&(embededUseCMap=previous.name);break;case"begincodespacerange":parseCodespaceRange(cMap,lexer);break;case"beginbfchar":parseBfChar(cMap,lexer);break;case"begincidchar":parseCidChar(cMap,lexer);break;case"beginbfrange":parseBfRange(cMap,lexer);break;case"begincidrange":parseCidRange(cMap,lexer)}}!useCMap&&embededUseCMap&&(useCMap=embededUseCMap),useCMap&&extendCMap(cMap,builtInCMapParams,useCMap)}function extendCMap(cMap,builtInCMapParams,useCMap){if(cMap.useCMap=createBuiltInCMap(useCMap,builtInCMapParams),0===cMap.numCodespaceRanges){for(var useCodespaceRanges=cMap.useCMap.codespaceRanges,i=0;i<useCodespaceRanges.length;i++)cMap.codespaceRanges[i]=useCodespaceRanges[i].slice();cMap.numCodespaceRanges=cMap.useCMap.numCodespaceRanges}cMap.useCMap.forEach(function(key){cMap.contains(key)||cMap.mapOne(key,cMap.useCMap.lookup(key))})}function parseBinaryCMap(name,builtInCMapParams){var url=builtInCMapParams.url+name+".bcmap",cMap=new CMap(!0);return(new BinaryCMapReader).read(url,cMap,function(useCMap){extendCMap(cMap,builtInCMapParams,useCMap)}),cMap}function createBuiltInCMap(name,builtInCMapParams){if("Identity-H"===name)return new IdentityCMap(!1,2);if("Identity-V"===name)return new IdentityCMap(!0,2);if(-1===BUILT_IN_CMAPS.indexOf(name)&&error("Unknown cMap name: "+name),assert(builtInCMapParams,"built-in cMap parameters are not provided"),builtInCMapParams.packed)return parseBinaryCMap(name,builtInCMapParams);var request=new XMLHttpRequest,url=builtInCMapParams.url+name;request.open("GET",url,!1),request.send(null),request.responseText||error("Unable to get cMap at: "+url);var cMap=new CMap(!0),lexer=new Lexer(new StringStream(request.responseText));return parseCMap(cMap,lexer,builtInCMapParams,null),cMap}return{create:function(encoding,builtInCMapParams,useCMap){if(isName(encoding))return createBuiltInCMap(encoding.name,builtInCMapParams);if(isStream(encoding)){var cMap=new CMap,lexer=new Lexer(encoding);try{parseCMap(cMap,lexer,builtInCMapParams,useCMap)}catch(e){warn("Invalid CMap data. "+e)}return cMap}error("Encoding required.")}}}(),PRIVATE_USE_OFFSET_START=57344,PRIVATE_USE_OFFSET_END=63743,SKIP_PRIVATE_USE_RANGE_F000_TO_F01F=!1,PDF_GLYPH_SPACE_UNITS=1e3,HINTING_ENABLED=!1,SEAC_ANALYSIS_ENABLED=!1,FontFlags={FixedPitch:1,Serif:2,Symbolic:4,Script:8,Nonsymbolic:32,Italic:64,AllCap:65536,SmallCap:131072,ForceBold:262144},Encodings={ExpertEncoding:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclamsmall","Hungarumlautsmall","","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","questionsmall","","asuperior","bsuperior","centsuperior","dsuperior","esuperior","","","isuperior","","","lsuperior","msuperior","nsuperior","osuperior","","","rsuperior","ssuperior","tsuperior","","ff","fi","fl","ffi","ffl","parenleftinferior","","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","exclamdownsmall","centoldstyle","Lslashsmall","","","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","","Dotaccentsmall","","","Macronsmall","","","figuredash","hypheninferior","","","Ogoneksmall","Ringsmall","Cedillasmall","","","","onequarter","onehalf","threequarters","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","","","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall"],MacExpertEncoding:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclamsmall","Hungarumlautsmall","centoldstyle","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","","threequartersemdash","","questionsmall","","","","","Ethsmall","","","onequarter","onehalf","threequarters","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","","","","","","","ff","fi","fl","ffi","ffl","parenleftinferior","","parenrightinferior","Circumflexsmall","hypheninferior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","","","asuperior","centsuperior","","","","","Aacutesmall","Agravesmall","Acircumflexsmall","Adieresissmall","Atildesmall","Aringsmall","Ccedillasmall","Eacutesmall","Egravesmall","Ecircumflexsmall","Edieresissmall","Iacutesmall","Igravesmall","Icircumflexsmall","Idieresissmall","Ntildesmall","Oacutesmall","Ogravesmall","Ocircumflexsmall","Odieresissmall","Otildesmall","Uacutesmall","Ugravesmall","Ucircumflexsmall","Udieresissmall","","eightsuperior","fourinferior","threeinferior","sixinferior","eightinferior","seveninferior","Scaronsmall","","centinferior","twoinferior","","Dieresissmall","","Caronsmall","osuperior","fiveinferior","","commainferior","periodinferior","Yacutesmall","","dollarinferior","","Thornsmall","","nineinferior","zeroinferior","Zcaronsmall","AEsmall","Oslashsmall","questiondownsmall","oneinferior","Lslashsmall","","","","","","","Cedillasmall","","","","","","OEsmall","figuredash","hyphensuperior","","","","","exclamdownsmall","","Ydieresissmall","","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","ninesuperior","zerosuperior","","esuperior","rsuperior","tsuperior","","","isuperior","ssuperior","dsuperior","","","","","","lsuperior","Ogoneksmall","Brevesmall","Macronsmall","bsuperior","nsuperior","msuperior","commasuperior","periodsuperior","Dotaccentsmall","Ringsmall"],MacRomanEncoding:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","","Adieresis","Aring","Ccedilla","Eacute","Ntilde","Odieresis","Udieresis","aacute","agrave","acircumflex","adieresis","atilde","aring","ccedilla","eacute","egrave","ecircumflex","edieresis","iacute","igrave","icircumflex","idieresis","ntilde","oacute","ograve","ocircumflex","odieresis","otilde","uacute","ugrave","ucircumflex","udieresis","dagger","degree","cent","sterling","section","bullet","paragraph","germandbls","registered","copyright","trademark","acute","dieresis","notequal","AE","Oslash","infinity","plusminus","lessequal","greaterequal","yen","mu","partialdiff","summation","product","pi","integral","ordfeminine","ordmasculine","Omega","ae","oslash","questiondown","exclamdown","logicalnot","radical","florin","approxequal","Delta","guillemotleft","guillemotright","ellipsis","space","Agrave","Atilde","Otilde","OE","oe","endash","emdash","quotedblleft","quotedblright","quoteleft","quoteright","divide","lozenge","ydieresis","Ydieresis","fraction","currency","guilsinglleft","guilsinglright","fi","fl","daggerdbl","periodcentered","quotesinglbase","quotedblbase","perthousand","Acircumflex","Ecircumflex","Aacute","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Oacute","Ocircumflex","apple","Ograve","Uacute","Ucircumflex","Ugrave","dotlessi","circumflex","tilde","macron","breve","dotaccent","ring","cedilla","hungarumlaut","ogonek","caron"],StandardEncoding:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","","endash","dagger","daggerdbl","periodcentered","","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","","questiondown","","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","","ring","cedilla","","hungarumlaut","ogonek","caron","emdash","","","","","","","","","","","","","","","","","AE","","ordfeminine","","","","","Lslash","Oslash","OE","ordmasculine","","","","","","ae","","","","dotlessi","","","lslash","oslash","oe","germandbls"],WinAnsiEncoding:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","bullet","Euro","bullet","quotesinglbase","florin","quotedblbase","ellipsis","dagger","daggerdbl","circumflex","perthousand","Scaron","guilsinglleft","OE","bullet","Zcaron","bullet","bullet","quoteleft","quoteright","quotedblleft","quotedblright","bullet","endash","emdash","tilde","trademark","scaron","guilsinglright","oe","bullet","zcaron","Ydieresis","space","exclamdown","cent","sterling","currency","yen","brokenbar","section","dieresis","copyright","ordfeminine","guillemotleft","logicalnot","hyphen","registered","macron","degree","plusminus","twosuperior","threesuperior","acute","mu","paragraph","periodcentered","cedilla","onesuperior","ordmasculine","guillemotright","onequarter","onehalf","threequarters","questiondown","Agrave","Aacute","Acircumflex","Atilde","Adieresis","Aring","AE","Ccedilla","Egrave","Eacute","Ecircumflex","Edieresis","Igrave","Iacute","Icircumflex","Idieresis","Eth","Ntilde","Ograve","Oacute","Ocircumflex","Otilde","Odieresis","multiply","Oslash","Ugrave","Uacute","Ucircumflex","Udieresis","Yacute","Thorn","germandbls","agrave","aacute","acircumflex","atilde","adieresis","aring","ae","ccedilla","egrave","eacute","ecircumflex","edieresis","igrave","iacute","icircumflex","idieresis","eth","ntilde","ograve","oacute","ocircumflex","otilde","odieresis","divide","oslash","ugrave","uacute","ucircumflex","udieresis","yacute","thorn","ydieresis"],SymbolSetEncoding:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","universal","numbersign","existential","percent","ampersand","suchthat","parenleft","parenright","asteriskmath","plus","comma","minus","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","congruent","Alpha","Beta","Chi","Delta","Epsilon","Phi","Gamma","Eta","Iota","theta1","Kappa","Lambda","Mu","Nu","Omicron","Pi","Theta","Rho","Sigma","Tau","Upsilon","sigma1","Omega","Xi","Psi","Zeta","bracketleft","therefore","bracketright","perpendicular","underscore","radicalex","alpha","beta","chi","delta","epsilon","phi","gamma","eta","iota","phi1","kappa","lambda","mu","nu","omicron","pi","theta","rho","sigma","tau","upsilon","omega1","omega","xi","psi","zeta","braceleft","bar","braceright","similar","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Euro","Upsilon1","minute","lessequal","fraction","infinity","florin","club","diamond","heart","spade","arrowboth","arrowleft","arrowup","arrowright","arrowdown","degree","plusminus","second","greaterequal","multiply","proportional","partialdiff","bullet","divide","notequal","equivalence","approxequal","ellipsis","arrowvertex","arrowhorizex","carriagereturn","aleph","Ifraktur","Rfraktur","weierstrass","circlemultiply","circleplus","emptyset","intersection","union","propersuperset","reflexsuperset","notsubset","propersubset","reflexsubset","element","notelement","angle","gradient","registerserif","copyrightserif","trademarkserif","product","radical","dotmath","logicalnot","logicaland","logicalor","arrowdblboth","arrowdblleft","arrowdblup","arrowdblright","arrowdbldown","lozenge","angleleft","registersans","copyrightsans","trademarksans","summation","parenlefttp","parenleftex","parenleftbt","bracketlefttp","bracketleftex","bracketleftbt","bracelefttp","braceleftmid","braceleftbt","braceex","","angleright","integral","integraltp","integralex","integralbt","parenrighttp","parenrightex","parenrightbt","bracketrighttp","bracketrightex","bracketrightbt","bracerighttp","bracerightmid","bracerightbt"],ZapfDingbatsEncoding:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","a1","a2","a202","a3","a4","a5","a119","a118","a117","a11","a12","a13","a14","a15","a16","a105","a17","a18","a19","a20","a21","a22","a23","a24","a25","a26","a27","a28","a6","a7","a8","a9","a10","a29","a30","a31","a32","a33","a34","a35","a36","a37","a38","a39","a40","a41","a42","a43","a44","a45","a46","a47","a48","a49","a50","a51","a52","a53","a54","a55","a56","a57","a58","a59","a60","a61","a62","a63","a64","a65","a66","a67","a68","a69","a70","a71","a72","a73","a74","a203","a75","a204","a76","a77","a78","a79","a81","a82","a83","a84","a97","a98","a99","a100","","a89","a90","a93","a94","a91","a92","a205","a85","a206","a86","a87","a88","a95","a96","","","","","","","","","","","","","","","","","","","","a101","a102","a103","a104","a106","a107","a108","a112","a111","a110","a109","a120","a121","a122","a123","a124","a125","a126","a127","a128","a129","a130","a131","a132","a133","a134","a135","a136","a137","a138","a139","a140","a141","a142","a143","a144","a145","a146","a147","a148","a149","a150","a151","a152","a153","a154","a155","a156","a157","a158","a159","a160","a161","a163","a164","a196","a165","a192","a166","a167","a168","a169","a170","a171","a172","a173","a162","a174","a175","a176","a177","a178","a179","a193","a180","a199","a181","a200","a182","","a201","a183","a184","a197","a185","a194","a198","a186","a195","a187","a188","a189","a190","a191"]},stdFontMap={ArialNarrow:"Helvetica","ArialNarrow-Bold":"Helvetica-Bold","ArialNarrow-BoldItalic":"Helvetica-BoldOblique","ArialNarrow-Italic":"Helvetica-Oblique",ArialBlack:"Helvetica","ArialBlack-Bold":"Helvetica-Bold","ArialBlack-BoldItalic":"Helvetica-BoldOblique","ArialBlack-Italic":"Helvetica-Oblique",Arial:"Helvetica","Arial-Bold":"Helvetica-Bold","Arial-BoldItalic":"Helvetica-BoldOblique","Arial-Italic":"Helvetica-Oblique","Arial-BoldItalicMT":"Helvetica-BoldOblique","Arial-BoldMT":"Helvetica-Bold","Arial-ItalicMT":"Helvetica-Oblique",ArialMT:"Helvetica","Courier-Bold":"Courier-Bold","Courier-BoldItalic":"Courier-BoldOblique","Courier-Italic":"Courier-Oblique",CourierNew:"Courier","CourierNew-Bold":"Courier-Bold","CourierNew-BoldItalic":"Courier-BoldOblique","CourierNew-Italic":"Courier-Oblique","CourierNewPS-BoldItalicMT":"Courier-BoldOblique","CourierNewPS-BoldMT":"Courier-Bold","CourierNewPS-ItalicMT":"Courier-Oblique",CourierNewPSMT:"Courier","Helvetica-Bold":"Helvetica-Bold","Helvetica-BoldItalic":"Helvetica-BoldOblique","Helvetica-Italic":"Helvetica-Oblique","Symbol-Bold":"Symbol","Symbol-BoldItalic":"Symbol","Symbol-Italic":"Symbol",TimesNewRoman:"Times-Roman","TimesNewRoman-Bold":"Times-Bold","TimesNewRoman-BoldItalic":"Times-BoldItalic","TimesNewRoman-Italic":"Times-Italic",TimesNewRomanPS:"Times-Roman","TimesNewRomanPS-Bold":"Times-Bold","TimesNewRomanPS-BoldItalic":"Times-BoldItalic","TimesNewRomanPS-BoldItalicMT":"Times-BoldItalic","TimesNewRomanPS-BoldMT":"Times-Bold","TimesNewRomanPS-Italic":"Times-Italic","TimesNewRomanPS-ItalicMT":"Times-Italic",TimesNewRomanPSMT:"Times-Roman","TimesNewRomanPSMT-Bold":"Times-Bold","TimesNewRomanPSMT-BoldItalic":"Times-BoldItalic","TimesNewRomanPSMT-Italic":"Times-Italic"},nonStdFontMap={ComicSansMS:"Comic Sans MS","ComicSansMS-Bold":"Comic Sans MS-Bold","ComicSansMS-BoldItalic":"Comic Sans MS-BoldItalic","ComicSansMS-Italic":"Comic Sans MS-Italic",LucidaConsole:"Courier","LucidaConsole-Bold":"Courier-Bold","LucidaConsole-BoldItalic":"Courier-BoldOblique","LucidaConsole-Italic":"Courier-Oblique","MS-Gothic":"MS Gothic","MS-Gothic-Bold":"MS Gothic-Bold","MS-Gothic-BoldItalic":"MS Gothic-BoldItalic","MS-Gothic-Italic":"MS Gothic-Italic","MS-Mincho":"MS Mincho","MS-Mincho-Bold":"MS Mincho-Bold","MS-Mincho-BoldItalic":"MS Mincho-BoldItalic","MS-Mincho-Italic":"MS Mincho-Italic","MS-PGothic":"MS PGothic","MS-PGothic-Bold":"MS PGothic-Bold","MS-PGothic-BoldItalic":"MS PGothic-BoldItalic","MS-PGothic-Italic":"MS PGothic-Italic","MS-PMincho":"MS PMincho","MS-PMincho-Bold":"MS PMincho-Bold","MS-PMincho-BoldItalic":"MS PMincho-BoldItalic","MS-PMincho-Italic":"MS PMincho-Italic"},serifFonts={"Adobe Jenson":!0,"Adobe Text":!0,Albertus:!0,Aldus:!0,Alexandria:!0,Algerian:!0,"American Typewriter":!0,Antiqua:!0,Apex:!0,Arno:!0,Aster:!0,Aurora:!0,Baskerville:!0,Bell:!0,Bembo:!0,"Bembo Schoolbook":!0,Benguiat:!0,"Berkeley Old Style":!0,"Bernhard Modern":!0,"Berthold City":!0,Bodoni:!0,"Bauer Bodoni":!0,"Book Antiqua":!0,Bookman:!0,"Bordeaux Roman":!0,"Californian FB":!0,Calisto:!0,Calvert:!0,Capitals:!0,Cambria:!0,Cartier:!0,Caslon:!0,Catull:!0,Centaur:!0,"Century Old Style":!0,"Century Schoolbook":!0,Chaparral:!0,"Charis SIL":!0,Cheltenham:!0,"Cholla Slab":!0,Clarendon:!0,Clearface:!0,Cochin:!0,Colonna:!0,"Computer Modern":!0,"Concrete Roman":!0,Constantia:!0,"Cooper Black":!0,Corona:!0,Ecotype:!0,Egyptienne:!0,Elephant:!0,Excelsior:!0,Fairfield:!0,"FF Scala":!0,Folkard:!0,Footlight:!0,FreeSerif:!0,"Friz Quadrata":!0,Garamond:!0,Gentium:!0,Georgia:!0,Gloucester:!0,"Goudy Old Style":!0,"Goudy Schoolbook":!0,"Goudy Pro Font":!0,Granjon:!0,"Guardian Egyptian":!0,Heather:!0,Hercules:!0,"High Tower Text":!0,Hiroshige:!0,"Hoefler Text":!0,"Humana Serif":!0,Imprint:!0,"Ionic No. 5":!0,Janson:!0,Joanna:!0,Korinna:!0,Lexicon:!0,"Liberation Serif":!0,"Linux Libertine":!0,Literaturnaya:!0,Lucida:!0,"Lucida Bright":!0,Melior:!0,Memphis:!0,Miller:!0,Minion:!0,Modern:!0,"Mona Lisa":!0,"Mrs Eaves":!0,"MS Serif":!0,"Museo Slab":!0,"New York":!0,"Nimbus Roman":!0,"NPS Rawlinson Roadway":!0,Palatino:!0,Perpetua:!0,Plantin:!0,"Plantin Schoolbook":!0,Playbill:!0,"Poor Richard":!0,"Rawlinson Roadway":!0,Renault:!0,Requiem:!0,Rockwell:!0,Roman:!0,"Rotis Serif":!0,Sabon:!0,Scala:!0,Seagull:!0,Sistina:!0,Souvenir:!0,STIX:!0,"Stone Informal":!0,"Stone Serif":!0,Sylfaen:!0,Times:!0,Trajan:!0,"Trinité":!0,"Trump Mediaeval":!0,Utopia:!0,"Vale Type":!0,"Bitstream Vera":!0,"Vera Serif":!0,Versailles:!0,Wanted:!0,Weiss:!0,"Wide Latin":!0,Windsor:!0,XITS:!0},symbolsFonts={Dingbats:!0,Symbol:!0,ZapfDingbats:!0},GlyphMapForStandardFonts={2:10,3:32,4:33,5:34,6:35,7:36,8:37,9:38,10:39,11:40,12:41,13:42,14:43,15:44,16:45,17:46,18:47,19:48,20:49,21:50,22:51,23:52,24:53,25:54,26:55,27:56,28:57,29:58,30:894,31:60,32:61,33:62,34:63,35:64,36:65,37:66,38:67,39:68,40:69,41:70,42:71,43:72,44:73,45:74,46:75,47:76,48:77,49:78,50:79,51:80,52:81,53:82,54:83,55:84,56:85,57:86,58:87,59:88,60:89,61:90,62:91,63:92,64:93,65:94,66:95,67:96,68:97,69:98,70:99,71:100,72:101,73:102,74:103,75:104,76:105,77:106,78:107,79:108,80:109,81:110,82:111,83:112,84:113,85:114,86:115,87:116,88:117,89:118,90:119,91:120,92:121,93:122,94:123,95:124,96:125,97:126,98:196,99:197,100:199,101:201,102:209,103:214,104:220,105:225,106:224,107:226,108:228,109:227,110:229,111:231,112:233,113:232,114:234,115:235,116:237,117:236,118:238,119:239,120:241,121:243,122:242,123:244,124:246,125:245,126:250,127:249,128:251,129:252,130:8224,131:176,132:162,133:163,134:167,135:8226,136:182,137:223,138:174,139:169,140:8482,141:180,142:168,143:8800,144:198,145:216,146:8734,147:177,148:8804,149:8805,150:165,151:181,152:8706,153:8721,154:8719,156:8747,157:170,158:186,159:8486,160:230,161:248,162:191,163:161,164:172,165:8730,166:402,167:8776,168:8710,169:171,170:187,171:8230,210:218,223:711,224:321,225:322,227:353,229:382,234:253,252:263,253:268,254:269,258:258,260:260,261:261,265:280,266:281,268:283,269:313,275:323,276:324,278:328,284:345,285:346,286:347,292:367,295:377,296:378,298:380,305:963,306:964,307:966,308:8215,309:8252,310:8319,311:8359,312:8592,313:8593,337:9552,493:1039,494:1040,705:1524,706:8362,710:64288,711:64298,759:1617,761:1776,763:1778,775:1652,777:1764,778:1780,779:1781,780:1782,782:771,783:64726,786:8363,788:8532,790:768,791:769,792:768,795:803,797:64336,798:64337,799:64342,800:64343,801:64344,802:64345,803:64362,804:64363,805:64364,2424:7821,2425:7822,2426:7823,2427:7824,2428:7825,2429:7826,2430:7827,2433:7682,2678:8045,2679:8046,2830:1552,2838:686,2840:751,2842:753,2843:754,2844:755,2846:757,2856:767,2857:848,2858:849,2862:853,2863:854,2864:855,2865:861,2866:862,2906:7460,2908:7462,2909:7463,2910:7464,2912:7466,2913:7467,2914:7468,2916:7470,2917:7471,2918:7472,2920:7474,2921:7475,2922:7476,2924:7478,2925:7479,2926:7480,2928:7482,2929:7483,2930:7484,2932:7486,2933:7487,2934:7488,2936:7490,2937:7491,2938:7492,2940:7494,2941:7495,2942:7496,2944:7498,2946:7500,2948:7502,2950:7504,2951:7505,2952:7506,2954:7508,2955:7509,2956:7510,2958:7512,2959:7513,2960:7514,2962:7516,2963:7517,2964:7518,2966:7520,2967:7521,2968:7522,2970:7524,2971:7525,2972:7526,2974:7528,2975:7529,2976:7530,2978:1537,2979:1538,2980:1539,2982:1549,2983:1551,2984:1552,2986:1554,2987:1555,2988:1556,2990:1623,2991:1624,2995:1775,2999:1791,3002:64290,3003:64291,3004:64292,3006:64294,3007:64295,3008:64296,3011:1900,3014:8223,3015:8244,3017:7532,3018:7533,3019:7534,3075:7590,3076:7591,3079:7594,3080:7595,3083:7598,3084:7599,3087:7602,3088:7603,3091:7606,3092:7607,3095:7610,3096:7611,3099:7614,3100:7615,3103:7618,3104:7619,3107:8337,3108:8338,3116:1884,3119:1885,3120:1885,3123:1886,3124:1886,3127:1887,3128:1887,3131:1888,3132:1888,3135:1889,3136:1889,3139:1890,3140:1890,3143:1891,3144:1891,3147:1892,3148:1892,3153:580,3154:581,3157:584,3158:585,3161:588,3162:589,3165:891,3166:892,3169:1274,3170:1275,3173:1278,3174:1279,3181:7622,3182:7623,3282:11799,3316:578,3379:42785,3393:1159,3416:8377},SpecialPUASymbols={63721:169,63193:169,63720:174,63194:174,63722:8482,63195:8482,63729:9127,63730:9128,63731:9129,63740:9131,63741:9132,63742:9133,63726:9121,63727:9122,63728:9123,63737:9124,63738:9125,63739:9126,63723:9115,63724:9116,63725:9117,63734:9118,63735:9119,63736:9120},UnicodeRanges=[{begin:0,end:127},{begin:128,end:255},{begin:256,end:383},{begin:384,end:591},{begin:592,end:687},{begin:688,end:767},{begin:768,end:879},{begin:880,end:1023},{begin:11392,end:11519},{begin:1024,end:1279},{begin:1328,end:1423},{begin:1424,end:1535},{begin:42240,end:42559},{begin:1536,end:1791},{begin:1984,end:2047},{begin:2304,end:2431},{begin:2432,end:2559},{begin:2560,end:2687},{begin:2688,end:2815},{begin:2816,end:2943},{begin:2944,end:3071},{begin:3072,end:3199},{begin:3200,end:3327},{begin:3328,end:3455},{begin:3584,end:3711},{begin:3712,end:3839},{begin:4256,end:4351},{begin:6912,end:7039},{begin:4352,end:4607},{begin:7680,end:7935},{begin:7936,end:8191},{begin:8192,end:8303},{begin:8304,end:8351},{begin:8352,end:8399},{begin:8400,end:8447},{begin:8448,end:8527},{begin:8528,end:8591},{begin:8592,end:8703},{begin:8704,end:8959},{begin:8960,end:9215},{begin:9216,end:9279},{begin:9280,end:9311},{begin:9312,end:9471},{begin:9472,end:9599},{begin:9600,end:9631},{begin:9632,end:9727},{begin:9728,end:9983},{begin:9984,end:10175},{begin:12288,end:12351},{begin:12352,end:12447},{begin:12448,end:12543},{begin:12544,end:12591},{begin:12592,end:12687},{begin:43072,end:43135},{begin:12800,end:13055},{begin:13056,end:13311},{begin:44032,end:55215},{begin:55296,end:57343},{begin:67840,end:67871},{begin:19968,end:40959},{begin:57344,end:63743},{begin:12736,end:12783},{begin:64256,end:64335},{begin:64336,end:65023},{begin:65056,end:65071},{begin:65040,end:65055},{begin:65104,end:65135},{begin:65136,end:65279},{begin:65280,end:65519},{begin:65520,end:65535},{begin:3840,end:4095},{begin:1792,end:1871},{begin:1920,end:1983},{begin:3456,end:3583},{begin:4096,end:4255},{begin:4608,end:4991},{begin:5024,end:5119},{begin:5120,end:5759},{begin:5760,end:5791},{begin:5792,end:5887},{begin:6016,end:6143},{begin:6144,end:6319},{begin:10240,end:10495},{begin:40960,end:42127},{begin:5888,end:5919},{begin:66304,end:66351},{begin:66352,end:66383},{begin:66560,end:66639},{begin:118784,end:119039},{begin:119808,end:120831},{begin:1044480,end:1048573},{begin:65024,end:65039},{begin:917504,end:917631},{begin:6400,end:6479},{begin:6480,end:6527},{begin:6528,end:6623},{begin:6656,end:6687},{begin:11264,end:11359},{begin:11568,end:11647},{begin:19904,end:19967},{begin:43008,end:43055},{begin:65536,end:65663},{begin:65856,end:65935},{begin:66432,end:66463},{begin:66464,end:66527},{begin:66640,end:66687},{begin:66688,end:66735},{begin:67584,end:67647},{begin:68096,end:68191},{begin:119552,end:119647},{begin:73728,end:74751},{begin:119648,end:119679},{begin:7040,end:7103},{begin:7168,end:7247},{begin:7248,end:7295},{begin:43136,end:43231},{begin:43264,end:43311},{begin:43312,end:43359},{begin:43520,end:43615},{begin:65936,end:65999},{begin:66e3,end:66047},{begin:66208,end:66271},{begin:127024,end:127135}],MacStandardGlyphOrdering=[".notdef",".null","nonmarkingreturn","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","Adieresis","Aring","Ccedilla","Eacute","Ntilde","Odieresis","Udieresis","aacute","agrave","acircumflex","adieresis","atilde","aring","ccedilla","eacute","egrave","ecircumflex","edieresis","iacute","igrave","icircumflex","idieresis","ntilde","oacute","ograve","ocircumflex","odieresis","otilde","uacute","ugrave","ucircumflex","udieresis","dagger","degree","cent","sterling","section","bullet","paragraph","germandbls","registered","copyright","trademark","acute","dieresis","notequal","AE","Oslash","infinity","plusminus","lessequal","greaterequal","yen","mu","partialdiff","summation","product","pi","integral","ordfeminine","ordmasculine","Omega","ae","oslash","questiondown","exclamdown","logicalnot","radical","florin","approxequal","Delta","guillemotleft","guillemotright","ellipsis","nonbreakingspace","Agrave","Atilde","Otilde","OE","oe","endash","emdash","quotedblleft","quotedblright","quoteleft","quoteright","divide","lozenge","ydieresis","Ydieresis","fraction","currency","guilsinglleft","guilsinglright","fi","fl","daggerdbl","periodcentered","quotesinglbase","quotedblbase","perthousand","Acircumflex","Ecircumflex","Aacute","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Oacute","Ocircumflex","apple","Ograve","Uacute","Ucircumflex","Ugrave","dotlessi","circumflex","tilde","macron","breve","dotaccent","ring","cedilla","hungarumlaut","ogonek","caron","Lslash","lslash","Scaron","scaron","Zcaron","zcaron","brokenbar","Eth","eth","Yacute","yacute","Thorn","thorn","minus","multiply","onesuperior","twosuperior","threesuperior","onehalf","onequarter","threequarters","franc","Gbreve","gbreve","Idotaccent","Scedilla","scedilla","Cacute","cacute","Ccaron","ccaron","dcroat"],NormalizedUnicodes={"¨":" ̈","¯":" ̄","´":" ́","µ":"μ","¸":" ̧","IJ":"IJ","ij":"ij","Ŀ":"L·","ŀ":"l·","ʼn":"ʼn","ſ":"s","DŽ":"DŽ","Dž":"Dž","dž":"dž","LJ":"LJ","Lj":"Lj","lj":"lj","NJ":"NJ","Nj":"Nj","nj":"nj","DZ":"DZ","Dz":"Dz","dz":"dz","˘":" ̆","˙":" ̇","˚":" ̊","˛":" ̨","˜":" ̃","˝":" ̋","ͺ":" ͅ","΄":" ́","ϐ":"β","ϑ":"θ","ϒ":"Υ","ϕ":"φ","ϖ":"π","ϰ":"κ","ϱ":"ρ","ϲ":"ς","ϴ":"Θ","ϵ":"ε","Ϲ":"Σ","և":"եւ","ٵ":"اٴ","ٶ":"وٴ","ٷ":"ۇٴ","ٸ":"يٴ","ำ":"ํา","ຳ":"ໍາ","ໜ":"ຫນ","ໝ":"ຫມ","ཷ":"ྲཱྀ","ཹ":"ླཱྀ","ẚ":"aʾ","᾽":" ̓","᾿":" ̓","῀":" ͂","῾":" ̔"," ":" "," ":" "," ":" "," ":" "," ":" "," ":" "," ":" "," ":" ","‗":" ̳","․":".","‥":"..","…":"...","″":"′′","‴":"′′′","‶":"‵‵","‷":"‵‵‵","‼":"!!","‾":" ̅","⁇":"??","⁈":"?!","⁉":"!?","⁗":"′′′′"," ":" ","₨":"Rs","℀":"a/c","℁":"a/s","℃":"°C","℅":"c/o","℆":"c/u","ℇ":"Ɛ","℉":"°F","№":"No","℡":"TEL","ℵ":"א","ℶ":"ב","ℷ":"ג","ℸ":"ד","℻":"FAX","Ⅰ":"I","Ⅱ":"II","Ⅲ":"III","Ⅳ":"IV","Ⅴ":"V","Ⅵ":"VI","Ⅶ":"VII","Ⅷ":"VIII","Ⅸ":"IX","Ⅹ":"X","Ⅺ":"XI","Ⅻ":"XII","Ⅼ":"L","Ⅽ":"C","Ⅾ":"D","Ⅿ":"M","ⅰ":"i","ⅱ":"ii","ⅲ":"iii","ⅳ":"iv","ⅴ":"v","ⅵ":"vi","ⅶ":"vii","ⅷ":"viii","ⅸ":"ix","ⅹ":"x","ⅺ":"xi","ⅻ":"xii","ⅼ":"l","ⅽ":"c","ⅾ":"d","ⅿ":"m","∬":"∫∫","∭":"∫∫∫","∯":"∮∮","∰":"∮∮∮","⑴":"(1)","⑵":"(2)","⑶":"(3)","⑷":"(4)","⑸":"(5)","⑹":"(6)","⑺":"(7)","⑻":"(8)","⑼":"(9)","⑽":"(10)","⑾":"(11)","⑿":"(12)","⒀":"(13)","⒁":"(14)","⒂":"(15)","⒃":"(16)","⒄":"(17)","⒅":"(18)","⒆":"(19)","⒇":"(20)","⒈":"1.","⒉":"2.","⒊":"3.","⒋":"4.","⒌":"5.","⒍":"6.","⒎":"7.","⒏":"8.","⒐":"9.","⒑":"10.","⒒":"11.","⒓":"12.","⒔":"13.","⒕":"14.","⒖":"15.","⒗":"16.","⒘":"17.","⒙":"18.","⒚":"19.","⒛":"20.","⒜":"(a)","⒝":"(b)","⒞":"(c)","⒟":"(d)","⒠":"(e)","⒡":"(f)","⒢":"(g)","⒣":"(h)","⒤":"(i)","⒥":"(j)","⒦":"(k)","⒧":"(l)","⒨":"(m)","⒩":"(n)","⒪":"(o)","⒫":"(p)","⒬":"(q)","⒭":"(r)","⒮":"(s)","⒯":"(t)","⒰":"(u)","⒱":"(v)","⒲":"(w)","⒳":"(x)","⒴":"(y)","⒵":"(z)","⨌":"∫∫∫∫","⩴":"::=","⩵":"==","⩶":"===","⺟":"母","⻳":"龟","⼀":"一","⼁":"丨","⼂":"丶","⼃":"丿","⼄":"乙","⼅":"亅","⼆":"二","⼇":"亠","⼈":"人","⼉":"儿","⼊":"入","⼋":"八","⼌":"冂","⼍":"冖","⼎":"冫","⼏":"几","⼐":"凵","⼑":"刀","⼒":"力","⼓":"勹","⼔":"匕","⼕":"匚","⼖":"匸","⼗":"十","⼘":"卜","⼙":"卩","⼚":"厂","⼛":"厶","⼜":"又","⼝":"口","⼞":"囗","⼟":"土","⼠":"士","⼡":"夂","⼢":"夊","⼣":"夕","⼤":"大","⼥":"女","⼦":"子","⼧":"宀","⼨":"寸","⼩":"小","⼪":"尢","⼫":"尸","⼬":"屮","⼭":"山","⼮":"巛","⼯":"工","⼰":"己","⼱":"巾","⼲":"干","⼳":"幺","⼴":"广","⼵":"廴","⼶":"廾","⼷":"弋","⼸":"弓","⼹":"彐","⼺":"彡","⼻":"彳","⼼":"心","⼽":"戈","⼾":"戶","⼿":"手","⽀":"支","⽁":"攴","⽂":"文","⽃":"斗","⽄":"斤","⽅":"方","⽆":"无","⽇":"日","⽈":"曰","⽉":"月","⽊":"木","⽋":"欠","⽌":"止","⽍":"歹","⽎":"殳","⽏":"毋","⽐":"比","⽑":"毛","⽒":"氏","⽓":"气","⽔":"水","⽕":"火","⽖":"爪","⽗":"父","⽘":"爻","⽙":"爿","⽚":"片","⽛":"牙","⽜":"牛","⽝":"犬","⽞":"玄","⽟":"玉","⽠":"瓜","⽡":"瓦","⽢":"甘","⽣":"生","⽤":"用","⽥":"田","⽦":"疋","⽧":"疒","⽨":"癶","⽩":"白","⽪":"皮","⽫":"皿","⽬":"目","⽭":"矛","⽮":"矢","⽯":"石","⽰":"示","⽱":"禸","⽲":"禾","⽳":"穴","⽴":"立","⽵":"竹","⽶":"米","⽷":"糸","⽸":"缶","⽹":"网","⽺":"羊","⽻":"羽","⽼":"老","⽽":"而","⽾":"耒","⽿":"耳","⾀":"聿","⾁":"肉","⾂":"臣","⾃":"自","⾄":"至","⾅":"臼","⾆":"舌","⾇":"舛","⾈":"舟","⾉":"艮","⾊":"色","⾋":"艸","⾌":"虍","⾍":"虫","⾎":"血","⾏":"行","⾐":"衣","⾑":"襾","⾒":"見","⾓":"角","⾔":"言","⾕":"谷","⾖":"豆","⾗":"豕","⾘":"豸","⾙":"貝","⾚":"赤","⾛":"走","⾜":"足","⾝":"身","⾞":"車","⾟":"辛","⾠":"辰","⾡":"辵","⾢":"邑","⾣":"酉","⾤":"釆","⾥":"里","⾦":"金","⾧":"長","⾨":"門","⾩":"阜","⾪":"隶","⾫":"隹","⾬":"雨","⾭":"靑","⾮":"非","⾯":"面","⾰":"革","⾱":"韋","⾲":"韭","⾳":"音","⾴":"頁","⾵":"風","⾶":"飛","⾷":"食","⾸":"首","⾹":"香","⾺":"馬","⾻":"骨","⾼":"高","⾽":"髟","⾾":"鬥","⾿":"鬯","⿀":"鬲","⿁":"鬼","⿂":"魚","⿃":"鳥","⿄":"鹵","⿅":"鹿","⿆":"麥","⿇":"麻","⿈":"黃","⿉":"黍","⿊":"黑","⿋":"黹","⿌":"黽","⿍":"鼎","⿎":"鼓","⿏":"鼠","⿐":"鼻","⿑":"齊","⿒":"齒","⿓":"龍","⿔":"龜","⿕":"龠","〶":"〒","〸":"十","〹":"卄","〺":"卅","゛":" ゙","゜":" ゚","ㄱ":"ᄀ","ㄲ":"ᄁ","ㄳ":"ᆪ","ㄴ":"ᄂ","ㄵ":"ᆬ","ㄶ":"ᆭ","ㄷ":"ᄃ","ㄸ":"ᄄ","ㄹ":"ᄅ","ㄺ":"ᆰ","ㄻ":"ᆱ","ㄼ":"ᆲ","ㄽ":"ᆳ","ㄾ":"ᆴ","ㄿ":"ᆵ","ㅀ":"ᄚ","ㅁ":"ᄆ","ㅂ":"ᄇ","ㅃ":"ᄈ","ㅄ":"ᄡ","ㅅ":"ᄉ","ㅆ":"ᄊ","ㅇ":"ᄋ","ㅈ":"ᄌ","ㅉ":"ᄍ","ㅊ":"ᄎ","ㅋ":"ᄏ","ㅌ":"ᄐ","ㅍ":"ᄑ","ㅎ":"ᄒ","ㅏ":"ᅡ","ㅐ":"ᅢ","ㅑ":"ᅣ","ㅒ":"ᅤ","ㅓ":"ᅥ","ㅔ":"ᅦ","ㅕ":"ᅧ","ㅖ":"ᅨ","ㅗ":"ᅩ","ㅘ":"ᅪ","ㅙ":"ᅫ","ㅚ":"ᅬ","ㅛ":"ᅭ","ㅜ":"ᅮ","ㅝ":"ᅯ","ㅞ":"ᅰ","ㅟ":"ᅱ","ㅠ":"ᅲ","ㅡ":"ᅳ","ㅢ":"ᅴ","ㅣ":"ᅵ","ㅤ":"ᅠ","ㅥ":"ᄔ","ㅦ":"ᄕ","ㅧ":"ᇇ","ㅨ":"ᇈ","ㅩ":"ᇌ","ㅪ":"ᇎ","ㅫ":"ᇓ","ㅬ":"ᇗ","ㅭ":"ᇙ","ㅮ":"ᄜ","ㅯ":"ᇝ","ㅰ":"ᇟ","ㅱ":"ᄝ","ㅲ":"ᄞ","ㅳ":"ᄠ","ㅴ":"ᄢ","ㅵ":"ᄣ","ㅶ":"ᄧ","ㅷ":"ᄩ","ㅸ":"ᄫ","ㅹ":"ᄬ","ㅺ":"ᄭ","ㅻ":"ᄮ","ㅼ":"ᄯ","ㅽ":"ᄲ","ㅾ":"ᄶ","ㅿ":"ᅀ","ㆀ":"ᅇ","ㆁ":"ᅌ","ㆂ":"ᇱ","ㆃ":"ᇲ","ㆄ":"ᅗ","ㆅ":"ᅘ","ㆆ":"ᅙ","ㆇ":"ᆄ","ㆈ":"ᆅ","ㆉ":"ᆈ","ㆊ":"ᆑ","ㆋ":"ᆒ","ㆌ":"ᆔ","ㆍ":"ᆞ","ㆎ":"ᆡ","㈀":"(ᄀ)","㈁":"(ᄂ)","㈂":"(ᄃ)","㈃":"(ᄅ)","㈄":"(ᄆ)","㈅":"(ᄇ)","㈆":"(ᄉ)","㈇":"(ᄋ)","㈈":"(ᄌ)","㈉":"(ᄎ)","㈊":"(ᄏ)","㈋":"(ᄐ)","㈌":"(ᄑ)","㈍":"(ᄒ)","㈎":"(가)","㈏":"(나)","㈐":"(다)","㈑":"(라)","㈒":"(마)","㈓":"(바)","㈔":"(사)","㈕":"(아)","㈖":"(자)","㈗":"(차)","㈘":"(카)","㈙":"(타)","㈚":"(파)","㈛":"(하)","㈜":"(주)","㈝":"(오전)","㈞":"(오후)","㈠":"(一)","㈡":"(二)","㈢":"(三)","㈣":"(四)","㈤":"(五)","㈥":"(六)","㈦":"(七)","㈧":"(八)","㈨":"(九)","㈩":"(十)","㈪":"(月)","㈫":"(火)","㈬":"(水)","㈭":"(木)","㈮":"(金)","㈯":"(土)","㈰":"(日)","㈱":"(株)","㈲":"(有)","㈳":"(社)","㈴":"(名)","㈵":"(特)","㈶":"(財)","㈷":"(祝)","㈸":"(労)","㈹":"(代)","㈺":"(呼)","㈻":"(学)","㈼":"(監)","㈽":"(企)","㈾":"(資)","㈿":"(協)","㉀":"(祭)","㉁":"(休)","㉂":"(自)","㉃":"(至)","㋀":"1月","㋁":"2月","㋂":"3月","㋃":"4月","㋄":"5月","㋅":"6月","㋆":"7月","㋇":"8月","㋈":"9月","㋉":"10月","㋊":"11月","㋋":"12月","㍘":"0点","㍙":"1点","㍚":"2点","㍛":"3点","㍜":"4点","㍝":"5点","㍞":"6点","㍟":"7点","㍠":"8点","㍡":"9点","㍢":"10点","㍣":"11点","㍤":"12点","㍥":"13点","㍦":"14点","㍧":"15点","㍨":"16点","㍩":"17点","㍪":"18点","㍫":"19点","㍬":"20点","㍭":"21点","㍮":"22点","㍯":"23点","㍰":"24点","㏠":"1日","㏡":"2日","㏢":"3日","㏣":"4日","㏤":"5日","㏥":"6日","㏦":"7日","㏧":"8日","㏨":"9日","㏩":"10日","㏪":"11日","㏫":"12日","㏬":"13日","㏭":"14日","㏮":"15日","㏯":"16日","㏰":"17日","㏱":"18日","㏲":"19日","㏳":"20日","㏴":"21日","㏵":"22日","㏶":"23日","㏷":"24日","㏸":"25日","㏹":"26日","㏺":"27日","㏻":"28日","㏼":"29日","㏽":"30日","㏾":"31日","ff":"ff","fi":"fi","fl":"fl","ffi":"ffi","ffl":"ffl","ſt":"ſt","st":"st","ﬓ":"մն","ﬔ":"մե","ﬕ":"մի","ﬖ":"վն","ﬗ":"մխ","ﭏ":"אל","ﭐ":"ٱ","ﭑ":"ٱ","ﭒ":"ٻ","ﭓ":"ٻ","ﭔ":"ٻ","ﭕ":"ٻ","ﭖ":"پ","ﭗ":"پ","ﭘ":"پ","ﭙ":"پ","ﭚ":"ڀ","ﭛ":"ڀ","ﭜ":"ڀ","ﭝ":"ڀ","ﭞ":"ٺ","ﭟ":"ٺ","ﭠ":"ٺ","ﭡ":"ٺ","ﭢ":"ٿ","ﭣ":"ٿ","ﭤ":"ٿ","ﭥ":"ٿ","ﭦ":"ٹ","ﭧ":"ٹ","ﭨ":"ٹ","ﭩ":"ٹ","ﭪ":"ڤ","ﭫ":"ڤ","ﭬ":"ڤ","ﭭ":"ڤ","ﭮ":"ڦ","ﭯ":"ڦ","ﭰ":"ڦ","ﭱ":"ڦ","ﭲ":"ڄ","ﭳ":"ڄ","ﭴ":"ڄ","ﭵ":"ڄ","ﭶ":"ڃ","ﭷ":"ڃ","ﭸ":"ڃ","ﭹ":"ڃ","ﭺ":"چ","ﭻ":"چ","ﭼ":"چ","ﭽ":"چ","ﭾ":"ڇ","ﭿ":"ڇ","ﮀ":"ڇ","ﮁ":"ڇ","ﮂ":"ڍ","ﮃ":"ڍ","ﮄ":"ڌ","ﮅ":"ڌ","ﮆ":"ڎ","ﮇ":"ڎ","ﮈ":"ڈ","ﮉ":"ڈ","ﮊ":"ژ","ﮋ":"ژ","ﮌ":"ڑ","ﮍ":"ڑ","ﮎ":"ک","ﮏ":"ک","ﮐ":"ک","ﮑ":"ک","ﮒ":"گ","ﮓ":"گ","ﮔ":"گ","ﮕ":"گ","ﮖ":"ڳ","ﮗ":"ڳ","ﮘ":"ڳ","ﮙ":"ڳ","ﮚ":"ڱ","ﮛ":"ڱ","ﮜ":"ڱ","ﮝ":"ڱ","ﮞ":"ں","ﮟ":"ں","ﮠ":"ڻ","ﮡ":"ڻ","ﮢ":"ڻ","ﮣ":"ڻ","ﮤ":"ۀ","ﮥ":"ۀ","ﮦ":"ہ","ﮧ":"ہ","ﮨ":"ہ","ﮩ":"ہ","ﮪ":"ھ","ﮫ":"ھ","ﮬ":"ھ","ﮭ":"ھ","ﮮ":"ے","ﮯ":"ے","ﮰ":"ۓ","ﮱ":"ۓ","ﯓ":"ڭ","ﯔ":"ڭ","ﯕ":"ڭ","ﯖ":"ڭ","ﯗ":"ۇ","ﯘ":"ۇ","ﯙ":"ۆ","ﯚ":"ۆ","ﯛ":"ۈ","ﯜ":"ۈ","ﯝ":"ٷ","ﯞ":"ۋ","ﯟ":"ۋ","ﯠ":"ۅ","ﯡ":"ۅ","ﯢ":"ۉ","ﯣ":"ۉ","ﯤ":"ې","ﯥ":"ې","ﯦ":"ې","ﯧ":"ې","ﯨ":"ى","ﯩ":"ى","ﯪ":"ئا","ﯫ":"ئا","ﯬ":"ئە","ﯭ":"ئە","ﯮ":"ئو","ﯯ":"ئو","ﯰ":"ئۇ","ﯱ":"ئۇ","ﯲ":"ئۆ","ﯳ":"ئۆ","ﯴ":"ئۈ","ﯵ":"ئۈ","ﯶ":"ئې","ﯷ":"ئې","ﯸ":"ئې","ﯹ":"ئى","ﯺ":"ئى","ﯻ":"ئى","ﯼ":"ی","ﯽ":"ی","ﯾ":"ی","ﯿ":"ی","ﰀ":"ئج","ﰁ":"ئح","ﰂ":"ئم","ﰃ":"ئى","ﰄ":"ئي","ﰅ":"بج","ﰆ":"بح","ﰇ":"بخ","ﰈ":"بم","ﰉ":"بى","ﰊ":"بي","ﰋ":"تج","ﰌ":"تح","ﰍ":"تخ","ﰎ":"تم","ﰏ":"تى","ﰐ":"تي","ﰑ":"ثج","ﰒ":"ثم","ﰓ":"ثى","ﰔ":"ثي","ﰕ":"جح","ﰖ":"جم","ﰗ":"حج","ﰘ":"حم","ﰙ":"خج","ﰚ":"خح","ﰛ":"خم","ﰜ":"سج","ﰝ":"سح","ﰞ":"سخ","ﰟ":"سم","ﰠ":"صح","ﰡ":"صم","ﰢ":"ضج","ﰣ":"ضح","ﰤ":"ضخ","ﰥ":"ضم","ﰦ":"طح","ﰧ":"طم","ﰨ":"ظم","ﰩ":"عج","ﰪ":"عم","ﰫ":"غج","ﰬ":"غم","ﰭ":"فج","ﰮ":"فح","ﰯ":"فخ","ﰰ":"فم","ﰱ":"فى","ﰲ":"في","ﰳ":"قح","ﰴ":"قم","ﰵ":"قى","ﰶ":"قي","ﰷ":"كا","ﰸ":"كج","ﰹ":"كح","ﰺ":"كخ","ﰻ":"كل","ﰼ":"كم","ﰽ":"كى","ﰾ":"كي","ﰿ":"لج","ﱀ":"لح","ﱁ":"لخ","ﱂ":"لم","ﱃ":"لى","ﱄ":"لي","ﱅ":"مج","ﱆ":"مح","ﱇ":"مخ","ﱈ":"مم","ﱉ":"مى","ﱊ":"مي","ﱋ":"نج","ﱌ":"نح","ﱍ":"نخ","ﱎ":"نم","ﱏ":"نى","ﱐ":"ني","ﱑ":"هج","ﱒ":"هم","ﱓ":"هى","ﱔ":"هي","ﱕ":"يج","ﱖ":"يح","ﱗ":"يخ","ﱘ":"يم","ﱙ":"يى","ﱚ":"يي","ﱛ":"ذٰ","ﱜ":"رٰ","ﱝ":"ىٰ","ﱞ":" ٌّ","ﱟ":" ٍّ","ﱠ":" َّ","ﱡ":" ُّ","ﱢ":" ِّ","ﱣ":" ّٰ","ﱤ":"ئر","ﱥ":"ئز","ﱦ":"ئم","ﱧ":"ئن","ﱨ":"ئى","ﱩ":"ئي","ﱪ":"بر","ﱫ":"بز","ﱬ":"بم","ﱭ":"بن","ﱮ":"بى","ﱯ":"بي","ﱰ":"تر","ﱱ":"تز","ﱲ":"تم","ﱳ":"تن","ﱴ":"تى","ﱵ":"تي","ﱶ":"ثر","ﱷ":"ثز","ﱸ":"ثم","ﱹ":"ثن","ﱺ":"ثى","ﱻ":"ثي","ﱼ":"فى","ﱽ":"في","ﱾ":"قى","ﱿ":"قي","ﲀ":"كا","ﲁ":"كل","ﲂ":"كم","ﲃ":"كى","ﲄ":"كي","ﲅ":"لم","ﲆ":"لى","ﲇ":"لي","ﲈ":"ما","ﲉ":"مم","ﲊ":"نر","ﲋ":"نز","ﲌ":"نم","ﲍ":"نن","ﲎ":"نى","ﲏ":"ني","ﲐ":"ىٰ","ﲑ":"ير","ﲒ":"يز","ﲓ":"يم","ﲔ":"ين","ﲕ":"يى","ﲖ":"يي","ﲗ":"ئج","ﲘ":"ئح","ﲙ":"ئخ","ﲚ":"ئم","ﲛ":"ئه","ﲜ":"بج","ﲝ":"بح","ﲞ":"بخ","ﲟ":"بم","ﲠ":"به","ﲡ":"تج","ﲢ":"تح","ﲣ":"تخ","ﲤ":"تم","ﲥ":"ته","ﲦ":"ثم","ﲧ":"جح","ﲨ":"جم","ﲩ":"حج","ﲪ":"حم","ﲫ":"خج","ﲬ":"خم","ﲭ":"سج","ﲮ":"سح","ﲯ":"سخ","ﲰ":"سم","ﲱ":"صح","ﲲ":"صخ","ﲳ":"صم","ﲴ":"ضج","ﲵ":"ضح","ﲶ":"ضخ","ﲷ":"ضم","ﲸ":"طح","ﲹ":"ظم","ﲺ":"عج","ﲻ":"عم","ﲼ":"غج","ﲽ":"غم","ﲾ":"فج","ﲿ":"فح","ﳀ":"فخ","ﳁ":"فم","ﳂ":"قح","ﳃ":"قم","ﳄ":"كج","ﳅ":"كح","ﳆ":"كخ","ﳇ":"كل","ﳈ":"كم","ﳉ":"لج","ﳊ":"لح","ﳋ":"لخ","ﳌ":"لم","ﳍ":"له","ﳎ":"مج","ﳏ":"مح","ﳐ":"مخ","ﳑ":"مم","ﳒ":"نج","ﳓ":"نح","ﳔ":"نخ","ﳕ":"نم","ﳖ":"نه","ﳗ":"هج","ﳘ":"هم","ﳙ":"هٰ","ﳚ":"يج","ﳛ":"يح","ﳜ":"يخ","ﳝ":"يم","ﳞ":"يه","ﳟ":"ئم","ﳠ":"ئه","ﳡ":"بم","ﳢ":"به","ﳣ":"تم","ﳤ":"ته","ﳥ":"ثم","ﳦ":"ثه","ﳧ":"سم","ﳨ":"سه","ﳩ":"شم","ﳪ":"شه","ﳫ":"كل","ﳬ":"كم","ﳭ":"لم","ﳮ":"نم","ﳯ":"نه","ﳰ":"يم","ﳱ":"يه","ﳲ":"ـَّ","ﳳ":"ـُّ","ﳴ":"ـِّ","ﳵ":"طى","ﳶ":"طي","ﳷ":"عى","ﳸ":"عي","ﳹ":"غى","ﳺ":"غي","ﳻ":"سى","ﳼ":"سي","ﳽ":"شى","ﳾ":"شي","ﳿ":"حى","ﴀ":"حي","ﴁ":"جى","ﴂ":"جي","ﴃ":"خى","ﴄ":"خي","ﴅ":"صى","ﴆ":"صي","ﴇ":"ضى","ﴈ":"ضي","ﴉ":"شج","ﴊ":"شح","ﴋ":"شخ","ﴌ":"شم","ﴍ":"شر","ﴎ":"سر","ﴏ":"صر","ﴐ":"ضر","ﴑ":"طى","ﴒ":"طي","ﴓ":"عى","ﴔ":"عي","ﴕ":"غى","ﴖ":"غي","ﴗ":"سى","ﴘ":"سي","ﴙ":"شى","ﴚ":"شي","ﴛ":"حى","ﴜ":"حي","ﴝ":"جى","ﴞ":"جي","ﴟ":"خى","ﴠ":"خي","ﴡ":"صى","ﴢ":"صي","ﴣ":"ضى","ﴤ":"ضي","ﴥ":"شج","ﴦ":"شح","ﴧ":"شخ","ﴨ":"شم","ﴩ":"شر","ﴪ":"سر","ﴫ":"صر","ﴬ":"ضر","ﴭ":"شج","ﴮ":"شح","ﴯ":"شخ","ﴰ":"شم","ﴱ":"سه","ﴲ":"شه","ﴳ":"طم","ﴴ":"سج","ﴵ":"سح","ﴶ":"سخ","ﴷ":"شج","ﴸ":"شح","ﴹ":"شخ","ﴺ":"طم","ﴻ":"ظم","ﴼ":"اً","ﴽ":"اً","ﵐ":"تجم","ﵑ":"تحج","ﵒ":"تحج","ﵓ":"تحم","ﵔ":"تخم","ﵕ":"تمج","ﵖ":"تمح","ﵗ":"تمخ","ﵘ":"جمح","ﵙ":"جمح","ﵚ":"حمي","ﵛ":"حمى","ﵜ":"سحج","ﵝ":"سجح","ﵞ":"سجى","ﵟ":"سمح","ﵠ":"سمح","ﵡ":"سمج","ﵢ":"سمم","ﵣ":"سمم","ﵤ":"صحح","ﵥ":"صحح","ﵦ":"صمم","ﵧ":"شحم","ﵨ":"شحم","ﵩ":"شجي","ﵪ":"شمخ","ﵫ":"شمخ","ﵬ":"شمم","ﵭ":"شمم","ﵮ":"ضحى","ﵯ":"ضخم","ﵰ":"ضخم","ﵱ":"طمح","ﵲ":"طمح","ﵳ":"طمم","ﵴ":"طمي","ﵵ":"عجم","ﵶ":"عمم","ﵷ":"عمم","ﵸ":"عمى","ﵹ":"غمم","ﵺ":"غمي","ﵻ":"غمى","ﵼ":"فخم","ﵽ":"فخم","ﵾ":"قمح","ﵿ":"قمم","ﶀ":"لحم","ﶁ":"لحي","ﶂ":"لحى","ﶃ":"لجج","ﶄ":"لجج","ﶅ":"لخم","ﶆ":"لخم","ﶇ":"لمح","ﶈ":"لمح","ﶉ":"محج","ﶊ":"محم","ﶋ":"محي","ﶌ":"مجح","ﶍ":"مجم","ﶎ":"مخج","ﶏ":"مخم","ﶒ":"مجخ","ﶓ":"همج","ﶔ":"همم","ﶕ":"نحم","ﶖ":"نحى","ﶗ":"نجم","ﶘ":"نجم","ﶙ":"نجى","ﶚ":"نمي","ﶛ":"نمى","ﶜ":"يمم","ﶝ":"يمم","ﶞ":"بخي","ﶟ":"تجي","ﶠ":"تجى","ﶡ":"تخي","ﶢ":"تخى","ﶣ":"تمي","ﶤ":"تمى","ﶥ":"جمي","ﶦ":"جحى","ﶧ":"جمى","ﶨ":"سخى","ﶩ":"صحي","ﶪ":"شحي","ﶫ":"ضحي","ﶬ":"لجي","ﶭ":"لمي","ﶮ":"يحي","ﶯ":"يجي","ﶰ":"يمي","ﶱ":"ممي","ﶲ":"قمي","ﶳ":"نحي","ﶴ":"قمح","ﶵ":"لحم","ﶶ":"عمي","ﶷ":"كمي","ﶸ":"نجح","ﶹ":"مخي","ﶺ":"لجم","ﶻ":"كمم","ﶼ":"لجم","ﶽ":"نجح","ﶾ":"جحي","ﶿ":"حجي","ﷀ":"مجي","ﷁ":"فمي","ﷂ":"بحي","ﷃ":"كمم","ﷄ":"عجم","ﷅ":"صمم","ﷆ":"سخي","ﷇ":"نجي","﹉":"‾","﹊":"‾","﹋":"‾","﹌":"‾","﹍":"_","﹎":"_","﹏":"_","ﺀ":"ء","ﺁ":"آ","ﺂ":"آ","ﺃ":"أ","ﺄ":"أ","ﺅ":"ؤ","ﺆ":"ؤ","ﺇ":"إ","ﺈ":"إ","ﺉ":"ئ","ﺊ":"ئ","ﺋ":"ئ","ﺌ":"ئ","ﺍ":"ا","ﺎ":"ا","ﺏ":"ب","ﺐ":"ب","ﺑ":"ب","ﺒ":"ب","ﺓ":"ة","ﺔ":"ة","ﺕ":"ت","ﺖ":"ت","ﺗ":"ت","ﺘ":"ت","ﺙ":"ث","ﺚ":"ث","ﺛ":"ث","ﺜ":"ث","ﺝ":"ج","ﺞ":"ج","ﺟ":"ج","ﺠ":"ج","ﺡ":"ح","ﺢ":"ح","ﺣ":"ح","ﺤ":"ح","ﺥ":"خ","ﺦ":"خ","ﺧ":"خ","ﺨ":"خ","ﺩ":"د","ﺪ":"د","ﺫ":"ذ","ﺬ":"ذ","ﺭ":"ر","ﺮ":"ر","ﺯ":"ز","ﺰ":"ز","ﺱ":"س","ﺲ":"س","ﺳ":"س","ﺴ":"س","ﺵ":"ش","ﺶ":"ش","ﺷ":"ش","ﺸ":"ش","ﺹ":"ص","ﺺ":"ص","ﺻ":"ص","ﺼ":"ص","ﺽ":"ض","ﺾ":"ض","ﺿ":"ض","ﻀ":"ض","ﻁ":"ط","ﻂ":"ط","ﻃ":"ط","ﻄ":"ط","ﻅ":"ظ","ﻆ":"ظ","ﻇ":"ظ","ﻈ":"ظ","ﻉ":"ع","ﻊ":"ع","ﻋ":"ع","ﻌ":"ع","ﻍ":"غ","ﻎ":"غ","ﻏ":"غ","ﻐ":"غ","ﻑ":"ف","ﻒ":"ف","ﻓ":"ف","ﻔ":"ف","ﻕ":"ق","ﻖ":"ق","ﻗ":"ق","ﻘ":"ق","ﻙ":"ك","ﻚ":"ك","ﻛ":"ك","ﻜ":"ك","ﻝ":"ل","ﻞ":"ل","ﻟ":"ل","ﻠ":"ل","ﻡ":"م","ﻢ":"م","ﻣ":"م","ﻤ":"م","ﻥ":"ن","ﻦ":"ن","ﻧ":"ن","ﻨ":"ن","ﻩ":"ه","ﻪ":"ه","ﻫ":"ه","ﻬ":"ه","ﻭ":"و","ﻮ":"و","ﻯ":"ى","ﻰ":"ى","ﻱ":"ي","ﻲ":"ي","ﻳ":"ي","ﻴ":"ي","ﻵ":"لآ","ﻶ":"لآ","ﻷ":"لأ","ﻸ":"لأ","ﻹ":"لإ","ﻺ":"لإ","ﻻ":"لا","ﻼ":"لا"},Glyph=function(){function Glyph(fontChar,unicode,accent,width,vmetric,operatorListId){this.fontChar=fontChar,this.unicode=unicode,this.accent=accent,this.width=width,this.vmetric=vmetric,this.operatorListId=operatorListId
}return Glyph.prototype.matchesForCache=function(fontChar,unicode,accent,width,vmetric,operatorListId){return this.fontChar===fontChar&&this.unicode===unicode&&this.accent===accent&&this.width===width&&this.vmetric===vmetric&&this.operatorListId===operatorListId},Glyph}(),ToUnicodeMap=function(){function ToUnicodeMap(cmap){this._map=cmap}return ToUnicodeMap.prototype={get length(){return this._map.length},forEach:function(callback){for(var charCode in this._map)callback(charCode,this._map[charCode].charCodeAt(0))},get:function(i){return this._map[i]},charCodeOf:function(v){return this._map.indexOf(v)}},ToUnicodeMap}(),IdentityToUnicodeMap=function(){function IdentityToUnicodeMap(firstChar,lastChar){this.firstChar=firstChar,this.lastChar=lastChar}return IdentityToUnicodeMap.prototype={get length(){error("should not access .length")},forEach:function(callback){for(var i=this.firstChar,ii=this.lastChar;ii>=i;i++)callback(i,i)},get:function(i){return this.firstChar<=i&&i<=this.lastChar?String.fromCharCode(i):void 0},charCodeOf:function(){error("should not call .charCodeOf")}},IdentityToUnicodeMap}(),OpenTypeFileBuilder=function(){function writeInt16(dest,offset,num){dest[offset]=num>>8&255,dest[offset+1]=255&num}function writeInt32(dest,offset,num){dest[offset]=num>>24&255,dest[offset+1]=num>>16&255,dest[offset+2]=num>>8&255,dest[offset+3]=255&num}function writeData(dest,offset,data){var i,ii;if(data instanceof Uint8Array)dest.set(data,offset);else if("string"==typeof data)for(i=0,ii=data.length;ii>i;i++)dest[offset++]=255&data.charCodeAt(i);else for(i=0,ii=data.length;ii>i;i++)dest[offset++]=255&data[i]}function OpenTypeFileBuilder(sfnt){this.sfnt=sfnt,this.tables=Object.create(null)}OpenTypeFileBuilder.getSearchParams=function(entriesCount,entrySize){for(var maxPower2=1,log2=0;(maxPower2^entriesCount)>maxPower2;)maxPower2<<=1,log2++;var searchRange=maxPower2*entrySize;return{range:searchRange,entry:log2,rangeShift:entrySize*entriesCount-searchRange}};var OTF_HEADER_SIZE=12,OTF_TABLE_ENTRY_SIZE=16;return OpenTypeFileBuilder.prototype={toArray:function(){var sfnt=this.sfnt,tables=this.tables,tablesNames=Object.keys(tables);tablesNames.sort();var i,j,jj,table,tableName,numTables=tablesNames.length,offset=OTF_HEADER_SIZE+numTables*OTF_TABLE_ENTRY_SIZE,tableOffsets=[offset];for(i=0;numTables>i;i++){table=tables[tablesNames[i]];var paddedLength=(table.length+3&-4)>>>0;offset+=paddedLength,tableOffsets.push(offset)}var file=new Uint8Array(offset);for(i=0;numTables>i;i++)table=tables[tablesNames[i]],writeData(file,tableOffsets[i],table);"true"===sfnt&&(sfnt=string32(65536)),file[0]=255&sfnt.charCodeAt(0),file[1]=255&sfnt.charCodeAt(1),file[2]=255&sfnt.charCodeAt(2),file[3]=255&sfnt.charCodeAt(3),writeInt16(file,4,numTables);var searchParams=OpenTypeFileBuilder.getSearchParams(numTables,16);for(writeInt16(file,6,searchParams.range),writeInt16(file,8,searchParams.entry),writeInt16(file,10,searchParams.rangeShift),offset=OTF_HEADER_SIZE,i=0;numTables>i;i++){tableName=tablesNames[i],file[offset]=255&tableName.charCodeAt(0),file[offset+1]=255&tableName.charCodeAt(1),file[offset+2]=255&tableName.charCodeAt(2),file[offset+3]=255&tableName.charCodeAt(3);var checksum=0;for(j=tableOffsets[i],jj=tableOffsets[i+1];jj>j;j+=4){var quad=(file[j]<<24)+(file[j+1]<<16)+(file[j+2]<<8)+file[j+3];checksum=checksum+quad|0}writeInt32(file,offset+4,checksum),writeInt32(file,offset+8,tableOffsets[i]),writeInt32(file,offset+12,tables[tableName].length),offset+=OTF_TABLE_ENTRY_SIZE}return file},addTable:function(tag,data){if(tag in this.tables)throw new Error("Table "+tag+" already exists");this.tables[tag]=data}},OpenTypeFileBuilder}(),Font=function(){function Font(name,file,properties){var charCode,glyphName,fontChar;this.name=name,this.loadedName=properties.loadedName,this.isType3Font=properties.isType3Font,this.sizes=[],this.glyphCache={};var names=name.split("+");names=names.length>1?names[1]:names[0],names=names.split(/[-,_]/g)[0],this.isSerifFont=!!(properties.flags&FontFlags.Serif),this.isSymbolicFont=!!(properties.flags&FontFlags.Symbolic),this.isMonospace=!!(properties.flags&FontFlags.FixedPitch);var type=properties.type,subtype=properties.subtype;if(this.type=type,this.fallbackName=this.isMonospace?"monospace":this.isSerifFont?"serif":"sans-serif",this.differences=properties.differences,this.widths=properties.widths,this.defaultWidth=properties.defaultWidth,this.composite=properties.composite,this.wideChars=properties.wideChars,this.cMap=properties.cMap,this.ascent=properties.ascent/PDF_GLYPH_SPACE_UNITS,this.descent=properties.descent/PDF_GLYPH_SPACE_UNITS,this.fontMatrix=properties.fontMatrix,this.toUnicode=properties.toUnicode=this.buildToUnicode(properties),this.toFontChar=[],"Type3"===properties.type){for(charCode=0;256>charCode;charCode++)this.toFontChar[charCode]=this.differences[charCode]||properties.defaultEncoding[charCode];return void(this.fontType=FontType.TYPE3)}if(this.cidEncoding=properties.cidEncoding,this.vertical=properties.vertical,this.vertical&&(this.vmetrics=properties.vmetrics,this.defaultVMetrics=properties.defaultVMetrics),!file||file.isEmpty){file&&warn('Font file is empty in "'+name+'" ('+this.loadedName+")"),this.missingFile=!0;var fontName=name.replace(/[,_]/g,"-"),isStandardFont=fontName in stdFontMap;if(fontName=stdFontMap[fontName]||nonStdFontMap[fontName]||fontName,this.bold=-1!==fontName.search(/bold/gi),this.italic=-1!==fontName.search(/oblique/gi)||-1!==fontName.search(/italic/gi),this.black=-1!==name.search(/Black/g),this.remeasure=Object.keys(this.widths).length>0,isStandardFont&&"CIDFontType2"===type&&0===properties.cidEncoding.indexOf("Identity-")){var map=[];for(var code in GlyphMapForStandardFonts)map[+code]=GlyphMapForStandardFonts[code];this.toFontChar=map,this.toUnicode=new ToUnicodeMap(map)}else if(/Symbol/i.test(fontName)){var symbols=Encodings.SymbolSetEncoding;for(charCode in symbols)fontChar=GlyphsUnicode[symbols[charCode]],fontChar&&(this.toFontChar[charCode]=fontChar)}else if(/Dingbats/i.test(fontName)){var dingbats=Encodings.ZapfDingbatsEncoding;for(charCode in dingbats)fontChar=DingbatsGlyphsUnicode[dingbats[charCode]],fontChar&&(this.toFontChar[charCode]=fontChar);for(charCode in properties.differences)fontChar=DingbatsGlyphsUnicode[properties.differences[charCode]],fontChar&&(this.toFontChar[charCode]=fontChar)}else if(isStandardFont){this.toFontChar=[];for(charCode in properties.defaultEncoding)glyphName=properties.differences[charCode]||properties.defaultEncoding[charCode],this.toFontChar[charCode]=GlyphsUnicode[glyphName]}else{var notCidFont=-1===type.indexOf("CIDFontType");this.toUnicode.forEach(function(charCode,unicodeCharCode){notCidFont&&(glyphName=properties.differences[charCode]||properties.defaultEncoding[charCode],unicodeCharCode=GlyphsUnicode[glyphName]||unicodeCharCode),this.toFontChar[charCode]=unicodeCharCode}.bind(this))}return this.loadedName=fontName.split("-")[0],this.loading=!1,void(this.fontType=getFontType(type,subtype))}"Type1C"===subtype&&"Type1"!==type&&"MMType1"!==type&&(isTrueTypeFile(file)?subtype="TrueType":type="Type1"),"CIDFontType0C"===subtype&&"CIDFontType0"!==type&&(type="CIDFontType0"),"OpenType"===subtype&&(type="OpenType");var data;switch(type){case"Type1":case"CIDFontType0":this.mimetype="font/opentype";var cff="Type1C"===subtype||"CIDFontType0C"===subtype?new CFFFont(file,properties):new Type1Font(name,file,properties);adjustWidths(properties),data=this.convert(name,cff,properties);break;case"OpenType":case"TrueType":case"CIDFontType2":this.mimetype="font/opentype",data=this.checkAndRepair(name,file,properties),this.isOpenType&&(type="OpenType");break;default:error("Font "+type+" is not supported")}this.data=data,this.fontType=getFontType(type,subtype),this.fontMatrix=properties.fontMatrix,this.widths=properties.widths,this.defaultWidth=properties.defaultWidth,this.encoding=properties.baseEncoding,this.seacMap=properties.seacMap,this.loading=!0}function int16(b0,b1){return(b0<<8)+b1}function int32(b0,b1,b2,b3){return(b0<<24)+(b1<<16)+(b2<<8)+b3}function string16(value){return String.fromCharCode(value>>8&255,255&value)}function safeString16(value){return value=value>32767?32767:-32768>value?-32768:value,String.fromCharCode(value>>8&255,255&value)}function isTrueTypeFile(file){var header=file.peekBytes(4);return 65536===readUint32(header,0)}function adjustMapping(charCodeToGlyphId,properties){var toUnicode=properties.toUnicode,isSymbolic=!!(properties.flags&FontFlags.Symbolic),isIdentityUnicode=properties.toUnicode instanceof IdentityToUnicodeMap,isCidFontType2="CIDFontType2"===properties.type,newMap=Object.create(null),toFontChar=[],usedFontCharCodes=[],nextAvailableFontCharCode=PRIVATE_USE_OFFSET_START;for(var originalCharCode in charCodeToGlyphId){originalCharCode|=0;var glyphId=charCodeToGlyphId[originalCharCode],fontCharCode=originalCharCode;if(!isIdentityUnicode)if(void 0!==toUnicode.get(originalCharCode)){var unicode=toUnicode.get(fontCharCode);1===unicode.length&&(fontCharCode=unicode.charCodeAt(0))}else isCidFontType2&&(fontCharCode=nextAvailableFontCharCode);if((void 0!==usedFontCharCodes[fontCharCode]||31>=fontCharCode||127===fontCharCode||173===fontCharCode||fontCharCode>=128&&159>=fontCharCode||fontCharCode>=65520&&65535>=fontCharCode||isSymbolic&&isIdentityUnicode)&&PRIVATE_USE_OFFSET_END>=nextAvailableFontCharCode)do fontCharCode=nextAvailableFontCharCode++,SKIP_PRIVATE_USE_RANGE_F000_TO_F01F&&61440===fontCharCode&&(fontCharCode=61472,nextAvailableFontCharCode=fontCharCode+1);while(void 0!==usedFontCharCodes[fontCharCode]&&PRIVATE_USE_OFFSET_END>=nextAvailableFontCharCode);newMap[fontCharCode]=glyphId,toFontChar[originalCharCode]=fontCharCode,usedFontCharCodes[fontCharCode]=!0}return{toFontChar:toFontChar,charCodeToGlyphId:newMap,nextAvailableFontCharCode:nextAvailableFontCharCode}}function getRanges(glyphs){var codes=[];for(var charCode in glyphs)codes.push({fontCharCode:0|charCode,glyphId:glyphs[charCode]});codes.sort(function(a,b){return a.fontCharCode-b.fontCharCode});for(var ranges=[],length=codes.length,n=0;length>n;){var start=codes[n].fontCharCode,codeIndices=[codes[n].glyphId];++n;for(var end=start;length>n&&end+1===codes[n].fontCharCode&&(codeIndices.push(codes[n].glyphId),++end,++n,65535!==end););ranges.push([start,end,codeIndices])}return ranges}function createCmapTable(glyphs){var i,ii,j,jj,ranges=getRanges(glyphs),numTables=ranges[ranges.length-1][1]>65535?2:1,cmap="\x00\x00"+string16(numTables)+"\x00\x00"+string32(4+8*numTables);for(i=ranges.length-1;i>=0&&!(ranges[i][0]<=65535);--i);var bmpLength=i+1;ranges[i][0]<65535&&65535===ranges[i][1]&&(ranges[i][1]=65534);var range,start,end,codes,trailingRangesCount=ranges[i][1]<65535?1:0,segCount=bmpLength+trailingRangesCount,searchParams=OpenTypeFileBuilder.getSearchParams(segCount,2),startCount="",endCount="",idDeltas="",idRangeOffsets="",glyphsIds="",bias=0;for(i=0,ii=bmpLength;ii>i;i++){range=ranges[i],start=range[0],end=range[1],startCount+=string16(start),endCount+=string16(end),codes=range[2];var contiguous=!0;for(j=1,jj=codes.length;jj>j;++j)if(codes[j]!==codes[j-1]+1){contiguous=!1;break}if(contiguous){var startCode=codes[0];idDeltas+=string16(startCode-start&65535),idRangeOffsets+=string16(0)}else{var offset=2*(segCount-i)+2*bias;for(bias+=end-start+1,idDeltas+=string16(0),idRangeOffsets+=string16(offset),j=0,jj=codes.length;jj>j;++j)glyphsIds+=string16(codes[j])}}trailingRangesCount>0&&(endCount+="ÿÿ",startCount+="ÿÿ",idDeltas+="\x00",idRangeOffsets+="\x00\x00");var format314="\x00\x00"+string16(2*segCount)+string16(searchParams.range)+string16(searchParams.entry)+string16(searchParams.rangeShift)+endCount+"\x00\x00"+startCount+idDeltas+idRangeOffsets+glyphsIds,format31012="",header31012="";if(numTables>1){for(cmap+="\x00\x00\n"+string32(4+8*numTables+4+format314.length),format31012="",i=0,ii=ranges.length;ii>i;i++){range=ranges[i],start=range[0],codes=range[2];var code=codes[0];for(j=1,jj=codes.length;jj>j;++j)codes[j]!==codes[j-1]+1&&(end=range[0]+j-1,format31012+=string32(start)+string32(end)+string32(code),start=end+1,code=codes[j]);format31012+=string32(start)+string32(range[1])+string32(code)}header31012="\x00\f\x00\x00"+string32(format31012.length+16)+"\x00\x00\x00\x00"+string32(format31012.length/12)}return cmap+"\x00"+string16(format314.length+4)+format314+header31012+format31012}function validateOS2Table(os2){var stream=new Stream(os2.data),version=stream.getUint16();stream.getBytes(60);var selection=stream.getUint16();if(4>version&&768&selection)return!1;var firstChar=stream.getUint16(),lastChar=stream.getUint16();if(firstChar>lastChar)return!1;stream.getBytes(6);var usWinAscent=stream.getUint16();return 0===usWinAscent?!1:(os2.data[8]=os2.data[9]=0,!0)}function createOS2Table(properties,charstrings,override){override=override||{unitsPerEm:0,yMax:0,yMin:0,ascent:0,descent:0};var ulUnicodeRange1=0,ulUnicodeRange2=0,ulUnicodeRange3=0,ulUnicodeRange4=0,firstCharIndex=null,lastCharIndex=0;if(charstrings)for(var code in charstrings){code|=0,(firstCharIndex>code||!firstCharIndex)&&(firstCharIndex=code),code>lastCharIndex&&(lastCharIndex=code);var position=getUnicodeRangeFor(code);32>position?ulUnicodeRange1|=1<<position:64>position?ulUnicodeRange2|=1<<position-32:96>position?ulUnicodeRange3|=1<<position-64:123>position?ulUnicodeRange4|=1<<position-96:error("Unicode ranges Bits > 123 are reserved for internal usage")}else firstCharIndex=0,lastCharIndex=255;var bbox=properties.bbox||[0,0,0,0],unitsPerEm=override.unitsPerEm||1/(properties.fontMatrix||FONT_IDENTITY_MATRIX)[0],scale=properties.ascentScaled?1:unitsPerEm/PDF_GLYPH_SPACE_UNITS,typoAscent=override.ascent||Math.round(scale*(properties.ascent||bbox[3])),typoDescent=override.descent||Math.round(scale*(properties.descent||bbox[1]));typoDescent>0&&properties.descent>0&&bbox[1]<0&&(typoDescent=-typoDescent);var winAscent=override.yMax||typoAscent,winDescent=-override.yMin||-typoDescent;return"\x00$ô\x00\x00\x00Š»\x00\x00\x00ŒŠ»\x00\x00ß\x001\x00\x00\x00\x00"+String.fromCharCode(properties.fixedPitch?9:0)+"\x00\x00\x00\x00\x00\x00"+string32(ulUnicodeRange1)+string32(ulUnicodeRange2)+string32(ulUnicodeRange3)+string32(ulUnicodeRange4)+"*21*"+string16(properties.italicAngle?1:0)+string16(firstCharIndex||properties.firstChar)+string16(lastCharIndex||properties.lastChar)+string16(typoAscent)+string16(typoDescent)+"\x00d"+string16(winAscent)+string16(winDescent)+"\x00\x00\x00\x00\x00\x00\x00\x00"+string16(properties.xHeight)+string16(properties.capHeight)+string16(0)+string16(firstCharIndex||properties.firstChar)+"\x00"}function createPostTable(properties){var angle=Math.floor(properties.italicAngle*Math.pow(2,16));return"\x00\x00\x00"+string32(angle)+"\x00\x00\x00\x00"+string32(properties.fixedPitch)+"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"}function createNameTable(name,proto){proto||(proto=[[],[]]);var i,ii,j,jj,str,strings=[proto[0][0]||"Original licence",proto[0][1]||name,proto[0][2]||"Unknown",proto[0][3]||"uniqueID",proto[0][4]||name,proto[0][5]||"Version 0.11",proto[0][6]||"",proto[0][7]||"Unknown",proto[0][8]||"Unknown",proto[0][9]||"Unknown"],stringsUnicode=[];for(i=0,ii=strings.length;ii>i;i++){str=proto[1][i]||strings[i];var strBufUnicode=[];for(j=0,jj=str.length;jj>j;j++)strBufUnicode.push(string16(str.charCodeAt(j)));stringsUnicode.push(strBufUnicode.join(""))}var names=[strings,stringsUnicode],platforms=["\x00","\x00"],encodings=["\x00\x00","\x00"],languages=["\x00\x00","	"],namesRecordCount=strings.length*platforms.length,nameTable="\x00\x00"+string16(namesRecordCount)+string16(12*namesRecordCount+6),strOffset=0;for(i=0,ii=platforms.length;ii>i;i++){var strs=names[i];for(j=0,jj=strs.length;jj>j;j++){str=strs[j];var nameRecord=platforms[i]+encodings[i]+languages[i]+string16(j)+string16(str.length)+string16(strOffset);nameTable+=nameRecord,strOffset+=str.length}}return nameTable+=strings.join("")+stringsUnicode.join("")}return Font.getFontID=function(){var ID=1;return function(){return String(ID++)}}(),Font.prototype={name:null,font:null,mimetype:null,encoding:null,get renderer(){var renderer=FontRendererFactory.create(this);return shadow(this,"renderer",renderer)},exportData:function(){var data={};for(var i in this)this.hasOwnProperty(i)&&(data[i]=this[i]);return data},checkAndRepair:function(name,font,properties){function readTableEntry(file){var tag=bytesToString(file.getBytes(4)),checksum=file.getInt32(),offset=file.getInt32()>>>0,length=file.getInt32()>>>0,previousPosition=file.pos;file.pos=file.start?file.start:0,file.skip(offset);var data=file.getBytes(length);return file.pos=previousPosition,"head"===tag&&(data[8]=data[9]=data[10]=data[11]=0,data[17]|=32),{tag:tag,checksum:checksum,length:length,offset:offset,data:data}}function readOpenTypeHeader(ttf){return{version:bytesToString(ttf.getBytes(4)),numTables:ttf.getUint16(),searchRange:ttf.getUint16(),entrySelector:ttf.getUint16(),rangeShift:ttf.getUint16()}}function readCmapTable(cmap,font,isSymbolicFont){var segment,start=(font.start?font.start:0)+cmap.offset;font.pos=start;for(var potentialTable,numTables=(font.getUint16(),font.getUint16()),canBreak=!1,i=0;numTables>i;i++){var platformId=font.getUint16(),encodingId=font.getUint16(),offset=font.getInt32()>>>0,useTable=!1;if(1===platformId&&0===encodingId?useTable=!0:isSymbolicFont||3!==platformId||1!==encodingId?isSymbolicFont&&3===platformId&&0===encodingId&&(useTable=!0,canBreak=!0):(useTable=!0,canBreak=!0),useTable&&(potentialTable={platformId:platformId,encodingId:encodingId,offset:offset}),canBreak)break}if(!potentialTable)return warn("Could not find a preferred cmap table."),{platformId:-1,encodingId:-1,mappings:[],hasShortCmap:!1};font.pos=start+potentialTable.offset;var j,glyphId,format=font.getUint16(),hasShortCmap=(font.getUint16(),font.getUint16(),!1),mappings=[];if(0===format){for(j=0;256>j;j++){var index=font.getByte();index&&mappings.push({charCode:j,glyphId:index})}hasShortCmap=!0}else if(4===format){var segCount=font.getUint16()>>1;font.getBytes(6);var segIndex,segments=[];for(segIndex=0;segCount>segIndex;segIndex++)segments.push({end:font.getUint16()});for(font.getUint16(),segIndex=0;segCount>segIndex;segIndex++)segments[segIndex].start=font.getUint16();for(segIndex=0;segCount>segIndex;segIndex++)segments[segIndex].delta=font.getUint16();var offsetsCount=0;for(segIndex=0;segCount>segIndex;segIndex++){segment=segments[segIndex];var rangeOffset=font.getUint16();if(rangeOffset){var offsetIndex=(rangeOffset>>1)-(segCount-segIndex);segment.offsetIndex=offsetIndex,offsetsCount=Math.max(offsetsCount,offsetIndex+segment.end-segment.start+1)}else segment.offsetIndex=-1}var offsets=[];for(j=0;offsetsCount>j;j++)offsets.push(font.getUint16());for(segIndex=0;segCount>segIndex;segIndex++){segment=segments[segIndex],start=segment.start;var end=segment.end,delta=segment.delta;for(offsetIndex=segment.offsetIndex,j=start;end>=j;j++)65535!==j&&(glyphId=0>offsetIndex?j:offsets[offsetIndex+j-start],glyphId=glyphId+delta&65535,0!==glyphId&&mappings.push({charCode:j,glyphId:glyphId}))}}else if(6===format){var firstCode=font.getUint16(),entryCount=font.getUint16();for(j=0;entryCount>j;j++){glyphId=font.getUint16();var charCode=firstCode+j;mappings.push({charCode:charCode,glyphId:glyphId})}}else error("cmap table has unsupported format: "+format);for(mappings.sort(function(a,b){return a.charCode-b.charCode}),i=1;i<mappings.length;i++)mappings[i-1].charCode===mappings[i].charCode&&(mappings.splice(i,1),i--);return{platformId:potentialTable.platformId,encodingId:potentialTable.encodingId,mappings:mappings,hasShortCmap:hasShortCmap}}function sanitizeMetrics(font,header,metrics,numGlyphs){if(!header)return void(metrics&&(metrics.data=null));font.pos=(font.start?font.start:0)+header.offset,font.pos+=header.length-2;var numOfMetrics=font.getUint16();numOfMetrics>numGlyphs&&(info("The numOfMetrics ("+numOfMetrics+") should not be greater than the numGlyphs ("+numGlyphs+")"),numOfMetrics=numGlyphs,header.data[34]=(65280&numOfMetrics)>>8,header.data[35]=255&numOfMetrics);var numOfSidebearings=numGlyphs-numOfMetrics,numMissing=numOfSidebearings-(metrics.length-4*numOfMetrics>>1);if(numMissing>0){var entries=new Uint8Array(metrics.length+2*numMissing);entries.set(metrics.data),metrics.data=entries}}function sanitizeGlyph(source,sourceStart,sourceEnd,dest,destStart,hintsValid){if(12>=sourceEnd-sourceStart)return 0;var glyf=source.subarray(sourceStart,sourceEnd),contoursCount=glyf[0]<<8|glyf[1];if(32768&contoursCount)return dest.set(glyf,destStart),glyf.length;var i,j=10,flagsCount=0;for(i=0;contoursCount>i;i++){var endPoint=glyf[j]<<8|glyf[j+1];flagsCount=endPoint+1,j+=2}var instructionsStart=j,instructionsLength=glyf[j]<<8|glyf[j+1];j+=2+instructionsLength;var instructionsEnd=j,coordinatesLength=0;for(i=0;flagsCount>i;i++){var flag=glyf[j++];192&flag&&(glyf[j-1]=63&flag);var xyLength=(2&flag?1:16&flag?0:2)+(4&flag?1:32&flag?0:2);if(coordinatesLength+=xyLength,8&flag){var repeat=glyf[j++];i+=repeat,coordinatesLength+=repeat*xyLength}}if(0===coordinatesLength)return 0;var glyphDataLength=j+coordinatesLength;return glyphDataLength>glyf.length?0:!hintsValid&&instructionsLength>0?(dest.set(glyf.subarray(0,instructionsStart),destStart),dest.set([0,0],destStart+instructionsStart),dest.set(glyf.subarray(instructionsEnd,glyphDataLength),destStart+instructionsStart+2),glyphDataLength-=instructionsLength,glyf.length-glyphDataLength>3&&(glyphDataLength=glyphDataLength+3&-4),glyphDataLength):glyf.length-glyphDataLength>3?(glyphDataLength=glyphDataLength+3&-4,dest.set(glyf.subarray(0,glyphDataLength),destStart),glyphDataLength):(dest.set(glyf,destStart),glyf.length)}function sanitizeHead(head,numGlyphs,locaLength){var data=head.data,version=int32(data[0],data[1],data[2],data[3]);version>>16!==1&&(info("Attempting to fix invalid version in head table: "+version),data[0]=0,data[1]=1,data[2]=0,data[3]=0);var indexToLocFormat=int16(data[50],data[51]);if(0>indexToLocFormat||indexToLocFormat>1){info("Attempting to fix invalid indexToLocFormat in head table: "+indexToLocFormat);var numGlyphsPlusOne=numGlyphs+1;locaLength===numGlyphsPlusOne<<1?(data[50]=0,data[51]=0):locaLength===numGlyphsPlusOne<<2?(data[50]=0,data[51]=1):warn("Could not fix indexToLocFormat: "+indexToLocFormat)}}function sanitizeGlyphLocations(loca,glyf,numGlyphs,isGlyphLocationsLong,hintsValid,dupFirstEntry){var itemSize,itemDecode,itemEncode;isGlyphLocationsLong?(itemSize=4,itemDecode=function(data,offset){return data[offset]<<24|data[offset+1]<<16|data[offset+2]<<8|data[offset+3]},itemEncode=function(data,offset,value){data[offset]=value>>>24&255,data[offset+1]=value>>16&255,data[offset+2]=value>>8&255,data[offset+3]=255&value}):(itemSize=2,itemDecode=function(data,offset){return data[offset]<<9|data[offset+1]<<1},itemEncode=function(data,offset,value){data[offset]=value>>9&255,data[offset+1]=value>>1&255});var locaData=loca.data,locaDataSize=itemSize*(1+numGlyphs);locaData.length!==locaDataSize&&(locaData=new Uint8Array(locaDataSize),locaData.set(loca.data.subarray(0,locaDataSize)),loca.data=locaData);var oldGlyfData=glyf.data,oldGlyfDataLength=oldGlyfData.length,newGlyfData=new Uint8Array(oldGlyfDataLength),startOffset=itemDecode(locaData,0),writeOffset=0;itemEncode(locaData,0,writeOffset);var i,j;for(i=0,j=itemSize;numGlyphs>i;i++,j+=itemSize){var endOffset=itemDecode(locaData,j);if(endOffset>oldGlyfDataLength&&(oldGlyfDataLength+3&-4)===endOffset&&(endOffset=oldGlyfDataLength),endOffset>oldGlyfDataLength)itemEncode(locaData,j,writeOffset),startOffset=endOffset;else{var newLength=sanitizeGlyph(oldGlyfData,startOffset,endOffset,newGlyfData,writeOffset,hintsValid);writeOffset+=newLength,itemEncode(locaData,j,writeOffset),startOffset=endOffset}}if(0===writeOffset){var simpleGlyph=new Uint8Array([0,1,0,0,0,0,0,0,0,0,0,0,0,0,49,0]);for(i=0,j=itemSize;numGlyphs>i;i++,j+=itemSize)itemEncode(locaData,j,simpleGlyph.length);return void(glyf.data=simpleGlyph)}if(dupFirstEntry){var firstEntryLength=itemDecode(locaData,itemSize);newGlyfData.length>firstEntryLength+writeOffset?glyf.data=newGlyfData.subarray(0,firstEntryLength+writeOffset):(glyf.data=new Uint8Array(firstEntryLength+writeOffset),glyf.data.set(newGlyfData.subarray(0,writeOffset))),glyf.data.set(newGlyfData.subarray(0,firstEntryLength),writeOffset),itemEncode(loca.data,locaData.length-itemSize,writeOffset+firstEntryLength)}else glyf.data=newGlyfData.subarray(0,writeOffset)}function readPostScriptTable(post,properties,maxpNumGlyphs){var start=(font.start?font.start:0)+post.offset;font.pos=start;var length=post.length,end=start+length,version=font.getInt32();font.getBytes(28);var glyphNames,i,valid=!0;switch(version){case 65536:glyphNames=MacStandardGlyphOrdering;break;case 131072:var numGlyphs=font.getUint16();if(numGlyphs!==maxpNumGlyphs){valid=!1;break}var glyphNameIndexes=[];for(i=0;numGlyphs>i;++i){var index=font.getUint16();if(index>=32768){valid=!1;break}glyphNameIndexes.push(index)}if(!valid)break;for(var customNames=[],strBuf=[];font.pos<end;){var stringLength=font.getByte();for(strBuf.length=stringLength,i=0;stringLength>i;++i)strBuf[i]=String.fromCharCode(font.getByte());customNames.push(strBuf.join(""))}for(glyphNames=[],i=0;numGlyphs>i;++i){var j=glyphNameIndexes[i];glyphNames.push(258>j?MacStandardGlyphOrdering[j]:customNames[j-258])}break;case 196608:break;default:warn("Unknown/unsupported post table version "+version),valid=!1}return properties.glyphNames=glyphNames,valid}function readNameTable(nameTable){var start=(font.start?font.start:0)+nameTable.offset;font.pos=start;var names=[[],[]],length=nameTable.length,end=start+length,format=font.getUint16(),FORMAT_0_HEADER_LENGTH=6;if(0!==format||FORMAT_0_HEADER_LENGTH>length)return names;var i,ii,numRecords=font.getUint16(),stringsStart=font.getUint16(),records=[],NAME_RECORD_LENGTH=12;for(i=0;numRecords>i&&font.pos+NAME_RECORD_LENGTH<=end;i++){var r={platform:font.getUint16(),encoding:font.getUint16(),language:font.getUint16(),name:font.getUint16(),length:font.getUint16(),offset:font.getUint16()};(1===r.platform&&0===r.encoding&&0===r.language||3===r.platform&&1===r.encoding&&1033===r.language)&&records.push(r)}for(i=0,ii=records.length;ii>i;i++){var record=records[i],pos=start+stringsStart+record.offset;if(!(pos+record.length>end)){font.pos=pos;var nameIndex=record.name;if(record.encoding){for(var str="",j=0,jj=record.length;jj>j;j+=2)str+=String.fromCharCode(font.getUint16());names[1][nameIndex]=str}else names[0][nameIndex]=bytesToString(font.getBytes(record.length))}}return names}function sanitizeTTProgram(table,ttContext){for(var j,n,b,funcId,pc,data=table.data,i=0,lastEndf=0,lastDeff=0,stack=[],callstack=[],functionsCalled=[],tooComplexToFollowFunctions=ttContext.tooComplexToFollowFunctions,inFDEF=!1,ifLevel=0,inELSE=0,ii=data.length;ii>i;){var op=data[i++];if(64===op)if(n=data[i++],inFDEF||inELSE)i+=n;else for(j=0;n>j;j++)stack.push(data[i++]);else if(65===op)if(n=data[i++],inFDEF||inELSE)i+=2*n;else for(j=0;n>j;j++)b=data[i++],stack.push(b<<8|data[i++]);else if(176===(248&op))if(n=op-176+1,inFDEF||inELSE)i+=n;else for(j=0;n>j;j++)stack.push(data[i++]);else if(184===(248&op))if(n=op-184+1,inFDEF||inELSE)i+=2*n;else for(j=0;n>j;j++)b=data[i++],stack.push(b<<8|data[i++]);else if(43!==op||tooComplexToFollowFunctions)if(44!==op||tooComplexToFollowFunctions){if(45===op)if(inFDEF)inFDEF=!1,lastEndf=i;else{if(pc=callstack.pop(),!pc)return warn("TT: ENDF bad stack"),void(ttContext.hintsValid=!1);funcId=functionsCalled.pop(),data=pc.data,i=pc.i,ttContext.functionsStackDeltas[funcId]=stack.length-pc.stackTop}else if(137===op)(inFDEF||inELSE)&&(warn("TT: nested IDEFs not allowed"),tooComplexToFollowFunctions=!0),inFDEF=!0,lastDeff=i;else if(88===op)++ifLevel;else if(27===op)inELSE=ifLevel;else if(89===op)inELSE===ifLevel&&(inELSE=0),--ifLevel;else if(28===op&&!inFDEF&&!inELSE){var offset=stack[stack.length-1];offset>0&&(i+=offset-1)}}else(inFDEF||inELSE)&&(warn("TT: nested FDEFs not allowed"),tooComplexToFollowFunctions=!0),inFDEF=!0,lastDeff=i,funcId=stack.pop(),ttContext.functionsDefined[funcId]={data:data,i:i};else if(!inFDEF&&!inELSE)if(funcId=stack[stack.length-1],ttContext.functionsUsed[funcId]=!0,funcId in ttContext.functionsStackDeltas)stack.length+=ttContext.functionsStackDeltas[funcId];else if(funcId in ttContext.functionsDefined&&functionsCalled.indexOf(funcId)<0){if(callstack.push({data:data,i:i,stackTop:stack.length-1}),functionsCalled.push(funcId),pc=ttContext.functionsDefined[funcId],!pc)return warn("TT: CALL non-existent function"),void(ttContext.hintsValid=!1);data=pc.data,i=pc.i}if(!inFDEF&&!inELSE){var stackDelta=142>=op?TTOpsStackDeltas[op]:op>=192&&223>=op?-1:op>=224?-2:0;for(op>=113&&117>=op&&(n=stack.pop(),n===n&&(stackDelta=2*-n));0>stackDelta&&stack.length>0;)stack.pop(),stackDelta++;for(;stackDelta>0;)stack.push(0/0),stackDelta--}}ttContext.tooComplexToFollowFunctions=tooComplexToFollowFunctions;var content=[data];i>data.length&&content.push(new Uint8Array(i-data.length)),lastDeff>lastEndf&&(warn("TT: complementing a missing function tail"),content.push(new Uint8Array([34,45]))),foldTTTable(table,content)}function checkInvalidFunctions(ttContext,maxFunctionDefs){if(!ttContext.tooComplexToFollowFunctions){if(ttContext.functionsDefined.length>maxFunctionDefs)return warn("TT: more functions defined than expected"),void(ttContext.hintsValid=!1);for(var j=0,jj=ttContext.functionsUsed.length;jj>j;j++){if(j>maxFunctionDefs)return warn("TT: invalid function id: "+j),void(ttContext.hintsValid=!1);if(ttContext.functionsUsed[j]&&!ttContext.functionsDefined[j])return warn("TT: undefined function: "+j),void(ttContext.hintsValid=!1)}}}function foldTTTable(table,content){if(content.length>1){var j,jj,newLength=0;for(j=0,jj=content.length;jj>j;j++)newLength+=content[j].length;newLength=newLength+3&-4;var result=new Uint8Array(newLength),pos=0;for(j=0,jj=content.length;jj>j;j++)result.set(content[j],pos),pos+=content[j].length;table.data=result,table.length=newLength}}function sanitizeTTPrograms(fpgm,prep,cvt){var ttContext={functionsDefined:[],functionsUsed:[],functionsStackDeltas:[],tooComplexToFollowFunctions:!1,hintsValid:!0};if(fpgm&&sanitizeTTProgram(fpgm,ttContext),prep&&sanitizeTTProgram(prep,ttContext),fpgm&&checkInvalidFunctions(ttContext,maxFunctionDefs),cvt&&1&cvt.length){var cvtData=new Uint8Array(cvt.length+1);cvtData.set(cvt.data),cvt.data=cvtData}return ttContext.hintsValid}var TTOpsStackDeltas=[0,0,0,0,0,0,0,0,-2,-2,-2,-2,0,0,-2,-5,-1,-1,-1,-1,-1,-1,-1,-1,0,0,-1,0,-1,-1,-1,-1,1,-1,-999,0,1,0,-1,-2,0,-1,-2,-1,-1,0,-1,-1,0,0,-999,-999,-1,-1,-1,-1,-2,-999,-2,-2,-999,0,-2,-2,0,0,-2,0,-2,0,0,0,-2,-1,-1,1,1,0,0,-1,-1,-1,-1,-1,-1,-1,0,0,-1,0,-1,-1,0,-999,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,-2,-999,-999,-999,-999,-999,-1,-1,-2,-2,0,0,0,0,-1,-1,-999,-2,-2,0,0,-1,-2,-2,0,0,0,-1,-1,-1,-2];font=new Stream(new Uint8Array(font.getBytes()));for(var cff,cffFile,table,VALID_TABLES=["OS/2","cmap","head","hhea","hmtx","maxp","name","post","loca","glyf","fpgm","prep","cvt ","CFF "],header=readOpenTypeHeader(font),numTables=header.numTables,tables={"OS/2":null,cmap:null,head:null,hhea:null,hmtx:null,maxp:null,name:null,post:null},i=0;numTables>i;i++)table=readTableEntry(font),VALID_TABLES.indexOf(table.tag)<0||0!==table.length&&(tables[table.tag]=table);var isTrueType=!tables["CFF "];if(isTrueType)tables.glyf&&tables.loca||error('Required "glyf" or "loca" tables are not found'),this.isOpenType=!1;else{if(!(tables.head&&tables.hhea&&tables.maxp&&tables.post))return cffFile=new Stream(tables["CFF "].data),cff=new CFFFont(cffFile,properties),this.convert(name,cff,properties);delete tables.glyf,delete tables.loca,delete tables.fpgm,delete tables.prep,delete tables["cvt "],this.isOpenType=!0}tables.maxp||error('Required "maxp" table is not found'),font.pos=(font.start||0)+tables.maxp.offset;var version=font.getInt32(),numGlyphs=font.getUint16(),maxFunctionDefs=0;
if(version>=65536&&tables.maxp.length>=22){font.pos+=8;var maxZones=font.getUint16();maxZones>2&&(tables.maxp.data[14]=0,tables.maxp.data[15]=2),font.pos+=4,maxFunctionDefs=font.getUint16()}var dupFirstEntry=!1;"CIDFontType2"===properties.type&&properties.toUnicode&&properties.toUnicode.get(0)>"\x00"&&(dupFirstEntry=!0,numGlyphs++,tables.maxp.data[4]=numGlyphs>>8,tables.maxp.data[5]=255&numGlyphs);var hintsValid=sanitizeTTPrograms(tables.fpgm,tables.prep,tables["cvt "],maxFunctionDefs);if(hintsValid||(delete tables.fpgm,delete tables.prep,delete tables["cvt "]),sanitizeMetrics(font,tables.hhea,tables.hmtx,numGlyphs),tables.head||error('Required "head" table is not found'),sanitizeHead(tables.head,numGlyphs,isTrueType?tables.loca.length:0),isTrueType){var isGlyphLocationsLong=int16(tables.head.data[50],tables.head.data[51]);sanitizeGlyphLocations(tables.loca,tables.glyf,numGlyphs,isGlyphLocationsLong,hintsValid,dupFirstEntry)}if(tables.hhea||error('Required "hhea" table is not found'),0===tables.hhea.data[10]&&0===tables.hhea.data[11]&&(tables.hhea.data[10]=255,tables.hhea.data[11]=255),tables.post){var valid=readPostScriptTable(tables.post,properties,numGlyphs);valid||(tables.post=null)}var charCode,charCodeToGlyphId=[];if("CIDFontType2"===properties.type){var cidToGidMap=properties.cidToGidMap||[],cidToGidMapLength=cidToGidMap.length;properties.cMap.forEach(function(charCode,cid){assert(65535>=cid,"Max size of CID is 65,535");var glyphId=-1;0===cidToGidMapLength?glyphId=charCode:void 0!==cidToGidMap[cid]&&(glyphId=cidToGidMap[cid]),glyphId>=0&&numGlyphs>glyphId&&(charCodeToGlyphId[charCode]=glyphId)}),dupFirstEntry&&(charCodeToGlyphId[0]=numGlyphs-1)}else{var cmapTable=readCmapTable(tables.cmap,font,this.isSymbolicFont),cmapPlatformId=cmapTable.platformId,cmapEncodingId=cmapTable.encodingId,cmapMappings=cmapTable.mappings,cmapMappingsLength=cmapMappings.length,hasEncoding=properties.differences.length||!!properties.baseEncodingName;if(hasEncoding&&(3===cmapPlatformId&&1===cmapEncodingId||1===cmapPlatformId&&0===cmapEncodingId)||-1===cmapPlatformId&&-1===cmapEncodingId&&Encodings[properties.baseEncodingName]){var baseEncoding=[];for(("MacRomanEncoding"===properties.baseEncodingName||"WinAnsiEncoding"===properties.baseEncodingName)&&(baseEncoding=Encodings[properties.baseEncodingName]),charCode=0;256>charCode;charCode++){var glyphName;if(glyphName=this.differences&&charCode in this.differences?this.differences[charCode]:charCode in baseEncoding&&""!==baseEncoding[charCode]?baseEncoding[charCode]:Encodings.StandardEncoding[charCode]){var unicodeOrCharCode;3===cmapPlatformId&&1===cmapEncodingId?unicodeOrCharCode=GlyphsUnicode[glyphName]:1===cmapPlatformId&&0===cmapEncodingId&&(unicodeOrCharCode=Encodings.MacRomanEncoding.indexOf(glyphName));var found=!1;for(i=0;cmapMappingsLength>i;++i)if(cmapMappings[i].charCode===unicodeOrCharCode){charCodeToGlyphId[charCode]=cmapMappings[i].glyphId,found=!0;break}if(!found&&properties.glyphNames){var glyphId=properties.glyphNames.indexOf(glyphName);glyphId>0&&(charCodeToGlyphId[charCode]=glyphId)}}}}else for(i=0;cmapMappingsLength>i;++i)charCode=255&cmapMappings[i].charCode,charCodeToGlyphId[charCode]=cmapMappings[i].glyphId}0===charCodeToGlyphId.length&&(charCodeToGlyphId[0]=0);var newMapping=adjustMapping(charCodeToGlyphId,properties);if(this.toFontChar=newMapping.toFontChar,tables.cmap={tag:"cmap",data:createCmapTable(newMapping.charCodeToGlyphId)},!tables["OS/2"]||!validateOS2Table(tables["OS/2"])){var override={unitsPerEm:int16(tables.head.data[18],tables.head.data[19]),yMax:int16(tables.head.data[42],tables.head.data[43]),yMin:int16(tables.head.data[38],tables.head.data[39])-65536,ascent:int16(tables.hhea.data[4],tables.hhea.data[5]),descent:int16(tables.hhea.data[6],tables.hhea.data[7])-65536};tables["OS/2"]={tag:"OS/2",data:createOS2Table(properties,newMapping.charCodeToGlyphId,override)}}if(tables.post||(tables.post={tag:"post",data:createPostTable(properties)}),!isTrueType)try{cffFile=new Stream(tables["CFF "].data);var parser=new CFFParser(cffFile,properties);cff=parser.parse();var compiler=new CFFCompiler(cff);tables["CFF "].data=compiler.compile()}catch(e){warn("Failed to compile font "+properties.loadedName)}if(tables.name){var namePrototype=readNameTable(tables.name);tables.name.data=createNameTable(name,namePrototype)}else tables.name={tag:"name",data:createNameTable(this.name)};var builder=new OpenTypeFileBuilder(header.version);for(var tableTag in tables)builder.addTable(tableTag,tables[tableTag].data);return builder.toArray()},convert:function(fontName,font,properties){function getCharCodes(charCodeToGlyphId,glyphId){var charCodes=null;for(var charCode in charCodeToGlyphId)glyphId===charCodeToGlyphId[charCode]&&(charCodes||(charCodes=[]),charCodes.push(0|charCode));return charCodes}function createCharCode(charCodeToGlyphId,glyphId){for(var charCode in charCodeToGlyphId)if(glyphId===charCodeToGlyphId[charCode])return 0|charCode;return newMapping.charCodeToGlyphId[newMapping.nextAvailableFontCharCode]=glyphId,newMapping.nextAvailableFontCharCode++}properties.fixedPitch=!1;var mapping=font.getGlyphMapping(properties),newMapping=adjustMapping(mapping,properties);this.toFontChar=newMapping.toFontChar;var numGlyphs=font.numGlyphs,seacs=font.seacs;if(SEAC_ANALYSIS_ENABLED&&seacs&&seacs.length){var matrix=properties.fontMatrix||FONT_IDENTITY_MATRIX,charset=font.getCharset(),seacMap=Object.create(null);for(var glyphId in seacs){glyphId|=0;var seac=seacs[glyphId],baseGlyphName=Encodings.StandardEncoding[seac[2]],accentGlyphName=Encodings.StandardEncoding[seac[3]],baseGlyphId=charset.indexOf(baseGlyphName),accentGlyphId=charset.indexOf(accentGlyphName);if(!(0>baseGlyphId||0>accentGlyphId)){var accentOffset={x:seac[0]*matrix[0]+seac[1]*matrix[2]+matrix[4],y:seac[0]*matrix[1]+seac[1]*matrix[3]+matrix[5]},charCodes=getCharCodes(mapping,glyphId);if(charCodes)for(var i=0,ii=charCodes.length;ii>i;i++){var charCode=charCodes[i],charCodeToGlyphId=newMapping.charCodeToGlyphId,baseFontCharCode=createCharCode(charCodeToGlyphId,baseGlyphId),accentFontCharCode=createCharCode(charCodeToGlyphId,accentGlyphId);seacMap[charCode]={baseFontCharCode:baseFontCharCode,accentFontCharCode:accentFontCharCode,accentOffset:accentOffset}}}}properties.seacMap=seacMap}var unitsPerEm=1/(properties.fontMatrix||FONT_IDENTITY_MATRIX)[0],builder=new OpenTypeFileBuilder("OTTO");return builder.addTable("CFF ",font.data),builder.addTable("OS/2",createOS2Table(properties,newMapping.charCodeToGlyphId)),builder.addTable("cmap",createCmapTable(newMapping.charCodeToGlyphId)),builder.addTable("head","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00_<õ\x00\x00"+safeString16(unitsPerEm)+"\x00\x00\x00\x00ž~'\x00\x00\x00\x00ž~'\x00\x00"+safeString16(properties.descent)+"ÿ"+safeString16(properties.ascent)+string16(properties.italicAngle?2:0)+"\x00\x00\x00\x00\x00\x00\x00"),builder.addTable("hhea","\x00\x00\x00"+safeString16(properties.ascent)+safeString16(properties.descent)+"\x00\x00ÿÿ\x00\x00\x00\x00\x00\x00"+safeString16(properties.capHeight)+safeString16(Math.tan(properties.italicAngle)*properties.xHeight)+"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"+string16(numGlyphs)),builder.addTable("hmtx",function(){for(var charstrings=font.charstrings,cffWidths=font.cff?font.cff.widths:null,hmtx="\x00\x00\x00\x00",i=1,ii=numGlyphs;ii>i;i++){var width=0;if(charstrings){var charstring=charstrings[i-1];width="width"in charstring?charstring.width:0}else cffWidths&&(width=Math.ceil(cffWidths[i]||0));hmtx+=string16(width)+string16(0)}return hmtx}()),builder.addTable("maxp","\x00\x00P\x00"+string16(numGlyphs)),builder.addTable("name",createNameTable(fontName)),builder.addTable("post",createPostTable(properties)),builder.toArray()},buildToUnicode:function(properties){if(properties.toUnicode&&0!==properties.toUnicode.length)return properties.toUnicode;var toUnicode,charcode;if(!properties.composite){toUnicode=[];var encoding=properties.defaultEncoding.slice(),baseEncodingName=properties.baseEncodingName,differences=properties.differences;for(charcode in differences)encoding[charcode]=differences[charcode];for(charcode in encoding){var glyphName=encoding[charcode];if(""!==glyphName)if(void 0!==GlyphsUnicode[glyphName])toUnicode[charcode]=String.fromCharCode(GlyphsUnicode[glyphName]);else{var code=0;switch(glyphName[0]){case"G":3===glyphName.length&&(code=parseInt(glyphName.substr(1),16));break;case"g":5===glyphName.length&&(code=parseInt(glyphName.substr(1),16));break;case"C":case"c":glyphName.length>=3&&(code=+glyphName.substr(1))}if(code){if(baseEncodingName&&code===+charcode){var baseEncoding=Encodings[baseEncodingName];if(baseEncoding&&(glyphName=baseEncoding[charcode])){toUnicode[charcode]=String.fromCharCode(GlyphsUnicode[glyphName]);continue}}toUnicode[charcode]=String.fromCharCode(code)}}}return new ToUnicodeMap(toUnicode)}if(properties.composite&&(properties.cMap.builtInCMap&&!(properties.cMap instanceof IdentityCMap)||"Adobe"===properties.cidSystemInfo.registry&&("GB1"===properties.cidSystemInfo.ordering||"CNS1"===properties.cidSystemInfo.ordering||"Japan1"===properties.cidSystemInfo.ordering||"Korea1"===properties.cidSystemInfo.ordering))){var registry=properties.cidSystemInfo.registry,ordering=properties.cidSystemInfo.ordering,ucs2CMapName=new Name(registry+"-"+ordering+"-UCS2"),ucs2CMap=CMapFactory.create(ucs2CMapName,{url:PDFJS.cMapUrl,packed:PDFJS.cMapPacked},null),cMap=properties.cMap;return toUnicode=[],cMap.forEach(function(charcode,cid){assert(65535>=cid,"Max size of CID is 65,535");var ucs2=ucs2CMap.lookup(cid);ucs2&&(toUnicode[charcode]=String.fromCharCode((ucs2.charCodeAt(0)<<8)+ucs2.charCodeAt(1)))}),new ToUnicodeMap(toUnicode)}return new IdentityToUnicodeMap(properties.firstChar,properties.lastChar)},get spaceWidth(){if("_shadowWidth"in this)return this._shadowWidth;for(var width,possibleSpaceReplacements=["space","minus","one","i"],i=0,ii=possibleSpaceReplacements.length;ii>i;i++){var glyphName=possibleSpaceReplacements[i];if(glyphName in this.widths){width=this.widths[glyphName];break}var glyphUnicode=GlyphsUnicode[glyphName],charcode=0;if(this.composite&&this.cMap.contains(glyphUnicode)&&(charcode=this.cMap.lookup(glyphUnicode)),!charcode&&"toUnicode"in this&&(charcode=this.toUnicode.charCodeOf(glyphUnicode)),0>=charcode&&(charcode=glyphUnicode),width=this.widths[charcode])break}return width=width||this.defaultWidth,this._shadowWidth=width,width},charToGlyph:function(charcode){var fontCharCode,width,operatorListId,widthCode=charcode;this.cMap&&this.cMap.contains(charcode)&&(widthCode=this.cMap.lookup(charcode)),width=this.widths[widthCode],width=isNum(width)?width:this.defaultWidth;var vmetric=this.vmetrics&&this.vmetrics[widthCode],unicode=this.toUnicode.get(charcode)||charcode;"number"==typeof unicode&&(unicode=String.fromCharCode(unicode)),fontCharCode=this.toFontChar[charcode]||charcode,this.missingFile&&(fontCharCode=mapSpecialUnicodeValues(fontCharCode)),this.isType3Font&&(operatorListId=fontCharCode);var accent=null;if(this.seacMap&&this.seacMap[charcode]){var seac=this.seacMap[charcode];fontCharCode=seac.baseFontCharCode,accent={fontChar:String.fromCharCode(seac.accentFontCharCode),offset:seac.accentOffset}}var fontChar=String.fromCharCode(fontCharCode),glyph=this.glyphCache[charcode];return glyph&&glyph.matchesForCache(fontChar,unicode,accent,width,vmetric,operatorListId)||(glyph=new Glyph(fontChar,unicode,accent,width,vmetric,operatorListId),this.glyphCache[charcode]=glyph),glyph},charsToGlyphs:function(chars){var glyphs,glyph,charcode,charsCache=this.charsCache;if(charsCache&&(glyphs=charsCache[chars]))return glyphs;charsCache||(charsCache=this.charsCache=Object.create(null)),glyphs=[];var ii,charsCacheKey=chars,i=0;if(this.cMap)for(var c={};i<chars.length;){this.cMap.readCharCode(chars,i,c),charcode=c.charcode;var length=c.length;i+=length,glyph=this.charToGlyph(charcode),glyphs.push(glyph),1===length&&32===chars.charCodeAt(i-1)&&glyphs.push(null)}else for(i=0,ii=chars.length;ii>i;++i)charcode=chars.charCodeAt(i),glyph=this.charToGlyph(charcode),glyphs.push(glyph),32===charcode&&glyphs.push(null);return charsCache[charsCacheKey]=glyphs}},Font}(),ErrorFont=function(){function ErrorFont(error){this.error=error,this.loadedName="g_font_error",this.loading=!1}return ErrorFont.prototype={charsToGlyphs:function(){return[]},exportData:function(){return{error:this.error}}},ErrorFont}(),Type1CharString=function(){function Type1CharString(){this.width=0,this.lsb=0,this.flexing=!1,this.output=[],this.stack=[]}var COMMAND_MAP={hstem:[1],vstem:[3],vmoveto:[4],rlineto:[5],hlineto:[6],vlineto:[7],rrcurveto:[8],callsubr:[10],flex:[12,35],drop:[12,18],endchar:[14],rmoveto:[21],hmoveto:[22],vhcurveto:[30],hvcurveto:[31]};return Type1CharString.prototype={convert:function(encoded,subrs){for(var wx,sbx,subrNumber,count=encoded.length,error=!1,i=0;count>i;i++){var value=encoded[i];if(32>value){switch(12===value&&(value=(value<<8)+encoded[++i]),value){case 1:if(!HINTING_ENABLED){this.stack=[];break}error=this.executeCommand(2,COMMAND_MAP.hstem);break;case 3:if(!HINTING_ENABLED){this.stack=[];break}error=this.executeCommand(2,COMMAND_MAP.vstem);break;case 4:if(this.flexing){if(this.stack.length<1){error=!0;break}var dy=this.stack.pop();this.stack.push(0,dy);break}error=this.executeCommand(1,COMMAND_MAP.vmoveto);break;case 5:error=this.executeCommand(2,COMMAND_MAP.rlineto);break;case 6:error=this.executeCommand(1,COMMAND_MAP.hlineto);break;case 7:error=this.executeCommand(1,COMMAND_MAP.vlineto);break;case 8:error=this.executeCommand(6,COMMAND_MAP.rrcurveto);break;case 9:this.stack=[];break;case 10:if(this.stack.length<1){error=!0;break}subrNumber=this.stack.pop(),error=this.convert(subrs[subrNumber],subrs);break;case 11:return error;case 13:if(this.stack.length<2){error=!0;break}wx=this.stack.pop(),sbx=this.stack.pop(),this.lsb=sbx,this.width=wx,this.stack.push(wx,sbx),error=this.executeCommand(2,COMMAND_MAP.hmoveto);break;case 14:this.output.push(COMMAND_MAP.endchar[0]);break;case 21:if(this.flexing)break;error=this.executeCommand(2,COMMAND_MAP.rmoveto);break;case 22:if(this.flexing){this.stack.push(0);break}error=this.executeCommand(1,COMMAND_MAP.hmoveto);break;case 30:error=this.executeCommand(4,COMMAND_MAP.vhcurveto);break;case 31:error=this.executeCommand(4,COMMAND_MAP.hvcurveto);break;case 3072:this.stack=[];break;case 3073:if(!HINTING_ENABLED){this.stack=[];break}error=this.executeCommand(2,COMMAND_MAP.vstem);break;case 3074:if(!HINTING_ENABLED){this.stack=[];break}error=this.executeCommand(2,COMMAND_MAP.hstem);break;case 3078:SEAC_ANALYSIS_ENABLED?(this.seac=this.stack.splice(-4,4),error=this.executeCommand(0,COMMAND_MAP.endchar)):error=this.executeCommand(4,COMMAND_MAP.endchar);break;case 3079:if(this.stack.length<4){error=!0;break}{this.stack.pop()}wx=this.stack.pop();var sby=this.stack.pop();sbx=this.stack.pop(),this.lsb=sbx,this.width=wx,this.stack.push(wx,sbx,sby),error=this.executeCommand(3,COMMAND_MAP.rmoveto);break;case 3084:if(this.stack.length<2){error=!0;break}var num2=this.stack.pop(),num1=this.stack.pop();this.stack.push(num1/num2);break;case 3088:if(this.stack.length<2){error=!0;break}subrNumber=this.stack.pop();var numArgs=this.stack.pop();if(0===subrNumber&&3===numArgs){var flexArgs=this.stack.splice(this.stack.length-17,17);this.stack.push(flexArgs[2]+flexArgs[0],flexArgs[3]+flexArgs[1],flexArgs[4],flexArgs[5],flexArgs[6],flexArgs[7],flexArgs[8],flexArgs[9],flexArgs[10],flexArgs[11],flexArgs[12],flexArgs[13],flexArgs[14]),error=this.executeCommand(13,COMMAND_MAP.flex,!0),this.flexing=!1,this.stack.push(flexArgs[15],flexArgs[16])}else 1===subrNumber&&0===numArgs&&(this.flexing=!0);break;case 3089:break;case 3105:this.stack=[];break;default:warn('Unknown type 1 charstring command of "'+value+'"')}if(error)break}else 246>=value?value-=139:value=250>=value?256*(value-247)+encoded[++i]+108:254>=value?-(256*(value-251))-encoded[++i]-108:(255&encoded[++i])<<24|(255&encoded[++i])<<16|(255&encoded[++i])<<8|(255&encoded[++i])<<0,this.stack.push(value)}return error},executeCommand:function(howManyArgs,command,keepStack){var stackLength=this.stack.length;if(howManyArgs>stackLength)return!0;for(var start=stackLength-howManyArgs,i=start;stackLength>i;i++){var value=this.stack[i];value===(0|value)?this.output.push(28,value>>8&255,255&value):(value=65536*value|0,this.output.push(255,value>>24&255,value>>16&255,value>>8&255,255&value))}return this.output.push.apply(this.output,command),keepStack?this.stack.splice(start,howManyArgs):this.stack.length=0,!1}},Type1CharString}(),Type1Parser=function(){function isHexDigit(code){return code>=48&&57>=code||code>=65&&70>=code||code>=97&&102>=code}function decrypt(data,key,discardNumber){for(var r=0|key,c1=52845,c2=22719,count=data.length,decrypted=new Uint8Array(count),i=0;count>i;i++){var value=data[i];decrypted[i]=value^r>>8,r=(value+r)*c1+c2&65535}return Array.prototype.slice.call(decrypted,discardNumber)}function decryptAscii(data,key,discardNumber){var i,j,r=0|key,c1=52845,c2=22719,count=data.length,maybeLength=count>>>1,decrypted=new Uint8Array(maybeLength);for(i=0,j=0;count>i;i++){var digit1=data[i];if(isHexDigit(digit1)){i++;for(var digit2;count>i&&!isHexDigit(digit2=data[i]);)i++;if(count>i){var value=parseInt(String.fromCharCode(digit1,digit2),16);decrypted[j++]=value^r>>8,r=(value+r)*c1+c2&65535}}}return Array.prototype.slice.call(decrypted,discardNumber,j)}function isSpecial(c){return 47===c||91===c||93===c||123===c||125===c||40===c||41===c}function Type1Parser(stream,encrypted){if(encrypted){var data=stream.getBytes(),isBinary=!(isHexDigit(data[0])&&isHexDigit(data[1])&&isHexDigit(data[2])&&isHexDigit(data[3]));stream=new Stream(isBinary?decrypt(data,EEXEC_ENCRYPT_KEY,4):decryptAscii(data,EEXEC_ENCRYPT_KEY,4))}this.stream=stream,this.nextChar()}var EEXEC_ENCRYPT_KEY=55665,CHAR_STRS_ENCRYPT_KEY=4330;return Type1Parser.prototype={readNumberArray:function(){this.getToken();for(var array=[];;){var token=this.getToken();if(null===token||"]"===token||"}"===token)break;array.push(parseFloat(token||0))}return array},readNumber:function(){var token=this.getToken();return parseFloat(token||0)},readInt:function(){var token=this.getToken();return 0|parseInt(token||0,10)},readBoolean:function(){var token=this.getToken();return"true"===token?1:0},nextChar:function(){return this.currentChar=this.stream.getByte()},getToken:function(){for(var comment=!1,ch=this.currentChar;;){if(-1===ch)return null;if(comment)(10===ch||13===ch)&&(comment=!1);else if(37===ch)comment=!0;else if(!Lexer.isSpace(ch))break;ch=this.nextChar()}if(isSpecial(ch))return this.nextChar(),String.fromCharCode(ch);var token="";do token+=String.fromCharCode(ch),ch=this.nextChar();while(ch>=0&&!Lexer.isSpace(ch)&&!isSpecial(ch));return token},extractFontProgram:function(){for(var token,length,data,lenIV,encoded,stream=this.stream,subrs=[],charstrings=[],program={subrs:[],charstrings:[],properties:{privateData:{lenIV:4}}};null!==(token=this.getToken());)if("/"===token)switch(token=this.getToken()){case"CharStrings":for(this.getToken(),this.getToken(),this.getToken(),this.getToken();;){if(token=this.getToken(),null===token||"end"===token)break;if("/"===token){var glyph=this.getToken();length=this.readInt(),this.getToken(),data=stream.makeSubStream(stream.pos,length),lenIV=program.properties.privateData.lenIV,encoded=decrypt(data.getBytes(),CHAR_STRS_ENCRYPT_KEY,lenIV),stream.skip(length),this.nextChar(),token=this.getToken(),"noaccess"===token&&this.getToken(),charstrings.push({glyph:glyph,encoded:encoded})}}break;case"Subrs":{this.readInt()}for(this.getToken();"dup"===(token=this.getToken());){var index=this.readInt();length=this.readInt(),this.getToken(),data=stream.makeSubStream(stream.pos,length),lenIV=program.properties.privateData.lenIV,encoded=decrypt(data.getBytes(),CHAR_STRS_ENCRYPT_KEY,lenIV),stream.skip(length),this.nextChar(),token=this.getToken(),"noaccess"===token&&this.getToken(),subrs[index]=encoded}break;case"BlueValues":case"OtherBlues":case"FamilyBlues":case"FamilyOtherBlues":var blueArray=this.readNumberArray();blueArray.length>0&&blueArray.length%2===0&&HINTING_ENABLED&&(program.properties.privateData[token]=blueArray);break;case"StemSnapH":case"StemSnapV":program.properties.privateData[token]=this.readNumberArray();break;case"StdHW":case"StdVW":program.properties.privateData[token]=this.readNumberArray()[0];break;case"BlueShift":case"lenIV":case"BlueFuzz":case"BlueScale":case"LanguageGroup":case"ExpansionFactor":program.properties.privateData[token]=this.readNumber();break;case"ForceBold":program.properties.privateData[token]=this.readBoolean()}for(var i=0;i<charstrings.length;i++){glyph=charstrings[i].glyph,encoded=charstrings[i].encoded;var charString=new Type1CharString,error=charString.convert(encoded,subrs),output=charString.output;error&&(output=[14]),program.charstrings.push({glyphName:glyph,charstring:output,width:charString.width,lsb:charString.lsb,seac:charString.seac})}return program},extractFontHeader:function(properties){for(var token;null!==(token=this.getToken());)if("/"===token)switch(token=this.getToken()){case"FontMatrix":var matrix=this.readNumberArray();properties.fontMatrix=matrix;break;case"Encoding":var encoding,encodingArg=this.getToken();if(/^\d+$/.test(encodingArg)){encoding=[];var size=0|parseInt(encodingArg,10);this.getToken();for(var j=0;size>j;j++){for(token=this.getToken();"dup"!==token&&"def"!==token;)if(token=this.getToken(),null===token)return;if("def"===token)break;var index=this.readInt();this.getToken();var glyph=this.getToken();encoding[index]=glyph,this.getToken()}}else encoding=Encodings[encodingArg];properties.builtInEncoding=encoding;break;case"FontBBox":var fontBBox=this.readNumberArray();properties.ascent=fontBBox[3],properties.descent=fontBBox[1],properties.ascentScaled=!0}}},Type1Parser}(),CFFStandardStrings=[".notdef","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","onesuperior","logicalnot","mu","trademark","Eth","onehalf","plusminus","Thorn","onequarter","divide","brokenbar","degree","thorn","threequarters","twosuperior","registered","minus","eth","multiply","threesuperior","copyright","Aacute","Acircumflex","Adieresis","Agrave","Aring","Atilde","Ccedilla","Eacute","Ecircumflex","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Ntilde","Oacute","Ocircumflex","Odieresis","Ograve","Otilde","Scaron","Uacute","Ucircumflex","Udieresis","Ugrave","Yacute","Ydieresis","Zcaron","aacute","acircumflex","adieresis","agrave","aring","atilde","ccedilla","eacute","ecircumflex","edieresis","egrave","iacute","icircumflex","idieresis","igrave","ntilde","oacute","ocircumflex","odieresis","ograve","otilde","scaron","uacute","ucircumflex","udieresis","ugrave","yacute","ydieresis","zcaron","exclamsmall","Hungarumlautsmall","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","commasuperior","threequartersemdash","periodsuperior","questionsmall","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","ffi","ffl","parenleftinferior","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","exclamdownsmall","centoldstyle","Lslashsmall","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","Dotaccentsmall","Macronsmall","figuredash","hypheninferior","Ogoneksmall","Ringsmall","Cedillasmall","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall","001.000","001.001","001.002","001.003","Black","Bold","Book","Light","Medium","Regular","Roman","Semibold"],Type1Font=function(name,file,properties){var PFB_HEADER_SIZE=6,headerBlockLength=properties.length1,eexecBlockLength=properties.length2,pfbHeader=file.peekBytes(PFB_HEADER_SIZE),pfbHeaderPresent=128===pfbHeader[0]&&1===pfbHeader[1];pfbHeaderPresent&&(file.skip(PFB_HEADER_SIZE),headerBlockLength=pfbHeader[5]<<24|pfbHeader[4]<<16|pfbHeader[3]<<8|pfbHeader[2]);var headerBlock=new Stream(file.getBytes(headerBlockLength)),headerBlockParser=new Type1Parser(headerBlock);headerBlockParser.extractFontHeader(properties),pfbHeaderPresent&&(pfbHeader=file.getBytes(PFB_HEADER_SIZE),eexecBlockLength=pfbHeader[5]<<24|pfbHeader[4]<<16|pfbHeader[3]<<8|pfbHeader[2]);var eexecBlock=new Stream(file.getBytes(eexecBlockLength)),eexecBlockParser=new Type1Parser(eexecBlock,!0),data=eexecBlockParser.extractFontProgram();for(var info in data.properties)properties[info]=data.properties[info];var charstrings=data.charstrings,type2Charstrings=this.getType2Charstrings(charstrings),subrs=this.getType2Subrs(data.subrs);this.charstrings=charstrings,this.data=this.wrap(name,type2Charstrings,this.charstrings,subrs,properties),this.seacs=this.getSeacs(data.charstrings)};Type1Font.prototype={get numGlyphs(){return this.charstrings.length+1},getCharset:function(){for(var charset=[".notdef"],charstrings=this.charstrings,glyphId=0;glyphId<charstrings.length;glyphId++)charset.push(charstrings[glyphId].glyphName);return charset},getGlyphMapping:function(properties){var glyphId,charstrings=this.charstrings,glyphNames=[".notdef"];for(glyphId=0;glyphId<charstrings.length;glyphId++)glyphNames.push(charstrings[glyphId].glyphName);var encoding=properties.builtInEncoding;if(encoding){var builtInEncoding={};for(var charCode in encoding)glyphId=glyphNames.indexOf(encoding[charCode]),glyphId>=0&&(builtInEncoding[charCode]=glyphId)}return type1FontGlyphMapping(properties,builtInEncoding,glyphNames)},getSeacs:function(charstrings){var i,ii,seacMap=[];for(i=0,ii=charstrings.length;ii>i;i++){var charstring=charstrings[i];charstring.seac&&(seacMap[i+1]=charstring.seac)}return seacMap},getType2Charstrings:function(type1Charstrings){for(var type2Charstrings=[],i=0,ii=type1Charstrings.length;ii>i;i++)type2Charstrings.push(type1Charstrings[i].charstring);return type2Charstrings},getType2Subrs:function(type1Subrs){var bias=0,count=type1Subrs.length;bias=1133>count?107:33769>count?1131:32768;var i,type2Subrs=[];for(i=0;bias>i;i++)type2Subrs.push([11]);for(i=0;count>i;i++)type2Subrs.push(type1Subrs[i]);return type2Subrs},wrap:function(name,glyphs,charstrings,subrs,properties){var cff=new CFF;cff.header=new CFFHeader(1,0,4,4),cff.names=[name];var topDict=new CFFTopDict;topDict.setByName("version",391),topDict.setByName("Notice",392),topDict.setByName("FullName",393),topDict.setByName("FamilyName",394),topDict.setByName("Weight",395),topDict.setByName("Encoding",null),topDict.setByName("FontMatrix",properties.fontMatrix),topDict.setByName("FontBBox",properties.bbox),topDict.setByName("charset",null),topDict.setByName("CharStrings",null),topDict.setByName("Private",null),cff.topDict=topDict;var strings=new CFFStrings;strings.add("Version 0.11"),strings.add("See original notice"),strings.add(name),strings.add(name),strings.add("Medium"),cff.strings=strings,cff.globalSubrIndex=new CFFIndex;var i,ii,count=glyphs.length,charsetArray=[0];for(i=0;count>i;i++){var index=CFFStandardStrings.indexOf(charstrings[i].glyphName);-1===index&&(index=0),charsetArray.push(index>>8&255,255&index)}cff.charset=new CFFCharset(!1,0,[],charsetArray);var charStringsIndex=new CFFIndex;for(charStringsIndex.add([139,14]),i=0;count>i;i++)charStringsIndex.add(glyphs[i]);cff.charStrings=charStringsIndex;var privateDict=new CFFPrivateDict;privateDict.setByName("Subrs",null);var fields=["BlueValues","OtherBlues","FamilyBlues","FamilyOtherBlues","StemSnapH","StemSnapV","BlueShift","BlueFuzz","BlueScale","LanguageGroup","ExpansionFactor","ForceBold","StdHW","StdVW"];for(i=0,ii=fields.length;ii>i;i++){var field=fields[i];if(properties.privateData.hasOwnProperty(field)){var value=properties.privateData[field];if(isArray(value))for(var j=value.length-1;j>0;j--)value[j]-=value[j-1];privateDict.setByName(field,value)}}cff.topDict.privateDict=privateDict;var subrIndex=new CFFIndex;for(i=0,ii=subrs.length;ii>i;i++)subrIndex.add(subrs[i]);privateDict.subrsIndex=subrIndex;var compiler=new CFFCompiler(cff);return compiler.compile()}};var CFFFont=function(){function CFFFont(file,properties){this.properties=properties;var parser=new CFFParser(file,properties);this.cff=parser.parse();var compiler=new CFFCompiler(this.cff);this.seacs=this.cff.seacs;try{this.data=compiler.compile()}catch(e){warn("Failed to compile font "+properties.loadedName),this.data=file}}return CFFFont.prototype={get numGlyphs(){return this.cff.charStrings.count},getCharset:function(){return this.cff.charset.charset},getGlyphMapping:function(){var charCodeToGlyphId,glyphId,cff=this.cff,properties=this.properties,charsets=cff.charset.charset;if(properties.composite){if(charCodeToGlyphId=Object.create(null),cff.isCIDFont)for(glyphId=0;glyphId<charsets.length;glyphId++){var cid=charsets[glyphId],charCode=properties.cMap.charCodeOf(cid);charCodeToGlyphId[charCode]=glyphId}else for(glyphId=0;glyphId<cff.charStrings.count;glyphId++)charCodeToGlyphId[glyphId]=glyphId;return charCodeToGlyphId}var encoding=cff.encoding?cff.encoding.encoding:null;return charCodeToGlyphId=type1FontGlyphMapping(properties,encoding,charsets)}},CFFFont}(),CFFParser=function(){function CFFParser(file,properties){this.bytes=file.getBytes(),this.properties=properties}var CharstringValidationData=[null,{id:"hstem",min:2,stackClearing:!0,stem:!0},null,{id:"vstem",min:2,stackClearing:!0,stem:!0},{id:"vmoveto",min:1,stackClearing:!0},{id:"rlineto",min:2,resetStack:!0},{id:"hlineto",min:1,resetStack:!0},{id:"vlineto",min:1,resetStack:!0},{id:"rrcurveto",min:6,resetStack:!0},null,{id:"callsubr",min:1,undefStack:!0},{id:"return",min:0,undefStack:!0},null,null,{id:"endchar",min:0,stackClearing:!0},null,null,null,{id:"hstemhm",min:2,stackClearing:!0,stem:!0},{id:"hintmask",min:0,stackClearing:!0},{id:"cntrmask",min:0,stackClearing:!0},{id:"rmoveto",min:2,stackClearing:!0},{id:"hmoveto",min:1,stackClearing:!0},{id:"vstemhm",min:2,stackClearing:!0,stem:!0},{id:"rcurveline",min:8,resetStack:!0},{id:"rlinecurve",min:8,resetStack:!0},{id:"vvcurveto",min:4,resetStack:!0},{id:"hhcurveto",min:4,resetStack:!0},null,{id:"callgsubr",min:1,undefStack:!0},{id:"vhcurveto",min:4,resetStack:!0},{id:"hvcurveto",min:4,resetStack:!0}],CharstringValidationData12=[null,null,null,{id:"and",min:2,stackDelta:-1},{id:"or",min:2,stackDelta:-1},{id:"not",min:1,stackDelta:0},null,null,null,{id:"abs",min:1,stackDelta:0},{id:"add",min:2,stackDelta:-1,stackFn:function(stack,index){stack[index-2]=stack[index-2]+stack[index-1]
}},{id:"sub",min:2,stackDelta:-1,stackFn:function(stack,index){stack[index-2]=stack[index-2]-stack[index-1]}},{id:"div",min:2,stackDelta:-1,stackFn:function(stack,index){stack[index-2]=stack[index-2]/stack[index-1]}},null,{id:"neg",min:1,stackDelta:0,stackFn:function(stack,index){stack[index-1]=-stack[index-1]}},{id:"eq",min:2,stackDelta:-1},null,null,{id:"drop",min:1,stackDelta:-1},null,{id:"put",min:2,stackDelta:-2},{id:"get",min:1,stackDelta:0},{id:"ifelse",min:4,stackDelta:-3},{id:"random",min:0,stackDelta:1},{id:"mul",min:2,stackDelta:-1,stackFn:function(stack,index){stack[index-2]=stack[index-2]*stack[index-1]}},null,{id:"sqrt",min:1,stackDelta:0},{id:"dup",min:1,stackDelta:1},{id:"exch",min:2,stackDelta:0},{id:"index",min:2,stackDelta:0},{id:"roll",min:3,stackDelta:-2},null,null,null,{id:"hflex",min:7,resetStack:!0},{id:"flex",min:13,resetStack:!0},{id:"hflex1",min:9,resetStack:!0},{id:"flex1",min:11,resetStack:!0}];return CFFParser.prototype={parse:function(){var properties=this.properties,cff=new CFF;this.cff=cff;var header=this.parseHeader(),nameIndex=this.parseIndex(header.endPos),topDictIndex=this.parseIndex(nameIndex.endPos),stringIndex=this.parseIndex(topDictIndex.endPos),globalSubrIndex=this.parseIndex(stringIndex.endPos),topDictParsed=this.parseDict(topDictIndex.obj.get(0)),topDict=this.createDict(CFFTopDict,topDictParsed,cff.strings);cff.header=header.obj,cff.names=this.parseNameIndex(nameIndex.obj),cff.strings=this.parseStringIndex(stringIndex.obj),cff.topDict=topDict,cff.globalSubrIndex=globalSubrIndex.obj,this.parsePrivateDict(cff.topDict),cff.isCIDFont=topDict.hasName("ROS");var charStringOffset=topDict.getByName("CharStrings"),charStringsAndSeacs=this.parseCharStrings(charStringOffset);cff.charStrings=charStringsAndSeacs.charStrings,cff.seacs=charStringsAndSeacs.seacs,cff.widths=charStringsAndSeacs.widths;var fontMatrix=topDict.getByName("FontMatrix");fontMatrix&&(properties.fontMatrix=fontMatrix);var fontBBox=topDict.getByName("FontBBox");fontBBox&&(properties.ascent=fontBBox[3],properties.descent=fontBBox[1],properties.ascentScaled=!0);var charset,encoding;if(cff.isCIDFont){for(var fdArrayIndex=this.parseIndex(topDict.getByName("FDArray")).obj,i=0,ii=fdArrayIndex.count;ii>i;++i){var dictRaw=fdArrayIndex.get(i),fontDict=this.createDict(CFFTopDict,this.parseDict(dictRaw),cff.strings);this.parsePrivateDict(fontDict),cff.fdArray.push(fontDict)}encoding=null,charset=this.parseCharsets(topDict.getByName("charset"),cff.charStrings.count,cff.strings,!0),cff.fdSelect=this.parseFDSelect(topDict.getByName("FDSelect"),cff.charStrings.count)}else charset=this.parseCharsets(topDict.getByName("charset"),cff.charStrings.count,cff.strings,!1),encoding=this.parseEncoding(topDict.getByName("Encoding"),properties,cff.strings,charset.charset);return cff.charset=charset,cff.encoding=encoding,cff},parseHeader:function(){for(var bytes=this.bytes,bytesLength=bytes.length,offset=0;bytesLength>offset&&1!==bytes[offset];)++offset;offset>=bytesLength?error("Invalid CFF header"):0!==offset&&(info("cff data is shifted"),bytes=bytes.subarray(offset),this.bytes=bytes);var major=bytes[0],minor=bytes[1],hdrSize=bytes[2],offSize=bytes[3],header=new CFFHeader(major,minor,hdrSize,offSize);return{obj:header,endPos:hdrSize}},parseDict:function(dict){function parseOperand(){var value=dict[pos++];return 30===value?parseFloatOperand(pos):28===value?(value=dict[pos++],value=(value<<24|dict[pos++]<<16)>>16):29===value?(value=dict[pos++],value=value<<8|dict[pos++],value=value<<8|dict[pos++],value=value<<8|dict[pos++]):value>=32&&246>=value?value-139:value>=247&&250>=value?256*(value-247)+dict[pos++]+108:value>=251&&254>=value?-(256*(value-251))-dict[pos++]-108:(error("255 is not a valid DICT command"),-1)}function parseFloatOperand(){for(var str="",eof=15,lookup=["0","1","2","3","4","5","6","7","8","9",".","E","E-",null,"-"],length=dict.length;length>pos;){var b=dict[pos++],b1=b>>4,b2=15&b;if(b1===eof)break;if(str+=lookup[b1],b2===eof)break;str+=lookup[b2]}return parseFloat(str)}var pos=0,operands=[],entries=[];pos=0;for(var end=dict.length;end>pos;){var b=dict[pos];21>=b?(12===b&&(b=b<<8|dict[++pos]),entries.push([b,operands]),operands=[],++pos):operands.push(parseOperand())}return entries},parseIndex:function(pos){var i,ii,cffIndex=new CFFIndex,bytes=this.bytes,count=bytes[pos++]<<8|bytes[pos++],offsets=[],end=pos;if(0!==count){var offsetSize=bytes[pos++],startPos=pos+(count+1)*offsetSize-1;for(i=0,ii=count+1;ii>i;++i){for(var offset=0,j=0;offsetSize>j;++j)offset<<=8,offset+=bytes[pos++];offsets.push(startPos+offset)}end=offsets[count]}for(i=0,ii=offsets.length-1;ii>i;++i){var offsetStart=offsets[i],offsetEnd=offsets[i+1];cffIndex.add(bytes.subarray(offsetStart,offsetEnd))}return{obj:cffIndex,endPos:end}},parseNameIndex:function(index){for(var names=[],i=0,ii=index.count;ii>i;++i){for(var name=index.get(i),length=Math.min(name.length,127),data=[],j=0;length>j;++j){var c=name[j];data[j]=(0!==j||0!==c)&&(33>c||c>126||91===c||93===c||40===c||41===c||123===c||125===c||60===c||62===c||47===c||37===c||35===c)?95:c}names.push(bytesToString(data))}return names},parseStringIndex:function(index){for(var strings=new CFFStrings,i=0,ii=index.count;ii>i;++i){var data=index.get(i);strings.add(bytesToString(data))}return strings},createDict:function(Type,dict,strings){for(var cffDict=new Type(strings),i=0,ii=dict.length;ii>i;++i){var pair=dict[i],key=pair[0],value=pair[1];cffDict.setByKey(key,value)}return cffDict},parseCharStrings:function(charStringOffset){for(var charStrings=this.parseIndex(charStringOffset).obj,seacs=[],widths=[],count=charStrings.count,i=0;count>i;i++){for(var charstring=charStrings.get(i),stackSize=0,stack=[],undefStack=!0,hints=0,valid=!0,data=charstring,length=data.length,firstStackClearing=!0,j=0;length>j;){var value=data[j++],validationCommand=null;if(12===value){var q=data[j++];0===q?(data[j-2]=139,data[j-1]=22,stackSize=0):validationCommand=CharstringValidationData12[q]}else 28===value?(stack[stackSize]=(data[j]<<24|data[j+1]<<16)>>16,j+=2,stackSize++):14===value?(stackSize>=4&&(stackSize-=4,SEAC_ANALYSIS_ENABLED&&(seacs[i]=stack.slice(stackSize,stackSize+4),valid=!1)),validationCommand=CharstringValidationData[value]):value>=32&&246>=value?(stack[stackSize]=value-139,stackSize++):value>=247&&254>=value?(stack[stackSize]=251>value?(value-247<<8)+data[j]+108:-(value-251<<8)-data[j]-108,j++,stackSize++):255===value?(stack[stackSize]=(data[j]<<24|data[j+1]<<16|data[j+2]<<8|data[j+3])/65536,j+=4,stackSize++):19===value||20===value?(hints+=stackSize>>1,j+=hints+7>>3,stackSize%=2,validationCommand=CharstringValidationData[value]):validationCommand=CharstringValidationData[value];if(validationCommand){if(validationCommand.stem&&(hints+=stackSize>>1),"min"in validationCommand&&!undefStack&&stackSize<validationCommand.min){warn("Not enough parameters for "+validationCommand.id+"; actual: "+stackSize+", expected: "+validationCommand.min),valid=!1;break}firstStackClearing&&validationCommand.stackClearing&&(firstStackClearing=!1,stackSize-=validationCommand.min,stackSize>=2&&validationCommand.stem?stackSize%=2:stackSize>1&&warn("Found too many parameters for stack-clearing command"),stackSize>0&&stack[stackSize-1]>=0&&(widths[i]=stack[stackSize-1])),"stackDelta"in validationCommand?("stackFn"in validationCommand&&validationCommand.stackFn(stack,stackSize),stackSize+=validationCommand.stackDelta):validationCommand.stackClearing?stackSize=0:validationCommand.resetStack?(stackSize=0,undefStack=!1):validationCommand.undefStack&&(stackSize=0,undefStack=!0,firstStackClearing=!1)}}valid||charStrings.set(i,new Uint8Array([14]))}return{charStrings:charStrings,seacs:seacs,widths:widths}},emptyPrivateDictionary:function(parentDict){var privateDict=this.createDict(CFFPrivateDict,[],parentDict.strings);parentDict.setByKey(18,[0,0]),parentDict.privateDict=privateDict},parsePrivateDict:function(parentDict){if(!parentDict.hasName("Private"))return void this.emptyPrivateDictionary(parentDict);var privateOffset=parentDict.getByName("Private");if(!isArray(privateOffset)||2!==privateOffset.length)return void parentDict.removeByName("Private");var size=privateOffset[0],offset=privateOffset[1];if(0===size||offset>=this.bytes.length)return void this.emptyPrivateDictionary(parentDict);var privateDictEnd=offset+size,dictData=this.bytes.subarray(offset,privateDictEnd),dict=this.parseDict(dictData),privateDict=this.createDict(CFFPrivateDict,dict,parentDict.strings);if(parentDict.privateDict=privateDict,privateDict.getByName("Subrs")){var subrsOffset=privateDict.getByName("Subrs"),relativeOffset=offset+subrsOffset;if(0===subrsOffset||relativeOffset>=this.bytes.length)return void this.emptyPrivateDictionary(parentDict);var subrsIndex=this.parseIndex(relativeOffset);privateDict.subrsIndex=subrsIndex.obj}},parseCharsets:function(pos,length,strings,cid){if(0===pos)return new CFFCharset(!0,CFFCharsetPredefinedTypes.ISO_ADOBE,ISOAdobeCharset);if(1===pos)return new CFFCharset(!0,CFFCharsetPredefinedTypes.EXPERT,ExpertCharset);if(2===pos)return new CFFCharset(!0,CFFCharsetPredefinedTypes.EXPERT_SUBSET,ExpertSubsetCharset);var id,count,i,bytes=this.bytes,start=pos,format=bytes[pos++],charset=[".notdef"];switch(length-=1,format){case 0:for(i=0;length>i;i++)id=bytes[pos++]<<8|bytes[pos++],charset.push(cid?id:strings.get(id));break;case 1:for(;charset.length<=length;)for(id=bytes[pos++]<<8|bytes[pos++],count=bytes[pos++],i=0;count>=i;i++)charset.push(cid?id++:strings.get(id++));break;case 2:for(;charset.length<=length;)for(id=bytes[pos++]<<8|bytes[pos++],count=bytes[pos++]<<8|bytes[pos++],i=0;count>=i;i++)charset.push(cid?id++:strings.get(id++));break;default:error("Unknown charset format")}var end=pos,raw=bytes.subarray(start,end);return new CFFCharset(!1,format,charset,raw)},parseEncoding:function(pos,properties,strings,charset){function readSupplement(){var supplementsCount=bytes[pos++];for(i=0;supplementsCount>i;i++){var code=bytes[pos++],sid=(bytes[pos++]<<8)+(255&bytes[pos++]);encoding[code]=charset.indexOf(strings.get(sid))}}var format,i,ii,encoding={},bytes=this.bytes,predefined=!1,hasSupplement=!1,raw=null;if(0===pos||1===pos){predefined=!0,format=pos;var baseEncoding=pos?Encodings.ExpertEncoding:Encodings.StandardEncoding;for(i=0,ii=charset.length;ii>i;i++){var index=baseEncoding.indexOf(charset[i]);-1!==index&&(encoding[index]=i)}}else{var dataStart=pos;switch(format=bytes[pos++],127&format){case 0:var glyphsCount=bytes[pos++];for(i=1;glyphsCount>=i;i++)encoding[bytes[pos++]]=i;break;case 1:var rangesCount=bytes[pos++],gid=1;for(i=0;rangesCount>i;i++)for(var start=bytes[pos++],left=bytes[pos++],j=start;start+left>=j;j++)encoding[j]=gid++;break;default:error("Unknow encoding format: "+format+" in CFF")}var dataEnd=pos;128&format&&(bytes[dataStart]&=127,readSupplement(),hasSupplement=!0),raw=bytes.subarray(dataStart,dataEnd)}return format=127&format,new CFFEncoding(predefined,format,encoding,raw)},parseFDSelect:function(pos,length){var i,start=pos,bytes=this.bytes,format=bytes[pos++],fdSelect=[];switch(format){case 0:for(i=0;length>i;++i){var id=bytes[pos++];fdSelect.push(id)}break;case 3:var rangesCount=bytes[pos++]<<8|bytes[pos++];for(i=0;rangesCount>i;++i)for(var first=bytes[pos++]<<8|bytes[pos++],fdIndex=bytes[pos++],next=bytes[pos]<<8|bytes[pos+1],j=first;next>j;++j)fdSelect.push(fdIndex);pos+=2;break;default:error("Unknown fdselect format "+format)}var end=pos;return new CFFFDSelect(fdSelect,bytes.subarray(start,end))}},CFFParser}(),CFF=function(){function CFF(){this.header=null,this.names=[],this.topDict=null,this.strings=new CFFStrings,this.globalSubrIndex=null,this.encoding=null,this.charset=null,this.charStrings=null,this.fdArray=[],this.fdSelect=null,this.isCIDFont=!1}return CFF}(),CFFHeader=function(){function CFFHeader(major,minor,hdrSize,offSize){this.major=major,this.minor=minor,this.hdrSize=hdrSize,this.offSize=offSize}return CFFHeader}(),CFFStrings=function(){function CFFStrings(){this.strings=[]}return CFFStrings.prototype={get:function(index){return index>=0&&390>=index?CFFStandardStrings[index]:index-391<=this.strings.length?this.strings[index-391]:CFFStandardStrings[0]},add:function(value){this.strings.push(value)},get count(){return this.strings.length}},CFFStrings}(),CFFIndex=function(){function CFFIndex(){this.objects=[],this.length=0}return CFFIndex.prototype={add:function(data){this.length+=data.length,this.objects.push(data)},set:function(index,data){this.length+=data.length-this.objects[index].length,this.objects[index]=data},get:function(index){return this.objects[index]},get count(){return this.objects.length}},CFFIndex}(),CFFDict=function(){function CFFDict(tables,strings){this.keyToNameMap=tables.keyToNameMap,this.nameToKeyMap=tables.nameToKeyMap,this.defaults=tables.defaults,this.types=tables.types,this.opcodes=tables.opcodes,this.order=tables.order,this.strings=strings,this.values={}}return CFFDict.prototype={setByKey:function(key,value){if(!(key in this.keyToNameMap))return!1;if(0===value.length)return!0;var type=this.types[key];return("num"===type||"sid"===type||"offset"===type)&&(value=value[0]),this.values[key]=value,!0},setByName:function(name,value){name in this.nameToKeyMap||error('Invalid dictionary name "'+name+'"'),this.values[this.nameToKeyMap[name]]=value},hasName:function(name){return this.nameToKeyMap[name]in this.values},getByName:function(name){name in this.nameToKeyMap||error('Invalid dictionary name "'+name+'"');var key=this.nameToKeyMap[name];return key in this.values?this.values[key]:this.defaults[key]},removeByName:function(name){delete this.values[this.nameToKeyMap[name]]}},CFFDict.createTables=function(layout){for(var tables={keyToNameMap:{},nameToKeyMap:{},defaults:{},types:{},opcodes:{},order:[]},i=0,ii=layout.length;ii>i;++i){var entry=layout[i],key=isArray(entry[0])?(entry[0][0]<<8)+entry[0][1]:entry[0];tables.keyToNameMap[key]=entry[1],tables.nameToKeyMap[entry[1]]=key,tables.types[key]=entry[2],tables.defaults[key]=entry[3],tables.opcodes[key]=isArray(entry[0])?entry[0]:[entry[0]],tables.order.push(key)}return tables},CFFDict}(),CFFTopDict=function(){function CFFTopDict(strings){null===tables&&(tables=CFFDict.createTables(layout)),CFFDict.call(this,tables,strings),this.privateDict=null}var layout=[[[12,30],"ROS",["sid","sid","num"],null],[[12,20],"SyntheticBase","num",null],[0,"version","sid",null],[1,"Notice","sid",null],[[12,0],"Copyright","sid",null],[2,"FullName","sid",null],[3,"FamilyName","sid",null],[4,"Weight","sid",null],[[12,1],"isFixedPitch","num",0],[[12,2],"ItalicAngle","num",0],[[12,3],"UnderlinePosition","num",-100],[[12,4],"UnderlineThickness","num",50],[[12,5],"PaintType","num",0],[[12,6],"CharstringType","num",2],[[12,7],"FontMatrix",["num","num","num","num","num","num"],[.001,0,0,.001,0,0]],[13,"UniqueID","num",null],[5,"FontBBox",["num","num","num","num"],[0,0,0,0]],[[12,8],"StrokeWidth","num",0],[14,"XUID","array",null],[15,"charset","offset",0],[16,"Encoding","offset",0],[17,"CharStrings","offset",0],[18,"Private",["offset","offset"],null],[[12,21],"PostScript","sid",null],[[12,22],"BaseFontName","sid",null],[[12,23],"BaseFontBlend","delta",null],[[12,31],"CIDFontVersion","num",0],[[12,32],"CIDFontRevision","num",0],[[12,33],"CIDFontType","num",0],[[12,34],"CIDCount","num",8720],[[12,35],"UIDBase","num",null],[[12,37],"FDSelect","offset",null],[[12,36],"FDArray","offset",null],[[12,38],"FontName","sid",null]],tables=null;return CFFTopDict.prototype=Object.create(CFFDict.prototype),CFFTopDict}(),CFFPrivateDict=function(){function CFFPrivateDict(strings){null===tables&&(tables=CFFDict.createTables(layout)),CFFDict.call(this,tables,strings),this.subrsIndex=null}var layout=[[6,"BlueValues","delta",null],[7,"OtherBlues","delta",null],[8,"FamilyBlues","delta",null],[9,"FamilyOtherBlues","delta",null],[[12,9],"BlueScale","num",.039625],[[12,10],"BlueShift","num",7],[[12,11],"BlueFuzz","num",1],[10,"StdHW","num",null],[11,"StdVW","num",null],[[12,12],"StemSnapH","delta",null],[[12,13],"StemSnapV","delta",null],[[12,14],"ForceBold","num",0],[[12,17],"LanguageGroup","num",0],[[12,18],"ExpansionFactor","num",.06],[[12,19],"initialRandomSeed","num",0],[20,"defaultWidthX","num",0],[21,"nominalWidthX","num",0],[19,"Subrs","offset",null]],tables=null;return CFFPrivateDict.prototype=Object.create(CFFDict.prototype),CFFPrivateDict}(),CFFCharsetPredefinedTypes={ISO_ADOBE:0,EXPERT:1,EXPERT_SUBSET:2},CFFCharset=function(){function CFFCharset(predefined,format,charset,raw){this.predefined=predefined,this.format=format,this.charset=charset,this.raw=raw}return CFFCharset}(),CFFEncoding=function(){function CFFEncoding(predefined,format,encoding,raw){this.predefined=predefined,this.format=format,this.encoding=encoding,this.raw=raw}return CFFEncoding}(),CFFFDSelect=function(){function CFFFDSelect(fdSelect,raw){this.fdSelect=fdSelect,this.raw=raw}return CFFFDSelect}(),CFFOffsetTracker=function(){function CFFOffsetTracker(){this.offsets={}}return CFFOffsetTracker.prototype={isTracking:function(key){return key in this.offsets},track:function(key,location){key in this.offsets&&error("Already tracking location of "+key),this.offsets[key]=location},offset:function(value){for(var key in this.offsets)this.offsets[key]+=value},setEntryLocation:function(key,values,output){key in this.offsets||error("Not tracking location of "+key);for(var data=output.data,dataOffset=this.offsets[key],size=5,i=0,ii=values.length;ii>i;++i){var offset0=i*size+dataOffset,offset1=offset0+1,offset2=offset0+2,offset3=offset0+3,offset4=offset0+4;(29!==data[offset0]||0!==data[offset1]||0!==data[offset2]||0!==data[offset3]||0!==data[offset4])&&error("writing to an offset that is not empty");var value=values[i];data[offset0]=29,data[offset1]=value>>24&255,data[offset2]=value>>16&255,data[offset3]=value>>8&255,data[offset4]=255&value}}},CFFOffsetTracker}(),CFFCompiler=function(){function CFFCompiler(cff){this.cff=cff}return CFFCompiler.prototype={compile:function(){var cff=this.cff,output={data:[],length:0,add:function(data){this.data=this.data.concat(data),this.length=this.data.length}},header=this.compileHeader(cff.header);output.add(header);var nameIndex=this.compileNameIndex(cff.names);if(output.add(nameIndex),cff.isCIDFont&&cff.topDict.hasName("FontMatrix")){var base=cff.topDict.getByName("FontMatrix");cff.topDict.removeByName("FontMatrix");for(var i=0,ii=cff.fdArray.length;ii>i;i++){var subDict=cff.fdArray[i],matrix=base.slice(0);subDict.hasName("FontMatrix")&&(matrix=Util.transform(matrix,subDict.getByName("FontMatrix"))),subDict.setByName("FontMatrix",matrix)}}var compiled=this.compileTopDicts([cff.topDict],output.length,cff.isCIDFont);output.add(compiled.output);var topDictTracker=compiled.trackers[0],stringIndex=this.compileStringIndex(cff.strings.strings);output.add(stringIndex);var globalSubrIndex=this.compileIndex(cff.globalSubrIndex);if(output.add(globalSubrIndex),cff.encoding&&cff.topDict.hasName("Encoding"))if(cff.encoding.predefined)topDictTracker.setEntryLocation("Encoding",[cff.encoding.format],output);else{var encoding=this.compileEncoding(cff.encoding);topDictTracker.setEntryLocation("Encoding",[output.length],output),output.add(encoding)}if(cff.charset&&cff.topDict.hasName("charset"))if(cff.charset.predefined)topDictTracker.setEntryLocation("charset",[cff.charset.format],output);else{var charset=this.compileCharset(cff.charset);topDictTracker.setEntryLocation("charset",[output.length],output),output.add(charset)}var charStrings=this.compileCharStrings(cff.charStrings);if(topDictTracker.setEntryLocation("CharStrings",[output.length],output),output.add(charStrings),cff.isCIDFont){topDictTracker.setEntryLocation("FDSelect",[output.length],output);var fdSelect=this.compileFDSelect(cff.fdSelect.raw);output.add(fdSelect),compiled=this.compileTopDicts(cff.fdArray,output.length,!0),topDictTracker.setEntryLocation("FDArray",[output.length],output),output.add(compiled.output);var fontDictTrackers=compiled.trackers;this.compilePrivateDicts(cff.fdArray,fontDictTrackers,output)}return this.compilePrivateDicts([cff.topDict],[topDictTracker],output),output.add([0]),output.data},encodeNumber:function(value){return parseFloat(value)!==parseInt(value,10)||isNaN(value)?this.encodeFloat(value):this.encodeInteger(value)},encodeFloat:function(num){var value=num.toString(),m=/\.(\d*?)(?:9{5,20}|0{5,20})\d{0,2}(?:e(.+)|$)/.exec(value);if(m){var epsilon=parseFloat("1e"+((m[2]?+m[2]:0)+m[1].length));value=(Math.round(num*epsilon)/epsilon).toString()}var i,ii,nibbles="";for(i=0,ii=value.length;ii>i;++i){var a=value[i];nibbles+="e"===a?"-"===value[++i]?"c":"b":"."===a?"a":"-"===a?"e":a}nibbles+=1&nibbles.length?"f":"ff";var out=[30];for(i=0,ii=nibbles.length;ii>i;i+=2)out.push(parseInt(nibbles.substr(i,2),16));return out},encodeInteger:function(value){var code;return value>=-107&&107>=value?code=[value+139]:value>=108&&1131>=value?(value=[value-108],code=[(value>>8)+247,255&value]):value>=-1131&&-108>=value?(value=-value-108,code=[(value>>8)+251,255&value]):code=value>=-32768&&32767>=value?[28,value>>8&255,255&value]:[29,value>>24&255,value>>16&255,value>>8&255,255&value],code},compileHeader:function(header){return[header.major,header.minor,header.hdrSize,header.offSize]},compileNameIndex:function(names){for(var nameIndex=new CFFIndex,i=0,ii=names.length;ii>i;++i)nameIndex.add(stringToBytes(names[i]));return this.compileIndex(nameIndex)},compileTopDicts:function(dicts,length,removeCidKeys){for(var fontDictTrackers=[],fdArrayIndex=new CFFIndex,i=0,ii=dicts.length;ii>i;++i){var fontDict=dicts[i];removeCidKeys&&(fontDict.removeByName("CIDFontVersion"),fontDict.removeByName("CIDFontRevision"),fontDict.removeByName("CIDFontType"),fontDict.removeByName("CIDCount"),fontDict.removeByName("UIDBase"));var fontDictTracker=new CFFOffsetTracker,fontDictData=this.compileDict(fontDict,fontDictTracker);fontDictTrackers.push(fontDictTracker),fdArrayIndex.add(fontDictData),fontDictTracker.offset(length)}return fdArrayIndex=this.compileIndex(fdArrayIndex,fontDictTrackers),{trackers:fontDictTrackers,output:fdArrayIndex}},compilePrivateDicts:function(dicts,trackers,output){for(var i=0,ii=dicts.length;ii>i;++i){var fontDict=dicts[i];assert(fontDict.privateDict&&fontDict.hasName("Private"),"There must be an private dictionary.");var privateDict=fontDict.privateDict,privateDictTracker=new CFFOffsetTracker,privateDictData=this.compileDict(privateDict,privateDictTracker),outputLength=output.length;if(privateDictTracker.offset(outputLength),privateDictData.length||(outputLength=0),trackers[i].setEntryLocation("Private",[privateDictData.length,outputLength],output),output.add(privateDictData),privateDict.subrsIndex&&privateDict.hasName("Subrs")){var subrs=this.compileIndex(privateDict.subrsIndex);privateDictTracker.setEntryLocation("Subrs",[privateDictData.length],output),output.add(subrs)}}},compileDict:function(dict,offsetTracker){for(var out=[],order=dict.order,i=0;i<order.length;++i){var key=order[i];if(key in dict.values){var values=dict.values[key],types=dict.types[key];if(isArray(types)||(types=[types]),isArray(values)||(values=[values]),0!==values.length){for(var j=0,jj=types.length;jj>j;++j){var type=types[j],value=values[j];switch(type){case"num":case"sid":out=out.concat(this.encodeNumber(value));break;case"offset":var name=dict.keyToNameMap[key];offsetTracker.isTracking(name)||offsetTracker.track(name,out.length),out=out.concat([29,0,0,0,0]);break;case"array":case"delta":out=out.concat(this.encodeNumber(value));for(var k=1,kk=values.length;kk>k;++k)out=out.concat(this.encodeNumber(values[k]));break;default:error("Unknown data type of "+type)}}out=out.concat(dict.opcodes[key])}}}return out},compileStringIndex:function(strings){for(var stringIndex=new CFFIndex,i=0,ii=strings.length;ii>i;++i)stringIndex.add(stringToBytes(strings[i]));return this.compileIndex(stringIndex)},compileGlobalSubrIndex:function(){var globalSubrIndex=this.cff.globalSubrIndex;this.out.writeByteArray(this.compileIndex(globalSubrIndex))},compileCharStrings:function(charStrings){return this.compileIndex(charStrings)},compileCharset:function(charset){return this.compileTypedArray(charset.raw)},compileEncoding:function(encoding){return this.compileTypedArray(encoding.raw)},compileFDSelect:function(fdSelect){return this.compileTypedArray(fdSelect)},compileTypedArray:function(data){for(var out=[],i=0,ii=data.length;ii>i;++i)out[i]=data[i];return out},compileIndex:function(index,trackers){trackers=trackers||[];var objects=index.objects,count=objects.length;if(0===count)return[0,0,0];var i,data=[count>>8&255,255&count],lastOffset=1;for(i=0;count>i;++i)lastOffset+=objects[i].length;var offsetSize;offsetSize=256>lastOffset?1:65536>lastOffset?2:16777216>lastOffset?3:4,data.push(offsetSize);var relativeOffset=1;for(i=0;count+1>i;i++)1===offsetSize?data.push(255&relativeOffset):2===offsetSize?data.push(relativeOffset>>8&255,255&relativeOffset):3===offsetSize?data.push(relativeOffset>>16&255,relativeOffset>>8&255,255&relativeOffset):data.push(relativeOffset>>>24&255,relativeOffset>>16&255,relativeOffset>>8&255,255&relativeOffset),objects[i]&&(relativeOffset+=objects[i].length);for(i=0;count>i;i++){trackers[i]&&trackers[i].offset(data.length);for(var j=0,jj=objects[i].length;jj>j;j++)data.push(objects[i][j])}return data}},CFFCompiler}();!function(){/Windows/.test(navigator.userAgent)&&(SEAC_ANALYSIS_ENABLED=!0)}(),function(){/Windows.*Chrome/.test(navigator.userAgent)&&(SKIP_PRIVATE_USE_RANGE_F000_TO_F01F=!0)}();var FontRendererFactory=function(){function getLong(data,offset){return data[offset]<<24|data[offset+1]<<16|data[offset+2]<<8|data[offset+3]}function getUshort(data,offset){return data[offset]<<8|data[offset+1]}function parseCmap(data,start){var length,ranges,p,i,offset=1===getUshort(data,start+2)?getLong(data,start+8):getLong(data,start+16),format=getUshort(data,start+offset);if(4===format){length=getUshort(data,start+offset+2);var segCount=getUshort(data,start+offset+6)>>1;for(p=start+offset+14,ranges=[],i=0;segCount>i;i++,p+=2)ranges[i]={end:getUshort(data,p)};for(p+=2,i=0;segCount>i;i++,p+=2)ranges[i].start=getUshort(data,p);for(i=0;segCount>i;i++,p+=2)ranges[i].idDelta=getUshort(data,p);for(i=0;segCount>i;i++,p+=2){var idOffset=getUshort(data,p);if(0!==idOffset){ranges[i].ids=[];for(var j=0,jj=ranges[i].end-ranges[i].start+1;jj>j;j++)ranges[i].ids[j]=getUshort(data,p+idOffset),idOffset+=2}}return ranges}if(12===format){length=getLong(data,start+offset+4);var groups=getLong(data,start+offset+12);for(p=start+offset+16,ranges=[],i=0;groups>i;i++)ranges.push({start:getLong(data,p),end:getLong(data,p+4),idDelta:getLong(data,p+8)-getLong(data,p)}),p+=12;return ranges}error("not supported cmap: "+format)}function parseCff(data,start,end){var properties={},parser=new CFFParser(new Stream(data,start,end-start),properties),cff=parser.parse();return{glyphs:cff.charStrings.objects,subrs:cff.topDict.privateDict&&cff.topDict.privateDict.subrsIndex&&cff.topDict.privateDict.subrsIndex.objects,gsubrs:cff.globalSubrIndex&&cff.globalSubrIndex.objects}}function parseGlyfTable(glyf,loca,isGlyphLocationsLong){var itemSize,itemDecode;isGlyphLocationsLong?(itemSize=4,itemDecode=function(data,offset){return data[offset]<<24|data[offset+1]<<16|data[offset+2]<<8|data[offset+3]}):(itemSize=2,itemDecode=function(data,offset){return data[offset]<<9|data[offset+1]<<1});for(var glyphs=[],startOffset=itemDecode(loca,0),j=itemSize;j<loca.length;j+=itemSize){var endOffset=itemDecode(loca,j);glyphs.push(glyf.subarray(startOffset,endOffset)),startOffset=endOffset}return glyphs}function lookupCmap(ranges,unicode){for(var code=unicode.charCodeAt(0),l=0,r=ranges.length-1;r>l;){var c=l+r+1>>1;code<ranges[c].start?r=c-1:l=c}return ranges[l].start<=code&&code<=ranges[l].end?ranges[l].idDelta+(ranges[l].ids?ranges[l].ids[code-ranges[l].start]:code)&65535:0}function compileGlyf(code,js,font){function moveTo(x,y){js.push("c.moveTo("+x+","+y+");")}function lineTo(x,y){js.push("c.lineTo("+x+","+y+");")}function quadraticCurveTo(xa,ya,x,y){js.push("c.quadraticCurveTo("+xa+","+ya+","+x+","+y+");")}var flags,i=0,numberOfContours=(code[i]<<24|code[i+1]<<16)>>16,x=0,y=0;if(i+=10,0>numberOfContours){do{flags=code[i]<<8|code[i+1];var glyphIndex=code[i+2]<<8|code[i+3];i+=4;var arg1,arg2;1&flags?(arg1=(code[i]<<24|code[i+1]<<16)>>16,arg2=(code[i+2]<<24|code[i+3]<<16)>>16,i+=4):(arg1=code[i++],arg2=code[i++]),2&flags?(x=arg1,y=arg2):(x=0,y=0);var scaleX=1,scaleY=1,scale01=0,scale10=0;8&flags?(scaleX=scaleY=(code[i]<<24|code[i+1]<<16)/1073741824,i+=2):64&flags?(scaleX=(code[i]<<24|code[i+1]<<16)/1073741824,scaleY=(code[i+2]<<24|code[i+3]<<16)/1073741824,i+=4):128&flags&&(scaleX=(code[i]<<24|code[i+1]<<16)/1073741824,scale01=(code[i+2]<<24|code[i+3]<<16)/1073741824,scale10=(code[i+4]<<24|code[i+5]<<16)/1073741824,scaleY=(code[i+6]<<24|code[i+7]<<16)/1073741824,i+=8);var subglyph=font.glyphs[glyphIndex];subglyph&&(js.push("c.save();"),js.push("c.transform("+scaleX+","+scale01+","+scale10+","+scaleY+","+x+","+y+");"),compileGlyf(subglyph,js,font),js.push("c.restore();"))}while(32&flags)}else{var j,jj,endPtsOfContours=[];for(j=0;numberOfContours>j;j++)endPtsOfContours.push(code[i]<<8|code[i+1]),i+=2;var instructionLength=code[i]<<8|code[i+1];i+=2+instructionLength;for(var numberOfPoints=endPtsOfContours[endPtsOfContours.length-1]+1,points=[];points.length<numberOfPoints;){flags=code[i++];var repeat=1;for(8&flags&&(repeat+=code[i++]);repeat-->0;)points.push({flags:flags})}for(j=0;numberOfPoints>j;j++){switch(18&points[j].flags){case 0:x+=(code[i]<<24|code[i+1]<<16)>>16,i+=2;break;case 2:x-=code[i++];break;case 18:x+=code[i++]}points[j].x=x}for(j=0;numberOfPoints>j;j++){switch(36&points[j].flags){case 0:y+=(code[i]<<24|code[i+1]<<16)>>16,i+=2;break;case 4:y-=code[i++];break;case 36:y+=code[i++]}points[j].y=y}var startPoint=0;for(i=0;numberOfContours>i;i++){var endPoint=endPtsOfContours[i],contour=points.slice(startPoint,endPoint+1);if(1&contour[0].flags)contour.push(contour[0]);else if(1&contour[contour.length-1].flags)contour.unshift(contour[contour.length-1]);else{var p={flags:1,x:(contour[0].x+contour[contour.length-1].x)/2,y:(contour[0].y+contour[contour.length-1].y)/2};contour.unshift(p),contour.push(p)}for(moveTo(contour[0].x,contour[0].y),j=1,jj=contour.length;jj>j;j++)1&contour[j].flags?lineTo(contour[j].x,contour[j].y):1&contour[j+1].flags?(quadraticCurveTo(contour[j].x,contour[j].y,contour[j+1].x,contour[j+1].y),j++):quadraticCurveTo(contour[j].x,contour[j].y,(contour[j].x+contour[j+1].x)/2,(contour[j].y+contour[j+1].y)/2);startPoint=endPoint+1}}}function compileCharString(code,js,font){function moveTo(x,y){js.push("c.moveTo("+x+","+y+");")}function lineTo(x,y){js.push("c.lineTo("+x+","+y+");")}function bezierCurveTo(x1,y1,x2,y2,x,y){js.push("c.bezierCurveTo("+x1+","+y1+","+x2+","+y2+","+x+","+y+");")}function parse(code){for(var i=0;i<code.length;){var xa,xb,ya,yb,y1,y2,y3,n,subrCode,stackClean=!1,v=code[i++];switch(v){case 1:stems+=stack.length>>1,stackClean=!0;break;case 3:stems+=stack.length>>1,stackClean=!0;break;case 4:y+=stack.pop(),moveTo(x,y),stackClean=!0;break;case 5:for(;stack.length>0;)x+=stack.shift(),y+=stack.shift(),lineTo(x,y);break;case 6:for(;stack.length>0&&(x+=stack.shift(),lineTo(x,y),0!==stack.length);)y+=stack.shift(),lineTo(x,y);break;case 7:for(;stack.length>0&&(y+=stack.shift(),lineTo(x,y),0!==stack.length);)x+=stack.shift(),lineTo(x,y);break;case 8:for(;stack.length>0;)xa=x+stack.shift(),ya=y+stack.shift(),xb=xa+stack.shift(),yb=ya+stack.shift(),x=xb+stack.shift(),y=yb+stack.shift(),bezierCurveTo(xa,ya,xb,yb,x,y);break;case 10:n=stack.pop()+font.subrsBias,subrCode=font.subrs[n],subrCode&&parse(subrCode);break;case 11:return;case 12:switch(v=code[i++]){case 34:xa=x+stack.shift(),xb=xa+stack.shift(),y1=y+stack.shift(),x=xb+stack.shift(),bezierCurveTo(xa,y,xb,y1,x,y1),xa=x+stack.shift(),xb=xa+stack.shift(),x=xb+stack.shift(),bezierCurveTo(xa,y1,xb,y,x,y);break;case 35:xa=x+stack.shift(),ya=y+stack.shift(),xb=xa+stack.shift(),yb=ya+stack.shift(),x=xb+stack.shift(),y=yb+stack.shift(),bezierCurveTo(xa,ya,xb,yb,x,y),xa=x+stack.shift(),ya=y+stack.shift(),xb=xa+stack.shift(),yb=ya+stack.shift(),x=xb+stack.shift(),y=yb+stack.shift(),bezierCurveTo(xa,ya,xb,yb,x,y),stack.pop();
break;case 36:xa=x+stack.shift(),y1=y+stack.shift(),xb=xa+stack.shift(),y2=y1+stack.shift(),x=xb+stack.shift(),bezierCurveTo(xa,y1,xb,y2,x,y2),xa=x+stack.shift(),xb=xa+stack.shift(),y3=y2+stack.shift(),x=xb+stack.shift(),bezierCurveTo(xa,y2,xb,y3,x,y);break;case 37:var x0=x,y0=y;xa=x+stack.shift(),ya=y+stack.shift(),xb=xa+stack.shift(),yb=ya+stack.shift(),x=xb+stack.shift(),y=yb+stack.shift(),bezierCurveTo(xa,ya,xb,yb,x,y),xa=x+stack.shift(),ya=y+stack.shift(),xb=xa+stack.shift(),yb=ya+stack.shift(),x=xb,y=yb,Math.abs(x-x0)>Math.abs(y-y0)?x+=stack.shift():y+=stack.shift(),bezierCurveTo(xa,ya,xb,yb,x,y);break;default:error("unknown operator: 12 "+v)}break;case 14:if(stack.length>=4){var achar=stack.pop(),bchar=stack.pop();y=stack.pop(),x=stack.pop(),js.push("c.save();"),js.push("c.translate("+x+","+y+");");var gid=lookupCmap(font.cmap,String.fromCharCode(font.glyphNameMap[Encodings.StandardEncoding[achar]]));compileCharString(font.glyphs[gid],js,font),js.push("c.restore();"),gid=lookupCmap(font.cmap,String.fromCharCode(font.glyphNameMap[Encodings.StandardEncoding[bchar]])),compileCharString(font.glyphs[gid],js,font)}return;case 18:stems+=stack.length>>1,stackClean=!0;break;case 19:stems+=stack.length>>1,i+=stems+7>>3,stackClean=!0;break;case 20:stems+=stack.length>>1,i+=stems+7>>3,stackClean=!0;break;case 21:y+=stack.pop(),x+=stack.pop(),moveTo(x,y),stackClean=!0;break;case 22:x+=stack.pop(),moveTo(x,y),stackClean=!0;break;case 23:stems+=stack.length>>1,stackClean=!0;break;case 24:for(;stack.length>2;)xa=x+stack.shift(),ya=y+stack.shift(),xb=xa+stack.shift(),yb=ya+stack.shift(),x=xb+stack.shift(),y=yb+stack.shift(),bezierCurveTo(xa,ya,xb,yb,x,y);x+=stack.shift(),y+=stack.shift(),lineTo(x,y);break;case 25:for(;stack.length>6;)x+=stack.shift(),y+=stack.shift(),lineTo(x,y);xa=x+stack.shift(),ya=y+stack.shift(),xb=xa+stack.shift(),yb=ya+stack.shift(),x=xb+stack.shift(),y=yb+stack.shift(),bezierCurveTo(xa,ya,xb,yb,x,y);break;case 26:for(stack.length%2&&(x+=stack.shift());stack.length>0;)xa=x,ya=y+stack.shift(),xb=xa+stack.shift(),yb=ya+stack.shift(),x=xb,y=yb+stack.shift(),bezierCurveTo(xa,ya,xb,yb,x,y);break;case 27:for(stack.length%2&&(y+=stack.shift());stack.length>0;)xa=x+stack.shift(),ya=y,xb=xa+stack.shift(),yb=ya+stack.shift(),x=xb+stack.shift(),y=yb,bezierCurveTo(xa,ya,xb,yb,x,y);break;case 28:stack.push((code[i]<<24|code[i+1]<<16)>>16),i+=2;break;case 29:n=stack.pop()+font.gsubrsBias,subrCode=font.gsubrs[n],subrCode&&parse(subrCode);break;case 30:for(;stack.length>0&&(xa=x,ya=y+stack.shift(),xb=xa+stack.shift(),yb=ya+stack.shift(),x=xb+stack.shift(),y=yb+(1===stack.length?stack.shift():0),bezierCurveTo(xa,ya,xb,yb,x,y),0!==stack.length);)xa=x+stack.shift(),ya=y,xb=xa+stack.shift(),yb=ya+stack.shift(),y=yb+stack.shift(),x=xb+(1===stack.length?stack.shift():0),bezierCurveTo(xa,ya,xb,yb,x,y);break;case 31:for(;stack.length>0&&(xa=x+stack.shift(),ya=y,xb=xa+stack.shift(),yb=ya+stack.shift(),y=yb+stack.shift(),x=xb+(1===stack.length?stack.shift():0),bezierCurveTo(xa,ya,xb,yb,x,y),0!==stack.length);)xa=x,ya=y+stack.shift(),xb=xa+stack.shift(),yb=ya+stack.shift(),x=xb+stack.shift(),y=yb+(1===stack.length?stack.shift():0),bezierCurveTo(xa,ya,xb,yb,x,y);break;default:32>v&&error("unknown operator: "+v),247>v?stack.push(v-139):251>v?stack.push(256*(v-247)+code[i++]+108):255>v?stack.push(256*-(v-251)-code[i++]-108):(stack.push((code[i]<<24|code[i+1]<<16|code[i+2]<<8|code[i+3])/65536),i+=4)}stackClean&&(stack.length=0)}}var stack=[],x=0,y=0,stems=0;parse(code)}function CompiledFont(fontMatrix){this.compiledGlyphs={},this.fontMatrix=fontMatrix}function TrueTypeCompiled(glyphs,cmap,fontMatrix){fontMatrix=fontMatrix||[488e-6,0,0,488e-6,0,0],CompiledFont.call(this,fontMatrix),this.glyphs=glyphs,this.cmap=cmap,this.compiledGlyphs=[]}function Type2Compiled(cffInfo,cmap,fontMatrix,glyphNameMap){fontMatrix=fontMatrix||[.001,0,0,.001,0,0],CompiledFont.call(this,fontMatrix),this.glyphs=cffInfo.glyphs,this.gsubrs=cffInfo.gsubrs||[],this.subrs=cffInfo.subrs||[],this.cmap=cmap,this.glyphNameMap=glyphNameMap||GlyphsUnicode,this.compiledGlyphs=[],this.gsubrsBias=this.gsubrs.length<1240?107:this.gsubrs.length<33900?1131:32768,this.subrsBias=this.subrs.length<1240?107:this.subrs.length<33900?1131:32768}var noop="";return CompiledFont.prototype={getPathJs:function(unicode){var gid=lookupCmap(this.cmap,unicode),fn=this.compiledGlyphs[gid];return fn||(this.compiledGlyphs[gid]=fn=this.compileGlyph(this.glyphs[gid])),fn},compileGlyph:function(code){if(!code||0===code.length||14===code[0])return noop;var js=[];return js.push("c.save();"),js.push("c.transform("+this.fontMatrix.join(",")+");"),js.push("c.scale(size, -size);"),this.compileGlyphImpl(code,js),js.push("c.restore();"),js.join("\n")},compileGlyphImpl:function(){error("Children classes should implement this.")},hasBuiltPath:function(unicode){var gid=lookupCmap(this.cmap,unicode);return gid in this.compiledGlyphs}},Util.inherit(TrueTypeCompiled,CompiledFont,{compileGlyphImpl:function(code,js){compileGlyf(code,js,this)}}),Util.inherit(Type2Compiled,CompiledFont,{compileGlyphImpl:function(code,js){compileCharString(code,js,this)}}),{create:function(font){for(var cmap,glyf,loca,cff,indexToLocFormat,unitsPerEm,data=new Uint8Array(font.data),numTables=getUshort(data,4),i=0,p=12;numTables>i;i++,p+=16){var tag=bytesToString(data.subarray(p,p+4)),offset=getLong(data,p+8),length=getLong(data,p+12);switch(tag){case"cmap":cmap=parseCmap(data,offset,offset+length);break;case"glyf":glyf=data.subarray(offset,offset+length);break;case"loca":loca=data.subarray(offset,offset+length);break;case"head":unitsPerEm=getUshort(data,offset+18),indexToLocFormat=getUshort(data,offset+50);break;case"CFF ":cff=parseCff(data,offset,offset+length)}}if(glyf){var fontMatrix=unitsPerEm?[1/unitsPerEm,0,0,1/unitsPerEm,0,0]:font.fontMatrix;return new TrueTypeCompiled(parseGlyfTable(glyf,loca,indexToLocFormat),cmap,fontMatrix)}return new Type2Compiled(cff,cmap,font.fontMatrix,font.glyphNameMap)}}}(),GlyphsUnicode={A:65,AE:198,AEacute:508,AEmacron:482,AEsmall:63462,Aacute:193,Aacutesmall:63457,Abreve:258,Abreveacute:7854,Abrevecyrillic:1232,Abrevedotbelow:7862,Abrevegrave:7856,Abrevehookabove:7858,Abrevetilde:7860,Acaron:461,Acircle:9398,Acircumflex:194,Acircumflexacute:7844,Acircumflexdotbelow:7852,Acircumflexgrave:7846,Acircumflexhookabove:7848,Acircumflexsmall:63458,Acircumflextilde:7850,Acute:63177,Acutesmall:63412,Acyrillic:1040,Adblgrave:512,Adieresis:196,Adieresiscyrillic:1234,Adieresismacron:478,Adieresissmall:63460,Adotbelow:7840,Adotmacron:480,Agrave:192,Agravesmall:63456,Ahookabove:7842,Aiecyrillic:1236,Ainvertedbreve:514,Alpha:913,Alphatonos:902,Amacron:256,Amonospace:65313,Aogonek:260,Aring:197,Aringacute:506,Aringbelow:7680,Aringsmall:63461,Asmall:63329,Atilde:195,Atildesmall:63459,Aybarmenian:1329,B:66,Bcircle:9399,Bdotaccent:7682,Bdotbelow:7684,Becyrillic:1041,Benarmenian:1330,Beta:914,Bhook:385,Blinebelow:7686,Bmonospace:65314,Brevesmall:63220,Bsmall:63330,Btopbar:386,C:67,Caarmenian:1342,Cacute:262,Caron:63178,Caronsmall:63221,Ccaron:268,Ccedilla:199,Ccedillaacute:7688,Ccedillasmall:63463,Ccircle:9400,Ccircumflex:264,Cdot:266,Cdotaccent:266,Cedillasmall:63416,Chaarmenian:1353,Cheabkhasiancyrillic:1212,Checyrillic:1063,Chedescenderabkhasiancyrillic:1214,Chedescendercyrillic:1206,Chedieresiscyrillic:1268,Cheharmenian:1347,Chekhakassiancyrillic:1227,Cheverticalstrokecyrillic:1208,Chi:935,Chook:391,Circumflexsmall:63222,Cmonospace:65315,Coarmenian:1361,Csmall:63331,D:68,DZ:497,DZcaron:452,Daarmenian:1332,Dafrican:393,Dcaron:270,Dcedilla:7696,Dcircle:9401,Dcircumflexbelow:7698,Dcroat:272,Ddotaccent:7690,Ddotbelow:7692,Decyrillic:1044,Deicoptic:1006,Delta:8710,Deltagreek:916,Dhook:394,Dieresis:63179,DieresisAcute:63180,DieresisGrave:63181,Dieresissmall:63400,Digammagreek:988,Djecyrillic:1026,Dlinebelow:7694,Dmonospace:65316,Dotaccentsmall:63223,Dslash:272,Dsmall:63332,Dtopbar:395,Dz:498,Dzcaron:453,Dzeabkhasiancyrillic:1248,Dzecyrillic:1029,Dzhecyrillic:1039,E:69,Eacute:201,Eacutesmall:63465,Ebreve:276,Ecaron:282,Ecedillabreve:7708,Echarmenian:1333,Ecircle:9402,Ecircumflex:202,Ecircumflexacute:7870,Ecircumflexbelow:7704,Ecircumflexdotbelow:7878,Ecircumflexgrave:7872,Ecircumflexhookabove:7874,Ecircumflexsmall:63466,Ecircumflextilde:7876,Ecyrillic:1028,Edblgrave:516,Edieresis:203,Edieresissmall:63467,Edot:278,Edotaccent:278,Edotbelow:7864,Efcyrillic:1060,Egrave:200,Egravesmall:63464,Eharmenian:1335,Ehookabove:7866,Eightroman:8551,Einvertedbreve:518,Eiotifiedcyrillic:1124,Elcyrillic:1051,Elevenroman:8554,Emacron:274,Emacronacute:7702,Emacrongrave:7700,Emcyrillic:1052,Emonospace:65317,Encyrillic:1053,Endescendercyrillic:1186,Eng:330,Enghecyrillic:1188,Enhookcyrillic:1223,Eogonek:280,Eopen:400,Epsilon:917,Epsilontonos:904,Ercyrillic:1056,Ereversed:398,Ereversedcyrillic:1069,Escyrillic:1057,Esdescendercyrillic:1194,Esh:425,Esmall:63333,Eta:919,Etarmenian:1336,Etatonos:905,Eth:208,Ethsmall:63472,Etilde:7868,Etildebelow:7706,Euro:8364,Ezh:439,Ezhcaron:494,Ezhreversed:440,F:70,Fcircle:9403,Fdotaccent:7710,Feharmenian:1366,Feicoptic:996,Fhook:401,Fitacyrillic:1138,Fiveroman:8548,Fmonospace:65318,Fourroman:8547,Fsmall:63334,G:71,GBsquare:13191,Gacute:500,Gamma:915,Gammaafrican:404,Gangiacoptic:1002,Gbreve:286,Gcaron:486,Gcedilla:290,Gcircle:9404,Gcircumflex:284,Gcommaaccent:290,Gdot:288,Gdotaccent:288,Gecyrillic:1043,Ghadarmenian:1346,Ghemiddlehookcyrillic:1172,Ghestrokecyrillic:1170,Gheupturncyrillic:1168,Ghook:403,Gimarmenian:1331,Gjecyrillic:1027,Gmacron:7712,Gmonospace:65319,Grave:63182,Gravesmall:63328,Gsmall:63335,Gsmallhook:667,Gstroke:484,H:72,H18533:9679,H18543:9642,H18551:9643,H22073:9633,HPsquare:13259,Haabkhasiancyrillic:1192,Hadescendercyrillic:1202,Hardsigncyrillic:1066,Hbar:294,Hbrevebelow:7722,Hcedilla:7720,Hcircle:9405,Hcircumflex:292,Hdieresis:7718,Hdotaccent:7714,Hdotbelow:7716,Hmonospace:65320,Hoarmenian:1344,Horicoptic:1e3,Hsmall:63336,Hungarumlaut:63183,Hungarumlautsmall:63224,Hzsquare:13200,I:73,IAcyrillic:1071,IJ:306,IUcyrillic:1070,Iacute:205,Iacutesmall:63469,Ibreve:300,Icaron:463,Icircle:9406,Icircumflex:206,Icircumflexsmall:63470,Icyrillic:1030,Idblgrave:520,Idieresis:207,Idieresisacute:7726,Idieresiscyrillic:1252,Idieresissmall:63471,Idot:304,Idotaccent:304,Idotbelow:7882,Iebrevecyrillic:1238,Iecyrillic:1045,Ifraktur:8465,Igrave:204,Igravesmall:63468,Ihookabove:7880,Iicyrillic:1048,Iinvertedbreve:522,Iishortcyrillic:1049,Imacron:298,Imacroncyrillic:1250,Imonospace:65321,Iniarmenian:1339,Iocyrillic:1025,Iogonek:302,Iota:921,Iotaafrican:406,Iotadieresis:938,Iotatonos:906,Ismall:63337,Istroke:407,Itilde:296,Itildebelow:7724,Izhitsacyrillic:1140,Izhitsadblgravecyrillic:1142,J:74,Jaarmenian:1345,Jcircle:9407,Jcircumflex:308,Jecyrillic:1032,Jheharmenian:1355,Jmonospace:65322,Jsmall:63338,K:75,KBsquare:13189,KKsquare:13261,Kabashkircyrillic:1184,Kacute:7728,Kacyrillic:1050,Kadescendercyrillic:1178,Kahookcyrillic:1219,Kappa:922,Kastrokecyrillic:1182,Kaverticalstrokecyrillic:1180,Kcaron:488,Kcedilla:310,Kcircle:9408,Kcommaaccent:310,Kdotbelow:7730,Keharmenian:1364,Kenarmenian:1343,Khacyrillic:1061,Kheicoptic:998,Khook:408,Kjecyrillic:1036,Klinebelow:7732,Kmonospace:65323,Koppacyrillic:1152,Koppagreek:990,Ksicyrillic:1134,Ksmall:63339,L:76,LJ:455,LL:63167,Lacute:313,Lambda:923,Lcaron:317,Lcedilla:315,Lcircle:9409,Lcircumflexbelow:7740,Lcommaaccent:315,Ldot:319,Ldotaccent:319,Ldotbelow:7734,Ldotbelowmacron:7736,Liwnarmenian:1340,Lj:456,Ljecyrillic:1033,Llinebelow:7738,Lmonospace:65324,Lslash:321,Lslashsmall:63225,Lsmall:63340,M:77,MBsquare:13190,Macron:63184,Macronsmall:63407,Macute:7742,Mcircle:9410,Mdotaccent:7744,Mdotbelow:7746,Menarmenian:1348,Mmonospace:65325,Msmall:63341,Mturned:412,Mu:924,N:78,NJ:458,Nacute:323,Ncaron:327,Ncedilla:325,Ncircle:9411,Ncircumflexbelow:7754,Ncommaaccent:325,Ndotaccent:7748,Ndotbelow:7750,Nhookleft:413,Nineroman:8552,Nj:459,Njecyrillic:1034,Nlinebelow:7752,Nmonospace:65326,Nowarmenian:1350,Nsmall:63342,Ntilde:209,Ntildesmall:63473,Nu:925,O:79,OE:338,OEsmall:63226,Oacute:211,Oacutesmall:63475,Obarredcyrillic:1256,Obarreddieresiscyrillic:1258,Obreve:334,Ocaron:465,Ocenteredtilde:415,Ocircle:9412,Ocircumflex:212,Ocircumflexacute:7888,Ocircumflexdotbelow:7896,Ocircumflexgrave:7890,Ocircumflexhookabove:7892,Ocircumflexsmall:63476,Ocircumflextilde:7894,Ocyrillic:1054,Odblacute:336,Odblgrave:524,Odieresis:214,Odieresiscyrillic:1254,Odieresissmall:63478,Odotbelow:7884,Ogoneksmall:63227,Ograve:210,Ogravesmall:63474,Oharmenian:1365,Ohm:8486,Ohookabove:7886,Ohorn:416,Ohornacute:7898,Ohorndotbelow:7906,Ohorngrave:7900,Ohornhookabove:7902,Ohorntilde:7904,Ohungarumlaut:336,Oi:418,Oinvertedbreve:526,Omacron:332,Omacronacute:7762,Omacrongrave:7760,Omega:8486,Omegacyrillic:1120,Omegagreek:937,Omegaroundcyrillic:1146,Omegatitlocyrillic:1148,Omegatonos:911,Omicron:927,Omicrontonos:908,Omonospace:65327,Oneroman:8544,Oogonek:490,Oogonekmacron:492,Oopen:390,Oslash:216,Oslashacute:510,Oslashsmall:63480,Osmall:63343,Ostrokeacute:510,Otcyrillic:1150,Otilde:213,Otildeacute:7756,Otildedieresis:7758,Otildesmall:63477,P:80,Pacute:7764,Pcircle:9413,Pdotaccent:7766,Pecyrillic:1055,Peharmenian:1354,Pemiddlehookcyrillic:1190,Phi:934,Phook:420,Pi:928,Piwrarmenian:1363,Pmonospace:65328,Psi:936,Psicyrillic:1136,Psmall:63344,Q:81,Qcircle:9414,Qmonospace:65329,Qsmall:63345,R:82,Raarmenian:1356,Racute:340,Rcaron:344,Rcedilla:342,Rcircle:9415,Rcommaaccent:342,Rdblgrave:528,Rdotaccent:7768,Rdotbelow:7770,Rdotbelowmacron:7772,Reharmenian:1360,Rfraktur:8476,Rho:929,Ringsmall:63228,Rinvertedbreve:530,Rlinebelow:7774,Rmonospace:65330,Rsmall:63346,Rsmallinverted:641,Rsmallinvertedsuperior:694,S:83,SF010000:9484,SF020000:9492,SF030000:9488,SF040000:9496,SF050000:9532,SF060000:9516,SF070000:9524,SF080000:9500,SF090000:9508,SF100000:9472,SF110000:9474,SF190000:9569,SF200000:9570,SF210000:9558,SF220000:9557,SF230000:9571,SF240000:9553,SF250000:9559,SF260000:9565,SF270000:9564,SF280000:9563,SF360000:9566,SF370000:9567,SF380000:9562,SF390000:9556,SF400000:9577,SF410000:9574,SF420000:9568,SF430000:9552,SF440000:9580,SF450000:9575,SF460000:9576,SF470000:9572,SF480000:9573,SF490000:9561,SF500000:9560,SF510000:9554,SF520000:9555,SF530000:9579,SF540000:9578,Sacute:346,Sacutedotaccent:7780,Sampigreek:992,Scaron:352,Scarondotaccent:7782,Scaronsmall:63229,Scedilla:350,Schwa:399,Schwacyrillic:1240,Schwadieresiscyrillic:1242,Scircle:9416,Scircumflex:348,Scommaaccent:536,Sdotaccent:7776,Sdotbelow:7778,Sdotbelowdotaccent:7784,Seharmenian:1357,Sevenroman:8550,Shaarmenian:1351,Shacyrillic:1064,Shchacyrillic:1065,Sheicoptic:994,Shhacyrillic:1210,Shimacoptic:1004,Sigma:931,Sixroman:8549,Smonospace:65331,Softsigncyrillic:1068,Ssmall:63347,Stigmagreek:986,T:84,Tau:932,Tbar:358,Tcaron:356,Tcedilla:354,Tcircle:9417,Tcircumflexbelow:7792,Tcommaaccent:354,Tdotaccent:7786,Tdotbelow:7788,Tecyrillic:1058,Tedescendercyrillic:1196,Tenroman:8553,Tetsecyrillic:1204,Theta:920,Thook:428,Thorn:222,Thornsmall:63486,Threeroman:8546,Tildesmall:63230,Tiwnarmenian:1359,Tlinebelow:7790,Tmonospace:65332,Toarmenian:1337,Tonefive:444,Tonesix:388,Tonetwo:423,Tretroflexhook:430,Tsecyrillic:1062,Tshecyrillic:1035,Tsmall:63348,Twelveroman:8555,Tworoman:8545,U:85,Uacute:218,Uacutesmall:63482,Ubreve:364,Ucaron:467,Ucircle:9418,Ucircumflex:219,Ucircumflexbelow:7798,Ucircumflexsmall:63483,Ucyrillic:1059,Udblacute:368,Udblgrave:532,Udieresis:220,Udieresisacute:471,Udieresisbelow:7794,Udieresiscaron:473,Udieresiscyrillic:1264,Udieresisgrave:475,Udieresismacron:469,Udieresissmall:63484,Udotbelow:7908,Ugrave:217,Ugravesmall:63481,Uhookabove:7910,Uhorn:431,Uhornacute:7912,Uhorndotbelow:7920,Uhorngrave:7914,Uhornhookabove:7916,Uhorntilde:7918,Uhungarumlaut:368,Uhungarumlautcyrillic:1266,Uinvertedbreve:534,Ukcyrillic:1144,Umacron:362,Umacroncyrillic:1262,Umacrondieresis:7802,Umonospace:65333,Uogonek:370,Upsilon:933,Upsilon1:978,Upsilonacutehooksymbolgreek:979,Upsilonafrican:433,Upsilondieresis:939,Upsilondieresishooksymbolgreek:980,Upsilonhooksymbol:978,Upsilontonos:910,Uring:366,Ushortcyrillic:1038,Usmall:63349,Ustraightcyrillic:1198,Ustraightstrokecyrillic:1200,Utilde:360,Utildeacute:7800,Utildebelow:7796,V:86,Vcircle:9419,Vdotbelow:7806,Vecyrillic:1042,Vewarmenian:1358,Vhook:434,Vmonospace:65334,Voarmenian:1352,Vsmall:63350,Vtilde:7804,W:87,Wacute:7810,Wcircle:9420,Wcircumflex:372,Wdieresis:7812,Wdotaccent:7814,Wdotbelow:7816,Wgrave:7808,Wmonospace:65335,Wsmall:63351,X:88,Xcircle:9421,Xdieresis:7820,Xdotaccent:7818,Xeharmenian:1341,Xi:926,Xmonospace:65336,Xsmall:63352,Y:89,Yacute:221,Yacutesmall:63485,Yatcyrillic:1122,Ycircle:9422,Ycircumflex:374,Ydieresis:376,Ydieresissmall:63487,Ydotaccent:7822,Ydotbelow:7924,Yericyrillic:1067,Yerudieresiscyrillic:1272,Ygrave:7922,Yhook:435,Yhookabove:7926,Yiarmenian:1349,Yicyrillic:1031,Yiwnarmenian:1362,Ymonospace:65337,Ysmall:63353,Ytilde:7928,Yusbigcyrillic:1130,Yusbigiotifiedcyrillic:1132,Yuslittlecyrillic:1126,Yuslittleiotifiedcyrillic:1128,Z:90,Zaarmenian:1334,Zacute:377,Zcaron:381,Zcaronsmall:63231,Zcircle:9423,Zcircumflex:7824,Zdot:379,Zdotaccent:379,Zdotbelow:7826,Zecyrillic:1047,Zedescendercyrillic:1176,Zedieresiscyrillic:1246,Zeta:918,Zhearmenian:1338,Zhebrevecyrillic:1217,Zhecyrillic:1046,Zhedescendercyrillic:1174,Zhedieresiscyrillic:1244,Zlinebelow:7828,Zmonospace:65338,Zsmall:63354,Zstroke:437,a:97,aabengali:2438,aacute:225,aadeva:2310,aagujarati:2694,aagurmukhi:2566,aamatragurmukhi:2622,aarusquare:13059,aavowelsignbengali:2494,aavowelsigndeva:2366,aavowelsigngujarati:2750,abbreviationmarkarmenian:1375,abbreviationsigndeva:2416,abengali:2437,abopomofo:12570,abreve:259,abreveacute:7855,abrevecyrillic:1233,abrevedotbelow:7863,abrevegrave:7857,abrevehookabove:7859,abrevetilde:7861,acaron:462,acircle:9424,acircumflex:226,acircumflexacute:7845,acircumflexdotbelow:7853,acircumflexgrave:7847,acircumflexhookabove:7849,acircumflextilde:7851,acute:180,acutebelowcmb:791,acutecmb:769,acutecomb:769,acutedeva:2388,acutelowmod:719,acutetonecmb:833,acyrillic:1072,adblgrave:513,addakgurmukhi:2673,adeva:2309,adieresis:228,adieresiscyrillic:1235,adieresismacron:479,adotbelow:7841,adotmacron:481,ae:230,aeacute:509,aekorean:12624,aemacron:483,afii00208:8213,afii08941:8356,afii10017:1040,afii10018:1041,afii10019:1042,afii10020:1043,afii10021:1044,afii10022:1045,afii10023:1025,afii10024:1046,afii10025:1047,afii10026:1048,afii10027:1049,afii10028:1050,afii10029:1051,afii10030:1052,afii10031:1053,afii10032:1054,afii10033:1055,afii10034:1056,afii10035:1057,afii10036:1058,afii10037:1059,afii10038:1060,afii10039:1061,afii10040:1062,afii10041:1063,afii10042:1064,afii10043:1065,afii10044:1066,afii10045:1067,afii10046:1068,afii10047:1069,afii10048:1070,afii10049:1071,afii10050:1168,afii10051:1026,afii10052:1027,afii10053:1028,afii10054:1029,afii10055:1030,afii10056:1031,afii10057:1032,afii10058:1033,afii10059:1034,afii10060:1035,afii10061:1036,afii10062:1038,afii10063:63172,afii10064:63173,afii10065:1072,afii10066:1073,afii10067:1074,afii10068:1075,afii10069:1076,afii10070:1077,afii10071:1105,afii10072:1078,afii10073:1079,afii10074:1080,afii10075:1081,afii10076:1082,afii10077:1083,afii10078:1084,afii10079:1085,afii10080:1086,afii10081:1087,afii10082:1088,afii10083:1089,afii10084:1090,afii10085:1091,afii10086:1092,afii10087:1093,afii10088:1094,afii10089:1095,afii10090:1096,afii10091:1097,afii10092:1098,afii10093:1099,afii10094:1100,afii10095:1101,afii10096:1102,afii10097:1103,afii10098:1169,afii10099:1106,afii10100:1107,afii10101:1108,afii10102:1109,afii10103:1110,afii10104:1111,afii10105:1112,afii10106:1113,afii10107:1114,afii10108:1115,afii10109:1116,afii10110:1118,afii10145:1039,afii10146:1122,afii10147:1138,afii10148:1140,afii10192:63174,afii10193:1119,afii10194:1123,afii10195:1139,afii10196:1141,afii10831:63175,afii10832:63176,afii10846:1241,afii299:8206,afii300:8207,afii301:8205,afii57381:1642,afii57388:1548,afii57392:1632,afii57393:1633,afii57394:1634,afii57395:1635,afii57396:1636,afii57397:1637,afii57398:1638,afii57399:1639,afii57400:1640,afii57401:1641,afii57403:1563,afii57407:1567,afii57409:1569,afii57410:1570,afii57411:1571,afii57412:1572,afii57413:1573,afii57414:1574,afii57415:1575,afii57416:1576,afii57417:1577,afii57418:1578,afii57419:1579,afii57420:1580,afii57421:1581,afii57422:1582,afii57423:1583,afii57424:1584,afii57425:1585,afii57426:1586,afii57427:1587,afii57428:1588,afii57429:1589,afii57430:1590,afii57431:1591,afii57432:1592,afii57433:1593,afii57434:1594,afii57440:1600,afii57441:1601,afii57442:1602,afii57443:1603,afii57444:1604,afii57445:1605,afii57446:1606,afii57448:1608,afii57449:1609,afii57450:1610,afii57451:1611,afii57452:1612,afii57453:1613,afii57454:1614,afii57455:1615,afii57456:1616,afii57457:1617,afii57458:1618,afii57470:1607,afii57505:1700,afii57506:1662,afii57507:1670,afii57508:1688,afii57509:1711,afii57511:1657,afii57512:1672,afii57513:1681,afii57514:1722,afii57519:1746,afii57534:1749,afii57636:8362,afii57645:1470,afii57658:1475,afii57664:1488,afii57665:1489,afii57666:1490,afii57667:1491,afii57668:1492,afii57669:1493,afii57670:1494,afii57671:1495,afii57672:1496,afii57673:1497,afii57674:1498,afii57675:1499,afii57676:1500,afii57677:1501,afii57678:1502,afii57679:1503,afii57680:1504,afii57681:1505,afii57682:1506,afii57683:1507,afii57684:1508,afii57685:1509,afii57686:1510,afii57687:1511,afii57688:1512,afii57689:1513,afii57690:1514,afii57694:64298,afii57695:64299,afii57700:64331,afii57705:64287,afii57716:1520,afii57717:1521,afii57718:1522,afii57723:64309,afii57793:1460,afii57794:1461,afii57795:1462,afii57796:1467,afii57797:1464,afii57798:1463,afii57799:1456,afii57800:1458,afii57801:1457,afii57802:1459,afii57803:1474,afii57804:1473,afii57806:1465,afii57807:1468,afii57839:1469,afii57841:1471,afii57842:1472,afii57929:700,afii61248:8453,afii61289:8467,afii61352:8470,afii61573:8236,afii61574:8237,afii61575:8238,afii61664:8204,afii63167:1645,afii64937:701,agrave:224,agujarati:2693,agurmukhi:2565,ahiragana:12354,ahookabove:7843,aibengali:2448,aibopomofo:12574,aideva:2320,aiecyrillic:1237,aigujarati:2704,aigurmukhi:2576,aimatragurmukhi:2632,ainarabic:1593,ainfinalarabic:65226,aininitialarabic:65227,ainmedialarabic:65228,ainvertedbreve:515,aivowelsignbengali:2504,aivowelsigndeva:2376,aivowelsigngujarati:2760,akatakana:12450,akatakanahalfwidth:65393,akorean:12623,alef:1488,alefarabic:1575,alefdageshhebrew:64304,aleffinalarabic:65166,alefhamzaabovearabic:1571,alefhamzaabovefinalarabic:65156,alefhamzabelowarabic:1573,alefhamzabelowfinalarabic:65160,alefhebrew:1488,aleflamedhebrew:64335,alefmaddaabovearabic:1570,alefmaddaabovefinalarabic:65154,alefmaksuraarabic:1609,alefmaksurafinalarabic:65264,alefmaksurainitialarabic:65267,alefmaksuramedialarabic:65268,alefpatahhebrew:64302,alefqamatshebrew:64303,aleph:8501,allequal:8780,alpha:945,alphatonos:940,amacron:257,amonospace:65345,ampersand:38,ampersandmonospace:65286,ampersandsmall:63270,amsquare:13250,anbopomofo:12578,angbopomofo:12580,angbracketleft:12296,angbracketright:12297,angkhankhuthai:3674,angle:8736,anglebracketleft:12296,anglebracketleftvertical:65087,anglebracketright:12297,anglebracketrightvertical:65088,angleleft:9001,angleright:9002,angstrom:8491,anoteleia:903,anudattadeva:2386,anusvarabengali:2434,anusvaradeva:2306,anusvaragujarati:2690,aogonek:261,apaatosquare:13056,aparen:9372,apostrophearmenian:1370,apostrophemod:700,apple:63743,approaches:8784,approxequal:8776,approxequalorimage:8786,approximatelyequal:8773,araeaekorean:12686,araeakorean:12685,arc:8978,arighthalfring:7834,aring:229,aringacute:507,aringbelow:7681,arrowboth:8596,arrowdashdown:8675,arrowdashleft:8672,arrowdashright:8674,arrowdashup:8673,arrowdblboth:8660,arrowdbldown:8659,arrowdblleft:8656,arrowdblright:8658,arrowdblup:8657,arrowdown:8595,arrowdownleft:8601,arrowdownright:8600,arrowdownwhite:8681,arrowheaddownmod:709,arrowheadleftmod:706,arrowheadrightmod:707,arrowheadupmod:708,arrowhorizex:63719,arrowleft:8592,arrowleftdbl:8656,arrowleftdblstroke:8653,arrowleftoverright:8646,arrowleftwhite:8678,arrowright:8594,arrowrightdblstroke:8655,arrowrightheavy:10142,arrowrightoverleft:8644,arrowrightwhite:8680,arrowtableft:8676,arrowtabright:8677,arrowup:8593,arrowupdn:8597,arrowupdnbse:8616,arrowupdownbase:8616,arrowupleft:8598,arrowupleftofdown:8645,arrowupright:8599,arrowupwhite:8679,arrowvertex:63718,asciicircum:94,asciicircummonospace:65342,asciitilde:126,asciitildemonospace:65374,ascript:593,ascriptturned:594,asmallhiragana:12353,asmallkatakana:12449,asmallkatakanahalfwidth:65383,asterisk:42,asteriskaltonearabic:1645,asteriskarabic:1645,asteriskmath:8727,asteriskmonospace:65290,asterisksmall:65121,asterism:8258,asuperior:63209,asymptoticallyequal:8771,at:64,atilde:227,atmonospace:65312,atsmall:65131,aturned:592,aubengali:2452,aubopomofo:12576,audeva:2324,augujarati:2708,augurmukhi:2580,aulengthmarkbengali:2519,aumatragurmukhi:2636,auvowelsignbengali:2508,auvowelsigndeva:2380,auvowelsigngujarati:2764,avagrahadeva:2365,aybarmenian:1377,ayin:1506,ayinaltonehebrew:64288,ayinhebrew:1506,b:98,babengali:2476,backslash:92,backslashmonospace:65340,badeva:2348,bagujarati:2732,bagurmukhi:2604,bahiragana:12400,bahtthai:3647,bakatakana:12496,bar:124,barmonospace:65372,bbopomofo:12549,bcircle:9425,bdotaccent:7683,bdotbelow:7685,beamedsixteenthnotes:9836,because:8757,becyrillic:1073,beharabic:1576,behfinalarabic:65168,behinitialarabic:65169,behiragana:12409,behmedialarabic:65170,behmeeminitialarabic:64671,behmeemisolatedarabic:64520,behnoonfinalarabic:64621,bekatakana:12505,benarmenian:1378,bet:1489,beta:946,betasymbolgreek:976,betdagesh:64305,betdageshhebrew:64305,bethebrew:1489,betrafehebrew:64332,bhabengali:2477,bhadeva:2349,bhagujarati:2733,bhagurmukhi:2605,bhook:595,bihiragana:12403,bikatakana:12499,bilabialclick:664,bindigurmukhi:2562,birusquare:13105,blackcircle:9679,blackdiamond:9670,blackdownpointingtriangle:9660,blackleftpointingpointer:9668,blackleftpointingtriangle:9664,blacklenticularbracketleft:12304,blacklenticularbracketleftvertical:65083,blacklenticularbracketright:12305,blacklenticularbracketrightvertical:65084,blacklowerlefttriangle:9699,blacklowerrighttriangle:9698,blackrectangle:9644,blackrightpointingpointer:9658,blackrightpointingtriangle:9654,blacksmallsquare:9642,blacksmilingface:9787,blacksquare:9632,blackstar:9733,blackupperlefttriangle:9700,blackupperrighttriangle:9701,blackuppointingsmalltriangle:9652,blackuppointingtriangle:9650,blank:9251,blinebelow:7687,block:9608,bmonospace:65346,bobaimaithai:3610,bohiragana:12412,bokatakana:12508,bparen:9373,bqsquare:13251,braceex:63732,braceleft:123,braceleftbt:63731,braceleftmid:63730,braceleftmonospace:65371,braceleftsmall:65115,bracelefttp:63729,braceleftvertical:65079,braceright:125,bracerightbt:63742,bracerightmid:63741,bracerightmonospace:65373,bracerightsmall:65116,bracerighttp:63740,bracerightvertical:65080,bracketleft:91,bracketleftbt:63728,bracketleftex:63727,bracketleftmonospace:65339,bracketlefttp:63726,bracketright:93,bracketrightbt:63739,bracketrightex:63738,bracketrightmonospace:65341,bracketrighttp:63737,breve:728,brevebelowcmb:814,brevecmb:774,breveinvertedbelowcmb:815,breveinvertedcmb:785,breveinverteddoublecmb:865,bridgebelowcmb:810,bridgeinvertedbelowcmb:826,brokenbar:166,bstroke:384,bsuperior:63210,btopbar:387,buhiragana:12406,bukatakana:12502,bullet:8226,bulletinverse:9688,bulletoperator:8729,bullseye:9678,c:99,caarmenian:1390,cabengali:2458,cacute:263,cadeva:2330,cagujarati:2714,cagurmukhi:2586,calsquare:13192,candrabindubengali:2433,candrabinducmb:784,candrabindudeva:2305,candrabindugujarati:2689,capslock:8682,careof:8453,caron:711,caronbelowcmb:812,caroncmb:780,carriagereturn:8629,cbopomofo:12568,ccaron:269,ccedilla:231,ccedillaacute:7689,ccircle:9426,ccircumflex:265,ccurl:597,cdot:267,cdotaccent:267,cdsquare:13253,cedilla:184,cedillacmb:807,cent:162,centigrade:8451,centinferior:63199,centmonospace:65504,centoldstyle:63394,centsuperior:63200,chaarmenian:1401,chabengali:2459,chadeva:2331,chagujarati:2715,chagurmukhi:2587,chbopomofo:12564,cheabkhasiancyrillic:1213,checkmark:10003,checyrillic:1095,chedescenderabkhasiancyrillic:1215,chedescendercyrillic:1207,chedieresiscyrillic:1269,cheharmenian:1395,chekhakassiancyrillic:1228,cheverticalstrokecyrillic:1209,chi:967,chieuchacirclekorean:12919,chieuchaparenkorean:12823,chieuchcirclekorean:12905,chieuchkorean:12618,chieuchparenkorean:12809,chochangthai:3594,chochanthai:3592,chochingthai:3593,chochoethai:3596,chook:392,cieucacirclekorean:12918,cieucaparenkorean:12822,cieuccirclekorean:12904,cieuckorean:12616,cieucparenkorean:12808,cieucuparenkorean:12828,circle:9675,circlecopyrt:169,circlemultiply:8855,circleot:8857,circleplus:8853,circlepostalmark:12342,circlewithlefthalfblack:9680,circlewithrighthalfblack:9681,circumflex:710,circumflexbelowcmb:813,circumflexcmb:770,clear:8999,clickalveolar:450,clickdental:448,clicklateral:449,clickretroflex:451,club:9827,clubsuitblack:9827,clubsuitwhite:9831,cmcubedsquare:13220,cmonospace:65347,cmsquaredsquare:13216,coarmenian:1409,colon:58,colonmonetary:8353,colonmonospace:65306,colonsign:8353,colonsmall:65109,colontriangularhalfmod:721,colontriangularmod:720,comma:44,commaabovecmb:787,commaaboverightcmb:789,commaaccent:63171,commaarabic:1548,commaarmenian:1373,commainferior:63201,commamonospace:65292,commareversedabovecmb:788,commareversedmod:701,commasmall:65104,commasuperior:63202,commaturnedabovecmb:786,commaturnedmod:699,compass:9788,congruent:8773,contourintegral:8750,control:8963,controlACK:6,controlBEL:7,controlBS:8,controlCAN:24,controlCR:13,controlDC1:17,controlDC2:18,controlDC3:19,controlDC4:20,controlDEL:127,controlDLE:16,controlEM:25,controlENQ:5,controlEOT:4,controlESC:27,controlETB:23,controlETX:3,controlFF:12,controlFS:28,controlGS:29,controlHT:9,controlLF:10,controlNAK:21,controlRS:30,controlSI:15,controlSO:14,controlSOT:2,controlSTX:1,controlSUB:26,controlSYN:22,controlUS:31,controlVT:11,copyright:169,copyrightsans:63721,copyrightserif:63193,cornerbracketleft:12300,cornerbracketlefthalfwidth:65378,cornerbracketleftvertical:65089,cornerbracketright:12301,cornerbracketrighthalfwidth:65379,cornerbracketrightvertical:65090,corporationsquare:13183,cosquare:13255,coverkgsquare:13254,cparen:9374,cruzeiro:8354,cstretched:663,curlyand:8911,curlyor:8910,currency:164,cyrBreve:63185,cyrFlex:63186,cyrbreve:63188,cyrflex:63189,d:100,daarmenian:1380,dabengali:2470,dadarabic:1590,dadeva:2342,dadfinalarabic:65214,dadinitialarabic:65215,dadmedialarabic:65216,dagesh:1468,dageshhebrew:1468,dagger:8224,daggerdbl:8225,dagujarati:2726,dagurmukhi:2598,dahiragana:12384,dakatakana:12480,dalarabic:1583,dalet:1491,daletdagesh:64307,daletdageshhebrew:64307,dalethebrew:1491,dalfinalarabic:65194,dammaarabic:1615,dammalowarabic:1615,dammatanaltonearabic:1612,dammatanarabic:1612,danda:2404,dargahebrew:1447,dargalefthebrew:1447,dasiapneumatacyrilliccmb:1157,dblGrave:63187,dblanglebracketleft:12298,dblanglebracketleftvertical:65085,dblanglebracketright:12299,dblanglebracketrightvertical:65086,dblarchinvertedbelowcmb:811,dblarrowleft:8660,dblarrowright:8658,dbldanda:2405,dblgrave:63190,dblgravecmb:783,dblintegral:8748,dbllowline:8215,dbllowlinecmb:819,dbloverlinecmb:831,dblprimemod:698,dblverticalbar:8214,dblverticallineabovecmb:782,dbopomofo:12553,dbsquare:13256,dcaron:271,dcedilla:7697,dcircle:9427,dcircumflexbelow:7699,dcroat:273,ddabengali:2465,ddadeva:2337,ddagujarati:2721,ddagurmukhi:2593,ddalarabic:1672,ddalfinalarabic:64393,dddhadeva:2396,ddhabengali:2466,ddhadeva:2338,ddhagujarati:2722,ddhagurmukhi:2594,ddotaccent:7691,ddotbelow:7693,decimalseparatorarabic:1643,decimalseparatorpersian:1643,decyrillic:1076,degree:176,dehihebrew:1453,dehiragana:12391,deicoptic:1007,dekatakana:12487,deleteleft:9003,deleteright:8998,delta:948,deltaturned:397,denominatorminusonenumeratorbengali:2552,dezh:676,dhabengali:2471,dhadeva:2343,dhagujarati:2727,dhagurmukhi:2599,dhook:599,dialytikatonos:901,dialytikatonoscmb:836,diamond:9830,diamondsuitwhite:9826,dieresis:168,dieresisacute:63191,dieresisbelowcmb:804,dieresiscmb:776,dieresisgrave:63192,dieresistonos:901,dihiragana:12386,dikatakana:12482,dittomark:12291,divide:247,divides:8739,divisionslash:8725,djecyrillic:1106,dkshade:9619,dlinebelow:7695,dlsquare:13207,dmacron:273,dmonospace:65348,dnblock:9604,dochadathai:3598,dodekthai:3604,dohiragana:12393,dokatakana:12489,dollar:36,dollarinferior:63203,dollarmonospace:65284,dollaroldstyle:63268,dollarsmall:65129,dollarsuperior:63204,dong:8363,dorusquare:13094,dotaccent:729,dotaccentcmb:775,dotbelowcmb:803,dotbelowcomb:803,dotkatakana:12539,dotlessi:305,dotlessj:63166,dotlessjstrokehook:644,dotmath:8901,dottedcircle:9676,doubleyodpatah:64287,doubleyodpatahhebrew:64287,downtackbelowcmb:798,downtackmod:725,dparen:9375,dsuperior:63211,dtail:598,dtopbar:396,duhiragana:12389,dukatakana:12485,dz:499,dzaltone:675,dzcaron:454,dzcurl:677,dzeabkhasiancyrillic:1249,dzecyrillic:1109,dzhecyrillic:1119,e:101,eacute:233,earth:9793,ebengali:2447,ebopomofo:12572,ebreve:277,ecandradeva:2317,ecandragujarati:2701,ecandravowelsigndeva:2373,ecandravowelsigngujarati:2757,ecaron:283,ecedillabreve:7709,echarmenian:1381,echyiwnarmenian:1415,ecircle:9428,ecircumflex:234,ecircumflexacute:7871,ecircumflexbelow:7705,ecircumflexdotbelow:7879,ecircumflexgrave:7873,ecircumflexhookabove:7875,ecircumflextilde:7877,ecyrillic:1108,edblgrave:517,edeva:2319,edieresis:235,edot:279,edotaccent:279,edotbelow:7865,eegurmukhi:2575,eematragurmukhi:2631,efcyrillic:1092,egrave:232,egujarati:2703,eharmenian:1383,ehbopomofo:12573,ehiragana:12360,ehookabove:7867,eibopomofo:12575,eight:56,eightarabic:1640,eightbengali:2542,eightcircle:9319,eightcircleinversesansserif:10129,eightdeva:2414,eighteencircle:9329,eighteenparen:9349,eighteenperiod:9369,eightgujarati:2798,eightgurmukhi:2670,eighthackarabic:1640,eighthangzhou:12328,eighthnotebeamed:9835,eightideographicparen:12839,eightinferior:8328,eightmonospace:65304,eightoldstyle:63288,eightparen:9339,eightperiod:9359,eightpersian:1784,eightroman:8567,eightsuperior:8312,eightthai:3672,einvertedbreve:519,eiotifiedcyrillic:1125,ekatakana:12456,ekatakanahalfwidth:65396,ekonkargurmukhi:2676,ekorean:12628,elcyrillic:1083,element:8712,elevencircle:9322,elevenparen:9342,elevenperiod:9362,elevenroman:8570,ellipsis:8230,ellipsisvertical:8942,emacron:275,emacronacute:7703,emacrongrave:7701,emcyrillic:1084,emdash:8212,emdashvertical:65073,emonospace:65349,emphasismarkarmenian:1371,emptyset:8709,enbopomofo:12579,encyrillic:1085,endash:8211,endashvertical:65074,endescendercyrillic:1187,eng:331,engbopomofo:12581,enghecyrillic:1189,enhookcyrillic:1224,enspace:8194,eogonek:281,eokorean:12627,eopen:603,eopenclosed:666,eopenreversed:604,eopenreversedclosed:606,eopenreversedhook:605,eparen:9376,epsilon:949,epsilontonos:941,equal:61,equalmonospace:65309,equalsmall:65126,equalsuperior:8316,equivalence:8801,erbopomofo:12582,ercyrillic:1088,ereversed:600,ereversedcyrillic:1101,escyrillic:1089,esdescendercyrillic:1195,esh:643,eshcurl:646,eshortdeva:2318,eshortvowelsigndeva:2374,eshreversedloop:426,eshsquatreversed:645,esmallhiragana:12359,esmallkatakana:12455,esmallkatakanahalfwidth:65386,estimated:8494,esuperior:63212,eta:951,etarmenian:1384,etatonos:942,eth:240,etilde:7869,etildebelow:7707,etnahtafoukhhebrew:1425,etnahtafoukhlefthebrew:1425,etnahtahebrew:1425,etnahtalefthebrew:1425,eturned:477,eukorean:12641,euro:8364,evowelsignbengali:2503,evowelsigndeva:2375,evowelsigngujarati:2759,exclam:33,exclamarmenian:1372,exclamdbl:8252,exclamdown:161,exclamdownsmall:63393,exclammonospace:65281,exclamsmall:63265,existential:8707,ezh:658,ezhcaron:495,ezhcurl:659,ezhreversed:441,ezhtail:442,f:102,fadeva:2398,fagurmukhi:2654,fahrenheit:8457,fathaarabic:1614,fathalowarabic:1614,fathatanarabic:1611,fbopomofo:12552,fcircle:9429,fdotaccent:7711,feharabic:1601,feharmenian:1414,fehfinalarabic:65234,fehinitialarabic:65235,fehmedialarabic:65236,feicoptic:997,female:9792,ff:64256,ffi:64259,ffl:64260,fi:64257,fifteencircle:9326,fifteenparen:9346,fifteenperiod:9366,figuredash:8210,filledbox:9632,filledrect:9644,finalkaf:1498,finalkafdagesh:64314,finalkafdageshhebrew:64314,finalkafhebrew:1498,finalmem:1501,finalmemhebrew:1501,finalnun:1503,finalnunhebrew:1503,finalpe:1507,finalpehebrew:1507,finaltsadi:1509,finaltsadihebrew:1509,firsttonechinese:713,fisheye:9673,fitacyrillic:1139,five:53,fivearabic:1637,fivebengali:2539,fivecircle:9316,fivecircleinversesansserif:10126,fivedeva:2411,fiveeighths:8541,fivegujarati:2795,fivegurmukhi:2667,fivehackarabic:1637,fivehangzhou:12325,fiveideographicparen:12836,fiveinferior:8325,fivemonospace:65301,fiveoldstyle:63285,fiveparen:9336,fiveperiod:9356,fivepersian:1781,fiveroman:8564,fivesuperior:8309,fivethai:3669,fl:64258,florin:402,fmonospace:65350,fmsquare:13209,fofanthai:3615,fofathai:3613,fongmanthai:3663,forall:8704,four:52,fourarabic:1636,fourbengali:2538,fourcircle:9315,fourcircleinversesansserif:10125,fourdeva:2410,fourgujarati:2794,fourgurmukhi:2666,fourhackarabic:1636,fourhangzhou:12324,fourideographicparen:12835,fourinferior:8324,fourmonospace:65300,fournumeratorbengali:2551,fouroldstyle:63284,fourparen:9335,fourperiod:9355,fourpersian:1780,fourroman:8563,foursuperior:8308,fourteencircle:9325,fourteenparen:9345,fourteenperiod:9365,fourthai:3668,fourthtonechinese:715,fparen:9377,fraction:8260,franc:8355,g:103,gabengali:2455,gacute:501,gadeva:2327,gafarabic:1711,gaffinalarabic:64403,gafinitialarabic:64404,gafmedialarabic:64405,gagujarati:2711,gagurmukhi:2583,gahiragana:12364,gakatakana:12460,gamma:947,gammalatinsmall:611,gammasuperior:736,gangiacoptic:1003,gbopomofo:12557,gbreve:287,gcaron:487,gcedilla:291,gcircle:9430,gcircumflex:285,gcommaaccent:291,gdot:289,gdotaccent:289,gecyrillic:1075,gehiragana:12370,gekatakana:12466,geometricallyequal:8785,gereshaccenthebrew:1436,gereshhebrew:1523,gereshmuqdamhebrew:1437,germandbls:223,gershayimaccenthebrew:1438,gershayimhebrew:1524,getamark:12307,ghabengali:2456,ghadarmenian:1394,ghadeva:2328,ghagujarati:2712,ghagurmukhi:2584,ghainarabic:1594,ghainfinalarabic:65230,ghaininitialarabic:65231,ghainmedialarabic:65232,ghemiddlehookcyrillic:1173,ghestrokecyrillic:1171,gheupturncyrillic:1169,ghhadeva:2394,ghhagurmukhi:2650,ghook:608,ghzsquare:13203,gihiragana:12366,gikatakana:12462,gimarmenian:1379,gimel:1490,gimeldagesh:64306,gimeldageshhebrew:64306,gimelhebrew:1490,gjecyrillic:1107,glottalinvertedstroke:446,glottalstop:660,glottalstopinverted:662,glottalstopmod:704,glottalstopreversed:661,glottalstopreversedmod:705,glottalstopreversedsuperior:740,glottalstopstroke:673,glottalstopstrokereversed:674,gmacron:7713,gmonospace:65351,gohiragana:12372,gokatakana:12468,gparen:9378,gpasquare:13228,gradient:8711,grave:96,gravebelowcmb:790,gravecmb:768,gravecomb:768,gravedeva:2387,gravelowmod:718,gravemonospace:65344,gravetonecmb:832,greater:62,greaterequal:8805,greaterequalorless:8923,greatermonospace:65310,greaterorequivalent:8819,greaterorless:8823,greateroverequal:8807,greatersmall:65125,gscript:609,gstroke:485,guhiragana:12368,guillemotleft:171,guillemotright:187,guilsinglleft:8249,guilsinglright:8250,gukatakana:12464,guramusquare:13080,gysquare:13257,h:104,haabkhasiancyrillic:1193,haaltonearabic:1729,habengali:2489,hadescendercyrillic:1203,hadeva:2361,hagujarati:2745,hagurmukhi:2617,haharabic:1581,hahfinalarabic:65186,hahinitialarabic:65187,hahiragana:12399,hahmedialarabic:65188,haitusquare:13098,hakatakana:12495,hakatakanahalfwidth:65418,halantgurmukhi:2637,hamzaarabic:1569,hamzalowarabic:1569,hangulfiller:12644,hardsigncyrillic:1098,harpoonleftbarbup:8636,harpoonrightbarbup:8640,hasquare:13258,hatafpatah:1458,hatafpatah16:1458,hatafpatah23:1458,hatafpatah2f:1458,hatafpatahhebrew:1458,hatafpatahnarrowhebrew:1458,hatafpatahquarterhebrew:1458,hatafpatahwidehebrew:1458,hatafqamats:1459,hatafqamats1b:1459,hatafqamats28:1459,hatafqamats34:1459,hatafqamatshebrew:1459,hatafqamatsnarrowhebrew:1459,hatafqamatsquarterhebrew:1459,hatafqamatswidehebrew:1459,hatafsegol:1457,hatafsegol17:1457,hatafsegol24:1457,hatafsegol30:1457,hatafsegolhebrew:1457,hatafsegolnarrowhebrew:1457,hatafsegolquarterhebrew:1457,hatafsegolwidehebrew:1457,hbar:295,hbopomofo:12559,hbrevebelow:7723,hcedilla:7721,hcircle:9431,hcircumflex:293,hdieresis:7719,hdotaccent:7715,hdotbelow:7717,he:1492,heart:9829,heartsuitblack:9829,heartsuitwhite:9825,hedagesh:64308,hedageshhebrew:64308,hehaltonearabic:1729,heharabic:1607,hehebrew:1492,hehfinalaltonearabic:64423,hehfinalalttwoarabic:65258,hehfinalarabic:65258,hehhamzaabovefinalarabic:64421,hehhamzaaboveisolatedarabic:64420,hehinitialaltonearabic:64424,hehinitialarabic:65259,hehiragana:12408,hehmedialaltonearabic:64425,hehmedialarabic:65260,heiseierasquare:13179,hekatakana:12504,hekatakanahalfwidth:65421,hekutaarusquare:13110,henghook:615,herutusquare:13113,het:1495,hethebrew:1495,hhook:614,hhooksuperior:689,hieuhacirclekorean:12923,hieuhaparenkorean:12827,hieuhcirclekorean:12909,hieuhkorean:12622,hieuhparenkorean:12813,hihiragana:12402,hikatakana:12498,hikatakanahalfwidth:65419,hiriq:1460,hiriq14:1460,hiriq21:1460,hiriq2d:1460,hiriqhebrew:1460,hiriqnarrowhebrew:1460,hiriqquarterhebrew:1460,hiriqwidehebrew:1460,hlinebelow:7830,hmonospace:65352,hoarmenian:1392,hohipthai:3627,hohiragana:12411,hokatakana:12507,hokatakanahalfwidth:65422,holam:1465,holam19:1465,holam26:1465,holam32:1465,holamhebrew:1465,holamnarrowhebrew:1465,holamquarterhebrew:1465,holamwidehebrew:1465,honokhukthai:3630,hookabovecomb:777,hookcmb:777,hookpalatalizedbelowcmb:801,hookretroflexbelowcmb:802,hoonsquare:13122,horicoptic:1001,horizontalbar:8213,horncmb:795,hotsprings:9832,house:8962,hparen:9379,hsuperior:688,hturned:613,huhiragana:12405,huiitosquare:13107,hukatakana:12501,hukatakanahalfwidth:65420,hungarumlaut:733,hungarumlautcmb:779,hv:405,hyphen:45,hypheninferior:63205,hyphenmonospace:65293,hyphensmall:65123,hyphensuperior:63206,hyphentwo:8208,i:105,iacute:237,iacyrillic:1103,ibengali:2439,ibopomofo:12583,ibreve:301,icaron:464,icircle:9432,icircumflex:238,icyrillic:1110,idblgrave:521,ideographearthcircle:12943,ideographfirecircle:12939,ideographicallianceparen:12863,ideographiccallparen:12858,ideographiccentrecircle:12965,ideographicclose:12294,ideographiccomma:12289,ideographiccommaleft:65380,ideographiccongratulationparen:12855,ideographiccorrectcircle:12963,ideographicearthparen:12847,ideographicenterpriseparen:12861,ideographicexcellentcircle:12957,ideographicfestivalparen:12864,ideographicfinancialcircle:12950,ideographicfinancialparen:12854,ideographicfireparen:12843,ideographichaveparen:12850,ideographichighcircle:12964,ideographiciterationmark:12293,ideographiclaborcircle:12952,ideographiclaborparen:12856,ideographicleftcircle:12967,ideographiclowcircle:12966,ideographicmedicinecircle:12969,ideographicmetalparen:12846,ideographicmoonparen:12842,ideographicnameparen:12852,ideographicperiod:12290,ideographicprintcircle:12958,ideographicreachparen:12867,ideographicrepresentparen:12857,ideographicresourceparen:12862,ideographicrightcircle:12968,ideographicsecretcircle:12953,ideographicselfparen:12866,ideographicsocietyparen:12851,ideographicspace:12288,ideographicspecialparen:12853,ideographicstockparen:12849,ideographicstudyparen:12859,ideographicsunparen:12848,ideographicsuperviseparen:12860,ideographicwaterparen:12844,ideographicwoodparen:12845,ideographiczero:12295,ideographmetalcircle:12942,ideographmooncircle:12938,ideographnamecircle:12948,ideographsuncircle:12944,ideographwatercircle:12940,ideographwoodcircle:12941,ideva:2311,idieresis:239,idieresisacute:7727,idieresiscyrillic:1253,idotbelow:7883,iebrevecyrillic:1239,iecyrillic:1077,ieungacirclekorean:12917,ieungaparenkorean:12821,ieungcirclekorean:12903,ieungkorean:12615,ieungparenkorean:12807,igrave:236,igujarati:2695,igurmukhi:2567,ihiragana:12356,ihookabove:7881,iibengali:2440,iicyrillic:1080,iideva:2312,iigujarati:2696,iigurmukhi:2568,iimatragurmukhi:2624,iinvertedbreve:523,iishortcyrillic:1081,iivowelsignbengali:2496,iivowelsigndeva:2368,iivowelsigngujarati:2752,ij:307,ikatakana:12452,ikatakanahalfwidth:65394,ikorean:12643,ilde:732,iluyhebrew:1452,imacron:299,imacroncyrillic:1251,imageorapproximatelyequal:8787,imatragurmukhi:2623,imonospace:65353,increment:8710,infinity:8734,iniarmenian:1387,integral:8747,integralbottom:8993,integralbt:8993,integralex:63733,integraltop:8992,integraltp:8992,intersection:8745,intisquare:13061,invbullet:9688,invcircle:9689,invsmileface:9787,iocyrillic:1105,iogonek:303,iota:953,iotadieresis:970,iotadieresistonos:912,iotalatin:617,iotatonos:943,iparen:9380,irigurmukhi:2674,ismallhiragana:12355,ismallkatakana:12451,ismallkatakanahalfwidth:65384,issharbengali:2554,istroke:616,isuperior:63213,iterationhiragana:12445,iterationkatakana:12541,itilde:297,itildebelow:7725,iubopomofo:12585,iucyrillic:1102,ivowelsignbengali:2495,ivowelsigndeva:2367,ivowelsigngujarati:2751,izhitsacyrillic:1141,izhitsadblgravecyrillic:1143,j:106,jaarmenian:1393,jabengali:2460,jadeva:2332,jagujarati:2716,jagurmukhi:2588,jbopomofo:12560,jcaron:496,jcircle:9433,jcircumflex:309,jcrossedtail:669,jdotlessstroke:607,jecyrillic:1112,jeemarabic:1580,jeemfinalarabic:65182,jeeminitialarabic:65183,jeemmedialarabic:65184,jeharabic:1688,jehfinalarabic:64395,jhabengali:2461,jhadeva:2333,jhagujarati:2717,jhagurmukhi:2589,jheharmenian:1403,jis:12292,jmonospace:65354,jparen:9381,jsuperior:690,k:107,kabashkircyrillic:1185,kabengali:2453,kacute:7729,kacyrillic:1082,kadescendercyrillic:1179,kadeva:2325,kaf:1499,kafarabic:1603,kafdagesh:64315,kafdageshhebrew:64315,kaffinalarabic:65242,kafhebrew:1499,kafinitialarabic:65243,kafmedialarabic:65244,kafrafehebrew:64333,kagujarati:2709,kagurmukhi:2581,kahiragana:12363,kahookcyrillic:1220,kakatakana:12459,kakatakanahalfwidth:65398,kappa:954,kappasymbolgreek:1008,kapyeounmieumkorean:12657,kapyeounphieuphkorean:12676,kapyeounpieupkorean:12664,kapyeounssangpieupkorean:12665,karoriisquare:13069,kashidaautoarabic:1600,kashidaautonosidebearingarabic:1600,kasmallkatakana:12533,kasquare:13188,kasraarabic:1616,kasratanarabic:1613,kastrokecyrillic:1183,katahiraprolongmarkhalfwidth:65392,kaverticalstrokecyrillic:1181,kbopomofo:12558,kcalsquare:13193,kcaron:489,kcedilla:311,kcircle:9434,kcommaaccent:311,kdotbelow:7731,keharmenian:1412,kehiragana:12369,kekatakana:12465,kekatakanahalfwidth:65401,kenarmenian:1391,kesmallkatakana:12534,kgreenlandic:312,khabengali:2454,khacyrillic:1093,khadeva:2326,khagujarati:2710,khagurmukhi:2582,khaharabic:1582,khahfinalarabic:65190,khahinitialarabic:65191,khahmedialarabic:65192,kheicoptic:999,khhadeva:2393,khhagurmukhi:2649,khieukhacirclekorean:12920,khieukhaparenkorean:12824,khieukhcirclekorean:12906,khieukhkorean:12619,khieukhparenkorean:12810,khokhaithai:3586,khokhonthai:3589,khokhuatthai:3587,khokhwaithai:3588,khomutthai:3675,khook:409,khorakhangthai:3590,khzsquare:13201,kihiragana:12365,kikatakana:12461,kikatakanahalfwidth:65399,kiroguramusquare:13077,kiromeetorusquare:13078,kirosquare:13076,kiyeokacirclekorean:12910,kiyeokaparenkorean:12814,kiyeokcirclekorean:12896,kiyeokkorean:12593,kiyeokparenkorean:12800,kiyeoksioskorean:12595,kjecyrillic:1116,klinebelow:7733,klsquare:13208,kmcubedsquare:13222,kmonospace:65355,kmsquaredsquare:13218,kohiragana:12371,kohmsquare:13248,kokaithai:3585,kokatakana:12467,kokatakanahalfwidth:65402,kooposquare:13086,koppacyrillic:1153,koreanstandardsymbol:12927,koroniscmb:835,kparen:9382,kpasquare:13226,ksicyrillic:1135,ktsquare:13263,kturned:670,kuhiragana:12367,kukatakana:12463,kukatakanahalfwidth:65400,kvsquare:13240,kwsquare:13246,l:108,labengali:2482,lacute:314,ladeva:2354,lagujarati:2738,lagurmukhi:2610,lakkhangyaothai:3653,lamaleffinalarabic:65276,lamalefhamzaabovefinalarabic:65272,lamalefhamzaaboveisolatedarabic:65271,lamalefhamzabelowfinalarabic:65274,lamalefhamzabelowisolatedarabic:65273,lamalefisolatedarabic:65275,lamalefmaddaabovefinalarabic:65270,lamalefmaddaaboveisolatedarabic:65269,lamarabic:1604,lambda:955,lambdastroke:411,lamed:1500,lameddagesh:64316,lameddageshhebrew:64316,lamedhebrew:1500,lamfinalarabic:65246,lamhahinitialarabic:64714,laminitialarabic:65247,lamjeeminitialarabic:64713,lamkhahinitialarabic:64715,lamlamhehisolatedarabic:65010,lammedialarabic:65248,lammeemhahinitialarabic:64904,lammeeminitialarabic:64716,largecircle:9711,lbar:410,lbelt:620,lbopomofo:12556,lcaron:318,lcedilla:316,lcircle:9435,lcircumflexbelow:7741,lcommaaccent:316,ldot:320,ldotaccent:320,ldotbelow:7735,ldotbelowmacron:7737,leftangleabovecmb:794,lefttackbelowcmb:792,less:60,lessequal:8804,lessequalorgreater:8922,lessmonospace:65308,lessorequivalent:8818,lessorgreater:8822,lessoverequal:8806,lesssmall:65124,lezh:622,lfblock:9612,lhookretroflex:621,lira:8356,liwnarmenian:1388,lj:457,ljecyrillic:1113,ll:63168,lladeva:2355,llagujarati:2739,llinebelow:7739,llladeva:2356,llvocalicbengali:2529,llvocalicdeva:2401,llvocalicvowelsignbengali:2531,llvocalicvowelsigndeva:2403,lmiddletilde:619,lmonospace:65356,lmsquare:13264,lochulathai:3628,logicaland:8743,logicalnot:172,logicalnotreversed:8976,logicalor:8744,lolingthai:3621,longs:383,lowlinecenterline:65102,lowlinecmb:818,lowlinedashed:65101,lozenge:9674,lparen:9383,lslash:322,lsquare:8467,lsuperior:63214,ltshade:9617,luthai:3622,lvocalicbengali:2444,lvocalicdeva:2316,lvocalicvowelsignbengali:2530,lvocalicvowelsigndeva:2402,lxsquare:13267,m:109,mabengali:2478,macron:175,macronbelowcmb:817,macroncmb:772,macronlowmod:717,macronmonospace:65507,macute:7743,madeva:2350,magujarati:2734,magurmukhi:2606,mahapakhhebrew:1444,mahapakhlefthebrew:1444,mahiragana:12414,maichattawalowleftthai:63637,maichattawalowrightthai:63636,maichattawathai:3659,maichattawaupperleftthai:63635,maieklowleftthai:63628,maieklowrightthai:63627,maiekthai:3656,maiekupperleftthai:63626,maihanakatleftthai:63620,maihanakatthai:3633,maitaikhuleftthai:63625,maitaikhuthai:3655,maitholowleftthai:63631,maitholowrightthai:63630,maithothai:3657,maithoupperleftthai:63629,maitrilowleftthai:63634,maitrilowrightthai:63633,maitrithai:3658,maitriupperleftthai:63632,maiyamokthai:3654,makatakana:12510,makatakanahalfwidth:65423,male:9794,mansyonsquare:13127,maqafhebrew:1470,mars:9794,masoracirclehebrew:1455,masquare:13187,mbopomofo:12551,mbsquare:13268,mcircle:9436,mcubedsquare:13221,mdotaccent:7745,mdotbelow:7747,meemarabic:1605,meemfinalarabic:65250,meeminitialarabic:65251,meemmedialarabic:65252,meemmeeminitialarabic:64721,meemmeemisolatedarabic:64584,meetorusquare:13133,mehiragana:12417,meizierasquare:13182,mekatakana:12513,mekatakanahalfwidth:65426,mem:1502,memdagesh:64318,memdageshhebrew:64318,memhebrew:1502,menarmenian:1396,merkhahebrew:1445,merkhakefulahebrew:1446,merkhakefulalefthebrew:1446,merkhalefthebrew:1445,mhook:625,mhzsquare:13202,middledotkatakanahalfwidth:65381,middot:183,mieumacirclekorean:12914,mieumaparenkorean:12818,mieumcirclekorean:12900,mieumkorean:12609,mieumpansioskorean:12656,mieumparenkorean:12804,mieumpieupkorean:12654,mieumsioskorean:12655,mihiragana:12415,mikatakana:12511,mikatakanahalfwidth:65424,minus:8722,minusbelowcmb:800,minuscircle:8854,minusmod:727,minusplus:8723,minute:8242,miribaarusquare:13130,mirisquare:13129,mlonglegturned:624,mlsquare:13206,mmcubedsquare:13219,mmonospace:65357,mmsquaredsquare:13215,mohiragana:12418,mohmsquare:13249,mokatakana:12514,mokatakanahalfwidth:65427,molsquare:13270,momathai:3617,moverssquare:13223,moverssquaredsquare:13224,mparen:9384,mpasquare:13227,mssquare:13235,msuperior:63215,mturned:623,mu:181,mu1:181,muasquare:13186,muchgreater:8811,muchless:8810,mufsquare:13196,mugreek:956,mugsquare:13197,muhiragana:12416,mukatakana:12512,mukatakanahalfwidth:65425,mulsquare:13205,multiply:215,mumsquare:13211,munahhebrew:1443,munahlefthebrew:1443,musicalnote:9834,musicalnotedbl:9835,musicflatsign:9837,musicsharpsign:9839,mussquare:13234,muvsquare:13238,muwsquare:13244,mvmegasquare:13241,mvsquare:13239,mwmegasquare:13247,mwsquare:13245,n:110,nabengali:2472,nabla:8711,nacute:324,nadeva:2344,nagujarati:2728,nagurmukhi:2600,nahiragana:12394,nakatakana:12490,nakatakanahalfwidth:65413,napostrophe:329,nasquare:13185,nbopomofo:12555,nbspace:160,ncaron:328,ncedilla:326,ncircle:9437,ncircumflexbelow:7755,ncommaaccent:326,ndotaccent:7749,ndotbelow:7751,nehiragana:12397,nekatakana:12493,nekatakanahalfwidth:65416,newsheqelsign:8362,nfsquare:13195,ngabengali:2457,ngadeva:2329,ngagujarati:2713,ngagurmukhi:2585,ngonguthai:3591,nhiragana:12435,nhookleft:626,nhookretroflex:627,nieunacirclekorean:12911,nieunaparenkorean:12815,nieuncieuckorean:12597,nieuncirclekorean:12897,nieunhieuhkorean:12598,nieunkorean:12596,nieunpansioskorean:12648,nieunparenkorean:12801,nieunsioskorean:12647,nieuntikeutkorean:12646,nihiragana:12395,nikatakana:12491,nikatakanahalfwidth:65414,nikhahitleftthai:63641,nikhahitthai:3661,nine:57,ninearabic:1641,ninebengali:2543,ninecircle:9320,ninecircleinversesansserif:10130,ninedeva:2415,ninegujarati:2799,ninegurmukhi:2671,ninehackarabic:1641,ninehangzhou:12329,nineideographicparen:12840,nineinferior:8329,ninemonospace:65305,nineoldstyle:63289,nineparen:9340,nineperiod:9360,ninepersian:1785,nineroman:8568,ninesuperior:8313,nineteencircle:9330,nineteenparen:9350,nineteenperiod:9370,ninethai:3673,nj:460,njecyrillic:1114,nkatakana:12531,nkatakanahalfwidth:65437,nlegrightlong:414,nlinebelow:7753,nmonospace:65358,nmsquare:13210,nnabengali:2467,nnadeva:2339,nnagujarati:2723,nnagurmukhi:2595,nnnadeva:2345,nohiragana:12398,nokatakana:12494,nokatakanahalfwidth:65417,nonbreakingspace:160,nonenthai:3603,nonuthai:3609,noonarabic:1606,noonfinalarabic:65254,noonghunnaarabic:1722,noonghunnafinalarabic:64415,nooninitialarabic:65255,noonjeeminitialarabic:64722,noonjeemisolatedarabic:64587,noonmedialarabic:65256,noonmeeminitialarabic:64725,noonmeemisolatedarabic:64590,noonnoonfinalarabic:64653,notcontains:8716,notelement:8713,notelementof:8713,notequal:8800,notgreater:8815,notgreaternorequal:8817,notgreaternorless:8825,notidentical:8802,notless:8814,notlessnorequal:8816,notparallel:8742,notprecedes:8832,notsubset:8836,notsucceeds:8833,notsuperset:8837,nowarmenian:1398,nparen:9385,nssquare:13233,nsuperior:8319,ntilde:241,nu:957,nuhiragana:12396,nukatakana:12492,nukatakanahalfwidth:65415,nuktabengali:2492,nuktadeva:2364,nuktagujarati:2748,nuktagurmukhi:2620,numbersign:35,numbersignmonospace:65283,numbersignsmall:65119,numeralsigngreek:884,numeralsignlowergreek:885,numero:8470,nun:1504,nundagesh:64320,nundageshhebrew:64320,nunhebrew:1504,nvsquare:13237,nwsquare:13243,nyabengali:2462,nyadeva:2334,nyagujarati:2718,nyagurmukhi:2590,o:111,oacute:243,oangthai:3629,obarred:629,obarredcyrillic:1257,obarreddieresiscyrillic:1259,obengali:2451,obopomofo:12571,obreve:335,ocandradeva:2321,ocandragujarati:2705,ocandravowelsigndeva:2377,ocandravowelsigngujarati:2761,ocaron:466,ocircle:9438,ocircumflex:244,ocircumflexacute:7889,ocircumflexdotbelow:7897,ocircumflexgrave:7891,ocircumflexhookabove:7893,ocircumflextilde:7895,ocyrillic:1086,odblacute:337,odblgrave:525,odeva:2323,odieresis:246,odieresiscyrillic:1255,odotbelow:7885,oe:339,oekorean:12634,ogonek:731,ogonekcmb:808,ograve:242,ogujarati:2707,oharmenian:1413,ohiragana:12362,ohookabove:7887,ohorn:417,ohornacute:7899,ohorndotbelow:7907,ohorngrave:7901,ohornhookabove:7903,ohorntilde:7905,ohungarumlaut:337,oi:419,oinvertedbreve:527,okatakana:12458,okatakanahalfwidth:65397,okorean:12631,olehebrew:1451,omacron:333,omacronacute:7763,omacrongrave:7761,omdeva:2384,omega:969,omega1:982,omegacyrillic:1121,omegalatinclosed:631,omegaroundcyrillic:1147,omegatitlocyrillic:1149,omegatonos:974,omgujarati:2768,omicron:959,omicrontonos:972,omonospace:65359,one:49,onearabic:1633,onebengali:2535,onecircle:9312,onecircleinversesansserif:10122,onedeva:2407,onedotenleader:8228,oneeighth:8539,onefitted:63196,onegujarati:2791,onegurmukhi:2663,onehackarabic:1633,onehalf:189,onehangzhou:12321,oneideographicparen:12832,oneinferior:8321,onemonospace:65297,onenumeratorbengali:2548,oneoldstyle:63281,oneparen:9332,oneperiod:9352,onepersian:1777,onequarter:188,oneroman:8560,onesuperior:185,onethai:3665,onethird:8531,oogonek:491,oogonekmacron:493,oogurmukhi:2579,oomatragurmukhi:2635,oopen:596,oparen:9386,openbullet:9702,option:8997,ordfeminine:170,ordmasculine:186,orthogonal:8735,oshortdeva:2322,oshortvowelsigndeva:2378,oslash:248,oslashacute:511,osmallhiragana:12361,osmallkatakana:12457,osmallkatakanahalfwidth:65387,ostrokeacute:511,osuperior:63216,otcyrillic:1151,otilde:245,otildeacute:7757,otildedieresis:7759,oubopomofo:12577,overline:8254,overlinecenterline:65098,overlinecmb:773,overlinedashed:65097,overlinedblwavy:65100,overlinewavy:65099,overscore:175,ovowelsignbengali:2507,ovowelsigndeva:2379,ovowelsigngujarati:2763,p:112,paampssquare:13184,paasentosquare:13099,pabengali:2474,pacute:7765,padeva:2346,pagedown:8671,pageup:8670,pagujarati:2730,pagurmukhi:2602,pahiragana:12401,paiyannoithai:3631,pakatakana:12497,palatalizationcyrilliccmb:1156,palochkacyrillic:1216,pansioskorean:12671,paragraph:182,parallel:8741,parenleft:40,parenleftaltonearabic:64830,parenleftbt:63725,parenleftex:63724,parenleftinferior:8333,parenleftmonospace:65288,parenleftsmall:65113,parenleftsuperior:8317,parenlefttp:63723,parenleftvertical:65077,parenright:41,parenrightaltonearabic:64831,parenrightbt:63736,parenrightex:63735,parenrightinferior:8334,parenrightmonospace:65289,parenrightsmall:65114,parenrightsuperior:8318,parenrighttp:63734,parenrightvertical:65078,partialdiff:8706,paseqhebrew:1472,pashtahebrew:1433,pasquare:13225,patah:1463,patah11:1463,patah1d:1463,patah2a:1463,patahhebrew:1463,patahnarrowhebrew:1463,patahquarterhebrew:1463,patahwidehebrew:1463,pazerhebrew:1441,pbopomofo:12550,pcircle:9439,pdotaccent:7767,pe:1508,pecyrillic:1087,pedagesh:64324,pedageshhebrew:64324,peezisquare:13115,pefinaldageshhebrew:64323,peharabic:1662,peharmenian:1402,pehebrew:1508,pehfinalarabic:64343,pehinitialarabic:64344,pehiragana:12410,pehmedialarabic:64345,pekatakana:12506,pemiddlehookcyrillic:1191,perafehebrew:64334,percent:37,percentarabic:1642,percentmonospace:65285,percentsmall:65130,period:46,periodarmenian:1417,periodcentered:183,periodhalfwidth:65377,periodinferior:63207,periodmonospace:65294,periodsmall:65106,periodsuperior:63208,perispomenigreekcmb:834,perpendicular:8869,perthousand:8240,peseta:8359,pfsquare:13194,phabengali:2475,phadeva:2347,phagujarati:2731,phagurmukhi:2603,phi:966,phi1:981,phieuphacirclekorean:12922,phieuphaparenkorean:12826,phieuphcirclekorean:12908,phieuphkorean:12621,phieuphparenkorean:12812,philatin:632,phinthuthai:3642,phisymbolgreek:981,phook:421,phophanthai:3614,phophungthai:3612,phosamphaothai:3616,pi:960,pieupacirclekorean:12915,pieupaparenkorean:12819,pieupcieuckorean:12662,pieupcirclekorean:12901,pieupkiyeokkorean:12658,pieupkorean:12610,pieupparenkorean:12805,pieupsioskiyeokkorean:12660,pieupsioskorean:12612,pieupsiostikeutkorean:12661,pieupthieuthkorean:12663,pieuptikeutkorean:12659,pihiragana:12404,pikatakana:12500,pisymbolgreek:982,piwrarmenian:1411,plus:43,plusbelowcmb:799,pluscircle:8853,plusminus:177,plusmod:726,plusmonospace:65291,plussmall:65122,plussuperior:8314,pmonospace:65360,pmsquare:13272,pohiragana:12413,pointingindexdownwhite:9759,pointingindexleftwhite:9756,pointingindexrightwhite:9758,pointingindexupwhite:9757,pokatakana:12509,poplathai:3611,postalmark:12306,postalmarkface:12320,pparen:9387,precedes:8826,prescription:8478,primemod:697,primereversed:8245,product:8719,projective:8965,prolongedkana:12540,propellor:8984,propersubset:8834,propersuperset:8835,proportion:8759,proportional:8733,psi:968,psicyrillic:1137,psilipneumatacyrilliccmb:1158,pssquare:13232,puhiragana:12407,pukatakana:12503,pvsquare:13236,pwsquare:13242,q:113,qadeva:2392,qadmahebrew:1448,qafarabic:1602,qaffinalarabic:65238,qafinitialarabic:65239,qafmedialarabic:65240,qamats:1464,qamats10:1464,qamats1a:1464,qamats1c:1464,qamats27:1464,qamats29:1464,qamats33:1464,qamatsde:1464,qamatshebrew:1464,qamatsnarrowhebrew:1464,qamatsqatanhebrew:1464,qamatsqatannarrowhebrew:1464,qamatsqatanquarterhebrew:1464,qamatsqatanwidehebrew:1464,qamatsquarterhebrew:1464,qamatswidehebrew:1464,qarneyparahebrew:1439,qbopomofo:12561,qcircle:9440,qhook:672,qmonospace:65361,qof:1511,qofdagesh:64327,qofdageshhebrew:64327,qofhebrew:1511,qparen:9388,quarternote:9833,qubuts:1467,qubuts18:1467,qubuts25:1467,qubuts31:1467,qubutshebrew:1467,qubutsnarrowhebrew:1467,qubutsquarterhebrew:1467,qubutswidehebrew:1467,question:63,questionarabic:1567,questionarmenian:1374,questiondown:191,questiondownsmall:63423,questiongreek:894,questionmonospace:65311,questionsmall:63295,quotedbl:34,quotedblbase:8222,quotedblleft:8220,quotedblmonospace:65282,quotedblprime:12318,quotedblprimereversed:12317,quotedblright:8221,quoteleft:8216,quoteleftreversed:8219,quotereversed:8219,quoteright:8217,quoterightn:329,quotesinglbase:8218,quotesingle:39,quotesinglemonospace:65287,r:114,raarmenian:1404,rabengali:2480,racute:341,radeva:2352,radical:8730,radicalex:63717,radoverssquare:13230,radoverssquaredsquare:13231,radsquare:13229,rafe:1471,rafehebrew:1471,ragujarati:2736,ragurmukhi:2608,rahiragana:12425,rakatakana:12521,rakatakanahalfwidth:65431,ralowerdiagonalbengali:2545,ramiddlediagonalbengali:2544,ramshorn:612,ratio:8758,rbopomofo:12566,rcaron:345,rcedilla:343,rcircle:9441,rcommaaccent:343,rdblgrave:529,rdotaccent:7769,rdotbelow:7771,rdotbelowmacron:7773,referencemark:8251,reflexsubset:8838,reflexsuperset:8839,registered:174,registersans:63720,registerserif:63194,reharabic:1585,reharmenian:1408,rehfinalarabic:65198,rehiragana:12428,rekatakana:12524,rekatakanahalfwidth:65434,resh:1512,reshdageshhebrew:64328,reshhebrew:1512,reversedtilde:8765,reviahebrew:1431,reviamugrashhebrew:1431,revlogicalnot:8976,rfishhook:638,rfishhookreversed:639,rhabengali:2525,rhadeva:2397,rho:961,rhook:637,rhookturned:635,rhookturnedsuperior:693,rhosymbolgreek:1009,rhotichookmod:734,rieulacirclekorean:12913,rieulaparenkorean:12817,rieulcirclekorean:12899,rieulhieuhkorean:12608,rieulkiyeokkorean:12602,rieulkiyeoksioskorean:12649,rieulkorean:12601,rieulmieumkorean:12603,rieulpansioskorean:12652,rieulparenkorean:12803,rieulphieuphkorean:12607,rieulpieupkorean:12604,rieulpieupsioskorean:12651,rieulsioskorean:12605,rieulthieuthkorean:12606,rieultikeutkorean:12650,rieulyeorinhieuhkorean:12653,rightangle:8735,righttackbelowcmb:793,righttriangle:8895,rihiragana:12426,rikatakana:12522,rikatakanahalfwidth:65432,ring:730,ringbelowcmb:805,ringcmb:778,ringhalfleft:703,ringhalfleftarmenian:1369,ringhalfleftbelowcmb:796,ringhalfleftcentered:723,ringhalfright:702,ringhalfrightbelowcmb:825,ringhalfrightcentered:722,rinvertedbreve:531,rittorusquare:13137,rlinebelow:7775,rlongleg:636,rlonglegturned:634,rmonospace:65362,rohiragana:12429,rokatakana:12525,rokatakanahalfwidth:65435,roruathai:3619,rparen:9389,rrabengali:2524,rradeva:2353,rragurmukhi:2652,rreharabic:1681,rrehfinalarabic:64397,rrvocalicbengali:2528,rrvocalicdeva:2400,rrvocalicgujarati:2784,rrvocalicvowelsignbengali:2500,rrvocalicvowelsigndeva:2372,rrvocalicvowelsigngujarati:2756,rsuperior:63217,rtblock:9616,rturned:633,rturnedsuperior:692,ruhiragana:12427,rukatakana:12523,rukatakanahalfwidth:65433,rupeemarkbengali:2546,rupeesignbengali:2547,rupiah:63197,ruthai:3620,rvocalicbengali:2443,rvocalicdeva:2315,rvocalicgujarati:2699,rvocalicvowelsignbengali:2499,rvocalicvowelsigndeva:2371,rvocalicvowelsigngujarati:2755,s:115,sabengali:2488,sacute:347,sacutedotaccent:7781,sadarabic:1589,sadeva:2360,sadfinalarabic:65210,sadinitialarabic:65211,sadmedialarabic:65212,sagujarati:2744,sagurmukhi:2616,sahiragana:12373,sakatakana:12469,sakatakanahalfwidth:65403,sallallahoualayhewasallamarabic:65018,samekh:1505,samekhdagesh:64321,samekhdageshhebrew:64321,samekhhebrew:1505,saraaathai:3634,saraaethai:3649,saraaimaimalaithai:3652,saraaimaimuanthai:3651,saraamthai:3635,saraathai:3632,saraethai:3648,saraiileftthai:63622,saraiithai:3637,saraileftthai:63621,saraithai:3636,saraothai:3650,saraueeleftthai:63624,saraueethai:3639,saraueleftthai:63623,sarauethai:3638,sarauthai:3640,sarauuthai:3641,sbopomofo:12569,scaron:353,scarondotaccent:7783,scedilla:351,schwa:601,schwacyrillic:1241,schwadieresiscyrillic:1243,schwahook:602,scircle:9442,scircumflex:349,scommaaccent:537,sdotaccent:7777,sdotbelow:7779,sdotbelowdotaccent:7785,seagullbelowcmb:828,second:8243,secondtonechinese:714,section:167,seenarabic:1587,seenfinalarabic:65202,seeninitialarabic:65203,seenmedialarabic:65204,segol:1462,segol13:1462,segol1f:1462,segol2c:1462,segolhebrew:1462,segolnarrowhebrew:1462,segolquarterhebrew:1462,segoltahebrew:1426,segolwidehebrew:1462,seharmenian:1405,sehiragana:12379,sekatakana:12475,sekatakanahalfwidth:65406,semicolon:59,semicolonarabic:1563,semicolonmonospace:65307,semicolonsmall:65108,semivoicedmarkkana:12444,semivoicedmarkkanahalfwidth:65439,sentisquare:13090,sentosquare:13091,seven:55,sevenarabic:1639,sevenbengali:2541,sevencircle:9318,sevencircleinversesansserif:10128,sevendeva:2413,seveneighths:8542,sevengujarati:2797,sevengurmukhi:2669,sevenhackarabic:1639,sevenhangzhou:12327,sevenideographicparen:12838,seveninferior:8327,sevenmonospace:65303,sevenoldstyle:63287,sevenparen:9338,sevenperiod:9358,sevenpersian:1783,sevenroman:8566,sevensuperior:8311,seventeencircle:9328,seventeenparen:9348,seventeenperiod:9368,seventhai:3671,sfthyphen:173,shaarmenian:1399,shabengali:2486,shacyrillic:1096,shaddaarabic:1617,shaddadammaarabic:64609,shaddadammatanarabic:64606,shaddafathaarabic:64608,shaddakasraarabic:64610,shaddakasratanarabic:64607,shade:9618,shadedark:9619,shadelight:9617,shademedium:9618,shadeva:2358,shagujarati:2742,shagurmukhi:2614,shalshelethebrew:1427,shbopomofo:12565,shchacyrillic:1097,sheenarabic:1588,sheenfinalarabic:65206,sheeninitialarabic:65207,sheenmedialarabic:65208,sheicoptic:995,sheqel:8362,sheqelhebrew:8362,sheva:1456,sheva115:1456,sheva15:1456,sheva22:1456,sheva2e:1456,shevahebrew:1456,shevanarrowhebrew:1456,shevaquarterhebrew:1456,shevawidehebrew:1456,shhacyrillic:1211,shimacoptic:1005,shin:1513,shindagesh:64329,shindageshhebrew:64329,shindageshshindot:64300,shindageshshindothebrew:64300,shindageshsindot:64301,shindageshsindothebrew:64301,shindothebrew:1473,shinhebrew:1513,shinshindot:64298,shinshindothebrew:64298,shinsindot:64299,shinsindothebrew:64299,shook:642,sigma:963,sigma1:962,sigmafinal:962,sigmalunatesymbolgreek:1010,sihiragana:12375,sikatakana:12471,sikatakanahalfwidth:65404,siluqhebrew:1469,siluqlefthebrew:1469,similar:8764,sindothebrew:1474,siosacirclekorean:12916,siosaparenkorean:12820,sioscieuckorean:12670,sioscirclekorean:12902,sioskiyeokkorean:12666,sioskorean:12613,siosnieunkorean:12667,siosparenkorean:12806,siospieupkorean:12669,siostikeutkorean:12668,six:54,sixarabic:1638,sixbengali:2540,sixcircle:9317,sixcircleinversesansserif:10127,sixdeva:2412,sixgujarati:2796,sixgurmukhi:2668,sixhackarabic:1638,sixhangzhou:12326,sixideographicparen:12837,sixinferior:8326,sixmonospace:65302,sixoldstyle:63286,sixparen:9337,sixperiod:9357,sixpersian:1782,sixroman:8565,sixsuperior:8310,sixteencircle:9327,sixteencurrencydenominatorbengali:2553,sixteenparen:9347,sixteenperiod:9367,sixthai:3670,slash:47,slashmonospace:65295,slong:383,slongdotaccent:7835,smileface:9786,smonospace:65363,sofpasuqhebrew:1475,softhyphen:173,softsigncyrillic:1100,sohiragana:12381,sokatakana:12477,sokatakanahalfwidth:65407,soliduslongoverlaycmb:824,solidusshortoverlaycmb:823,sorusithai:3625,sosalathai:3624,sosothai:3595,sosuathai:3626,space:32,spacehackarabic:32,spade:9824,spadesuitblack:9824,spadesuitwhite:9828,sparen:9390,squarebelowcmb:827,squarecc:13252,squarecm:13213,squarediagonalcrosshatchfill:9641,squarehorizontalfill:9636,squarekg:13199,squarekm:13214,squarekmcapital:13262,squareln:13265,squarelog:13266,squaremg:13198,squaremil:13269,squaremm:13212,squaremsquared:13217,squareorthogonalcrosshatchfill:9638,squareupperlefttolowerrightfill:9639,squareupperrighttolowerleftfill:9640,squareverticalfill:9637,squarewhitewithsmallblack:9635,srsquare:13275,ssabengali:2487,ssadeva:2359,ssagujarati:2743,ssangcieuckorean:12617,ssanghieuhkorean:12677,ssangieungkorean:12672,ssangkiyeokkorean:12594,ssangnieunkorean:12645,ssangpieupkorean:12611,ssangsioskorean:12614,ssangtikeutkorean:12600,ssuperior:63218,sterling:163,sterlingmonospace:65505,strokelongoverlaycmb:822,strokeshortoverlaycmb:821,subset:8834,subsetnotequal:8842,subsetorequal:8838,succeeds:8827,suchthat:8715,suhiragana:12377,sukatakana:12473,sukatakanahalfwidth:65405,sukunarabic:1618,summation:8721,sun:9788,superset:8835,supersetnotequal:8843,supersetorequal:8839,svsquare:13276,syouwaerasquare:13180,t:116,tabengali:2468,tackdown:8868,tackleft:8867,tadeva:2340,tagujarati:2724,tagurmukhi:2596,taharabic:1591,tahfinalarabic:65218,tahinitialarabic:65219,tahiragana:12383,tahmedialarabic:65220,taisyouerasquare:13181,takatakana:12479,takatakanahalfwidth:65408,tatweelarabic:1600,tau:964,tav:1514,tavdages:64330,tavdagesh:64330,tavdageshhebrew:64330,tavhebrew:1514,tbar:359,tbopomofo:12554,tcaron:357,tccurl:680,tcedilla:355,tcheharabic:1670,tchehfinalarabic:64379,tchehinitialarabic:64380,tchehmedialarabic:64381,tcircle:9443,tcircumflexbelow:7793,tcommaaccent:355,tdieresis:7831,tdotaccent:7787,tdotbelow:7789,tecyrillic:1090,tedescendercyrillic:1197,teharabic:1578,tehfinalarabic:65174,tehhahinitialarabic:64674,tehhahisolatedarabic:64524,tehinitialarabic:65175,tehiragana:12390,tehjeeminitialarabic:64673,tehjeemisolatedarabic:64523,tehmarbutaarabic:1577,tehmarbutafinalarabic:65172,tehmedialarabic:65176,tehmeeminitialarabic:64676,tehmeemisolatedarabic:64526,tehnoonfinalarabic:64627,tekatakana:12486,tekatakanahalfwidth:65411,telephone:8481,telephoneblack:9742,telishagedolahebrew:1440,telishaqetanahebrew:1449,tencircle:9321,tenideographicparen:12841,tenparen:9341,tenperiod:9361,tenroman:8569,tesh:679,tet:1496,tetdagesh:64312,tetdageshhebrew:64312,tethebrew:1496,tetsecyrillic:1205,tevirhebrew:1435,tevirlefthebrew:1435,thabengali:2469,thadeva:2341,thagujarati:2725,thagurmukhi:2597,thalarabic:1584,thalfinalarabic:65196,thanthakhatlowleftthai:63640,thanthakhatlowrightthai:63639,thanthakhatthai:3660,thanthakhatupperleftthai:63638,theharabic:1579,thehfinalarabic:65178,thehinitialarabic:65179,thehmedialarabic:65180,thereexists:8707,therefore:8756,theta:952,theta1:977,thetasymbolgreek:977,thieuthacirclekorean:12921,thieuthaparenkorean:12825,thieuthcirclekorean:12907,thieuthkorean:12620,thieuthparenkorean:12811,thirteencircle:9324,thirteenparen:9344,thirteenperiod:9364,thonangmonthothai:3601,thook:429,thophuthaothai:3602,thorn:254,thothahanthai:3607,thothanthai:3600,thothongthai:3608,thothungthai:3606,thousandcyrillic:1154,thousandsseparatorarabic:1644,thousandsseparatorpersian:1644,three:51,threearabic:1635,threebengali:2537,threecircle:9314,threecircleinversesansserif:10124,threedeva:2409,threeeighths:8540,threegujarati:2793,threegurmukhi:2665,threehackarabic:1635,threehangzhou:12323,threeideographicparen:12834,threeinferior:8323,threemonospace:65299,threenumeratorbengali:2550,threeoldstyle:63283,threeparen:9334,threeperiod:9354,threepersian:1779,threequarters:190,threequartersemdash:63198,threeroman:8562,threesuperior:179,threethai:3667,thzsquare:13204,tihiragana:12385,tikatakana:12481,tikatakanahalfwidth:65409,tikeutacirclekorean:12912,tikeutaparenkorean:12816,tikeutcirclekorean:12898,tikeutkorean:12599,tikeutparenkorean:12802,tilde:732,tildebelowcmb:816,tildecmb:771,tildecomb:771,tildedoublecmb:864,tildeoperator:8764,tildeoverlaycmb:820,tildeverticalcmb:830,timescircle:8855,tipehahebrew:1430,tipehalefthebrew:1430,tippigurmukhi:2672,titlocyrilliccmb:1155,tiwnarmenian:1407,tlinebelow:7791,tmonospace:65364,toarmenian:1385,tohiragana:12392,tokatakana:12488,tokatakanahalfwidth:65412,tonebarextrahighmod:741,tonebarextralowmod:745,tonebarhighmod:742,tonebarlowmod:744,tonebarmidmod:743,tonefive:445,tonesix:389,tonetwo:424,tonos:900,tonsquare:13095,topatakthai:3599,tortoiseshellbracketleft:12308,tortoiseshellbracketleftsmall:65117,tortoiseshellbracketleftvertical:65081,tortoiseshellbracketright:12309,tortoiseshellbracketrightsmall:65118,tortoiseshellbracketrightvertical:65082,totaothai:3605,tpalatalhook:427,tparen:9391,trademark:8482,trademarksans:63722,trademarkserif:63195,tretroflexhook:648,triagdn:9660,triaglf:9668,triagrt:9658,triagup:9650,ts:678,tsadi:1510,tsadidagesh:64326,tsadidageshhebrew:64326,tsadihebrew:1510,tsecyrillic:1094,tsere:1461,tsere12:1461,tsere1e:1461,tsere2b:1461,tserehebrew:1461,tserenarrowhebrew:1461,tserequarterhebrew:1461,tserewidehebrew:1461,tshecyrillic:1115,tsuperior:63219,ttabengali:2463,ttadeva:2335,ttagujarati:2719,ttagurmukhi:2591,tteharabic:1657,ttehfinalarabic:64359,ttehinitialarabic:64360,ttehmedialarabic:64361,tthabengali:2464,tthadeva:2336,tthagujarati:2720,tthagurmukhi:2592,tturned:647,tuhiragana:12388,tukatakana:12484,tukatakanahalfwidth:65410,tusmallhiragana:12387,tusmallkatakana:12483,tusmallkatakanahalfwidth:65391,twelvecircle:9323,twelveparen:9343,twelveperiod:9363,twelveroman:8571,twentycircle:9331,twentyhangzhou:21316,twentyparen:9351,twentyperiod:9371,two:50,twoarabic:1634,twobengali:2536,twocircle:9313,twocircleinversesansserif:10123,twodeva:2408,twodotenleader:8229,twodotleader:8229,twodotleadervertical:65072,twogujarati:2792,twogurmukhi:2664,twohackarabic:1634,twohangzhou:12322,twoideographicparen:12833,twoinferior:8322,twomonospace:65298,twonumeratorbengali:2549,twooldstyle:63282,twoparen:9333,twoperiod:9353,twopersian:1778,tworoman:8561,twostroke:443,twosuperior:178,twothai:3666,twothirds:8532,u:117,uacute:250,ubar:649,ubengali:2441,ubopomofo:12584,ubreve:365,ucaron:468,ucircle:9444,ucircumflex:251,ucircumflexbelow:7799,ucyrillic:1091,udattadeva:2385,udblacute:369,udblgrave:533,udeva:2313,udieresis:252,udieresisacute:472,udieresisbelow:7795,udieresiscaron:474,udieresiscyrillic:1265,udieresisgrave:476,udieresismacron:470,udotbelow:7909,ugrave:249,ugujarati:2697,ugurmukhi:2569,uhiragana:12358,uhookabove:7911,uhorn:432,uhornacute:7913,uhorndotbelow:7921,uhorngrave:7915,uhornhookabove:7917,uhorntilde:7919,uhungarumlaut:369,uhungarumlautcyrillic:1267,uinvertedbreve:535,ukatakana:12454,ukatakanahalfwidth:65395,ukcyrillic:1145,ukorean:12636,umacron:363,umacroncyrillic:1263,umacrondieresis:7803,umatragurmukhi:2625,umonospace:65365,underscore:95,underscoredbl:8215,underscoremonospace:65343,underscorevertical:65075,underscorewavy:65103,union:8746,universal:8704,uogonek:371,uparen:9392,upblock:9600,upperdothebrew:1476,upsilon:965,upsilondieresis:971,upsilondieresistonos:944,upsilonlatin:650,upsilontonos:973,uptackbelowcmb:797,uptackmod:724,uragurmukhi:2675,uring:367,ushortcyrillic:1118,usmallhiragana:12357,usmallkatakana:12453,usmallkatakanahalfwidth:65385,ustraightcyrillic:1199,ustraightstrokecyrillic:1201,utilde:361,utildeacute:7801,utildebelow:7797,uubengali:2442,uudeva:2314,uugujarati:2698,uugurmukhi:2570,uumatragurmukhi:2626,uuvowelsignbengali:2498,uuvowelsigndeva:2370,uuvowelsigngujarati:2754,uvowelsignbengali:2497,uvowelsigndeva:2369,uvowelsigngujarati:2753,v:118,vadeva:2357,vagujarati:2741,vagurmukhi:2613,vakatakana:12535,vav:1493,vavdagesh:64309,vavdagesh65:64309,vavdageshhebrew:64309,vavhebrew:1493,vavholam:64331,vavholamhebrew:64331,vavvavhebrew:1520,vavyodhebrew:1521,vcircle:9445,vdotbelow:7807,vecyrillic:1074,veharabic:1700,vehfinalarabic:64363,vehinitialarabic:64364,vehmedialarabic:64365,vekatakana:12537,venus:9792,verticalbar:124,verticallineabovecmb:781,verticallinebelowcmb:809,verticallinelowmod:716,verticallinemod:712,vewarmenian:1406,vhook:651,vikatakana:12536,viramabengali:2509,viramadeva:2381,viramagujarati:2765,visargabengali:2435,visargadeva:2307,visargagujarati:2691,vmonospace:65366,voarmenian:1400,voicediterationhiragana:12446,voicediterationkatakana:12542,voicedmarkkana:12443,voicedmarkkanahalfwidth:65438,vokatakana:12538,vparen:9393,vtilde:7805,vturned:652,vuhiragana:12436,vukatakana:12532,w:119,wacute:7811,waekorean:12633,wahiragana:12431,wakatakana:12527,wakatakanahalfwidth:65436,wakorean:12632,wasmallhiragana:12430,wasmallkatakana:12526,wattosquare:13143,wavedash:12316,wavyunderscorevertical:65076,wawarabic:1608,wawfinalarabic:65262,wawhamzaabovearabic:1572,wawhamzaabovefinalarabic:65158,wbsquare:13277,wcircle:9446,wcircumflex:373,wdieresis:7813,wdotaccent:7815,wdotbelow:7817,wehiragana:12433,weierstrass:8472,wekatakana:12529,wekorean:12638,weokorean:12637,wgrave:7809,whitebullet:9702,whitecircle:9675,whitecircleinverse:9689,whitecornerbracketleft:12302,whitecornerbracketleftvertical:65091,whitecornerbracketright:12303,whitecornerbracketrightvertical:65092,whitediamond:9671,whitediamondcontainingblacksmalldiamond:9672,whitedownpointingsmalltriangle:9663,whitedownpointingtriangle:9661,whiteleftpointingsmalltriangle:9667,whiteleftpointingtriangle:9665,whitelenticularbracketleft:12310,whitelenticularbracketright:12311,whiterightpointingsmalltriangle:9657,whiterightpointingtriangle:9655,whitesmallsquare:9643,whitesmilingface:9786,whitesquare:9633,whitestar:9734,whitetelephone:9743,whitetortoiseshellbracketleft:12312,whitetortoiseshellbracketright:12313,whiteuppointingsmalltriangle:9653,whiteuppointingtriangle:9651,wihiragana:12432,wikatakana:12528,wikorean:12639,wmonospace:65367,wohiragana:12434,wokatakana:12530,wokatakanahalfwidth:65382,won:8361,wonmonospace:65510,wowaenthai:3623,wparen:9394,wring:7832,wsuperior:695,wturned:653,wynn:447,x:120,xabovecmb:829,xbopomofo:12562,xcircle:9447,xdieresis:7821,xdotaccent:7819,xeharmenian:1389,xi:958,xmonospace:65368,xparen:9395,xsuperior:739,y:121,yaadosquare:13134,yabengali:2479,yacute:253,yadeva:2351,yaekorean:12626,yagujarati:2735,yagurmukhi:2607,yahiragana:12420,yakatakana:12516,yakatakanahalfwidth:65428,yakorean:12625,yamakkanthai:3662,yasmallhiragana:12419,yasmallkatakana:12515,yasmallkatakanahalfwidth:65388,yatcyrillic:1123,ycircle:9448,ycircumflex:375,ydieresis:255,ydotaccent:7823,ydotbelow:7925,yeharabic:1610,yehbarreearabic:1746,yehbarreefinalarabic:64431,yehfinalarabic:65266,yehhamzaabovearabic:1574,yehhamzaabovefinalarabic:65162,yehhamzaaboveinitialarabic:65163,yehhamzaabovemedialarabic:65164,yehinitialarabic:65267,yehmedialarabic:65268,yehmeeminitialarabic:64733,yehmeemisolatedarabic:64600,yehnoonfinalarabic:64660,yehthreedotsbelowarabic:1745,yekorean:12630,yen:165,yenmonospace:65509,yeokorean:12629,yeorinhieuhkorean:12678,yerahbenyomohebrew:1450,yerahbenyomolefthebrew:1450,yericyrillic:1099,yerudieresiscyrillic:1273,yesieungkorean:12673,yesieungpansioskorean:12675,yesieungsioskorean:12674,yetivhebrew:1434,ygrave:7923,yhook:436,yhookabove:7927,yiarmenian:1397,yicyrillic:1111,yikorean:12642,yinyang:9775,yiwnarmenian:1410,ymonospace:65369,yod:1497,yoddagesh:64313,yoddageshhebrew:64313,yodhebrew:1497,yodyodhebrew:1522,yodyodpatahhebrew:64287,yohiragana:12424,yoikorean:12681,yokatakana:12520,yokatakanahalfwidth:65430,yokorean:12635,yosmallhiragana:12423,yosmallkatakana:12519,yosmallkatakanahalfwidth:65390,yotgreek:1011,yoyaekorean:12680,yoyakorean:12679,yoyakthai:3618,yoyingthai:3597,yparen:9396,ypogegrammeni:890,ypogegrammenigreekcmb:837,yr:422,yring:7833,ysuperior:696,ytilde:7929,yturned:654,yuhiragana:12422,yuikorean:12684,yukatakana:12518,yukatakanahalfwidth:65429,yukorean:12640,yusbigcyrillic:1131,yusbigiotifiedcyrillic:1133,yuslittlecyrillic:1127,yuslittleiotifiedcyrillic:1129,yusmallhiragana:12421,yusmallkatakana:12517,yusmallkatakanahalfwidth:65389,yuyekorean:12683,yuyeokorean:12682,yyabengali:2527,yyadeva:2399,z:122,zaarmenian:1382,zacute:378,zadeva:2395,zagurmukhi:2651,zaharabic:1592,zahfinalarabic:65222,zahinitialarabic:65223,zahiragana:12374,zahmedialarabic:65224,zainarabic:1586,zainfinalarabic:65200,zakatakana:12470,zaqefgadolhebrew:1429,zaqefqatanhebrew:1428,zarqahebrew:1432,zayin:1494,zayindagesh:64310,zayindageshhebrew:64310,zayinhebrew:1494,zbopomofo:12567,zcaron:382,zcircle:9449,zcircumflex:7825,zcurl:657,zdot:380,zdotaccent:380,zdotbelow:7827,zecyrillic:1079,zedescendercyrillic:1177,zedieresiscyrillic:1247,zehiragana:12380,zekatakana:12476,zero:48,zeroarabic:1632,zerobengali:2534,zerodeva:2406,zerogujarati:2790,zerogurmukhi:2662,zerohackarabic:1632,zeroinferior:8320,zeromonospace:65296,zerooldstyle:63280,zeropersian:1776,zerosuperior:8304,zerothai:3664,zerowidthjoiner:65279,zerowidthnonjoiner:8204,zerowidthspace:8203,zeta:950,zhbopomofo:12563,zhearmenian:1386,zhebrevecyrillic:1218,zhecyrillic:1078,zhedescendercyrillic:1175,zhedieresiscyrillic:1245,zihiragana:12376,zikatakana:12472,zinorhebrew:1454,zlinebelow:7829,zmonospace:65370,zohiragana:12382,zokatakana:12478,zparen:9397,zretroflexhook:656,zstroke:438,zuhiragana:12378,zukatakana:12474,".notdef":0},DingbatsGlyphsUnicode={space:32,a1:9985,a2:9986,a202:9987,a3:9988,a4:9742,a5:9990,a119:9991,a118:9992,a117:9993,a11:9755,a12:9758,a13:9996,a14:9997,a15:9998,a16:9999,a105:1e4,a17:10001,a18:10002,a19:10003,a20:10004,a21:10005,a22:10006,a23:10007,a24:10008,a25:10009,a26:10010,a27:10011,a28:10012,a6:10013,a7:10014,a8:10015,a9:10016,a10:10017,a29:10018,a30:10019,a31:10020,a32:10021,a33:10022,a34:10023,a35:9733,a36:10025,a37:10026,a38:10027,a39:10028,a40:10029,a41:10030,a42:10031,a43:10032,a44:10033,a45:10034,a46:10035,a47:10036,a48:10037,a49:10038,a50:10039,a51:10040,a52:10041,a53:10042,a54:10043,a55:10044,a56:10045,a57:10046,a58:10047,a59:10048,a60:10049,a61:10050,a62:10051,a63:10052,a64:10053,a65:10054,a66:10055,a67:10056,a68:10057,a69:10058,a70:10059,a71:9679,a72:10061,a73:9632,a74:10063,a203:10064,a75:10065,a204:10066,a76:9650,a77:9660,a78:9670,a79:10070,a81:9687,a82:10072,a83:10073,a84:10074,a97:10075,a98:10076,a99:10077,a100:10078,a101:10081,a102:10082,a103:10083,a104:10084,a106:10085,a107:10086,a108:10087,a112:9827,a111:9830,a110:9829,a109:9824,a120:9312,a121:9313,a122:9314,a123:9315,a124:9316,a125:9317,a126:9318,a127:9319,a128:9320,a129:9321,a130:10102,a131:10103,a132:10104,a133:10105,a134:10106,a135:10107,a136:10108,a137:10109,a138:10110,a139:10111,a140:10112,a141:10113,a142:10114,a143:10115,a144:10116,a145:10117,a146:10118,a147:10119,a148:10120,a149:10121,a150:10122,a151:10123,a152:10124,a153:10125,a154:10126,a155:10127,a156:10128,a157:10129,a158:10130,a159:10131,a160:10132,a161:8594,a163:8596,a164:8597,a196:10136,a165:10137,a192:10138,a166:10139,a167:10140,a168:10141,a169:10142,a170:10143,a171:10144,a172:10145,a173:10146,a162:10147,a174:10148,a175:10149,a176:10150,a177:10151,a178:10152,a179:10153,a193:10154,a180:10155,a199:10156,a181:10157,a200:10158,a182:10159,a201:10161,a183:10162,a184:10163,a197:10164,a185:10165,a194:10166,a198:10167,a186:10168,a195:10169,a187:10170,a188:10171,a189:10172,a190:10173,a191:10174,a89:10088,a90:10089,a93:10090,a94:10091,a91:10092,a92:10093,a205:10094,a85:10095,a206:10096,a86:10097,a87:10098,a88:10099,a95:10100,a96:10101,".notdef":0},PDFImage=function(){function handleImageData(handler,xref,res,image){if(image instanceof JpegStream&&image.isNativelyDecodable(xref,res)){var dict=image.dict,colorSpace=dict.get("ColorSpace","CS");
colorSpace=ColorSpace.parse(colorSpace,xref,res);var numComps=colorSpace.numComps,decodePromise=handler.sendWithPromise("JpegDecode",[image.getIR(),numComps]);return decodePromise.then(function(message){var data=message.data;return new Stream(data,0,data.length,image.dict)})}return Promise.resolve(image)}function decodeAndClamp(value,addend,coefficient,max){return value=addend+value*coefficient,0>value?0:value>max?max:value}function PDFImage(xref,res,image,inline,smask,mask,isMask){this.image=image;var dict=image.dict;if(dict.has("Filter")){var filter=dict.get("Filter").name;if("JPXDecode"===filter){var jpxImage=new JpxImage;jpxImage.parseImageProperties(image.stream),image.stream.reset(),image.bitsPerComponent=jpxImage.bitsPerComponent,image.numComps=jpxImage.componentsCount}else"JBIG2Decode"===filter&&(image.bitsPerComponent=1,image.numComps=1)}this.width=dict.get("Width","W"),this.height=dict.get("Height","H"),(this.width<1||this.height<1)&&error("Invalid image width: "+this.width+" or height: "+this.height),this.interpolate=dict.get("Interpolate","I")||!1,this.imageMask=dict.get("ImageMask","IM")||!1,this.matte=dict.get("Matte")||!1;var bitsPerComponent=image.bitsPerComponent;if(bitsPerComponent||(bitsPerComponent=dict.get("BitsPerComponent","BPC"),bitsPerComponent||(this.imageMask?bitsPerComponent=1:error("Bits per component missing in image: "+this.imageMask))),this.bpc=bitsPerComponent,!this.imageMask){var colorSpace=dict.get("ColorSpace","CS");if(!colorSpace)switch(info("JPX images (which do not require color spaces)"),image.numComps){case 1:colorSpace=Name.get("DeviceGray");break;case 3:colorSpace=Name.get("DeviceRGB");break;case 4:colorSpace=Name.get("DeviceCMYK");break;default:error("JPX images with "+this.numComps+" color components not supported.")}this.colorSpace=ColorSpace.parse(colorSpace,xref,res),this.numComps=this.colorSpace.numComps}if(this.decode=dict.get("Decode","D"),this.needsDecode=!1,this.decode&&(this.colorSpace&&!this.colorSpace.isDefaultDecode(this.decode)||isMask&&!ColorSpace.isDefaultDecode(this.decode,1))){this.needsDecode=!0;var max=(1<<bitsPerComponent)-1;this.decodeCoefficients=[],this.decodeAddends=[];for(var i=0,j=0;i<this.decode.length;i+=2,++j){var dmin=this.decode[i],dmax=this.decode[i+1];this.decodeCoefficients[j]=dmax-dmin,this.decodeAddends[j]=max*dmin}}smask?this.smask=new PDFImage(xref,res,smask,!1):mask&&(this.mask=isStream(mask)?new PDFImage(xref,res,mask,!1,null,null,!0):mask)}return PDFImage.buildImage=function(handler,xref,res,image,inline){var smaskPromise,maskPromise,imagePromise=handleImageData(handler,xref,res,image),smask=image.dict.get("SMask"),mask=image.dict.get("Mask");return smask?(smaskPromise=handleImageData(handler,xref,res,smask),maskPromise=Promise.resolve(null)):(smaskPromise=Promise.resolve(null),mask?isStream(mask)?maskPromise=handleImageData(handler,xref,res,mask):isArray(mask)?maskPromise=Promise.resolve(mask):(warn("Unsupported mask format."),maskPromise=Promise.resolve(null)):maskPromise=Promise.resolve(null)),Promise.all([imagePromise,smaskPromise,maskPromise]).then(function(results){var imageData=results[0],smaskData=results[1],maskData=results[2];return new PDFImage(xref,res,imageData,inline,smaskData,maskData)})},PDFImage.resize=function(pixels,bpc,components,w1,h1,w2,h2,dest,alpha01){1!==components&&3!==components&&error("Unsupported component count for resizing.");var i,j,py,oldIndex,length=w2*h2*components,temp=dest?dest:8>=bpc?new Uint8Array(length):16>=bpc?new Uint16Array(length):new Uint32Array(length),xRatio=w1/w2,yRatio=h1/h2,newIndex=0,xScaled=new Uint16Array(w2),w1Scanline=w1*components;for(1!==alpha01&&(alpha01=0),j=0;w2>j;j++)xScaled[j]=Math.floor(j*xRatio)*components;if(1===components)for(i=0;h2>i;i++)for(py=Math.floor(i*yRatio)*w1Scanline,j=0;w2>j;j++)oldIndex=py+xScaled[j],temp[newIndex++]=pixels[oldIndex];else if(3===components)for(i=0;h2>i;i++)for(py=Math.floor(i*yRatio)*w1Scanline,j=0;w2>j;j++)oldIndex=py+xScaled[j],temp[newIndex++]=pixels[oldIndex++],temp[newIndex++]=pixels[oldIndex++],temp[newIndex++]=pixels[oldIndex++],newIndex+=alpha01;return temp},PDFImage.createMask=function(imgArray,width,height,imageIsFromDecodeStream,inverseDecode){var data,i,computedLength=(width+7>>3)*height,actualLength=imgArray.byteLength,haveFullData=computedLength===actualLength;if(!imageIsFromDecodeStream||inverseDecode&&!haveFullData)if(inverseDecode)for(data=new Uint8Array(computedLength),data.set(imgArray),i=actualLength;computedLength>i;i++)data[i]=255;else data=new Uint8Array(actualLength),data.set(imgArray);else data=imgArray;if(inverseDecode)for(i=0;actualLength>i;i++)data[i]=~data[i];return{data:data,width:width,height:height}},PDFImage.prototype={get drawWidth(){return Math.max(this.width,this.smask&&this.smask.width||0,this.mask&&this.mask.width||0)},get drawHeight(){return Math.max(this.height,this.smask&&this.smask.height||0,this.mask&&this.mask.height||0)},decodeBuffer:function(buffer){var i,ii,bpc=this.bpc,numComps=this.numComps,decodeAddends=this.decodeAddends,decodeCoefficients=this.decodeCoefficients,max=(1<<bpc)-1;if(1!==bpc){var index=0;for(i=0,ii=this.width*this.height;ii>i;i++)for(var j=0;numComps>j;j++)buffer[index]=decodeAndClamp(buffer[index],decodeAddends[j],decodeCoefficients[j],max),index++}else for(i=0,ii=buffer.length;ii>i;i++)buffer[i]=+!buffer[i]},getComponents:function(buffer){var bpc=this.bpc;if(8===bpc)return buffer;var ii,buf,width=this.width,height=this.height,numComps=this.numComps,length=width*height*numComps,bufferPos=0,output=8>=bpc?new Uint8Array(length):16>=bpc?new Uint16Array(length):new Uint32Array(length),rowComps=width*numComps,max=(1<<bpc)-1,i=0;if(1===bpc)for(var mask,loop1End,loop2End,j=0;height>j;j++){for(loop1End=i+(-8&rowComps),loop2End=i+rowComps;loop1End>i;)buf=buffer[bufferPos++],output[i]=buf>>7&1,output[i+1]=buf>>6&1,output[i+2]=buf>>5&1,output[i+3]=buf>>4&1,output[i+4]=buf>>3&1,output[i+5]=buf>>2&1,output[i+6]=buf>>1&1,output[i+7]=1&buf,i+=8;if(loop2End>i)for(buf=buffer[bufferPos++],mask=128;loop2End>i;)output[i++]=+!!(buf&mask),mask>>=1}else{var bits=0;for(buf=0,i=0,ii=length;ii>i;++i){for(i%rowComps===0&&(buf=0,bits=0);bpc>bits;)buf=buf<<8|buffer[bufferPos++],bits+=8;var remainingBits=bits-bpc,value=buf>>remainingBits;output[i]=0>value?0:value>max?max:value,buf&=(1<<remainingBits)-1,bits=remainingBits}}return output},fillOpacity:function(rgbaBuf,width,height,actualHeight,image){var alphaBuf,sw,sh,i,ii,j,smask=this.smask,mask=this.mask;if(smask)sw=smask.width,sh=smask.height,alphaBuf=new Uint8Array(sw*sh),smask.fillGrayBuffer(alphaBuf),(sw!==width||sh!==height)&&(alphaBuf=PDFImage.resize(alphaBuf,smask.bpc,1,sw,sh,width,height));else if(mask)if(mask instanceof PDFImage){for(sw=mask.width,sh=mask.height,alphaBuf=new Uint8Array(sw*sh),mask.numComps=1,mask.fillGrayBuffer(alphaBuf),i=0,ii=sw*sh;ii>i;++i)alphaBuf[i]=255-alphaBuf[i];(sw!==width||sh!==height)&&(alphaBuf=PDFImage.resize(alphaBuf,mask.bpc,1,sw,sh,width,height))}else if(isArray(mask)){alphaBuf=new Uint8Array(width*height);var numComps=this.numComps;for(i=0,ii=width*height;ii>i;++i){var opacity=0,imageOffset=i*numComps;for(j=0;numComps>j;++j){var color=image[imageOffset+j],maskOffset=2*j;if(color<mask[maskOffset]||color>mask[maskOffset+1]){opacity=255;break}}alphaBuf[i]=opacity}}else error("Unknown mask format.");if(alphaBuf)for(i=0,j=3,ii=width*actualHeight;ii>i;++i,j+=4)rgbaBuf[j]=alphaBuf[i];else for(i=0,j=3,ii=width*actualHeight;ii>i;++i,j+=4)rgbaBuf[j]=255},undoPreblend:function(buffer,width,height){var matte=this.smask&&this.smask.matte;if(matte)for(var r,g,b,matteRgb=this.colorSpace.getRgb(matte,0),matteR=matteRgb[0],matteG=matteRgb[1],matteB=matteRgb[2],length=width*height*4,i=0;length>i;i+=4){var alpha=buffer[i+3];if(0!==alpha){var k=255/alpha;r=(buffer[i]-matteR)*k+matteR,g=(buffer[i+1]-matteG)*k+matteG,b=(buffer[i+2]-matteB)*k+matteB,buffer[i]=0>=r?0:r>=255?255:0|r,buffer[i+1]=0>=g?0:g>=255?255:0|g,buffer[i+2]=0>=b?0:b>=255?255:0|b}else buffer[i]=255,buffer[i+1]=255,buffer[i+2]=255}},createImageData:function(forceRGBA){var imgArray,drawWidth=this.drawWidth,drawHeight=this.drawHeight,imgData={width:drawWidth,height:drawHeight},numComps=this.numComps,originalWidth=this.width,originalHeight=this.height,bpc=this.bpc,rowBytes=originalWidth*numComps*bpc+7>>3;if(!forceRGBA){var kind;if("DeviceGray"===this.colorSpace.name&&1===bpc?kind=ImageKind.GRAYSCALE_1BPP:"DeviceRGB"!==this.colorSpace.name||8!==bpc||this.needsDecode||(kind=ImageKind.RGB_24BPP),kind&&!this.smask&&!this.mask&&drawWidth===originalWidth&&drawHeight===originalHeight){if(imgData.kind=kind,imgArray=this.getImageBytes(originalHeight*rowBytes),this.image instanceof DecodeStream)imgData.data=imgArray;else{var newArray=new Uint8Array(imgArray.length);newArray.set(imgArray),imgData.data=newArray}if(this.needsDecode){assert(kind===ImageKind.GRAYSCALE_1BPP);for(var buffer=imgData.data,i=0,ii=buffer.length;ii>i;i++)buffer[i]^=255}return imgData}if(this.image instanceof JpegStream&&!this.smask&&!this.mask)return imgData.kind=ImageKind.RGB_24BPP,imgData.data=this.getImageBytes(originalHeight*rowBytes,drawWidth,drawHeight,!0),imgData}imgArray=this.getImageBytes(originalHeight*rowBytes);var alpha01,maybeUndoPreblend,actualHeight=0|imgArray.length/rowBytes*drawHeight/originalHeight,comps=this.getComponents(imgArray);return forceRGBA||this.smask||this.mask?(imgData.kind=ImageKind.RGBA_32BPP,imgData.data=new Uint8Array(drawWidth*drawHeight*4),alpha01=1,maybeUndoPreblend=!0,this.fillOpacity(imgData.data,drawWidth,drawHeight,actualHeight,comps)):(imgData.kind=ImageKind.RGB_24BPP,imgData.data=new Uint8Array(drawWidth*drawHeight*3),alpha01=0,maybeUndoPreblend=!1),this.needsDecode&&this.decodeBuffer(comps),this.colorSpace.fillRgb(imgData.data,originalWidth,originalHeight,drawWidth,drawHeight,actualHeight,bpc,comps,alpha01),maybeUndoPreblend&&this.undoPreblend(imgData.data,drawWidth,actualHeight),imgData},fillGrayBuffer:function(buffer){var numComps=this.numComps;1!==numComps&&error("Reading gray scale from a color image: "+numComps);var i,length,width=this.width,height=this.height,bpc=this.bpc,rowBytes=width*numComps*bpc+7>>3,imgArray=this.getImageBytes(height*rowBytes),comps=this.getComponents(imgArray);if(1!==bpc){this.needsDecode&&this.decodeBuffer(comps),length=width*height;var scale=255/((1<<bpc)-1);for(i=0;length>i;++i)buffer[i]=scale*comps[i]|0}else if(length=width*height,this.needsDecode)for(i=0;length>i;++i)buffer[i]=comps[i]-1&255;else for(i=0;length>i;++i)buffer[i]=255&-comps[i]},getImageBytes:function(length,drawWidth,drawHeight,forceRGB){return this.image.reset(),this.image.drawWidth=drawWidth||this.width,this.image.drawHeight=drawHeight||this.height,this.image.forceRGB=!!forceRGB,this.image.getBytes(length)}},PDFImage}(),Metrics={Courier:600,"Courier-Bold":600,"Courier-BoldOblique":600,"Courier-Oblique":600,Helvetica:{space:278,exclam:278,quotedbl:355,numbersign:556,dollar:556,percent:889,ampersand:667,quoteright:222,parenleft:333,parenright:333,asterisk:389,plus:584,comma:278,hyphen:333,period:278,slash:278,zero:556,one:556,two:556,three:556,four:556,five:556,six:556,seven:556,eight:556,nine:556,colon:278,semicolon:278,less:584,equal:584,greater:584,question:556,at:1015,A:667,B:667,C:722,D:722,E:667,F:611,G:778,H:722,I:278,J:500,K:667,L:556,M:833,N:722,O:778,P:667,Q:778,R:722,S:667,T:611,U:722,V:667,W:944,X:667,Y:667,Z:611,bracketleft:278,backslash:278,bracketright:278,asciicircum:469,underscore:556,quoteleft:222,a:556,b:556,c:500,d:556,e:556,f:278,g:556,h:556,i:222,j:222,k:500,l:222,m:833,n:556,o:556,p:556,q:556,r:333,s:500,t:278,u:556,v:500,w:722,x:500,y:500,z:500,braceleft:334,bar:260,braceright:334,asciitilde:584,exclamdown:333,cent:556,sterling:556,fraction:167,yen:556,florin:556,section:556,currency:556,quotesingle:191,quotedblleft:333,guillemotleft:556,guilsinglleft:333,guilsinglright:333,fi:500,fl:500,endash:556,dagger:556,daggerdbl:556,periodcentered:278,paragraph:537,bullet:350,quotesinglbase:222,quotedblbase:333,quotedblright:333,guillemotright:556,ellipsis:1e3,perthousand:1e3,questiondown:611,grave:333,acute:333,circumflex:333,tilde:333,macron:333,breve:333,dotaccent:333,dieresis:333,ring:333,cedilla:333,hungarumlaut:333,ogonek:333,caron:333,emdash:1e3,AE:1e3,ordfeminine:370,Lslash:556,Oslash:778,OE:1e3,ordmasculine:365,ae:889,dotlessi:278,lslash:222,oslash:611,oe:944,germandbls:611,Idieresis:278,eacute:556,abreve:556,uhungarumlaut:556,ecaron:556,Ydieresis:667,divide:584,Yacute:667,Acircumflex:667,aacute:556,Ucircumflex:722,yacute:500,scommaaccent:500,ecircumflex:556,Uring:722,Udieresis:722,aogonek:556,Uacute:722,uogonek:556,Edieresis:667,Dcroat:722,commaaccent:250,copyright:737,Emacron:667,ccaron:500,aring:556,Ncommaaccent:722,lacute:222,agrave:556,Tcommaaccent:611,Cacute:722,atilde:556,Edotaccent:667,scaron:500,scedilla:500,iacute:278,lozenge:471,Rcaron:722,Gcommaaccent:778,ucircumflex:556,acircumflex:556,Amacron:667,rcaron:333,ccedilla:500,Zdotaccent:611,Thorn:667,Omacron:778,Racute:722,Sacute:667,dcaron:643,Umacron:722,uring:556,threesuperior:333,Ograve:778,Agrave:667,Abreve:667,multiply:584,uacute:556,Tcaron:611,partialdiff:476,ydieresis:500,Nacute:722,icircumflex:278,Ecircumflex:667,adieresis:556,edieresis:556,cacute:500,nacute:556,umacron:556,Ncaron:722,Iacute:278,plusminus:584,brokenbar:260,registered:737,Gbreve:778,Idotaccent:278,summation:600,Egrave:667,racute:333,omacron:556,Zacute:611,Zcaron:611,greaterequal:549,Eth:722,Ccedilla:722,lcommaaccent:222,tcaron:317,eogonek:556,Uogonek:722,Aacute:667,Adieresis:667,egrave:556,zacute:500,iogonek:222,Oacute:778,oacute:556,amacron:556,sacute:500,idieresis:278,Ocircumflex:778,Ugrave:722,Delta:612,thorn:556,twosuperior:333,Odieresis:778,mu:556,igrave:278,ohungarumlaut:556,Eogonek:667,dcroat:556,threequarters:834,Scedilla:667,lcaron:299,Kcommaaccent:667,Lacute:556,trademark:1e3,edotaccent:556,Igrave:278,Imacron:278,Lcaron:556,onehalf:834,lessequal:549,ocircumflex:556,ntilde:556,Uhungarumlaut:722,Eacute:667,emacron:556,gbreve:556,onequarter:834,Scaron:667,Scommaaccent:667,Ohungarumlaut:778,degree:400,ograve:556,Ccaron:722,ugrave:556,radical:453,Dcaron:722,rcommaaccent:333,Ntilde:722,otilde:556,Rcommaaccent:722,Lcommaaccent:556,Atilde:667,Aogonek:667,Aring:667,Otilde:778,zdotaccent:500,Ecaron:667,Iogonek:278,kcommaaccent:500,minus:584,Icircumflex:278,ncaron:556,tcommaaccent:278,logicalnot:584,odieresis:556,udieresis:556,notequal:549,gcommaaccent:556,eth:556,zcaron:500,ncommaaccent:556,onesuperior:333,imacron:278,Euro:556},"Helvetica-Bold":{space:278,exclam:333,quotedbl:474,numbersign:556,dollar:556,percent:889,ampersand:722,quoteright:278,parenleft:333,parenright:333,asterisk:389,plus:584,comma:278,hyphen:333,period:278,slash:278,zero:556,one:556,two:556,three:556,four:556,five:556,six:556,seven:556,eight:556,nine:556,colon:333,semicolon:333,less:584,equal:584,greater:584,question:611,at:975,A:722,B:722,C:722,D:722,E:667,F:611,G:778,H:722,I:278,J:556,K:722,L:611,M:833,N:722,O:778,P:667,Q:778,R:722,S:667,T:611,U:722,V:667,W:944,X:667,Y:667,Z:611,bracketleft:333,backslash:278,bracketright:333,asciicircum:584,underscore:556,quoteleft:278,a:556,b:611,c:556,d:611,e:556,f:333,g:611,h:611,i:278,j:278,k:556,l:278,m:889,n:611,o:611,p:611,q:611,r:389,s:556,t:333,u:611,v:556,w:778,x:556,y:556,z:500,braceleft:389,bar:280,braceright:389,asciitilde:584,exclamdown:333,cent:556,sterling:556,fraction:167,yen:556,florin:556,section:556,currency:556,quotesingle:238,quotedblleft:500,guillemotleft:556,guilsinglleft:333,guilsinglright:333,fi:611,fl:611,endash:556,dagger:556,daggerdbl:556,periodcentered:278,paragraph:556,bullet:350,quotesinglbase:278,quotedblbase:500,quotedblright:500,guillemotright:556,ellipsis:1e3,perthousand:1e3,questiondown:611,grave:333,acute:333,circumflex:333,tilde:333,macron:333,breve:333,dotaccent:333,dieresis:333,ring:333,cedilla:333,hungarumlaut:333,ogonek:333,caron:333,emdash:1e3,AE:1e3,ordfeminine:370,Lslash:611,Oslash:778,OE:1e3,ordmasculine:365,ae:889,dotlessi:278,lslash:278,oslash:611,oe:944,germandbls:611,Idieresis:278,eacute:556,abreve:556,uhungarumlaut:611,ecaron:556,Ydieresis:667,divide:584,Yacute:667,Acircumflex:722,aacute:556,Ucircumflex:722,yacute:556,scommaaccent:556,ecircumflex:556,Uring:722,Udieresis:722,aogonek:556,Uacute:722,uogonek:611,Edieresis:667,Dcroat:722,commaaccent:250,copyright:737,Emacron:667,ccaron:556,aring:556,Ncommaaccent:722,lacute:278,agrave:556,Tcommaaccent:611,Cacute:722,atilde:556,Edotaccent:667,scaron:556,scedilla:556,iacute:278,lozenge:494,Rcaron:722,Gcommaaccent:778,ucircumflex:611,acircumflex:556,Amacron:722,rcaron:389,ccedilla:556,Zdotaccent:611,Thorn:667,Omacron:778,Racute:722,Sacute:667,dcaron:743,Umacron:722,uring:611,threesuperior:333,Ograve:778,Agrave:722,Abreve:722,multiply:584,uacute:611,Tcaron:611,partialdiff:494,ydieresis:556,Nacute:722,icircumflex:278,Ecircumflex:667,adieresis:556,edieresis:556,cacute:556,nacute:611,umacron:611,Ncaron:722,Iacute:278,plusminus:584,brokenbar:280,registered:737,Gbreve:778,Idotaccent:278,summation:600,Egrave:667,racute:389,omacron:611,Zacute:611,Zcaron:611,greaterequal:549,Eth:722,Ccedilla:722,lcommaaccent:278,tcaron:389,eogonek:556,Uogonek:722,Aacute:722,Adieresis:722,egrave:556,zacute:500,iogonek:278,Oacute:778,oacute:611,amacron:556,sacute:556,idieresis:278,Ocircumflex:778,Ugrave:722,Delta:612,thorn:611,twosuperior:333,Odieresis:778,mu:611,igrave:278,ohungarumlaut:611,Eogonek:667,dcroat:611,threequarters:834,Scedilla:667,lcaron:400,Kcommaaccent:722,Lacute:611,trademark:1e3,edotaccent:556,Igrave:278,Imacron:278,Lcaron:611,onehalf:834,lessequal:549,ocircumflex:611,ntilde:611,Uhungarumlaut:722,Eacute:667,emacron:556,gbreve:611,onequarter:834,Scaron:667,Scommaaccent:667,Ohungarumlaut:778,degree:400,ograve:611,Ccaron:722,ugrave:611,radical:549,Dcaron:722,rcommaaccent:389,Ntilde:722,otilde:611,Rcommaaccent:722,Lcommaaccent:611,Atilde:722,Aogonek:722,Aring:722,Otilde:778,zdotaccent:500,Ecaron:667,Iogonek:278,kcommaaccent:556,minus:584,Icircumflex:278,ncaron:611,tcommaaccent:333,logicalnot:584,odieresis:611,udieresis:611,notequal:549,gcommaaccent:611,eth:611,zcaron:500,ncommaaccent:611,onesuperior:333,imacron:278,Euro:556},"Helvetica-BoldOblique":{space:278,exclam:333,quotedbl:474,numbersign:556,dollar:556,percent:889,ampersand:722,quoteright:278,parenleft:333,parenright:333,asterisk:389,plus:584,comma:278,hyphen:333,period:278,slash:278,zero:556,one:556,two:556,three:556,four:556,five:556,six:556,seven:556,eight:556,nine:556,colon:333,semicolon:333,less:584,equal:584,greater:584,question:611,at:975,A:722,B:722,C:722,D:722,E:667,F:611,G:778,H:722,I:278,J:556,K:722,L:611,M:833,N:722,O:778,P:667,Q:778,R:722,S:667,T:611,U:722,V:667,W:944,X:667,Y:667,Z:611,bracketleft:333,backslash:278,bracketright:333,asciicircum:584,underscore:556,quoteleft:278,a:556,b:611,c:556,d:611,e:556,f:333,g:611,h:611,i:278,j:278,k:556,l:278,m:889,n:611,o:611,p:611,q:611,r:389,s:556,t:333,u:611,v:556,w:778,x:556,y:556,z:500,braceleft:389,bar:280,braceright:389,asciitilde:584,exclamdown:333,cent:556,sterling:556,fraction:167,yen:556,florin:556,section:556,currency:556,quotesingle:238,quotedblleft:500,guillemotleft:556,guilsinglleft:333,guilsinglright:333,fi:611,fl:611,endash:556,dagger:556,daggerdbl:556,periodcentered:278,paragraph:556,bullet:350,quotesinglbase:278,quotedblbase:500,quotedblright:500,guillemotright:556,ellipsis:1e3,perthousand:1e3,questiondown:611,grave:333,acute:333,circumflex:333,tilde:333,macron:333,breve:333,dotaccent:333,dieresis:333,ring:333,cedilla:333,hungarumlaut:333,ogonek:333,caron:333,emdash:1e3,AE:1e3,ordfeminine:370,Lslash:611,Oslash:778,OE:1e3,ordmasculine:365,ae:889,dotlessi:278,lslash:278,oslash:611,oe:944,germandbls:611,Idieresis:278,eacute:556,abreve:556,uhungarumlaut:611,ecaron:556,Ydieresis:667,divide:584,Yacute:667,Acircumflex:722,aacute:556,Ucircumflex:722,yacute:556,scommaaccent:556,ecircumflex:556,Uring:722,Udieresis:722,aogonek:556,Uacute:722,uogonek:611,Edieresis:667,Dcroat:722,commaaccent:250,copyright:737,Emacron:667,ccaron:556,aring:556,Ncommaaccent:722,lacute:278,agrave:556,Tcommaaccent:611,Cacute:722,atilde:556,Edotaccent:667,scaron:556,scedilla:556,iacute:278,lozenge:494,Rcaron:722,Gcommaaccent:778,ucircumflex:611,acircumflex:556,Amacron:722,rcaron:389,ccedilla:556,Zdotaccent:611,Thorn:667,Omacron:778,Racute:722,Sacute:667,dcaron:743,Umacron:722,uring:611,threesuperior:333,Ograve:778,Agrave:722,Abreve:722,multiply:584,uacute:611,Tcaron:611,partialdiff:494,ydieresis:556,Nacute:722,icircumflex:278,Ecircumflex:667,adieresis:556,edieresis:556,cacute:556,nacute:611,umacron:611,Ncaron:722,Iacute:278,plusminus:584,brokenbar:280,registered:737,Gbreve:778,Idotaccent:278,summation:600,Egrave:667,racute:389,omacron:611,Zacute:611,Zcaron:611,greaterequal:549,Eth:722,Ccedilla:722,lcommaaccent:278,tcaron:389,eogonek:556,Uogonek:722,Aacute:722,Adieresis:722,egrave:556,zacute:500,iogonek:278,Oacute:778,oacute:611,amacron:556,sacute:556,idieresis:278,Ocircumflex:778,Ugrave:722,Delta:612,thorn:611,twosuperior:333,Odieresis:778,mu:611,igrave:278,ohungarumlaut:611,Eogonek:667,dcroat:611,threequarters:834,Scedilla:667,lcaron:400,Kcommaaccent:722,Lacute:611,trademark:1e3,edotaccent:556,Igrave:278,Imacron:278,Lcaron:611,onehalf:834,lessequal:549,ocircumflex:611,ntilde:611,Uhungarumlaut:722,Eacute:667,emacron:556,gbreve:611,onequarter:834,Scaron:667,Scommaaccent:667,Ohungarumlaut:778,degree:400,ograve:611,Ccaron:722,ugrave:611,radical:549,Dcaron:722,rcommaaccent:389,Ntilde:722,otilde:611,Rcommaaccent:722,Lcommaaccent:611,Atilde:722,Aogonek:722,Aring:722,Otilde:778,zdotaccent:500,Ecaron:667,Iogonek:278,kcommaaccent:556,minus:584,Icircumflex:278,ncaron:611,tcommaaccent:333,logicalnot:584,odieresis:611,udieresis:611,notequal:549,gcommaaccent:611,eth:611,zcaron:500,ncommaaccent:611,onesuperior:333,imacron:278,Euro:556},"Helvetica-Oblique":{space:278,exclam:278,quotedbl:355,numbersign:556,dollar:556,percent:889,ampersand:667,quoteright:222,parenleft:333,parenright:333,asterisk:389,plus:584,comma:278,hyphen:333,period:278,slash:278,zero:556,one:556,two:556,three:556,four:556,five:556,six:556,seven:556,eight:556,nine:556,colon:278,semicolon:278,less:584,equal:584,greater:584,question:556,at:1015,A:667,B:667,C:722,D:722,E:667,F:611,G:778,H:722,I:278,J:500,K:667,L:556,M:833,N:722,O:778,P:667,Q:778,R:722,S:667,T:611,U:722,V:667,W:944,X:667,Y:667,Z:611,bracketleft:278,backslash:278,bracketright:278,asciicircum:469,underscore:556,quoteleft:222,a:556,b:556,c:500,d:556,e:556,f:278,g:556,h:556,i:222,j:222,k:500,l:222,m:833,n:556,o:556,p:556,q:556,r:333,s:500,t:278,u:556,v:500,w:722,x:500,y:500,z:500,braceleft:334,bar:260,braceright:334,asciitilde:584,exclamdown:333,cent:556,sterling:556,fraction:167,yen:556,florin:556,section:556,currency:556,quotesingle:191,quotedblleft:333,guillemotleft:556,guilsinglleft:333,guilsinglright:333,fi:500,fl:500,endash:556,dagger:556,daggerdbl:556,periodcentered:278,paragraph:537,bullet:350,quotesinglbase:222,quotedblbase:333,quotedblright:333,guillemotright:556,ellipsis:1e3,perthousand:1e3,questiondown:611,grave:333,acute:333,circumflex:333,tilde:333,macron:333,breve:333,dotaccent:333,dieresis:333,ring:333,cedilla:333,hungarumlaut:333,ogonek:333,caron:333,emdash:1e3,AE:1e3,ordfeminine:370,Lslash:556,Oslash:778,OE:1e3,ordmasculine:365,ae:889,dotlessi:278,lslash:222,oslash:611,oe:944,germandbls:611,Idieresis:278,eacute:556,abreve:556,uhungarumlaut:556,ecaron:556,Ydieresis:667,divide:584,Yacute:667,Acircumflex:667,aacute:556,Ucircumflex:722,yacute:500,scommaaccent:500,ecircumflex:556,Uring:722,Udieresis:722,aogonek:556,Uacute:722,uogonek:556,Edieresis:667,Dcroat:722,commaaccent:250,copyright:737,Emacron:667,ccaron:500,aring:556,Ncommaaccent:722,lacute:222,agrave:556,Tcommaaccent:611,Cacute:722,atilde:556,Edotaccent:667,scaron:500,scedilla:500,iacute:278,lozenge:471,Rcaron:722,Gcommaaccent:778,ucircumflex:556,acircumflex:556,Amacron:667,rcaron:333,ccedilla:500,Zdotaccent:611,Thorn:667,Omacron:778,Racute:722,Sacute:667,dcaron:643,Umacron:722,uring:556,threesuperior:333,Ograve:778,Agrave:667,Abreve:667,multiply:584,uacute:556,Tcaron:611,partialdiff:476,ydieresis:500,Nacute:722,icircumflex:278,Ecircumflex:667,adieresis:556,edieresis:556,cacute:500,nacute:556,umacron:556,Ncaron:722,Iacute:278,plusminus:584,brokenbar:260,registered:737,Gbreve:778,Idotaccent:278,summation:600,Egrave:667,racute:333,omacron:556,Zacute:611,Zcaron:611,greaterequal:549,Eth:722,Ccedilla:722,lcommaaccent:222,tcaron:317,eogonek:556,Uogonek:722,Aacute:667,Adieresis:667,egrave:556,zacute:500,iogonek:222,Oacute:778,oacute:556,amacron:556,sacute:500,idieresis:278,Ocircumflex:778,Ugrave:722,Delta:612,thorn:556,twosuperior:333,Odieresis:778,mu:556,igrave:278,ohungarumlaut:556,Eogonek:667,dcroat:556,threequarters:834,Scedilla:667,lcaron:299,Kcommaaccent:667,Lacute:556,trademark:1e3,edotaccent:556,Igrave:278,Imacron:278,Lcaron:556,onehalf:834,lessequal:549,ocircumflex:556,ntilde:556,Uhungarumlaut:722,Eacute:667,emacron:556,gbreve:556,onequarter:834,Scaron:667,Scommaaccent:667,Ohungarumlaut:778,degree:400,ograve:556,Ccaron:722,ugrave:556,radical:453,Dcaron:722,rcommaaccent:333,Ntilde:722,otilde:556,Rcommaaccent:722,Lcommaaccent:556,Atilde:667,Aogonek:667,Aring:667,Otilde:778,zdotaccent:500,Ecaron:667,Iogonek:278,kcommaaccent:500,minus:584,Icircumflex:278,ncaron:556,tcommaaccent:278,logicalnot:584,odieresis:556,udieresis:556,notequal:549,gcommaaccent:556,eth:556,zcaron:500,ncommaaccent:556,onesuperior:333,imacron:278,Euro:556},Symbol:{space:250,exclam:333,universal:713,numbersign:500,existential:549,percent:833,ampersand:778,suchthat:439,parenleft:333,parenright:333,asteriskmath:500,plus:549,comma:250,minus:549,period:250,slash:278,zero:500,one:500,two:500,three:500,four:500,five:500,six:500,seven:500,eight:500,nine:500,colon:278,semicolon:278,less:549,equal:549,greater:549,question:444,congruent:549,Alpha:722,Beta:667,Chi:722,Delta:612,Epsilon:611,Phi:763,Gamma:603,Eta:722,Iota:333,theta1:631,Kappa:722,Lambda:686,Mu:889,Nu:722,Omicron:722,Pi:768,Theta:741,Rho:556,Sigma:592,Tau:611,Upsilon:690,sigma1:439,Omega:768,Xi:645,Psi:795,Zeta:611,bracketleft:333,therefore:863,bracketright:333,perpendicular:658,underscore:500,radicalex:500,alpha:631,beta:549,chi:549,delta:494,epsilon:439,phi:521,gamma:411,eta:603,iota:329,phi1:603,kappa:549,lambda:549,mu:576,nu:521,omicron:549,pi:549,theta:521,rho:549,sigma:603,tau:439,upsilon:576,omega1:713,omega:686,xi:493,psi:686,zeta:494,braceleft:480,bar:200,braceright:480,similar:549,Euro:750,Upsilon1:620,minute:247,lessequal:549,fraction:167,infinity:713,florin:500,club:753,diamond:753,heart:753,spade:753,arrowboth:1042,arrowleft:987,arrowup:603,arrowright:987,arrowdown:603,degree:400,plusminus:549,second:411,greaterequal:549,multiply:549,proportional:713,partialdiff:494,bullet:460,divide:549,notequal:549,equivalence:549,approxequal:549,ellipsis:1e3,arrowvertex:603,arrowhorizex:1e3,carriagereturn:658,aleph:823,Ifraktur:686,Rfraktur:795,weierstrass:987,circlemultiply:768,circleplus:768,emptyset:823,intersection:768,union:768,propersuperset:713,reflexsuperset:713,notsubset:713,propersubset:713,reflexsubset:713,element:713,notelement:713,angle:768,gradient:713,registerserif:790,copyrightserif:790,trademarkserif:890,product:823,radical:549,dotmath:250,logicalnot:713,logicaland:603,logicalor:603,arrowdblboth:1042,arrowdblleft:987,arrowdblup:603,arrowdblright:987,arrowdbldown:603,lozenge:494,angleleft:329,registersans:790,copyrightsans:790,trademarksans:786,summation:713,parenlefttp:384,parenleftex:384,parenleftbt:384,bracketlefttp:384,bracketleftex:384,bracketleftbt:384,bracelefttp:494,braceleftmid:494,braceleftbt:494,braceex:494,angleright:329,integral:274,integraltp:686,integralex:686,integralbt:686,parenrighttp:384,parenrightex:384,parenrightbt:384,bracketrighttp:384,bracketrightex:384,bracketrightbt:384,bracerighttp:494,bracerightmid:494,bracerightbt:494,apple:790},"Times-Roman":{space:250,exclam:333,quotedbl:408,numbersign:500,dollar:500,percent:833,ampersand:778,quoteright:333,parenleft:333,parenright:333,asterisk:500,plus:564,comma:250,hyphen:333,period:250,slash:278,zero:500,one:500,two:500,three:500,four:500,five:500,six:500,seven:500,eight:500,nine:500,colon:278,semicolon:278,less:564,equal:564,greater:564,question:444,at:921,A:722,B:667,C:667,D:722,E:611,F:556,G:722,H:722,I:333,J:389,K:722,L:611,M:889,N:722,O:722,P:556,Q:722,R:667,S:556,T:611,U:722,V:722,W:944,X:722,Y:722,Z:611,bracketleft:333,backslash:278,bracketright:333,asciicircum:469,underscore:500,quoteleft:333,a:444,b:500,c:444,d:500,e:444,f:333,g:500,h:500,i:278,j:278,k:500,l:278,m:778,n:500,o:500,p:500,q:500,r:333,s:389,t:278,u:500,v:500,w:722,x:500,y:500,z:444,braceleft:480,bar:200,braceright:480,asciitilde:541,exclamdown:333,cent:500,sterling:500,fraction:167,yen:500,florin:500,section:500,currency:500,quotesingle:180,quotedblleft:444,guillemotleft:500,guilsinglleft:333,guilsinglright:333,fi:556,fl:556,endash:500,dagger:500,daggerdbl:500,periodcentered:250,paragraph:453,bullet:350,quotesinglbase:333,quotedblbase:444,quotedblright:444,guillemotright:500,ellipsis:1e3,perthousand:1e3,questiondown:444,grave:333,acute:333,circumflex:333,tilde:333,macron:333,breve:333,dotaccent:333,dieresis:333,ring:333,cedilla:333,hungarumlaut:333,ogonek:333,caron:333,emdash:1e3,AE:889,ordfeminine:276,Lslash:611,Oslash:722,OE:889,ordmasculine:310,ae:667,dotlessi:278,lslash:278,oslash:500,oe:722,germandbls:500,Idieresis:333,eacute:444,abreve:444,uhungarumlaut:500,ecaron:444,Ydieresis:722,divide:564,Yacute:722,Acircumflex:722,aacute:444,Ucircumflex:722,yacute:500,scommaaccent:389,ecircumflex:444,Uring:722,Udieresis:722,aogonek:444,Uacute:722,uogonek:500,Edieresis:611,Dcroat:722,commaaccent:250,copyright:760,Emacron:611,ccaron:444,aring:444,Ncommaaccent:722,lacute:278,agrave:444,Tcommaaccent:611,Cacute:667,atilde:444,Edotaccent:611,scaron:389,scedilla:389,iacute:278,lozenge:471,Rcaron:667,Gcommaaccent:722,ucircumflex:500,acircumflex:444,Amacron:722,rcaron:333,ccedilla:444,Zdotaccent:611,Thorn:556,Omacron:722,Racute:667,Sacute:556,dcaron:588,Umacron:722,uring:500,threesuperior:300,Ograve:722,Agrave:722,Abreve:722,multiply:564,uacute:500,Tcaron:611,partialdiff:476,ydieresis:500,Nacute:722,icircumflex:278,Ecircumflex:611,adieresis:444,edieresis:444,cacute:444,nacute:500,umacron:500,Ncaron:722,Iacute:333,plusminus:564,brokenbar:200,registered:760,Gbreve:722,Idotaccent:333,summation:600,Egrave:611,racute:333,omacron:500,Zacute:611,Zcaron:611,greaterequal:549,Eth:722,Ccedilla:667,lcommaaccent:278,tcaron:326,eogonek:444,Uogonek:722,Aacute:722,Adieresis:722,egrave:444,zacute:444,iogonek:278,Oacute:722,oacute:500,amacron:444,sacute:389,idieresis:278,Ocircumflex:722,Ugrave:722,Delta:612,thorn:500,twosuperior:300,Odieresis:722,mu:500,igrave:278,ohungarumlaut:500,Eogonek:611,dcroat:500,threequarters:750,Scedilla:556,lcaron:344,Kcommaaccent:722,Lacute:611,trademark:980,edotaccent:444,Igrave:333,Imacron:333,Lcaron:611,onehalf:750,lessequal:549,ocircumflex:500,ntilde:500,Uhungarumlaut:722,Eacute:611,emacron:444,gbreve:500,onequarter:750,Scaron:556,Scommaaccent:556,Ohungarumlaut:722,degree:400,ograve:500,Ccaron:667,ugrave:500,radical:453,Dcaron:722,rcommaaccent:333,Ntilde:722,otilde:500,Rcommaaccent:667,Lcommaaccent:611,Atilde:722,Aogonek:722,Aring:722,Otilde:722,zdotaccent:444,Ecaron:611,Iogonek:333,kcommaaccent:500,minus:564,Icircumflex:333,ncaron:500,tcommaaccent:278,logicalnot:564,odieresis:500,udieresis:500,notequal:549,gcommaaccent:500,eth:500,zcaron:444,ncommaaccent:500,onesuperior:300,imacron:278,Euro:500},"Times-Bold":{space:250,exclam:333,quotedbl:555,numbersign:500,dollar:500,percent:1e3,ampersand:833,quoteright:333,parenleft:333,parenright:333,asterisk:500,plus:570,comma:250,hyphen:333,period:250,slash:278,zero:500,one:500,two:500,three:500,four:500,five:500,six:500,seven:500,eight:500,nine:500,colon:333,semicolon:333,less:570,equal:570,greater:570,question:500,at:930,A:722,B:667,C:722,D:722,E:667,F:611,G:778,H:778,I:389,J:500,K:778,L:667,M:944,N:722,O:778,P:611,Q:778,R:722,S:556,T:667,U:722,V:722,W:1e3,X:722,Y:722,Z:667,bracketleft:333,backslash:278,bracketright:333,asciicircum:581,underscore:500,quoteleft:333,a:500,b:556,c:444,d:556,e:444,f:333,g:500,h:556,i:278,j:333,k:556,l:278,m:833,n:556,o:500,p:556,q:556,r:444,s:389,t:333,u:556,v:500,w:722,x:500,y:500,z:444,braceleft:394,bar:220,braceright:394,asciitilde:520,exclamdown:333,cent:500,sterling:500,fraction:167,yen:500,florin:500,section:500,currency:500,quotesingle:278,quotedblleft:500,guillemotleft:500,guilsinglleft:333,guilsinglright:333,fi:556,fl:556,endash:500,dagger:500,daggerdbl:500,periodcentered:250,paragraph:540,bullet:350,quotesinglbase:333,quotedblbase:500,quotedblright:500,guillemotright:500,ellipsis:1e3,perthousand:1e3,questiondown:500,grave:333,acute:333,circumflex:333,tilde:333,macron:333,breve:333,dotaccent:333,dieresis:333,ring:333,cedilla:333,hungarumlaut:333,ogonek:333,caron:333,emdash:1e3,AE:1e3,ordfeminine:300,Lslash:667,Oslash:778,OE:1e3,ordmasculine:330,ae:722,dotlessi:278,lslash:278,oslash:500,oe:722,germandbls:556,Idieresis:389,eacute:444,abreve:500,uhungarumlaut:556,ecaron:444,Ydieresis:722,divide:570,Yacute:722,Acircumflex:722,aacute:500,Ucircumflex:722,yacute:500,scommaaccent:389,ecircumflex:444,Uring:722,Udieresis:722,aogonek:500,Uacute:722,uogonek:556,Edieresis:667,Dcroat:722,commaaccent:250,copyright:747,Emacron:667,ccaron:444,aring:500,Ncommaaccent:722,lacute:278,agrave:500,Tcommaaccent:667,Cacute:722,atilde:500,Edotaccent:667,scaron:389,scedilla:389,iacute:278,lozenge:494,Rcaron:722,Gcommaaccent:778,ucircumflex:556,acircumflex:500,Amacron:722,rcaron:444,ccedilla:444,Zdotaccent:667,Thorn:611,Omacron:778,Racute:722,Sacute:556,dcaron:672,Umacron:722,uring:556,threesuperior:300,Ograve:778,Agrave:722,Abreve:722,multiply:570,uacute:556,Tcaron:667,partialdiff:494,ydieresis:500,Nacute:722,icircumflex:278,Ecircumflex:667,adieresis:500,edieresis:444,cacute:444,nacute:556,umacron:556,Ncaron:722,Iacute:389,plusminus:570,brokenbar:220,registered:747,Gbreve:778,Idotaccent:389,summation:600,Egrave:667,racute:444,omacron:500,Zacute:667,Zcaron:667,greaterequal:549,Eth:722,Ccedilla:722,lcommaaccent:278,tcaron:416,eogonek:444,Uogonek:722,Aacute:722,Adieresis:722,egrave:444,zacute:444,iogonek:278,Oacute:778,oacute:500,amacron:500,sacute:389,idieresis:278,Ocircumflex:778,Ugrave:722,Delta:612,thorn:556,twosuperior:300,Odieresis:778,mu:556,igrave:278,ohungarumlaut:500,Eogonek:667,dcroat:556,threequarters:750,Scedilla:556,lcaron:394,Kcommaaccent:778,Lacute:667,trademark:1e3,edotaccent:444,Igrave:389,Imacron:389,Lcaron:667,onehalf:750,lessequal:549,ocircumflex:500,ntilde:556,Uhungarumlaut:722,Eacute:667,emacron:444,gbreve:500,onequarter:750,Scaron:556,Scommaaccent:556,Ohungarumlaut:778,degree:400,ograve:500,Ccaron:722,ugrave:556,radical:549,Dcaron:722,rcommaaccent:444,Ntilde:722,otilde:500,Rcommaaccent:722,Lcommaaccent:667,Atilde:722,Aogonek:722,Aring:722,Otilde:778,zdotaccent:444,Ecaron:667,Iogonek:389,kcommaaccent:556,minus:570,Icircumflex:389,ncaron:556,tcommaaccent:333,logicalnot:570,odieresis:500,udieresis:556,notequal:549,gcommaaccent:500,eth:500,zcaron:444,ncommaaccent:556,onesuperior:300,imacron:278,Euro:500},"Times-BoldItalic":{space:250,exclam:389,quotedbl:555,numbersign:500,dollar:500,percent:833,ampersand:778,quoteright:333,parenleft:333,parenright:333,asterisk:500,plus:570,comma:250,hyphen:333,period:250,slash:278,zero:500,one:500,two:500,three:500,four:500,five:500,six:500,seven:500,eight:500,nine:500,colon:333,semicolon:333,less:570,equal:570,greater:570,question:500,at:832,A:667,B:667,C:667,D:722,E:667,F:667,G:722,H:778,I:389,J:500,K:667,L:611,M:889,N:722,O:722,P:611,Q:722,R:667,S:556,T:611,U:722,V:667,W:889,X:667,Y:611,Z:611,bracketleft:333,backslash:278,bracketright:333,asciicircum:570,underscore:500,quoteleft:333,a:500,b:500,c:444,d:500,e:444,f:333,g:500,h:556,i:278,j:278,k:500,l:278,m:778,n:556,o:500,p:500,q:500,r:389,s:389,t:278,u:556,v:444,w:667,x:500,y:444,z:389,braceleft:348,bar:220,braceright:348,asciitilde:570,exclamdown:389,cent:500,sterling:500,fraction:167,yen:500,florin:500,section:500,currency:500,quotesingle:278,quotedblleft:500,guillemotleft:500,guilsinglleft:333,guilsinglright:333,fi:556,fl:556,endash:500,dagger:500,daggerdbl:500,periodcentered:250,paragraph:500,bullet:350,quotesinglbase:333,quotedblbase:500,quotedblright:500,guillemotright:500,ellipsis:1e3,perthousand:1e3,questiondown:500,grave:333,acute:333,circumflex:333,tilde:333,macron:333,breve:333,dotaccent:333,dieresis:333,ring:333,cedilla:333,hungarumlaut:333,ogonek:333,caron:333,emdash:1e3,AE:944,ordfeminine:266,Lslash:611,Oslash:722,OE:944,ordmasculine:300,ae:722,dotlessi:278,lslash:278,oslash:500,oe:722,germandbls:500,Idieresis:389,eacute:444,abreve:500,uhungarumlaut:556,ecaron:444,Ydieresis:611,divide:570,Yacute:611,Acircumflex:667,aacute:500,Ucircumflex:722,yacute:444,scommaaccent:389,ecircumflex:444,Uring:722,Udieresis:722,aogonek:500,Uacute:722,uogonek:556,Edieresis:667,Dcroat:722,commaaccent:250,copyright:747,Emacron:667,ccaron:444,aring:500,Ncommaaccent:722,lacute:278,agrave:500,Tcommaaccent:611,Cacute:667,atilde:500,Edotaccent:667,scaron:389,scedilla:389,iacute:278,lozenge:494,Rcaron:667,Gcommaaccent:722,ucircumflex:556,acircumflex:500,Amacron:667,rcaron:389,ccedilla:444,Zdotaccent:611,Thorn:611,Omacron:722,Racute:667,Sacute:556,dcaron:608,Umacron:722,uring:556,threesuperior:300,Ograve:722,Agrave:667,Abreve:667,multiply:570,uacute:556,Tcaron:611,partialdiff:494,ydieresis:444,Nacute:722,icircumflex:278,Ecircumflex:667,adieresis:500,edieresis:444,cacute:444,nacute:556,umacron:556,Ncaron:722,Iacute:389,plusminus:570,brokenbar:220,registered:747,Gbreve:722,Idotaccent:389,summation:600,Egrave:667,racute:389,omacron:500,Zacute:611,Zcaron:611,greaterequal:549,Eth:722,Ccedilla:667,lcommaaccent:278,tcaron:366,eogonek:444,Uogonek:722,Aacute:667,Adieresis:667,egrave:444,zacute:389,iogonek:278,Oacute:722,oacute:500,amacron:500,sacute:389,idieresis:278,Ocircumflex:722,Ugrave:722,Delta:612,thorn:500,twosuperior:300,Odieresis:722,mu:576,igrave:278,ohungarumlaut:500,Eogonek:667,dcroat:500,threequarters:750,Scedilla:556,lcaron:382,Kcommaaccent:667,Lacute:611,trademark:1e3,edotaccent:444,Igrave:389,Imacron:389,Lcaron:611,onehalf:750,lessequal:549,ocircumflex:500,ntilde:556,Uhungarumlaut:722,Eacute:667,emacron:444,gbreve:500,onequarter:750,Scaron:556,Scommaaccent:556,Ohungarumlaut:722,degree:400,ograve:500,Ccaron:667,ugrave:556,radical:549,Dcaron:722,rcommaaccent:389,Ntilde:722,otilde:500,Rcommaaccent:667,Lcommaaccent:611,Atilde:667,Aogonek:667,Aring:667,Otilde:722,zdotaccent:389,Ecaron:667,Iogonek:389,kcommaaccent:500,minus:606,Icircumflex:389,ncaron:556,tcommaaccent:278,logicalnot:606,odieresis:500,udieresis:556,notequal:549,gcommaaccent:500,eth:500,zcaron:389,ncommaaccent:556,onesuperior:300,imacron:278,Euro:500},"Times-Italic":{space:250,exclam:333,quotedbl:420,numbersign:500,dollar:500,percent:833,ampersand:778,quoteright:333,parenleft:333,parenright:333,asterisk:500,plus:675,comma:250,hyphen:333,period:250,slash:278,zero:500,one:500,two:500,three:500,four:500,five:500,six:500,seven:500,eight:500,nine:500,colon:333,semicolon:333,less:675,equal:675,greater:675,question:500,at:920,A:611,B:611,C:667,D:722,E:611,F:611,G:722,H:722,I:333,J:444,K:667,L:556,M:833,N:667,O:722,P:611,Q:722,R:611,S:500,T:556,U:722,V:611,W:833,X:611,Y:556,Z:556,bracketleft:389,backslash:278,bracketright:389,asciicircum:422,underscore:500,quoteleft:333,a:500,b:500,c:444,d:500,e:444,f:278,g:500,h:500,i:278,j:278,k:444,l:278,m:722,n:500,o:500,p:500,q:500,r:389,s:389,t:278,u:500,v:444,w:667,x:444,y:444,z:389,braceleft:400,bar:275,braceright:400,asciitilde:541,exclamdown:389,cent:500,sterling:500,fraction:167,yen:500,florin:500,section:500,currency:500,quotesingle:214,quotedblleft:556,guillemotleft:500,guilsinglleft:333,guilsinglright:333,fi:500,fl:500,endash:500,dagger:500,daggerdbl:500,periodcentered:250,paragraph:523,bullet:350,quotesinglbase:333,quotedblbase:556,quotedblright:556,guillemotright:500,ellipsis:889,perthousand:1e3,questiondown:500,grave:333,acute:333,circumflex:333,tilde:333,macron:333,breve:333,dotaccent:333,dieresis:333,ring:333,cedilla:333,hungarumlaut:333,ogonek:333,caron:333,emdash:889,AE:889,ordfeminine:276,Lslash:556,Oslash:722,OE:944,ordmasculine:310,ae:667,dotlessi:278,lslash:278,oslash:500,oe:667,germandbls:500,Idieresis:333,eacute:444,abreve:500,uhungarumlaut:500,ecaron:444,Ydieresis:556,divide:675,Yacute:556,Acircumflex:611,aacute:500,Ucircumflex:722,yacute:444,scommaaccent:389,ecircumflex:444,Uring:722,Udieresis:722,aogonek:500,Uacute:722,uogonek:500,Edieresis:611,Dcroat:722,commaaccent:250,copyright:760,Emacron:611,ccaron:444,aring:500,Ncommaaccent:667,lacute:278,agrave:500,Tcommaaccent:556,Cacute:667,atilde:500,Edotaccent:611,scaron:389,scedilla:389,iacute:278,lozenge:471,Rcaron:611,Gcommaaccent:722,ucircumflex:500,acircumflex:500,Amacron:611,rcaron:389,ccedilla:444,Zdotaccent:556,Thorn:611,Omacron:722,Racute:611,Sacute:500,dcaron:544,Umacron:722,uring:500,threesuperior:300,Ograve:722,Agrave:611,Abreve:611,multiply:675,uacute:500,Tcaron:556,partialdiff:476,ydieresis:444,Nacute:667,icircumflex:278,Ecircumflex:611,adieresis:500,edieresis:444,cacute:444,nacute:500,umacron:500,Ncaron:667,Iacute:333,plusminus:675,brokenbar:275,registered:760,Gbreve:722,Idotaccent:333,summation:600,Egrave:611,racute:389,omacron:500,Zacute:556,Zcaron:556,greaterequal:549,Eth:722,Ccedilla:667,lcommaaccent:278,tcaron:300,eogonek:444,Uogonek:722,Aacute:611,Adieresis:611,egrave:444,zacute:389,iogonek:278,Oacute:722,oacute:500,amacron:500,sacute:389,idieresis:278,Ocircumflex:722,Ugrave:722,Delta:612,thorn:500,twosuperior:300,Odieresis:722,mu:500,igrave:278,ohungarumlaut:500,Eogonek:611,dcroat:500,threequarters:750,Scedilla:500,lcaron:300,Kcommaaccent:667,Lacute:556,trademark:980,edotaccent:444,Igrave:333,Imacron:333,Lcaron:611,onehalf:750,lessequal:549,ocircumflex:500,ntilde:500,Uhungarumlaut:722,Eacute:611,emacron:444,gbreve:500,onequarter:750,Scaron:500,Scommaaccent:500,Ohungarumlaut:722,degree:400,ograve:500,Ccaron:667,ugrave:500,radical:453,Dcaron:722,rcommaaccent:389,Ntilde:667,otilde:500,Rcommaaccent:611,Lcommaaccent:556,Atilde:611,Aogonek:611,Aring:611,Otilde:722,zdotaccent:389,Ecaron:611,Iogonek:333,kcommaaccent:444,minus:675,Icircumflex:333,ncaron:500,tcommaaccent:278,logicalnot:675,odieresis:500,udieresis:500,notequal:549,gcommaaccent:500,eth:500,zcaron:389,ncommaaccent:500,onesuperior:300,imacron:278,Euro:500},ZapfDingbats:{space:278,a1:974,a2:961,a202:974,a3:980,a4:719,a5:789,a119:790,a118:791,a117:690,a11:960,a12:939,a13:549,a14:855,a15:911,a16:933,a105:911,a17:945,a18:974,a19:755,a20:846,a21:762,a22:761,a23:571,a24:677,a25:763,a26:760,a27:759,a28:754,a6:494,a7:552,a8:537,a9:577,a10:692,a29:786,a30:788,a31:788,a32:790,a33:793,a34:794,a35:816,a36:823,a37:789,a38:841,a39:823,a40:833,a41:816,a42:831,a43:923,a44:744,a45:723,a46:749,a47:790,a48:792,a49:695,a50:776,a51:768,a52:792,a53:759,a54:707,a55:708,a56:682,a57:701,a58:826,a59:815,a60:789,a61:789,a62:707,a63:687,a64:696,a65:689,a66:786,a67:787,a68:713,a69:791,a70:785,a71:791,a72:873,a73:761,a74:762,a203:762,a75:759,a204:759,a76:892,a77:892,a78:788,a79:784,a81:438,a82:138,a83:277,a84:415,a97:392,a98:392,a99:668,a100:668,a89:390,a90:390,a93:317,a94:317,a91:276,a92:276,a205:509,a85:509,a206:410,a86:410,a87:234,a88:234,a95:334,a96:334,a101:732,a102:544,a103:544,a104:910,a106:667,a107:760,a108:760,a112:776,a111:595,a110:694,a109:626,a120:788,a121:788,a122:788,a123:788,a124:788,a125:788,a126:788,a127:788,a128:788,a129:788,a130:788,a131:788,a132:788,a133:788,a134:788,a135:788,a136:788,a137:788,a138:788,a139:788,a140:788,a141:788,a142:788,a143:788,a144:788,a145:788,a146:788,a147:788,a148:788,a149:788,a150:788,a151:788,a152:788,a153:788,a154:788,a155:788,a156:788,a157:788,a158:788,a159:788,a160:894,a161:838,a163:1016,a164:458,a196:748,a165:924,a192:748,a166:918,a167:927,a168:928,a169:928,a170:834,a171:873,a172:828,a173:924,a162:924,a174:917,a175:930,a176:931,a177:463,a178:883,a179:836,a193:836,a180:867,a199:867,a181:696,a200:696,a182:874,a201:874,a183:760,a184:946,a197:771,a185:865,a194:771,a198:888,a186:967,a195:888,a187:831,a188:873,a189:927,a190:970,a191:918}},EOF={},Parser=function(){function Parser(lexer,allowStreams,xref){this.lexer=lexer,this.allowStreams=allowStreams,this.xref=xref,this.imageCache={length:0,adler32:0,stream:null},this.refill()
}return Parser.prototype={refill:function(){this.buf1=this.lexer.getObj(),this.buf2=this.lexer.getObj()},shift:function(){isCmd(this.buf2,"ID")?(this.buf1=this.buf2,this.buf2=null):(this.buf1=this.buf2,this.buf2=this.lexer.getObj())},getObj:function(cipherTransform){var buf1=this.buf1;if(this.shift(),buf1 instanceof Cmd)switch(buf1.cmd){case"BI":return this.makeInlineImage(cipherTransform);case"[":for(var array=[];!isCmd(this.buf1,"]")&&!isEOF(this.buf1);)array.push(this.getObj(cipherTransform));return isEOF(this.buf1)&&error("End of file inside array"),this.shift(),array;case"<<":for(var dict=new Dict(this.xref);!isCmd(this.buf1,">>")&&!isEOF(this.buf1);)if(isName(this.buf1)){var key=this.buf1.name;if(this.shift(),isEOF(this.buf1))break;dict.set(key,this.getObj(cipherTransform))}else info("Malformed dictionary: key must be a name object"),this.shift();return isEOF(this.buf1)&&error("End of file inside dictionary"),isCmd(this.buf2,"stream")?this.allowStreams?this.makeStream(dict,cipherTransform):dict:(this.shift(),dict);default:return buf1}if(isInt(buf1)){var num=buf1;if(isInt(this.buf1)&&isCmd(this.buf2,"R")){var ref=new Ref(num,this.buf1);return this.shift(),this.shift(),ref}return num}if(isString(buf1)){var str=buf1;return cipherTransform&&(str=cipherTransform.decryptString(str)),str}return buf1},makeInlineImage:function(cipherTransform){for(var lexer=this.lexer,stream=lexer.stream,dict=new Dict(null);!isCmd(this.buf1,"ID")&&!isEOF(this.buf1);){isName(this.buf1)||error("Dictionary key must be a name object");var key=this.buf1.name;if(this.shift(),isEOF(this.buf1))break;dict.set(key,this.getObj(cipherTransform))}for(var ch,i,ii,startPos=stream.pos,state=0,E=69,I=73,SPACE=32,NL=10,CR=13;-1!==(ch=stream.getByte());)if(0===state)state=ch===E?1:0;else if(1===state)state=ch===I?2:0;else if(assert(2===state),ch===SPACE||ch===NL||ch===CR){var n=5,followingBytes=stream.peekBytes(n);for(i=0;n>i;i++)if(ch=followingBytes[i],ch!==NL&&ch!==CR&&(SPACE>ch||ch>127)){state=0;break}if(2===state)break}else state=0;var adler32,length=stream.pos-4-startPos,imageStream=stream.makeSubStream(startPos,length,dict),MAX_LENGTH_TO_CACHE=1e3,cacheImage=!1;if(MAX_LENGTH_TO_CACHE>length&&this.imageCache.length===length){var imageBytes=imageStream.getBytes();imageStream.reset();var a=1,b=0;for(i=0,ii=imageBytes.length;ii>i;++i)a=(a+(255&imageBytes[i]))%65521,b=(b+a)%65521;if(adler32=b<<16|a,this.imageCache.stream&&this.imageCache.adler32===adler32)return this.buf2=Cmd.get("EI"),this.shift(),this.imageCache.stream.reset(),this.imageCache.stream;cacheImage=!0}return cacheImage||this.imageCache.stream||(this.imageCache.length=length,this.imageCache.stream=null),cipherTransform&&(imageStream=cipherTransform.createStream(imageStream,length)),imageStream=this.filter(imageStream,dict,length),imageStream.dict=dict,cacheImage&&(imageStream.cacheKey="inline_"+length+"_"+adler32,this.imageCache.adler32=adler32,this.imageCache.stream=imageStream),this.buf2=Cmd.get("EI"),this.shift(),imageStream},fetchIfRef:function(obj){return isRef(obj)?this.xref.fetch(obj):obj},makeStream:function(dict,cipherTransform){var lexer=this.lexer,stream=lexer.stream;lexer.skipToNextLine();var pos=stream.pos-1,length=this.fetchIfRef(dict.get("Length"));if(isInt(length)||(info("Bad "+length+" attribute in stream"),length=0),stream.pos=pos+length,lexer.nextChar(),this.shift(),this.shift(),!isCmd(this.buf1,"endstream")){stream.pos=pos;for(var i,j,SCAN_BLOCK_SIZE=2048,ENDSTREAM_SIGNATURE_LENGTH=9,ENDSTREAM_SIGNATURE=[101,110,100,115,116,114,101,97,109],skipped=0,found=!1;stream.pos<stream.end;){var scanBytes=stream.peekBytes(SCAN_BLOCK_SIZE),scanLength=scanBytes.length-ENDSTREAM_SIGNATURE_LENGTH;if(0>=scanLength)break;for(found=!1,i=0,j=0;scanLength>i;i++){var b=scanBytes[i];if(b!==ENDSTREAM_SIGNATURE[j])i-=j,j=0;else if(j++,j>=ENDSTREAM_SIGNATURE_LENGTH){i++,found=!0;break}}if(found){skipped+=i-ENDSTREAM_SIGNATURE_LENGTH,stream.pos+=i-ENDSTREAM_SIGNATURE_LENGTH;break}skipped+=scanLength,stream.pos+=scanLength}found||error("Missing endstream"),length=skipped,lexer.nextChar(),this.shift(),this.shift()}return this.shift(),stream=stream.makeSubStream(pos,length,dict),cipherTransform&&(stream=cipherTransform.createStream(stream,length)),stream=this.filter(stream,dict,length),stream.dict=dict,stream},filter:function(stream,dict,length){var filter=this.fetchIfRef(dict.get("Filter","F")),params=this.fetchIfRef(dict.get("DecodeParms","DP"));if(isName(filter))return this.makeFilter(stream,filter.name,length,params);var maybeLength=length;if(isArray(filter))for(var filterArray=filter,paramsArray=params,i=0,ii=filterArray.length;ii>i;++i)filter=filterArray[i],isName(filter)||error("Bad filter name: "+filter),params=null,isArray(paramsArray)&&i in paramsArray&&(params=paramsArray[i]),stream=this.makeFilter(stream,filter.name,maybeLength,params),maybeLength=null;return stream},makeFilter:function(stream,name,maybeLength,params){if(0===stream.dict.get("Length"))return new NullStream(stream);try{params&&(params=this.fetchIfRef(params));var xrefStreamStats=this.xref.stats.streamTypes;if("FlateDecode"===name||"Fl"===name)return xrefStreamStats[StreamType.FLATE]=!0,params?new PredictorStream(new FlateStream(stream,maybeLength),maybeLength,params):new FlateStream(stream,maybeLength);if("LZWDecode"===name||"LZW"===name){xrefStreamStats[StreamType.LZW]=!0;var earlyChange=1;return params?(params.has("EarlyChange")&&(earlyChange=params.get("EarlyChange")),new PredictorStream(new LZWStream(stream,maybeLength,earlyChange),maybeLength,params)):new LZWStream(stream,maybeLength,earlyChange)}if("DCTDecode"===name||"DCT"===name){if(isCmd(this.buf1,"ID")){var firstByte=stream.peekByte();(10===firstByte||13===firstByte||32===firstByte)&&stream.skip()}return xrefStreamStats[StreamType.DCT]=!0,new JpegStream(stream,maybeLength,stream.dict,this.xref)}return"JPXDecode"===name||"JPX"===name?(xrefStreamStats[StreamType.JPX]=!0,new JpxStream(stream,maybeLength,stream.dict)):"ASCII85Decode"===name||"A85"===name?(xrefStreamStats[StreamType.A85]=!0,new Ascii85Stream(stream,maybeLength)):"ASCIIHexDecode"===name||"AHx"===name?(xrefStreamStats[StreamType.AHX]=!0,new AsciiHexStream(stream,maybeLength)):"CCITTFaxDecode"===name||"CCF"===name?(xrefStreamStats[StreamType.CCF]=!0,new CCITTFaxStream(stream,maybeLength,params)):"RunLengthDecode"===name||"RL"===name?(xrefStreamStats[StreamType.RL]=!0,new RunLengthStream(stream,maybeLength)):"JBIG2Decode"===name?(xrefStreamStats[StreamType.JBIG]=!0,new Jbig2Stream(stream,maybeLength,stream.dict)):(warn('filter "'+name+'" not supported yet'),stream)}catch(ex){if(ex instanceof MissingDataException)throw ex;return warn('Invalid stream: "'+ex+'"'),new NullStream(stream)}}},Parser}(),Lexer=function(){function Lexer(stream,knownCommands){this.stream=stream,this.nextChar(),this.strBuf=[],this.knownCommands=knownCommands}function toHexDigit(ch){return ch>=48&&57>=ch?15&ch:ch>=65&&70>=ch||ch>=97&&102>=ch?(15&ch)+9:-1}Lexer.isSpace=function(ch){return 32===ch||9===ch||13===ch||10===ch};var specialChars=[1,0,0,0,0,0,0,0,0,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,2,0,0,2,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];return Lexer.prototype={nextChar:function(){return this.currentChar=this.stream.getByte()},peekChar:function(){return this.stream.peekByte()},getNumber:function(){var ch=this.currentChar,eNotation=!1,divideBy=0,sign=1;if(45===ch?(sign=-1,ch=this.nextChar()):43===ch&&(ch=this.nextChar()),46===ch&&(divideBy=10,ch=this.nextChar()),48>ch||ch>57)return error("Invalid number: "+String.fromCharCode(ch)),0;for(var baseValue=ch-48,powerValue=0,powerValueSign=1;(ch=this.nextChar())>=0;)if(ch>=48&&57>=ch){var currentDigit=ch-48;eNotation?powerValue=10*powerValue+currentDigit:(0!==divideBy&&(divideBy*=10),baseValue=10*baseValue+currentDigit)}else if(46===ch){if(0!==divideBy)break;divideBy=1}else if(45===ch)warn("Badly formated number");else{if(69!==ch&&101!==ch)break;if(ch=this.peekChar(),43===ch||45===ch)powerValueSign=45===ch?-1:1,this.nextChar();else if(48>ch||ch>57)break;eNotation=!0}return 0!==divideBy&&(baseValue/=divideBy),eNotation&&(baseValue*=Math.pow(10,powerValueSign*powerValue)),sign*baseValue},getString:function(){var numParen=1,done=!1,strBuf=this.strBuf;strBuf.length=0;for(var ch=this.nextChar();;){var charBuffered=!1;switch(0|ch){case-1:warn("Unterminated string"),done=!0;break;case 40:++numParen,strBuf.push("(");break;case 41:0===--numParen?(this.nextChar(),done=!0):strBuf.push(")");break;case 92:switch(ch=this.nextChar()){case-1:warn("Unterminated string"),done=!0;break;case 110:strBuf.push("\n");break;case 114:strBuf.push("\r");break;case 116:strBuf.push("	");break;case 98:strBuf.push("\b");break;case 102:strBuf.push("\f");break;case 92:case 40:case 41:strBuf.push(String.fromCharCode(ch));break;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:var x=15&ch;ch=this.nextChar(),charBuffered=!0,ch>=48&&55>=ch&&(x=(x<<3)+(15&ch),ch=this.nextChar(),ch>=48&&55>=ch&&(charBuffered=!1,x=(x<<3)+(15&ch))),strBuf.push(String.fromCharCode(x));break;case 13:10===this.peekChar()&&this.nextChar();break;case 10:break;default:strBuf.push(String.fromCharCode(ch))}break;default:strBuf.push(String.fromCharCode(ch))}if(done)break;charBuffered||(ch=this.nextChar())}return strBuf.join("")},getName:function(){var ch,strBuf=this.strBuf;for(strBuf.length=0;(ch=this.nextChar())>=0&&!specialChars[ch];)if(35===ch){ch=this.nextChar();var x=toHexDigit(ch);if(-1!==x){var x2=toHexDigit(this.nextChar());-1===x2&&error("Illegal digit in hex char in name: "+x2),strBuf.push(String.fromCharCode(x<<4|x2))}else strBuf.push("#",String.fromCharCode(ch))}else strBuf.push(String.fromCharCode(ch));return strBuf.length>128&&error("Warning: name token is longer than allowed by the spec: "+strBuf.length),Name.get(strBuf.join(""))},getHexString:function(){var strBuf=this.strBuf;strBuf.length=0;for(var firstDigit,secondDigit,ch=this.currentChar,isFirstHex=!0;;){if(0>ch){warn("Unterminated hex string");break}if(62===ch){this.nextChar();break}if(1!==specialChars[ch]){if(isFirstHex){if(firstDigit=toHexDigit(ch),-1===firstDigit){warn('Ignoring invalid character "'+ch+'" in hex string'),ch=this.nextChar();continue}}else{if(secondDigit=toHexDigit(ch),-1===secondDigit){warn('Ignoring invalid character "'+ch+'" in hex string'),ch=this.nextChar();continue}strBuf.push(String.fromCharCode(firstDigit<<4|secondDigit))}isFirstHex=!isFirstHex,ch=this.nextChar()}else ch=this.nextChar()}return strBuf.join("")},getObj:function(){for(var comment=!1,ch=this.currentChar;;){if(0>ch)return EOF;if(comment)(10===ch||13===ch)&&(comment=!1);else if(37===ch)comment=!0;else if(1!==specialChars[ch])break;ch=this.nextChar()}switch(0|ch){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 43:case 45:case 46:return this.getNumber();case 40:return this.getString();case 47:return this.getName();case 91:return this.nextChar(),Cmd.get("[");case 93:return this.nextChar(),Cmd.get("]");case 60:return ch=this.nextChar(),60===ch?(this.nextChar(),Cmd.get("<<")):this.getHexString();case 62:return ch=this.nextChar(),62===ch?(this.nextChar(),Cmd.get(">>")):Cmd.get(">");case 123:return this.nextChar(),Cmd.get("{");case 125:return this.nextChar(),Cmd.get("}");case 41:error("Illegal character: "+ch)}for(var str=String.fromCharCode(ch),knownCommands=this.knownCommands,knownCommandFound=knownCommands&&void 0!==knownCommands[str];(ch=this.nextChar())>=0&&!specialChars[ch];){var possibleCommand=str+String.fromCharCode(ch);if(knownCommandFound&&void 0===knownCommands[possibleCommand])break;128===str.length&&error("Command token too long: "+str.length),str=possibleCommand,knownCommandFound=knownCommands&&void 0!==knownCommands[str]}return"true"===str?!0:"false"===str?!1:"null"===str?null:Cmd.get(str)},skipToNextLine:function(){for(var ch=this.currentChar;ch>=0;){if(13===ch){ch=this.nextChar(),10===ch&&this.nextChar();break}if(10===ch){this.nextChar();break}ch=this.nextChar()}}},Lexer}(),Linearization={create:function(stream){function getInt(name,allowZeroValue){var obj=linDict.get(name);if(isInt(obj)&&(allowZeroValue?obj>=0:obj>0))return obj;throw new Error('The "'+name+'" parameter in the linearization dictionary is invalid.')}function getHints(){var hintsLength,item,hints=linDict.get("H");if(isArray(hints)&&(2===(hintsLength=hints.length)||4===hintsLength)){for(var index=0;hintsLength>index;index++)if(!(isInt(item=hints[index])&&item>0))throw new Error("Hint ("+index+") in the linearization dictionary is invalid.");return hints}throw new Error("Hint array in the linearization dictionary is invalid.")}var obj,length,parser=new Parser(new Lexer(stream),!1,null),obj1=parser.getObj(),obj2=parser.getObj(),obj3=parser.getObj(),linDict=parser.getObj();if(!(isInt(obj1)&&isInt(obj2)&&isCmd(obj3,"obj")&&isDict(linDict)&&isNum(obj=linDict.get("Linearized"))&&obj>0))return null;if((length=getInt("L"))!==stream.length)throw new Error('The "L" parameter in the linearization dictionary does not equal the stream length.');return{length:length,hints:getHints(),objectNumberFirst:getInt("O"),endFirst:getInt("E"),numPages:getInt("N"),mainXRefEntriesOffset:getInt("T"),pageFirst:linDict.has("P")?getInt("P",!0):0}}},PostScriptParser=function(){function PostScriptParser(lexer){this.lexer=lexer,this.operators=[],this.token=null,this.prev=null}return PostScriptParser.prototype={nextToken:function(){this.prev=this.token,this.token=this.lexer.getToken()},accept:function(type){return this.token.type===type?(this.nextToken(),!0):!1},expect:function(type){return this.accept(type)?!0:void error("Unexpected symbol: found "+this.token.type+" expected "+type+".")},parse:function(){return this.nextToken(),this.expect(PostScriptTokenTypes.LBRACE),this.parseBlock(),this.expect(PostScriptTokenTypes.RBRACE),this.operators},parseBlock:function(){for(;;)if(this.accept(PostScriptTokenTypes.NUMBER))this.operators.push(this.prev.value);else if(this.accept(PostScriptTokenTypes.OPERATOR))this.operators.push(this.prev.value);else{if(!this.accept(PostScriptTokenTypes.LBRACE))return;this.parseCondition()}},parseCondition:function(){var conditionLocation=this.operators.length;if(this.operators.push(null,null),this.parseBlock(),this.expect(PostScriptTokenTypes.RBRACE),this.accept(PostScriptTokenTypes.IF))this.operators[conditionLocation]=this.operators.length,this.operators[conditionLocation+1]="jz";else if(this.accept(PostScriptTokenTypes.LBRACE)){var jumpLocation=this.operators.length;this.operators.push(null,null);var endOfTrue=this.operators.length;this.parseBlock(),this.expect(PostScriptTokenTypes.RBRACE),this.expect(PostScriptTokenTypes.IFELSE),this.operators[jumpLocation]=this.operators.length,this.operators[jumpLocation+1]="j",this.operators[conditionLocation]=endOfTrue,this.operators[conditionLocation+1]="jz"}else error("PS Function: error parsing conditional.")}},PostScriptParser}(),PostScriptTokenTypes={LBRACE:0,RBRACE:1,NUMBER:2,OPERATOR:3,IF:4,IFELSE:5},PostScriptToken=function(){function PostScriptToken(type,value){this.type=type,this.value=value}var opCache={};return PostScriptToken.getOperator=function(op){var opValue=opCache[op];return opValue?opValue:opCache[op]=new PostScriptToken(PostScriptTokenTypes.OPERATOR,op)},PostScriptToken.LBRACE=new PostScriptToken(PostScriptTokenTypes.LBRACE,"{"),PostScriptToken.RBRACE=new PostScriptToken(PostScriptTokenTypes.RBRACE,"}"),PostScriptToken.IF=new PostScriptToken(PostScriptTokenTypes.IF,"IF"),PostScriptToken.IFELSE=new PostScriptToken(PostScriptTokenTypes.IFELSE,"IFELSE"),PostScriptToken}(),PostScriptLexer=function(){function PostScriptLexer(stream){this.stream=stream,this.nextChar(),this.strBuf=[]}return PostScriptLexer.prototype={nextChar:function(){return this.currentChar=this.stream.getByte()},getToken:function(){for(var comment=!1,ch=this.currentChar;;){if(0>ch)return EOF;if(comment)(10===ch||13===ch)&&(comment=!1);else if(37===ch)comment=!0;else if(!Lexer.isSpace(ch))break;ch=this.nextChar()}switch(0|ch){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 43:case 45:case 46:return new PostScriptToken(PostScriptTokenTypes.NUMBER,this.getNumber());case 123:return this.nextChar(),PostScriptToken.LBRACE;case 125:return this.nextChar(),PostScriptToken.RBRACE}var strBuf=this.strBuf;for(strBuf.length=0,strBuf[0]=String.fromCharCode(ch);(ch=this.nextChar())>=0&&(ch>=65&&90>=ch||ch>=97&&122>=ch);)strBuf.push(String.fromCharCode(ch));var str=strBuf.join("");switch(str.toLowerCase()){case"if":return PostScriptToken.IF;case"ifelse":return PostScriptToken.IFELSE;default:return PostScriptToken.getOperator(str)}},getNumber:function(){var ch=this.currentChar,strBuf=this.strBuf;for(strBuf.length=0,strBuf[0]=String.fromCharCode(ch);(ch=this.nextChar())>=0&&(ch>=48&&57>=ch||45===ch||46===ch);)strBuf.push(String.fromCharCode(ch));var value=parseFloat(strBuf.join(""));return isNaN(value)&&error("Invalid floating point number: "+value),value}},PostScriptLexer}(),Stream=function(){function Stream(arrayBuffer,start,length,dict){this.bytes=arrayBuffer instanceof Uint8Array?arrayBuffer:new Uint8Array(arrayBuffer),this.start=start||0,this.pos=this.start,this.end=start+length||this.bytes.length,this.dict=dict}return Stream.prototype={get length(){return this.end-this.start},get isEmpty(){return 0===this.length},getByte:function(){return this.pos>=this.end?-1:this.bytes[this.pos++]},getUint16:function(){var b0=this.getByte(),b1=this.getByte();return(b0<<8)+b1},getInt32:function(){var b0=this.getByte(),b1=this.getByte(),b2=this.getByte(),b3=this.getByte();return(b0<<24)+(b1<<16)+(b2<<8)+b3},getBytes:function(length){var bytes=this.bytes,pos=this.pos,strEnd=this.end;if(!length)return bytes.subarray(pos,strEnd);var end=pos+length;return end>strEnd&&(end=strEnd),this.pos=end,bytes.subarray(pos,end)},peekByte:function(){var peekedByte=this.getByte();return this.pos--,peekedByte},peekBytes:function(length){var bytes=this.getBytes(length);return this.pos-=bytes.length,bytes},skip:function(n){n||(n=1),this.pos+=n},reset:function(){this.pos=this.start},moveStart:function(){this.start=this.pos},makeSubStream:function(start,length,dict){return new Stream(this.bytes.buffer,start,length,dict)},isStream:!0},Stream}(),StringStream=function(){function StringStream(str){for(var length=str.length,bytes=new Uint8Array(length),n=0;length>n;++n)bytes[n]=str.charCodeAt(n);Stream.call(this,bytes)}return StringStream.prototype=Stream.prototype,StringStream}(),DecodeStream=function(){function DecodeStream(maybeMinBufferLength){if(this.pos=0,this.bufferLength=0,this.eof=!1,this.buffer=emptyBuffer,this.minBufferLength=512,maybeMinBufferLength)for(;this.minBufferLength<maybeMinBufferLength;)this.minBufferLength*=2}var emptyBuffer=new Uint8Array(0);return DecodeStream.prototype={get isEmpty(){for(;!this.eof&&0===this.bufferLength;)this.readBlock();return 0===this.bufferLength},ensureBuffer:function(requested){var buffer=this.buffer;if(requested<=buffer.byteLength)return buffer;for(var size=this.minBufferLength;requested>size;)size*=2;var buffer2=new Uint8Array(size);return buffer2.set(buffer),this.buffer=buffer2},getByte:function(){for(var pos=this.pos;this.bufferLength<=pos;){if(this.eof)return-1;this.readBlock()}return this.buffer[this.pos++]},getUint16:function(){var b0=this.getByte(),b1=this.getByte();return(b0<<8)+b1},getInt32:function(){var b0=this.getByte(),b1=this.getByte(),b2=this.getByte(),b3=this.getByte();return(b0<<24)+(b1<<16)+(b2<<8)+b3},getBytes:function(length){var end,pos=this.pos;if(length){for(this.ensureBuffer(pos+length),end=pos+length;!this.eof&&this.bufferLength<end;)this.readBlock();var bufEnd=this.bufferLength;end>bufEnd&&(end=bufEnd)}else{for(;!this.eof;)this.readBlock();end=this.bufferLength}return this.pos=end,this.buffer.subarray(pos,end)},peekByte:function(){var peekedByte=this.getByte();return this.pos--,peekedByte},peekBytes:function(length){var bytes=this.getBytes(length);return this.pos-=bytes.length,bytes},makeSubStream:function(start,length,dict){for(var end=start+length;this.bufferLength<=end&&!this.eof;)this.readBlock();return new Stream(this.buffer,start,length,dict)},skip:function(n){n||(n=1),this.pos+=n},reset:function(){this.pos=0},getBaseStreams:function(){return this.str&&this.str.getBaseStreams?this.str.getBaseStreams():[]}},DecodeStream}(),StreamsSequenceStream=function(){function StreamsSequenceStream(streams){this.streams=streams,DecodeStream.call(this,null)}return StreamsSequenceStream.prototype=Object.create(DecodeStream.prototype),StreamsSequenceStream.prototype.readBlock=function(){var streams=this.streams;if(0===streams.length)return void(this.eof=!0);var stream=streams.shift(),chunk=stream.getBytes(),bufferLength=this.bufferLength,newLength=bufferLength+chunk.length,buffer=this.ensureBuffer(newLength);buffer.set(chunk,bufferLength),this.bufferLength=newLength},StreamsSequenceStream.prototype.getBaseStreams=function(){for(var baseStreams=[],i=0,ii=this.streams.length;ii>i;i++){var stream=this.streams[i];stream.getBaseStreams&&Util.appendToArray(baseStreams,stream.getBaseStreams())}return baseStreams},StreamsSequenceStream}(),FlateStream=function(){function FlateStream(str,maybeLength){this.str=str,this.dict=str.dict;var cmf=str.getByte(),flg=str.getByte();(-1===cmf||-1===flg)&&error("Invalid header in flate stream: "+cmf+", "+flg),8!==(15&cmf)&&error("Unknown compression method in flate stream: "+cmf+", "+flg),((cmf<<8)+flg)%31!==0&&error("Bad FCHECK in flate stream: "+cmf+", "+flg),32&flg&&error("FDICT bit set in flate stream: "+cmf+", "+flg),this.codeSize=0,this.codeBuf=0,DecodeStream.call(this,maybeLength)}var codeLenCodeMap=new Uint32Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),lengthDecode=new Uint32Array([3,4,5,6,7,8,9,10,65547,65549,65551,65553,131091,131095,131099,131103,196643,196651,196659,196667,262211,262227,262243,262259,327811,327843,327875,327907,258,258,258]),distDecode=new Uint32Array([1,2,3,4,65541,65543,131081,131085,196625,196633,262177,262193,327745,327777,393345,393409,459009,459137,524801,525057,590849,591361,657409,658433,724993,727041,794625,798721,868353,876545]),fixedLitCodeTab=[new Uint32Array([459008,524368,524304,524568,459024,524400,524336,590016,459016,524384,524320,589984,524288,524416,524352,590048,459012,524376,524312,589968,459028,524408,524344,590032,459020,524392,524328,59e4,524296,524424,524360,590064,459010,524372,524308,524572,459026,524404,524340,590024,459018,524388,524324,589992,524292,524420,524356,590056,459014,524380,524316,589976,459030,524412,524348,590040,459022,524396,524332,590008,524300,524428,524364,590072,459009,524370,524306,524570,459025,524402,524338,590020,459017,524386,524322,589988,524290,524418,524354,590052,459013,524378,524314,589972,459029,524410,524346,590036,459021,524394,524330,590004,524298,524426,524362,590068,459011,524374,524310,524574,459027,524406,524342,590028,459019,524390,524326,589996,524294,524422,524358,590060,459015,524382,524318,589980,459031,524414,524350,590044,459023,524398,524334,590012,524302,524430,524366,590076,459008,524369,524305,524569,459024,524401,524337,590018,459016,524385,524321,589986,524289,524417,524353,590050,459012,524377,524313,589970,459028,524409,524345,590034,459020,524393,524329,590002,524297,524425,524361,590066,459010,524373,524309,524573,459026,524405,524341,590026,459018,524389,524325,589994,524293,524421,524357,590058,459014,524381,524317,589978,459030,524413,524349,590042,459022,524397,524333,590010,524301,524429,524365,590074,459009,524371,524307,524571,459025,524403,524339,590022,459017,524387,524323,589990,524291,524419,524355,590054,459013,524379,524315,589974,459029,524411,524347,590038,459021,524395,524331,590006,524299,524427,524363,590070,459011,524375,524311,524575,459027,524407,524343,590030,459019,524391,524327,589998,524295,524423,524359,590062,459015,524383,524319,589982,459031,524415,524351,590046,459023,524399,524335,590014,524303,524431,524367,590078,459008,524368,524304,524568,459024,524400,524336,590017,459016,524384,524320,589985,524288,524416,524352,590049,459012,524376,524312,589969,459028,524408,524344,590033,459020,524392,524328,590001,524296,524424,524360,590065,459010,524372,524308,524572,459026,524404,524340,590025,459018,524388,524324,589993,524292,524420,524356,590057,459014,524380,524316,589977,459030,524412,524348,590041,459022,524396,524332,590009,524300,524428,524364,590073,459009,524370,524306,524570,459025,524402,524338,590021,459017,524386,524322,589989,524290,524418,524354,590053,459013,524378,524314,589973,459029,524410,524346,590037,459021,524394,524330,590005,524298,524426,524362,590069,459011,524374,524310,524574,459027,524406,524342,590029,459019,524390,524326,589997,524294,524422,524358,590061,459015,524382,524318,589981,459031,524414,524350,590045,459023,524398,524334,590013,524302,524430,524366,590077,459008,524369,524305,524569,459024,524401,524337,590019,459016,524385,524321,589987,524289,524417,524353,590051,459012,524377,524313,589971,459028,524409,524345,590035,459020,524393,524329,590003,524297,524425,524361,590067,459010,524373,524309,524573,459026,524405,524341,590027,459018,524389,524325,589995,524293,524421,524357,590059,459014,524381,524317,589979,459030,524413,524349,590043,459022,524397,524333,590011,524301,524429,524365,590075,459009,524371,524307,524571,459025,524403,524339,590023,459017,524387,524323,589991,524291,524419,524355,590055,459013,524379,524315,589975,459029,524411,524347,590039,459021,524395,524331,590007,524299,524427,524363,590071,459011,524375,524311,524575,459027,524407,524343,590031,459019,524391,524327,589999,524295,524423,524359,590063,459015,524383,524319,589983,459031,524415,524351,590047,459023,524399,524335,590015,524303,524431,524367,590079]),9],fixedDistCodeTab=[new Uint32Array([327680,327696,327688,327704,327684,327700,327692,327708,327682,327698,327690,327706,327686,327702,327694,0,327681,327697,327689,327705,327685,327701,327693,327709,327683,327699,327691,327707,327687,327703,327695,0]),5];return FlateStream.prototype=Object.create(DecodeStream.prototype),FlateStream.prototype.getBits=function(bits){for(var b,str=this.str,codeSize=this.codeSize,codeBuf=this.codeBuf;bits>codeSize;)-1===(b=str.getByte())&&error("Bad encoding in flate stream"),codeBuf|=b<<codeSize,codeSize+=8;return b=codeBuf&(1<<bits)-1,this.codeBuf=codeBuf>>bits,this.codeSize=codeSize-=bits,b},FlateStream.prototype.getCode=function(table){for(var b,str=this.str,codes=table[0],maxLen=table[1],codeSize=this.codeSize,codeBuf=this.codeBuf;maxLen>codeSize&&-1!==(b=str.getByte());)codeBuf|=b<<codeSize,codeSize+=8;var code=codes[codeBuf&(1<<maxLen)-1],codeLen=code>>16,codeVal=65535&code;return(1>codeLen||codeLen>codeSize)&&error("Bad encoding in flate stream"),this.codeBuf=codeBuf>>codeLen,this.codeSize=codeSize-codeLen,codeVal},FlateStream.prototype.generateHuffmanTable=function(lengths){var i,n=lengths.length,maxLen=0;for(i=0;n>i;++i)lengths[i]>maxLen&&(maxLen=lengths[i]);for(var size=1<<maxLen,codes=new Uint32Array(size),len=1,code=0,skip=2;maxLen>=len;++len,code<<=1,skip<<=1)for(var val=0;n>val;++val)if(lengths[val]===len){var code2=0,t=code;for(i=0;len>i;++i)code2=code2<<1|1&t,t>>=1;for(i=code2;size>i;i+=skip)codes[i]=len<<16|val;++code}return[codes,maxLen]},FlateStream.prototype.readBlock=function(){var buffer,len,str=this.str,hdr=this.getBits(3);if(1&hdr&&(this.eof=!0),hdr>>=1,0!==hdr){var litCodeTable,distCodeTable;if(1===hdr)litCodeTable=fixedLitCodeTab,distCodeTable=fixedDistCodeTab;else if(2===hdr){var i,numLitCodes=this.getBits(5)+257,numDistCodes=this.getBits(5)+1,numCodeLenCodes=this.getBits(4)+4,codeLenCodeLengths=new Uint8Array(codeLenCodeMap.length);for(i=0;numCodeLenCodes>i;++i)codeLenCodeLengths[codeLenCodeMap[i]]=this.getBits(3);var codeLenCodeTab=this.generateHuffmanTable(codeLenCodeLengths);len=0,i=0;for(var bitsLength,bitsOffset,what,codes=numLitCodes+numDistCodes,codeLengths=new Uint8Array(codes);codes>i;){var code=this.getCode(codeLenCodeTab);if(16===code)bitsLength=2,bitsOffset=3,what=len;else if(17===code)bitsLength=3,bitsOffset=3,what=len=0;else{if(18!==code){codeLengths[i++]=len=code;continue}bitsLength=7,bitsOffset=11,what=len=0}for(var repeatLength=this.getBits(bitsLength)+bitsOffset;repeatLength-->0;)codeLengths[i++]=what}litCodeTable=this.generateHuffmanTable(codeLengths.subarray(0,numLitCodes)),distCodeTable=this.generateHuffmanTable(codeLengths.subarray(numLitCodes,codes))}else error("Unknown block type in flate stream");buffer=this.buffer;for(var limit=buffer?buffer.length:0,pos=this.bufferLength;;){var code1=this.getCode(litCodeTable);if(256>code1)pos+1>=limit&&(buffer=this.ensureBuffer(pos+1),limit=buffer.length),buffer[pos++]=code1;else{if(256===code1)return void(this.bufferLength=pos);code1-=257,code1=lengthDecode[code1];var code2=code1>>16;code2>0&&(code2=this.getBits(code2)),len=(65535&code1)+code2,code1=this.getCode(distCodeTable),code1=distDecode[code1],code2=code1>>16,code2>0&&(code2=this.getBits(code2));var dist=(65535&code1)+code2;pos+len>=limit&&(buffer=this.ensureBuffer(pos+len),limit=buffer.length);for(var k=0;len>k;++k,++pos)buffer[pos]=buffer[pos-dist]}}}else{var b;-1===(b=str.getByte())&&error("Bad block header in flate stream");var blockLen=b;-1===(b=str.getByte())&&error("Bad block header in flate stream"),blockLen|=b<<8,-1===(b=str.getByte())&&error("Bad block header in flate stream");var check=b;-1===(b=str.getByte())&&error("Bad block header in flate stream"),check|=b<<8,check===(65535&~blockLen)||0===blockLen&&0===check||error("Bad uncompressed block length in flate stream"),this.codeBuf=0,this.codeSize=0;var bufferLength=this.bufferLength;buffer=this.ensureBuffer(bufferLength+blockLen);var end=bufferLength+blockLen;if(this.bufferLength=end,0===blockLen)-1===str.peekByte()&&(this.eof=!0);else for(var n=bufferLength;end>n;++n){if(-1===(b=str.getByte())){this.eof=!0;break}buffer[n]=b}}},FlateStream}(),PredictorStream=function(){function PredictorStream(str,maybeLength,params){var predictor=this.predictor=params.get("Predictor")||1;if(1>=predictor)return str;2!==predictor&&(10>predictor||predictor>15)&&error("Unsupported predictor: "+predictor),this.readBlock=2===predictor?this.readBlockTiff:this.readBlockPng,this.str=str,this.dict=str.dict;var colors=this.colors=params.get("Colors")||1,bits=this.bits=params.get("BitsPerComponent")||8,columns=this.columns=params.get("Columns")||1;return this.pixBytes=colors*bits+7>>3,this.rowBytes=columns*colors*bits+7>>3,DecodeStream.call(this,maybeLength),this}return PredictorStream.prototype=Object.create(DecodeStream.prototype),PredictorStream.prototype.readBlockTiff=function(){var rowBytes=this.rowBytes,bufferLength=this.bufferLength,buffer=this.ensureBuffer(bufferLength+rowBytes),bits=this.bits,colors=this.colors,rawBytes=this.str.getBytes(rowBytes);if(this.eof=!rawBytes.length,!this.eof){var i,inbuf=0,outbuf=0,inbits=0,outbits=0,pos=bufferLength;if(1===bits)for(i=0;rowBytes>i;++i){var c=rawBytes[i];inbuf=inbuf<<8|c,buffer[pos++]=255&(c^inbuf>>colors),inbuf&=65535}else if(8===bits){for(i=0;colors>i;++i)buffer[pos++]=rawBytes[i];for(;rowBytes>i;++i)buffer[pos]=buffer[pos-colors]+rawBytes[i],pos++}else{var compArray=new Uint8Array(colors+1),bitMask=(1<<bits)-1,j=0,k=bufferLength,columns=this.columns;for(i=0;columns>i;++i)for(var kk=0;colors>kk;++kk)bits>inbits&&(inbuf=inbuf<<8|255&rawBytes[j++],inbits+=8),compArray[kk]=compArray[kk]+(inbuf>>inbits-bits)&bitMask,inbits-=bits,outbuf=outbuf<<bits|compArray[kk],outbits+=bits,outbits>=8&&(buffer[k++]=outbuf>>outbits-8&255,outbits-=8);outbits>0&&(buffer[k++]=(outbuf<<8-outbits)+(inbuf&(1<<8-outbits)-1))
}this.bufferLength+=rowBytes}},PredictorStream.prototype.readBlockPng=function(){var rowBytes=this.rowBytes,pixBytes=this.pixBytes,predictor=this.str.getByte(),rawBytes=this.str.getBytes(rowBytes);if(this.eof=!rawBytes.length,!this.eof){var bufferLength=this.bufferLength,buffer=this.ensureBuffer(bufferLength+rowBytes),prevRow=buffer.subarray(bufferLength-rowBytes,bufferLength);0===prevRow.length&&(prevRow=new Uint8Array(rowBytes));var i,up,c,j=bufferLength;switch(predictor){case 0:for(i=0;rowBytes>i;++i)buffer[j++]=rawBytes[i];break;case 1:for(i=0;pixBytes>i;++i)buffer[j++]=rawBytes[i];for(;rowBytes>i;++i)buffer[j]=buffer[j-pixBytes]+rawBytes[i]&255,j++;break;case 2:for(i=0;rowBytes>i;++i)buffer[j++]=prevRow[i]+rawBytes[i]&255;break;case 3:for(i=0;pixBytes>i;++i)buffer[j++]=(prevRow[i]>>1)+rawBytes[i];for(;rowBytes>i;++i)buffer[j]=(prevRow[i]+buffer[j-pixBytes]>>1)+rawBytes[i]&255,j++;break;case 4:for(i=0;pixBytes>i;++i)up=prevRow[i],c=rawBytes[i],buffer[j++]=up+c;for(;rowBytes>i;++i){up=prevRow[i];var upLeft=prevRow[i-pixBytes],left=buffer[j-pixBytes],p=left+up-upLeft,pa=p-left;0>pa&&(pa=-pa);var pb=p-up;0>pb&&(pb=-pb);var pc=p-upLeft;0>pc&&(pc=-pc),c=rawBytes[i],buffer[j++]=pb>=pa&&pc>=pa?left+c:pc>=pb?up+c:upLeft+c}break;default:error("Unsupported predictor: "+predictor)}this.bufferLength+=rowBytes}},PredictorStream}(),JpegStream=function(){function JpegStream(stream,maybeLength,dict){this.stream=stream,this.maybeLength=maybeLength,this.dict=dict,DecodeStream.call(this,maybeLength)}return JpegStream.prototype=Object.create(DecodeStream.prototype),Object.defineProperty(JpegStream.prototype,"bytes",{get:function(){return shadow(this,"bytes",this.stream.getBytes(this.maybeLength))},configurable:!0}),JpegStream.prototype.ensureBuffer=function(){if(!this.bufferLength)try{var jpegImage=new JpegImage;if(this.dict&&isArray(this.dict.get("Decode"))){for(var decodeArr=this.dict.get("Decode"),bitsPerComponent=this.dict.get("BitsPerComponent")||8,decodeArrLength=decodeArr.length,transform=new Int32Array(decodeArrLength),transformNeeded=!1,maxValue=(1<<bitsPerComponent)-1,i=0;decodeArrLength>i;i+=2)transform[i]=256*(decodeArr[i+1]-decodeArr[i])|0,transform[i+1]=decodeArr[i]*maxValue|0,(256!==transform[i]||0!==transform[i+1])&&(transformNeeded=!0);transformNeeded&&(jpegImage.decodeTransform=transform)}jpegImage.parse(this.bytes);var data=jpegImage.getData(this.drawWidth,this.drawHeight,this.forceRGB);this.buffer=data,this.bufferLength=data.length,this.eof=!0}catch(e){error("JPEG error: "+e)}},JpegStream.prototype.getBytes=function(){return this.ensureBuffer(),this.buffer},JpegStream.prototype.getIR=function(){return PDFJS.createObjectURL(this.bytes,"image/jpeg")},JpegStream.prototype.isNativelySupported=function(xref,res){var cs=ColorSpace.parse(this.dict.get("ColorSpace","CS"),xref,res);return"DeviceGray"===cs.name||"DeviceRGB"===cs.name},JpegStream.prototype.isNativelyDecodable=function(xref,res){var cs=ColorSpace.parse(this.dict.get("ColorSpace","CS"),xref,res),numComps=cs.numComps;return 1===numComps||3===numComps},JpegStream}(),JpxStream=function(){function JpxStream(stream,maybeLength,dict){this.stream=stream,this.maybeLength=maybeLength,this.dict=dict,DecodeStream.call(this,maybeLength)}return JpxStream.prototype=Object.create(DecodeStream.prototype),Object.defineProperty(JpxStream.prototype,"bytes",{get:function(){return shadow(this,"bytes",this.stream.getBytes(this.maybeLength))},configurable:!0}),JpxStream.prototype.ensureBuffer=function(){if(!this.bufferLength){var jpxImage=new JpxImage;jpxImage.parse(this.bytes);var width=jpxImage.width,height=jpxImage.height,componentsCount=jpxImage.componentsCount,tileCount=jpxImage.tiles.length;if(1===tileCount)this.buffer=jpxImage.tiles[0].items;else{for(var data=new Uint8Array(width*height*componentsCount),k=0;tileCount>k;k++)for(var tileComponents=jpxImage.tiles[k],tileWidth=tileComponents.width,tileHeight=tileComponents.height,tileLeft=tileComponents.left,tileTop=tileComponents.top,src=tileComponents.items,srcPosition=0,dataPosition=(width*tileTop+tileLeft)*componentsCount,imgRowSize=width*componentsCount,tileRowSize=tileWidth*componentsCount,j=0;tileHeight>j;j++){var rowBytes=src.subarray(srcPosition,srcPosition+tileRowSize);data.set(rowBytes,dataPosition),srcPosition+=tileRowSize,dataPosition+=imgRowSize}this.buffer=data}this.bufferLength=this.buffer.length,this.eof=!0}},JpxStream}(),Jbig2Stream=function(){function Jbig2Stream(stream,maybeLength,dict){this.stream=stream,this.maybeLength=maybeLength,this.dict=dict,DecodeStream.call(this,maybeLength)}return Jbig2Stream.prototype=Object.create(DecodeStream.prototype),Object.defineProperty(Jbig2Stream.prototype,"bytes",{get:function(){return shadow(this,"bytes",this.stream.getBytes(this.maybeLength))},configurable:!0}),Jbig2Stream.prototype.ensureBuffer=function(){if(!this.bufferLength){var jbig2Image=new Jbig2Image,chunks=[],xref=this.dict.xref,decodeParams=xref.fetchIfRef(this.dict.get("DecodeParms"));if(isArray(decodeParams)&&(decodeParams.length>1&&warn("JBIG2 - 'DecodeParms' array with multiple elements not supported."),decodeParams=xref.fetchIfRef(decodeParams[0])),decodeParams&&decodeParams.has("JBIG2Globals")){var globalsStream=decodeParams.get("JBIG2Globals"),globals=globalsStream.getBytes();chunks.push({data:globals,start:0,end:globals.length})}chunks.push({data:this.bytes,start:0,end:this.bytes.length});for(var data=jbig2Image.parseChunks(chunks),dataLength=data.length,i=0;dataLength>i;i++)data[i]^=255;this.buffer=data,this.bufferLength=dataLength,this.eof=!0}},Jbig2Stream}(),DecryptStream=function(){function DecryptStream(str,maybeLength,decrypt){this.str=str,this.dict=str.dict,this.decrypt=decrypt,this.nextChunk=null,this.initialized=!1,DecodeStream.call(this,maybeLength)}var chunkSize=512;return DecryptStream.prototype=Object.create(DecodeStream.prototype),DecryptStream.prototype.readBlock=function(){var chunk;if(this.initialized?chunk=this.nextChunk:(chunk=this.str.getBytes(chunkSize),this.initialized=!0),!chunk||0===chunk.length)return void(this.eof=!0);this.nextChunk=this.str.getBytes(chunkSize);var hasMoreData=this.nextChunk&&this.nextChunk.length>0,decrypt=this.decrypt;chunk=decrypt(chunk,!hasMoreData);var i,bufferLength=this.bufferLength,n=chunk.length,buffer=this.ensureBuffer(bufferLength+n);for(i=0;n>i;i++)buffer[bufferLength++]=chunk[i];this.bufferLength=bufferLength},DecryptStream}(),Ascii85Stream=function(){function Ascii85Stream(str,maybeLength){this.str=str,this.dict=str.dict,this.input=new Uint8Array(5),maybeLength&&(maybeLength=.8*maybeLength),DecodeStream.call(this,maybeLength)}return Ascii85Stream.prototype=Object.create(DecodeStream.prototype),Ascii85Stream.prototype.readBlock=function(){for(var TILDA_CHAR=126,Z_LOWER_CHAR=122,EOF=-1,str=this.str,c=str.getByte();Lexer.isSpace(c);)c=str.getByte();if(c===EOF||c===TILDA_CHAR)return void(this.eof=!0);var buffer,i,bufferLength=this.bufferLength;if(c===Z_LOWER_CHAR){for(buffer=this.ensureBuffer(bufferLength+4),i=0;4>i;++i)buffer[bufferLength+i]=0;this.bufferLength+=4}else{var input=this.input;for(input[0]=c,i=1;5>i;++i){for(c=str.getByte();Lexer.isSpace(c);)c=str.getByte();if(input[i]=c,c===EOF||c===TILDA_CHAR)break}if(buffer=this.ensureBuffer(bufferLength+i-1),this.bufferLength+=i-1,5>i){for(;5>i;++i)input[i]=117;this.eof=!0}var t=0;for(i=0;5>i;++i)t=85*t+(input[i]-33);for(i=3;i>=0;--i)buffer[bufferLength+i]=255&t,t>>=8}},Ascii85Stream}(),AsciiHexStream=function(){function AsciiHexStream(str,maybeLength){this.str=str,this.dict=str.dict,this.firstDigit=-1,maybeLength&&(maybeLength=.5*maybeLength),DecodeStream.call(this,maybeLength)}return AsciiHexStream.prototype=Object.create(DecodeStream.prototype),AsciiHexStream.prototype.readBlock=function(){var UPSTREAM_BLOCK_SIZE=8e3,bytes=this.str.getBytes(UPSTREAM_BLOCK_SIZE);if(!bytes.length)return void(this.eof=!0);for(var maxDecodeLength=bytes.length+1>>1,buffer=this.ensureBuffer(this.bufferLength+maxDecodeLength),bufferLength=this.bufferLength,firstDigit=this.firstDigit,i=0,ii=bytes.length;ii>i;i++){var digit,ch=bytes[i];if(ch>=48&&57>=ch)digit=15&ch;else{if(!(ch>=65&&70>=ch||ch>=97&&102>=ch)){if(62===ch){this.eof=!0;break}continue}digit=(15&ch)+9}0>firstDigit?firstDigit=digit:(buffer[bufferLength++]=firstDigit<<4|digit,firstDigit=-1)}firstDigit>=0&&this.eof&&(buffer[bufferLength++]=firstDigit<<4,firstDigit=-1),this.firstDigit=firstDigit,this.bufferLength=bufferLength},AsciiHexStream}(),RunLengthStream=function(){function RunLengthStream(str,maybeLength){this.str=str,this.dict=str.dict,DecodeStream.call(this,maybeLength)}return RunLengthStream.prototype=Object.create(DecodeStream.prototype),RunLengthStream.prototype.readBlock=function(){var repeatHeader=this.str.getBytes(2);if(!repeatHeader||repeatHeader.length<2||128===repeatHeader[0])return void(this.eof=!0);var buffer,bufferLength=this.bufferLength,n=repeatHeader[0];if(128>n){if(buffer=this.ensureBuffer(bufferLength+n+1),buffer[bufferLength++]=repeatHeader[1],n>0){var source=this.str.getBytes(n);buffer.set(source,bufferLength),bufferLength+=n}}else{n=257-n;var b=repeatHeader[1];buffer=this.ensureBuffer(bufferLength+n+1);for(var i=0;n>i;i++)buffer[bufferLength++]=b}this.bufferLength=bufferLength},RunLengthStream}(),CCITTFaxStream=function(){function CCITTFaxStream(str,maybeLength,params){this.str=str,this.dict=str.dict,params=params||Dict.empty,this.encoding=params.get("K")||0,this.eoline=params.get("EndOfLine")||!1,this.byteAlign=params.get("EncodedByteAlign")||!1,this.columns=params.get("Columns")||1728,this.rows=params.get("Rows")||0;var eoblock=params.get("EndOfBlock");(null===eoblock||void 0===eoblock)&&(eoblock=!0),this.eoblock=eoblock,this.black=params.get("BlackIs1")||!1,this.codingLine=new Uint32Array(this.columns+1),this.refLine=new Uint32Array(this.columns+2),this.codingLine[0]=this.columns,this.codingPos=0,this.row=0,this.nextLine2D=this.encoding<0,this.inputBits=0,this.inputBuf=0,this.outputBits=0;for(var code1;0===(code1=this.lookBits(12));)this.eatBits(1);1===code1&&this.eatBits(12),this.encoding>0&&(this.nextLine2D=!this.lookBits(1),this.eatBits(1)),DecodeStream.call(this,maybeLength)}var ccittEOL=-2,twoDimPass=0,twoDimHoriz=1,twoDimVert0=2,twoDimVertR1=3,twoDimVertL1=4,twoDimVertR2=5,twoDimVertL2=6,twoDimVertR3=7,twoDimVertL3=8,twoDimTable=[[-1,-1],[-1,-1],[7,twoDimVertL3],[7,twoDimVertR3],[6,twoDimVertL2],[6,twoDimVertL2],[6,twoDimVertR2],[6,twoDimVertR2],[4,twoDimPass],[4,twoDimPass],[4,twoDimPass],[4,twoDimPass],[4,twoDimPass],[4,twoDimPass],[4,twoDimPass],[4,twoDimPass],[3,twoDimHoriz],[3,twoDimHoriz],[3,twoDimHoriz],[3,twoDimHoriz],[3,twoDimHoriz],[3,twoDimHoriz],[3,twoDimHoriz],[3,twoDimHoriz],[3,twoDimHoriz],[3,twoDimHoriz],[3,twoDimHoriz],[3,twoDimHoriz],[3,twoDimHoriz],[3,twoDimHoriz],[3,twoDimHoriz],[3,twoDimHoriz],[3,twoDimVertL1],[3,twoDimVertL1],[3,twoDimVertL1],[3,twoDimVertL1],[3,twoDimVertL1],[3,twoDimVertL1],[3,twoDimVertL1],[3,twoDimVertL1],[3,twoDimVertL1],[3,twoDimVertL1],[3,twoDimVertL1],[3,twoDimVertL1],[3,twoDimVertL1],[3,twoDimVertL1],[3,twoDimVertL1],[3,twoDimVertL1],[3,twoDimVertR1],[3,twoDimVertR1],[3,twoDimVertR1],[3,twoDimVertR1],[3,twoDimVertR1],[3,twoDimVertR1],[3,twoDimVertR1],[3,twoDimVertR1],[3,twoDimVertR1],[3,twoDimVertR1],[3,twoDimVertR1],[3,twoDimVertR1],[3,twoDimVertR1],[3,twoDimVertR1],[3,twoDimVertR1],[3,twoDimVertR1],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0],[1,twoDimVert0]],whiteTable1=[[-1,-1],[12,ccittEOL],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[11,1792],[11,1792],[12,1984],[12,2048],[12,2112],[12,2176],[12,2240],[12,2304],[11,1856],[11,1856],[11,1920],[11,1920],[12,2368],[12,2432],[12,2496],[12,2560]],whiteTable2=[[-1,-1],[-1,-1],[-1,-1],[-1,-1],[8,29],[8,29],[8,30],[8,30],[8,45],[8,45],[8,46],[8,46],[7,22],[7,22],[7,22],[7,22],[7,23],[7,23],[7,23],[7,23],[8,47],[8,47],[8,48],[8,48],[6,13],[6,13],[6,13],[6,13],[6,13],[6,13],[6,13],[6,13],[7,20],[7,20],[7,20],[7,20],[8,33],[8,33],[8,34],[8,34],[8,35],[8,35],[8,36],[8,36],[8,37],[8,37],[8,38],[8,38],[7,19],[7,19],[7,19],[7,19],[8,31],[8,31],[8,32],[8,32],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,12],[6,12],[6,12],[6,12],[6,12],[6,12],[6,12],[6,12],[8,53],[8,53],[8,54],[8,54],[7,26],[7,26],[7,26],[7,26],[8,39],[8,39],[8,40],[8,40],[8,41],[8,41],[8,42],[8,42],[8,43],[8,43],[8,44],[8,44],[7,21],[7,21],[7,21],[7,21],[7,28],[7,28],[7,28],[7,28],[8,61],[8,61],[8,62],[8,62],[8,63],[8,63],[8,0],[8,0],[8,320],[8,320],[8,384],[8,384],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[7,27],[7,27],[7,27],[7,27],[8,59],[8,59],[8,60],[8,60],[9,1472],[9,1536],[9,1600],[9,1728],[7,18],[7,18],[7,18],[7,18],[7,24],[7,24],[7,24],[7,24],[8,49],[8,49],[8,50],[8,50],[8,51],[8,51],[8,52],[8,52],[7,25],[7,25],[7,25],[7,25],[8,55],[8,55],[8,56],[8,56],[8,57],[8,57],[8,58],[8,58],[6,192],[6,192],[6,192],[6,192],[6,192],[6,192],[6,192],[6,192],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[8,448],[8,448],[8,512],[8,512],[9,704],[9,768],[8,640],[8,640],[8,576],[8,576],[9,832],[9,896],[9,960],[9,1024],[9,1088],[9,1152],[9,1216],[9,1280],[9,1344],[9,1408],[7,256],[7,256],[7,256],[7,256],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[6,16],[6,16],[6,16],[6,16],[6,16],[6,16],[6,16],[6,16],[6,17],[6,17],[6,17],[6,17],[6,17],[6,17],[6,17],[6,17],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[6,14],[6,14],[6,14],[6,14],[6,14],[6,14],[6,14],[6,14],[6,15],[6,15],[6,15],[6,15],[6,15],[6,15],[6,15],[6,15],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7]],blackTable1=[[-1,-1],[-1,-1],[12,ccittEOL],[12,ccittEOL],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[11,1792],[11,1792],[11,1792],[11,1792],[12,1984],[12,1984],[12,2048],[12,2048],[12,2112],[12,2112],[12,2176],[12,2176],[12,2240],[12,2240],[12,2304],[12,2304],[11,1856],[11,1856],[11,1856],[11,1856],[11,1920],[11,1920],[11,1920],[11,1920],[12,2368],[12,2368],[12,2432],[12,2432],[12,2496],[12,2496],[12,2560],[12,2560],[10,18],[10,18],[10,18],[10,18],[10,18],[10,18],[10,18],[10,18],[12,52],[12,52],[13,640],[13,704],[13,768],[13,832],[12,55],[12,55],[12,56],[12,56],[13,1280],[13,1344],[13,1408],[13,1472],[12,59],[12,59],[12,60],[12,60],[13,1536],[13,1600],[11,24],[11,24],[11,24],[11,24],[11,25],[11,25],[11,25],[11,25],[13,1664],[13,1728],[12,320],[12,320],[12,384],[12,384],[12,448],[12,448],[13,512],[13,576],[12,53],[12,53],[12,54],[12,54],[13,896],[13,960],[13,1024],[13,1088],[13,1152],[13,1216],[10,64],[10,64],[10,64],[10,64],[10,64],[10,64],[10,64],[10,64]],blackTable2=[[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[11,23],[11,23],[12,50],[12,51],[12,44],[12,45],[12,46],[12,47],[12,57],[12,58],[12,61],[12,256],[10,16],[10,16],[10,16],[10,16],[10,17],[10,17],[10,17],[10,17],[12,48],[12,49],[12,62],[12,63],[12,30],[12,31],[12,32],[12,33],[12,40],[12,41],[11,22],[11,22],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[9,15],[9,15],[9,15],[9,15],[9,15],[9,15],[9,15],[9,15],[12,128],[12,192],[12,26],[12,27],[12,28],[12,29],[11,19],[11,19],[11,20],[11,20],[12,34],[12,35],[12,36],[12,37],[12,38],[12,39],[11,21],[11,21],[12,42],[12,43],[10,0],[10,0],[10,0],[10,0],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12]],blackTable3=[[-1,-1],[-1,-1],[-1,-1],[-1,-1],[6,9],[6,8],[5,7],[5,7],[4,6],[4,6],[4,6],[4,6],[4,5],[4,5],[4,5],[4,5],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2]];return CCITTFaxStream.prototype=Object.create(DecodeStream.prototype),CCITTFaxStream.prototype.readBlock=function(){for(;!this.eof;){var c=this.lookChar();this.ensureBuffer(this.bufferLength+1),this.buffer[this.bufferLength++]=c}},CCITTFaxStream.prototype.addPixels=function(a1,blackPixels){var codingLine=this.codingLine,codingPos=this.codingPos;a1>codingLine[codingPos]&&(a1>this.columns&&(info("row is wrong length"),this.err=!0,a1=this.columns),1&codingPos^blackPixels&&++codingPos,codingLine[codingPos]=a1),this.codingPos=codingPos},CCITTFaxStream.prototype.addPixelsNeg=function(a1,blackPixels){var codingLine=this.codingLine,codingPos=this.codingPos;if(a1>codingLine[codingPos])a1>this.columns&&(info("row is wrong length"),this.err=!0,a1=this.columns),1&codingPos^blackPixels&&++codingPos,codingLine[codingPos]=a1;else if(a1<codingLine[codingPos]){for(0>a1&&(info("invalid code"),this.err=!0,a1=0);codingPos>0&&a1<codingLine[codingPos-1];)--codingPos;codingLine[codingPos]=a1}this.codingPos=codingPos},CCITTFaxStream.prototype.lookChar=function(){var refPos,blackPixels,bits,i,refLine=this.refLine,codingLine=this.codingLine,columns=this.columns;if(0===this.outputBits){if(this.eof)return null;this.err=!1;var code1,code2,code3;if(this.nextLine2D){for(i=0;codingLine[i]<columns;++i)refLine[i]=codingLine[i];for(refLine[i++]=columns,refLine[i]=columns,codingLine[0]=0,this.codingPos=0,refPos=0,blackPixels=0;codingLine[this.codingPos]<columns;)switch(code1=this.getTwoDimCode()){case twoDimPass:this.addPixels(refLine[refPos+1],blackPixels),refLine[refPos+1]<columns&&(refPos+=2);break;case twoDimHoriz:if(code1=code2=0,blackPixels){do code1+=code3=this.getBlackCode();while(code3>=64);do code2+=code3=this.getWhiteCode();while(code3>=64)}else{do code1+=code3=this.getWhiteCode();while(code3>=64);do code2+=code3=this.getBlackCode();while(code3>=64)}for(this.addPixels(codingLine[this.codingPos]+code1,blackPixels),codingLine[this.codingPos]<columns&&this.addPixels(codingLine[this.codingPos]+code2,1^blackPixels);refLine[refPos]<=codingLine[this.codingPos]&&refLine[refPos]<columns;)refPos+=2;break;case twoDimVertR3:if(this.addPixels(refLine[refPos]+3,blackPixels),blackPixels^=1,codingLine[this.codingPos]<columns)for(++refPos;refLine[refPos]<=codingLine[this.codingPos]&&refLine[refPos]<columns;)refPos+=2;break;case twoDimVertR2:if(this.addPixels(refLine[refPos]+2,blackPixels),blackPixels^=1,codingLine[this.codingPos]<columns)for(++refPos;refLine[refPos]<=codingLine[this.codingPos]&&refLine[refPos]<columns;)refPos+=2;break;case twoDimVertR1:if(this.addPixels(refLine[refPos]+1,blackPixels),blackPixels^=1,codingLine[this.codingPos]<columns)for(++refPos;refLine[refPos]<=codingLine[this.codingPos]&&refLine[refPos]<columns;)refPos+=2;break;case twoDimVert0:if(this.addPixels(refLine[refPos],blackPixels),blackPixels^=1,codingLine[this.codingPos]<columns)for(++refPos;refLine[refPos]<=codingLine[this.codingPos]&&refLine[refPos]<columns;)refPos+=2;break;case twoDimVertL3:if(this.addPixelsNeg(refLine[refPos]-3,blackPixels),blackPixels^=1,codingLine[this.codingPos]<columns)for(refPos>0?--refPos:++refPos;refLine[refPos]<=codingLine[this.codingPos]&&refLine[refPos]<columns;)refPos+=2;break;case twoDimVertL2:if(this.addPixelsNeg(refLine[refPos]-2,blackPixels),blackPixels^=1,codingLine[this.codingPos]<columns)for(refPos>0?--refPos:++refPos;refLine[refPos]<=codingLine[this.codingPos]&&refLine[refPos]<columns;)refPos+=2;break;case twoDimVertL1:if(this.addPixelsNeg(refLine[refPos]-1,blackPixels),blackPixels^=1,codingLine[this.codingPos]<columns)for(refPos>0?--refPos:++refPos;refLine[refPos]<=codingLine[this.codingPos]&&refLine[refPos]<columns;)refPos+=2;break;case EOF:this.addPixels(columns,0),this.eof=!0;break;default:info("bad 2d code"),this.addPixels(columns,0),this.err=!0}}else for(codingLine[0]=0,this.codingPos=0,blackPixels=0;codingLine[this.codingPos]<columns;){if(code1=0,blackPixels){do code1+=code3=this.getBlackCode();while(code3>=64)}else do code1+=code3=this.getWhiteCode();while(code3>=64);this.addPixels(codingLine[this.codingPos]+code1,blackPixels),blackPixels^=1}var gotEOL=!1;if(this.eoblock||this.row!==this.rows-1){if(this.eoline||!this.byteAlign){if(code1=this.lookBits(12),this.eoline)for(;code1!==EOF&&1!==code1;)this.eatBits(1),code1=this.lookBits(12);else for(;0===code1;)this.eatBits(1),code1=this.lookBits(12);1===code1?(this.eatBits(12),gotEOL=!0):code1===EOF&&(this.eof=!0)}}else this.eof=!0;if(this.byteAlign&&!gotEOL&&(this.inputBits&=-8),!this.eof&&this.encoding>0&&(this.nextLine2D=!this.lookBits(1),this.eatBits(1)),this.eoblock&&gotEOL&&this.byteAlign){if(code1=this.lookBits(12),1===code1){if(this.eatBits(12),this.encoding>0&&(this.lookBits(1),this.eatBits(1)),this.encoding>=0)for(i=0;4>i;++i)code1=this.lookBits(12),1!==code1&&info("bad rtc code: "+code1),this.eatBits(12),this.encoding>0&&(this.lookBits(1),this.eatBits(1));this.eof=!0}}else if(this.err&&this.eoline){for(;;){if(code1=this.lookBits(13),code1===EOF)return this.eof=!0,null;if(code1>>1===1)break;this.eatBits(1)}this.eatBits(12),this.encoding>0&&(this.eatBits(1),this.nextLine2D=!(1&code1))}this.outputBits=codingLine[0]>0?codingLine[this.codingPos=0]:codingLine[this.codingPos=1],this.row++}var c;if(this.outputBits>=8)c=1&this.codingPos?0:255,this.outputBits-=8,0===this.outputBits&&codingLine[this.codingPos]<columns&&(this.codingPos++,this.outputBits=codingLine[this.codingPos]-codingLine[this.codingPos-1]);else{bits=8,c=0;do this.outputBits>bits?(c<<=bits,1&this.codingPos||(c|=255>>8-bits),this.outputBits-=bits,bits=0):(c<<=this.outputBits,1&this.codingPos||(c|=255>>8-this.outputBits),bits-=this.outputBits,this.outputBits=0,codingLine[this.codingPos]<columns?(this.codingPos++,this.outputBits=codingLine[this.codingPos]-codingLine[this.codingPos-1]):bits>0&&(c<<=bits,bits=0));while(bits)}return this.black&&(c^=255),c},CCITTFaxStream.prototype.findTableCode=function(start,end,table,limit){for(var limitValue=limit||0,i=start;end>=i;++i){var code=this.lookBits(i);if(code===EOF)return[!0,1,!1];if(end>i&&(code<<=end-i),!limitValue||code>=limitValue){var p=table[code-limitValue];if(p[0]===i)return this.eatBits(i),[!0,p[1],!0]}}return[!1,0,!1]},CCITTFaxStream.prototype.getTwoDimCode=function(){var p,code=0;if(this.eoblock){if(code=this.lookBits(7),p=twoDimTable[code],p&&p[0]>0)return this.eatBits(p[0]),p[1]}else{var result=this.findTableCode(1,7,twoDimTable);if(result[0]&&result[2])return result[1]}return info("Bad two dim code"),EOF},CCITTFaxStream.prototype.getWhiteCode=function(){var p,code=0;if(this.eoblock){if(code=this.lookBits(12),code===EOF)return 1;if(p=code>>5===0?whiteTable1[code]:whiteTable2[code>>3],p[0]>0)return this.eatBits(p[0]),p[1]}else{var result=this.findTableCode(1,9,whiteTable2);if(result[0])return result[1];if(result=this.findTableCode(11,12,whiteTable1),result[0])return result[1]}return info("bad white code"),this.eatBits(1),1},CCITTFaxStream.prototype.getBlackCode=function(){var code,p;if(this.eoblock){if(code=this.lookBits(13),code===EOF)return 1;if(p=code>>7===0?blackTable1[code]:code>>9===0&&code>>7!==0?blackTable2[(code>>1)-64]:blackTable3[code>>7],p[0]>0)return this.eatBits(p[0]),p[1]}else{var result=this.findTableCode(2,6,blackTable3);if(result[0])return result[1];if(result=this.findTableCode(7,12,blackTable2,64),result[0])return result[1];if(result=this.findTableCode(10,13,blackTable1),result[0])return result[1]}return info("bad black code"),this.eatBits(1),1},CCITTFaxStream.prototype.lookBits=function(n){for(var c;this.inputBits<n;){if(-1===(c=this.str.getByte()))return 0===this.inputBits?EOF:this.inputBuf<<n-this.inputBits&65535>>16-n;this.inputBuf=(this.inputBuf<<8)+c,this.inputBits+=8}return this.inputBuf>>this.inputBits-n&65535>>16-n},CCITTFaxStream.prototype.eatBits=function(n){(this.inputBits-=n)<0&&(this.inputBits=0)},CCITTFaxStream}(),LZWStream=function(){function LZWStream(str,maybeLength,earlyChange){this.str=str,this.dict=str.dict,this.cachedData=0,this.bitsCached=0;for(var maxLzwDictionarySize=4096,lzwState={earlyChange:earlyChange,codeLength:9,nextCode:258,dictionaryValues:new Uint8Array(maxLzwDictionarySize),dictionaryLengths:new Uint16Array(maxLzwDictionarySize),dictionaryPrevCodes:new Uint16Array(maxLzwDictionarySize),currentSequence:new Uint8Array(maxLzwDictionarySize),currentSequenceLength:0},i=0;256>i;++i)lzwState.dictionaryValues[i]=i,lzwState.dictionaryLengths[i]=1;this.lzwState=lzwState,DecodeStream.call(this,maybeLength)}return LZWStream.prototype=Object.create(DecodeStream.prototype),LZWStream.prototype.readBits=function(n){for(var bitsCached=this.bitsCached,cachedData=this.cachedData;n>bitsCached;){var c=this.str.getByte();if(-1===c)return this.eof=!0,null;cachedData=cachedData<<8|c,bitsCached+=8}return this.bitsCached=bitsCached-=n,this.cachedData=cachedData,this.lastCode=null,cachedData>>>bitsCached&(1<<n)-1},LZWStream.prototype.readBlock=function(){var i,j,q,blockSize=512,estimatedDecodedSize=2*blockSize,decodedSizeDelta=blockSize,lzwState=this.lzwState;if(lzwState){var earlyChange=lzwState.earlyChange,nextCode=lzwState.nextCode,dictionaryValues=lzwState.dictionaryValues,dictionaryLengths=lzwState.dictionaryLengths,dictionaryPrevCodes=lzwState.dictionaryPrevCodes,codeLength=lzwState.codeLength,prevCode=lzwState.prevCode,currentSequence=lzwState.currentSequence,currentSequenceLength=lzwState.currentSequenceLength,decodedLength=0,currentBufferLength=this.bufferLength,buffer=this.ensureBuffer(this.bufferLength+estimatedDecodedSize);for(i=0;blockSize>i;i++){var code=this.readBits(codeLength),hasPrev=currentSequenceLength>0;if(256>code)currentSequence[0]=code,currentSequenceLength=1;else{if(!(code>=258)){if(256===code){codeLength=9,nextCode=258,currentSequenceLength=0;continue}this.eof=!0,delete this.lzwState;break}if(nextCode>code)for(currentSequenceLength=dictionaryLengths[code],j=currentSequenceLength-1,q=code;j>=0;j--)currentSequence[j]=dictionaryValues[q],q=dictionaryPrevCodes[q];else currentSequence[currentSequenceLength++]=currentSequence[0]}if(hasPrev&&(dictionaryPrevCodes[nextCode]=prevCode,dictionaryLengths[nextCode]=dictionaryLengths[prevCode]+1,dictionaryValues[nextCode]=currentSequence[0],nextCode++,codeLength=nextCode+earlyChange&nextCode+earlyChange-1?codeLength:0|Math.min(Math.log(nextCode+earlyChange)/.6931471805599453+1,12)),prevCode=code,decodedLength+=currentSequenceLength,decodedLength>estimatedDecodedSize){do estimatedDecodedSize+=decodedSizeDelta;while(decodedLength>estimatedDecodedSize);buffer=this.ensureBuffer(this.bufferLength+estimatedDecodedSize)}for(j=0;currentSequenceLength>j;j++)buffer[currentBufferLength++]=currentSequence[j]}lzwState.nextCode=nextCode,lzwState.codeLength=codeLength,lzwState.prevCode=prevCode,lzwState.currentSequenceLength=currentSequenceLength,this.bufferLength=currentBufferLength}},LZWStream}(),NullStream=function(){function NullStream(){Stream.call(this,new Uint8Array(0))}return NullStream.prototype=Stream.prototype,NullStream}(),WorkerMessageHandler=PDFJS.WorkerMessageHandler={setup:function(handler){function loadDocument(recoveryMode){var loadDocumentCapability=createPromiseCapability(),parseSuccess=function(){var numPagesPromise=pdfManager.ensureDoc("numPages"),fingerprintPromise=pdfManager.ensureDoc("fingerprint"),encryptedPromise=pdfManager.ensureXRef("encrypt");Promise.all([numPagesPromise,fingerprintPromise,encryptedPromise]).then(function(results){var doc={numPages:results[0],fingerprint:results[1],encrypted:!!results[2]};loadDocumentCapability.resolve(doc)},parseFailure)},parseFailure=function(e){loadDocumentCapability.reject(e)};return pdfManager.ensureDoc("checkHeader",[]).then(function(){pdfManager.ensureDoc("parseStartXRef",[]).then(function(){pdfManager.ensureDoc("parse",[recoveryMode]).then(parseSuccess,parseFailure)},parseFailure)},parseFailure),loadDocumentCapability.promise}function getPdfManager(data){var pdfManagerCapability=createPromiseCapability(),source=data.source,disableRange=data.disableRange;if(source.data){try{pdfManager=new LocalPdfManager(source.data,source.password),pdfManagerCapability.resolve()}catch(ex){pdfManagerCapability.reject(ex)}return pdfManagerCapability.promise}if(source.chunkedViewerLoading){try{pdfManager=new NetworkPdfManager(source,handler),pdfManagerCapability.resolve()}catch(ex){pdfManagerCapability.reject(ex)}return pdfManagerCapability.promise}var networkManager=new NetworkManager(source.url,{httpHeaders:source.httpHeaders,withCredentials:source.withCredentials}),fullRequestXhrId=networkManager.requestFull({onHeadersReceived:function(){if(!disableRange){var fullRequestXhr=networkManager.getRequestXhr(fullRequestXhrId);if("bytes"===fullRequestXhr.getResponseHeader("Accept-Ranges")){var contentEncoding=fullRequestXhr.getResponseHeader("Content-Encoding")||"identity";if("identity"===contentEncoding){var length=fullRequestXhr.getResponseHeader("Content-Length");if(length=parseInt(length,10),isInt(length)&&(source.length=length,!(2*RANGE_CHUNK_SIZE>=length))){networkManager.abortRequest(fullRequestXhrId);
try{pdfManager=new NetworkPdfManager(source,handler),pdfManagerCapability.resolve(pdfManager)}catch(ex){pdfManagerCapability.reject(ex)}}}}}},onDone:function(args){try{pdfManager=new LocalPdfManager(args.chunk,source.password),pdfManagerCapability.resolve()}catch(ex){pdfManagerCapability.reject(ex)}},onError:function(status){var exception;404===status?(exception=new MissingPDFException('Missing PDF "'+source.url+'".'),handler.send("MissingPDF",exception)):(exception=new UnexpectedResponseException("Unexpected server response ("+status+') while retrieving PDF "'+source.url+'".',status),handler.send("UnexpectedResponse",exception))},onProgress:function(evt){handler.send("DocProgress",{loaded:evt.loaded,total:evt.lengthComputable?evt.total:source.length})}});return pdfManagerCapability.promise}var pdfManager;handler.on("test",function(data){if(!(data instanceof Uint8Array))return void handler.send("test",!1);var supportTransfers=255===data[0];handler.postMessageTransfers=supportTransfers;var xhr=new XMLHttpRequest,responseExists="response"in xhr;try{{xhr.responseType}}catch(e){responseExists=!1}return responseExists?void handler.send("test",{supportTypedArray:!0,supportTransfers:supportTransfers}):void handler.send("test",!1)}),handler.on("GetDocRequest",function(data){var onSuccess=function(doc){handler.send("GetDoc",{pdfInfo:doc})},onFailure=function(e){e instanceof PasswordException?e.code===PasswordResponses.NEED_PASSWORD?handler.send("NeedPassword",e):e.code===PasswordResponses.INCORRECT_PASSWORD&&handler.send("IncorrectPassword",e):e instanceof InvalidPDFException?handler.send("InvalidPDF",e):e instanceof MissingPDFException?handler.send("MissingPDF",e):e instanceof UnexpectedResponseException?handler.send("UnexpectedResponse",e):handler.send("UnknownError",new UnknownErrorException(e.message,e.toString()))};PDFJS.maxImageSize=void 0===data.maxImageSize?-1:data.maxImageSize,PDFJS.disableFontFace=data.disableFontFace,PDFJS.disableCreateObjectURL=data.disableCreateObjectURL,PDFJS.verbosity=data.verbosity,PDFJS.cMapUrl=void 0===data.cMapUrl?null:data.cMapUrl,PDFJS.cMapPacked=data.cMapPacked===!0,getPdfManager(data).then(function(){pdfManager.onLoadedStream().then(function(stream){handler.send("DataLoaded",{length:stream.bytes.byteLength})})}).then(function pdfManagerReady(){loadDocument(!1).then(onSuccess,function(ex){return ex instanceof XRefParseException?(pdfManager.requestLoadedStream(),void pdfManager.onLoadedStream().then(function(){loadDocument(!0).then(onSuccess,onFailure)})):(ex instanceof PasswordException&&pdfManager.passwordChanged().then(pdfManagerReady),void onFailure(ex))},onFailure)},onFailure)}),handler.on("GetPage",function(data){return pdfManager.getPage(data.pageIndex).then(function(page){var rotatePromise=pdfManager.ensure(page,"rotate"),refPromise=pdfManager.ensure(page,"ref"),viewPromise=pdfManager.ensure(page,"view");return Promise.all([rotatePromise,refPromise,viewPromise]).then(function(results){return{rotate:results[0],ref:results[1],view:results[2]}})})}),handler.on("GetPageIndex",function(data){var ref=new Ref(data.ref.num,data.ref.gen),catalog=pdfManager.pdfDocument.catalog;return catalog.getPageIndex(ref)}),handler.on("GetDestinations",function(){return pdfManager.ensureCatalog("destinations")}),handler.on("GetAttachments",function(){return pdfManager.ensureCatalog("attachments")}),handler.on("GetJavaScript",function(){return pdfManager.ensureCatalog("javaScript")}),handler.on("GetOutline",function(){return pdfManager.ensureCatalog("documentOutline")}),handler.on("GetMetadata",function(){return Promise.all([pdfManager.ensureDoc("documentInfo"),pdfManager.ensureCatalog("metadata")])}),handler.on("GetData",function(){return pdfManager.requestLoadedStream(),pdfManager.onLoadedStream().then(function(stream){return stream.bytes})}),handler.on("GetStats",function(){return pdfManager.pdfDocument.xref.stats}),handler.on("UpdatePassword",function(data){pdfManager.updatePassword(data)}),handler.on("GetAnnotations",function(data){return pdfManager.getPage(data.pageIndex).then(function(page){return pdfManager.ensure(page,"getAnnotationsData",[])})}),handler.on("RenderPageRequest",function(data){pdfManager.getPage(data.pageIndex).then(function(page){var pageNum=data.pageIndex+1,start=Date.now();page.getOperatorList(handler,data.intent).then(function(operatorList){info("page="+pageNum+" - getOperatorList: time="+(Date.now()-start)+"ms, len="+operatorList.fnArray.length)},function(e){var wrappedException,minimumStackMessage="worker.js: while trying to getPage() and getOperatorList()";wrappedException="string"==typeof e?{message:e,stack:minimumStackMessage}:"object"==typeof e?{message:e.message||e.toString(),stack:e.stack||minimumStackMessage}:{message:"Unknown exception type: "+typeof e,stack:minimumStackMessage},handler.send("PageError",{pageNum:pageNum,error:wrappedException,intent:data.intent})})})},this),handler.on("GetTextContent",function(data){return pdfManager.getPage(data.pageIndex).then(function(page){var pageNum=data.pageIndex+1,start=Date.now();return page.extractTextContent().then(function(textContent){return info("text indexing: page="+pageNum+" - time="+(Date.now()-start)+"ms"),textContent})})}),handler.on("Cleanup",function(){return pdfManager.cleanup()}),handler.on("Terminate",function(){pdfManager.terminate()})}},consoleTimer={},workerConsole={log:function(){var args=Array.prototype.slice.call(arguments);globalScope.postMessage({action:"console_log",data:args})},error:function(){var args=Array.prototype.slice.call(arguments);throw globalScope.postMessage({action:"console_error",data:args}),"pdf.js execution error"},time:function(name){consoleTimer[name]=Date.now()},timeEnd:function(name){var time=consoleTimer[name];time||error("Unknown timer name "+name),this.log("Timer:",name,Date.now()-time)}};if("undefined"==typeof window){"console"in globalScope||(globalScope.console=workerConsole),PDFJS.UnsupportedManager.listen(function(msg){globalScope.postMessage({action:"_unsupported_feature",data:msg})});var handler=new MessageHandler("worker_processor",this);WorkerMessageHandler.setup(handler)}var ArithmeticDecoder=function(){function ArithmeticDecoder(data,start,end){this.data=data,this.bp=start,this.dataEnd=end,this.chigh=data[start],this.clow=0,this.byteIn(),this.chigh=this.chigh<<7&65535|this.clow>>9&127,this.clow=this.clow<<7&65535,this.ct-=7,this.a=32768}var QeTable=[{qe:22017,nmps:1,nlps:1,switchFlag:1},{qe:13313,nmps:2,nlps:6,switchFlag:0},{qe:6145,nmps:3,nlps:9,switchFlag:0},{qe:2753,nmps:4,nlps:12,switchFlag:0},{qe:1313,nmps:5,nlps:29,switchFlag:0},{qe:545,nmps:38,nlps:33,switchFlag:0},{qe:22017,nmps:7,nlps:6,switchFlag:1},{qe:21505,nmps:8,nlps:14,switchFlag:0},{qe:18433,nmps:9,nlps:14,switchFlag:0},{qe:14337,nmps:10,nlps:14,switchFlag:0},{qe:12289,nmps:11,nlps:17,switchFlag:0},{qe:9217,nmps:12,nlps:18,switchFlag:0},{qe:7169,nmps:13,nlps:20,switchFlag:0},{qe:5633,nmps:29,nlps:21,switchFlag:0},{qe:22017,nmps:15,nlps:14,switchFlag:1},{qe:21505,nmps:16,nlps:14,switchFlag:0},{qe:20737,nmps:17,nlps:15,switchFlag:0},{qe:18433,nmps:18,nlps:16,switchFlag:0},{qe:14337,nmps:19,nlps:17,switchFlag:0},{qe:13313,nmps:20,nlps:18,switchFlag:0},{qe:12289,nmps:21,nlps:19,switchFlag:0},{qe:10241,nmps:22,nlps:19,switchFlag:0},{qe:9217,nmps:23,nlps:20,switchFlag:0},{qe:8705,nmps:24,nlps:21,switchFlag:0},{qe:7169,nmps:25,nlps:22,switchFlag:0},{qe:6145,nmps:26,nlps:23,switchFlag:0},{qe:5633,nmps:27,nlps:24,switchFlag:0},{qe:5121,nmps:28,nlps:25,switchFlag:0},{qe:4609,nmps:29,nlps:26,switchFlag:0},{qe:4353,nmps:30,nlps:27,switchFlag:0},{qe:2753,nmps:31,nlps:28,switchFlag:0},{qe:2497,nmps:32,nlps:29,switchFlag:0},{qe:2209,nmps:33,nlps:30,switchFlag:0},{qe:1313,nmps:34,nlps:31,switchFlag:0},{qe:1089,nmps:35,nlps:32,switchFlag:0},{qe:673,nmps:36,nlps:33,switchFlag:0},{qe:545,nmps:37,nlps:34,switchFlag:0},{qe:321,nmps:38,nlps:35,switchFlag:0},{qe:273,nmps:39,nlps:36,switchFlag:0},{qe:133,nmps:40,nlps:37,switchFlag:0},{qe:73,nmps:41,nlps:38,switchFlag:0},{qe:37,nmps:42,nlps:39,switchFlag:0},{qe:21,nmps:43,nlps:40,switchFlag:0},{qe:9,nmps:44,nlps:41,switchFlag:0},{qe:5,nmps:45,nlps:42,switchFlag:0},{qe:1,nmps:45,nlps:43,switchFlag:0},{qe:22017,nmps:46,nlps:46,switchFlag:0}];return ArithmeticDecoder.prototype={byteIn:function(){var data=this.data,bp=this.bp;if(255===data[bp]){var b1=data[bp+1];b1>143?(this.clow+=65280,this.ct=8):(bp++,this.clow+=data[bp]<<9,this.ct=7,this.bp=bp)}else bp++,this.clow+=bp<this.dataEnd?data[bp]<<8:65280,this.ct=8,this.bp=bp;this.clow>65535&&(this.chigh+=this.clow>>16,this.clow&=65535)},readBit:function(contexts,pos){var d,cx_index=contexts[pos]>>1,cx_mps=1&contexts[pos],qeTableIcx=QeTable[cx_index],qeIcx=qeTableIcx.qe,a=this.a-qeIcx;if(this.chigh<qeIcx)qeIcx>a?(a=qeIcx,d=cx_mps,cx_index=qeTableIcx.nmps):(a=qeIcx,d=1^cx_mps,1===qeTableIcx.switchFlag&&(cx_mps=d),cx_index=qeTableIcx.nlps);else{if(this.chigh-=qeIcx,0!==(32768&a))return this.a=a,cx_mps;qeIcx>a?(d=1^cx_mps,1===qeTableIcx.switchFlag&&(cx_mps=d),cx_index=qeTableIcx.nlps):(d=cx_mps,cx_index=qeTableIcx.nmps)}do 0===this.ct&&this.byteIn(),a<<=1,this.chigh=this.chigh<<1&65535|this.clow>>15&1,this.clow=this.clow<<1&65535,this.ct--;while(0===(32768&a));return this.a=a,contexts[pos]=cx_index<<1|cx_mps,d}},ArithmeticDecoder}(),JpegImage=function(){function constructor(){}function buildHuffmanTable(codeLengths,values){for(var i,j,k=0,code=[],length=16;length>0&&!codeLengths[length-1];)length--;code.push({children:[],index:0});var q,p=code[0];for(i=0;length>i;i++){for(j=0;j<codeLengths[i];j++){for(p=code.pop(),p.children[p.index]=values[k];p.index>0;)p=code.pop();for(p.index++,code.push(p);code.length<=i;)code.push(q={children:[],index:0}),p.children[p.index]=q.children,p=q;k++}length>i+1&&(code.push(q={children:[],index:0}),p.children[p.index]=q.children,p=q)}return code[0].children}function getBlockBufferOffset(component,row,col){return 64*((component.blocksPerLine+1)*row+col)}function decodeScan(data,offset,frame,components,resetInterval,spectralStart,spectralEnd,successivePrev,successive){function readBit(){if(bitsCount>0)return bitsCount--,bitsData>>bitsCount&1;if(bitsData=data[offset++],255===bitsData){var nextByte=data[offset++];if(nextByte)throw"unexpected marker: "+(bitsData<<8|nextByte).toString(16)}return bitsCount=7,bitsData>>>7}function decodeHuffman(tree){for(var bit,node=tree;null!==(bit=readBit());){if(node=node[bit],"number"==typeof node)return node;if("object"!=typeof node)throw"invalid huffman sequence"}return null}function receive(length){for(var n=0;length>0;){var bit=readBit();if(null===bit)return;n=n<<1|bit,length--}return n}function receiveAndExtend(length){if(1===length)return 1===readBit()?1:-1;var n=receive(length);return n>=1<<length-1?n:n+(-1<<length)+1}function decodeBaseline(component,offset){var t=decodeHuffman(component.huffmanTableDC),diff=0===t?0:receiveAndExtend(t);component.blockData[offset]=component.pred+=diff;for(var k=1;64>k;){var rs=decodeHuffman(component.huffmanTableAC),s=15&rs,r=rs>>4;if(0!==s){k+=r;var z=dctZigZag[k];component.blockData[offset+z]=receiveAndExtend(s),k++}else{if(15>r)break;k+=16}}}function decodeDCFirst(component,offset){var t=decodeHuffman(component.huffmanTableDC),diff=0===t?0:receiveAndExtend(t)<<successive;component.blockData[offset]=component.pred+=diff}function decodeDCSuccessive(component,offset){component.blockData[offset]|=readBit()<<successive}function decodeACFirst(component,offset){if(eobrun>0)return void eobrun--;for(var k=spectralStart,e=spectralEnd;e>=k;){var rs=decodeHuffman(component.huffmanTableAC),s=15&rs,r=rs>>4;if(0!==s){k+=r;var z=dctZigZag[k];component.blockData[offset+z]=receiveAndExtend(s)*(1<<successive),k++}else{if(15>r){eobrun=receive(r)+(1<<r)-1;break}k+=16}}}function decodeACSuccessive(component,offset){for(var s,rs,k=spectralStart,e=spectralEnd,r=0;e>=k;){var z=dctZigZag[k];switch(successiveACState){case 0:if(rs=decodeHuffman(component.huffmanTableAC),s=15&rs,r=rs>>4,0===s)15>r?(eobrun=receive(r)+(1<<r),successiveACState=4):(r=16,successiveACState=1);else{if(1!==s)throw"invalid ACn encoding";successiveACNextValue=receiveAndExtend(s),successiveACState=r?2:3}continue;case 1:case 2:component.blockData[offset+z]?component.blockData[offset+z]+=readBit()<<successive:(r--,0===r&&(successiveACState=2===successiveACState?3:0));break;case 3:component.blockData[offset+z]?component.blockData[offset+z]+=readBit()<<successive:(component.blockData[offset+z]=successiveACNextValue<<successive,successiveACState=0);break;case 4:component.blockData[offset+z]&&(component.blockData[offset+z]+=readBit()<<successive)}k++}4===successiveACState&&(eobrun--,0===eobrun&&(successiveACState=0))}function decodeMcu(component,decode,mcu,row,col){var mcuRow=mcu/mcusPerLine|0,mcuCol=mcu%mcusPerLine,blockRow=mcuRow*component.v+row,blockCol=mcuCol*component.h+col,offset=getBlockBufferOffset(component,blockRow,blockCol);decode(component,offset)}function decodeBlock(component,decode,mcu){var blockRow=mcu/component.blocksPerLine|0,blockCol=mcu%component.blocksPerLine,offset=getBlockBufferOffset(component,blockRow,blockCol);decode(component,offset)}var successiveACNextValue,component,i,j,k,n,decodeFn,mcusPerLine=(frame.precision,frame.samplesPerLine,frame.scanLines,frame.mcusPerLine),progressive=frame.progressive,startOffset=(frame.maxH,frame.maxV,offset),bitsData=0,bitsCount=0,eobrun=0,successiveACState=0,componentsLength=components.length;decodeFn=progressive?0===spectralStart?0===successivePrev?decodeDCFirst:decodeDCSuccessive:0===successivePrev?decodeACFirst:decodeACSuccessive:decodeBaseline;var marker,mcuExpected,mcu=0;mcuExpected=1===componentsLength?components[0].blocksPerLine*components[0].blocksPerColumn:mcusPerLine*frame.mcusPerColumn,resetInterval||(resetInterval=mcuExpected);for(var h,v;mcuExpected>mcu;){for(i=0;componentsLength>i;i++)components[i].pred=0;if(eobrun=0,1===componentsLength)for(component=components[0],n=0;resetInterval>n;n++)decodeBlock(component,decodeFn,mcu),mcu++;else for(n=0;resetInterval>n;n++){for(i=0;componentsLength>i;i++)for(component=components[i],h=component.h,v=component.v,j=0;v>j;j++)for(k=0;h>k;k++)decodeMcu(component,decodeFn,mcu,j,k);mcu++}if(bitsCount=0,marker=data[offset]<<8|data[offset+1],65280>=marker)throw"marker was not found";if(!(marker>=65488&&65495>=marker))break;offset+=2}return offset-startOffset}function quantizeAndInverse(component,blockBufferOffset,p){for(var v0,v1,v2,v3,v4,v5,v6,v7,p0,p1,p2,p3,p4,p5,p6,p7,t,qt=component.quantizationTable,blockData=component.blockData,row=0;64>row;row+=8)p0=blockData[blockBufferOffset+row],p1=blockData[blockBufferOffset+row+1],p2=blockData[blockBufferOffset+row+2],p3=blockData[blockBufferOffset+row+3],p4=blockData[blockBufferOffset+row+4],p5=blockData[blockBufferOffset+row+5],p6=blockData[blockBufferOffset+row+6],p7=blockData[blockBufferOffset+row+7],p0*=qt[row],0!==(p1|p2|p3|p4|p5|p6|p7)?(p1*=qt[row+1],p2*=qt[row+2],p3*=qt[row+3],p4*=qt[row+4],p5*=qt[row+5],p6*=qt[row+6],p7*=qt[row+7],v0=dctSqrt2*p0+128>>8,v1=dctSqrt2*p4+128>>8,v2=p2,v3=p6,v4=dctSqrt1d2*(p1-p7)+128>>8,v7=dctSqrt1d2*(p1+p7)+128>>8,v5=p3<<4,v6=p5<<4,v0=v0+v1+1>>1,v1=v0-v1,t=v2*dctSin6+v3*dctCos6+128>>8,v2=v2*dctCos6-v3*dctSin6+128>>8,v3=t,v4=v4+v6+1>>1,v6=v4-v6,v7=v7+v5+1>>1,v5=v7-v5,v0=v0+v3+1>>1,v3=v0-v3,v1=v1+v2+1>>1,v2=v1-v2,t=v4*dctSin3+v7*dctCos3+2048>>12,v4=v4*dctCos3-v7*dctSin3+2048>>12,v7=t,t=v5*dctSin1+v6*dctCos1+2048>>12,v5=v5*dctCos1-v6*dctSin1+2048>>12,v6=t,p[row]=v0+v7,p[row+7]=v0-v7,p[row+1]=v1+v6,p[row+6]=v1-v6,p[row+2]=v2+v5,p[row+5]=v2-v5,p[row+3]=v3+v4,p[row+4]=v3-v4):(t=dctSqrt2*p0+512>>10,p[row]=t,p[row+1]=t,p[row+2]=t,p[row+3]=t,p[row+4]=t,p[row+5]=t,p[row+6]=t,p[row+7]=t);for(var col=0;8>col;++col)p0=p[col],p1=p[col+8],p2=p[col+16],p3=p[col+24],p4=p[col+32],p5=p[col+40],p6=p[col+48],p7=p[col+56],0!==(p1|p2|p3|p4|p5|p6|p7)?(v0=dctSqrt2*p0+2048>>12,v1=dctSqrt2*p4+2048>>12,v2=p2,v3=p6,v4=dctSqrt1d2*(p1-p7)+2048>>12,v7=dctSqrt1d2*(p1+p7)+2048>>12,v5=p3,v6=p5,v0=(v0+v1+1>>1)+4112,v1=v0-v1,t=v2*dctSin6+v3*dctCos6+2048>>12,v2=v2*dctCos6-v3*dctSin6+2048>>12,v3=t,v4=v4+v6+1>>1,v6=v4-v6,v7=v7+v5+1>>1,v5=v7-v5,v0=v0+v3+1>>1,v3=v0-v3,v1=v1+v2+1>>1,v2=v1-v2,t=v4*dctSin3+v7*dctCos3+2048>>12,v4=v4*dctCos3-v7*dctSin3+2048>>12,v7=t,t=v5*dctSin1+v6*dctCos1+2048>>12,v5=v5*dctCos1-v6*dctSin1+2048>>12,v6=t,p0=v0+v7,p7=v0-v7,p1=v1+v6,p6=v1-v6,p2=v2+v5,p5=v2-v5,p3=v3+v4,p4=v3-v4,p0=16>p0?0:p0>=4080?255:p0>>4,p1=16>p1?0:p1>=4080?255:p1>>4,p2=16>p2?0:p2>=4080?255:p2>>4,p3=16>p3?0:p3>=4080?255:p3>>4,p4=16>p4?0:p4>=4080?255:p4>>4,p5=16>p5?0:p5>=4080?255:p5>>4,p6=16>p6?0:p6>=4080?255:p6>>4,p7=16>p7?0:p7>=4080?255:p7>>4,blockData[blockBufferOffset+col]=p0,blockData[blockBufferOffset+col+8]=p1,blockData[blockBufferOffset+col+16]=p2,blockData[blockBufferOffset+col+24]=p3,blockData[blockBufferOffset+col+32]=p4,blockData[blockBufferOffset+col+40]=p5,blockData[blockBufferOffset+col+48]=p6,blockData[blockBufferOffset+col+56]=p7):(t=dctSqrt2*p0+8192>>14,t=-2040>t?0:t>=2024?255:t+2056>>4,blockData[blockBufferOffset+col]=t,blockData[blockBufferOffset+col+8]=t,blockData[blockBufferOffset+col+16]=t,blockData[blockBufferOffset+col+24]=t,blockData[blockBufferOffset+col+32]=t,blockData[blockBufferOffset+col+40]=t,blockData[blockBufferOffset+col+48]=t,blockData[blockBufferOffset+col+56]=t)}function buildComponentData(frame,component){for(var blocksPerLine=component.blocksPerLine,blocksPerColumn=component.blocksPerColumn,computationBuffer=new Int16Array(64),blockRow=0;blocksPerColumn>blockRow;blockRow++)for(var blockCol=0;blocksPerLine>blockCol;blockCol++){var offset=getBlockBufferOffset(component,blockRow,blockCol);quantizeAndInverse(component,offset,computationBuffer)}return component.blockData}function clamp0to255(a){return 0>=a?0:a>=255?255:a}var dctZigZag=new Uint8Array([0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63]),dctCos1=4017,dctSin1=799,dctCos3=3406,dctSin3=2276,dctCos6=1567,dctSin6=3784,dctSqrt2=5793,dctSqrt1d2=2896;return constructor.prototype={parse:function(data){function readUint16(){var value=data[offset]<<8|data[offset+1];return offset+=2,value}function readDataBlock(){var length=readUint16(),array=data.subarray(offset,offset+length-2);return offset+=array.length,array}function prepareComponents(frame){for(var mcusPerLine=Math.ceil(frame.samplesPerLine/8/frame.maxH),mcusPerColumn=Math.ceil(frame.scanLines/8/frame.maxV),i=0;i<frame.components.length;i++){component=frame.components[i];var blocksPerLine=Math.ceil(Math.ceil(frame.samplesPerLine/8)*component.h/frame.maxH),blocksPerColumn=Math.ceil(Math.ceil(frame.scanLines/8)*component.v/frame.maxV),blocksPerLineForMcu=mcusPerLine*component.h,blocksPerColumnForMcu=mcusPerColumn*component.v,blocksBufferSize=64*blocksPerColumnForMcu*(blocksPerLineForMcu+1);component.blockData=new Int16Array(blocksBufferSize),component.blocksPerLine=blocksPerLine,component.blocksPerColumn=blocksPerColumn}frame.mcusPerLine=mcusPerLine,frame.mcusPerColumn=mcusPerColumn}var frame,resetInterval,offset=0,jfif=(data.length,null),adobe=null,quantizationTables=[],huffmanTablesAC=[],huffmanTablesDC=[],fileMarker=readUint16();if(65496!==fileMarker)throw"SOI not found";for(fileMarker=readUint16();65497!==fileMarker;){var i,j,l;switch(fileMarker){case 65504:case 65505:case 65506:case 65507:case 65508:case 65509:case 65510:case 65511:case 65512:case 65513:case 65514:case 65515:case 65516:case 65517:case 65518:case 65519:case 65534:var appData=readDataBlock();65504===fileMarker&&74===appData[0]&&70===appData[1]&&73===appData[2]&&70===appData[3]&&0===appData[4]&&(jfif={version:{major:appData[5],minor:appData[6]},densityUnits:appData[7],xDensity:appData[8]<<8|appData[9],yDensity:appData[10]<<8|appData[11],thumbWidth:appData[12],thumbHeight:appData[13],thumbData:appData.subarray(14,14+3*appData[12]*appData[13])}),65518===fileMarker&&65===appData[0]&&100===appData[1]&&111===appData[2]&&98===appData[3]&&101===appData[4]&&0===appData[5]&&(adobe={version:appData[6],flags0:appData[7]<<8|appData[8],flags1:appData[9]<<8|appData[10],transformCode:appData[11]});break;case 65499:for(var z,quantizationTablesLength=readUint16(),quantizationTablesEnd=quantizationTablesLength+offset-2;quantizationTablesEnd>offset;){var quantizationTableSpec=data[offset++],tableData=new Uint16Array(64);if(quantizationTableSpec>>4===0)for(j=0;64>j;j++)z=dctZigZag[j],tableData[z]=data[offset++];else{if(quantizationTableSpec>>4!==1)throw"DQT: invalid table spec";for(j=0;64>j;j++)z=dctZigZag[j],tableData[z]=readUint16()}quantizationTables[15&quantizationTableSpec]=tableData}break;case 65472:case 65473:case 65474:if(frame)throw"Only single frame JPEGs supported";readUint16(),frame={},frame.extended=65473===fileMarker,frame.progressive=65474===fileMarker,frame.precision=data[offset++],frame.scanLines=readUint16(),frame.samplesPerLine=readUint16(),frame.components=[],frame.componentIds={};var componentId,componentsCount=data[offset++],maxH=0,maxV=0;for(i=0;componentsCount>i;i++){componentId=data[offset];var h=data[offset+1]>>4,v=15&data[offset+1];h>maxH&&(maxH=h),v>maxV&&(maxV=v);var qId=data[offset+2];l=frame.components.push({h:h,v:v,quantizationTable:quantizationTables[qId]}),frame.componentIds[componentId]=l-1,offset+=3}frame.maxH=maxH,frame.maxV=maxV,prepareComponents(frame);break;case 65476:var huffmanLength=readUint16();for(i=2;huffmanLength>i;){var huffmanTableSpec=data[offset++],codeLengths=new Uint8Array(16),codeLengthSum=0;for(j=0;16>j;j++,offset++)codeLengthSum+=codeLengths[j]=data[offset];var huffmanValues=new Uint8Array(codeLengthSum);for(j=0;codeLengthSum>j;j++,offset++)huffmanValues[j]=data[offset];i+=17+codeLengthSum,(huffmanTableSpec>>4===0?huffmanTablesDC:huffmanTablesAC)[15&huffmanTableSpec]=buildHuffmanTable(codeLengths,huffmanValues)}break;case 65501:readUint16(),resetInterval=readUint16();break;case 65498:var component,selectorsCount=(readUint16(),data[offset++]),components=[];for(i=0;selectorsCount>i;i++){var componentIndex=frame.componentIds[data[offset++]];component=frame.components[componentIndex];var tableSpec=data[offset++];component.huffmanTableDC=huffmanTablesDC[tableSpec>>4],component.huffmanTableAC=huffmanTablesAC[15&tableSpec],components.push(component)}var spectralStart=data[offset++],spectralEnd=data[offset++],successiveApproximation=data[offset++],processed=decodeScan(data,offset,frame,components,resetInterval,spectralStart,spectralEnd,successiveApproximation>>4,15&successiveApproximation);offset+=processed;break;default:if(255===data[offset-3]&&data[offset-2]>=192&&data[offset-2]<=254){offset-=3;break}throw"unknown JPEG marker "+fileMarker.toString(16)}fileMarker=readUint16()}for(this.width=frame.samplesPerLine,this.height=frame.scanLines,this.jfif=jfif,this.adobe=adobe,this.components=[],i=0;i<frame.components.length;i++)component=frame.components[i],this.components.push({output:buildComponentData(frame,component),scaleX:component.h/frame.maxH,scaleY:component.v/frame.maxV,blocksPerLine:component.blocksPerLine,blocksPerColumn:component.blocksPerColumn});this.numComponents=this.components.length},_getLinearizedBlockData:function(width,height){var component,componentScaleX,componentScaleY,blocksPerScanline,x,y,i,j,k,index,output,scaleX=this.width/width,scaleY=this.height/height,offset=0,numComponents=this.components.length,dataLength=width*height*numComponents,data=new Uint8Array(dataLength),xScaleBlockOffset=new Uint32Array(width),mask3LSB=4294967288;for(i=0;numComponents>i;i++){for(component=this.components[i],componentScaleX=component.scaleX*scaleX,componentScaleY=component.scaleY*scaleY,offset=i,output=component.output,blocksPerScanline=component.blocksPerLine+1<<3,x=0;width>x;x++)j=0|x*componentScaleX,xScaleBlockOffset[x]=(j&mask3LSB)<<3|7&j;for(y=0;height>y;y++)for(j=0|y*componentScaleY,index=blocksPerScanline*(j&mask3LSB)|(7&j)<<3,x=0;width>x;x++)data[offset]=output[index+xScaleBlockOffset[x]],offset+=numComponents}var transform=this.decodeTransform;if(transform)for(i=0;dataLength>i;)for(j=0,k=0;numComponents>j;j++,i++,k+=2)data[i]=(data[i]*transform[k]>>8)+transform[k+1];return data},_isColorConversionNeeded:function(){return this.adobe&&this.adobe.transformCode?!0:3===this.numComponents?!0:!1},_convertYccToRgb:function(data){for(var Y,Cb,Cr,i=0,length=data.length;length>i;i+=3)Y=data[i],Cb=data[i+1],Cr=data[i+2],data[i]=clamp0to255(Y-179.456+1.402*Cr),data[i+1]=clamp0to255(Y+135.459-.344*Cb-.714*Cr),data[i+2]=clamp0to255(Y-226.816+1.772*Cb);return data},_convertYcckToRgb:function(data){for(var Y,Cb,Cr,k,CbCb,CbCr,CbY,Cbk,CrCr,Crk,CrY,YY,Yk,kk,offset=0,i=0,length=data.length;length>i;i+=4){Y=data[i],Cb=data[i+1],Cr=data[i+2],k=data[i+3],CbCb=Cb*Cb,CbCr=Cb*Cr,CbY=Cb*Y,Cbk=Cb*k,CrCr=Cr*Cr,Crk=Cr*k,CrY=Cr*Y,YY=Y*Y,Yk=Y*k,kk=k*k;var r=-122.67195406894-660635669420364e-19*CbCb+.000437130475926232*CbCr-54080610064599e-18*CbY+.00048449797120281*Cbk-.154362151871126*Cb-.000957964378445773*CrCr+.000817076911346625*CrY-.00477271405408747*Crk+1.53380253221734*Cr+.000961250184130688*YY-.00266257332283933*Yk+.48357088451265*Y-.000336197177618394*kk+.484791561490776*k,g=107.268039397724+219927104525741e-19*CbCb-.000640992018297945*CbCr+.000659397001245577*CbY+.000426105652938837*Cbk-.176491792462875*Cb-.000778269941513683*CrCr+.00130872261408275*CrY+.000770482631801132*Crk-.151051492775562*Cr+.00126935368114843*YY-.00265090189010898*Yk+.25802910206845*Y-.000318913117588328*kk-.213742400323665*k,b=-20.810012546947-.000570115196973677*CbCb-263409051004589e-19*CbCr+.0020741088115012*CbY-.00288260236853442*Cbk+.814272968359295*Cb-153496057440975e-19*CrCr-.000132689043961446*CrY+.000560833691242812*Crk-.195152027534049*Cr+.00174418132927582*YY-.00255243321439347*Yk+.116935020465145*Y-.000343531996510555*kk+.24165260232407*k;data[offset++]=clamp0to255(r),data[offset++]=clamp0to255(g),data[offset++]=clamp0to255(b)}return data},_convertYcckToCmyk:function(data){for(var Y,Cb,Cr,i=0,length=data.length;length>i;i+=4)Y=data[i],Cb=data[i+1],Cr=data[i+2],data[i]=clamp0to255(434.456-Y-1.402*Cr),data[i+1]=clamp0to255(119.541-Y+.344*Cb+.714*Cr),data[i+2]=clamp0to255(481.816-Y-1.772*Cb);return data},_convertCmykToRgb:function(data){for(var c,m,y,k,offset=0,min=-16581375,scale=1/255/255,i=0,length=data.length;length>i;i+=4){c=data[i],m=data[i+1],y=data[i+2],k=data[i+3];var r=c*(-4.387332384609988*c+54.48615194189176*m+18.82290502165302*y+212.25662451639585*k-72734.4411664936)+m*(1.7149763477362134*m-5.6096736904047315*y-17.873870861415444*k-1401.7366389350734)+y*(-2.5217340131683033*y-21.248923337353073*k+4465.541406466231)-k*(21.86122147463605*k+48317.86113160301),g=c*(8.841041422036149*c+60.118027045597366*m+6.871425592049007*y+31.159100130055922*k-20220.756542821975)+m*(-15.310361306967817*m+17.575251261109482*y+131.35250912493976*k-48691.05921601825)+y*(4.444339102852739*y+9.8632861493405*k-6341.191035517494)-k*(20.737325471181034*k+47890.15695978492),b=c*(.8842522430003296*c+8.078677503112928*m+30.89978309703729*y-.23883238689178934*k-3616.812083916688)+m*(10.49593273432072*m+63.02378494754052*y+50.606957656360734*k-28620.90484698408)+y*(.03296041114873217*y+115.60384449646641*k-49363.43385999684)-k*(22.33816807309886*k+45932.16563550634);data[offset++]=r>=0?255:min>=r?0:255+r*scale|0,data[offset++]=g>=0?255:min>=g?0:255+g*scale|0,data[offset++]=b>=0?255:min>=b?0:255+b*scale|0}return data},getData:function(width,height,forceRGBoutput){if(this.numComponents>4)throw"Unsupported color mode";var data=this._getLinearizedBlockData(width,height);if(3===this.numComponents)return this._convertYccToRgb(data);if(4===this.numComponents){if(this._isColorConversionNeeded())return forceRGBoutput?this._convertYcckToRgb(data):this._convertYcckToCmyk(data);if(forceRGBoutput)return this._convertCmykToRgb(data)}return data}},constructor}(),JpxImage=function(){function JpxImage(){this.failOnCorruptedImage=!1}function calculateComponentDimensions(component,siz){component.x0=Math.ceil(siz.XOsiz/component.XRsiz),component.x1=Math.ceil(siz.Xsiz/component.XRsiz),component.y0=Math.ceil(siz.YOsiz/component.YRsiz),component.y1=Math.ceil(siz.Ysiz/component.YRsiz),component.width=component.x1-component.x0,component.height=component.y1-component.y0}function calculateTileGrids(context,components){for(var tile,siz=context.SIZ,tiles=[],numXtiles=Math.ceil((siz.Xsiz-siz.XTOsiz)/siz.XTsiz),numYtiles=Math.ceil((siz.Ysiz-siz.YTOsiz)/siz.YTsiz),q=0;numYtiles>q;q++)for(var p=0;numXtiles>p;p++)tile={},tile.tx0=Math.max(siz.XTOsiz+p*siz.XTsiz,siz.XOsiz),tile.ty0=Math.max(siz.YTOsiz+q*siz.YTsiz,siz.YOsiz),tile.tx1=Math.min(siz.XTOsiz+(p+1)*siz.XTsiz,siz.Xsiz),tile.ty1=Math.min(siz.YTOsiz+(q+1)*siz.YTsiz,siz.Ysiz),tile.width=tile.tx1-tile.tx0,tile.height=tile.ty1-tile.ty0,tile.components=[],tiles.push(tile);context.tiles=tiles;for(var componentsCount=siz.Csiz,i=0,ii=componentsCount;ii>i;i++)for(var component=components[i],j=0,jj=tiles.length;jj>j;j++){var tileComponent={};tile=tiles[j],tileComponent.tcx0=Math.ceil(tile.tx0/component.XRsiz),tileComponent.tcy0=Math.ceil(tile.ty0/component.YRsiz),tileComponent.tcx1=Math.ceil(tile.tx1/component.XRsiz),tileComponent.tcy1=Math.ceil(tile.ty1/component.YRsiz),tileComponent.width=tileComponent.tcx1-tileComponent.tcx0,tileComponent.height=tileComponent.tcy1-tileComponent.tcy0,tile.components[i]=tileComponent}}function getBlocksDimensions(context,component,r){var codOrCoc=component.codingStyleParameters,result={};return codOrCoc.entropyCoderWithCustomPrecincts?(result.PPx=codOrCoc.precinctsSizes[r].PPx,result.PPy=codOrCoc.precinctsSizes[r].PPy):(result.PPx=15,result.PPy=15),result.xcb_=r>0?Math.min(codOrCoc.xcb,result.PPx-1):Math.min(codOrCoc.xcb,result.PPx),result.ycb_=r>0?Math.min(codOrCoc.ycb,result.PPy-1):Math.min(codOrCoc.ycb,result.PPy),result}function buildPrecincts(context,resolution,dimensions){var precinctWidth=1<<dimensions.PPx,precinctHeight=1<<dimensions.PPy,numprecinctswide=resolution.trx1>resolution.trx0?Math.ceil(resolution.trx1/precinctWidth)-Math.floor(resolution.trx0/precinctWidth):0,numprecinctshigh=resolution.try1>resolution.try0?Math.ceil(resolution.try1/precinctHeight)-Math.floor(resolution.try0/precinctHeight):0,numprecincts=numprecinctswide*numprecinctshigh,precinctXOffset=Math.floor(resolution.trx0/precinctWidth)*precinctWidth,precinctYOffset=Math.floor(resolution.try0/precinctHeight)*precinctHeight;resolution.precinctParameters={precinctXOffset:precinctXOffset,precinctYOffset:precinctYOffset,precinctWidth:precinctWidth,precinctHeight:precinctHeight,numprecinctswide:numprecinctswide,numprecinctshigh:numprecinctshigh,numprecincts:numprecincts}}function buildCodeblocks(context,subband,dimensions){var i,j,codeblock,precinctNumber,xcb_=dimensions.xcb_,ycb_=dimensions.ycb_,codeblockWidth=1<<xcb_,codeblockHeight=1<<ycb_,cbx0=subband.tbx0>>xcb_,cby0=subband.tby0>>ycb_,cbx1=subband.tbx1+codeblockWidth-1>>xcb_,cby1=subband.tby1+codeblockHeight-1>>ycb_,precinctParameters=subband.resolution.precinctParameters,codeblocks=[],precincts=[];for(j=cby0;cby1>j;j++)for(i=cbx0;cbx1>i;i++){codeblock={cbx:i,cby:j,tbx0:codeblockWidth*i,tby0:codeblockHeight*j,tbx1:codeblockWidth*(i+1),tby1:codeblockHeight*(j+1)};var pi=Math.floor((codeblock.tbx0-precinctParameters.precinctXOffset)/precinctParameters.precinctWidth),pj=Math.floor((codeblock.tby0-precinctParameters.precinctYOffset)/precinctParameters.precinctHeight);precinctNumber=pj+pi*precinctParameters.numprecinctswide,codeblock.tbx0_=Math.max(subband.tbx0,codeblock.tbx0),codeblock.tby0_=Math.max(subband.tby0,codeblock.tby0),codeblock.tbx1_=Math.min(subband.tbx1,codeblock.tbx1),codeblock.tby1_=Math.min(subband.tby1,codeblock.tby1),codeblock.precinctNumber=precinctNumber,codeblock.subbandType=subband.type,codeblock.Lblock=3,codeblocks.push(codeblock);var precinct=precincts[precinctNumber];void 0!==precinct?(i<precinct.cbxMin?precinct.cbxMin=i:i>precinct.cbxMax&&(precinct.cbxMax=i),j<precinct.cbyMin?precinct.cbxMin=j:j>precinct.cbyMax&&(precinct.cbyMax=j)):precincts[precinctNumber]=precinct={cbxMin:i,cbyMin:j,cbxMax:i,cbyMax:j},codeblock.precinct=precinct
}subband.codeblockParameters={codeblockWidth:xcb_,codeblockHeight:ycb_,numcodeblockwide:cbx1-cbx0+1,numcodeblockhigh:cby1-cby0+1},subband.codeblocks=codeblocks,subband.precincts=precincts}function createPacket(resolution,precinctNumber,layerNumber){for(var precinctCodeblocks=[],subbands=resolution.subbands,i=0,ii=subbands.length;ii>i;i++)for(var subband=subbands[i],codeblocks=subband.codeblocks,j=0,jj=codeblocks.length;jj>j;j++){var codeblock=codeblocks[j];codeblock.precinctNumber===precinctNumber&&precinctCodeblocks.push(codeblock)}return{layerNumber:layerNumber,codeblocks:precinctCodeblocks}}function LayerResolutionComponentPositionIterator(context){for(var siz=context.SIZ,tileIndex=context.currentTile.index,tile=context.tiles[tileIndex],layersCount=tile.codingStyleDefaultParameters.layersCount,componentsCount=siz.Csiz,maxDecompositionLevelsCount=0,q=0;componentsCount>q;q++)maxDecompositionLevelsCount=Math.max(maxDecompositionLevelsCount,tile.components[q].codingStyleParameters.decompositionLevelsCount);var l=0,r=0,i=0,k=0;this.nextPacket=function(){for(;layersCount>l;l++){for(;maxDecompositionLevelsCount>=r;r++){for(;componentsCount>i;i++){var component=tile.components[i];if(!(r>component.codingStyleParameters.decompositionLevelsCount)){for(var resolution=component.resolutions[r],numprecincts=resolution.precinctParameters.numprecincts;numprecincts>k;){var packet=createPacket(resolution,k,l);return k++,packet}k=0}}i=0}r=0}throw new Error("JPX Error: Out of packets")}}function ResolutionLayerComponentPositionIterator(context){for(var siz=context.SIZ,tileIndex=context.currentTile.index,tile=context.tiles[tileIndex],layersCount=tile.codingStyleDefaultParameters.layersCount,componentsCount=siz.Csiz,maxDecompositionLevelsCount=0,q=0;componentsCount>q;q++)maxDecompositionLevelsCount=Math.max(maxDecompositionLevelsCount,tile.components[q].codingStyleParameters.decompositionLevelsCount);var r=0,l=0,i=0,k=0;this.nextPacket=function(){for(;maxDecompositionLevelsCount>=r;r++){for(;layersCount>l;l++){for(;componentsCount>i;i++){var component=tile.components[i];if(!(r>component.codingStyleParameters.decompositionLevelsCount)){for(var resolution=component.resolutions[r],numprecincts=resolution.precinctParameters.numprecincts;numprecincts>k;){var packet=createPacket(resolution,k,l);return k++,packet}k=0}}i=0}l=0}throw new Error("JPX Error: Out of packets")}}function buildPackets(context){for(var siz=context.SIZ,tileIndex=context.currentTile.index,tile=context.tiles[tileIndex],componentsCount=siz.Csiz,c=0;componentsCount>c;c++){for(var component=tile.components[c],decompositionLevelsCount=component.codingStyleParameters.decompositionLevelsCount,resolutions=[],subbands=[],r=0;decompositionLevelsCount>=r;r++){var blocksDimensions=getBlocksDimensions(context,component,r),resolution={},scale=1<<decompositionLevelsCount-r;resolution.trx0=Math.ceil(component.tcx0/scale),resolution.try0=Math.ceil(component.tcy0/scale),resolution.trx1=Math.ceil(component.tcx1/scale),resolution.try1=Math.ceil(component.tcy1/scale),buildPrecincts(context,resolution,blocksDimensions),resolutions.push(resolution);var subband;if(0===r)subband={},subband.type="LL",subband.tbx0=Math.ceil(component.tcx0/scale),subband.tby0=Math.ceil(component.tcy0/scale),subband.tbx1=Math.ceil(component.tcx1/scale),subband.tby1=Math.ceil(component.tcy1/scale),subband.resolution=resolution,buildCodeblocks(context,subband,blocksDimensions),subbands.push(subband),resolution.subbands=[subband];else{var bscale=1<<decompositionLevelsCount-r+1,resolutionSubbands=[];subband={},subband.type="HL",subband.tbx0=Math.ceil(component.tcx0/bscale-.5),subband.tby0=Math.ceil(component.tcy0/bscale),subband.tbx1=Math.ceil(component.tcx1/bscale-.5),subband.tby1=Math.ceil(component.tcy1/bscale),subband.resolution=resolution,buildCodeblocks(context,subband,blocksDimensions),subbands.push(subband),resolutionSubbands.push(subband),subband={},subband.type="LH",subband.tbx0=Math.ceil(component.tcx0/bscale),subband.tby0=Math.ceil(component.tcy0/bscale-.5),subband.tbx1=Math.ceil(component.tcx1/bscale),subband.tby1=Math.ceil(component.tcy1/bscale-.5),subband.resolution=resolution,buildCodeblocks(context,subband,blocksDimensions),subbands.push(subband),resolutionSubbands.push(subband),subband={},subband.type="HH",subband.tbx0=Math.ceil(component.tcx0/bscale-.5),subband.tby0=Math.ceil(component.tcy0/bscale-.5),subband.tbx1=Math.ceil(component.tcx1/bscale-.5),subband.tby1=Math.ceil(component.tcy1/bscale-.5),subband.resolution=resolution,buildCodeblocks(context,subband,blocksDimensions),subbands.push(subband),resolutionSubbands.push(subband),resolution.subbands=resolutionSubbands}}component.resolutions=resolutions,component.subbands=subbands}var progressionOrder=tile.codingStyleDefaultParameters.progressionOrder;switch(progressionOrder){case 0:tile.packetsIterator=new LayerResolutionComponentPositionIterator(context);break;case 1:tile.packetsIterator=new ResolutionLayerComponentPositionIterator(context);break;default:throw new Error("JPX Error: Unsupported progression order "+progressionOrder)}}function parseTilePackets(context,data,offset,dataLength){function readBits(count){for(;count>bufferSize;){var b=data[offset+position];position++,skipNextBit?(buffer=buffer<<7|b,bufferSize+=7,skipNextBit=!1):(buffer=buffer<<8|b,bufferSize+=8),255===b&&(skipNextBit=!0)}return bufferSize-=count,buffer>>>bufferSize&(1<<count)-1}function alignToByte(){bufferSize=0,skipNextBit&&(position++,skipNextBit=!1)}function readCodingpasses(){if(0===readBits(1))return 1;if(0===readBits(1))return 2;var value=readBits(2);return 3>value?value+3:(value=readBits(5),31>value?value+6:(value=readBits(7),value+37))}for(var buffer,position=0,bufferSize=0,skipNextBit=!1,tileIndex=context.currentTile.index,tile=context.tiles[tileIndex],packetsIterator=tile.packetsIterator;dataLength>position;){var packet=packetsIterator.nextPacket();if(readBits(1)){for(var codeblock,layerNumber=packet.layerNumber,queue=[],i=0,ii=packet.codeblocks.length;ii>i;i++){codeblock=packet.codeblocks[i];var valueReady,precinct=codeblock.precinct,codeblockColumn=codeblock.cbx-precinct.cbxMin,codeblockRow=codeblock.cby-precinct.cbyMin,codeblockIncluded=!1,firstTimeInclusion=!1;if("included"in codeblock)codeblockIncluded=!!readBits(1);else{precinct=codeblock.precinct;var inclusionTree,zeroBitPlanesTree;if("inclusionTree"in precinct)inclusionTree=precinct.inclusionTree;else{var width=precinct.cbxMax-precinct.cbxMin+1,height=precinct.cbyMax-precinct.cbyMin+1;inclusionTree=new InclusionTree(width,height,layerNumber),zeroBitPlanesTree=new TagTree(width,height),precinct.inclusionTree=inclusionTree,precinct.zeroBitPlanesTree=zeroBitPlanesTree}if(inclusionTree.reset(codeblockColumn,codeblockRow,layerNumber))for(;;){if(!readBits(1)){inclusionTree.incrementValue(layerNumber);break}if(valueReady=!inclusionTree.nextLevel()){codeblock.included=!0,codeblockIncluded=firstTimeInclusion=!0;break}}}if(codeblockIncluded){if(firstTimeInclusion){for(zeroBitPlanesTree=precinct.zeroBitPlanesTree,zeroBitPlanesTree.reset(codeblockColumn,codeblockRow);;)if(readBits(1)){if(valueReady=!zeroBitPlanesTree.nextLevel())break}else zeroBitPlanesTree.incrementValue();codeblock.zeroBitPlanes=zeroBitPlanesTree.value}for(var codingpasses=readCodingpasses();readBits(1);)codeblock.Lblock++;var codingpassesLog2=log2(codingpasses),bits=(1<<codingpassesLog2>codingpasses?codingpassesLog2-1:codingpassesLog2)+codeblock.Lblock,codedDataLength=readBits(bits);queue.push({codeblock:codeblock,codingpasses:codingpasses,dataLength:codedDataLength})}}for(alignToByte();queue.length>0;){var packetItem=queue.shift();codeblock=packetItem.codeblock,"data"in codeblock||(codeblock.data=[]),codeblock.data.push({data:data,start:offset+position,end:offset+position+packetItem.dataLength,codingpasses:packetItem.codingpasses}),position+=packetItem.dataLength}}else alignToByte()}return position}function copyCoefficients(coefficients,levelWidth,levelHeight,subband,delta,mb,reversible,segmentationSymbolUsed){for(var x0=subband.tbx0,y0=subband.tby0,width=subband.tbx1-subband.tbx0,codeblocks=subband.codeblocks,right="H"===subband.type.charAt(0)?1:0,bottom="H"===subband.type.charAt(1)?levelWidth:0,i=0,ii=codeblocks.length;ii>i;++i){var codeblock=codeblocks[i],blockWidth=codeblock.tbx1_-codeblock.tbx0_,blockHeight=codeblock.tby1_-codeblock.tby0_;if(0!==blockWidth&&0!==blockHeight&&"data"in codeblock){var bitModel,currentCodingpassType;bitModel=new BitModel(blockWidth,blockHeight,codeblock.subbandType,codeblock.zeroBitPlanes,mb),currentCodingpassType=2;var j,jj,dataItem,data=codeblock.data,totalLength=0,codingpasses=0;for(j=0,jj=data.length;jj>j;j++)dataItem=data[j],totalLength+=dataItem.end-dataItem.start,codingpasses+=dataItem.codingpasses;var encodedData=new Uint8Array(totalLength),position=0;for(j=0,jj=data.length;jj>j;j++){dataItem=data[j];var chunk=dataItem.data.subarray(dataItem.start,dataItem.end);encodedData.set(chunk,position),position+=chunk.length}var decoder=new ArithmeticDecoder(encodedData,0,totalLength);for(bitModel.setDecoder(decoder),j=0;codingpasses>j;j++){switch(currentCodingpassType){case 0:bitModel.runSignificancePropogationPass();break;case 1:bitModel.runMagnitudeRefinementPass();break;case 2:bitModel.runCleanupPass(),segmentationSymbolUsed&&bitModel.checkSegmentationSymbol()}currentCodingpassType=(currentCodingpassType+1)%3}var k,n,nb,offset=codeblock.tbx0_-x0+(codeblock.tby0_-y0)*width,sign=bitModel.coefficentsSign,magnitude=bitModel.coefficentsMagnitude,bitsDecoded=bitModel.bitsDecoded,magnitudeCorrection=reversible?0:.5;position=0;var interleave="LL"!==subband.type;for(j=0;blockHeight>j;j++){var row=offset/width|0,levelOffset=2*row*(levelWidth-width)+right+bottom;for(k=0;blockWidth>k;k++){if(n=magnitude[position],0!==n){n=(n+magnitudeCorrection)*delta,0!==sign[position]&&(n=-n),nb=bitsDecoded[position];var pos=interleave?levelOffset+(offset<<1):offset;coefficients[pos]=reversible&&nb>=mb?n:n*(1<<mb-nb)}offset++,position++}offset+=width-blockWidth}}}}function transformTile(context,tile,c){for(var component=tile.components[c],codingStyleParameters=component.codingStyleParameters,quantizationParameters=component.quantizationParameters,decompositionLevelsCount=codingStyleParameters.decompositionLevelsCount,spqcds=quantizationParameters.SPqcds,scalarExpounded=quantizationParameters.scalarExpounded,guardBits=quantizationParameters.guardBits,segmentationSymbolUsed=codingStyleParameters.segmentationSymbolUsed,precision=context.components[c].precision,reversible=codingStyleParameters.reversibleTransformation,transform=reversible?new ReversibleTransform:new IrreversibleTransform,subbandCoefficients=[],b=0,i=0;decompositionLevelsCount>=i;i++){for(var resolution=component.resolutions[i],width=resolution.trx1-resolution.trx0,height=resolution.try1-resolution.try0,coefficients=new Float32Array(width*height),j=0,jj=resolution.subbands.length;jj>j;j++){var mu,epsilon;scalarExpounded?(mu=spqcds[b].mu,epsilon=spqcds[b].epsilon,b++):(mu=spqcds[0].mu,epsilon=spqcds[0].epsilon+(i>0?1-i:0));var subband=resolution.subbands[j],gainLog2=SubbandsGainLog2[subband.type],delta=reversible?1:Math.pow(2,precision+gainLog2-epsilon)*(1+mu/2048),mb=guardBits+epsilon-1;copyCoefficients(coefficients,width,height,subband,delta,mb,reversible,segmentationSymbolUsed)}subbandCoefficients.push({width:width,height:height,items:coefficients})}var result=transform.calculate(subbandCoefficients,component.tcx0,component.tcy0);return{left:component.tcx0,top:component.tcy0,width:result.width,height:result.height,items:result.items}}function transformComponents(context){for(var siz=context.SIZ,components=context.components,componentsCount=siz.Csiz,resultImages=[],i=0,ii=context.tiles.length;ii>i;i++){var c,tile=context.tiles[i],transformedTiles=[];for(c=0;componentsCount>c;c++)transformedTiles[c]=transformTile(context,tile,c);var shift,offset,max,min,maxK,j,jj,y0,y1,y2,r,g,b,k,val,tile0=transformedTiles[0],out=new Uint8Array(tile0.items.length*componentsCount),result={left:tile0.left,top:tile0.top,width:tile0.width,height:tile0.height,items:out},pos=0;if(tile.codingStyleDefaultParameters.multipleComponentTransform){var fourComponents=4===componentsCount,y0items=transformedTiles[0].items,y1items=transformedTiles[1].items,y2items=transformedTiles[2].items,y3items=fourComponents?transformedTiles[3].items:null;shift=components[0].precision-8,offset=(128<<shift)+.5,max=255*(1<<shift),maxK=.5*max,min=-maxK;var component0=tile.components[0],alpha01=componentsCount-3;if(jj=y0items.length,component0.codingStyleParameters.reversibleTransformation)for(j=0;jj>j;j++,pos+=alpha01)y0=y0items[j]+offset,y1=y1items[j],y2=y2items[j],g=y0-(y2+y1>>2),r=g+y2,b=g+y1,out[pos++]=0>=r?0:r>=max?255:r>>shift,out[pos++]=0>=g?0:g>=max?255:g>>shift,out[pos++]=0>=b?0:b>=max?255:b>>shift;else for(j=0;jj>j;j++,pos+=alpha01)y0=y0items[j]+offset,y1=y1items[j],y2=y2items[j],r=y0+1.402*y2,g=y0-.34413*y1-.71414*y2,b=y0+1.772*y1,out[pos++]=0>=r?0:r>=max?255:r>>shift,out[pos++]=0>=g?0:g>=max?255:g>>shift,out[pos++]=0>=b?0:b>=max?255:b>>shift;if(fourComponents)for(j=0,pos=3;jj>j;j++,pos+=4)k=y3items[j],out[pos]=min>=k?0:k>=maxK?255:k+offset>>shift}else for(c=0;componentsCount>c;c++){var items=transformedTiles[c].items;for(shift=components[c].precision-8,offset=(128<<shift)+.5,max=127.5*(1<<shift),min=-max,pos=c,j=0,jj=items.length;jj>j;j++)val=items[j],out[pos]=min>=val?0:val>=max?255:val+offset>>shift,pos+=componentsCount}resultImages.push(result)}return resultImages}function initializeTile(context,tileIndex){for(var siz=context.SIZ,componentsCount=siz.Csiz,tile=context.tiles[tileIndex],c=0;componentsCount>c;c++){var component=tile.components[c],qcdOrQcc=c in context.currentTile.QCC?context.currentTile.QCC[c]:context.currentTile.QCD;component.quantizationParameters=qcdOrQcc;var codOrCoc=c in context.currentTile.COC?context.currentTile.COC[c]:context.currentTile.COD;component.codingStyleParameters=codOrCoc}tile.codingStyleDefaultParameters=context.currentTile.COD}var SubbandsGainLog2={LL:0,LH:1,HL:1,HH:2};JpxImage.prototype={parse:function(data){var head=readUint16(data,0);if(65359===head)return void this.parseCodestream(data,0,data.length);for(var position=0,length=data.length;length>position;){var headerSize=8,lbox=readUint32(data,position),tbox=readUint32(data,position+4);if(position+=headerSize,1===lbox&&(lbox=4294967296*readUint32(data,position)+readUint32(data,position+4),position+=8,headerSize+=8),0===lbox&&(lbox=length-position+headerSize),headerSize>lbox)throw new Error("JPX Error: Invalid box field size");var dataLength=lbox-headerSize,jumpDataLength=!0;switch(tbox){case 1783634458:break;case 1785737832:jumpDataLength=!1;break;case 1668246642:break;case 1785737827:this.parseCodestream(data,position,position+dataLength)}jumpDataLength&&(position+=dataLength)}},parseImageProperties:function(stream){for(var newByte=stream.getByte();newByte>=0;){var oldByte=newByte;newByte=stream.getByte();var code=oldByte<<8|newByte;if(65361===code){stream.skip(4);var Xsiz=stream.getInt32()>>>0,Ysiz=stream.getInt32()>>>0,XOsiz=stream.getInt32()>>>0,YOsiz=stream.getInt32()>>>0;stream.skip(16);var Csiz=stream.getUint16();return this.width=Xsiz-XOsiz,this.height=Ysiz-YOsiz,this.componentsCount=Csiz,void(this.bitsPerComponent=8)}}throw new Error("JPX Error: No size marker found in JPX stream")},parseCodestream:function(data,start,end){var context={};try{for(var doNotRecover=!1,position=start;end>position+1;){var code=readUint16(data,position);position+=2;var j,sqcd,spqcds,spqcdSize,scalarExpounded,tile,length=0;switch(code){case 65359:context.mainHeader=!0;break;case 65497:break;case 65361:length=readUint16(data,position);var siz={};siz.Xsiz=readUint32(data,position+4),siz.Ysiz=readUint32(data,position+8),siz.XOsiz=readUint32(data,position+12),siz.YOsiz=readUint32(data,position+16),siz.XTsiz=readUint32(data,position+20),siz.YTsiz=readUint32(data,position+24),siz.XTOsiz=readUint32(data,position+28),siz.YTOsiz=readUint32(data,position+32);var componentsCount=readUint16(data,position+36);siz.Csiz=componentsCount;var components=[];j=position+38;for(var i=0;componentsCount>i;i++){var component={precision:(127&data[j])+1,isSigned:!!(128&data[j]),XRsiz:data[j+1],YRsiz:data[j+1]};calculateComponentDimensions(component,siz),components.push(component)}context.SIZ=siz,context.components=components,calculateTileGrids(context,components),context.QCC=[],context.COC=[];break;case 65365:var Ltlm=readUint16(data,position);position+=Ltlm;break;case 65372:length=readUint16(data,position);var qcd={};switch(j=position+2,sqcd=data[j++],31&sqcd){case 0:spqcdSize=8,scalarExpounded=!0;break;case 1:spqcdSize=16,scalarExpounded=!1;break;case 2:spqcdSize=16,scalarExpounded=!0;break;default:throw new Error("JPX Error: Invalid SQcd value "+sqcd)}for(qcd.noQuantization=8===spqcdSize,qcd.scalarExpounded=scalarExpounded,qcd.guardBits=sqcd>>5,spqcds=[];length+position>j;){var spqcd={};8===spqcdSize?(spqcd.epsilon=data[j++]>>3,spqcd.mu=0):(spqcd.epsilon=data[j]>>3,spqcd.mu=(7&data[j])<<8|data[j+1],j+=2),spqcds.push(spqcd)}qcd.SPqcds=spqcds,context.mainHeader?context.QCD=qcd:(context.currentTile.QCD=qcd,context.currentTile.QCC=[]);break;case 65373:length=readUint16(data,position);var qcc={};j=position+2;var cqcc;switch(context.SIZ.Csiz<257?cqcc=data[j++]:(cqcc=readUint16(data,j),j+=2),sqcd=data[j++],31&sqcd){case 0:spqcdSize=8,scalarExpounded=!0;break;case 1:spqcdSize=16,scalarExpounded=!1;break;case 2:spqcdSize=16,scalarExpounded=!0;break;default:throw new Error("JPX Error: Invalid SQcd value "+sqcd)}for(qcc.noQuantization=8===spqcdSize,qcc.scalarExpounded=scalarExpounded,qcc.guardBits=sqcd>>5,spqcds=[];length+position>j;)spqcd={},8===spqcdSize?(spqcd.epsilon=data[j++]>>3,spqcd.mu=0):(spqcd.epsilon=data[j]>>3,spqcd.mu=(7&data[j])<<8|data[j+1],j+=2),spqcds.push(spqcd);qcc.SPqcds=spqcds,context.mainHeader?context.QCC[cqcc]=qcc:context.currentTile.QCC[cqcc]=qcc;break;case 65362:length=readUint16(data,position);var cod={};j=position+2;var scod=data[j++];cod.entropyCoderWithCustomPrecincts=!!(1&scod),cod.sopMarkerUsed=!!(2&scod),cod.ephMarkerUsed=!!(4&scod),cod.progressionOrder=data[j++],cod.layersCount=readUint16(data,j),j+=2,cod.multipleComponentTransform=data[j++],cod.decompositionLevelsCount=data[j++],cod.xcb=(15&data[j++])+2,cod.ycb=(15&data[j++])+2;var blockStyle=data[j++];if(cod.selectiveArithmeticCodingBypass=!!(1&blockStyle),cod.resetContextProbabilities=!!(2&blockStyle),cod.terminationOnEachCodingPass=!!(4&blockStyle),cod.verticalyStripe=!!(8&blockStyle),cod.predictableTermination=!!(16&blockStyle),cod.segmentationSymbolUsed=!!(32&blockStyle),cod.reversibleTransformation=data[j++],cod.entropyCoderWithCustomPrecincts){for(var precinctsSizes=[];length+position>j;){var precinctsSize=data[j++];precinctsSizes.push({PPx:15&precinctsSize,PPy:precinctsSize>>4})}cod.precinctsSizes=precinctsSizes}var unsupported=[];if(cod.sopMarkerUsed&&unsupported.push("sopMarkerUsed"),cod.ephMarkerUsed&&unsupported.push("ephMarkerUsed"),cod.selectiveArithmeticCodingBypass&&unsupported.push("selectiveArithmeticCodingBypass"),cod.resetContextProbabilities&&unsupported.push("resetContextProbabilities"),cod.terminationOnEachCodingPass&&unsupported.push("terminationOnEachCodingPass"),cod.verticalyStripe&&unsupported.push("verticalyStripe"),cod.predictableTermination&&unsupported.push("predictableTermination"),unsupported.length>0)throw doNotRecover=!0,new Error("JPX Error: Unsupported COD options ("+unsupported.join(", ")+")");context.mainHeader?context.COD=cod:(context.currentTile.COD=cod,context.currentTile.COC=[]);break;case 65424:length=readUint16(data,position),tile={},tile.index=readUint16(data,position+2),tile.length=readUint32(data,position+4),tile.dataEnd=tile.length+position-2,tile.partIndex=data[position+8],tile.partsCount=data[position+9],context.mainHeader=!1,0===tile.partIndex&&(tile.COD=context.COD,tile.COC=context.COC.slice(0),tile.QCD=context.QCD,tile.QCC=context.QCC.slice(0)),context.currentTile=tile;break;case 65427:tile=context.currentTile,0===tile.partIndex&&(initializeTile(context,tile.index),buildPackets(context)),length=tile.dataEnd-position,parseTilePackets(context,data,position,length);break;case 65380:length=readUint16(data,position);break;case 65363:throw new Error("JPX Error: Codestream code 0xFF53 (COC) is not implemented");default:throw new Error("JPX Error: Unknown codestream code: "+code.toString(16))}position+=length}}catch(e){if(doNotRecover||this.failOnCorruptedImage)throw e;warn("Trying to recover from "+e.message)}this.tiles=transformComponents(context),this.width=context.SIZ.Xsiz-context.SIZ.XOsiz,this.height=context.SIZ.Ysiz-context.SIZ.YOsiz,this.componentsCount=context.SIZ.Csiz}};var TagTree=function(){function TagTree(width,height){var levelsLength=log2(Math.max(width,height))+1;this.levels=[];for(var i=0;levelsLength>i;i++){var level={width:width,height:height,items:[]};this.levels.push(level),width=Math.ceil(width/2),height=Math.ceil(height/2)}}return TagTree.prototype={reset:function(i,j){for(var level,currentLevel=0,value=0;currentLevel<this.levels.length;){level=this.levels[currentLevel];var index=i+j*level.width;if(index in level.items){value=level.items[index];break}level.index=index,i>>=1,j>>=1,currentLevel++}currentLevel--,level=this.levels[currentLevel],level.items[level.index]=value,this.currentLevel=currentLevel,delete this.value},incrementValue:function(){var level=this.levels[this.currentLevel];level.items[level.index]++},nextLevel:function(){var currentLevel=this.currentLevel,level=this.levels[currentLevel],value=level.items[level.index];return currentLevel--,0>currentLevel?(this.value=value,!1):(this.currentLevel=currentLevel,level=this.levels[currentLevel],level.items[level.index]=value,!0)}},TagTree}(),InclusionTree=function(){function InclusionTree(width,height,defaultValue){var levelsLength=log2(Math.max(width,height))+1;this.levels=[];for(var i=0;levelsLength>i;i++){for(var items=new Uint8Array(width*height),j=0,jj=items.length;jj>j;j++)items[j]=defaultValue;var level={width:width,height:height,items:items};this.levels.push(level),width=Math.ceil(width/2),height=Math.ceil(height/2)}}return InclusionTree.prototype={reset:function(i,j,stopValue){for(var currentLevel=0;currentLevel<this.levels.length;){var level=this.levels[currentLevel],index=i+j*level.width;level.index=index;var value=level.items[index];if(255===value)break;if(value>stopValue)return this.currentLevel=currentLevel,this.propagateValues(),!1;i>>=1,j>>=1,currentLevel++}return this.currentLevel=currentLevel-1,!0},incrementValue:function(stopValue){var level=this.levels[this.currentLevel];level.items[level.index]=stopValue+1,this.propagateValues()},propagateValues:function(){for(var levelIndex=this.currentLevel,level=this.levels[levelIndex],currentValue=level.items[level.index];--levelIndex>=0;)level=this.levels[levelIndex],level.items[level.index]=currentValue},nextLevel:function(){var currentLevel=this.currentLevel,level=this.levels[currentLevel],value=level.items[level.index];return level.items[level.index]=255,currentLevel--,0>currentLevel?!1:(this.currentLevel=currentLevel,level=this.levels[currentLevel],level.items[level.index]=value,!0)}},InclusionTree}(),BitModel=function(){function BitModel(width,height,subband,zeroBitPlanes,mb){this.width=width,this.height=height,this.contextLabelTable="HH"===subband?HHContextLabel:"HL"===subband?HLContextLabel:LLAndLHContextsLabel;var coefficientCount=width*height;this.neighborsSignificance=new Uint8Array(coefficientCount),this.coefficentsSign=new Uint8Array(coefficientCount),this.coefficentsMagnitude=mb>14?new Uint32Array(coefficientCount):mb>6?new Uint16Array(coefficientCount):new Uint8Array(coefficientCount),this.processingFlags=new Uint8Array(coefficientCount);var bitsDecoded=new Uint8Array(coefficientCount);if(0!==zeroBitPlanes)for(var i=0;coefficientCount>i;i++)bitsDecoded[i]=zeroBitPlanes;this.bitsDecoded=bitsDecoded,this.reset()}var UNIFORM_CONTEXT=17,RUNLENGTH_CONTEXT=18,LLAndLHContextsLabel=new Uint8Array([0,5,8,0,3,7,8,0,4,7,8,0,0,0,0,0,1,6,8,0,3,7,8,0,4,7,8,0,0,0,0,0,2,6,8,0,3,7,8,0,4,7,8,0,0,0,0,0,2,6,8,0,3,7,8,0,4,7,8,0,0,0,0,0,2,6,8,0,3,7,8,0,4,7,8]),HLContextLabel=new Uint8Array([0,3,4,0,5,7,7,0,8,8,8,0,0,0,0,0,1,3,4,0,6,7,7,0,8,8,8,0,0,0,0,0,2,3,4,0,6,7,7,0,8,8,8,0,0,0,0,0,2,3,4,0,6,7,7,0,8,8,8,0,0,0,0,0,2,3,4,0,6,7,7,0,8,8,8]),HHContextLabel=new Uint8Array([0,1,2,0,1,2,2,0,2,2,2,0,0,0,0,0,3,4,5,0,4,5,5,0,5,5,5,0,0,0,0,0,6,7,7,0,7,7,7,0,7,7,7,0,0,0,0,0,8,8,8,0,8,8,8,0,8,8,8,0,0,0,0,0,8,8,8,0,8,8,8,0,8,8,8]);return BitModel.prototype={setDecoder:function(decoder){this.decoder=decoder},reset:function(){this.contexts=new Int8Array(19),this.contexts[0]=8,this.contexts[UNIFORM_CONTEXT]=92,this.contexts[RUNLENGTH_CONTEXT]=6},setNeighborsSignificance:function(row,column,index){var i,neighborsSignificance=this.neighborsSignificance,width=this.width,height=this.height,left=column>0,right=width>column+1;row>0&&(i=index-width,left&&(neighborsSignificance[i-1]+=16),right&&(neighborsSignificance[i+1]+=16),neighborsSignificance[i]+=4),height>row+1&&(i=index+width,left&&(neighborsSignificance[i-1]+=16),right&&(neighborsSignificance[i+1]+=16),neighborsSignificance[i]+=4),left&&(neighborsSignificance[index-1]+=1),right&&(neighborsSignificance[index+1]+=1),neighborsSignificance[index]|=128},runSignificancePropogationPass:function(){for(var decoder=this.decoder,width=this.width,height=this.height,coefficentsMagnitude=this.coefficentsMagnitude,coefficentsSign=this.coefficentsSign,neighborsSignificance=this.neighborsSignificance,processingFlags=this.processingFlags,contexts=this.contexts,labels=this.contextLabelTable,bitsDecoded=this.bitsDecoded,processedInverseMask=-2,processedMask=1,firstMagnitudeBitMask=2,i0=0;height>i0;i0+=4)for(var j=0;width>j;j++)for(var index=i0*width+j,i1=0;4>i1;i1++,index+=width){var i=i0+i1;if(i>=height)break;if(processingFlags[index]&=processedInverseMask,!coefficentsMagnitude[index]&&neighborsSignificance[index]){var contextLabel=labels[neighborsSignificance[index]],decision=decoder.readBit(contexts,contextLabel);if(decision){var sign=this.decodeSignBit(i,j,index);coefficentsSign[index]=sign,coefficentsMagnitude[index]=1,this.setNeighborsSignificance(i,j,index),processingFlags[index]|=firstMagnitudeBitMask}bitsDecoded[index]++,processingFlags[index]|=processedMask}}},decodeSignBit:function(row,column,index){var contribution,sign0,sign1,significance1,contextLabel,decoded,width=this.width,height=this.height,coefficentsMagnitude=this.coefficentsMagnitude,coefficentsSign=this.coefficentsSign;significance1=column>0&&0!==coefficentsMagnitude[index-1],width>column+1&&0!==coefficentsMagnitude[index+1]?(sign1=coefficentsSign[index+1],significance1?(sign0=coefficentsSign[index-1],contribution=1-sign1-sign0):contribution=1-sign1-sign1):significance1?(sign0=coefficentsSign[index-1],contribution=1-sign0-sign0):contribution=0;var horizontalContribution=3*contribution;return significance1=row>0&&0!==coefficentsMagnitude[index-width],height>row+1&&0!==coefficentsMagnitude[index+width]?(sign1=coefficentsSign[index+width],significance1?(sign0=coefficentsSign[index-width],contribution=1-sign1-sign0+horizontalContribution):contribution=1-sign1-sign1+horizontalContribution):significance1?(sign0=coefficentsSign[index-width],contribution=1-sign0-sign0+horizontalContribution):contribution=horizontalContribution,contribution>=0?(contextLabel=9+contribution,decoded=this.decoder.readBit(this.contexts,contextLabel)):(contextLabel=9-contribution,decoded=1^this.decoder.readBit(this.contexts,contextLabel)),decoded},runMagnitudeRefinementPass:function(){for(var indexNext,decoder=this.decoder,width=this.width,height=this.height,coefficentsMagnitude=this.coefficentsMagnitude,neighborsSignificance=this.neighborsSignificance,contexts=this.contexts,bitsDecoded=this.bitsDecoded,processingFlags=this.processingFlags,processedMask=1,firstMagnitudeBitMask=2,length=width*height,width4=4*width,index0=0;length>index0;index0=indexNext){indexNext=Math.min(length,index0+width4);for(var j=0;width>j;j++)for(var index=index0+j;indexNext>index;index+=width)if(coefficentsMagnitude[index]&&0===(processingFlags[index]&processedMask)){var contextLabel=16;if(0!==(processingFlags[index]&firstMagnitudeBitMask)){processingFlags[index]^=firstMagnitudeBitMask;var significance=127&neighborsSignificance[index];contextLabel=0===significance?15:14}var bit=decoder.readBit(contexts,contextLabel);coefficentsMagnitude[index]=coefficentsMagnitude[index]<<1|bit,bitsDecoded[index]++,processingFlags[index]|=processedMask}}},runCleanupPass:function(){for(var iNext,decoder=this.decoder,width=this.width,height=this.height,neighborsSignificance=this.neighborsSignificance,coefficentsMagnitude=this.coefficentsMagnitude,coefficentsSign=this.coefficentsSign,contexts=this.contexts,labels=this.contextLabelTable,bitsDecoded=this.bitsDecoded,processingFlags=this.processingFlags,processedMask=1,firstMagnitudeBitMask=2,oneRowDown=width,twoRowsDown=2*width,threeRowsDown=3*width,i0=0;height>i0;i0=iNext){iNext=Math.min(i0+4,height);for(var indexBase=i0*width,checkAllEmpty=height>i0+3,j=0;width>j;j++){var sign,index0=indexBase+j,allEmpty=checkAllEmpty&&0===processingFlags[index0]&&0===processingFlags[index0+oneRowDown]&&0===processingFlags[index0+twoRowsDown]&&0===processingFlags[index0+threeRowsDown]&&0===neighborsSignificance[index0]&&0===neighborsSignificance[index0+oneRowDown]&&0===neighborsSignificance[index0+twoRowsDown]&&0===neighborsSignificance[index0+threeRowsDown],i1=0,index=index0,i=i0;if(allEmpty){var hasSignificantCoefficent=decoder.readBit(contexts,RUNLENGTH_CONTEXT);if(!hasSignificantCoefficent){bitsDecoded[index0]++,bitsDecoded[index0+oneRowDown]++,bitsDecoded[index0+twoRowsDown]++,bitsDecoded[index0+threeRowsDown]++;continue}i1=decoder.readBit(contexts,UNIFORM_CONTEXT)<<1|decoder.readBit(contexts,UNIFORM_CONTEXT),0!==i1&&(i=i0+i1,index+=i1*width),sign=this.decodeSignBit(i,j,index),coefficentsSign[index]=sign,coefficentsMagnitude[index]=1,this.setNeighborsSignificance(i,j,index),processingFlags[index]|=firstMagnitudeBitMask,index=index0;for(var i2=i0;i>=i2;i2++,index+=width)bitsDecoded[index]++;i1++}for(i=i0+i1;iNext>i;i++,index+=width)if(!coefficentsMagnitude[index]&&0===(processingFlags[index]&processedMask)){var contextLabel=labels[neighborsSignificance[index]],decision=decoder.readBit(contexts,contextLabel);1===decision&&(sign=this.decodeSignBit(i,j,index),coefficentsSign[index]=sign,coefficentsMagnitude[index]=1,this.setNeighborsSignificance(i,j,index),processingFlags[index]|=firstMagnitudeBitMask),bitsDecoded[index]++}}}},checkSegmentationSymbol:function(){var decoder=this.decoder,contexts=this.contexts,symbol=decoder.readBit(contexts,UNIFORM_CONTEXT)<<3|decoder.readBit(contexts,UNIFORM_CONTEXT)<<2|decoder.readBit(contexts,UNIFORM_CONTEXT)<<1|decoder.readBit(contexts,UNIFORM_CONTEXT);if(10!==symbol)throw new Error("JPX Error: Invalid segmentation symbol")}},BitModel}(),Transform=function(){function Transform(){}return Transform.prototype.calculate=function(subbands,u0,v0){for(var ll=subbands[0],i=1,ii=subbands.length;ii>i;i++)ll=this.iterate(ll,subbands[i],u0,v0);return ll},Transform.prototype.extend=function(buffer,offset,size){var i1=offset-1,j1=offset+1,i2=offset+size-2,j2=offset+size;buffer[i1--]=buffer[j1++],buffer[j2++]=buffer[i2--],buffer[i1--]=buffer[j1++],buffer[j2++]=buffer[i2--],buffer[i1--]=buffer[j1++],buffer[j2++]=buffer[i2--],buffer[i1]=buffer[j1],buffer[j2]=buffer[i2]},Transform.prototype.iterate=function(ll,hl_lh_hh,u0,v0){var i,j,k,l,u,v,llWidth=ll.width,llHeight=ll.height,llItems=ll.items,width=hl_lh_hh.width,height=hl_lh_hh.height,items=hl_lh_hh.items;for(k=0,i=0;llHeight>i;i++)for(l=2*i*width,j=0;llWidth>j;j++,k++,l+=2)items[l]=llItems[k];llItems=ll.items=null;var bufferPadding=4,rowBuffer=new Float32Array(width+2*bufferPadding);if(1===width){if(0!==(1&u0))for(v=0,k=0;height>v;v++,k+=width)items[k]*=.5}else for(v=0,k=0;height>v;v++,k+=width)rowBuffer.set(items.subarray(k,k+width),bufferPadding),this.extend(rowBuffer,bufferPadding,width),this.filter(rowBuffer,bufferPadding,width),items.set(rowBuffer.subarray(bufferPadding,bufferPadding+width),k);
var numBuffers=16,colBuffers=[];for(i=0;numBuffers>i;i++)colBuffers.push(new Float32Array(height+2*bufferPadding));var b,currentBuffer=0;if(ll=bufferPadding+height,1===height){if(0!==(1&v0))for(u=0;width>u;u++)items[u]*=.5}else for(u=0;width>u;u++){if(0===currentBuffer){for(numBuffers=Math.min(width-u,numBuffers),k=u,l=bufferPadding;ll>l;k+=width,l++)for(b=0;numBuffers>b;b++)colBuffers[b][l]=items[k+b];currentBuffer=numBuffers}currentBuffer--;var buffer=colBuffers[currentBuffer];if(this.extend(buffer,bufferPadding,height),this.filter(buffer,bufferPadding,height),0===currentBuffer)for(k=u-numBuffers+1,l=bufferPadding;ll>l;k+=width,l++)for(b=0;numBuffers>b;b++)items[k+b]=colBuffers[b][l]}return{width:width,height:height,items:items}},Transform}(),IrreversibleTransform=function(){function IrreversibleTransform(){Transform.call(this)}return IrreversibleTransform.prototype=Object.create(Transform.prototype),IrreversibleTransform.prototype.filter=function(x,offset,length){var len=length>>1;offset=0|offset;var j,n,current,next,alpha=-1.586134342059924,beta=-.052980118572961,gamma=.882911075530934,delta=.443506852043971,K=1.230174104914001,K_=1/K;for(j=offset-3,n=len+4;n--;j+=2)x[j]*=K_;for(j=offset-2,current=delta*x[j-1],n=len+3;n--&&(next=delta*x[j+1],x[j]=K*x[j]-current-next,n--);j+=2)j+=2,current=delta*x[j+1],x[j]=K*x[j]-current-next;for(j=offset-1,current=gamma*x[j-1],n=len+2;n--&&(next=gamma*x[j+1],x[j]-=current+next,n--);j+=2)j+=2,current=gamma*x[j+1],x[j]-=current+next;for(j=offset,current=beta*x[j-1],n=len+1;n--&&(next=beta*x[j+1],x[j]-=current+next,n--);j+=2)j+=2,current=beta*x[j+1],x[j]-=current+next;if(0!==len)for(j=offset+1,current=alpha*x[j-1],n=len;n--&&(next=alpha*x[j+1],x[j]-=current+next,n--);j+=2)j+=2,current=alpha*x[j+1],x[j]-=current+next},IrreversibleTransform}(),ReversibleTransform=function(){function ReversibleTransform(){Transform.call(this)}return ReversibleTransform.prototype=Object.create(Transform.prototype),ReversibleTransform.prototype.filter=function(x,offset,length){var len=length>>1;offset=0|offset;var j,n;for(j=offset,n=len+1;n--;j+=2)x[j]-=x[j-1]+x[j+1]+2>>2;for(j=offset+1,n=len;n--;j+=2)x[j]+=x[j-1]+x[j+1]>>1},ReversibleTransform}();return JpxImage}(),Jbig2Image=function(){function ContextCache(){}function DecodingContext(data,start,end){this.data=data,this.start=start,this.end=end}function decodeInteger(contextCache,procedure,decoder){function readBits(length){for(var v=0,i=0;length>i;i++){var bit=decoder.readBit(contexts,prev);prev=256>prev?prev<<1|bit:511&(prev<<1|bit)|256,v=v<<1|bit}return v>>>0}var contexts=contextCache.getContexts(procedure),prev=1,sign=readBits(1),value=readBits(1)?readBits(1)?readBits(1)?readBits(1)?readBits(1)?readBits(32)+4436:readBits(12)+340:readBits(8)+84:readBits(6)+20:readBits(4)+4:readBits(2);return 0===sign?value:value>0?-value:null}function decodeIAID(contextCache,decoder,codeLength){for(var contexts=contextCache.getContexts("IAID"),prev=1,i=0;codeLength>i;i++){var bit=decoder.readBit(contexts,prev);prev=prev<<1|bit}return 31>codeLength?prev&(1<<codeLength)-1:2147483647&prev}function decodeBitmapTemplate0(width,height,decodingContext){var contextLabel,i,j,pixel,row,row1,row2,decoder=decodingContext.decoder,contexts=decodingContext.contextCache.getContexts("GB"),bitmap=[],OLD_PIXEL_MASK=31735;for(i=0;height>i;i++)for(row=bitmap[i]=new Uint8Array(width),row1=1>i?row:bitmap[i-1],row2=2>i?row:bitmap[i-2],contextLabel=row2[0]<<13|row2[1]<<12|row2[2]<<11|row1[0]<<7|row1[1]<<6|row1[2]<<5|row1[3]<<4,j=0;width>j;j++)row[j]=pixel=decoder.readBit(contexts,contextLabel),contextLabel=(contextLabel&OLD_PIXEL_MASK)<<1|row2[j+3]<<11|row1[j+4]<<4|pixel;return bitmap}function decodeBitmap(mmr,width,height,templateIndex,prediction,skip,at,decodingContext){if(mmr&&error("JBIG2 error: MMR encoding is not supported"),0===templateIndex&&!skip&&!prediction&&4===at.length&&3===at[0].x&&-1===at[0].y&&-3===at[1].x&&-1===at[1].y&&2===at[2].x&&-2===at[2].y&&-2===at[3].x&&-2===at[3].y)return decodeBitmapTemplate0(width,height,decodingContext);var useskip=!!skip,template=CodingTemplates[templateIndex].concat(at);template.sort(function(a,b){return a.y-b.y||a.x-b.x});var c,k,templateLength=template.length,templateX=new Int8Array(templateLength),templateY=new Int8Array(templateLength),changingTemplateEntries=[],reuseMask=0,minX=0,maxX=0,minY=0;for(k=0;templateLength>k;k++)templateX[k]=template[k].x,templateY[k]=template[k].y,minX=Math.min(minX,template[k].x),maxX=Math.max(maxX,template[k].x),minY=Math.min(minY,template[k].y),templateLength-1>k&&template[k].y===template[k+1].y&&template[k].x===template[k+1].x-1?reuseMask|=1<<templateLength-1-k:changingTemplateEntries.push(k);var changingEntriesLength=changingTemplateEntries.length,changingTemplateX=new Int8Array(changingEntriesLength),changingTemplateY=new Int8Array(changingEntriesLength),changingTemplateBit=new Uint16Array(changingEntriesLength);for(c=0;changingEntriesLength>c;c++)k=changingTemplateEntries[c],changingTemplateX[c]=template[k].x,changingTemplateY[c]=template[k].y,changingTemplateBit[c]=1<<templateLength-1-k;for(var j,i0,j0,bit,shift,sbb_left=-minX,sbb_top=-minY,sbb_right=width-maxX,pseudoPixelContext=ReusedContexts[templateIndex],row=new Uint8Array(width),bitmap=[],decoder=decodingContext.decoder,contexts=decodingContext.contextCache.getContexts("GB"),ltp=0,contextLabel=0,i=0;height>i;i++){if(prediction){var sltp=decoder.readBit(contexts,pseudoPixelContext);if(ltp^=sltp){bitmap.push(row);continue}}for(row=new Uint8Array(row),bitmap.push(row),j=0;width>j;j++)if(useskip&&skip[i][j])row[j]=0;else{if(j>=sbb_left&&sbb_right>j&&i>=sbb_top)for(contextLabel=contextLabel<<1&reuseMask,k=0;changingEntriesLength>k;k++)i0=i+changingTemplateY[k],j0=j+changingTemplateX[k],bit=bitmap[i0][j0],bit&&(bit=changingTemplateBit[k],contextLabel|=bit);else for(contextLabel=0,shift=templateLength-1,k=0;templateLength>k;k++,shift--)j0=j+templateX[k],j0>=0&&width>j0&&(i0=i+templateY[k],i0>=0&&(bit=bitmap[i0][j0],bit&&(contextLabel|=bit<<shift)));var pixel=decoder.readBit(contexts,contextLabel);row[j]=pixel}}return bitmap}function decodeRefinement(width,height,templateIndex,referenceBitmap,offsetX,offsetY,prediction,at,decodingContext){var codingTemplate=RefinementTemplates[templateIndex].coding;0===templateIndex&&(codingTemplate=codingTemplate.concat([at[0]]));var k,codingTemplateLength=codingTemplate.length,codingTemplateX=new Int32Array(codingTemplateLength),codingTemplateY=new Int32Array(codingTemplateLength);for(k=0;codingTemplateLength>k;k++)codingTemplateX[k]=codingTemplate[k].x,codingTemplateY[k]=codingTemplate[k].y;var referenceTemplate=RefinementTemplates[templateIndex].reference;0===templateIndex&&(referenceTemplate=referenceTemplate.concat([at[1]]));var referenceTemplateLength=referenceTemplate.length,referenceTemplateX=new Int32Array(referenceTemplateLength),referenceTemplateY=new Int32Array(referenceTemplateLength);for(k=0;referenceTemplateLength>k;k++)referenceTemplateX[k]=referenceTemplate[k].x,referenceTemplateY[k]=referenceTemplate[k].y;for(var referenceWidth=referenceBitmap[0].length,referenceHeight=referenceBitmap.length,pseudoPixelContext=RefinementReusedContexts[templateIndex],bitmap=[],decoder=decodingContext.decoder,contexts=decodingContext.contextCache.getContexts("GR"),ltp=0,i=0;height>i;i++){if(prediction){var sltp=decoder.readBit(contexts,pseudoPixelContext);ltp^=sltp,ltp&&error("JBIG2 error: prediction is not supported")}var row=new Uint8Array(width);bitmap.push(row);for(var j=0;width>j;j++){var i0,j0,contextLabel=0;for(k=0;codingTemplateLength>k;k++)i0=i+codingTemplateY[k],j0=j+codingTemplateX[k],0>i0||0>j0||j0>=width?contextLabel<<=1:contextLabel=contextLabel<<1|bitmap[i0][j0];for(k=0;referenceTemplateLength>k;k++)i0=i+referenceTemplateY[k]+offsetY,j0=j+referenceTemplateX[k]+offsetX,0>i0||i0>=referenceHeight||0>j0||j0>=referenceWidth?contextLabel<<=1:contextLabel=contextLabel<<1|referenceBitmap[i0][j0];var pixel=decoder.readBit(contexts,contextLabel);row[j]=pixel}}return bitmap}function decodeSymbolDictionary(huffman,refinement,symbols,numberOfNewSymbols,numberOfExportedSymbols,huffmanTables,templateIndex,at,refinementTemplateIndex,refinementAt,decodingContext){huffman&&error("JBIG2 error: huffman is not supported");for(var newSymbols=[],currentHeight=0,symbolCodeLength=log2(symbols.length+numberOfNewSymbols),decoder=decodingContext.decoder,contextCache=decodingContext.contextCache;newSymbols.length<numberOfNewSymbols;){var deltaHeight=decodeInteger(contextCache,"IADH",decoder);currentHeight+=deltaHeight;for(var currentWidth=0,totalWidth=0;;){var deltaWidth=decodeInteger(contextCache,"IADW",decoder);if(null===deltaWidth)break;currentWidth+=deltaWidth,totalWidth+=currentWidth;var bitmap;if(refinement){var numberOfInstances=decodeInteger(contextCache,"IAAI",decoder);if(numberOfInstances>1)bitmap=decodeTextRegion(huffman,refinement,currentWidth,currentHeight,0,numberOfInstances,1,symbols.concat(newSymbols),symbolCodeLength,0,0,1,0,huffmanTables,refinementTemplateIndex,refinementAt,decodingContext);else{var symbolId=decodeIAID(contextCache,decoder,symbolCodeLength),rdx=decodeInteger(contextCache,"IARDX",decoder),rdy=decodeInteger(contextCache,"IARDY",decoder),symbol=symbolId<symbols.length?symbols[symbolId]:newSymbols[symbolId-symbols.length];bitmap=decodeRefinement(currentWidth,currentHeight,refinementTemplateIndex,symbol,rdx,rdy,!1,refinementAt,decodingContext)}}else bitmap=decodeBitmap(!1,currentWidth,currentHeight,templateIndex,!1,null,at,decodingContext);newSymbols.push(bitmap)}}for(var exportedSymbols=[],flags=[],currentFlag=!1,totalSymbolsLength=symbols.length+numberOfNewSymbols;flags.length<totalSymbolsLength;){for(var runLength=decodeInteger(contextCache,"IAEX",decoder);runLength--;)flags.push(currentFlag);currentFlag=!currentFlag}for(var i=0,ii=symbols.length;ii>i;i++)flags[i]&&exportedSymbols.push(symbols[i]);for(var j=0;numberOfNewSymbols>j;i++,j++)flags[i]&&exportedSymbols.push(newSymbols[j]);return exportedSymbols}function decodeTextRegion(huffman,refinement,width,height,defaultPixelValue,numberOfSymbolInstances,stripSize,inputSymbols,symbolCodeLength,transposed,dsOffset,referenceCorner,combinationOperator,huffmanTables,refinementTemplateIndex,refinementAt,decodingContext){huffman&&error("JBIG2 error: huffman is not supported");var i,row,bitmap=[];for(i=0;height>i;i++){if(row=new Uint8Array(width),defaultPixelValue)for(var j=0;width>j;j++)row[j]=defaultPixelValue;bitmap.push(row)}var decoder=decodingContext.decoder,contextCache=decodingContext.contextCache,stripT=-decodeInteger(contextCache,"IADT",decoder),firstS=0;for(i=0;numberOfSymbolInstances>i;){var deltaT=decodeInteger(contextCache,"IADT",decoder);stripT+=deltaT;var deltaFirstS=decodeInteger(contextCache,"IAFS",decoder);firstS+=deltaFirstS;for(var currentS=firstS;;){var currentT=1===stripSize?0:decodeInteger(contextCache,"IAIT",decoder),t=stripSize*stripT+currentT,symbolId=decodeIAID(contextCache,decoder,symbolCodeLength),applyRefinement=refinement&&decodeInteger(contextCache,"IARI",decoder),symbolBitmap=inputSymbols[symbolId],symbolWidth=symbolBitmap[0].length,symbolHeight=symbolBitmap.length;if(applyRefinement){var rdw=decodeInteger(contextCache,"IARDW",decoder),rdh=decodeInteger(contextCache,"IARDH",decoder),rdx=decodeInteger(contextCache,"IARDX",decoder),rdy=decodeInteger(contextCache,"IARDY",decoder);symbolWidth+=rdw,symbolHeight+=rdh,symbolBitmap=decodeRefinement(symbolWidth,symbolHeight,refinementTemplateIndex,symbolBitmap,(rdw>>1)+rdx,(rdh>>1)+rdy,!1,refinementAt,decodingContext)}var s2,t2,symbolRow,offsetT=t-(1&referenceCorner?0:symbolHeight),offsetS=currentS-(2&referenceCorner?symbolWidth:0);if(transposed){for(s2=0;symbolHeight>s2;s2++)if(row=bitmap[offsetS+s2]){symbolRow=symbolBitmap[s2];var maxWidth=Math.min(width-offsetT,symbolWidth);switch(combinationOperator){case 0:for(t2=0;maxWidth>t2;t2++)row[offsetT+t2]|=symbolRow[t2];break;case 2:for(t2=0;maxWidth>t2;t2++)row[offsetT+t2]^=symbolRow[t2];break;default:error("JBIG2 error: operator "+combinationOperator+" is not supported")}}currentS+=symbolHeight-1}else{for(t2=0;symbolHeight>t2;t2++)if(row=bitmap[offsetT+t2])switch(symbolRow=symbolBitmap[t2],combinationOperator){case 0:for(s2=0;symbolWidth>s2;s2++)row[offsetS+s2]|=symbolRow[s2];break;case 2:for(s2=0;symbolWidth>s2;s2++)row[offsetS+s2]^=symbolRow[s2];break;default:error("JBIG2 error: operator "+combinationOperator+" is not supported")}currentS+=symbolWidth-1}i++;var deltaS=decodeInteger(contextCache,"IADS",decoder);if(null===deltaS)break;currentS+=deltaS+dsOffset}}return bitmap}function readSegmentHeader(data,start){var segmentHeader={};segmentHeader.number=readUint32(data,start);var flags=data[start+4],segmentType=63&flags;SegmentTypes[segmentType]||error("JBIG2 error: invalid segment type: "+segmentType),segmentHeader.type=segmentType,segmentHeader.typeName=SegmentTypes[segmentType],segmentHeader.deferredNonRetain=!!(128&flags);var pageAssociationFieldSize=!!(64&flags),referredFlags=data[start+5],referredToCount=referredFlags>>5&7,retainBits=[31&referredFlags],position=start+6;if(7===referredFlags){referredToCount=536870911&readUint32(data,position-1),position+=3;var bytes=referredToCount+7>>3;for(retainBits[0]=data[position++];--bytes>0;)retainBits.push(data[position++])}else(5===referredFlags||6===referredFlags)&&error("JBIG2 error: invalid referred-to flags");segmentHeader.retainBits=retainBits;var i,ii,referredToSegmentNumberSize=segmentHeader.number<=256?1:segmentHeader.number<=65536?2:4,referredTo=[];for(i=0;referredToCount>i;i++){var number=1===referredToSegmentNumberSize?data[position]:2===referredToSegmentNumberSize?readUint16(data,position):readUint32(data,position);referredTo.push(number),position+=referredToSegmentNumberSize}if(segmentHeader.referredTo=referredTo,pageAssociationFieldSize?(segmentHeader.pageAssociation=readUint32(data,position),position+=4):segmentHeader.pageAssociation=data[position++],segmentHeader.length=readUint32(data,position),position+=4,4294967295===segmentHeader.length)if(38===segmentType){var genericRegionInfo=readRegionSegmentInformation(data,position),genericRegionSegmentFlags=data[position+RegionSegmentInformationFieldLength],genericRegionMmr=!!(1&genericRegionSegmentFlags),searchPatternLength=6,searchPattern=new Uint8Array(searchPatternLength);for(genericRegionMmr||(searchPattern[0]=255,searchPattern[1]=172),searchPattern[2]=genericRegionInfo.height>>>24&255,searchPattern[3]=genericRegionInfo.height>>16&255,searchPattern[4]=genericRegionInfo.height>>8&255,searchPattern[5]=255&genericRegionInfo.height,i=position,ii=data.length;ii>i;i++){for(var j=0;searchPatternLength>j&&searchPattern[j]===data[i+j];)j++;if(j===searchPatternLength){segmentHeader.length=i+searchPatternLength;break}}4294967295===segmentHeader.length&&error("JBIG2 error: segment end was not found")}else error("JBIG2 error: invalid unknown segment length");return segmentHeader.headerEnd=position,segmentHeader}function readSegments(header,data,start,end){for(var segments=[],position=start;end>position;){var segmentHeader=readSegmentHeader(data,position);position=segmentHeader.headerEnd;var segment={header:segmentHeader,data:data};if(header.randomAccess||(segment.start=position,position+=segmentHeader.length,segment.end=position),segments.push(segment),51===segmentHeader.type)break}if(header.randomAccess)for(var i=0,ii=segments.length;ii>i;i++)segments[i].start=position,position+=segments[i].header.length,segments[i].end=position;return segments}function readRegionSegmentInformation(data,start){return{width:readUint32(data,start),height:readUint32(data,start+4),x:readUint32(data,start+8),y:readUint32(data,start+12),combinationOperator:7&data[start+16]}}function processSegment(segment,visitor){var args,at,i,atLength,header=segment.header,data=segment.data,position=segment.start,end=segment.end;switch(header.type){case 0:var dictionary={},dictionaryFlags=readUint16(data,position);if(dictionary.huffman=!!(1&dictionaryFlags),dictionary.refinement=!!(2&dictionaryFlags),dictionary.huffmanDHSelector=dictionaryFlags>>2&3,dictionary.huffmanDWSelector=dictionaryFlags>>4&3,dictionary.bitmapSizeSelector=dictionaryFlags>>6&1,dictionary.aggregationInstancesSelector=dictionaryFlags>>7&1,dictionary.bitmapCodingContextUsed=!!(256&dictionaryFlags),dictionary.bitmapCodingContextRetained=!!(512&dictionaryFlags),dictionary.template=dictionaryFlags>>10&3,dictionary.refinementTemplate=dictionaryFlags>>12&1,position+=2,!dictionary.huffman){for(atLength=0===dictionary.template?4:1,at=[],i=0;atLength>i;i++)at.push({x:readInt8(data,position),y:readInt8(data,position+1)}),position+=2;dictionary.at=at}if(dictionary.refinement&&!dictionary.refinementTemplate){for(at=[],i=0;2>i;i++)at.push({x:readInt8(data,position),y:readInt8(data,position+1)}),position+=2;dictionary.refinementAt=at}dictionary.numberOfExportedSymbols=readUint32(data,position),position+=4,dictionary.numberOfNewSymbols=readUint32(data,position),position+=4,args=[dictionary,header.number,header.referredTo,data,position,end];break;case 6:case 7:var textRegion={};textRegion.info=readRegionSegmentInformation(data,position),position+=RegionSegmentInformationFieldLength;var textRegionSegmentFlags=readUint16(data,position);if(position+=2,textRegion.huffman=!!(1&textRegionSegmentFlags),textRegion.refinement=!!(2&textRegionSegmentFlags),textRegion.stripSize=1<<(textRegionSegmentFlags>>2&3),textRegion.referenceCorner=textRegionSegmentFlags>>4&3,textRegion.transposed=!!(64&textRegionSegmentFlags),textRegion.combinationOperator=textRegionSegmentFlags>>7&3,textRegion.defaultPixelValue=textRegionSegmentFlags>>9&1,textRegion.dsOffset=textRegionSegmentFlags<<17>>27,textRegion.refinementTemplate=textRegionSegmentFlags>>15&1,textRegion.huffman){var textRegionHuffmanFlags=readUint16(data,position);position+=2,textRegion.huffmanFS=3&textRegionHuffmanFlags,textRegion.huffmanDS=textRegionHuffmanFlags>>2&3,textRegion.huffmanDT=textRegionHuffmanFlags>>4&3,textRegion.huffmanRefinementDW=textRegionHuffmanFlags>>6&3,textRegion.huffmanRefinementDH=textRegionHuffmanFlags>>8&3,textRegion.huffmanRefinementDX=textRegionHuffmanFlags>>10&3,textRegion.huffmanRefinementDY=textRegionHuffmanFlags>>12&3,textRegion.huffmanRefinementSizeSelector=!!(14&textRegionHuffmanFlags)}if(textRegion.refinement&&!textRegion.refinementTemplate){for(at=[],i=0;2>i;i++)at.push({x:readInt8(data,position),y:readInt8(data,position+1)}),position+=2;textRegion.refinementAt=at}textRegion.numberOfSymbolInstances=readUint32(data,position),position+=4,textRegion.huffman&&error("JBIG2 error: huffman is not supported"),args=[textRegion,header.referredTo,data,position,end];break;case 38:case 39:var genericRegion={};genericRegion.info=readRegionSegmentInformation(data,position),position+=RegionSegmentInformationFieldLength;var genericRegionSegmentFlags=data[position++];if(genericRegion.mmr=!!(1&genericRegionSegmentFlags),genericRegion.template=genericRegionSegmentFlags>>1&3,genericRegion.prediction=!!(8&genericRegionSegmentFlags),!genericRegion.mmr){for(atLength=0===genericRegion.template?4:1,at=[],i=0;atLength>i;i++)at.push({x:readInt8(data,position),y:readInt8(data,position+1)}),position+=2;genericRegion.at=at}args=[genericRegion,data,position,end];break;case 48:var pageInfo={width:readUint32(data,position),height:readUint32(data,position+4),resolutionX:readUint32(data,position+8),resolutionY:readUint32(data,position+12)};4294967295===pageInfo.height&&delete pageInfo.height;{var pageSegmentFlags=data[position+16];readUint16(data,position+17)}pageInfo.lossless=!!(1&pageSegmentFlags),pageInfo.refinement=!!(2&pageSegmentFlags),pageInfo.defaultPixelValue=pageSegmentFlags>>2&1,pageInfo.combinationOperator=pageSegmentFlags>>3&3,pageInfo.requiresBuffer=!!(32&pageSegmentFlags),pageInfo.combinationOperatorOverride=!!(64&pageSegmentFlags),args=[pageInfo];break;case 49:break;case 50:break;case 51:break;case 62:break;default:error("JBIG2 error: segment type "+header.typeName+"("+header.type+") is not implemented")}var callbackName="on"+header.typeName;callbackName in visitor&&visitor[callbackName].apply(visitor,args)}function processSegments(segments,visitor){for(var i=0,ii=segments.length;ii>i;i++)processSegment(segments[i],visitor)}function parseJbig2Chunks(chunks){for(var visitor=new SimpleSegmentVisitor,i=0,ii=chunks.length;ii>i;i++){var chunk=chunks[i],segments=readSegments({},chunk.data,chunk.start,chunk.end);processSegments(segments,visitor)}return visitor.buffer}function SimpleSegmentVisitor(){}function Jbig2Image(){}ContextCache.prototype={getContexts:function(id){return id in this?this[id]:this[id]=new Int8Array(65536)}},DecodingContext.prototype={get decoder(){var decoder=new ArithmeticDecoder(this.data,this.start,this.end);return shadow(this,"decoder",decoder)},get contextCache(){var cache=new ContextCache;return shadow(this,"contextCache",cache)}};var SegmentTypes=["SymbolDictionary",null,null,null,"IntermediateTextRegion",null,"ImmediateTextRegion","ImmediateLosslessTextRegion",null,null,null,null,null,null,null,null,"patternDictionary",null,null,null,"IntermediateHalftoneRegion",null,"ImmediateHalftoneRegion","ImmediateLosslessHalftoneRegion",null,null,null,null,null,null,null,null,null,null,null,null,"IntermediateGenericRegion",null,"ImmediateGenericRegion","ImmediateLosslessGenericRegion","IntermediateGenericRefinementRegion",null,"ImmediateGenericRefinementRegion","ImmediateLosslessGenericRefinementRegion",null,null,null,null,"PageInformation","EndOfPage","EndOfStripe","EndOfFile","Profiles","Tables",null,null,null,null,null,null,null,null,"Extension"],CodingTemplates=[[{x:-1,y:-2},{x:0,y:-2},{x:1,y:-2},{x:-2,y:-1},{x:-1,y:-1},{x:0,y:-1},{x:1,y:-1},{x:2,y:-1},{x:-4,y:0},{x:-3,y:0},{x:-2,y:0},{x:-1,y:0}],[{x:-1,y:-2},{x:0,y:-2},{x:1,y:-2},{x:2,y:-2},{x:-2,y:-1},{x:-1,y:-1},{x:0,y:-1},{x:1,y:-1},{x:2,y:-1},{x:-3,y:0},{x:-2,y:0},{x:-1,y:0}],[{x:-1,y:-2},{x:0,y:-2},{x:1,y:-2},{x:-2,y:-1},{x:-1,y:-1},{x:0,y:-1},{x:1,y:-1},{x:-2,y:0},{x:-1,y:0}],[{x:-3,y:-1},{x:-2,y:-1},{x:-1,y:-1},{x:0,y:-1},{x:1,y:-1},{x:-4,y:0},{x:-3,y:0},{x:-2,y:0},{x:-1,y:0}]],RefinementTemplates=[{coding:[{x:0,y:-1},{x:1,y:-1},{x:-1,y:0}],reference:[{x:0,y:-1},{x:1,y:-1},{x:-1,y:0},{x:0,y:0},{x:1,y:0},{x:-1,y:1},{x:0,y:1},{x:1,y:1}]},{coding:[{x:-1,y:-1},{x:0,y:-1},{x:1,y:-1},{x:-1,y:0}],reference:[{x:0,y:-1},{x:-1,y:0},{x:0,y:0},{x:1,y:0},{x:0,y:1},{x:1,y:1}]}],ReusedContexts=[39717,1941,229,405],RefinementReusedContexts=[32,8],RegionSegmentInformationFieldLength=17;return SimpleSegmentVisitor.prototype={onPageInformation:function(info){this.currentPageInfo=info;var rowSize=info.width+7>>3,buffer=new Uint8Array(rowSize*info.height);if(info.defaultPixelValue)for(var i=0,ii=buffer.length;ii>i;i++)buffer[i]=255;this.buffer=buffer},drawBitmap:function(regionInfo,bitmap){var i,j,mask,offset,pageInfo=this.currentPageInfo,width=regionInfo.width,height=regionInfo.height,rowSize=pageInfo.width+7>>3,combinationOperator=pageInfo.combinationOperatorOverride?regionInfo.combinationOperator:pageInfo.combinationOperator,buffer=this.buffer,mask0=128>>(7&regionInfo.x),offset0=regionInfo.y*rowSize+(regionInfo.x>>3);switch(combinationOperator){case 0:for(i=0;height>i;i++){for(mask=mask0,offset=offset0,j=0;width>j;j++)bitmap[i][j]&&(buffer[offset]|=mask),mask>>=1,mask||(mask=128,offset++);offset0+=rowSize}break;case 2:for(i=0;height>i;i++){for(mask=mask0,offset=offset0,j=0;width>j;j++)bitmap[i][j]&&(buffer[offset]^=mask),mask>>=1,mask||(mask=128,offset++);offset0+=rowSize}break;default:error("JBIG2 error: operator "+combinationOperator+" is not supported")}},onImmediateGenericRegion:function(region,data,start,end){var regionInfo=region.info,decodingContext=new DecodingContext(data,start,end),bitmap=decodeBitmap(region.mmr,regionInfo.width,regionInfo.height,region.template,region.prediction,null,region.at,decodingContext);this.drawBitmap(regionInfo,bitmap)},onImmediateLosslessGenericRegion:function(){this.onImmediateGenericRegion.apply(this,arguments)},onSymbolDictionary:function(dictionary,currentSegment,referredSegments,data,start,end){var huffmanTables;dictionary.huffman&&error("JBIG2 error: huffman is not supported");var symbols=this.symbols;symbols||(this.symbols=symbols={});for(var inputSymbols=[],i=0,ii=referredSegments.length;ii>i;i++)inputSymbols=inputSymbols.concat(symbols[referredSegments[i]]);var decodingContext=new DecodingContext(data,start,end);symbols[currentSegment]=decodeSymbolDictionary(dictionary.huffman,dictionary.refinement,inputSymbols,dictionary.numberOfNewSymbols,dictionary.numberOfExportedSymbols,huffmanTables,dictionary.template,dictionary.at,dictionary.refinementTemplate,dictionary.refinementAt,decodingContext)},onImmediateTextRegion:function(region,referredSegments,data,start,end){for(var huffmanTables,regionInfo=region.info,symbols=this.symbols,inputSymbols=[],i=0,ii=referredSegments.length;ii>i;i++)inputSymbols=inputSymbols.concat(symbols[referredSegments[i]]);var symbolCodeLength=log2(inputSymbols.length),decodingContext=new DecodingContext(data,start,end),bitmap=decodeTextRegion(region.huffman,region.refinement,regionInfo.width,regionInfo.height,region.defaultPixelValue,region.numberOfSymbolInstances,region.stripSize,inputSymbols,symbolCodeLength,region.transposed,region.dsOffset,region.referenceCorner,region.combinationOperator,huffmanTables,region.refinementTemplate,region.refinementAt,decodingContext);this.drawBitmap(regionInfo,bitmap)},onImmediateLosslessTextRegion:function(){this.onImmediateTextRegion.apply(this,arguments)}},Jbig2Image.prototype={parseChunks:function(chunks){return parseJbig2Chunks(chunks)}},Jbig2Image}(),MurmurHash3_64=(PDFJS.bidi=function(){function isOdd(i){return 0!==(1&i)}function isEven(i){return 0===(1&i)}function findUnequal(arr,start,value){for(var j=start,jj=arr.length;jj>j;++j)if(arr[j]!==value)return j;return j}function setValues(arr,start,end,value){for(var j=start;end>j;++j)arr[j]=value}function reverseValues(arr,start,end){for(var i=start,j=end-1;j>i;++i,--j){var temp=arr[i];arr[i]=arr[j],arr[j]=temp}}function createBidiText(str,isLTR,vertical){return{str:str,dir:vertical?"ttb":isLTR?"ltr":"rtl"}}function bidi(str,startLevel,vertical){var isLTR=!0,strLength=str.length;if(0===strLength||vertical)return createBidiText(str,isLTR,vertical);chars.length=strLength,types.length=strLength;var i,ii,numBidi=0;for(i=0;strLength>i;++i){chars[i]=str.charAt(i);var charCode=str.charCodeAt(i),charType="L";255>=charCode?charType=baseTypes[charCode]:charCode>=1424&&1524>=charCode?charType="R":charCode>=1536&&1791>=charCode?charType=arabicTypes[255&charCode]:charCode>=1792&&2220>=charCode&&(charType="AL"),("R"===charType||"AL"===charType||"AN"===charType)&&numBidi++,types[i]=charType}if(0===numBidi)return isLTR=!0,createBidiText(str,isLTR);-1===startLevel&&(.3>strLength/numBidi?(isLTR=!0,startLevel=0):(isLTR=!1,startLevel=1));var levels=[];for(i=0;strLength>i;++i)levels[i]=startLevel;var e=isOdd(startLevel)?"R":"L",sor=e,eor=sor,lastType=sor;for(i=0;strLength>i;++i)"NSM"===types[i]?types[i]=lastType:lastType=types[i];lastType=sor;var t;for(i=0;strLength>i;++i)t=types[i],"EN"===t?types[i]="AL"===lastType?"AN":"EN":("R"===t||"L"===t||"AL"===t)&&(lastType=t);for(i=0;strLength>i;++i)t=types[i],"AL"===t&&(types[i]="R");for(i=1;strLength-1>i;++i)"ES"===types[i]&&"EN"===types[i-1]&&"EN"===types[i+1]&&(types[i]="EN"),"CS"!==types[i]||"EN"!==types[i-1]&&"AN"!==types[i-1]||types[i+1]!==types[i-1]||(types[i]=types[i-1]);for(i=0;strLength>i;++i)if("EN"===types[i]){var j;for(j=i-1;j>=0&&"ET"===types[j];--j)types[j]="EN";for(j=i+1;strLength>j&&"ET"===types[j];--j)types[j]="EN"}for(i=0;strLength>i;++i)t=types[i],("WS"===t||"ES"===t||"ET"===t||"CS"===t)&&(types[i]="ON");for(lastType=sor,i=0;strLength>i;++i)t=types[i],"EN"===t?types[i]="L"===lastType?"L":"EN":("R"===t||"L"===t)&&(lastType=t);for(i=0;strLength>i;++i)if("ON"===types[i]){var end=findUnequal(types,i+1,"ON"),before=sor;i>0&&(before=types[i-1]);var after=eor;strLength>end+1&&(after=types[end+1]),"L"!==before&&(before="R"),"L"!==after&&(after="R"),before===after&&setValues(types,i,end,before),i=end-1}for(i=0;strLength>i;++i)"ON"===types[i]&&(types[i]=e);for(i=0;strLength>i;++i)t=types[i],isEven(levels[i])?"R"===t?levels[i]+=1:("AN"===t||"EN"===t)&&(levels[i]+=2):("L"===t||"AN"===t||"EN"===t)&&(levels[i]+=1);var level,highestLevel=-1,lowestOddLevel=99;for(i=0,ii=levels.length;ii>i;++i)level=levels[i],level>highestLevel&&(highestLevel=level),lowestOddLevel>level&&isOdd(level)&&(lowestOddLevel=level);for(level=highestLevel;level>=lowestOddLevel;--level){var start=-1;for(i=0,ii=levels.length;ii>i;++i)levels[i]<level?start>=0&&(reverseValues(chars,start,i),start=-1):0>start&&(start=i);start>=0&&reverseValues(chars,start,levels.length)}var result="";for(i=0,ii=chars.length;ii>i;++i){var ch=chars[i];"<"!==ch&&">"!==ch&&(result+=ch)}return createBidiText(result,isLTR)}var baseTypes=["BN","BN","BN","BN","BN","BN","BN","BN","BN","S","B","S","WS","B","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","B","B","B","S","WS","ON","ON","ET","ET","ET","ON","ON","ON","ON","ON","ON","CS","ON","CS","ON","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","ON","ON","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","ON","ON","ON","BN","BN","BN","BN","BN","BN","B","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","CS","ON","ET","ET","ET","ET","ON","ON","ON","ON","L","ON","ON","ON","ON","ON","ET","ET","EN","EN","ON","L","ON","ON","ON","EN","L","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","L","L","L","L","L","L","L","L"],arabicTypes=["AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","CS","AL","ON","ON","NSM","NSM","NSM","NSM","NSM","NSM","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","AL","AL","AL","AL","AL","AL","AL","AN","AN","AN","AN","AN","AN","AN","AN","AN","AN","ET","AN","AN","AL","AL","AL","NSM","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","ON","NSM","NSM","NSM","NSM","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL"],chars=[],types=[];return bidi}(),function(){function MurmurHash3_64(seed){var SEED=3285377520;this.h1=seed?4294967295&seed:SEED,this.h2=seed?4294967295&seed:SEED}var MASK_HIGH=4294901760,MASK_LOW=65535,alwaysUseUint32ArrayView=!1;try{new Uint32Array(new Uint8Array(5).buffer,0,1)}catch(e){alwaysUseUint32ArrayView=!0}return MurmurHash3_64.prototype={update:function(input){var i,useUint32ArrayView=alwaysUseUint32ArrayView;if("string"==typeof input){var data=new Uint8Array(2*input.length),length=0;for(i=0;i<input.length;i++){var code=input.charCodeAt(i);255>=code?data[length++]=code:(data[length++]=code>>>8,data[length++]=255&code)
}}else if(input instanceof Uint8Array)data=input,length=data.length;else{if(!("object"==typeof input&&"length"in input))throw new Error("Wrong data format in MurmurHash3_64_update. Input must be a string or array.");data=input,length=data.length,useUint32ArrayView=!0}var blockCounts=length>>2,tailLength=length-4*blockCounts,dataUint32=useUint32ArrayView?new Uint32ArrayView(data,blockCounts):new Uint32Array(data.buffer,0,blockCounts),k1=0,k2=0,h1=this.h1,h2=this.h2,C1=3432918353,C2=461845907,C1_LOW=C1&MASK_LOW,C2_LOW=C2&MASK_LOW;for(i=0;blockCounts>i;i++)1&i?(k1=dataUint32[i],k1=k1*C1&MASK_HIGH|k1*C1_LOW&MASK_LOW,k1=k1<<15|k1>>>17,k1=k1*C2&MASK_HIGH|k1*C2_LOW&MASK_LOW,h1^=k1,h1=h1<<13|h1>>>19,h1=5*h1+3864292196):(k2=dataUint32[i],k2=k2*C1&MASK_HIGH|k2*C1_LOW&MASK_LOW,k2=k2<<15|k2>>>17,k2=k2*C2&MASK_HIGH|k2*C2_LOW&MASK_LOW,h2^=k2,h2=h2<<13|h2>>>19,h2=5*h2+3864292196);switch(k1=0,tailLength){case 3:k1^=data[4*blockCounts+2]<<16;case 2:k1^=data[4*blockCounts+1]<<8;case 1:k1^=data[4*blockCounts],k1=k1*C1&MASK_HIGH|k1*C1_LOW&MASK_LOW,k1=k1<<15|k1>>>17,k1=k1*C2&MASK_HIGH|k1*C2_LOW&MASK_LOW,1&blockCounts?h1^=k1:h2^=k1}return this.h1=h1,this.h2=h2,this},hexdigest:function(){var h1=this.h1,h2=this.h2;h1^=h2>>>1,h1=3981806797*h1&MASK_HIGH|36045*h1&MASK_LOW,h2=4283543511*h2&MASK_HIGH|(2950163797*(h2<<16|h1>>>16)&MASK_HIGH)>>>16,h1^=h2>>>1,h1=444984403*h1&MASK_HIGH|60499*h1&MASK_LOW,h2=3301882366*h2&MASK_HIGH|(3120437893*(h2<<16|h1>>>16)&MASK_HIGH)>>>16,h1^=h2>>>1;for(var i=0,arr=[h1,h2],str="";i<arr.length;i++){for(var hex=(arr[i]>>>0).toString(16);hex.length<8;)hex="0"+hex;str+=hex}return str}},MurmurHash3_64}())}.call("undefined"==typeof window?this:window),PDFJS.workerSrc||"undefined"==typeof document||(PDFJS.workerSrc=function(){"use strict";var scriptTagContainer=document.body||document.getElementsByTagName("head")[0],pdfjsSrc=scriptTagContainer.lastChild.src;return pdfjsSrc&&pdfjsSrc.replace(/\.js$/i,".worker.js")}());