From 2dcaa5a760c5c1283b7cd06f98ba0e0cc386404a Mon Sep 17 00:00:00 2001 From: Daniel Wirtz Date: Wed, 29 Oct 2014 16:52:37 +0100 Subject: [PATCH] Use base64 by default to represent binary data in JSON (affects assignment and toRaw), see #191 --- bower.json | 2 +- dist/ProtoBuf.js | 26 ++++---- dist/ProtoBuf.min.js | 58 +++++++++--------- dist/ProtoBuf.min.js.gz | Bin 12528 -> 12519 bytes dist/ProtoBuf.min.map | 4 +- dist/ProtoBuf.noparse.js | 26 ++++---- dist/ProtoBuf.noparse.min.js | 10 +-- dist/ProtoBuf.noparse.min.js.gz | Bin 9795 -> 9800 bytes dist/ProtoBuf.noparse.min.map | 4 +- docs/ProtoBuf.Builder.Message.html | 8 +-- docs/ProtoBuf.Builder.Service.html | 2 +- docs/ProtoBuf.Builder.html | 2 +- docs/ProtoBuf.DotProto.Parser.html | 2 +- docs/ProtoBuf.DotProto.Tokenizer.html | 2 +- docs/ProtoBuf.DotProto.html | 2 +- docs/ProtoBuf.Reflect.Enum.Value.html | 2 +- docs/ProtoBuf.Reflect.Enum.html | 2 +- docs/ProtoBuf.Reflect.Extension.html | 2 +- ...otoBuf.Reflect.Message.ExtensionField.html | 2 +- docs/ProtoBuf.Reflect.Message.Field.html | 2 +- docs/ProtoBuf.Reflect.Message.OneOf.html | 2 +- docs/ProtoBuf.Reflect.Message.html | 2 +- docs/ProtoBuf.Reflect.Namespace.html | 2 +- docs/ProtoBuf.Reflect.Service.Method.html | 2 +- docs/ProtoBuf.Reflect.Service.RPCMethod.html | 2 +- docs/ProtoBuf.Reflect.Service.html | 2 +- docs/ProtoBuf.Reflect.T.html | 2 +- docs/ProtoBuf.Reflect.html | 2 +- docs/ProtoBuf.Util.html | 2 +- docs/ProtoBuf.html | 2 +- docs/ProtoBuf.js.html | 28 ++++----- docs/index.html | 2 +- package.json | 2 +- src/ProtoBuf.js | 2 +- src/ProtoBuf/Builder/Message.js | 16 ++--- src/ProtoBuf/Reflect/Message/Field.js | 6 +- tests/suite.js | 10 ++- 37 files changed, 121 insertions(+), 123 deletions(-) diff --git a/bower.json b/bower.json index a0fa75486..dccf15f8b 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "protobuf", "description": "Protocol Buffers for JavaScript. Finally.", - "version": "3.7.0", + "version": "3.8.0", "main": "dist/ProtoBuf.js", "license": "Apache-2.0", "homepage": "http://dcode.io/", diff --git a/dist/ProtoBuf.js b/dist/ProtoBuf.js index 80c9e0c27..3ce174049 100644 --- a/dist/ProtoBuf.js +++ b/dist/ProtoBuf.js @@ -38,7 +38,7 @@ * @const * @expose */ - ProtoBuf.VERSION = "3.7.0"; + ProtoBuf.VERSION = "3.8.0"; /** * Wire types. @@ -2139,33 +2139,33 @@ /** * Clones a message object to a raw object. * @param {*} obj Object to clone - * @param {boolean} includeBuffers Whether to include native buffer data or not + * @param {boolean} includeBinaryAsBase64 Whether to include binary data as base64 strings or not * @returns {*} Cloned object * @inner */ - function cloneRaw(obj, includeBuffers) { + function cloneRaw(obj, includeBinaryAsBase64) { var clone = {}; for (var i in obj) if (obj.hasOwnProperty(i)) { if (obj[i] === null || typeof obj[i] !== 'object') clone[i] = obj[i]; else if (obj[i] instanceof ByteBuffer) { - if (includeBuffers) - clone[i] = obj.toBuffer(); + if (includeBinaryAsBase64) + clone[i] = obj[i].toBase64(); } else // is a non-null object - clone[i] = cloneRaw(obj[i], includeBuffers); + clone[i] = cloneRaw(obj[i], includeBinaryAsBase64); } return clone; } /** * Returns the message's raw payload. - * @param {boolean=} includeBuffers Whether to include native buffer data or not, defaults to `false` + * @param {boolean=} includeBinaryAsBase64 Whether to include binary data as base64 strings or not, defaults to `false` * @returns {Object.} Raw payload * @expose */ - MessagePrototype.toRaw = function(includeBuffers) { - return cloneRaw(this, !!includeBuffers); + MessagePrototype.toRaw = function(includeBinaryAsBase64) { + return cloneRaw(this, !!includeBinaryAsBase64); }; /** @@ -2723,9 +2723,9 @@ // Length-delimited bytes case ProtoBuf.TYPES["bytes"]: - return value && value instanceof ByteBuffer - ? value - : ByteBuffer.wrap(value); + if (ByteBuffer.isByteBuffer(value)) + return value; + return ByteBuffer.wrap(value, "base64"); // Constant enum value case ProtoBuf.TYPES["enum"]: { @@ -4326,7 +4326,7 @@ return ProtoBuf; } - /* CommonJS */ if (typeof require === 'function' && typeof module === 'object' && module && module.id && typeof exports === 'object' && exports) + /* CommonJS */ if (typeof require === 'function' && typeof module === 'object' && module && typeof exports === 'object' && exports) module['exports'] = init(require("bytebuffer")); /* AMD */ else if (typeof define === 'function' && define["amd"]) define(["ByteBuffer"], init); diff --git a/dist/ProtoBuf.min.js b/dist/ProtoBuf.min.js index aff2debc8..ff992341f 100644 --- a/dist/ProtoBuf.min.js +++ b/dist/ProtoBuf.min.js @@ -3,9 +3,9 @@ Released under the Apache License, Version 2.0 see: https://github.com/dcodeIO/ProtoBuf.js for details */ -(function(s){function u(m){var g={VERSION:"3.7.0",WIRE_TYPES:{}};g.WIRE_TYPES.VARINT=0;g.WIRE_TYPES.BITS64=1;g.WIRE_TYPES.LDELIM=2;g.WIRE_TYPES.STARTGROUP=3;g.WIRE_TYPES.ENDGROUP=4;g.WIRE_TYPES.BITS32=5;g.PACKABLE_WIRE_TYPES=[g.WIRE_TYPES.VARINT,g.WIRE_TYPES.BITS64,g.WIRE_TYPES.BITS32];g.TYPES={int32:{name:"int32",wireType:g.WIRE_TYPES.VARINT},uint32:{name:"uint32",wireType:g.WIRE_TYPES.VARINT},sint32:{name:"sint32",wireType:g.WIRE_TYPES.VARINT},int64:{name:"int64",wireType:g.WIRE_TYPES.VARINT},uint64:{name:"uint64", +(function(s){function u(l){var g={VERSION:"3.8.0",WIRE_TYPES:{}};g.WIRE_TYPES.VARINT=0;g.WIRE_TYPES.BITS64=1;g.WIRE_TYPES.LDELIM=2;g.WIRE_TYPES.STARTGROUP=3;g.WIRE_TYPES.ENDGROUP=4;g.WIRE_TYPES.BITS32=5;g.PACKABLE_WIRE_TYPES=[g.WIRE_TYPES.VARINT,g.WIRE_TYPES.BITS64,g.WIRE_TYPES.BITS32];g.TYPES={int32:{name:"int32",wireType:g.WIRE_TYPES.VARINT},uint32:{name:"uint32",wireType:g.WIRE_TYPES.VARINT},sint32:{name:"sint32",wireType:g.WIRE_TYPES.VARINT},int64:{name:"int64",wireType:g.WIRE_TYPES.VARINT},uint64:{name:"uint64", wireType:g.WIRE_TYPES.VARINT},sint64:{name:"sint64",wireType:g.WIRE_TYPES.VARINT},bool:{name:"bool",wireType:g.WIRE_TYPES.VARINT},"double":{name:"double",wireType:g.WIRE_TYPES.BITS64},string:{name:"string",wireType:g.WIRE_TYPES.LDELIM},bytes:{name:"bytes",wireType:g.WIRE_TYPES.LDELIM},fixed32:{name:"fixed32",wireType:g.WIRE_TYPES.BITS32},sfixed32:{name:"sfixed32",wireType:g.WIRE_TYPES.BITS32},fixed64:{name:"fixed64",wireType:g.WIRE_TYPES.BITS64},sfixed64:{name:"sfixed64",wireType:g.WIRE_TYPES.BITS64}, -"float":{name:"float",wireType:g.WIRE_TYPES.BITS32},"enum":{name:"enum",wireType:g.WIRE_TYPES.VARINT},message:{name:"message",wireType:g.WIRE_TYPES.LDELIM},group:{name:"group",wireType:g.WIRE_TYPES.STARTGROUP}};g.ID_MIN=1;g.ID_MAX=536870911;g.ByteBuffer=m;g.Long=m.Long||null;g.convertFieldsToCamelCase=!1;g.populateAccessors=!0;g.Util=function(){Object.create||(Object.create=function(e){function d(){}if(1a.remaining())return null;var l=a.offset,e=a.readVarint32();if(a.remaining()a.remaining())return null;var d=a.offset,e=a.readVarint32();if(a.remaining()>3;if(p===e.WIRE_TYPES.ENDGROUP){if(k!==c)throw Error("Illegal group end indicator for "+this.toString(!0)+": "+k+" ("+(c?c+" expected":"not a group")+")");break}if(h=this._fieldsById[k])h.repeated&&!h.options.packed?g[h.name].push(h.decode(p,a)):(g[h.name]=h.decode(p,a),h.oneof&&(null!== +return this.clazz=b};c.encode=function(a,b,c){for(var d=null,e,f=0,g=this._fields.length,h;f>3;if(p===e.WIRE_TYPES.ENDGROUP){if(k!==c)throw Error("Illegal group end indicator for "+this.toString(!0)+": "+k+" ("+(c?c+" expected":"not a group")+")");break}if(h=this._fieldsById[k])h.repeated&&!h.options.packed?g[h.name].push(h.decode(p,a)):(g[h.name]=h.decode(p,a),h.oneof&&(null!== this[h.oneof.name]&&(this[this[h.oneof.name]]=null),g[h.oneof.name]=h.name));else switch(p){case e.WIRE_TYPES.VARINT:a.readVarint32();break;case e.WIRE_TYPES.BITS32:a.offset+=4;break;case e.WIRE_TYPES.BITS64:a.offset+=8;break;case e.WIRE_TYPES.LDELIM:h=a.readVarint32();a.offset+=h;break;case e.WIRE_TYPES.STARTGROUP:for(;d(k,a););break;default:throw Error("Illegal wire type for unknown field "+k+" in "+this.toString(!0)+"#decode: "+p);}}a=0;for(b=this._fields.length;aa?a>>>0:a;case e.TYPES.int64:case e.TYPES.sint64:case e.TYPES.sfixed64:if(e.Long)try{return g(a,!1)}catch(f){c(typeof a,f.message)}else c(typeof a,"requires Long.js");case e.TYPES.uint64:case e.TYPES.fixed64:if(e.Long)try{return g(a,!0)}catch(h){c(typeof a,h.message)}else c(typeof a,"requires Long.js");case e.TYPES.bool:return"boolean"!==typeof a&&c(typeof a,"not a boolean"),a;case e.TYPES["float"]:case e.TYPES["double"]:return"number"!==typeof a&&c(typeof a, -"not a number"),a;case e.TYPES.string:return"string"===typeof a||a&&a instanceof String||c(typeof a,"not a string"),""+a;case e.TYPES.bytes:return a&&a instanceof m?a:m.wrap(a);case e.TYPES["enum"]:var k=this.resolvedType.getChildren(p.Value);for(d=0;da?b.writeVarint64(a):b.writeVarint32(a);break;case e.TYPES.uint32:b.writeVarint32(a);break;case e.TYPES.sint32:b.writeVarint32ZigZag(a);break;case e.TYPES.fixed32:b.writeUint32(a);break;case e.TYPES.sfixed32:b.writeInt32(a);break;case e.TYPES.int64:case e.TYPES.uint64:b.writeVarint64(a);break;case e.TYPES.sint64:b.writeVarint64ZigZag(a);break;case e.TYPES.fixed64:b.writeUint64(a);break;case e.TYPES.sfixed64:b.writeInt64(a); break;case e.TYPES.bool:"string"===typeof a?b.writeVarint32("false"===a.toLowerCase()?0:!!a):b.writeVarint32(a?1:0);break;case e.TYPES["enum"]:b.writeVarint32(a);break;case e.TYPES["float"]:b.writeFloat32(a);break;case e.TYPES["double"]:b.writeFloat64(a);break;case e.TYPES.string:b.writeVString(a);break;case e.TYPES.bytes:if(0>a.remaining())throw Error("Illegal value for "+this.toString(!0)+": "+a.remaining()+" bytes remaining");var c=a.offset;b.writeVarint32(a.remaining());b.append(a);a.offset=c; -break;case e.TYPES.message:c=(new m).LE();this.resolvedType.encode(a,c);b.writeVarint32(c.offset);b.append(c.flip());break;case e.TYPES.group:this.resolvedType.encode(a,b);b.writeVarint32(this.id<<3|e.WIRE_TYPES.ENDGROUP);break;default:throw Error("[INTERNAL] Illegal value to encode in "+this.toString(!0)+": "+a+" (unknown type)");}return b};c.calculate=function(a){a=this.verifyValue(a);if(null===this.type||"object"!==typeof this.type)throw Error("[INTERNAL] Unresolved type in "+this.toString(!0)+ -": "+this.type);if(null===a||this.repeated&&0==a.length)return 0;var b=0;try{if(this.repeated){var c,d;if(this.options.packed&&0<=e.PACKABLE_WIRE_TYPES.indexOf(this.type.wireType)){b+=m.calculateVarint32(this.id<<3|e.WIRE_TYPES.LDELIM);for(c=d=0;ca?m.calculateVarint64(a):m.calculateVarint32(a);case e.TYPES.uint32:return m.calculateVarint32(a);case e.TYPES.sint32:return m.calculateVarint32(m.zigZagEncode32(a));case e.TYPES.fixed32:case e.TYPES.sfixed32:case e.TYPES["float"]:return 4;case e.TYPES.int64:case e.TYPES.uint64:return m.calculateVarint64(a);case e.TYPES.sint64:return m.calculateVarint64(m.zigZagEncode64(a)); -case e.TYPES.fixed64:case e.TYPES.sfixed64:return 8;case e.TYPES.bool:return 1;case e.TYPES["enum"]:return m.calculateVarint32(a);case e.TYPES["double"]:return 8;case e.TYPES.string:return a=m.calculateUTF8Bytes(a),m.calculateVarint32(a)+a;case e.TYPES.bytes:if(0>a.remaining())throw Error("Illegal value for "+this.toString(!0)+": "+a.remaining()+" bytes remaining");return m.calculateVarint32(a.remaining())+a.remaining();case e.TYPES.message:return a=this.resolvedType.calculate(a),m.calculateVarint32(a)+ -a;case e.TYPES.group:return a=this.resolvedType.calculate(a),a+m.calculateVarint32(this.id<<3|e.WIRE_TYPES.ENDGROUP)}throw Error("[INTERNAL] Illegal value to encode in "+this.toString(!0)+": "+a+" (unknown type)");};c.decode=function(a,b,c){if(a!=this.type.wireType&&(c||a!=e.WIRE_TYPES.LDELIM||!this.repeated))throw Error("Illegal wire type for field "+this.toString(!0)+": "+a+" ("+this.type.wireType+" expected)");if(a==e.WIRE_TYPES.LDELIM&&this.repeated&&this.options.packed&&0<=e.PACKABLE_WIRE_TYPES.indexOf(this.type.wireType)&& +break;case e.TYPES.message:c=(new l).LE();this.resolvedType.encode(a,c);b.writeVarint32(c.offset);b.append(c.flip());break;case e.TYPES.group:this.resolvedType.encode(a,b);b.writeVarint32(this.id<<3|e.WIRE_TYPES.ENDGROUP);break;default:throw Error("[INTERNAL] Illegal value to encode in "+this.toString(!0)+": "+a+" (unknown type)");}return b};c.calculate=function(a){a=this.verifyValue(a);if(null===this.type||"object"!==typeof this.type)throw Error("[INTERNAL] Unresolved type in "+this.toString(!0)+ +": "+this.type);if(null===a||this.repeated&&0==a.length)return 0;var b=0;try{if(this.repeated){var c,d;if(this.options.packed&&0<=e.PACKABLE_WIRE_TYPES.indexOf(this.type.wireType)){b+=l.calculateVarint32(this.id<<3|e.WIRE_TYPES.LDELIM);for(c=d=0;ca?l.calculateVarint64(a):l.calculateVarint32(a);case e.TYPES.uint32:return l.calculateVarint32(a);case e.TYPES.sint32:return l.calculateVarint32(l.zigZagEncode32(a));case e.TYPES.fixed32:case e.TYPES.sfixed32:case e.TYPES["float"]:return 4;case e.TYPES.int64:case e.TYPES.uint64:return l.calculateVarint64(a);case e.TYPES.sint64:return l.calculateVarint64(l.zigZagEncode64(a)); +case e.TYPES.fixed64:case e.TYPES.sfixed64:return 8;case e.TYPES.bool:return 1;case e.TYPES["enum"]:return l.calculateVarint32(a);case e.TYPES["double"]:return 8;case e.TYPES.string:return a=l.calculateUTF8Bytes(a),l.calculateVarint32(a)+a;case e.TYPES.bytes:if(0>a.remaining())throw Error("Illegal value for "+this.toString(!0)+": "+a.remaining()+" bytes remaining");return l.calculateVarint32(a.remaining())+a.remaining();case e.TYPES.message:return a=this.resolvedType.calculate(a),l.calculateVarint32(a)+ +a;case e.TYPES.group:return a=this.resolvedType.calculate(a),a+l.calculateVarint32(this.id<<3|e.WIRE_TYPES.ENDGROUP)}throw Error("[INTERNAL] Illegal value to encode in "+this.toString(!0)+": "+a+" (unknown type)");};c.decode=function(a,b,c){if(a!=this.type.wireType&&(c||a!=e.WIRE_TYPES.LDELIM||!this.repeated))throw Error("Illegal wire type for field "+this.toString(!0)+": "+a+" ("+this.type.wireType+" expected)");if(a==e.WIRE_TYPES.LDELIM&&this.repeated&&this.options.packed&&0<=e.PACKABLE_WIRE_TYPES.indexOf(this.type.wireType)&& !c){a=b.readVarint32();a=b.offset+a;for(c=[];b.offset>>0;case e.TYPES.sint32:return b.readVarint32ZigZag()|0;case e.TYPES.fixed32:return b.readUint32()>>>0;case e.TYPES.sfixed32:return b.readInt32()|0;case e.TYPES.int64:return b.readVarint64();case e.TYPES.uint64:return b.readVarint64().toUnsigned();case e.TYPES.sint64:return b.readVarint64ZigZag(); case e.TYPES.fixed64:return b.readUint64();case e.TYPES.sfixed64:return b.readInt64();case e.TYPES.bool:return!!b.readVarint32();case e.TYPES["enum"]:return b.readVarint32();case e.TYPES["float"]:return b.readFloat();case e.TYPES["double"]:return b.readDouble();case e.TYPES.string:return b.readVString();case e.TYPES.bytes:a=b.readVarint32();if(b.remaining()e.ID_MAX&&(c.extensions[1]=e.ID_MAX));this.ptr.addChild(c);0c.extensions[1])throw Error("Illegal extended field id in message "+c.name+": "+a.fields[h].id+" ("+c.extensions.join(" to ")+ " expected)");n=a.fields[h].name;this.options.convertFieldsToCamelCase&&(n=g.Message.Field._toCamelCase(a.fields[h].name));p=new g.Message.ExtensionField(this,c,a.fields[h].rule,a.fields[h].type,this.ptr.fqn()+"."+n,a.fields[h].id,a.fields[h].options);n=new g.Extension(this,this.ptr,a.fields[h].name,p);p.extension=n;this.ptr.addChild(n);c.addChild(p)}else{if(!/\.?google\.protobuf\./.test(a.ref))throw Error("Extended message "+a.ref+" is not defined");}else throw Error("Not a valid definition: "+JSON.stringify(a)); @@ -96,8 +96,8 @@ var f;if("undefined"!==typeof b.fields){if(!e.Util.isArray(b.fields))return!1;va e.TYPES[this.ptr.type];else{if(!d.TYPEREF.test(this.ptr.type))throw Error("Illegal type reference in "+this.ptr.toString(!0)+": "+this.ptr.type);b=(this.ptr instanceof g.Message.ExtensionField?this.ptr.extension.parent:this.ptr.parent).resolve(this.ptr.type,!0);if(!b)throw Error("Unresolvable type reference in "+this.ptr.toString(!0)+": "+this.ptr.type);this.ptr.resolvedType=b;if(b instanceof g.Enum)this.ptr.type=e.TYPES["enum"];else if(b instanceof g.Message)this.ptr.type=b.isGroup?e.TYPES.group: e.TYPES.message;else throw Error("Illegal type reference in "+this.ptr.toString(!0)+": "+this.ptr.type);}else if(!(this.ptr instanceof e.Reflect.Enum.Value))if(this.ptr instanceof e.Reflect.Service.Method)if(this.ptr instanceof e.Reflect.Service.RPCMethod){b=this.ptr.parent.resolve(this.ptr.requestName);if(!(b&&b instanceof e.Reflect.Message))throw Error("Illegal type reference in "+this.ptr.toString(!0)+": "+this.ptr.requestName);this.ptr.resolvedRequestType=b;b=this.ptr.parent.resolve(this.ptr.responseName); if(!(b&&b instanceof e.Reflect.Message))throw Error("Illegal type reference in "+this.ptr.toString(!0)+": "+this.ptr.responseName);this.ptr.resolvedResponseType=b}else throw Error("Illegal service type in "+this.ptr.toString(!0));else if(!(this.ptr instanceof e.Reflect.Message.OneOf||this.ptr instanceof e.Reflect.Extension))throw Error("Illegal object in namespace: "+typeof this.ptr+":"+this.ptr);this.reset()}};n.build=function(b){this.reset();this.resolved||(this.resolveAll(),this.resolved=!0,this.result= -null);null==this.result&&(this.result=this.ns.build());if(b){b=b.split(".");for(var d=this.result,a=0;anc7WYIheO=0epFRgSN*EGrGtAt?OmGW$@67k|2xwRVrmZthYz)v zZXD7``!h`QzqO}6NqqV*_P-q_&wAP!ji{SZUt7jLO||@rYR3zgz@OJ4p>cmkE$t7Q zW?>R*59~ot%P1XcS9!k3h6e|;Fuz)QHc93OY{-+-1C@p#Nj0D5ZWv{~dj~xuSjHrW zk&Mi|mA|#65t+B2-Bg=7w||V!&QDI?4)urj6MLXrf1aF;KVJOTyYcz(cD)|W?6SiC zSEIDh=eIjn!yzJ57=ee%Y6P^~?`I6k}h_3ZThJLh5b$@uL{UjL{$ z`ojm#KcM#A@r(aFe*Sv=v3%@IS_rgS$g^4oox+%Wl-n@QA3hk~#_pUBbym==FJVeA zZWeUdGR4|jR=O;A>XTLaWIOeNMvosUls$g53uR@OrRdY!PFmS1+i8CyFG(WV1AlL8 zulvc;i>NO9h+;=CzHUHSo`&(Ppp2Ee`f#NK%5HL+6{KNdTaO_8O8s(eL~#>s4<7(+ zwQkvt{aCY7+@iQu618sGj{SOi5G8J2$eowAkf_smIWM}f!j|Qo(=2mmRCW=?ZGxYr z$#Nn4utHal(snSrbn<`lm;5z z5&N@R#mflmND_ahY5odKwVz!iFMxvR1=wY04+mHzi)G~I^q3G}BuO)85AELjJdB*e zsG7H@-oGiyZIV)GyIL8Qa@mk7*4Kw_>o715pStO6Ij3=+*%5z@XZe+xU!}N||Gv+&jFwJsp;ikYqPE%VqN4~v4pOAwLogN*fG+(B% z7Sk`9zcxo``Kfbza{lq{>C5qO?{GcJ)0j?LhNPn24Pvkz}x z{{}wt42Gsz4tuP%)iKn4rXRR$4gF2_bsjyivG2vjJKelXw}*G{7Lqi{k|0-lPA%U- zg|ueqSD#X$3Zq%SZ{Fgv_zs=SriLkmDqq-NnfKX?fF&JsmekNGc8VX zEn6-YNt#n1G^8h}^w%S52NXswh3#82^LD1L+@4%Gs5NGcUULNV7Aj*xVP>|g0gP7+ z9at_b<INbdp9H)sS65SGPuidI(X(rL1AJH4ed0jps1!G0c%?Ckq-I z`mf^)-2#8Mj`jwi?pUAETuA3P7@LC3j@g#dEj_1S^Mgg?hB3&gO?zQfFdS*<(>LLq z8LIvLW}Q(ThzST<#mLJ|mcyPVS8hC`s**o)9FH-3bB+x_*bfE+ti$%pY_(Dfus*^W zs+7S_S|k7=FJNvEbG5=8_Jrg?V;}9+=0c&wK7W7C*F#8GePDeTLDk}rEgLFem>s97 zd*iVGWofli%_pZtpCoKAX{^N*XA)+zFnD&JoHH_P;zkj4T}%5%*Ps&M3qb15?diKQ zfZki(dhz=7d_2_Gx^?>Qg4a&iZ}DKt3II=spc~fs_xH!Ihq?p5ux6xN=NI7qeq|kh z)_;E%Mc%h8?dgw!WLk_!E3LZy5fj* z#lYW+1IHDIf-3=RRubW?1ol`-5VAr9xZ-~buwsx4r+s_;24|hP_y0b=|KA^{^2gx* zKd1NLIa2j<{Hkoy+Tx700Mak*qxPZ9J~Vyxd#!Qnn5^mB_ivt$&!FA?BWO7}ga;G$ zbTwEFzT!{!esFyM)wI7FKy~gTobU^!)mo2k*Fvhgw?f6&L=W=IxV7EViJGmI2 zLs$lDe3=~x%?4%tS)Uq{zd%bbr}vCYAoVZy)4XTmBT(Dtr>CzuiFvvNU39_Rz=$CN zyO&AMB3cDKS$+|(uC43xK>#lDD$IZEELo<6I^ax#5vvFxvi=GVl@+2erhpT9%iJZ` z&Sc6+b>*BL7}O8+TDz9HH?`}ltHe?C2r1j! zHfocho=W=`($$V5h5r%AcfgREhE(6%fjdUC3wwK{-#b9M-Twd2a#VOK`RLw8B$;D$ zr|ctT8x6GsQQpAC`pXpp=%BVWw$mCY#s<`xfe6JC4RAbJ%@n+ak^nx;P9F?vkFklX zfTiGRbL##5y&VP{nE?}=`ZQa5+}J4Gsfz-f2f(c~a)^+2nc-_+4N7h^fs%y!02 zZ=A;t2EW%xt>rnf;x0XV;iegF3+w|&B!MPpr>7Tyy7dJxhZ!UmC&=_tHk?c?Oh>UF z;T$7c_LIZjYzPP;qv_|6u%>IvwFstegvrQbDSvV^`x0Ul2>~f_LBY%EFrX$pO$6p9 zm=sT@W^J?6uM3DhV5^H3^{o!GVG)#A8H5w^kqP1*uLL4SESMj0QaD?JlFmtatL`~% zAsqz;@L5k-Jxp4iRc7plO4B#I4g&WcTLmDLpo>)d@l2u8X$%!C)Ni)stF(XjfB?730;_5n_a@HWua%}Jvp9jci$&3B@6}E|4cujv z54#x6aW{4Fi9Q0eBcruXBbtK=wsC_fHpdebyj{*c*pTW*#2w`V=+*Co*9)W-9++V7 zT<89w1wc|UzK5pCJwh42a7!K($kV;ogf9l<6Cr{71^Ie5uLdaSXUI;M#&q4XYLWmZ>Z~LKR}2p<=r&2+<@si z2a+{Q6ZGr0r(ukMC09Z+sI7tZRt`WtwIpa_^;Q)sCqyr0m;zY1HHWxbxlI>YCVvYR zl{@jBYElm+Kv1*1cCGX7rgg+A6+mR8y7WzL+ElbgS5@0Ox^gvZqB|-2(BGywo~k&+ z@$Qio!(4lSKL^i<`6GrEi$cmp5#FR?2!a+>1GFYGC50qf36fq7%}xUpRA>u$Amuv2 zsBOYv50q;B_T@%R-t0q*dE_ovbbpb#vktDgzK`_9(u+cZAwVE8UqPZ(Z!U?hY=!;( zdJS%lR*nFdfnx@qHoEAV=u}T7qtgyy?jX(GW^M|TJJj0dZrH0H-|pbtT_i^4FF~>h zwyb*lR;_cvEbJZ3l4KUqOO6q}WpHU9$j9yc32eZ0GK@6=T96&)9xL#*)qfW9BLcV8 z2ona|-95<^4;(t>+&aG{N!0t^c4|CFH&{bcZ&KvjMNYGnnc?*vw<+RvK{(4%cL|TC zZl0vyLwT>usW30LlSd(~$}UZHZF5S?U8qH+H^)APYwZnGV~+_&rGt)XMi&1oZEBK* zX6^=~FGTa%jh6IBEPNLR*nhsY#VkL7hQJn4)5M!PiX*8*TGbr%q_an)Lt2;+fowOr zAD_NL;#H!7noer@#&o1)_@O7qFNdZA$~d~;X1TZ_!gGnuW<~@Mb>G)%Q9yYB`tT5z zSm}abAX>(x>kaFTyJCwUk<{pYvVB$kL}NR#wvS}&g}cCPhEN_xEq_I34j5=O6cRpr z_W~OCl-9ytcH2sf{qM|%fT+sYpszBt=P|9q_*?qb${}Org)>s=#US@_2E3sY5JonDFm{Urf?0P(q92{_cgl z!^-VK=eG*XDGc%Lx0z3B-Nhgl(l31Zw{p{BC99}RI!l{FhuiOp^CS(eD7XLW6Ys`|8DIyVCT6K|steA9*nBtxfxPMsch+BgQIYwlgjVB#j z5yESFBt|OlE}Fm?atTj^BfSlAv0!{N_XO`7VOyXN?@XDksEKTY?wB3OvTzpjGo=7m zgwcyoZx=^I%%*to#+7S_zKW<%e2|j3Vl~5*ehV=HUYbObI2^`X=aQD5S1N|PBVB9H z4zpiz06bRnY=1UeDKzgvLEW%ekKzT z22lVZ6R<9DeZ9kJOiu#@g=!CWEKu*jjs~hDO9^$14S%f}JgN{=m}1h3WGiG~CLdp> z$as6usG`QHXZ$mv28{vyCMW!aplsWYd|86OVmNly0U6=|>XnKwQLoI~cnw3zmaepx zUI~Ditz?Ia#7>tHx@4m6p;kmwm{u5uI<1RCSSWyY_TaAx-nJ6?8_L+MnOnBUnMuvG z`4Vs#-+wh;xh>kIP zLaiA(_V3D*aAI~!FR-gnRijaY=#klG?WAAS4szsIckPw&R)rF2cTY+mh9^ePg(rXnDQS)vY?A#>~$vV|=S18x3le%u-HG<0# zzJG4hlFd_Eb_wQC0G`U>Lk%#Y{8|qm$VSUrW>~*T2K=gOdo)7XYLHz5-->PcCPHTH zaAC#{7s%Gb1%ihQvp%RYX**mXJNt!i3j#>XaRO-^CyR$Jc|x^Q4U}{oHIQO{B~{XiAb(p999o2{-%HH<^Pr;P;qp>D#dI2|S2i)X9^M8&6 z05;?5RA963z?!$pLBS7!op)uXT<p+FxS)PAwpSxdM9vy!$ zhoo_bQJ(vn9l7{CVQKgdlT;AC4S?TSwf>Lz+jdg?!x(G^5j^p+Tllb3JS~aZe$A+e z7MLwbX~2>gWw!A9JOtzG4z{x6pnqViE4XWp&h5_86@Fn$_UX>NDaO8;eZ zf@g!@$dGq7OiaeL%HrVzMHY`XU3-?({(@UehoxiO%pFV>x`-_>gGP+quhVXdWaaVLuPt=)je zF9C>8UxZ!+E0Ji}5f*rjTkIMW#Y)T#gJ8_fjD)ugBOms$%V8pzBY(UbHJ9#2yxpgb-GHjwgmJZxO-9=NjcY(qY-4BqbJAFEBQ3kt>an;U2LmN#thP zTW$gQMOs!3G#U)YG7eR8Rnc)nDJC%hD#9SdjZvT;)v#->`Jmh+k8V($qig#DY#zTG zUKOYX7B1#5sN<*>mw)o8N~5FW|JlMNR2PqcZ6735yud006S`U<8uXk%`SM5Q10sg9 zDrkUaG=CvSQ|0A4uJ}Squ?TMErAkSIokjRE1y7{$d$4@9&GdY}MhajZ9NSHPz}O`1e|8^yG}*E;D+y8O3?B*D_;e zufJR_V3F|iF)|#CrA8HwzoO5>0vVcBjZ^PiNwO+>Q))qrjXKgpAGRAiO5a6AO3V@wRe)v%lYKtp^VDpM(L_ty>mg4@*A<0keT$ zmQg)~e6WEnG1WD_$qd!Rnl%;+2HgoVDBkKTuG3;wWol55dOExCPOZp6cq|$0D{c0Q zHkCQu>3>nJ%s;RKZm94hP9WdYsJbKe$)BL^kSxFHl7y-Xhol^(Ph_BL$*^`>bpHEq zM|p)>-t^d;iF6YW;GW;G8LCw$zSC1{*f?to_i&e^3sgr(>UzxKV@cTl{+?I0DOfx5 zYKEhLprkY;6g9?Y{*NVvToaI>o1K1%3l;S-rGG9=I%xcKwbJGzFTJ?aQgFIC;RTBFw5;8*9F`Av-U`P)mvV z0Ta6Ra}EfLhK2r=sKAF^6F76ZYy77H>>8hefXN&g;zod}2ecjWk1)`(eUEow6942N z%YRI3CZ9ylPqzHd&C!Hw{OFS{KZe8oDaiVhEn*UupA`8uWeoKxJM9=Wzs`o=Y{Q&V zt-ftd0eH86If};k(azP%WnYq$pE?4q1h=4?$f#Ck&G-lHurnfd01;Jaft4oHMkez* zofX;JKS998)QZFKqA}Eni~^4IsbUX3(|_Vaf9f9c6H~?s{+XJvJvJcHrv4}!x920s zD>V*n6y;ig3R|%m=>E~)^0T$Qxmic;{2(3RdYEaY9TiS`UX^0|F4;IFMgT59Iz#|9 zuYf8(%e>Ii9Y&H(`H&b&D5!8U=SnMeSQG(#b7L(lM2hjqAI@zE_QK$XC-eWOx_>9_ zZsR!eJAMT@@zT@b2n21%i2;uA99!NfFOl<{c;CK2jNV+pz#u?~Ami8q{`+=S^-+Dy z5IW-B{UQ-FeN^{US5?M5%8${ALKW=SE6@=|%cV=R^}1i!78xPatmL`|Vbn zuuae8Rgxu%l&3+}%0i__*`;v1oL6onb<+*ZtQ!zH-}#_8fOO&t9ry(bg~8Rd92d?p zD_wl%GK*OwAL1}kq}9qmX@4SdAI#+P)YLQeL!K?s(Nsd(*tYPitMP)5yHMlKyPC3b z7kb>eIHU`4sFfVSg;cpWG4&>T#Xz{|KW~@y$%qUnHAe34_i2HdT5cqpJ{{@Au*Fc` zjqh)oXPbIiY$hxzrxst-6=C?NXW)}8vb3HS!}-l}n~HHE;BlkPsDEp%LM!NTww@f| z;7CcaLNtzipVGc1Ve$ad08Rb1vSzu;2OEvd)>N4_)p?4K5Hzx1+hx>3fj%jQKiVZ9FMsc75bgfam5JttQ^SNhli#(l8%8Z_ zxGd|xbMu$qU1SCAtbg-7w=fy-UK|VFyF(TM%7f>Hh3E6nj)g~Ee0ty+bOEIAObj4= zlv^kaK!1S5Q%6B0TfWQoU^fQJA25%fnH-;eSNs^!6r50A!0hz2kf&lUuPre$5E>XT z?aPhC?_vvWrqwtpas3I}mka0WF)hZrsXjjunxL6Jfshh4fPYgW|F79yG)4z%MF;c( zVyF6DRx;>a3f$kG7S5sOxwiC5$(V(F%QM@7-HCUIEp{*?$q(=JQzi8Z}| z6{SOom&TQN^M8mEuXHqcS-fK{I|5Q9+2D=jkK+hfhl5}#+R`Q?)r6x@(v}piae8xz zDW>F8E#p;q3y!ID)JiPFRe8#Q+khI+hAXO-U1( z=xB2#;&MY)iFgsSSC#Tw@#J!1GZPw`y+GO0qFmNy+iYbB_tpHo-0z=Uf-rw}Ho9`S z#YDVmL!PqD+q2(JR(T8lD{`;4Iar$_-W_=LUVohii8b_@A`c46N>hW;Pi|K)a;(VB zLn3CyJUzfnhgV?={Sx3i&fHYnKtDfQU5nOex6aN^TYFV4s#Q}@7qgbDq*~2gwpk&> zI5n?x=S|l7>Jt3)v$j)9(#EtT3-@u}DqAoSGUYI|?Qs|izF41U(5Ih_i@+PE(}}1! z-hYWGf;qN#dyEqinltNk1s-GK?fi5AjkKeVj`;%YL0A6>cKwPzBOuvUNExM2di^p+ zOD4rtDd|Wd0_>U<*O?+01A`=Z3|d1_J~+u#_#x>gEuzjBl5Q#tY<(+&i@V%}U_9L> z#=M&sC}Z9^8VyNG>ujDafReaAA@FkEX@7tt9-rtu=Cr^((SHFoYxGMxn(&hTVlPoG zU+acw8Lpvv1-IA9EpWX}TJScZM|{z&55+`nl_v>3Vmct}|1&w|o<)Xobk*kB?~w?& zl83J|ORYcB-SE}D?QLIx0^EIQSB3D3g*&AM?;~E#1(Js89&P$9m$mMt^2MgW~K9-fy9S|MZblz9pv3LR;i$L zPBckAhNWa^%Bnc9`K1ak)w>ojhf{CXU`7}C&Fx76FDz>o+QHTAn&DeS?y0_< z^Jo`)rpuNo=Qu3^F`G2yZG&u;VDbEq%K$bhB7kS{eY1c_?d-EpzWD5m&wu;L7r(hG zrp10VE+)>D4-qil0*b+rU_i>&;_1_;!TeO-F4&pinJ%%0QY#u%nfeFZF@H}lg}st9 zSWJ+ZNP3F2aN5IWC%ubR-EL(JwO}ob8y$h zUy@B*ny8*kz*|MFPSWIMO|d>mp8ao6?%&QMUD2M z3eE2@Xng+w$a$i)Fue{pmG+ha-DY)Qe%l=|K$ZcAk%aHy*w+==DwHd4ryN)miKx2$cbt3V1VfOwV}C6``Z4L;pRZcAk1**)AfUlnrV zrNj#xqj0Hp+WHaVQ-39oS!Fpp=(hN?ceAc_(j4zS z7>q=GYV~f?A`=N$bc6#&1YrKm# z{`+$A_hQk}Maxa9&-cBw2eq1N-_zzqH8H(xU zm?+woWE*gK^nZ+F?|fMKDDvRq1SjTMVp6_n0vv3ZYj`*0u&_$6yo!EyEwNOt#Xn^G zN-2*iNc`z5O`Yw`l``{3H;^Q!o;k{J4n{`f+TK15U8i(%e|tic_VRosrjR}lNnm2a z?fOguDs0QS<#Ms%ml0bA?KpZt>5A6kMrkAKPtU1*@?7~=4C$m45OQ-lqv zSvML&Vw2VQrtX&=9)&Z;^~)Y;lo;_r#}&R+yoX2)`bCPllFFm#?+X=Ckz#b5NTFLx z$s*VZk}hH!REVf-VQ!+2_t-t!<7W6X^5|zsI&cUPmpJ00MVzgv2|qhl#^?f&cw9`- z=;`4u34e!x)KoFiBQ9g8v47X8A33>BZCkM^q zbH!B{zbKpU+Y1K-cdR%|H`@@o!yB7#_ihY|7}Gv>(Bk}UsJCI_hkrlY?zU`G?u(GD zf`Vkfm#-omXTNuq)E(I2ng+E=u%FO|fOz=@D1VDm1Sl0rV7dAS2Jkkl!Ut+U>f;4|YtVxCaRRr!x}^nkxH|e1 zn>eFmifH@iarhl7&cOjs%}EcB@Y{mnP32ffds&6sQLnj!F$7Bv!P-UJK94nJtmE`F zK!3MBR`N(=kKa;jDt`AEzoE8YOLnAVQpNbd^9Fgy zqpBcd&@UhEPZqae<-hp}L)V>)BV=BwZf-ZYxFNcj=9N9x1FIA?o>A2!%qPe{6EY4( z46vR`H_Pei_e2${Ue=E@5SJ2nZyKeeaDRLU^1DeD#sN3rj3D0Jg|Wcu6>yv`oAw>I zX|FnhTIAJz<%X69tg9fd9bF= zPIgT*K56gox4ZGh#bSBiK1kYoyMMl@fv7$I_Tn$F>fb-ihd=Bteq64W7Yd|ZB1AS4 z2M86ejtCXjD`DUB?HtalZ15f)=YGd(s2_o^xh4YLvG*GM@BZ@DpRufzz|13a8!$LO zKNl&-h}wj^xsjNd#PaOS%V?un%6C-g$l5rk{DVt~Fy|4tnAt&9$gh9`Ab%8d3v*B) zgdUZO@YrEB+iI9j<`9N_b`LPEQ}W0b<2nue#Cgr1yQXTEpdMs}XjE;kNKRZKaY~FC z7S{}m2Yr>QBx?P0Sz~qPqvpwY($J0x8$$9)6@JW;f~`?uUCCoBbdwaGzim8)nIM9! z#Zg$^Gk_VKWBoy-4W_&?mwy}`X#spim*pd}e*bRlMV}fvGKuSrSYz(1NqT=2^%ph? z%)p*{3#ghSzxPsrXbDK3yMQ;$yCF8`oOxL$O>J35MoJMw?kk+fP->z3JLS^3LkIbV&3`yU`-CSvNjytT zju{H+!Nbix^B&~9FV)o{7{FYrJL3VM}Y8;+C)cinD?%1yT4M}1*+ zmgUaZlKa`*m{`Mjj!D1bt?9NwIYm5QP4m(YN8cGz;Hexoz|~Dn4#wPZJbyn_X^EkU zG-4yOD&?$!6tQ(y$kCN#(OS(_v7Uv=(S7J%CMNUlSS7u)1Ap?BQ4(;rFlSv<=!qIR z%jtncXPWH*#=MThWAfB?fn;hHnWg|3=m0I$s;HCG!h+tDu8WtI+V8`SG%w|ZpJ1@R zeWW0cWiI8-W~1vzn_ON`Pe)@3>LiL`#~eE-4kb@e=Yfp9QC8ph#w;a=K6Nr0(lMI4Y-iUcTIcaSM0lXz7PFzc>^CuPe%*`ys{4OOK|fD!3|F_$hM(emCjdqzTi3rDZ-VDUl@ZpzFney~vMI$0nHKaHFeQ?;yl()Q~bp6`%2^!E|A= zLuor0d8J*>RSNZhf)+xn8%S8t&plB=r54j@D*sZs|AZ9Rq;QAv^i&v0XiV5TXU@FN zT6yGd@_(&{v%R{RoS(O%VsguDJ8L2CkAp-CMs?|{GH9U+Bq&ZwVVVw?Mp$S*?~R%E z&DOkv%Hob#Do^WA<2$4`IVDnv?v9XfClF*{l2y=FO;o2Kbbj zwPkBDS)ZM)otkl5Fq4?`v=s+TG~LBn3li?=0C8bZpC5Tz+!vD;E+jOUdIRT?j-!^i zXp_Au5>Yu!#S@nDms#b?SywulDHzM$SGg(Z;dZ*beyS6n`kgLyr!W6orHONITousl zjgbN^DTie0_M%nUn$5154dhspVtmj~hv}}UchhCLErzs{ASxUIQIkC?B!6QUt1cG> zB_g-?W|NT_Dw+rf)jjT`ZjT|aVa%wH>rfdG6A0bMe!LMm%cMtF-noFZr2PF;?+El1 zs(BZP$f<NuBdIKQUIW5scZ+zxpl5$?W z98MRvw~L$RC8^-bhxyB)Dg&&L+WGj;^hdWJ8k^Znj5fXFAf(2GP&(*l6h@%}F_X8(A3asBI$E!E@&AV|%Qt*UyfvwdOC_J4&s+rV8Vt18Z`^ENvj zojS+|7p*rJiXwb;v9w)Io8i~D_h=Bt{w>=z-8@T%KkRNdkkk#}+T`jq%o~b$W?ugr zckSO4a(cAgsYQP*W&ZX&`4~8h{9AI4kM$nNJ(}N2*_ONy+M4QHPJg?UY6R(3s`^*dN2mdy^TF2p5(Gf{^2c-Wk=oxn0Dym;jA7e9(&4!< zy))mIuf4d=lUHge2&I$kq&kTB3fzf!zsK8)$wC(}^ei_J&S>TQw45c%jFDU`O9T;q z=S{{GZ)9d8s}@rTXPmy70+k@~zwZ>J01w7jX5kO92!B0PFv%<-;b;frzV9?_Fn^-B zokrVjx!y{twccKL80N=Ek)5k3{i1^1>gi@4F~yOT@&DYm^L7>;u4Gh#z?YIBdbPGn ztDMpjjE&~^!m~iSA*W=`!Q~U~$HB~kpjkAXbe2A@&&>+!GGTzb0O9=12igVJd3?<)>N@BY3>K@cNG>V!My|W!p8MD@9%yfd zoRs+^i*)Y{Q`6lD=}HbAdvd823Y{4WpUQ6=tvy?{)@vn5(2>Jx? z3wgfJ@#<7cV=z$e0iAiyH-=u%FOT9Eapp^Q=g8%yFaMApRI zddfpLT59(*FCf;RT}+NeK*ubi!ezU$RnwX-y*1^0;brA;7hIMix5k2PJ%B*?H~{Yo z3x726Ca%YjPVUCJM&{kbM;X6~4^Zw@DfZb5EupGr$|uN{A_Llkna`Nx4l8QJ`hqnW zk{Ein;CfchitB43@3!<8ahsagc2lBPeeka7a#Yxvo7>yf!!{yfH<4>47`H#3!c!GC4!=C-Kuw&OaD-E=89_WN22BH?qqKE~g` z^;O*Dbyllt2Bw}c&i+Svc}taw*S~r-?A|p1sGuw{-Zj55#a45+2)-b=D+Y_IV>yxP zX-eQB(v6`_qzV*Zv1&5md039Z#avC z|Fee?2^!nJmH36vWd{HUTgN@Nr%Fp5`zY(%`Tum5K#_4XTf>mW9>N#SXB$=WvL-)sL#`>Z)H=x3vGDr@c*+JbAth?0;vP;hEZ_;lX3= zC5b~CX@7=k{TAo`r>T}-QSE3!Jos}GdNhB|sHOcu z(=1G4?U6m~X&I#>?JCa~*=T=%9_Cj|*Y=W|eKzFr>Ap%skffSVa}q{b@4%VTT5UGtxm{M+ ze;l11zqxRR)!OIB7w11caSnf~wI?qpC&#ayN7dT%i=(rPU(Zh8y>%W}pG@AoRQ zqd$J+`~zy=9=-U_qvt1+59MQL+Cre!LY~z!=nTf>qpZR>fBa~)ipdQf>8zkzpTm@1 z+%D*-Wr~fptaMrK)F-R-$#&`kjedHfQ1;W4T_`KNEJdH*cGAjD*-n2Gxk(bq9{77( zd)-f#ZbWt2M-)4H@pS{r@-&R+1!b(%)rTt`PL-2S7v^dCZDxQ znkK2CSBBCSNpu^8QKThtbgL1dYLREmcLZUY<=TRzz(7t@TQ|qPy+EIkgAAP>9j7#3 zrm+^&&ziq6$7uPfvpPQi@aFX8WVCm%8RzNkirS*a(Iu_A<2X1-5@;#?xP)ct_wRUU z=s~8NHW2K;3L}4dej9sR+Am0c#d>5(^oedfl6zN%5Avb*``^w~L4#v6IN?*JR^jaZ z>yzKWN1nmZG|OR+wYEBfx=-{ym#v|{&c574k8JFFaq(6+@6+w^{kw%;nq*0kD?MkH z@1R0jbM&iEsZfRSd@wLqxGcUyr}LR%3gNis3KTaF<0XIHxFG3kRHZ$?sybC!Xkn(s zNv>tf#Ue>_>Vt;#1eN|~OznWe$fdA-Yi_RQ>dNiOg@amS&geDAFmItUCKTpoyBffF z#n6F8U?~sh1{-2DH*|eKOwdUhWmH3U1zp`51?nM05tp)t(Ka{)Lp83$w8t>VuAMAs zZ0NsEE_8nj*gD)Bg1TdUMsp#Z-(YMCGCN{hO1Jc!e#!S25eZ|EQ=9g}s9-qK(5J7% z8)m5b{brp}9f%1CTE)oAZI;8H_O3`gr>c@aaU7R1dwY%zK-iClL#)I0%WS#6Ew2&euaoSAAf86G7GDh%Fl`V3-}H zDYSr|M!PtF+`wnw4}x^ATXqZ?2O@C6`sXLb5^ z0-$%LTQ5#d&nF{&qg$tMFL>>g{T2^qtN`$I1iE2Oet&m#GSVIRg*9W{I==w-_bco8 zqyB%RDDu8#86ST*|9zzYsH-hx)r(?kgBQfyrfxAeIoh9IW|ynWjWfQSUe2r^^-JT@ zobAu8vv((x(f(h?;YjQlf1NB)W+Ymtbb+qJH-Ff-dgw!WLk_#v3Rby5@*< z&A{K91IIOof@=Y6))L{Y1@>4=5VA%DxaNNfux5}8r+stu8fTr7hkqYE{O=Dl`D6I- zpR)(>9I1Lac~v%PZE?n00O^jbV6s-!Nb`hFPn#^Sq%K)<>Un?qB4K9 z(%`qrduULds(gC-;sT%Ynak=|Cs@6W4rqV;vSs!T#+Y`znf%K7T<$Cn?Dpqx#}|`x z2+LrNFSC82*`TaH>N8{d7ij6_?16C!r2fTznh#8T1Zw;I^z?+2n5Rq7MFQpqMhp?y zy-acz(JJW4@{4$NV_laI0&tO6VP=14$ujk*1I{EEvx*QR>o4F?Ss@Bz3OJFs%!zmH zOlQ1=<`49h+Y7{fq74=&v7h}3!M5Yu%8uPwv2$G-n{jM^z(K?aiYb@9?1*IfF(ap> z?BM|eVF7vtG=h7MV+6%SHvK|9Lt)G`O<}?UCzu}0EQQDBJXXo5y;x>fMhkyariFr1 z5W~9|pyN##qrK30TaDxzicZr9y+V!y-O|{^P+L-AjyE8Q7;L&K0$^_VR3S!yT)~R+ zAiD~K++aSk9P^o@NTAl2A$ZxkvWS(@>&wd}qb!)g!7!kbv7a!A8K4&UcB$DmShCz8 z6=J|~r$@O$t7(qS3h{%1rC)zC%s~46Qg{P(<(wTD)c5sTyOz1{YBx|;GBw!J;Hwwi8pR38f97eMT< zlT`>OAk#3P)8P!Km$27qgrfRIa!up#Z;Wyjb1=|r8pz2T=#!iX7=Jpk;x1i#LDG!2 z1@?g>l0eh5)6)w;-TDHU!weFO6J&ZR8%<{xrlZ)8@CGAV_LIZjYy=1)qv@y6V@)>} zu{=!O2$PY=Qsid#Im9Ru0#c8Ff|t`_K<)7~5ty4`T0EJVwareyEFkuPtu9*Bw>r#* zMNnd85KhPkCWyDZ5`TyovtWMAN#Se>N;)Uyt-9y5g>)1Yz-K*X^)P95R++IIDNSGV zItbi*Y!!e|4_&0%k7o*%P7|nLp?o;{@U^7Dc1IS3CJMAj>EpbupUbZhz|F6MY0`N5&hUMl=T# zY~uz|Y>q1^c(c55VMD4L5qA^;(5pWLuNO!wJT$@H5$EB71wc|Uz6YksJwh42a7!K( z$df$iac&ud2g7Oy2xpod%J#}sk4)>}r)p=2c6RK1U|PRa`$9<6(f1X`x9B=6vOkU@ zIwuiWR}|Tul7Bab&&VOjZ=~zyAV7#K<=r&2+<@si2a+{Q6AbFMr(ukMB_bgi)Yiay zD+i#SS`sv|daDYR6QY+gOaUxN%^|MWr0F8dWTB#R$G%fd>Y)TY)GW7M>)iWko#&Ja zAhJ)@K}`&eHr-6-@h1PCPND@e5J%_Y&5tx95e8Ar;DzMPW4nW zI_(hV4u8_zZRVyhxkIgO?uNbU@$C-IoggtXe+iOBuw~WTw`v^$v#_^6Pm*~=FF8hZ zm%*jIFCVw_C$It2$uQOgXhC+Ed#u3MR$IuA2uQ0D_84p@dy*+0ICRRnb$&~ds1Mxj z)VPjru!g4Iq{z36oMtIA!yP!JDdJ5*ILlFY34f2KBu~=EgBElh|&wj13~PG2GMD$zhqC$)TII#M$H(39hr z1AkKiWgOjavs~N|;km@!W<~@Mb>G)%Q9yYB`tT6ev(kl!foK_%Zthrb+!b5=h@?gz zc-vRiPc*g@Yx_vXUbqX)W(ehC)KX;TfPqFsA>p&PFQ9QxX)Ww!x2?q3|K4l}h^mYY z`YJnYgFNv8c03`JppUX~@G+UfNArq^sSc zFk&7q`BtL;RUFQI5eC2jXF!g4DXYr4-+F+K{ zn;{aRrBxUC$BId}JX75B0T)XhacdAE$JpCu)7foOcxrC>|q27kL zSTKG!_a5Fi!nQyk-kCC6QIod~x_@JKAj`se%+HhpToFbuLcLuak!Lo=gEy{-9r`Mw zKK4OM;)>NAQ~E8$1bAr@N#bxAZ=Fk8dTyy0WJkI-t{rB-;sAK8=Gtud43Ftuo8|iX zPk98uOTu4*5?~<)g<`)OJbGepiwKp-@Sk(bu7C19oFN7R<+8lC@YUNDtABN?((Vhz zZBU&Ki?hPFxuQiP{PMcCI!{J#%E$+A4JrGfp6zEc0bzIwAY=m81+K4mIF0FPfS^$A z!Hxy$9oW%8bz~`_jKXq`s6k@@zsU(d zAt>9nBVU%_uNaP9bwGwVfPZ?W;!D&k^EPh7P_m^ft)*K6U}h`Xp`vG}%LrYvr|zLv zL{pen7=}8ni{r6S0PXDlUsJqoCGt0vu~{>>Y>zXOnrSynz+rsXd=B#~jc6WOggFQ; zqB&SM9W>fzSD5)wP-0e;m#X-xnTsHI`n^?&VwGgnj7!g z1-3f{Op%0uB!RTKBCqL+$j+{)RTB50XhWLEG!@TrhuiRApS5Q_ z?}M(sjeO}gxsmYN4hU3pT{9A2t&7YtwCG~by+?G6*%NBb(XoG1o`e&#Q+k12g{m5j z5=4*9HftySqAsu4>VKw1IrMNmYt98vL5E8WE*-D{D2R0D<$9=ER9O!RaVcJ1=*Y7b zxQ62ae&8&z(y~i12LkX^4j*cO z3FX&%_~6}XS<4LTSIK~1Rc(((C|eD0m%z7T8@`H=IXhgKvwy<{Z|mWLhldOE0jRRq zcDUf}>=(W+2=H2t6THT8g4c4K;NE$hP(45J@SvdDLmVO0RHy4a!NcCgc|x^Q4U}{o zHF(ARN~)w2LAD$?vU@c8v$1>=Bk@eezIl^r|-qhfb& z>e)>0EYz&PWPdQm-3cTSne7fn$HgmLWlYnSUGijhX|=1=rNHmWcP&)=1BJk5-xNk# z#^e%bRMm&|=+Ysvl)Y~So`Na&dt*)9^a5_u4!FsI<~<1jY{u28z-HfoHCM_(!FPe3 z_hqJB?=p~XTktk8*VAu8oaqIjoQk$|%g8Rp%M+{TN}Ix8S^a~g>{Uf}b<6Aj41m>p_U!RkTES%x>;YamiG;MxVVFUqP5M(qTIKOl@<)1hhHHjXVy}i!f<>wAY zxXx}jN%GSvBLSF+xCzVNXKT?4))+d8Lxg2~9e*dEW1hetiQw7bH!|d%4HJ`bt+IIh zNRh>pyRJRU>GA6hMfR*RIll%XuBM3>9rlKsUZD$f&;^%Y(dzegeuq~%Pa<}dd~Sbm z70$2V3BIICNnClfjPX>3`u#rZj{@Z5@LsHpKTPGte#$;2VX%f4e{8iLak+=(1S6Nb zrhmp;(sIGXuy&9pHzJGye%I^019{=Pg|(Kx#hobDw{`;>zXTvYeG$45tVE(=M_Awu zZn0}j6e}?|41zH?GZOAHjC|O~gu_HIM|d~LAct&9FCtm?hFd^>k(N~hjRwQ9j6;=N zRdn1?ib)KBiZF;rVic%LHSC&eJ}9@BN4F@>@wI&cHjm#8uL{%x3m5Yj)NxdcOL<(S z(b4h$Y(YG#i$}n=4-zU~V3mOhU9S-hx=x^c`J?gy5kpxOG(dBjzmTJ;@*)lqUw=p` z7J*b=s+2U?S%fcB@I)Fvj-AfH5DzVpIx8BAFIsp{>3A>@XDIUF)SHDdxZv1h%8Xwj zD3OrTsJw*E!d2q?jCuuy$XjXUxtV0qaK%vsKGM|bZ01G#eeM+jC_t!}hVw8c5sJRw z7kAmJ!&MuZrif~))kW~{w$A9v8GqefW^`*ait}W*WyZ>0f4N-1BH`y_WH=a0jVc^} zMW06nGBm3ir{1@cWL5O0)Pfcpb*P6vY&Uk4zKe>;OQ4DZ;JpB_2kp8D&&TSgK*p~8 zq)cVs6?ehx4CIm=V50@HEjz>_w%0XZVXS;T9gPd)hxVfo@X6$Y|=lU%XQ6=Crz zDHtXXF|Zt|{7^=lDU>Tr&_lS@1r&?w3i>R+SW4e(I_gd?L1AqMoVE}b&#RBY6>8BuIHt@?bs)vvd?qEwybxm(GLp8Bx zjm3gNGDQZ(TYbfKTCA!}4eC)(XBXb76*&lxC4+sX&0f)_GAEfG*2???E8vC-KjH-P zJ&me6VxRm8>JG{Bn=VPHs&GikQTkK{x|R%UXGQ0~|8|sDsO3$My??n#H}L@O`7N8F zT6OF@J++37v$1dwcR9L1b#z``k2!oS3G4Uw+^S8%+Obpo1bRG54K@KsaD^%pnrh6+dmscWBg+0dQI48 zwqAtxB@FplpmLQoz9Bv?H?doGpJkut7r^0BAtLE zeXJNm*R=T1AG?SA2m@H|6#vZ34YcouqfPx$c5Tl`gjZ@D;AQy<7*yDb!9d^7KY_+_ zBwv$cdMpUW`D{);bBm5uRhq8|5W(o)hoe z7YNat3m6z62oYo)Tfl$cuBtw&j{%`0-rX+}IMYXUPk(h)b)A!Dv>wQt-g5pEY4RJi zejUd3;1k$j+-CWQ{C2@+gRm@b%nG|L8dsKOBGs#;{2QTq7Ae+Q1vIKQBnn;~qTdmm z%QbmWD{HLTV}1H}_~pN|3v}*nyEv@L13<9@5Gf~IV4JGbgE7EFZpfr)V z4>odnYU-)_V+MDlcvA`K+O~zix*9L|xC=GzysIf2ccI6fi$l5)hg!)ITtbz56Vq*? zOMeW+ivHtvS)UEbda}l_-Tgi-Fip#i{7C0RofWni$cyp)x_Q2-m&InxGIDD1Mcoeu ze|!!O$s$YFlVUJmFSn@}6#^bN!X|R1Q&-Sqc`ZD^!I6?;g=if4KBaw2!sG#@0h;=2 zWy*3j4>lB;t*J6=TIVS~LeR)~ZI`hY3V-x*G5GOL4sDe5z_V|PO;GKbYG&m;nXmp&Lnp&?1oXx8g9z^cW!?9-9=W=&N|O?3zGrw z<*DGkKV%W0Ja}GOc)oagDm;?DeDU-sJiRV}R96lVKFTc=2B6dpQbSZFudsaAynkU-Q zDoUw>z$?xxtT!!=r_XbowlNx6hF1vzq#E% z(+AjpP7BKeH=`WcWRq|CW6qk%glRb?Ji(K>CoV%aSh%)qQNU2^<5V4 zSj&!p6iL>5EBWIn0@mRmSbjEn^C8uQqfF9f6s~T1dx&YJ3^?L?KvM; zQtE??Oz!KbT`lNVl%WpP`V2av;yW}|@~&x?@ztn%q5BY)Er(y$a_}r%yPet0c<#@M zN}~PVdD?bH1*6n^h8sfxQyrEFwsoFF-U~E#;Ko=*BqNj?ZSr^wC8|N&pDi3!qyB{L zcz(SY_xp2EJMX9SS=Q!8Yk!^9o|;Kgsdl1%fQqTfYcbMvJ*_6K{DaG?t;kBI#?Q5X zc9E;?`qOf^)0v%`Vs{U|?K&;GQVw9;UFYsedCPL3QZgKCK&xURm}A5lax;y$MRNO$ z_WP~3OY+_~x4T5?oq~;;yNGf6N_!nkt)*Po&zWG!5+&ktLsp4+5q~pQmGWBg)RV=u)d&hwZ6IpKmD}r)RMF@Ey==t zoVUslOoU8%3vG{h3k6^7m|M{2pN)#Z6{gdJs5sq&D1te*cYBHl5!y2AbOr8W;@zBd z0FAVljt=+&>_I>O2zLF7J|iI6R!AA8P zd8hS_czmLhn9~CDME?S6*65dXG~p%vVlPoGU+acw7OtUm1vl2oEpS~;T5vU?M|{z& z4+TVRl^Y2?Vt+ay>-;l5=Wa!Yau+3%4ExRQsjGfS;A(%sa-%^9bPxgGi2`?&o#QSB3D2jU?V8|P? zx+-S&G>FVx@oJVe-ta8BkjAyh6#`XBk_JIolDs7-!`ir(TwPngq?FIyw)u7!U z8OEE8vA?%|d&(nq4z|i^x3{mvbKNV$XEVGUXYkB_L*yrlf6`d@X*H^>JMrcrF>L2jMJiik5O3q+05&9~tN(2pe=w&(hVP`#Q?dJH9 zJPwG7Q)wMQ+7AE(%lRnkCs)~OzJx%!0omqNn z8r967MWxBrgN5oMi9r_^j!uXO(S9E;MfDaLRHX7Y2CE5bw&0EEYMI>SVg`)ah}>!e zF6;PRYzHJdFiNxHlm^6qZLiP4MHBy$+}V;s^<)elDr!-Z6fbLv??I~Ue{yp9b{^>} zet$*G_FK3+r)n`V5(P>!zB}Qf@#bVSXF-R?cME_#Cq1QosXM%EYOs`4a`|xcoPkcW zIxuJL4j>@4fWyG1QsRI9-ODfkI6FI$ml=j-m~+6|6d#N0CQzQ`9-q)7=2Bv5eiy{w zZ}bX{Z+$1ob~Ki+QGQ#GMGest-YG6oqJMJJ=b_B?mJ1r{3J7;$d8>_7Z>2f}-_9*d z8|c!HLJA(9MMlY^*Vnzz_mNu?nRa#$cgkuDoFvh)b?sgmccvK$@s zc1+2yS$PHiRmzK7cYji6P*2k68w`+Cs^jWGQ09vQQ+w1Mtq>`g|YR-K=Y!G{*-I1|t!FTD_l?$V9;v9ig71&|$N6 zo~XiN?Mb2&$PdoSzj!KX#K_-_!qWmcGR|p@chSawTQ2@qEIPVqc}ey8{^;;t;}=KT zMx+lVk%U{(wUn^&<4du9zCSv=*MInhZrh7AMhPY&2Tc60l3>9xjKy?A_9w#;Sl7bO zIJp`PV*nZ^f6|Aya*=9|MGCrG8+nO0@7^mChcqNQf+*USWEyaF^o(NfeOUP@^5EhG zXXaUA^1NsQ9Bi0ta5vg^uRDT{te_yDGiWI}sL<-$nN*2LRkaQ8-ph84t3pLm&J$8@w zxEcJ6Jo-734je+nC62gg5oc>^!l$Ro7+nAokBbQ!M|!wR!XY3ZRZR4V%NT0x-*oCl z&aUFj|MV{t=s^709G%8l!4J^)fBoh+P}hDZ2hHMh#Z?!-D4RdF7k>^2?pSe_ZnhzE zhc~v~?%n7WF{XX$phf>(sJCI_hkrfW?zU)C!i$isf`Vkfm#-omXTNuq(;e91ngq2e z@Hn9j0r8RwQ0k-zP%47Ja`lhKmoF}Q=McaYre!G1{a&6U;+2$XnC$z-*irZ^b9Fd_ z{1UG2|6N#x57d5mjDHvStwH;Jj1#!+)h#WU!`027*=!jdQ$*Xph{NwtaSjf6XpWEY z2)`{D+*D$P^eC%vJL)xeFos~sAy~U;+ZVB>jCGu!2k3T;l|0hea6p z_%v9W!+aDBCZS%0vqTONguFX`k{vmiR0TfpxIrHBs4B=9@_);R`?JL@SohaIVZ6F? zafEa$)%tdWiyNS8X{UlFi@dt8+>p|Mb#>*#Fus}x zyu@t-@K1|e?tdkao=*8p&`p(siO1>oq*!8cT1b4%s)NpSHIE&yS?suSBEg@_y32+3 zBgDY-r5Au2nD22L!HAQxlR$4;U}Bs_>SLI)aWTdAm)Jqt^3&l!tbpm-)28dKEJo&S zbjc^hzpFAsi67f8(WrVqG%B3fBomcxGuHh4^N39rOMhs=quXs@tpb$?W)lJ0RxfV0 zYw+vv&!D7>e_h@*w-5JnHOBQKQ>5snB)Uu46KjGsb#}IEn$cN%f4|+0E-x3$`}RT7 z-rJkY8i?A9Z!iB0tNz`?eDK5W^2gCFaexrv>Vyzsy%P34-_6my%6cE* zY3_Hd27mey_?TPg;;vA74gPn3{_0OyOG;q6k+}^NocH@8-X=+Ui7J8mIRsQGa1Gzx3>>w}7fS@_R4uhn9fk zxql0I!@L_}bIzHErbIMsWZf+h$?;j^+A8>Q$-Ot`eCImRQP=wKU1l4=mY4e5tsty) zywKE^rD3GJFyz0&c?{(fy1!GdoI7-kU)VG=v`=`#lf<*c zdhUl0hj#M`tOm>7e}M~9P{ph4+Hj;axa)R9R6?@-KI#LjQ!97AmfX)K#KgkIbAQbA z6>m+q4az0r`DmJ#b~yUZkoQjIt^uxY3UM&zj^p|Jq3THtOoR~|nUyAI4Wx*zQ$Y@| zC5zT-u8Q?6Ok(as_cAeqcgHH}ogI*`j52?-g*oe@>Q2Lv)+6%(9U~42rZhydaJicq% z3%_FDwex-GhszuIIC?&07~s`%_)vnIM+k0sTIr4KIRs=^Iqw}){5cP;qciL@(_vWzIwrwXgnt`e*LnvbW}}8wF{KMke{lO0Oi!N@D^a<1~G2Nbjr zTHQdxf`0Ca3M!?TMpOAqCHxaoT$92b#?ezXB%v{3>zq0BI&0;TyUDj2&i49d-0!!d zVsguLJ8dD}kAp-CMs?|{GH9WyA}CHu;h7GXMp$S*?~R%E?bf`KBY(2k-O5TqTf~Wu zB&_jLWfhBl!R{CdYUqwhw&m=ReV@INK<{jly*Jl83GJJX^S++GnVnGiC@j}f*(>mt z0gU5~qf;3Wr_d-$?ZPG@!SmXj0DPokPA>xfuLyd*@$M|+!#dYlkVB8ct%**Rt)}X) zSv&*y`e@y>Q}$Sm4+7!BlW!>*BVJ!zterw}TQHND^RyKQ%r4!G=m2qHP@f-p zTHF`oldCBpQ7KHtvy}3eS>?)E*E)kK7|Y#PxvApecDkB9)7eh_PFK3qm;bHO!?`!E z3TXDmNP(7=Lk4ww(W-2rW>?Gxa;!-)J~&Q?>8_}E(`C6WhO(0!DjWexlQ}9Re^VE$ zE*Ax5AGh~rlZF|}mI)oIlOc*l1#)Ck_si3v(tZ|JH70zKLM;#%B&D z8RzAz!DMlJyI41`NCj6u%wG*u?O%n|&c}bQKf3+U*vw{Nv}qj=VJiEVET9b=E@9b# zB7gYHw=b3F!gBr-IsH8{fXRX%>0h#=ZI3G@Pd_}a$#fK8n`uI7%*0jwe>=jN6%}d| zi2UL&uU~%q^>bhgx$=8RlWlR|Cc;pTT4k3VYE2*NPay!#^EPPimCM4|X$Ga%(OH8) zL>_GZ&@7m423eISmr1tB)tx&C46JQdZKk)a2Y2#6=r+_<%IsT+fQa z@mjuho(Tzq{2#w;Wa}p0fAEuDFyqJ_^fD2Xv;ZJ=od2uK>EB;n&i?(AOHf;9SPOu1 zjzMEF3W4$mcqIpTWdmMYf5f8f9+B#45U}7ie6D4p$34?2V3Mz5CG|`AN%4HwZC-$0RK7}!?wSt zgT64mGvAi4y}0_xYc&*v(n)qw9YlNu?nJ!bULr6h=6 zfvwUir?doP!}-1NERb%pOp7Aoe4mt&c#R@8tOUk^F>#n%xKK6?T z+M6NAW&X$_-8;j?bT>k}l0!$HTxx|vXU0qyKQG%V=_lKlHD<&Q%AE8R7M zKEeA!p6_$KWR}?-uXCyO$`jYsw&%I=9xIReK}$c_e{7hsui6;*FRMurq65#Hz*kH; zik;lv`j+uC>eYN=U(0x;s3iKOS5c(#v(ta%6X8G*U=eq8DaR)*$okVzrl|joC2<%c zYhrFa<)IrbwfmVD5bMt_#-}2nV-`{2vfbFKX-${jnv%ZoT5`AxE=!SHW5Ko_Kp=b^ zfOmyef0=j_*JDU0b>mzk^KRn9jNin2D0iyV`s{_4P*pSK6J+a;0qwzzXUuVj6*FRe z!5R$73q4zKJuRojY$oL0mVObpsd+&+lib<6rpr-bXV$m3tA}kw1UoAy8eon7r5G{4 zrX#g@m1|eR6B4pk+-J{u%sj+Yz23}}>jjswfAwuq<88-v8oTLIaP0TB6hy-3czuk& zf$OWd$?L3ERSZlKVVwOB^757{6|aBwYS_K22T(yRV!Ug9V=AoXY!Q4xa90c#RmYMd z)svLKL!=u)n@II1z+%+|v*HS~3UYey9C|21u|zC>I*uCOnj<>iUfTUuPT%!Pbj=j0&5}l*%Atd2cApTB z)iP7s7mek=$PuGbY*92v1m>RsC}sp>e=+$rQ<{Ksyk=U1M#4U>9cn(dNzDy)WGnv{ zoW} Raw payload * @expose */ - MessagePrototype.toRaw = function(includeBuffers) { - return cloneRaw(this, !!includeBuffers); + MessagePrototype.toRaw = function(includeBinaryAsBase64) { + return cloneRaw(this, !!includeBinaryAsBase64); }; /** @@ -1811,9 +1811,9 @@ // Length-delimited bytes case ProtoBuf.TYPES["bytes"]: - return value && value instanceof ByteBuffer - ? value - : ByteBuffer.wrap(value); + if (ByteBuffer.isByteBuffer(value)) + return value; + return ByteBuffer.wrap(value, "base64"); // Constant enum value case ProtoBuf.TYPES["enum"]: { @@ -3336,7 +3336,7 @@ return ProtoBuf; } - /* CommonJS */ if (typeof require === 'function' && typeof module === 'object' && module && module.id && typeof exports === 'object' && exports) + /* CommonJS */ if (typeof require === 'function' && typeof module === 'object' && module && typeof exports === 'object' && exports) module['exports'] = init(require("bytebuffer")); /* AMD */ else if (typeof define === 'function' && define["amd"]) define(["ByteBuffer"], init); diff --git a/dist/ProtoBuf.noparse.min.js b/dist/ProtoBuf.noparse.min.js index a4bd2ff12..04556ef84 100644 --- a/dist/ProtoBuf.noparse.min.js +++ b/dist/ProtoBuf.noparse.min.js @@ -3,7 +3,7 @@ Released under the Apache License, Version 2.0 see: https://github.com/dcodeIO/ProtoBuf.js for details */ -(function(w){function x(k){var g={VERSION:"3.7.0",WIRE_TYPES:{}};g.WIRE_TYPES.VARINT=0;g.WIRE_TYPES.BITS64=1;g.WIRE_TYPES.LDELIM=2;g.WIRE_TYPES.STARTGROUP=3;g.WIRE_TYPES.ENDGROUP=4;g.WIRE_TYPES.BITS32=5;g.PACKABLE_WIRE_TYPES=[g.WIRE_TYPES.VARINT,g.WIRE_TYPES.BITS64,g.WIRE_TYPES.BITS32];g.TYPES={int32:{name:"int32",wireType:g.WIRE_TYPES.VARINT},uint32:{name:"uint32",wireType:g.WIRE_TYPES.VARINT},sint32:{name:"sint32",wireType:g.WIRE_TYPES.VARINT},int64:{name:"int64",wireType:g.WIRE_TYPES.VARINT},uint64:{name:"uint64", +(function(w){function x(k){var g={VERSION:"3.8.0",WIRE_TYPES:{}};g.WIRE_TYPES.VARINT=0;g.WIRE_TYPES.BITS64=1;g.WIRE_TYPES.LDELIM=2;g.WIRE_TYPES.STARTGROUP=3;g.WIRE_TYPES.ENDGROUP=4;g.WIRE_TYPES.BITS32=5;g.PACKABLE_WIRE_TYPES=[g.WIRE_TYPES.VARINT,g.WIRE_TYPES.BITS64,g.WIRE_TYPES.BITS32];g.TYPES={int32:{name:"int32",wireType:g.WIRE_TYPES.VARINT},uint32:{name:"uint32",wireType:g.WIRE_TYPES.VARINT},sint32:{name:"sint32",wireType:g.WIRE_TYPES.VARINT},int64:{name:"int64",wireType:g.WIRE_TYPES.VARINT},uint64:{name:"uint64", wireType:g.WIRE_TYPES.VARINT},sint64:{name:"sint64",wireType:g.WIRE_TYPES.VARINT},bool:{name:"bool",wireType:g.WIRE_TYPES.VARINT},"double":{name:"double",wireType:g.WIRE_TYPES.BITS64},string:{name:"string",wireType:g.WIRE_TYPES.LDELIM},bytes:{name:"bytes",wireType:g.WIRE_TYPES.LDELIM},fixed32:{name:"fixed32",wireType:g.WIRE_TYPES.BITS32},sfixed32:{name:"sfixed32",wireType:g.WIRE_TYPES.BITS32},fixed64:{name:"fixed64",wireType:g.WIRE_TYPES.BITS64},sfixed64:{name:"sfixed64",wireType:g.WIRE_TYPES.BITS64}, "float":{name:"float",wireType:g.WIRE_TYPES.BITS32},"enum":{name:"enum",wireType:g.WIRE_TYPES.VARINT},message:{name:"message",wireType:g.WIRE_TYPES.LDELIM},group:{name:"group",wireType:g.WIRE_TYPES.STARTGROUP}};g.ID_MIN=1;g.ID_MAX=536870911;g.ByteBuffer=k;g.Long=k.Long||null;g.convertFieldsToCamelCase=!1;g.populateAccessors=!0;g.Util=function(){Object.create||(Object.create=function(c){function g(){}if(1a?a>>>0:a;case c.TYPES.int64:case c.TYPES.sint64:case c.TYPES.sfixed64:if(c.Long)try{return t(a,!1)}catch(d){l(typeof a,d.message)}else l(typeof a,"requires Long.js");case c.TYPES.uint64:case c.TYPES.fixed64:if(c.Long)try{return t(a,!0)}catch(f){l(typeof a,f.message)}else l(typeof a,"requires Long.js");case c.TYPES.bool:return"boolean"!== -typeof a&&l(typeof a,"not a boolean"),a;case c.TYPES["float"]:case c.TYPES["double"]:return"number"!==typeof a&&l(typeof a,"not a number"),a;case c.TYPES.string:return"string"===typeof a||a&&a instanceof String||l(typeof a,"not a string"),""+a;case c.TYPES.bytes:return a&&a instanceof k?a:k.wrap(a);case c.TYPES["enum"]:var m=this.resolvedType.getChildren(q.Value);for(e=0;ea?b.writeVarint64(a):b.writeVarint32(a);break;case c.TYPES.uint32:b.writeVarint32(a);break;case c.TYPES.sint32:b.writeVarint32ZigZag(a);break;case c.TYPES.fixed32:b.writeUint32(a);break;case c.TYPES.sfixed32:b.writeInt32(a);break;case c.TYPES.int64:case c.TYPES.uint64:b.writeVarint64(a); @@ -71,5 +71,5 @@ k.Message)this.ptr.type=b.isGroup?c.TYPES.group:c.TYPES.message;else throw Error b;b=this.ptr.parent.resolve(this.ptr.responseName);if(!(b&&b instanceof c.Reflect.Message))throw Error("Illegal type reference in "+this.ptr.toString(!0)+": "+this.ptr.responseName);this.ptr.resolvedResponseType=b}else throw Error("Illegal service type in "+this.ptr.toString(!0));else if(!(this.ptr instanceof c.Reflect.Message.OneOf||this.ptr instanceof c.Reflect.Extension))throw Error("Illegal object in namespace: "+typeof this.ptr+":"+this.ptr);this.reset()}};r.build=function(b){this.reset();this.resolved|| (this.resolveAll(),this.resolved=!0,this.result=null);null==this.result&&(this.result=this.ns.build());if(b){b=b.split(".");for(var c=this.result,f=0;f=uXDf@bFH!#D^S zg*YSO1h{zsE$53NnAYgI#se3p%#B9#9xCZE90`jbV3o*>h zy?>Qpezm`us>cLAM(kRB)0%ov*_cLT3Etr5Ipx<1D(_`^7#4I7d0Q)UGI6_s%!t@K zoeG7hB-|Rg%Ik7gRNwmw&THJP1PX5z)KDdJf!I}0aflv{z)@|*D!5Hd^?-?MCj9)C zUAcjRlO+u!e^O7R0H&j0JeWN$>9N97Tx19WD(9kL-R3QIr&B)!`?ZrH`koljpS5e< zs02CLo!G5SC<-EF^G^%d!+0-lk%HB{F>TWXKn*z9@1-kGWU;Kiy+^7nUA=ja*wgLO zjFcn|nD_?sJe!z<>MMR<@Z}HD^0?H?L{+e=gPo=~_z&WSL<4ct;7lhK*za z_7>Sf3W82cS}biNp6LBfWWV7yQmx;K>Ng~7Yev>g;s_n2f^M49o6rH6gH7E(=TTtv z#Z!Q(+iLF(Xr5ct#dPK^EK*yxVOjwW$63sdlOUqWK)a$<_(dKOdZ))0*aNXGOml{D zw6KUne+gDIbz>W=92ynXc05?)&H<$8b31NWAg^o{U=kU`$ZuI3%_4}6?xxY#rsNk> znz|OR;*w$VOP|G*NXZAZcejMDi#$E1?PoMf(2fZMLmMP* z2OzVc#mzy5H2fQ+67Lpdc1xd*JQ#`tgg$TRKMJ6Cdvo&T(8ZAL`k*{Xl;@S&f20b! zi!0!zfV~FSi~)pZcgtmjrn~KsT&5Ty1_uquh~vgG9mSvCg*M=HdsfLUswJENexD7x z-GGFZc7X5p#HAy7ezL<_nhBiLWGH`NiV1`uPN?FAKb$~8$Ep*8cYbB!o=II%S8D4+ zl%_CUgJuSPK9Cu3dQ;EjWO9JNfBxU9ycVo-8G<~BIK|cgO*KF;?H)(m()4ZCsH2c) z_!-ZDKh)F&=f0p+6Hc%}Q`J1kKc6bVXs_#r8gdNCTA%G^sPt?IN?yZtl?TU)ojoms zS@`UbW6RRy?7*JcN#VE;S=Y<+ojnBeolgI-5-kSgA=r#5GdJjbH%Qz7f8Vcws%Cgz zZ+hLqPu>ZbN!+}p!~+Vzr?CG5yz~QY35{*L=S##h4=WzV+Di|-rsHQ}@iH4|@$E

is?@(_!7x;bR^fWoT39oi65?24B@bJ)*g-vCB6GIevLr!M zmL#lJyMeq57Jf`V7@9rue_&{1#U6VZ^kUzk8;@bOJ|d#ee?-(^IVE@SoJU0bI&)$r zb_<{o`Frnl(2mqY9kCaM^+ZYYhWwXUMl`Y+0gysvUf*l-B?Efsfghn{!@5RvY)f}h z*a+VSWrF`d?lPr)fZG&v07MFIbK5OKxb+G_x}FfP-(+&f4LQbKf7N0W-o1ernb=AF zO^9a)TkqdQjF-1?YJ#q*e(`H;)hKqR+cMQpt(B+cnWE%Z!vVf!*6-^AcUFCFGQsC2 zqDr5&#>2Oqo5+_WqDspFmG6HBZT)3Y;W@T_sgdVMUIiZYoS9WVM_To6vXZ%Mzyx@; z&27wu6{)HlOHZ6tfA0o05Ui!a)-Xf>0zB(IPSEu7sIJ|ouYgTSZ_2A+9c^qOBu-1* z5(heU?e^1iJ$y+v5J#G7TchjXFn;?+L&V1&i)zJ3+~RqcBi;aFVDd!hS@%4MX!2IE zc#~9n2~y$<*gf*3XqUTz*u@c#4b=Uw7P9aYi|UOWB|Mb`e=dj&Vmu|ti?soRsID%* z0OiNpb0uBf{8CoOsqwm98+BvEs_@C&px97GW}+Ur7D_APmT>ptW5Y^S+Ek~$VUv&J z6aoUPYN_$_oT8Ee#o(3af9-7u2M{5FeVDNca1#4q|A&JgUVgX#!?%ZYNb|l!2bD2b z4RUN3<4dLJf4_pkU%h&@F}(QJaYHj3b?SRN{-q1QP}S2vVDaremGBA3gC<&_<_5IU!hawL|GZP?-&HPIH;M-B8;TC|S$bz9 z`O)Fnsn*I*K*wsF%|&k-MN-uV>B&z;WnY`wA~2v%f2WcY5`HMpH^-3N#5TbN)fB_O zE|uE9g)LitYzX^S%QD$TlBK2${yF8?5jQ~_(YEsb;*Xxd5Sq)G=`IIP3F_kB#n+m= z1W~&5iLz!8TgB|aB}ajQVhHbCUwiTVyHce-?*tXLHZOr`RfqB`9nD$QA3tu+nxCPH z9NGqhe_wwe0EVv8Fps{tiPdu%%m~J7?cw$o8Sr6aC6J8(`X67M9i5JiXU4Q5a1~K{ zBgDyg)|{je=R587Cvr5sEh(Mi6Ez3H)4z$`6Rwfg*7ym$zs01r=d z)}yI>sZ&JR>RAv^#c;lD_^uyZbih8Jhh=c$$yQS0Yj+Uj`R7Oqj?$q-S=t!M5%wS{m)MFcbob%FJILfRAwM%AmD$Kn3eO zk2q~4{wW;Oyk=yuve}%m%oF%lCd__M5-rER4ase(t(;$zcfb107UG1JC>t)H8 zOV9f6<;?Ige5@p2E@=DV&i0ZV4$0xna5yt0y+~uCqlw~Eg~|>1JbJfdC--W9e*^&o zBR4MgaACfs#6lZmS1p1WbFbbFKb%^#mv8lQRhGuR@(;znvdT}v#NzkfXzpw~Zqz-0 zbOK3rI?_iK_R%N6jJfxig|1gS*{?6C)1xw9sVQX7Ll)?>)cDna3fppyxsnn5FY7H4 zwdJ}{*Bi&wmwfiI6_`O(M>wU&e~^Tqg))9NPK5iGdb-8# zWQ)b{-zcJAA?rX8BCc`7Rg1V-Qyu=bNX}F;`Yxap8ad$^^C$zcxmM~P z>Ts_H^_5_VcfvVsh>4eAe*h3JV_2zB0xQ-(nqY?OYEW#d;C9uV?AKRC7Z1_+!jN!J(Kzl~2VHk#nTo zpI_ukvYZwmE+_7ve>2KQ;W!VJk3|#nMQHP-c>m~mBG@93IDMDekNi@5(-YNFCJie? zx52<&&v%5V)fwJ+Z65Fxw+-+QqnPVh6!Rx5ngMWv=1tnknalV|bANN^pT`+RRioTURcP?AbAZU2jJJi0ZG;h!xgDVe9!kkMsINJ0BGENbViFad>m<NVN!6inR z^hgpm1FAxPMI--F&@J>qkq{cHO6F+5YOytACYeJRfAZN6V4P5*N!j~NlLe0ARGmcJ z!>pdo!8|CBNjsXzizUt?ihlAS`ov_gku)W47#TMq8QXp+Zz^^pDeLXL0W0MCtZs7S ziZOGx4exJ;wGKrcE@lOSRlG-obuG88&{Z<{{@i#9(?Nt-r)N?55da1_r}~2=*U8dm zXsS)9e+9@DMevHNzvVnD0lwOtC13Qmp*@qj?uZR$zbdk~XK{aF)4Is33BV#DH(EdTWbnYnnf6}I$p?Sg$o~GVS42GfVFOTMDZC%R)f=S zXM{eAr>CelY&Aqawd*aG;?HKsL}x6_`W3HChYd<9;yG)YLKj*KDe!1@Nvi95T(~1V ze?IVJWWWMDwUC=~Gkw^>bvLgdRcxIWfAace*%~WX!&LE_#sIRB zVHqEoGcHi*H2`NgAts4IMIE>MurbAPgmiH)PHL_hB*086*cNLz7c^c4i~5m#T@}lP z_4E`@q$!mB{RN}_?I(qBEOjZbHo3k#S>?qYWjqge9G$(-*mVz&_i%yRyB}jEf9ldV zJ~4ACpf9s-2$`$(E{0CzOeB%LeRbvYS+bPE_t#(1rxX;ixg>Q<3H=1FQ@G)P!(2_K z+#xDDO*z?*Y%aJ~p5f&-x4HXUBDG*@BuB=4fbm(=?)VK`*WPmGkQ=Gs)9B?jqX0bH ze>{F$M)+;GS*b**gz@y3dlfHd0y@!?pdBE8HJgzj2f%32uE9g_FbGZmWyRwciaN{( zmQ^L@Jq7+=8heq`iY874CoGBAOO4~&`U^ws#u9SIWa{+>uN%x4CL2_?fzemq%-cOR z3m9lCbV4>#7W8*dRiNBrttM0Xo67wsPy8JycNiOru|hkcDPikuI#ZmlgBE&3|6ACic2@yPF4{4$8jP9BVpF$P=Qi%wMvr0y;18*X+(v(^GZyw@3*E%LS#X_ zjn#s-NE1B?S?SJfjz?J~YfSVRnQXB+K;9a@V{MFlifnoQhBCitY~NsZwl_WdeL8t_ z7uPKbIf80Z$A(yb0!Xs39e`IvyV}}+tdz3S9r%+6>@KJi;dox1Gq9%%)>G(zLfGqx zcRMK#(^4ly4m}FDCQ5Z$N&=+6?&8_Nr#-qnwmEB#6?{=_Jt`;tQBygJSNQ|_&8dA3 z^pu;i!Q}*mMhtmUfGymTnC-L`hYpxapI~iCxuXrll|j9Kt z3z>;qQ2;$<&VlJGdJb5lxdG&s=|*tx%@daLvb=Hitd}~OsnaQgw+UUZayA^OS`p+=BUclzU5qkwJG;<*n0_v1lUQf&;z6Bt1B zuvR$&fk7xk4gWx<82d#da_(T&;i45R)EOG-l+2JOp%o6Ld(uap9z$8fgwZjngEZNg zNa$nY$Aid4CVhJ8?Te=;xBPQ&3&dI935=3{l*p-scQX8CJzr%hm~A0{Z-L`m(s6lB zk;je`NngOR+>P*zoWo|_pkg1c2${2c|7rJ-ZHWAue?ZP{Cq3F&R4kjz-=yo{n*6Z$mc1sqx>ao2Yj+6tze!?=M&zWL$r-zwLIdHWk|wc*%^z9<)5#!j%5;?Gi&7oAgSf!XX4qzbX4`J~Ab&tJ$fE9* z=AA4DTyn>fmEPW_@*tGRkDdEbNF?M>T-wOojXn6|pvM~*<|q~8tOX=>!2j)N^7HKo z-=j(~BovZRK*k3cy%0AcPCkHJ3EM1*tkXo$D~3v zCmTwLaoM^X>`QuomZX8#A(wI^T~PfCSc97jcvnxU^*f!{L&apQN)8)oYV@<(+at5L zM`~}cFui%%4w}I#zr4P5hz|~0??;Lw{Ao0|O)l%AfMPtxHpyY&jP zx&dOlQf&u(xln>(ZvQ)X@Lx}5|9E+)M*S(qjeQD|MgH1<$zSyx$T@1)Qnw}NL)klY z$#A7a#Af4W$RE%co9za$tSkMFp<9pc^2{iQ-$9cHY9kZ?XnZhALMI4;?Dki9Xp0c& z0tEQ#6er2kT&1{)M7^+Ci(;C95@ovts6g-XohU)(@AqgC^> zYLcpJjPy=_-9!-McS`bvS>EWLjjpwrK{)3Oj>13jXmV~By*-ctJOHn*g+E3Q8dT89 zBqil&2XKFHHw>8HQT(1p-`jG#l`?BR-*y-=x`M{eO_Ye;5hG>7-j{46cX6a<{D0r= zJnu$_8yS@%@WuVT|JGJzjZ<2Ku_@iX=q%7~$SGNWOK|zcNvLVB1;Mgt8tE*31vBUJ z$5NK~SjtiuWvY_1;J8jo%rkpriu9d$N;vRKq5&cRcL2iqv(z52&euDeSKcG009NGS zq8w7%nH+Y_9rv+aJYLO!EUL0+e&a`mv1x8}bft#gcxtKD37sCn3%ww-vojhUayP}N z;C|PCko@B;rIAANbDy?Ab3)GoDc5I{WwMG=fY-RvX63P$%))izjXaR`aTfDnb7IC8 zwKmRQ){Y`X&km~tPch{tc6NR1S;lv$_xclCEaQ)&a_Lvz!y>hxr2Zps2nU0Jh`5_e zQWa;7$hy<~*M`JVh>VFj^;Cy`veeFJUNo$K-@7QzB|zs+L$h*eO7DA_`+Y6 z!&z_zikupYw)Ou3)#Ct?%kzNM9!08(>n|kFf>|Ima_=C1o%;uIonfDS*ZQfdr96V{ zLu9~uFz*?2+hNzjtS!DA*V+p-brW1qs!4lyC+brDM#84%PrDg^Iq#4zp~B4Euh)xz z$4x{5yQsz*VNLy&xM5yR{i&K$<=B-vc?oST?y={5X8vJ0J*b_VcYDEMOdfbbpD`iF zi%(M)(d&@QPTgKtJdhC`ikjl*ZgJGn^H=9?XV)~(JL z`M$@hvv_)1#2!sw;F&pI0%vxyFBkcLf@o(Edyz*1&K4zK2B6{)T#fHRuw!g3t1Z|$ zu9mnL3ulALKXtxo9nZ-}4kzhg^l>D|nH`6?fjW^#vS=u@Z{;K|v9QHCW9%fgN!8>*_MN!NejTdl kfztd2+(Zm@FhQBTvz3OnJ@_OIQd3V_yYoI;ZcZI ziSQ6W5rIdBeNXz#T^g9Tw>JS8MxuxEf#?HP6$!=7Or0gOVB zTzUX*8$iqXVu++Qdamxk#VK=((Oiehcnn9v+y_`C(jp?5f}(?-Jdga0J_6KP>qBoP zn15XDZ|3PSdynC|R^POs9#l5w5LtrPw|P$aoq|ewSsum&-96sc%A8EBJTfC(?{q2@ zqLOe^$rin-UPbRZv5fOax+ALB$(-7%Q>wV0)hdx5g3v857tXZoGAy zZrYEwZ5bjwEgb;xSXx00_FC~5;AwfVWlnr!w_{R=>|OI;X4eO-9;HUA(lgA7pK;Zz78bckhjbwXu zc{f{xuO#+niz@~vj$VskwzL(Ux+N|JDocW9ftJASVZb46#VWW>O!a7qYbN~smR-34 zfs-f=BY#Fuod2hzU_6*TF6prXQ(R;S0xIF6Fx}=Ab*EE50sFOMA^M&epr5sC-Kgw1 z*`3&}O&n?bG0`sfKVNLcFurTDI>|`MzAV2B~TSos|N; zJb0$QUW0#mdGJN@NKRcIUgefT6!N@hpPwlZP=1LtoJ|u22h;}Vbr&K?@MKi(k+bdex)LO={n5ekOve6IL?(8s?tFs?6QbbL` zeWUfD7WI(;(G)T_U%5 z4e(WDCMwA!b&aBDn;zCpNhzpR7|-K};HLDo%?2JEi9JAlc#v`HIcmFtRR17Up-FH6 zG6h;(8&pWczd15USRmBgZ2!U^E_*`V7E zNLXnH_-;>JI+EunJFKOdz)4Mp@&~4vKnUW5Dqi@*2^4g!Iw5%BS7z;*)D?B5wmw8@ z3ez=cX5hC2nE|Ia^+rx62Y>j}|EfJ73ESzkgYv9O{aY3cLzQS1u1BqfHM1!pjulq&utkd<)bk}WXS*#+5;SE= z!fLe}$ctd%$K-3F*?%Lig*H~~v1dUq_8q$M5@zcQBKrInL=BcxatF_OLB#JeCsty& z01A=6_eclrNWIb#dr??Vlr(S1e~D#8BbyNbDOBe5y(V8Wpobp#5lS|!YedJkbQgt< z@NG~g`2XWBQ`!f(O)&>Rq~JEU-6DiruMni`3GwbtCU@MBV}Hz5EjHoB8+eh4ozx$M zcy_S$@=e5ec?G8?=$h&mzr$9IVrRN7Q~lIhd0L(+N`5aK;6rBpvMz9E)wd=Sd}|`A z^jT{>e9O6sd`2Rwv>Z_R_-D}8pA{9JW7}sMd5+{&;8D++S>;=#RqrM%nac)DfLGhx z##~sDs=BfC#D7`!Vo(FYS{iH(Lj)kevmWCFP0x<%+I{-|*Oc_8ya(3N#uh^2w8Ry0 zpi|ebK0VjNXJi9$q^Y(wx(*KGw{J8=eB809R(!!N-gY_S0U!n@PlTRz&x432ZxxFN zNwsGnCBA^&BTtHUxf_UG9P!vdUH)nz3%{?Z-pEnHQ-4X|g2*7oQ-Zu$8!(9K>hcRv zeyqJ!($&o`Wp$hyuiLdzH%6=qpUe%44P|5|>UC?Ov?6W^cQ3v)tW>2I8b8k|Dj84=UU~l4-iB}h5fa#k8Jhqnu@CltIQZe^cl$qldq{^g?>lr*8FSSj z$96HkRDX*8D;WIMt5+Mtiw_+)G_z5sKDOhZx$p~BJ^cd~-`-ORpMX4QvIIT(=^Npn zq!2&s{Y_{bJqOmRHV)}82tLP0I+YB zeSdlMl})T(&|o4kUTcrFx5$8x87uK?1c?9m;_T>jY&lp4M*_x$I33sRCVTA*$8qPvOP;7lm_pcC#KtFbZNsbJF8l3#`L0N+;)#H%^QzQgR9dt2rk3K>I@X+E5(|J#BmGr!DM zy!ecUb*nbyMGb^ zD)};$s6oL*?jb#)qYbuoN72$~p9P%|KU8M^@&J5=Xu0wBk^z1A93VpNjss&ZQ(id4!fDm4Zq-Xv2 za%T7#K30-17qtCwXM0HwhvaZ(IGh>ArwVl%aCP)9#ZKONfQm z#+;f5Gv?m78-6&k)-K=J<*F>Td($6^ePxWFfMvz+z1G~>c3i9L{pbXe>U5-!GVG&E zfEg?AF~eM^cCuexP^U*_zEV@jjE5}HXQ}ZU0Trs{oNgr}_+QprB5KQZu5LAssV~{| zQ!6n2sE%+-k0A*^4Q2eauYax-El4f8@d6~)*%V8r$90F3c*cZ&uRMZ|(jz_!a2H(R zUx$CRM$tqx3b!{uV8B-?uFq2`bZx0w1QS8pMQna1BC1;`VCS^hooq25{2N8|Yh)b= zLc}$WxM~p>YpTP)=DjnOj4ljG$i)`2Li}w{bU3`p~|7a=SJ2n{(4lb~`OgHloImDaG-m|BJ zg!Z{GC;jJeZzIGHf4tc4xY4dDH2$&(x$4zbT0cF>qKL$KdUB1^9n|682_&5QUO4?h+(B72!E_t|73z0ZmB`BDT7N@bH0~^L$Y#wXU^!aCb_7Y!C&20haJe3 z;I{wz@ElR$BlUEBOcwaH!TNnn61er%AuZ^`HO;F=KXrEzt^Y>h-@A?-I3xIgi)MaA zM)-B%#!Y2bNRNsNx1k<%TrdPf4zb!r>%NIqWuoKqG9b5OqJQK>Wl!ExZ9E;Or{oRQ z{TjapLvw_W!a@7?#Ux8)6G0LZ$4|01iSrY(>cedy36YbEo4Ls^ANCjRYEOCbl78tP z9BYYFb-!A|=;{HwmKL?$*VZU#9HQzIvd14|777l<49aXGj)Ibh z`VWkO=R=i-jn(E>E*?cxsDD4s< zvfi~gKz}5Ebw-G=9tvB}=Q)~JAM0pdM;cZG{Rw=`H52HLq}SNL{r;=JP519swa6C5 zb-s9I0^=9`zDPMm)F#Z01z^?`k5XM-Rc;`m7AY#frM=@E@dcL{VWJ~R*bJzO^cA)I zN3pih2L(WAs49V@0jtHVWej_fKiWa1=unG#gLNght~rR!DG3cL)#hFTX&k>b?p+1nE`?WO_IIHZ9d!-=(G`9HZbhlrZhc5w$damtHEivGeRH5(^J$5wj3az z+I1F7@n!Q*mVb>3w2+dgdzfHt=o%%JF@S7jSjGqDj0+Tc4Zs;r zh)K_&qK?~L*qGutLb|vUCpFg$5@043Y>PFV3u>=|Mg2&Qu9D@ydU^^c(iF=6{(?dN z_LD+5maddn8(-g@tn%`XvYdxIj?Ug^?7Hp4JzU^+?#Eb(y7Y}t%uEXC%YU>TK(=bV zi=h)a6TQgZzPj@HELlq7`~#gl+=YY1?qXVTvYG?hqB7rktclHvd~A z&+u}a+kE{Eky?~}6~8Gk98kst@aXwk00Hh2t#rvI|!VGDT`rU6UK0&|@L ze=m%^$Z16rr(zNo#OtNTac%vDA!K6#sbW&~VuRNWrU{b`O54EbEAM8_o|**=v=KTF z8z~F=yQeBpO0h-3B?ehozRr9aW?bbtA3m-qWi zQCr2O9dE`<2>9bTk%5sgt23xTnYbDyN#Wk8aiuh(Lfv^Krq>S}QzRj>*xlM{K^vrr zjwGyfXEwv5tdcb*=!{IZ*c>2l4BxRfMm|NhJbOn8-!!)GFe%%+j{QCvzq^a;mV_KZ zHR)nQEMEYUELsQP<=2>O?r6SLY1u>4NnX`Y#B3J@IZQ`C(G% zB*>vh;l>1~P6|nY^w(WH1Nfvvm&Z0|&9QURDTKVM|2@G;VKHC zr_4DpeMQd!Ycw~2+%Vk;?!9@EQeKwTuAcQuCouII$)Z9R3AfS9yDxOIQ@_zm-RR4I zs`PN~iK_;l-5M>>vhu7fT6@r{l`9qJ$f#xmJJzfiKOE=7bXL@p=}KIf%Gy5*TI0N? zFx^Z}vIcHH0Naa>GJiy0nIhB(deoi%c-AOj+cbEt!~gwwkfl@`gYg6g5IwAAhCpBt z%22~UkSWG~(TJQoSarB)1dDKnMmh~MWJhR(L+PIMQK!dH)-YjoOzI#_)+PY@nE3G^ za*;`&UU~cC>B%ks!rKCI)^`Gk9{yjB|K97`3Zadq2G;3taio+zy7yghfQ{EdFb~=ysv8n$5sy z(>nGJVJ`dcSbszt)||n(fkeLj;qTum*M(X08*H`wM0=A3KhnHpTib3|N}hgjEtxSx zregrxjuWzCCXVU9b(Ax!DzqjLS-r7_gxK+No?IKse|fDfeP})%w|8D_G^Ai9%U$kN zE96lHoizwW6v5^XErID|kkv&pOtN{Qj@&_9U~98#Gk>#fJJ`w}&~np_=10<-xdY z+zs{>J%2?~!;6p$xsfiY{spYT%>}%rr_}nLPUoRwGL{90jWjjSkM8o!CKY@t zQ-3!R#Q2?(tj8>Gbk9cDTFfAvaRx`>pLjGmw~Njm$N(OISJ%Ryq6ZBs=wzIbacwVrP~j2K-(W9KGH#O{cZvd7+(Y$A7Yq-Oko-|al_Mu!_2 zl_K!v{k{LbR%wk>T7$8f+`Z^5&~C^nS$|7#`Nhd_V6O$ivS=FV1G z?20??W4m~~ngN-YMaTTcj|?Nz-00{^4ZZQyQmYd>J%Sf{PG)CkG&%<#*6zkJ0=E0`Ij4f(qoWHCc zMTm|aRt277%1!L-`qs0I?@;f>C$?C|A4R3mFTM9fDnB>h!ttsORe@PB!!4)WS zYAo8;{|8i$14u5<16F$!sVc6&kUR^ffzZgjgZOpkAH;QHefC}Jr>d6n2(pil0qenZ zXUuJfT?@0e_*z_JFVNIYa5XN+&E1`-3iTTan~Fc@X8h&6L%M_tGjqRM&3_-(5e4j` z9BG6#^_Sv?c{O!sXik)4SK_22w6(a$p7WXchh_ALc4pq{1&1+t;0b-kgd8tEN0~>j zL#ks|x9-BC*LIePuAU;VWu%d>@&q4zGa51+>Wpg~J}utLMVi##?)Xz~RW{G|9af$B z)6+cmQ2HFt%<&R9vx|K(&wu7bJM-8>JQ8p^FZeP56^Gy|d&Qvyth80c3!$aJKr% zP@ZhbpkxqR^VsdRn5TiY03lyMtHd0Nx4(UulXtQmFt-A%CHnzyIDh5;E4S!e{&zT# z(PCY=NQdtyjRK5sD#72c1Y|Ln^vzKO%m!@_u{l+C!`PxMR`mmrp8HcCMPikwzbf;f z`emeQt3QihQ)8ioK&}#>dH{1-3@O^CS6B3NFj>?ib)p?75Zg=-MaVPlui_?sKTv@L lh51cNgAWHW(18WAa}-lFuReturns:

-

toRaw(includeBuffersopt) → {Object.<string, *>}

+

toRaw(includeBinaryAsBase64opt) → {Object.<string, *>}

@@ -4595,7 +4595,7 @@
Parameters:
- includeBuffers + includeBinaryAsBase64 @@ -4621,7 +4621,7 @@
Parameters:
-

Whether to include native buffer data or not, defaults to false

+

Whether to include binary data as base64 strings or not, defaults to false

@@ -4816,7 +4816,7 @@

Index

Classes

  • diff --git a/docs/ProtoBuf.Builder.Service.html b/docs/ProtoBuf.Builder.Service.html index 1ac343fb3..cc5016e27 100644 --- a/docs/ProtoBuf.Builder.Service.html +++ b/docs/ProtoBuf.Builder.Service.html @@ -619,7 +619,7 @@

    Index

    Classes

    • diff --git a/docs/ProtoBuf.Builder.html b/docs/ProtoBuf.Builder.html index 3635aefec..688d01ff8 100644 --- a/docs/ProtoBuf.Builder.html +++ b/docs/ProtoBuf.Builder.html @@ -2585,7 +2585,7 @@

      Index

      Classes

      • diff --git a/docs/ProtoBuf.DotProto.Parser.html b/docs/ProtoBuf.DotProto.Parser.html index 0e3dc26ec..ca88ac67c 100644 --- a/docs/ProtoBuf.DotProto.Parser.html +++ b/docs/ProtoBuf.DotProto.Parser.html @@ -480,7 +480,7 @@

        Index

        Classes

        • diff --git a/docs/ProtoBuf.DotProto.Tokenizer.html b/docs/ProtoBuf.DotProto.Tokenizer.html index 62903261e..a152d36e7 100644 --- a/docs/ProtoBuf.DotProto.Tokenizer.html +++ b/docs/ProtoBuf.DotProto.Tokenizer.html @@ -934,7 +934,7 @@

          Index

          Classes

          • diff --git a/docs/ProtoBuf.DotProto.html b/docs/ProtoBuf.DotProto.html index 3e9a2db5c..2338287af 100644 --- a/docs/ProtoBuf.DotProto.html +++ b/docs/ProtoBuf.DotProto.html @@ -127,7 +127,7 @@

            Index

            Classes

            • diff --git a/docs/ProtoBuf.Reflect.Enum.Value.html b/docs/ProtoBuf.Reflect.Enum.Value.html index 6ab7c617a..0afc10009 100644 --- a/docs/ProtoBuf.Reflect.Enum.Value.html +++ b/docs/ProtoBuf.Reflect.Enum.Value.html @@ -956,7 +956,7 @@

              Index

              Classes

              • diff --git a/docs/ProtoBuf.Reflect.Enum.html b/docs/ProtoBuf.Reflect.Enum.html index aca2d372d..12a7b8152 100644 --- a/docs/ProtoBuf.Reflect.Enum.html +++ b/docs/ProtoBuf.Reflect.Enum.html @@ -2028,7 +2028,7 @@

                Index

                Classes

                • diff --git a/docs/ProtoBuf.Reflect.Extension.html b/docs/ProtoBuf.Reflect.Extension.html index d2bdebbbf..3e56a2288 100644 --- a/docs/ProtoBuf.Reflect.Extension.html +++ b/docs/ProtoBuf.Reflect.Extension.html @@ -334,7 +334,7 @@

                  Index

                  Classes

                  • diff --git a/docs/ProtoBuf.Reflect.Message.ExtensionField.html b/docs/ProtoBuf.Reflect.Message.ExtensionField.html index 69a6c28e4..8e01d3011 100644 --- a/docs/ProtoBuf.Reflect.Message.ExtensionField.html +++ b/docs/ProtoBuf.Reflect.Message.ExtensionField.html @@ -2882,7 +2882,7 @@

                    Index

                    Classes

                    • diff --git a/docs/ProtoBuf.Reflect.Message.Field.html b/docs/ProtoBuf.Reflect.Message.Field.html index e61f3cd94..84edfdc02 100644 --- a/docs/ProtoBuf.Reflect.Message.Field.html +++ b/docs/ProtoBuf.Reflect.Message.Field.html @@ -2764,7 +2764,7 @@

                      Index

                      Classes

                      • diff --git a/docs/ProtoBuf.Reflect.Message.OneOf.html b/docs/ProtoBuf.Reflect.Message.OneOf.html index db68fed91..0914b3bc4 100644 --- a/docs/ProtoBuf.Reflect.Message.OneOf.html +++ b/docs/ProtoBuf.Reflect.Message.OneOf.html @@ -952,7 +952,7 @@

                        Index

                        Classes

                        • diff --git a/docs/ProtoBuf.Reflect.Message.html b/docs/ProtoBuf.Reflect.Message.html index f94a43b24..83c9bb7ab 100644 --- a/docs/ProtoBuf.Reflect.Message.html +++ b/docs/ProtoBuf.Reflect.Message.html @@ -2948,7 +2948,7 @@

                          Index

                          Classes

                          • diff --git a/docs/ProtoBuf.Reflect.Namespace.html b/docs/ProtoBuf.Reflect.Namespace.html index ebeb47b7f..0408adb45 100644 --- a/docs/ProtoBuf.Reflect.Namespace.html +++ b/docs/ProtoBuf.Reflect.Namespace.html @@ -1918,7 +1918,7 @@

                            Index

                            Classes

                            • diff --git a/docs/ProtoBuf.Reflect.Service.Method.html b/docs/ProtoBuf.Reflect.Service.Method.html index 775d9097a..02286ca60 100644 --- a/docs/ProtoBuf.Reflect.Service.Method.html +++ b/docs/ProtoBuf.Reflect.Service.Method.html @@ -1081,7 +1081,7 @@

                              Index

                              Classes

                              • diff --git a/docs/ProtoBuf.Reflect.Service.RPCMethod.html b/docs/ProtoBuf.Reflect.Service.RPCMethod.html index 46ed1e9ca..df3594939 100644 --- a/docs/ProtoBuf.Reflect.Service.RPCMethod.html +++ b/docs/ProtoBuf.Reflect.Service.RPCMethod.html @@ -1417,7 +1417,7 @@

                                Index

                                Classes

                                • diff --git a/docs/ProtoBuf.Reflect.Service.html b/docs/ProtoBuf.Reflect.Service.html index d9ca095d7..3aba6736e 100644 --- a/docs/ProtoBuf.Reflect.Service.html +++ b/docs/ProtoBuf.Reflect.Service.html @@ -2126,7 +2126,7 @@

                                  Index

                                  Classes

                                  • diff --git a/docs/ProtoBuf.Reflect.T.html b/docs/ProtoBuf.Reflect.T.html index c92361779..3a86c3f7a 100644 --- a/docs/ProtoBuf.Reflect.T.html +++ b/docs/ProtoBuf.Reflect.T.html @@ -873,7 +873,7 @@

                                    Index

                                    Classes

                                    • diff --git a/docs/ProtoBuf.Reflect.html b/docs/ProtoBuf.Reflect.html index 36d483cae..77895ec73 100644 --- a/docs/ProtoBuf.Reflect.html +++ b/docs/ProtoBuf.Reflect.html @@ -139,7 +139,7 @@

                                      Index

                                      Classes

                                      • diff --git a/docs/ProtoBuf.Util.html b/docs/ProtoBuf.Util.html index 1b789d2c2..7eaf1db59 100644 --- a/docs/ProtoBuf.Util.html +++ b/docs/ProtoBuf.Util.html @@ -636,7 +636,7 @@

                                        Index

                                        Classes

                                        • diff --git a/docs/ProtoBuf.html b/docs/ProtoBuf.html index 45a697a68..6ffb15072 100644 --- a/docs/ProtoBuf.html +++ b/docs/ProtoBuf.html @@ -2852,7 +2852,7 @@

                                          Index

                                          Classes

                                          • diff --git a/docs/ProtoBuf.js.html b/docs/ProtoBuf.js.html index 02c3a397d..e750edbbf 100644 --- a/docs/ProtoBuf.js.html +++ b/docs/ProtoBuf.js.html @@ -65,7 +65,7 @@

                                            Source: ProtoBuf.js

                                            * @const * @expose */ - ProtoBuf.VERSION = "3.7.0"; + ProtoBuf.VERSION = "3.8.0"; /** * Wire types. @@ -2166,33 +2166,33 @@

                                            Source: ProtoBuf.js

                                            /** * Clones a message object to a raw object. * @param {*} obj Object to clone - * @param {boolean} includeBuffers Whether to include native buffer data or not + * @param {boolean} includeBinaryAsBase64 Whether to include binary data as base64 strings or not * @returns {*} Cloned object * @inner */ - function cloneRaw(obj, includeBuffers) { + function cloneRaw(obj, includeBinaryAsBase64) { var clone = {}; for (var i in obj) if (obj.hasOwnProperty(i)) { if (obj[i] === null || typeof obj[i] !== 'object') clone[i] = obj[i]; else if (obj[i] instanceof ByteBuffer) { - if (includeBuffers) - clone[i] = obj.toBuffer(); + if (includeBinaryAsBase64) + clone[i] = obj[i].toBase64(); } else // is a non-null object - clone[i] = cloneRaw(obj[i], includeBuffers); + clone[i] = cloneRaw(obj[i], includeBinaryAsBase64); } return clone; } /** * Returns the message's raw payload. - * @param {boolean=} includeBuffers Whether to include native buffer data or not, defaults to `false` + * @param {boolean=} includeBinaryAsBase64 Whether to include binary data as base64 strings or not, defaults to `false` * @returns {Object.<string,*>} Raw payload * @expose */ - MessagePrototype.toRaw = function(includeBuffers) { - return cloneRaw(this, !!includeBuffers); + MessagePrototype.toRaw = function(includeBinaryAsBase64) { + return cloneRaw(this, !!includeBinaryAsBase64); }; /** @@ -2750,9 +2750,9 @@

                                            Source: ProtoBuf.js

                                            // Length-delimited bytes case ProtoBuf.TYPES["bytes"]: - return value && value instanceof ByteBuffer - ? value - : ByteBuffer.wrap(value); + if (ByteBuffer.isByteBuffer(value)) + return value; + return ByteBuffer.wrap(value, "base64"); // Constant enum value case ProtoBuf.TYPES["enum"]: { @@ -4353,7 +4353,7 @@

                                            Source: ProtoBuf.js

                                            return ProtoBuf; } - /* CommonJS */ if (typeof require === 'function' && typeof module === 'object' && module && module.id && typeof exports === 'object' && exports) + /* CommonJS */ if (typeof require === 'function' && typeof module === 'object' && module && typeof exports === 'object' && exports) module['exports'] = init(require("bytebuffer")); /* AMD */ else if (typeof define === 'function' && define["amd"]) define(["ByteBuffer"], init); @@ -4377,7 +4377,7 @@

                                            Index

                                            Classes

                                            • diff --git a/docs/index.html b/docs/index.html index e8ae81183..0b3841e17 100644 --- a/docs/index.html +++ b/docs/index.html @@ -54,7 +54,7 @@

                                              Index

                                              Classes

                                              • diff --git a/package.json b/package.json index ebdaca33a..1a475819f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "protobufjs", - "version": "3.7.0", + "version": "3.8.0", "description": "Protocol Buffers for JavaScript. Finally.", "author": "Daniel Wirtz ", "contributors": [ diff --git a/src/ProtoBuf.js b/src/ProtoBuf.js index 2ccd5b1bb..d789e1681 100644 --- a/src/ProtoBuf.js +++ b/src/ProtoBuf.js @@ -401,7 +401,7 @@ return ProtoBuf; } - /* CommonJS */ if (typeof require === 'function' && typeof module === 'object' && module && module.id && typeof exports === 'object' && exports) + /* CommonJS */ if (typeof require === 'function' && typeof module === 'object' && module && typeof exports === 'object' && exports) module['exports'] = init(require("bytebuffer")); /* AMD */ else if (typeof define === 'function' && define["amd"]) define(["ByteBuffer"], init); diff --git a/src/ProtoBuf/Builder/Message.js b/src/ProtoBuf/Builder/Message.js index 9fb21c4d4..6d11fd7d4 100644 --- a/src/ProtoBuf/Builder/Message.js +++ b/src/ProtoBuf/Builder/Message.js @@ -455,33 +455,33 @@ MessagePrototype.toHex = MessagePrototype.encodeHex; /** * Clones a message object to a raw object. * @param {*} obj Object to clone - * @param {boolean} includeBuffers Whether to include native buffer data or not + * @param {boolean} includeBinaryAsBase64 Whether to include binary data as base64 strings or not * @returns {*} Cloned object * @inner */ -function cloneRaw(obj, includeBuffers) { +function cloneRaw(obj, includeBinaryAsBase64) { var clone = {}; for (var i in obj) if (obj.hasOwnProperty(i)) { if (obj[i] === null || typeof obj[i] !== 'object') clone[i] = obj[i]; else if (obj[i] instanceof ByteBuffer) { - if (includeBuffers) - clone[i] = obj.toBuffer(); + if (includeBinaryAsBase64) + clone[i] = obj[i].toBase64(); } else // is a non-null object - clone[i] = cloneRaw(obj[i], includeBuffers); + clone[i] = cloneRaw(obj[i], includeBinaryAsBase64); } return clone; } /** * Returns the message's raw payload. - * @param {boolean=} includeBuffers Whether to include native buffer data or not, defaults to `false` + * @param {boolean=} includeBinaryAsBase64 Whether to include binary data as base64 strings or not, defaults to `false` * @returns {Object.} Raw payload * @expose */ -MessagePrototype.toRaw = function(includeBuffers) { - return cloneRaw(this, !!includeBuffers); +MessagePrototype.toRaw = function(includeBinaryAsBase64) { + return cloneRaw(this, !!includeBinaryAsBase64); }; /** diff --git a/src/ProtoBuf/Reflect/Message/Field.js b/src/ProtoBuf/Reflect/Message/Field.js index 35ad0b545..81e5202c4 100644 --- a/src/ProtoBuf/Reflect/Message/Field.js +++ b/src/ProtoBuf/Reflect/Message/Field.js @@ -233,9 +233,9 @@ FieldPrototype.verifyValue = function(value, skipRepeated) { // Length-delimited bytes case ProtoBuf.TYPES["bytes"]: - return value && value instanceof ByteBuffer - ? value - : ByteBuffer.wrap(value); + if (ByteBuffer.isByteBuffer(value)) + return value; + return ByteBuffer.wrap(value, "base64"); // Constant enum value case ProtoBuf.TYPES["enum"]: { diff --git a/tests/suite.js b/tests/suite.js index 2dcced24f..7ba738bfa 100644 --- a/tests/suite.js +++ b/tests/suite.js @@ -1469,14 +1469,12 @@ "toRaw": function(test) { try { - var builder = ProtoBuf.loadProto("message MyMessage { required int32 a = 1; required int32 b = 2; }"), + var builder = ProtoBuf.loadProto("message MyMessage { required int32 a = 1; required int32 b = 2; required bytes c = 3; }"), MyMessage = builder.build("MyMessage"); - var raw = { a: 1, b: 2 }, + var raw = { a: 1, b: 2, c: "YWJj" }, myMessage = new MyMessage(raw); - test.deepEqual(myMessage, raw); - test.strictEqual(myMessage.encode, MyMessage.prototype.encode); - test.deepEqual(myMessage.toRaw(), raw); - test.strictEqual(myMessage.toRaw().encode, undefined); + test.deepEqual(myMessage.c.toBase64(), raw.c); + test.deepEqual(myMessage.toRaw(true), raw); } catch (e) { fail(e); }