(function(){"use strict";varASN1=window.ASN1={};varEnc=window.Encoding;ASN1.ELOOPN=102;ASN1.ELOOP="uASN1.js Error: iterated over "+ASN1.ELOOPN+"+ elements (probably a malformed file)";ASN1.EDEEPN=60;ASN1.EDEEP="uASN1.js Error: element nested "+ASN1.EDEEPN+"+ layers deep (probably a malformed file)";ASN1.CTYPES=[48,49,160,161];ASN1.VTYPES=[1,2,5,6,12,130];ASN1.parseVerbose=functionparseAsn1Helper(buf,opts){if(!opts){opts={}}functionparseAsn1(buf,depth,eager){if(depth.length>=ASN1.EDEEPN){thrownewError(ASN1.EDEEP)}varindex=2;varasn1={type:buf[0],lengthSize:0,length:buf[1]};varchild;variters=0;varadjust=0;varadjustedLen;if(128&asn1.length){asn1.lengthSize=127&asn1.length;asn1.length=parseInt(Enc.bufToHex(buf.slice(index,index+asn1.lengthSize)),16);index+=asn1.lengthSize}if(0===buf[index]&&(2===asn1.type||3===asn1.type)){if(asn1.length>1){index+=1;adjust=-1}}adjustedLen=asn1.length+adjust;functionparseChildren(eager){asn1.children=[];while(iters<ASN1.ELOOPN&&index<2+asn1.length+asn1.lengthSize){iters+=1;depth.length+=1;child=parseAsn1(buf.slice(index,index+adjustedLen),depth,eager);depth.length-=1;index+=2+child.lengthSize+child.length;if(index>2+asn1.lengthSize+asn1.length){thrownewError("Parse error: child value length ("+child.length+") is greater than remaining parent length ("+(asn1.length-index)+" = "+asn1.length+" - "+index+")")}asn1.children.push(child)}if(index!==2+asn1.lengthSize+asn1.length){thrownewError("premature end-of-file")}if(iters>=ASN1.ELOOPN){thrownewError(ASN1.ELOOP)}deleteasn1.value;returnasn1}if(-1!==ASN1.CTYPES.indexOf(asn1.type)){returnparseChildren(eager)}asn1.value=buf.slice(index,index+adjustedLen);if(opts.json){asn1.value=Enc.bufToHex(asn1.value)}if(-1!==ASN1.VTYPES.indexOf(asn1.type)){returnasn1}try{returnparseChildren(true)}catch(e){asn1.children.length=0;returnasn1}}varasn1=parseAsn1(buf,[]);varlen=buf.byteLength||buf.length;if(len!==2+asn1.lengthSize+asn1.length){thrownewError("Length of buffer does not match length of ASN.1 sequence.")}returnasn1};ASN1._toArray=functiontoArray(next,opts){vartyp=opts.json?Enc.numToHex(next.type):next.type;varval=next.value;if(val){if("string"!==typeofval&&opts.json){val=Enc.bufToHex(val)}return[typ,val]}return[typ,next.children.map(function(child){returntoArray(child,opts)})]};ASN1.parse=function(opts){varopts2={json:false!==opts.json};varverbose=ASN1.parseVerbose(opts.der,opts2);if(opts.verbose){returnverbose}returnASN1._toArray(verbose,opts2)};ASN1._replacer=function(k,v){if("type"===k){return"0x"+Enc.numToHex(v)}if(v&&"value"===k){return"0x"+Enc.bufToHex(v.data||v)}returnv};functionAny(){varargs=Array.prototype.slice.call(arguments);vartyp=args.shift();varstr=args.join("").replace(/\s+/g,"").toLowerCase();varlen=str.length/2;varlenlen=0;varhex=typ;if("number"===typeofhex){hex=Enc.numToHex(hex)}if(len!==Math.round(len)){thrownewError("invalid hex")}if(len>127){lenlen+=1;while(len>255){lenlen+=1;len=len>>8}}if(lenlen){hex+=Enc.numToHex(128+lenlen)}returnhex+Enc.numToHex(str.length/2)+str}ASN1.Any=Any;ASN1.UInt=functionUINT(){varstr=Array.prototype.slice.call(arguments).join("");varfirst=parseInt(str.slice(0,2),16);if(128&first){str="00"+str}returnAny("02",str)};ASN1.BitStr=functionBITSTR(){varstr=Array.prototype.slice.call(arguments).join("");returnAny("03","00"+str)};ASN1._toArray=functiontoArray(next,opts){vartyp=opts.json?Enc.numToHex(next.type):next.type;varval=next.value;if(val){if("string"!==typeofval&&opts.json){val=Enc.bufToHex(val)}return[typ,val]}return[typ,next.children.map(function(child){returntoArray(child,opts)})]};ASN1._pack=function(arr){vartyp=arr[0];if("number"===typeofarr[0]){typ=Enc.numToHex(arr[0])}varstr="";if(Array.isArray(arr[1])){arr[1].forEach(function(a){str+=ASN1._pack(a)})}elseif("string"===typeofarr[1]){str=arr[1]}elseif(arr[1].byteLength){str=Enc.bufToHex(arr[1])}else{thrownewError("unexpected array")}if("03"===typ){returnASN1.BitStr(str)}elseif("02"===typ){returnASN1.UInt(str)}else{returnAny(typ,str)}};ASN1.pack=function(asn1,opts){if(!opts){opts={}}