From 42631c9d09aa1f0ca06a12ae81a0ae776104efd6 Mon Sep 17 00:00:00 2001 From: Ishmeet Grewal Date: Thu, 11 Mar 2021 11:46:47 -0800 Subject: [PATCH 1/5] Adding Envoy Propagator --- package-lock.json | 95 +++++++++++++++++++- package.json | 2 + src/imp/propagator_envoy.js | 174 ++++++++++++++++++++++++++++++++++++ src/imp/tracer_imp.js | 3 +- src/lib.js | 3 + 5 files changed, 272 insertions(+), 5 deletions(-) create mode 100644 src/imp/propagator_envoy.js diff --git a/package-lock.json b/package-lock.json index 076bda75..3f4bbfad 100644 --- a/package-lock.json +++ b/package-lock.json @@ -102,6 +102,60 @@ } } }, + "@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78=" + }, + "@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A=" + }, + "@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=", + "requires": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=" + }, + "@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=" + }, + "@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=" + }, + "@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=" + }, + "@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=" + }, "@sindresorhus/is": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", @@ -178,6 +232,16 @@ "defer-to-connect": "^1.0.1" } }, + "@types/long": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz", + "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==" + }, + "@types/node": { + "version": "13.13.46", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.46.tgz", + "integrity": "sha512-dqpbzK/KDsOlEt+oyB3rv+u1IxlLFziZu/Z0adfRKoelkr+sTd6QcgiQC+HWq/vkYkHwG5ot2LxgV05aAjnhcg==" + }, "@webassemblyjs/ast": { "version": "1.7.11", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.7.11.tgz", @@ -4296,7 +4360,7 @@ "dependencies": { "combined-stream": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "resolved": "http://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", "dev": true, "requires": { @@ -4944,7 +5008,7 @@ }, "get-stream": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", "dev": true }, @@ -6182,6 +6246,11 @@ "chalk": "^1.0.0" } }, + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, "loose-envify": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", @@ -7651,6 +7720,26 @@ } } }, + "protobufjs": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.10.2.tgz", + "integrity": "sha512-27yj+04uF6ya9l+qfpH187aqEzfCF4+Uit0I9ZBQVqK09hk/SQzKa2MUqUpXaVa7LOFRg1TSSr3lVxGOk6c0SQ==", + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.1", + "@types/node": "^13.7.0", + "long": "^4.0.0" + } + }, "proxy-addr": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.3.tgz", @@ -10447,7 +10536,7 @@ }, "wrap-ansi": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dev": true, "requires": { diff --git a/package.json b/package.json index 5fbe2979..0d4fd39c 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,9 @@ "eventemitter3": "1.1.1", "google-protobuf": "3.6.1", "hex2dec": "1.0.1", + "long": "^4.0.0", "opentracing": "^0.14.4", + "protobufjs": "^6.10.2", "source-map-support": "0.3.3", "thrift": "0.13.0" }, diff --git a/src/imp/propagator_envoy.js b/src/imp/propagator_envoy.js new file mode 100644 index 00000000..fb3adbb7 --- /dev/null +++ b/src/imp/propagator_envoy.js @@ -0,0 +1,174 @@ +import pb from 'protobufjs'; +import long from 'long'; +import _each from '../_each'; +import SpanContextImp from './span_context_imp'; +import LightStepPropagator from './propagator_ls'; + +// const jsonDescriptor = require('./util/BinaryCarrier.json'); + +const CARRIER_ENVOY_HEADER_KEY = 'x-ot-span-context'; + +const BINARY_PROTO = { + nested : { + lightstep : { + options : { go_package : 'lightsteppb' }, + nested : { + BinaryCarrier : { + fields : { + deprecated_text_ctx : { + rule : 'repeated', + type : 'bytes', + id : 1, + }, + basic_ctx : { type : 'BasicTracerCarrier', id : 2 }, + }, + }, + BasicTracerCarrier : { + fields : { + trace_id : { type : 'fixed64', id : 1 }, + span_id : { type : 'fixed64', id : 2 }, + sampled : { type : 'bool', id : 3 }, + baggage_items : { keyType : 'string', type : 'string', id : 4 }, + }, + }, + }, + }, + }, +}; + + +export default class EnvoyPropagator extends LightStepPropagator { + constructor(tracer) { + super(tracer); + this._tracer = tracer; + this._envoyHeaderKey = CARRIER_ENVOY_HEADER_KEY; + this._carrierPb = pb.Root.fromJSON(BINARY_PROTO); + } + + inject(spanContext, carrier) { + if (!carrier) { + this._tracer._error('Unexpected null carrier in call to inject'); + return; + } + if (typeof carrier !== 'object') { + this._tracer._error( + `Unexpected '${typeof carrier}' FORMAT_BINARY carrier in call to inject`, + ); + return; + } + + let basicContext = { + span_id : long.fromString(spanContext._guid, 16), + trace_id : long.fromString(spanContext._traceGUID, 16), + sampled : true, + baggage_items : {}, + }; + spanContext.forEachBaggageItem((key, value) => { + basicContext.baggage_items[key] = value; + }); + + let binaryCarrier = this._carrierPb.lookupType('BinaryCarrier'); + + let payload = { + basic_ctx : basicContext, + }; + + let err = binaryCarrier.verify(payload); + if (err) { + this._tracer._error(`Invalid Span Context: ${err}`); + return null; + } + let msg = binaryCarrier.create(payload); + let buffer = binaryCarrier.encode(msg).finish(); + let bufferString = pb.util.base64.encode(buffer, 0, buffer.length); + carrier[this._envoyHeaderKey] = bufferString; + + return carrier; + } + + extract(carrier) { + // Iterate over the contents of the carrier and set the properties + // accordingly. + let foundFields = 0; + let spanGUID = null; + let traceGUID = null; + let sampled = true; + + if (carrier[this._envoyHeaderKey] === undefined) { + // This is not an error per se, there was simply no SpanContext + // in the carrier. + return null; + } + + // Decode context + const binaryData = Buffer.from(carrier[this._envoyHeaderKey], 'base64'); + let binaryCarrier = this._carrierPb.lookupType('BinaryCarrier'); + let msg = binaryCarrier.decode(binaryData); + let basicContext = msg.basic_ctx.toJSON(); + + if (basicContext === undefined) { + // This is not an error per se, there was simply no SpanContext + // in the carrier. + return null; + } + + // Validate span context + _each(basicContext, (value, key) => { + key = key.toLowerCase(); + if (key === 'baggage_items') { + // We will address baggage after span context is verified + return; + } + + switch (key) { + case 'trace_id': + foundFields++; + traceGUID = long.fromValue(value).toString(16); + break; + case 'span_id': + foundFields++; + spanGUID = long.fromValue(value).toString(16); + break; + case 'sampled': + switch (value) { + case 0: + case '0': + case false: + case 'false': + sampled = false; + break; + default: + sampled = true; + break; + } + break; + default: + this._tracer._error( + `Unrecognized carrier key '${key}'. Ignoring.`, + ); + break; + } + }); + + if (foundFields === 0) { + // This is not an error per se, there was simply no SpanContext + // in the carrier. + return null; + } + if (foundFields < 2) { + // A partial SpanContext suggests some sort of data corruption. + this._tracer._error(`Only found a partial SpanContext: ${carrier}`); + return null; + } + + let spanContext = new SpanContextImp(spanGUID, traceGUID, sampled); + + if (basicContext.baggage_items !== undefined) { + _each(basicContext.baggage_items, (value, key) => { + spanContext.setBaggageItem(key.toLowerCase(), value); + }); + } + + return spanContext; + } +} diff --git a/src/imp/tracer_imp.js b/src/imp/tracer_imp.js index 82722ad5..fb444fdf 100644 --- a/src/imp/tracer_imp.js +++ b/src/imp/tracer_imp.js @@ -12,7 +12,6 @@ import { Platform, ProtoTransport, ThriftTransport } from '../platform_abstracti import AuthImp from './auth_imp'; import RuntimeImp from './runtime_imp'; import ReportImp from './report_imp'; -import UnsupportedPropagator from './propagator'; import LightStepPropagator from './propagator_ls'; const ClockState = require('./util/clock_state'); @@ -81,7 +80,7 @@ export default class Tracer extends opentracing.Tracer { this._propagators = {}; this._propagators[this._opentracing.FORMAT_HTTP_HEADERS] = new LightStepPropagator(this); this._propagators[this._opentracing.FORMAT_TEXT_MAP] = new LightStepPropagator(this); - this._propagators[this._opentracing.FORMAT_BINARY] = new UnsupportedPropagator(this, + this._propagators[this._opentracing.FORMAT_BINARY] = new LightStepPropagator(this, this._opentracing.FORMAT_BINARY); if (opts && opts.propagators) { diff --git a/src/lib.js b/src/lib.js index 1ed4bb3b..9878ba5e 100644 --- a/src/lib.js +++ b/src/lib.js @@ -2,14 +2,17 @@ import Tracer from './imp/tracer_imp'; import LightStepPropagator from './imp/propagator_ls'; import B3Propagator from './imp/propagator_b3'; import DDPropagator from './imp/propagator_dd'; +import EnvoyPropagator from './imp/propagator_envoy'; import SpanContext from './imp/span_context_imp'; import { Platform } from './platform_abstraction_layer'; + const library = { Tracer : Tracer, LightStepPropagator : LightStepPropagator, B3Propagator : B3Propagator, DDPropagator : DDPropagator, + EnvoyPropagator : EnvoyPropagator, SpanContext : SpanContext, }; From a56be652fe6dcafc550bab42db38fee0a3354989 Mon Sep 17 00:00:00 2001 From: Ishmeet Grewal Date: Thu, 11 Mar 2021 11:47:10 -0800 Subject: [PATCH 2/5] Adding tests for Envoy Propagator --- test/suites/common/propagators.js | 49 +++++++-- test/suites/common/tracer.js | 177 ++++++++++++++++-------------- 2 files changed, 130 insertions(+), 96 deletions(-) diff --git a/test/suites/common/propagators.js b/test/suites/common/propagators.js index f35aa447..26c315c8 100644 --- a/test/suites/common/propagators.js +++ b/test/suites/common/propagators.js @@ -1,17 +1,44 @@ -describe("Propagators", function() { - describe("DDPropagator", function() { - it('supports DD trace headers', function() { +describe('Propagators', () => { + describe('DDPropagator', () => { + it('supports DD trace headers', () => { const propagator = new lightstep.DDPropagator(); let headers = { - 'x-datadog-trace-id': '100000000000456', - 'x-datadog-parent-id': '100000000000123', - 'x-datadog-sampling-priority': '1' - } + 'x-datadog-trace-id' : '100000000000456', + 'x-datadog-parent-id' : '100000000000123', + 'x-datadog-sampling-priority' : '1', + }; let context = propagator.extract(headers); let textMap = {}; - propagator.inject(context, textMap) + propagator.inject(context, textMap); expect(headers).to.deep.equal(textMap); - }) - }) -}) + }); + }); + describe('EnvoyPropagator', () => { + it('injects and extracts span context for envoy', () => { + const propagator = new lightstep.EnvoyPropagator(); + + let span = Tracer.startSpan('test'); + let carrier = propagator.inject(span.context(), {}); + + let extracted = propagator.extract(carrier); + expect(extracted._traceGUID).to.equal(span.context()._traceGUID); + expect(extracted._guid).to.equal(span.context()._guid); + expect(extracted.samples).to.equal(span.context().sampled); + }); + it('injects and extracts baggage for envoy', () => { + const propagator = new lightstep.EnvoyPropagator(); + + let span = Tracer.startSpan('test'); + span.context().setBaggageItem('marco', 'polo'); + span.context().setBaggageItem('one', '1'); + span.context().setBaggageItem('truthy', 'true'); + + let carrier = propagator.inject(span.context(), {}); + let extracted = propagator.extract(carrier); + expect(extracted.getBaggageItem('marco')).to.equal('polo'); + expect(extracted.getBaggageItem('one')).to.equal('1'); + expect(extracted.getBaggageItem('truthy')).to.equal('true'); + }); + }); +}); diff --git a/test/suites/common/tracer.js b/test/suites/common/tracer.js index 81b110a2..0d23a314 100644 --- a/test/suites/common/tracer.js +++ b/test/suites/common/tracer.js @@ -1,146 +1,146 @@ -describe("Tracer", function() { - describe("Tracer#startSpan", function() { - it('supports operation name only', function() { - var span = Tracer.startSpan('test'); +describe('Tracer', () => { + describe('Tracer#startSpan', () => { + it('supports operation name only', () => { + let span = Tracer.startSpan('test'); span.finish(); }); - it('supports childOf with a Span object', function() { - var parent = Tracer.startSpan('test1'); - var span = Tracer.startSpan('test2', { childOf : parent }); + it('supports childOf with a Span object', () => { + let parent = Tracer.startSpan('test1'); + let span = Tracer.startSpan('test2', { childOf : parent }); span.finish(); parent.finish(); }); - it('supports childOf with a SpanContext object', function() { - var parent = Tracer.startSpan('test1'); - var span = Tracer.startSpan('test2', { childOf : parent.context() }); + it('supports childOf with a SpanContext object', () => { + let parent = Tracer.startSpan('test1'); + let span = Tracer.startSpan('test2', { childOf : parent.context() }); span.finish(); parent.finish(); }); - it('supports followsFrom with a Span object', function() { - var parent = Tracer.startSpan('test1'); - var span = Tracer.startSpan('test2', { followsFrom : parent }); + it('supports followsFrom with a Span object', () => { + let parent = Tracer.startSpan('test1'); + let span = Tracer.startSpan('test2', { followsFrom : parent }); span.finish(); parent.finish(); }); - it('supports childOf with a SpanContext object', function() { - var parent = Tracer.startSpan('test1'); - var parentContext = parent.context(); + it('supports childOf with a SpanContext object', () => { + let parent = Tracer.startSpan('test1'); + let parentContext = parent.context(); parent.finish(); - var span = Tracer.startSpan('test2', { followsFrom : parentContext }); + let span = Tracer.startSpan('test2', { followsFrom : parentContext }); span.finish(); }); - it('propagates baggage items from parent to children', function() { - var parent = Tracer.startSpan('test1'); + it('propagates baggage items from parent to children', () => { + let parent = Tracer.startSpan('test1'); parent.setBaggageItem('test1', 'value1'); - var span = Tracer.startSpan('test2', { childOf : parent }); + let span = Tracer.startSpan('test2', { childOf : parent }); expect(span.getBaggageItem('test1')).to.equal('value1'); }); - it('propagates sampled flag correctly', function() { - var parent = Tracer.startSpan('test1'); - var parentContext = parent.context(); + it('propagates sampled flag correctly', () => { + let parent = Tracer.startSpan('test1'); + let parentContext = parent.context(); parentContext._sampled = false; - var span = Tracer.startSpan('test2', {childOf : parentContext }); - var childContext = span.context() + let span = Tracer.startSpan('test2', { childOf : parentContext }); + let childContext = span.context(); expect(childContext._sampled).to.equal(false); span.finish(); }); - it('supports startTime', function() { - var now = Date.now() - 5000; - var span = Tracer.startSpan('test2', { startTime : now }); + it('supports startTime', () => { + let now = Date.now() - 5000; + let span = Tracer.startSpan('test2', { startTime : now }); span.finish(); }); - it("supports tags", function() { + it('supports tags', () => { // Verify that we can add tags at startSpan time. - var span = Tracer.startSpan("test", { - tags: { - tag_a: 1, - tag_b: "b", - tag_c: true, - } + let span = Tracer.startSpan('test', { + tags : { + tag_a : 1, + tag_b : 'b', + tag_c : true, + }, }); span.finish(); }); - it('should handle a large number of spans gracefully', function() { + it('should handle a large number of spans gracefully', () => { Tracer.flush(); - for (var i = 0; i < 10000; i++) { - var span = Tracer.startSpan('microspan'); + for (let i = 0; i < 10000; i++) { + let span = Tracer.startSpan('microspan'); span.finish(); } Tracer.flush(); }); }); - describe("Tracer#finish", function() { - it('is a method', function() { - var span = Tracer.startSpan('test'); - expect(span.finish).to.be.a("function"); + describe('Tracer#finish', () => { + it('is a method', () => { + let span = Tracer.startSpan('test'); + expect(span.finish).to.be.a('function'); span.finish(); }); }); - describe("Tracer#inject", function() { - it('is a method', function() { - expect(Tracer.inject).to.be.a("function"); + describe('Tracer#inject', () => { + it('is a method', () => { + expect(Tracer.inject).to.be.a('function'); }); - it("should propagate text map carriers" , function() { - var span = Tracer.startSpan('my_span'); - var spanContext = span.context(); + it('should propagate text map carriers', () => { + let span = Tracer.startSpan('my_span'); + let spanContext = span.context(); spanContext.setBaggageItem('footwear', 'sandals'); spanContext.setBaggageItem('creditcard', 'visa'); - var carrier = {}; + let carrier = {}; Tracer.inject(spanContext, opentracing.FORMAT_TEXT_MAP, carrier); expect(carrier['ot-tracer-traceid']).to.equal(spanContext._traceGUID); expect(carrier['ot-tracer-spanid']).to.equal(spanContext._guid); expect(carrier['ot-baggage-footwear']).to.equal('sandals'); expect(carrier['ot-baggage-creditcard']).to.equal('visa'); - var extractedContext = Tracer.extract(opentracing.FORMAT_TEXT_MAP, carrier); + let extractedContext = Tracer.extract(opentracing.FORMAT_TEXT_MAP, carrier); expect(extractedContext._guid).to.equal(spanContext._guid); expect(extractedContext.getBaggageItem('footwear')).to.equal('sandals'); expect(extractedContext.getBaggageItem('creditcard')).to.equal('visa'); }); - it("should propagate http header carriers", function() { - var span = Tracer.startSpan('my_span'); - var spanContext = span.context(); + it('should propagate http header carriers', () => { + let span = Tracer.startSpan('my_span'); + let spanContext = span.context(); spanContext.setBaggageItem('footwear', 'sandals'); spanContext.setBaggageItem('creditcard', 'visa'); - var carrier = {}; + let carrier = {}; Tracer.inject(spanContext, opentracing.FORMAT_HTTP_HEADERS, carrier); expect(carrier['ot-tracer-traceid']).to.equal(spanContext._traceGUID); expect(carrier['ot-tracer-spanid']).to.equal(spanContext._guid); expect(carrier['ot-baggage-footwear']).to.equal('sandals'); expect(carrier['ot-baggage-creditcard']).to.equal('visa'); - var extractedContext = Tracer.extract(opentracing.FORMAT_HTTP_HEADERS, carrier); + let extractedContext = Tracer.extract(opentracing.FORMAT_HTTP_HEADERS, carrier); expect(extractedContext._guid).to.equal(spanContext._guid); expect(extractedContext.getBaggageItem('footwear')).to.equal('sandals'); expect(extractedContext.getBaggageItem('creditcard')).to.equal('visa'); }); - it("should propagate B3 format", function() { + it('should propagate B3 format', () => { Tracer._propagators[Tracer._opentracing.FORMAT_HTTP_HEADERS] = new lightstep.B3Propagator(Tracer); - var span = Tracer.startSpan('my_span'); - var spanContext = span.context(); + let span = Tracer.startSpan('my_span'); + let spanContext = span.context(); spanContext._sampled = false; spanContext.setBaggageItem('footwear', 'sandals'); spanContext.setBaggageItem('creditcard', 'visa'); - var carrier = {}; + let carrier = {}; Tracer.inject(spanContext, opentracing.FORMAT_HTTP_HEADERS, carrier); - expect(carrier['x-b3-traceid'].length).to.equal(16) + expect(carrier['x-b3-traceid'].length).to.equal(16); expect(carrier['x-b3-traceid']).to.equal(spanContext._traceGUID); expect(carrier['x-b3-spanid']).to.equal(spanContext._guid); expect(carrier['x-b3-sampled']).to.equal('0'); @@ -148,27 +148,27 @@ describe("Tracer", function() { expect(carrier['ot-baggage-footwear']).to.equal('sandals'); expect(carrier['ot-baggage-creditcard']).to.equal('visa'); - var extractedContext = Tracer.extract(opentracing.FORMAT_HTTP_HEADERS, carrier); + let extractedContext = Tracer.extract(opentracing.FORMAT_HTTP_HEADERS, carrier); expect(extractedContext._guid).to.equal(spanContext._guid); expect(extractedContext.traceGUID()).to.equal(spanContext.traceGUID()); expect(extractedContext._sampled).to.equal(spanContext._sampled); expect(extractedContext.getBaggageItem('footwear')).to.equal('sandals'); expect(extractedContext.getBaggageItem('creditcard')).to.equal('visa'); - var span2 = Tracer.startSpan('my_child', { childOf: extractedContext}); + let span2 = Tracer.startSpan('my_child', { childOf : extractedContext }); expect(span2.context()._sampled).to.equal(false); }); - it("should propagate B3 format (64 bit traceid)", function() { + it('should propagate B3 format (64 bit traceid)', () => { Tracer._propagators[Tracer._opentracing.FORMAT_HTTP_HEADERS] = new lightstep.B3Propagator(Tracer); headers = { - 'x-b3-spanid': '5e7c1e9617cdd152', - 'x-b3-traceid': '0a0f6c981e2430cb', - 'x-b3-sampled': '1' + 'x-b3-spanid' : '5e7c1e9617cdd152', + 'x-b3-traceid' : '0a0f6c981e2430cb', + 'x-b3-sampled' : '1', }; - var context = Tracer.extract(opentracing.FORMAT_HTTP_HEADERS, headers); + let context = Tracer.extract(opentracing.FORMAT_HTTP_HEADERS, headers); expect(context.traceGUID()).to.equal('00000000000000000a0f6c981e2430cb'); carrier = {}; @@ -176,16 +176,16 @@ describe("Tracer", function() { expect(headers['x-b3-traceid']).to.equal('0a0f6c981e2430cb'); }); - it("should propagate B3 format (128 bit traceid)", function() { + it('should propagate B3 format (128 bit traceid)', () => { Tracer._propagators[Tracer._opentracing.FORMAT_HTTP_HEADERS] = new lightstep.B3Propagator(Tracer); headers = { - 'x-b3-spanid': '5e7c1e9617cdd152', - 'x-b3-traceid': '10000000000000000a0f6c981e2430cb', - 'x-b3-sampled': '1' + 'x-b3-spanid' : '5e7c1e9617cdd152', + 'x-b3-traceid' : '10000000000000000a0f6c981e2430cb', + 'x-b3-sampled' : '1', }; - var context = Tracer.extract(opentracing.FORMAT_HTTP_HEADERS, headers); + let context = Tracer.extract(opentracing.FORMAT_HTTP_HEADERS, headers); expect(context.traceGUID()).to.equal('10000000000000000a0f6c981e2430cb'); carrier = {}; @@ -193,31 +193,38 @@ describe("Tracer", function() { expect(headers['x-b3-traceid']).to.equal('10000000000000000a0f6c981e2430cb'); }); - it("should propagate binary carriers"); + it('should propagate binary carriers', () => { + Tracer._propagators[Tracer._opentracing.FORMAT_BINARY] = new lightstep.EnvoyPropagator(Tracer); + + let span = Tracer.startSpan('test'); + let carrier = propagator.inject(span.context(), {}); + expect(carrier).to.have.property('x-ot-span-context'); + span.finish(); + }); }); - describe("Tracer#extract", function() { - it('is a method', function() { - expect(Tracer.extract).to.be.a("function"); + describe('Tracer#extract', () => { + it('is a method', () => { + expect(Tracer.extract).to.be.a('function'); }); - it("should extract from an empty text map carrier correctly" , function() { - var carrier = {}; - var extractedContext = Tracer.extract(opentracing.FORMAT_TEXT_MAP, carrier); + it('should extract from an empty text map carrier correctly', () => { + let carrier = {}; + let extractedContext = Tracer.extract(opentracing.FORMAT_TEXT_MAP, carrier); expect(extractedContext).to.be.null; }); }); - describe("Tracer#flush", function() { - it("supports passing no arguments", function() { - var span = Tracer.startSpan('test'); + describe('Tracer#flush', () => { + it('supports passing no arguments', () => { + let span = Tracer.startSpan('test'); span.finish(); Tracer.flush(); }); - it("supports passing a callback argument", function(done) { - var span = Tracer.startSpan('test'); + it('supports passing a callback argument', (done) => { + let span = Tracer.startSpan('test'); span.finish(); - Tracer.flush(function(err) { + Tracer.flush((err) => { done(); }); }); From 5bf98a3ca80869746d26b17ea5874a08c979d791 Mon Sep 17 00:00:00 2001 From: Ishmeet Grewal Date: Thu, 11 Mar 2021 11:47:34 -0800 Subject: [PATCH 3/5] Building dist --- dist/lightstep-tracer.js | 11186 ++++++++++++++++++++++++++++++++- dist/lightstep-tracer.js.map | 2 +- dist/lightstep-tracer.min.js | 4 +- 3 files changed, 11020 insertions(+), 172 deletions(-) diff --git a/dist/lightstep-tracer.js b/dist/lightstep-tracer.js index 8a8fd40e..ce9ac7c9 100644 --- a/dist/lightstep-tracer.js +++ b/dist/lightstep-tracer.js @@ -96,6 +96,1177 @@ return /******/ (function(modules) { // webpackBootstrap /************************************************************************/ /******/ ({ +/***/ "./node_modules/@protobufjs/aspromise/index.js": +/*!*****************************************************!*\ + !*** ./node_modules/@protobufjs/aspromise/index.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +module.exports = asPromise; + +/** + * Callback as used by {@link util.asPromise}. + * @typedef asPromiseCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {...*} params Additional arguments + * @returns {undefined} + */ + +/** + * Returns a promise from a node-style callback function. + * @memberof util + * @param {asPromiseCallback} fn Function to call + * @param {*} ctx Function context + * @param {...*} params Function arguments + * @returns {Promise<*>} Promisified function + */ +function asPromise(fn, ctx/*, varargs */) { + var params = new Array(arguments.length - 1), + offset = 0, + index = 2, + pending = true; + while (index < arguments.length) + params[offset++] = arguments[index++]; + return new Promise(function executor(resolve, reject) { + params[offset] = function callback(err/*, varargs */) { + if (pending) { + pending = false; + if (err) + reject(err); + else { + var params = new Array(arguments.length - 1), + offset = 0; + while (offset < params.length) + params[offset++] = arguments[offset]; + resolve.apply(null, params); + } + } + }; + try { + fn.apply(ctx || null, params); + } catch (err) { + if (pending) { + pending = false; + reject(err); + } + } + }); +} + + +/***/ }), + +/***/ "./node_modules/@protobufjs/base64/index.js": +/*!**************************************************!*\ + !*** ./node_modules/@protobufjs/base64/index.js ***! + \**************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** + * A minimal base64 implementation for number arrays. + * @memberof util + * @namespace + */ +var base64 = exports; + +/** + * Calculates the byte length of a base64 encoded string. + * @param {string} string Base64 encoded string + * @returns {number} Byte length + */ +base64.length = function length(string) { + var p = string.length; + if (!p) + return 0; + var n = 0; + while (--p % 4 > 1 && string.charAt(p) === "=") + ++n; + return Math.ceil(string.length * 3) / 4 - n; +}; + +// Base64 encoding table +var b64 = new Array(64); + +// Base64 decoding table +var s64 = new Array(123); + +// 65..90, 97..122, 48..57, 43, 47 +for (var i = 0; i < 64;) + s64[b64[i] = i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i - 59 | 43] = i++; + +/** + * Encodes a buffer to a base64 encoded string. + * @param {Uint8Array} buffer Source buffer + * @param {number} start Source start + * @param {number} end Source end + * @returns {string} Base64 encoded string + */ +base64.encode = function encode(buffer, start, end) { + var parts = null, + chunk = []; + var i = 0, // output index + j = 0, // goto index + t; // temporary + while (start < end) { + var b = buffer[start++]; + switch (j) { + case 0: + chunk[i++] = b64[b >> 2]; + t = (b & 3) << 4; + j = 1; + break; + case 1: + chunk[i++] = b64[t | b >> 4]; + t = (b & 15) << 2; + j = 2; + break; + case 2: + chunk[i++] = b64[t | b >> 6]; + chunk[i++] = b64[b & 63]; + j = 0; + break; + } + if (i > 8191) { + (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk)); + i = 0; + } + } + if (j) { + chunk[i++] = b64[t]; + chunk[i++] = 61; + if (j === 1) + chunk[i++] = 61; + } + if (parts) { + if (i) + parts.push(String.fromCharCode.apply(String, chunk.slice(0, i))); + return parts.join(""); + } + return String.fromCharCode.apply(String, chunk.slice(0, i)); +}; + +var invalidEncoding = "invalid encoding"; + +/** + * Decodes a base64 encoded string to a buffer. + * @param {string} string Source string + * @param {Uint8Array} buffer Destination buffer + * @param {number} offset Destination offset + * @returns {number} Number of bytes written + * @throws {Error} If encoding is invalid + */ +base64.decode = function decode(string, buffer, offset) { + var start = offset; + var j = 0, // goto index + t; // temporary + for (var i = 0; i < string.length;) { + var c = string.charCodeAt(i++); + if (c === 61 && j > 1) + break; + if ((c = s64[c]) === undefined) + throw Error(invalidEncoding); + switch (j) { + case 0: + t = c; + j = 1; + break; + case 1: + buffer[offset++] = t << 2 | (c & 48) >> 4; + t = c; + j = 2; + break; + case 2: + buffer[offset++] = (t & 15) << 4 | (c & 60) >> 2; + t = c; + j = 3; + break; + case 3: + buffer[offset++] = (t & 3) << 6 | c; + j = 0; + break; + } + } + if (j === 1) + throw Error(invalidEncoding); + return offset - start; +}; + +/** + * Tests if the specified string appears to be base64 encoded. + * @param {string} string String to test + * @returns {boolean} `true` if probably base64 encoded, otherwise false + */ +base64.test = function test(string) { + return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string); +}; + + +/***/ }), + +/***/ "./node_modules/@protobufjs/codegen/index.js": +/*!***************************************************!*\ + !*** ./node_modules/@protobufjs/codegen/index.js ***! + \***************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +module.exports = codegen; + +/** + * Begins generating a function. + * @memberof util + * @param {string[]} functionParams Function parameter names + * @param {string} [functionName] Function name if not anonymous + * @returns {Codegen} Appender that appends code to the function's body + */ +function codegen(functionParams, functionName) { + + /* istanbul ignore if */ + if (typeof functionParams === "string") { + functionName = functionParams; + functionParams = undefined; + } + + var body = []; + + /** + * Appends code to the function's body or finishes generation. + * @typedef Codegen + * @type {function} + * @param {string|Object.} [formatStringOrScope] Format string or, to finish the function, an object of additional scope variables, if any + * @param {...*} [formatParams] Format parameters + * @returns {Codegen|Function} Itself or the generated function if finished + * @throws {Error} If format parameter counts do not match + */ + + function Codegen(formatStringOrScope) { + // note that explicit array handling below makes this ~50% faster + + // finish the function + if (typeof formatStringOrScope !== "string") { + var source = toString(); + if (codegen.verbose) + console.log("codegen: " + source); // eslint-disable-line no-console + source = "return " + source; + if (formatStringOrScope) { + var scopeKeys = Object.keys(formatStringOrScope), + scopeParams = new Array(scopeKeys.length + 1), + scopeValues = new Array(scopeKeys.length), + scopeOffset = 0; + while (scopeOffset < scopeKeys.length) { + scopeParams[scopeOffset] = scopeKeys[scopeOffset]; + scopeValues[scopeOffset] = formatStringOrScope[scopeKeys[scopeOffset++]]; + } + scopeParams[scopeOffset] = source; + return Function.apply(null, scopeParams).apply(null, scopeValues); // eslint-disable-line no-new-func + } + return Function(source)(); // eslint-disable-line no-new-func + } + + // otherwise append to body + var formatParams = new Array(arguments.length - 1), + formatOffset = 0; + while (formatOffset < formatParams.length) + formatParams[formatOffset] = arguments[++formatOffset]; + formatOffset = 0; + formatStringOrScope = formatStringOrScope.replace(/%([%dfijs])/g, function replace($0, $1) { + var value = formatParams[formatOffset++]; + switch ($1) { + case "d": case "f": return String(Number(value)); + case "i": return String(Math.floor(value)); + case "j": return JSON.stringify(value); + case "s": return String(value); + } + return "%"; + }); + if (formatOffset !== formatParams.length) + throw Error("parameter count mismatch"); + body.push(formatStringOrScope); + return Codegen; + } + + function toString(functionNameOverride) { + return "function " + (functionNameOverride || functionName || "") + "(" + (functionParams && functionParams.join(",") || "") + "){\n " + body.join("\n ") + "\n}"; + } + + Codegen.toString = toString; + return Codegen; +} + +/** + * Begins generating a function. + * @memberof util + * @function codegen + * @param {string} [functionName] Function name if not anonymous + * @returns {Codegen} Appender that appends code to the function's body + * @variation 2 + */ + +/** + * When set to `true`, codegen will log generated code to console. Useful for debugging. + * @name util.codegen.verbose + * @type {boolean} + */ +codegen.verbose = false; + + +/***/ }), + +/***/ "./node_modules/@protobufjs/eventemitter/index.js": +/*!********************************************************!*\ + !*** ./node_modules/@protobufjs/eventemitter/index.js ***! + \********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +module.exports = EventEmitter; + +/** + * Constructs a new event emitter instance. + * @classdesc A minimal event emitter. + * @memberof util + * @constructor + */ +function EventEmitter() { + + /** + * Registered listeners. + * @type {Object.} + * @private + */ + this._listeners = {}; +} + +/** + * Registers an event listener. + * @param {string} evt Event name + * @param {function} fn Listener + * @param {*} [ctx] Listener context + * @returns {util.EventEmitter} `this` + */ +EventEmitter.prototype.on = function on(evt, fn, ctx) { + (this._listeners[evt] || (this._listeners[evt] = [])).push({ + fn : fn, + ctx : ctx || this + }); + return this; +}; + +/** + * Removes an event listener or any matching listeners if arguments are omitted. + * @param {string} [evt] Event name. Removes all listeners if omitted. + * @param {function} [fn] Listener to remove. Removes all listeners of `evt` if omitted. + * @returns {util.EventEmitter} `this` + */ +EventEmitter.prototype.off = function off(evt, fn) { + if (evt === undefined) + this._listeners = {}; + else { + if (fn === undefined) + this._listeners[evt] = []; + else { + var listeners = this._listeners[evt]; + for (var i = 0; i < listeners.length;) + if (listeners[i].fn === fn) + listeners.splice(i, 1); + else + ++i; + } + } + return this; +}; + +/** + * Emits an event by calling its listeners with the specified arguments. + * @param {string} evt Event name + * @param {...*} args Arguments + * @returns {util.EventEmitter} `this` + */ +EventEmitter.prototype.emit = function emit(evt) { + var listeners = this._listeners[evt]; + if (listeners) { + var args = [], + i = 1; + for (; i < arguments.length;) + args.push(arguments[i++]); + for (i = 0; i < listeners.length;) + listeners[i].fn.apply(listeners[i++].ctx, args); + } + return this; +}; + + +/***/ }), + +/***/ "./node_modules/@protobufjs/fetch/index.js": +/*!*************************************************!*\ + !*** ./node_modules/@protobufjs/fetch/index.js ***! + \*************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +module.exports = fetch; + +var asPromise = __webpack_require__(/*! @protobufjs/aspromise */ "./node_modules/@protobufjs/aspromise/index.js"), + inquire = __webpack_require__(/*! @protobufjs/inquire */ "./node_modules/@protobufjs/inquire/index.js"); + +var fs = inquire("fs"); + +/** + * Node-style callback as used by {@link util.fetch}. + * @typedef FetchCallback + * @type {function} + * @param {?Error} error Error, if any, otherwise `null` + * @param {string} [contents] File contents, if there hasn't been an error + * @returns {undefined} + */ + +/** + * Options as used by {@link util.fetch}. + * @typedef FetchOptions + * @type {Object} + * @property {boolean} [binary=false] Whether expecting a binary response + * @property {boolean} [xhr=false] If `true`, forces the use of XMLHttpRequest + */ + +/** + * Fetches the contents of a file. + * @memberof util + * @param {string} filename File path or url + * @param {FetchOptions} options Fetch options + * @param {FetchCallback} callback Callback function + * @returns {undefined} + */ +function fetch(filename, options, callback) { + if (typeof options === "function") { + callback = options; + options = {}; + } else if (!options) + options = {}; + + if (!callback) + return asPromise(fetch, this, filename, options); // eslint-disable-line no-invalid-this + + // if a node-like filesystem is present, try it first but fall back to XHR if nothing is found. + if (!options.xhr && fs && fs.readFile) + return fs.readFile(filename, function fetchReadFileCallback(err, contents) { + return err && typeof XMLHttpRequest !== "undefined" + ? fetch.xhr(filename, options, callback) + : err + ? callback(err) + : callback(null, options.binary ? contents : contents.toString("utf8")); + }); + + // use the XHR version otherwise. + return fetch.xhr(filename, options, callback); +} + +/** + * Fetches the contents of a file. + * @name util.fetch + * @function + * @param {string} path File path or url + * @param {FetchCallback} callback Callback function + * @returns {undefined} + * @variation 2 + */ + +/** + * Fetches the contents of a file. + * @name util.fetch + * @function + * @param {string} path File path or url + * @param {FetchOptions} [options] Fetch options + * @returns {Promise} Promise + * @variation 3 + */ + +/**/ +fetch.xhr = function fetch_xhr(filename, options, callback) { + var xhr = new XMLHttpRequest(); + xhr.onreadystatechange /* works everywhere */ = function fetchOnReadyStateChange() { + + if (xhr.readyState !== 4) + return undefined; + + // local cors security errors return status 0 / empty string, too. afaik this cannot be + // reliably distinguished from an actually empty file for security reasons. feel free + // to send a pull request if you are aware of a solution. + if (xhr.status !== 0 && xhr.status !== 200) + return callback(Error("status " + xhr.status)); + + // if binary data is expected, make sure that some sort of array is returned, even if + // ArrayBuffers are not supported. the binary string fallback, however, is unsafe. + if (options.binary) { + var buffer = xhr.response; + if (!buffer) { + buffer = []; + for (var i = 0; i < xhr.responseText.length; ++i) + buffer.push(xhr.responseText.charCodeAt(i) & 255); + } + return callback(null, typeof Uint8Array !== "undefined" ? new Uint8Array(buffer) : buffer); + } + return callback(null, xhr.responseText); + }; + + if (options.binary) { + // ref: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Sending_and_Receiving_Binary_Data#Receiving_binary_data_in_older_browsers + if ("overrideMimeType" in xhr) + xhr.overrideMimeType("text/plain; charset=x-user-defined"); + xhr.responseType = "arraybuffer"; + } + + xhr.open("GET", filename); + xhr.send(); +}; + + +/***/ }), + +/***/ "./node_modules/@protobufjs/float/index.js": +/*!*************************************************!*\ + !*** ./node_modules/@protobufjs/float/index.js ***! + \*************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +module.exports = factory(factory); + +/** + * Reads / writes floats / doubles from / to buffers. + * @name util.float + * @namespace + */ + +/** + * Writes a 32 bit float to a buffer using little endian byte order. + * @name util.float.writeFloatLE + * @function + * @param {number} val Value to write + * @param {Uint8Array} buf Target buffer + * @param {number} pos Target buffer offset + * @returns {undefined} + */ + +/** + * Writes a 32 bit float to a buffer using big endian byte order. + * @name util.float.writeFloatBE + * @function + * @param {number} val Value to write + * @param {Uint8Array} buf Target buffer + * @param {number} pos Target buffer offset + * @returns {undefined} + */ + +/** + * Reads a 32 bit float from a buffer using little endian byte order. + * @name util.float.readFloatLE + * @function + * @param {Uint8Array} buf Source buffer + * @param {number} pos Source buffer offset + * @returns {number} Value read + */ + +/** + * Reads a 32 bit float from a buffer using big endian byte order. + * @name util.float.readFloatBE + * @function + * @param {Uint8Array} buf Source buffer + * @param {number} pos Source buffer offset + * @returns {number} Value read + */ + +/** + * Writes a 64 bit double to a buffer using little endian byte order. + * @name util.float.writeDoubleLE + * @function + * @param {number} val Value to write + * @param {Uint8Array} buf Target buffer + * @param {number} pos Target buffer offset + * @returns {undefined} + */ + +/** + * Writes a 64 bit double to a buffer using big endian byte order. + * @name util.float.writeDoubleBE + * @function + * @param {number} val Value to write + * @param {Uint8Array} buf Target buffer + * @param {number} pos Target buffer offset + * @returns {undefined} + */ + +/** + * Reads a 64 bit double from a buffer using little endian byte order. + * @name util.float.readDoubleLE + * @function + * @param {Uint8Array} buf Source buffer + * @param {number} pos Source buffer offset + * @returns {number} Value read + */ + +/** + * Reads a 64 bit double from a buffer using big endian byte order. + * @name util.float.readDoubleBE + * @function + * @param {Uint8Array} buf Source buffer + * @param {number} pos Source buffer offset + * @returns {number} Value read + */ + +// Factory function for the purpose of node-based testing in modified global environments +function factory(exports) { + + // float: typed array + if (typeof Float32Array !== "undefined") (function() { + + var f32 = new Float32Array([ -0 ]), + f8b = new Uint8Array(f32.buffer), + le = f8b[3] === 128; + + function writeFloat_f32_cpy(val, buf, pos) { + f32[0] = val; + buf[pos ] = f8b[0]; + buf[pos + 1] = f8b[1]; + buf[pos + 2] = f8b[2]; + buf[pos + 3] = f8b[3]; + } + + function writeFloat_f32_rev(val, buf, pos) { + f32[0] = val; + buf[pos ] = f8b[3]; + buf[pos + 1] = f8b[2]; + buf[pos + 2] = f8b[1]; + buf[pos + 3] = f8b[0]; + } + + /* istanbul ignore next */ + exports.writeFloatLE = le ? writeFloat_f32_cpy : writeFloat_f32_rev; + /* istanbul ignore next */ + exports.writeFloatBE = le ? writeFloat_f32_rev : writeFloat_f32_cpy; + + function readFloat_f32_cpy(buf, pos) { + f8b[0] = buf[pos ]; + f8b[1] = buf[pos + 1]; + f8b[2] = buf[pos + 2]; + f8b[3] = buf[pos + 3]; + return f32[0]; + } + + function readFloat_f32_rev(buf, pos) { + f8b[3] = buf[pos ]; + f8b[2] = buf[pos + 1]; + f8b[1] = buf[pos + 2]; + f8b[0] = buf[pos + 3]; + return f32[0]; + } + + /* istanbul ignore next */ + exports.readFloatLE = le ? readFloat_f32_cpy : readFloat_f32_rev; + /* istanbul ignore next */ + exports.readFloatBE = le ? readFloat_f32_rev : readFloat_f32_cpy; + + // float: ieee754 + })(); else (function() { + + function writeFloat_ieee754(writeUint, val, buf, pos) { + var sign = val < 0 ? 1 : 0; + if (sign) + val = -val; + if (val === 0) + writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos); + else if (isNaN(val)) + writeUint(2143289344, buf, pos); + else if (val > 3.4028234663852886e+38) // +-Infinity + writeUint((sign << 31 | 2139095040) >>> 0, buf, pos); + else if (val < 1.1754943508222875e-38) // denormal + writeUint((sign << 31 | Math.round(val / 1.401298464324817e-45)) >>> 0, buf, pos); + else { + var exponent = Math.floor(Math.log(val) / Math.LN2), + mantissa = Math.round(val * Math.pow(2, -exponent) * 8388608) & 8388607; + writeUint((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos); + } + } + + exports.writeFloatLE = writeFloat_ieee754.bind(null, writeUintLE); + exports.writeFloatBE = writeFloat_ieee754.bind(null, writeUintBE); + + function readFloat_ieee754(readUint, buf, pos) { + var uint = readUint(buf, pos), + sign = (uint >> 31) * 2 + 1, + exponent = uint >>> 23 & 255, + mantissa = uint & 8388607; + return exponent === 255 + ? mantissa + ? NaN + : sign * Infinity + : exponent === 0 // denormal + ? sign * 1.401298464324817e-45 * mantissa + : sign * Math.pow(2, exponent - 150) * (mantissa + 8388608); + } + + exports.readFloatLE = readFloat_ieee754.bind(null, readUintLE); + exports.readFloatBE = readFloat_ieee754.bind(null, readUintBE); + + })(); + + // double: typed array + if (typeof Float64Array !== "undefined") (function() { + + var f64 = new Float64Array([-0]), + f8b = new Uint8Array(f64.buffer), + le = f8b[7] === 128; + + function writeDouble_f64_cpy(val, buf, pos) { + f64[0] = val; + buf[pos ] = f8b[0]; + buf[pos + 1] = f8b[1]; + buf[pos + 2] = f8b[2]; + buf[pos + 3] = f8b[3]; + buf[pos + 4] = f8b[4]; + buf[pos + 5] = f8b[5]; + buf[pos + 6] = f8b[6]; + buf[pos + 7] = f8b[7]; + } + + function writeDouble_f64_rev(val, buf, pos) { + f64[0] = val; + buf[pos ] = f8b[7]; + buf[pos + 1] = f8b[6]; + buf[pos + 2] = f8b[5]; + buf[pos + 3] = f8b[4]; + buf[pos + 4] = f8b[3]; + buf[pos + 5] = f8b[2]; + buf[pos + 6] = f8b[1]; + buf[pos + 7] = f8b[0]; + } + + /* istanbul ignore next */ + exports.writeDoubleLE = le ? writeDouble_f64_cpy : writeDouble_f64_rev; + /* istanbul ignore next */ + exports.writeDoubleBE = le ? writeDouble_f64_rev : writeDouble_f64_cpy; + + function readDouble_f64_cpy(buf, pos) { + f8b[0] = buf[pos ]; + f8b[1] = buf[pos + 1]; + f8b[2] = buf[pos + 2]; + f8b[3] = buf[pos + 3]; + f8b[4] = buf[pos + 4]; + f8b[5] = buf[pos + 5]; + f8b[6] = buf[pos + 6]; + f8b[7] = buf[pos + 7]; + return f64[0]; + } + + function readDouble_f64_rev(buf, pos) { + f8b[7] = buf[pos ]; + f8b[6] = buf[pos + 1]; + f8b[5] = buf[pos + 2]; + f8b[4] = buf[pos + 3]; + f8b[3] = buf[pos + 4]; + f8b[2] = buf[pos + 5]; + f8b[1] = buf[pos + 6]; + f8b[0] = buf[pos + 7]; + return f64[0]; + } + + /* istanbul ignore next */ + exports.readDoubleLE = le ? readDouble_f64_cpy : readDouble_f64_rev; + /* istanbul ignore next */ + exports.readDoubleBE = le ? readDouble_f64_rev : readDouble_f64_cpy; + + // double: ieee754 + })(); else (function() { + + function writeDouble_ieee754(writeUint, off0, off1, val, buf, pos) { + var sign = val < 0 ? 1 : 0; + if (sign) + val = -val; + if (val === 0) { + writeUint(0, buf, pos + off0); + writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + off1); + } else if (isNaN(val)) { + writeUint(0, buf, pos + off0); + writeUint(2146959360, buf, pos + off1); + } else if (val > 1.7976931348623157e+308) { // +-Infinity + writeUint(0, buf, pos + off0); + writeUint((sign << 31 | 2146435072) >>> 0, buf, pos + off1); + } else { + var mantissa; + if (val < 2.2250738585072014e-308) { // denormal + mantissa = val / 5e-324; + writeUint(mantissa >>> 0, buf, pos + off0); + writeUint((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + off1); + } else { + var exponent = Math.floor(Math.log(val) / Math.LN2); + if (exponent === 1024) + exponent = 1023; + mantissa = val * Math.pow(2, -exponent); + writeUint(mantissa * 4503599627370496 >>> 0, buf, pos + off0); + writeUint((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + off1); + } + } + } + + exports.writeDoubleLE = writeDouble_ieee754.bind(null, writeUintLE, 0, 4); + exports.writeDoubleBE = writeDouble_ieee754.bind(null, writeUintBE, 4, 0); + + function readDouble_ieee754(readUint, off0, off1, buf, pos) { + var lo = readUint(buf, pos + off0), + hi = readUint(buf, pos + off1); + var sign = (hi >> 31) * 2 + 1, + exponent = hi >>> 20 & 2047, + mantissa = 4294967296 * (hi & 1048575) + lo; + return exponent === 2047 + ? mantissa + ? NaN + : sign * Infinity + : exponent === 0 // denormal + ? sign * 5e-324 * mantissa + : sign * Math.pow(2, exponent - 1075) * (mantissa + 4503599627370496); + } + + exports.readDoubleLE = readDouble_ieee754.bind(null, readUintLE, 0, 4); + exports.readDoubleBE = readDouble_ieee754.bind(null, readUintBE, 4, 0); + + })(); + + return exports; +} + +// uint helpers + +function writeUintLE(val, buf, pos) { + buf[pos ] = val & 255; + buf[pos + 1] = val >>> 8 & 255; + buf[pos + 2] = val >>> 16 & 255; + buf[pos + 3] = val >>> 24; +} + +function writeUintBE(val, buf, pos) { + buf[pos ] = val >>> 24; + buf[pos + 1] = val >>> 16 & 255; + buf[pos + 2] = val >>> 8 & 255; + buf[pos + 3] = val & 255; +} + +function readUintLE(buf, pos) { + return (buf[pos ] + | buf[pos + 1] << 8 + | buf[pos + 2] << 16 + | buf[pos + 3] << 24) >>> 0; +} + +function readUintBE(buf, pos) { + return (buf[pos ] << 24 + | buf[pos + 1] << 16 + | buf[pos + 2] << 8 + | buf[pos + 3]) >>> 0; +} + + +/***/ }), + +/***/ "./node_modules/@protobufjs/inquire/index.js": +/*!***************************************************!*\ + !*** ./node_modules/@protobufjs/inquire/index.js ***! + \***************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +module.exports = inquire; + +/** + * Requires a module only if available. + * @memberof util + * @param {string} moduleName Module to require + * @returns {?Object} Required module if available and not empty, otherwise `null` + */ +function inquire(moduleName) { + try { + var mod = eval("quire".replace(/^/,"re"))(moduleName); // eslint-disable-line no-eval + if (mod && (mod.length || Object.keys(mod).length)) + return mod; + } catch (e) {} // eslint-disable-line no-empty + return null; +} + + +/***/ }), + +/***/ "./node_modules/@protobufjs/path/index.js": +/*!************************************************!*\ + !*** ./node_modules/@protobufjs/path/index.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** + * A minimal path module to resolve Unix, Windows and URL paths alike. + * @memberof util + * @namespace + */ +var path = exports; + +var isAbsolute = +/** + * Tests if the specified path is absolute. + * @param {string} path Path to test + * @returns {boolean} `true` if path is absolute + */ +path.isAbsolute = function isAbsolute(path) { + return /^(?:\/|\w+:)/.test(path); +}; + +var normalize = +/** + * Normalizes the specified path. + * @param {string} path Path to normalize + * @returns {string} Normalized path + */ +path.normalize = function normalize(path) { + path = path.replace(/\\/g, "/") + .replace(/\/{2,}/g, "/"); + var parts = path.split("/"), + absolute = isAbsolute(path), + prefix = ""; + if (absolute) + prefix = parts.shift() + "/"; + for (var i = 0; i < parts.length;) { + if (parts[i] === "..") { + if (i > 0 && parts[i - 1] !== "..") + parts.splice(--i, 2); + else if (absolute) + parts.splice(i, 1); + else + ++i; + } else if (parts[i] === ".") + parts.splice(i, 1); + else + ++i; + } + return prefix + parts.join("/"); +}; + +/** + * Resolves the specified include path against the specified origin path. + * @param {string} originPath Path to the origin file + * @param {string} includePath Include path relative to origin path + * @param {boolean} [alreadyNormalized=false] `true` if both paths are already known to be normalized + * @returns {string} Path to the include file + */ +path.resolve = function resolve(originPath, includePath, alreadyNormalized) { + if (!alreadyNormalized) + includePath = normalize(includePath); + if (isAbsolute(includePath)) + return includePath; + if (!alreadyNormalized) + originPath = normalize(originPath); + return (originPath = originPath.replace(/(?:\/|^)[^/]+$/, "")).length ? normalize(originPath + "/" + includePath) : includePath; +}; + + +/***/ }), + +/***/ "./node_modules/@protobufjs/pool/index.js": +/*!************************************************!*\ + !*** ./node_modules/@protobufjs/pool/index.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +module.exports = pool; + +/** + * An allocator as used by {@link util.pool}. + * @typedef PoolAllocator + * @type {function} + * @param {number} size Buffer size + * @returns {Uint8Array} Buffer + */ + +/** + * A slicer as used by {@link util.pool}. + * @typedef PoolSlicer + * @type {function} + * @param {number} start Start offset + * @param {number} end End offset + * @returns {Uint8Array} Buffer slice + * @this {Uint8Array} + */ + +/** + * A general purpose buffer pool. + * @memberof util + * @function + * @param {PoolAllocator} alloc Allocator + * @param {PoolSlicer} slice Slicer + * @param {number} [size=8192] Slab size + * @returns {PoolAllocator} Pooled allocator + */ +function pool(alloc, slice, size) { + var SIZE = size || 8192; + var MAX = SIZE >>> 1; + var slab = null; + var offset = SIZE; + return function pool_alloc(size) { + if (size < 1 || size > MAX) + return alloc(size); + if (offset + size > SIZE) { + slab = alloc(SIZE); + offset = 0; + } + var buf = slice.call(slab, offset, offset += size); + if (offset & 7) // align to 32 bit + offset = (offset | 7) + 1; + return buf; + }; +} + + +/***/ }), + +/***/ "./node_modules/@protobufjs/utf8/index.js": +/*!************************************************!*\ + !*** ./node_modules/@protobufjs/utf8/index.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** + * A minimal UTF8 implementation for number arrays. + * @memberof util + * @namespace + */ +var utf8 = exports; + +/** + * Calculates the UTF8 byte length of a string. + * @param {string} string String + * @returns {number} Byte length + */ +utf8.length = function utf8_length(string) { + var len = 0, + c = 0; + for (var i = 0; i < string.length; ++i) { + c = string.charCodeAt(i); + if (c < 128) + len += 1; + else if (c < 2048) + len += 2; + else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) { + ++i; + len += 4; + } else + len += 3; + } + return len; +}; + +/** + * Reads UTF8 bytes as a string. + * @param {Uint8Array} buffer Source buffer + * @param {number} start Source start + * @param {number} end Source end + * @returns {string} String read + */ +utf8.read = function utf8_read(buffer, start, end) { + var len = end - start; + if (len < 1) + return ""; + var parts = null, + chunk = [], + i = 0, // char offset + t; // temporary + while (start < end) { + t = buffer[start++]; + if (t < 128) + chunk[i++] = t; + else if (t > 191 && t < 224) + chunk[i++] = (t & 31) << 6 | buffer[start++] & 63; + else if (t > 239 && t < 365) { + t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000; + chunk[i++] = 0xD800 + (t >> 10); + chunk[i++] = 0xDC00 + (t & 1023); + } else + chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63; + if (i > 8191) { + (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk)); + i = 0; + } + } + if (parts) { + if (i) + parts.push(String.fromCharCode.apply(String, chunk.slice(0, i))); + return parts.join(""); + } + return String.fromCharCode.apply(String, chunk.slice(0, i)); +}; + +/** + * Writes a string as UTF8 bytes. + * @param {string} string Source string + * @param {Uint8Array} buffer Destination buffer + * @param {number} offset Destination offset + * @returns {number} Bytes written + */ +utf8.write = function utf8_write(string, buffer, offset) { + var start = offset, + c1, // character 1 + c2; // character 2 + for (var i = 0; i < string.length; ++i) { + c1 = string.charCodeAt(i); + if (c1 < 128) { + buffer[offset++] = c1; + } else if (c1 < 2048) { + buffer[offset++] = c1 >> 6 | 192; + buffer[offset++] = c1 & 63 | 128; + } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) { + c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF); + ++i; + buffer[offset++] = c1 >> 18 | 240; + buffer[offset++] = c1 >> 12 & 63 | 128; + buffer[offset++] = c1 >> 6 & 63 | 128; + buffer[offset++] = c1 & 63 | 128; + } else { + buffer[offset++] = c1 >> 12 | 224; + buffer[offset++] = c1 >> 6 & 63 | 128; + buffer[offset++] = c1 & 63 | 128; + } + } + return offset - start; +}; + + +/***/ }), + /***/ "./node_modules/base64-js/index.js": /*!*****************************************!*\ !*** ./node_modules/base64-js/index.js ***! @@ -12171,6 +13342,1340 @@ module.exports = Array.isArray || function (arr) { }; +/***/ }), + +/***/ "./node_modules/long/src/long.js": +/*!***************************************!*\ + !*** ./node_modules/long/src/long.js ***! + \***************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = Long; + +/** + * wasm optimizations, to do native i64 multiplication and divide + */ +var wasm = null; + +try { + wasm = new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([ + 0, 97, 115, 109, 1, 0, 0, 0, 1, 13, 2, 96, 0, 1, 127, 96, 4, 127, 127, 127, 127, 1, 127, 3, 7, 6, 0, 1, 1, 1, 1, 1, 6, 6, 1, 127, 1, 65, 0, 11, 7, 50, 6, 3, 109, 117, 108, 0, 1, 5, 100, 105, 118, 95, 115, 0, 2, 5, 100, 105, 118, 95, 117, 0, 3, 5, 114, 101, 109, 95, 115, 0, 4, 5, 114, 101, 109, 95, 117, 0, 5, 8, 103, 101, 116, 95, 104, 105, 103, 104, 0, 0, 10, 191, 1, 6, 4, 0, 35, 0, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 126, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 127, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 128, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 129, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 130, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11 + ])), {}).exports; +} catch (e) { + // no wasm support :( +} + +/** + * Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers. + * See the from* functions below for more convenient ways of constructing Longs. + * @exports Long + * @class A Long class for representing a 64 bit two's-complement integer value. + * @param {number} low The low (signed) 32 bits of the long + * @param {number} high The high (signed) 32 bits of the long + * @param {boolean=} unsigned Whether unsigned or not, defaults to signed + * @constructor + */ +function Long(low, high, unsigned) { + + /** + * The low 32 bits as a signed value. + * @type {number} + */ + this.low = low | 0; + + /** + * The high 32 bits as a signed value. + * @type {number} + */ + this.high = high | 0; + + /** + * Whether unsigned or not. + * @type {boolean} + */ + this.unsigned = !!unsigned; +} + +// The internal representation of a long is the two given signed, 32-bit values. +// We use 32-bit pieces because these are the size of integers on which +// Javascript performs bit-operations. For operations like addition and +// multiplication, we split each number into 16 bit pieces, which can easily be +// multiplied within Javascript's floating-point representation without overflow +// or change in sign. +// +// In the algorithms below, we frequently reduce the negative case to the +// positive case by negating the input(s) and then post-processing the result. +// Note that we must ALWAYS check specially whether those values are MIN_VALUE +// (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as +// a positive number, it overflows back into a negative). Not handling this +// case would often result in infinite recursion. +// +// Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the from* +// methods on which they depend. + +/** + * An indicator used to reliably determine if an object is a Long or not. + * @type {boolean} + * @const + * @private + */ +Long.prototype.__isLong__; + +Object.defineProperty(Long.prototype, "__isLong__", { value: true }); + +/** + * @function + * @param {*} obj Object + * @returns {boolean} + * @inner + */ +function isLong(obj) { + return (obj && obj["__isLong__"]) === true; +} + +/** + * Tests if the specified object is a Long. + * @function + * @param {*} obj Object + * @returns {boolean} + */ +Long.isLong = isLong; + +/** + * A cache of the Long representations of small integer values. + * @type {!Object} + * @inner + */ +var INT_CACHE = {}; + +/** + * A cache of the Long representations of small unsigned integer values. + * @type {!Object} + * @inner + */ +var UINT_CACHE = {}; + +/** + * @param {number} value + * @param {boolean=} unsigned + * @returns {!Long} + * @inner + */ +function fromInt(value, unsigned) { + var obj, cachedObj, cache; + if (unsigned) { + value >>>= 0; + if (cache = (0 <= value && value < 256)) { + cachedObj = UINT_CACHE[value]; + if (cachedObj) + return cachedObj; + } + obj = fromBits(value, (value | 0) < 0 ? -1 : 0, true); + if (cache) + UINT_CACHE[value] = obj; + return obj; + } else { + value |= 0; + if (cache = (-128 <= value && value < 128)) { + cachedObj = INT_CACHE[value]; + if (cachedObj) + return cachedObj; + } + obj = fromBits(value, value < 0 ? -1 : 0, false); + if (cache) + INT_CACHE[value] = obj; + return obj; + } +} + +/** + * Returns a Long representing the given 32 bit integer value. + * @function + * @param {number} value The 32 bit integer in question + * @param {boolean=} unsigned Whether unsigned or not, defaults to signed + * @returns {!Long} The corresponding Long value + */ +Long.fromInt = fromInt; + +/** + * @param {number} value + * @param {boolean=} unsigned + * @returns {!Long} + * @inner + */ +function fromNumber(value, unsigned) { + if (isNaN(value)) + return unsigned ? UZERO : ZERO; + if (unsigned) { + if (value < 0) + return UZERO; + if (value >= TWO_PWR_64_DBL) + return MAX_UNSIGNED_VALUE; + } else { + if (value <= -TWO_PWR_63_DBL) + return MIN_VALUE; + if (value + 1 >= TWO_PWR_63_DBL) + return MAX_VALUE; + } + if (value < 0) + return fromNumber(-value, unsigned).neg(); + return fromBits((value % TWO_PWR_32_DBL) | 0, (value / TWO_PWR_32_DBL) | 0, unsigned); +} + +/** + * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned. + * @function + * @param {number} value The number in question + * @param {boolean=} unsigned Whether unsigned or not, defaults to signed + * @returns {!Long} The corresponding Long value + */ +Long.fromNumber = fromNumber; + +/** + * @param {number} lowBits + * @param {number} highBits + * @param {boolean=} unsigned + * @returns {!Long} + * @inner + */ +function fromBits(lowBits, highBits, unsigned) { + return new Long(lowBits, highBits, unsigned); +} + +/** + * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits. Each is + * assumed to use 32 bits. + * @function + * @param {number} lowBits The low 32 bits + * @param {number} highBits The high 32 bits + * @param {boolean=} unsigned Whether unsigned or not, defaults to signed + * @returns {!Long} The corresponding Long value + */ +Long.fromBits = fromBits; + +/** + * @function + * @param {number} base + * @param {number} exponent + * @returns {number} + * @inner + */ +var pow_dbl = Math.pow; // Used 4 times (4*8 to 15+4) + +/** + * @param {string} str + * @param {(boolean|number)=} unsigned + * @param {number=} radix + * @returns {!Long} + * @inner + */ +function fromString(str, unsigned, radix) { + if (str.length === 0) + throw Error('empty string'); + if (str === "NaN" || str === "Infinity" || str === "+Infinity" || str === "-Infinity") + return ZERO; + if (typeof unsigned === 'number') { + // For goog.math.long compatibility + radix = unsigned, + unsigned = false; + } else { + unsigned = !! unsigned; + } + radix = radix || 10; + if (radix < 2 || 36 < radix) + throw RangeError('radix'); + + var p; + if ((p = str.indexOf('-')) > 0) + throw Error('interior hyphen'); + else if (p === 0) { + return fromString(str.substring(1), unsigned, radix).neg(); + } + + // Do several (8) digits each time through the loop, so as to + // minimize the calls to the very expensive emulated div. + var radixToPower = fromNumber(pow_dbl(radix, 8)); + + var result = ZERO; + for (var i = 0; i < str.length; i += 8) { + var size = Math.min(8, str.length - i), + value = parseInt(str.substring(i, i + size), radix); + if (size < 8) { + var power = fromNumber(pow_dbl(radix, size)); + result = result.mul(power).add(fromNumber(value)); + } else { + result = result.mul(radixToPower); + result = result.add(fromNumber(value)); + } + } + result.unsigned = unsigned; + return result; +} + +/** + * Returns a Long representation of the given string, written using the specified radix. + * @function + * @param {string} str The textual representation of the Long + * @param {(boolean|number)=} unsigned Whether unsigned or not, defaults to signed + * @param {number=} radix The radix in which the text is written (2-36), defaults to 10 + * @returns {!Long} The corresponding Long value + */ +Long.fromString = fromString; + +/** + * @function + * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val + * @param {boolean=} unsigned + * @returns {!Long} + * @inner + */ +function fromValue(val, unsigned) { + if (typeof val === 'number') + return fromNumber(val, unsigned); + if (typeof val === 'string') + return fromString(val, unsigned); + // Throws for non-objects, converts non-instanceof Long: + return fromBits(val.low, val.high, typeof unsigned === 'boolean' ? unsigned : val.unsigned); +} + +/** + * Converts the specified value to a Long using the appropriate from* function for its type. + * @function + * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val Value + * @param {boolean=} unsigned Whether unsigned or not, defaults to signed + * @returns {!Long} + */ +Long.fromValue = fromValue; + +// NOTE: the compiler should inline these constant values below and then remove these variables, so there should be +// no runtime penalty for these. + +/** + * @type {number} + * @const + * @inner + */ +var TWO_PWR_16_DBL = 1 << 16; + +/** + * @type {number} + * @const + * @inner + */ +var TWO_PWR_24_DBL = 1 << 24; + +/** + * @type {number} + * @const + * @inner + */ +var TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL; + +/** + * @type {number} + * @const + * @inner + */ +var TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL; + +/** + * @type {number} + * @const + * @inner + */ +var TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2; + +/** + * @type {!Long} + * @const + * @inner + */ +var TWO_PWR_24 = fromInt(TWO_PWR_24_DBL); + +/** + * @type {!Long} + * @inner + */ +var ZERO = fromInt(0); + +/** + * Signed zero. + * @type {!Long} + */ +Long.ZERO = ZERO; + +/** + * @type {!Long} + * @inner + */ +var UZERO = fromInt(0, true); + +/** + * Unsigned zero. + * @type {!Long} + */ +Long.UZERO = UZERO; + +/** + * @type {!Long} + * @inner + */ +var ONE = fromInt(1); + +/** + * Signed one. + * @type {!Long} + */ +Long.ONE = ONE; + +/** + * @type {!Long} + * @inner + */ +var UONE = fromInt(1, true); + +/** + * Unsigned one. + * @type {!Long} + */ +Long.UONE = UONE; + +/** + * @type {!Long} + * @inner + */ +var NEG_ONE = fromInt(-1); + +/** + * Signed negative one. + * @type {!Long} + */ +Long.NEG_ONE = NEG_ONE; + +/** + * @type {!Long} + * @inner + */ +var MAX_VALUE = fromBits(0xFFFFFFFF|0, 0x7FFFFFFF|0, false); + +/** + * Maximum signed value. + * @type {!Long} + */ +Long.MAX_VALUE = MAX_VALUE; + +/** + * @type {!Long} + * @inner + */ +var MAX_UNSIGNED_VALUE = fromBits(0xFFFFFFFF|0, 0xFFFFFFFF|0, true); + +/** + * Maximum unsigned value. + * @type {!Long} + */ +Long.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE; + +/** + * @type {!Long} + * @inner + */ +var MIN_VALUE = fromBits(0, 0x80000000|0, false); + +/** + * Minimum signed value. + * @type {!Long} + */ +Long.MIN_VALUE = MIN_VALUE; + +/** + * @alias Long.prototype + * @inner + */ +var LongPrototype = Long.prototype; + +/** + * Converts the Long to a 32 bit integer, assuming it is a 32 bit integer. + * @returns {number} + */ +LongPrototype.toInt = function toInt() { + return this.unsigned ? this.low >>> 0 : this.low; +}; + +/** + * Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa). + * @returns {number} + */ +LongPrototype.toNumber = function toNumber() { + if (this.unsigned) + return ((this.high >>> 0) * TWO_PWR_32_DBL) + (this.low >>> 0); + return this.high * TWO_PWR_32_DBL + (this.low >>> 0); +}; + +/** + * Converts the Long to a string written in the specified radix. + * @param {number=} radix Radix (2-36), defaults to 10 + * @returns {string} + * @override + * @throws {RangeError} If `radix` is out of range + */ +LongPrototype.toString = function toString(radix) { + radix = radix || 10; + if (radix < 2 || 36 < radix) + throw RangeError('radix'); + if (this.isZero()) + return '0'; + if (this.isNegative()) { // Unsigned Longs are never negative + if (this.eq(MIN_VALUE)) { + // We need to change the Long value before it can be negated, so we remove + // the bottom-most digit in this base and then recurse to do the rest. + var radixLong = fromNumber(radix), + div = this.div(radixLong), + rem1 = div.mul(radixLong).sub(this); + return div.toString(radix) + rem1.toInt().toString(radix); + } else + return '-' + this.neg().toString(radix); + } + + // Do several (6) digits each time through the loop, so as to + // minimize the calls to the very expensive emulated div. + var radixToPower = fromNumber(pow_dbl(radix, 6), this.unsigned), + rem = this; + var result = ''; + while (true) { + var remDiv = rem.div(radixToPower), + intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0, + digits = intval.toString(radix); + rem = remDiv; + if (rem.isZero()) + return digits + result; + else { + while (digits.length < 6) + digits = '0' + digits; + result = '' + digits + result; + } + } +}; + +/** + * Gets the high 32 bits as a signed integer. + * @returns {number} Signed high bits + */ +LongPrototype.getHighBits = function getHighBits() { + return this.high; +}; + +/** + * Gets the high 32 bits as an unsigned integer. + * @returns {number} Unsigned high bits + */ +LongPrototype.getHighBitsUnsigned = function getHighBitsUnsigned() { + return this.high >>> 0; +}; + +/** + * Gets the low 32 bits as a signed integer. + * @returns {number} Signed low bits + */ +LongPrototype.getLowBits = function getLowBits() { + return this.low; +}; + +/** + * Gets the low 32 bits as an unsigned integer. + * @returns {number} Unsigned low bits + */ +LongPrototype.getLowBitsUnsigned = function getLowBitsUnsigned() { + return this.low >>> 0; +}; + +/** + * Gets the number of bits needed to represent the absolute value of this Long. + * @returns {number} + */ +LongPrototype.getNumBitsAbs = function getNumBitsAbs() { + if (this.isNegative()) // Unsigned Longs are never negative + return this.eq(MIN_VALUE) ? 64 : this.neg().getNumBitsAbs(); + var val = this.high != 0 ? this.high : this.low; + for (var bit = 31; bit > 0; bit--) + if ((val & (1 << bit)) != 0) + break; + return this.high != 0 ? bit + 33 : bit + 1; +}; + +/** + * Tests if this Long's value equals zero. + * @returns {boolean} + */ +LongPrototype.isZero = function isZero() { + return this.high === 0 && this.low === 0; +}; + +/** + * Tests if this Long's value equals zero. This is an alias of {@link Long#isZero}. + * @returns {boolean} + */ +LongPrototype.eqz = LongPrototype.isZero; + +/** + * Tests if this Long's value is negative. + * @returns {boolean} + */ +LongPrototype.isNegative = function isNegative() { + return !this.unsigned && this.high < 0; +}; + +/** + * Tests if this Long's value is positive. + * @returns {boolean} + */ +LongPrototype.isPositive = function isPositive() { + return this.unsigned || this.high >= 0; +}; + +/** + * Tests if this Long's value is odd. + * @returns {boolean} + */ +LongPrototype.isOdd = function isOdd() { + return (this.low & 1) === 1; +}; + +/** + * Tests if this Long's value is even. + * @returns {boolean} + */ +LongPrototype.isEven = function isEven() { + return (this.low & 1) === 0; +}; + +/** + * Tests if this Long's value equals the specified's. + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.equals = function equals(other) { + if (!isLong(other)) + other = fromValue(other); + if (this.unsigned !== other.unsigned && (this.high >>> 31) === 1 && (other.high >>> 31) === 1) + return false; + return this.high === other.high && this.low === other.low; +}; + +/** + * Tests if this Long's value equals the specified's. This is an alias of {@link Long#equals}. + * @function + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.eq = LongPrototype.equals; + +/** + * Tests if this Long's value differs from the specified's. + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.notEquals = function notEquals(other) { + return !this.eq(/* validates */ other); +}; + +/** + * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}. + * @function + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.neq = LongPrototype.notEquals; + +/** + * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}. + * @function + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.ne = LongPrototype.notEquals; + +/** + * Tests if this Long's value is less than the specified's. + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.lessThan = function lessThan(other) { + return this.comp(/* validates */ other) < 0; +}; + +/** + * Tests if this Long's value is less than the specified's. This is an alias of {@link Long#lessThan}. + * @function + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.lt = LongPrototype.lessThan; + +/** + * Tests if this Long's value is less than or equal the specified's. + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.lessThanOrEqual = function lessThanOrEqual(other) { + return this.comp(/* validates */ other) <= 0; +}; + +/** + * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}. + * @function + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.lte = LongPrototype.lessThanOrEqual; + +/** + * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}. + * @function + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.le = LongPrototype.lessThanOrEqual; + +/** + * Tests if this Long's value is greater than the specified's. + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.greaterThan = function greaterThan(other) { + return this.comp(/* validates */ other) > 0; +}; + +/** + * Tests if this Long's value is greater than the specified's. This is an alias of {@link Long#greaterThan}. + * @function + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.gt = LongPrototype.greaterThan; + +/** + * Tests if this Long's value is greater than or equal the specified's. + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.greaterThanOrEqual = function greaterThanOrEqual(other) { + return this.comp(/* validates */ other) >= 0; +}; + +/** + * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}. + * @function + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.gte = LongPrototype.greaterThanOrEqual; + +/** + * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}. + * @function + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.ge = LongPrototype.greaterThanOrEqual; + +/** + * Compares this Long's value with the specified's. + * @param {!Long|number|string} other Other value + * @returns {number} 0 if they are the same, 1 if the this is greater and -1 + * if the given one is greater + */ +LongPrototype.compare = function compare(other) { + if (!isLong(other)) + other = fromValue(other); + if (this.eq(other)) + return 0; + var thisNeg = this.isNegative(), + otherNeg = other.isNegative(); + if (thisNeg && !otherNeg) + return -1; + if (!thisNeg && otherNeg) + return 1; + // At this point the sign bits are the same + if (!this.unsigned) + return this.sub(other).isNegative() ? -1 : 1; + // Both are positive if at least one is unsigned + return (other.high >>> 0) > (this.high >>> 0) || (other.high === this.high && (other.low >>> 0) > (this.low >>> 0)) ? -1 : 1; +}; + +/** + * Compares this Long's value with the specified's. This is an alias of {@link Long#compare}. + * @function + * @param {!Long|number|string} other Other value + * @returns {number} 0 if they are the same, 1 if the this is greater and -1 + * if the given one is greater + */ +LongPrototype.comp = LongPrototype.compare; + +/** + * Negates this Long's value. + * @returns {!Long} Negated Long + */ +LongPrototype.negate = function negate() { + if (!this.unsigned && this.eq(MIN_VALUE)) + return MIN_VALUE; + return this.not().add(ONE); +}; + +/** + * Negates this Long's value. This is an alias of {@link Long#negate}. + * @function + * @returns {!Long} Negated Long + */ +LongPrototype.neg = LongPrototype.negate; + +/** + * Returns the sum of this and the specified Long. + * @param {!Long|number|string} addend Addend + * @returns {!Long} Sum + */ +LongPrototype.add = function add(addend) { + if (!isLong(addend)) + addend = fromValue(addend); + + // Divide each number into 4 chunks of 16 bits, and then sum the chunks. + + var a48 = this.high >>> 16; + var a32 = this.high & 0xFFFF; + var a16 = this.low >>> 16; + var a00 = this.low & 0xFFFF; + + var b48 = addend.high >>> 16; + var b32 = addend.high & 0xFFFF; + var b16 = addend.low >>> 16; + var b00 = addend.low & 0xFFFF; + + var c48 = 0, c32 = 0, c16 = 0, c00 = 0; + c00 += a00 + b00; + c16 += c00 >>> 16; + c00 &= 0xFFFF; + c16 += a16 + b16; + c32 += c16 >>> 16; + c16 &= 0xFFFF; + c32 += a32 + b32; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c48 += a48 + b48; + c48 &= 0xFFFF; + return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned); +}; + +/** + * Returns the difference of this and the specified Long. + * @param {!Long|number|string} subtrahend Subtrahend + * @returns {!Long} Difference + */ +LongPrototype.subtract = function subtract(subtrahend) { + if (!isLong(subtrahend)) + subtrahend = fromValue(subtrahend); + return this.add(subtrahend.neg()); +}; + +/** + * Returns the difference of this and the specified Long. This is an alias of {@link Long#subtract}. + * @function + * @param {!Long|number|string} subtrahend Subtrahend + * @returns {!Long} Difference + */ +LongPrototype.sub = LongPrototype.subtract; + +/** + * Returns the product of this and the specified Long. + * @param {!Long|number|string} multiplier Multiplier + * @returns {!Long} Product + */ +LongPrototype.multiply = function multiply(multiplier) { + if (this.isZero()) + return ZERO; + if (!isLong(multiplier)) + multiplier = fromValue(multiplier); + + // use wasm support if present + if (wasm) { + var low = wasm.mul(this.low, + this.high, + multiplier.low, + multiplier.high); + return fromBits(low, wasm.get_high(), this.unsigned); + } + + if (multiplier.isZero()) + return ZERO; + if (this.eq(MIN_VALUE)) + return multiplier.isOdd() ? MIN_VALUE : ZERO; + if (multiplier.eq(MIN_VALUE)) + return this.isOdd() ? MIN_VALUE : ZERO; + + if (this.isNegative()) { + if (multiplier.isNegative()) + return this.neg().mul(multiplier.neg()); + else + return this.neg().mul(multiplier).neg(); + } else if (multiplier.isNegative()) + return this.mul(multiplier.neg()).neg(); + + // If both longs are small, use float multiplication + if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24)) + return fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned); + + // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products. + // We can skip products that would overflow. + + var a48 = this.high >>> 16; + var a32 = this.high & 0xFFFF; + var a16 = this.low >>> 16; + var a00 = this.low & 0xFFFF; + + var b48 = multiplier.high >>> 16; + var b32 = multiplier.high & 0xFFFF; + var b16 = multiplier.low >>> 16; + var b00 = multiplier.low & 0xFFFF; + + var c48 = 0, c32 = 0, c16 = 0, c00 = 0; + c00 += a00 * b00; + c16 += c00 >>> 16; + c00 &= 0xFFFF; + c16 += a16 * b00; + c32 += c16 >>> 16; + c16 &= 0xFFFF; + c16 += a00 * b16; + c32 += c16 >>> 16; + c16 &= 0xFFFF; + c32 += a32 * b00; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c32 += a16 * b16; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c32 += a00 * b32; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48; + c48 &= 0xFFFF; + return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned); +}; + +/** + * Returns the product of this and the specified Long. This is an alias of {@link Long#multiply}. + * @function + * @param {!Long|number|string} multiplier Multiplier + * @returns {!Long} Product + */ +LongPrototype.mul = LongPrototype.multiply; + +/** + * Returns this Long divided by the specified. The result is signed if this Long is signed or + * unsigned if this Long is unsigned. + * @param {!Long|number|string} divisor Divisor + * @returns {!Long} Quotient + */ +LongPrototype.divide = function divide(divisor) { + if (!isLong(divisor)) + divisor = fromValue(divisor); + if (divisor.isZero()) + throw Error('division by zero'); + + // use wasm support if present + if (wasm) { + // guard against signed division overflow: the largest + // negative number / -1 would be 1 larger than the largest + // positive number, due to two's complement. + if (!this.unsigned && + this.high === -0x80000000 && + divisor.low === -1 && divisor.high === -1) { + // be consistent with non-wasm code path + return this; + } + var low = (this.unsigned ? wasm.div_u : wasm.div_s)( + this.low, + this.high, + divisor.low, + divisor.high + ); + return fromBits(low, wasm.get_high(), this.unsigned); + } + + if (this.isZero()) + return this.unsigned ? UZERO : ZERO; + var approx, rem, res; + if (!this.unsigned) { + // This section is only relevant for signed longs and is derived from the + // closure library as a whole. + if (this.eq(MIN_VALUE)) { + if (divisor.eq(ONE) || divisor.eq(NEG_ONE)) + return MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE + else if (divisor.eq(MIN_VALUE)) + return ONE; + else { + // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|. + var halfThis = this.shr(1); + approx = halfThis.div(divisor).shl(1); + if (approx.eq(ZERO)) { + return divisor.isNegative() ? ONE : NEG_ONE; + } else { + rem = this.sub(divisor.mul(approx)); + res = approx.add(rem.div(divisor)); + return res; + } + } + } else if (divisor.eq(MIN_VALUE)) + return this.unsigned ? UZERO : ZERO; + if (this.isNegative()) { + if (divisor.isNegative()) + return this.neg().div(divisor.neg()); + return this.neg().div(divisor).neg(); + } else if (divisor.isNegative()) + return this.div(divisor.neg()).neg(); + res = ZERO; + } else { + // The algorithm below has not been made for unsigned longs. It's therefore + // required to take special care of the MSB prior to running it. + if (!divisor.unsigned) + divisor = divisor.toUnsigned(); + if (divisor.gt(this)) + return UZERO; + if (divisor.gt(this.shru(1))) // 15 >>> 1 = 7 ; with divisor = 8 ; true + return UONE; + res = UZERO; + } + + // Repeat the following until the remainder is less than other: find a + // floating-point that approximates remainder / other *from below*, add this + // into the result, and subtract it from the remainder. It is critical that + // the approximate value is less than or equal to the real value so that the + // remainder never becomes negative. + rem = this; + while (rem.gte(divisor)) { + // Approximate the result of division. This may be a little greater or + // smaller than the actual value. + approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber())); + + // We will tweak the approximate result by changing it in the 48-th digit or + // the smallest non-fractional digit, whichever is larger. + var log2 = Math.ceil(Math.log(approx) / Math.LN2), + delta = (log2 <= 48) ? 1 : pow_dbl(2, log2 - 48), + + // Decrease the approximation until it is smaller than the remainder. Note + // that if it is too large, the product overflows and is negative. + approxRes = fromNumber(approx), + approxRem = approxRes.mul(divisor); + while (approxRem.isNegative() || approxRem.gt(rem)) { + approx -= delta; + approxRes = fromNumber(approx, this.unsigned); + approxRem = approxRes.mul(divisor); + } + + // We know the answer can't be zero... and actually, zero would cause + // infinite recursion since we would make no progress. + if (approxRes.isZero()) + approxRes = ONE; + + res = res.add(approxRes); + rem = rem.sub(approxRem); + } + return res; +}; + +/** + * Returns this Long divided by the specified. This is an alias of {@link Long#divide}. + * @function + * @param {!Long|number|string} divisor Divisor + * @returns {!Long} Quotient + */ +LongPrototype.div = LongPrototype.divide; + +/** + * Returns this Long modulo the specified. + * @param {!Long|number|string} divisor Divisor + * @returns {!Long} Remainder + */ +LongPrototype.modulo = function modulo(divisor) { + if (!isLong(divisor)) + divisor = fromValue(divisor); + + // use wasm support if present + if (wasm) { + var low = (this.unsigned ? wasm.rem_u : wasm.rem_s)( + this.low, + this.high, + divisor.low, + divisor.high + ); + return fromBits(low, wasm.get_high(), this.unsigned); + } + + return this.sub(this.div(divisor).mul(divisor)); +}; + +/** + * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}. + * @function + * @param {!Long|number|string} divisor Divisor + * @returns {!Long} Remainder + */ +LongPrototype.mod = LongPrototype.modulo; + +/** + * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}. + * @function + * @param {!Long|number|string} divisor Divisor + * @returns {!Long} Remainder + */ +LongPrototype.rem = LongPrototype.modulo; + +/** + * Returns the bitwise NOT of this Long. + * @returns {!Long} + */ +LongPrototype.not = function not() { + return fromBits(~this.low, ~this.high, this.unsigned); +}; + +/** + * Returns the bitwise AND of this Long and the specified. + * @param {!Long|number|string} other Other Long + * @returns {!Long} + */ +LongPrototype.and = function and(other) { + if (!isLong(other)) + other = fromValue(other); + return fromBits(this.low & other.low, this.high & other.high, this.unsigned); +}; + +/** + * Returns the bitwise OR of this Long and the specified. + * @param {!Long|number|string} other Other Long + * @returns {!Long} + */ +LongPrototype.or = function or(other) { + if (!isLong(other)) + other = fromValue(other); + return fromBits(this.low | other.low, this.high | other.high, this.unsigned); +}; + +/** + * Returns the bitwise XOR of this Long and the given one. + * @param {!Long|number|string} other Other Long + * @returns {!Long} + */ +LongPrototype.xor = function xor(other) { + if (!isLong(other)) + other = fromValue(other); + return fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned); +}; + +/** + * Returns this Long with bits shifted to the left by the given amount. + * @param {number|!Long} numBits Number of bits + * @returns {!Long} Shifted Long + */ +LongPrototype.shiftLeft = function shiftLeft(numBits) { + if (isLong(numBits)) + numBits = numBits.toInt(); + if ((numBits &= 63) === 0) + return this; + else if (numBits < 32) + return fromBits(this.low << numBits, (this.high << numBits) | (this.low >>> (32 - numBits)), this.unsigned); + else + return fromBits(0, this.low << (numBits - 32), this.unsigned); +}; + +/** + * Returns this Long with bits shifted to the left by the given amount. This is an alias of {@link Long#shiftLeft}. + * @function + * @param {number|!Long} numBits Number of bits + * @returns {!Long} Shifted Long + */ +LongPrototype.shl = LongPrototype.shiftLeft; + +/** + * Returns this Long with bits arithmetically shifted to the right by the given amount. + * @param {number|!Long} numBits Number of bits + * @returns {!Long} Shifted Long + */ +LongPrototype.shiftRight = function shiftRight(numBits) { + if (isLong(numBits)) + numBits = numBits.toInt(); + if ((numBits &= 63) === 0) + return this; + else if (numBits < 32) + return fromBits((this.low >>> numBits) | (this.high << (32 - numBits)), this.high >> numBits, this.unsigned); + else + return fromBits(this.high >> (numBits - 32), this.high >= 0 ? 0 : -1, this.unsigned); +}; + +/** + * Returns this Long with bits arithmetically shifted to the right by the given amount. This is an alias of {@link Long#shiftRight}. + * @function + * @param {number|!Long} numBits Number of bits + * @returns {!Long} Shifted Long + */ +LongPrototype.shr = LongPrototype.shiftRight; + +/** + * Returns this Long with bits logically shifted to the right by the given amount. + * @param {number|!Long} numBits Number of bits + * @returns {!Long} Shifted Long + */ +LongPrototype.shiftRightUnsigned = function shiftRightUnsigned(numBits) { + if (isLong(numBits)) + numBits = numBits.toInt(); + numBits &= 63; + if (numBits === 0) + return this; + else { + var high = this.high; + if (numBits < 32) { + var low = this.low; + return fromBits((low >>> numBits) | (high << (32 - numBits)), high >>> numBits, this.unsigned); + } else if (numBits === 32) + return fromBits(high, 0, this.unsigned); + else + return fromBits(high >>> (numBits - 32), 0, this.unsigned); + } +}; + +/** + * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}. + * @function + * @param {number|!Long} numBits Number of bits + * @returns {!Long} Shifted Long + */ +LongPrototype.shru = LongPrototype.shiftRightUnsigned; + +/** + * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}. + * @function + * @param {number|!Long} numBits Number of bits + * @returns {!Long} Shifted Long + */ +LongPrototype.shr_u = LongPrototype.shiftRightUnsigned; + +/** + * Converts this Long to signed. + * @returns {!Long} Signed long + */ +LongPrototype.toSigned = function toSigned() { + if (!this.unsigned) + return this; + return fromBits(this.low, this.high, false); +}; + +/** + * Converts this Long to unsigned. + * @returns {!Long} Unsigned long + */ +LongPrototype.toUnsigned = function toUnsigned() { + if (this.unsigned) + return this; + return fromBits(this.low, this.high, true); +}; + +/** + * Converts this Long to its byte representation. + * @param {boolean=} le Whether little or big endian, defaults to big endian + * @returns {!Array.} Byte representation + */ +LongPrototype.toBytes = function toBytes(le) { + return le ? this.toBytesLE() : this.toBytesBE(); +}; + +/** + * Converts this Long to its little endian byte representation. + * @returns {!Array.} Little endian byte representation + */ +LongPrototype.toBytesLE = function toBytesLE() { + var hi = this.high, + lo = this.low; + return [ + lo & 0xff, + lo >>> 8 & 0xff, + lo >>> 16 & 0xff, + lo >>> 24 , + hi & 0xff, + hi >>> 8 & 0xff, + hi >>> 16 & 0xff, + hi >>> 24 + ]; +}; + +/** + * Converts this Long to its big endian byte representation. + * @returns {!Array.} Big endian byte representation + */ +LongPrototype.toBytesBE = function toBytesBE() { + var hi = this.high, + lo = this.low; + return [ + hi >>> 24 , + hi >>> 16 & 0xff, + hi >>> 8 & 0xff, + hi & 0xff, + lo >>> 24 , + lo >>> 16 & 0xff, + lo >>> 8 & 0xff, + lo & 0xff + ]; +}; + +/** + * Creates a Long from its byte representation. + * @param {!Array.} bytes Byte representation + * @param {boolean=} unsigned Whether unsigned or not, defaults to signed + * @param {boolean=} le Whether little or big endian, defaults to big endian + * @returns {Long} The corresponding Long value + */ +Long.fromBytes = function fromBytes(bytes, unsigned, le) { + return le ? Long.fromBytesLE(bytes, unsigned) : Long.fromBytesBE(bytes, unsigned); +}; + +/** + * Creates a Long from its little endian byte representation. + * @param {!Array.} bytes Little endian byte representation + * @param {boolean=} unsigned Whether unsigned or not, defaults to signed + * @returns {Long} The corresponding Long value + */ +Long.fromBytesLE = function fromBytesLE(bytes, unsigned) { + return new Long( + bytes[0] | + bytes[1] << 8 | + bytes[2] << 16 | + bytes[3] << 24, + bytes[4] | + bytes[5] << 8 | + bytes[6] << 16 | + bytes[7] << 24, + unsigned + ); +}; + +/** + * Creates a Long from its big endian byte representation. + * @param {!Array.} bytes Big endian byte representation + * @param {boolean=} unsigned Whether unsigned or not, defaults to signed + * @returns {Long} The corresponding Long value + */ +Long.fromBytesBE = function fromBytesBE(bytes, unsigned) { + return new Long( + bytes[4] << 24 | + bytes[5] << 16 | + bytes[6] << 8 | + bytes[7], + bytes[0] << 24 | + bytes[1] << 16 | + bytes[2] << 8 | + bytes[3], + unsigned + ); +}; + + /***/ }), /***/ "./node_modules/opentracing/lib/binary_carrier.js": @@ -13394,153 +15899,8314 @@ exports.default = Tracer; /***/ }), -/***/ "./node_modules/webpack/buildin/global.js": -/*!***********************************!*\ - !*** (webpack)/buildin/global.js ***! - \***********************************/ +/***/ "./node_modules/protobufjs/index.js": +/*!******************************************!*\ + !*** ./node_modules/protobufjs/index.js ***! + \******************************************/ /*! no static exports found */ -/***/ (function(module, exports) { - -var g; - -// This works in non-strict mode -g = (function() { - return this; -})(); - -try { - // This works if eval is allowed (see CSP) - g = g || Function("return this")() || (1, eval)("this"); -} catch (e) { - // This works if the window reference is available - if (typeof window === "object") g = window; -} - -// g can still be undefined, but nothing to do about it... -// We return undefined, instead of nothing here, so it's -// easier to handle this case. if(!global) { ...} - -module.exports = g; +/***/ (function(module, exports, __webpack_require__) { +"use strict"; +// full library entry point. -/***/ }), -/***/ "./package.json": -/*!**********************!*\ - !*** ./package.json ***! - \**********************/ -/*! exports provided: name, version, main, types, browser, engines, scripts, license, repository, dependencies, devDependencies, default */ -/***/ (function(module) { +module.exports = __webpack_require__(/*! ./src/index */ "./node_modules/protobufjs/src/index.js"); -module.exports = {"name":"lightstep-tracer","version":"0.30.2","main":"index.js","types":"index.d.ts","browser":"browser.js","engines":{"node":">=8.0.0"},"scripts":{"test":"rm -f test/results/*.json && node node_modules/mocha/bin/mocha -c test/unittest_node.js","version":"make build && git add -A dist"},"license":"MIT","repository":{"type":"git","url":"http://github.com/lightstep/lightstep-tracer-javascript.git"},"dependencies":{"async":"1.5.0","eventemitter3":"1.1.1","google-protobuf":"3.6.1","hex2dec":"1.0.1","opentracing":"^0.14.4","source-map-support":"0.3.3","thrift":"0.13.0"},"devDependencies":{"babel-cli":"6.14.0","babel-core":"^6.26.3","babel-loader":"7","babel-plugin-add-module-exports":"^1.0.0","babel-plugin-check-es2015-constants":"6.7.2","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-arrow-functions":"6.5.2","babel-plugin-transform-es2015-block-scoped-functions":"6.6.5","babel-plugin-transform-es2015-block-scoping":"^6.26.0","babel-plugin-transform-es2015-classes":"6.6.5","babel-plugin-transform-es2015-computed-properties":"6.6.5","babel-plugin-transform-es2015-destructuring":"6.6.5","babel-plugin-transform-es2015-duplicate-keys":"6.6.4","babel-plugin-transform-es2015-literals":"6.5.0","babel-plugin-transform-es2015-modules-commonjs":"6.7.4","babel-plugin-transform-es2015-object-super":"6.6.5","babel-plugin-transform-es2015-parameters":"6.7.0","babel-plugin-transform-es2015-spread":"^6.6.5","babel-plugin-transform-es2015-sticky-regex":"6.5.0","babel-plugin-transform-es2015-template-literals":"6.6.5","babel-plugin-transform-es2015-unicode-regex":"6.5.0","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-polyfill":"6.3.14","babel-preset-es2015":"6.3.13","chai":"3.4.1","clone":"1.0.2","colors":"1.1.2","eslint":"^6.8.0","eslint-config-airbnb":"^18.0.1","eslint-plugin-import":"^2.20.0","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-react":"^7.18.0","express":"^4.16.3","fetch-mock":"^9.2.1","istanbul":"^0.4.5","mocha":"^7.1.2","shelljs":"0.5.3","sinon":"^9.0.1","sprintf-js":"1.0.3","underscore":"1.8.3","watch-trigger":"0.0.5","webpack":"^4.25.1","webpack-cli":"^3.1.2"}}; /***/ }), -/***/ "./src/_each.js": -/*!**********************!*\ - !*** ./src/_each.js ***! - \**********************/ +/***/ "./node_modules/protobufjs/src/common.js": +/*!***********************************************!*\ + !*** ./node_modules/protobufjs/src/common.js ***! + \***********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = _each; -// Underscore.js-like wrapper to iterate object key-values. Note that even for completely -// internal objects, packages may modify default Object prototypes and properties -// (e.g. Ember.js) so it's almost never safe to assume a particular object can -// iterated with for-in. -// TODO: remove this function and replace with Object.keys, Object.values, ... (spread) or other. -function _each(obj, cb) { - if (!obj) { - return; - } - // eslint-disable-next-line no-restricted-syntax - for (var key in obj) { - if (hasOwnProperty.call(obj, key)) { - cb(obj[key], key); - } +module.exports = common; + +var commonRe = /\/|\./; + +/** + * Provides common type definitions. + * Can also be used to provide additional google types or your own custom types. + * @param {string} name Short name as in `google/protobuf/[name].proto` or full file name + * @param {Object.} json JSON definition within `google.protobuf` if a short name, otherwise the file's root definition + * @returns {undefined} + * @property {INamespace} google/protobuf/any.proto Any + * @property {INamespace} google/protobuf/duration.proto Duration + * @property {INamespace} google/protobuf/empty.proto Empty + * @property {INamespace} google/protobuf/field_mask.proto FieldMask + * @property {INamespace} google/protobuf/struct.proto Struct, Value, NullValue and ListValue + * @property {INamespace} google/protobuf/timestamp.proto Timestamp + * @property {INamespace} google/protobuf/wrappers.proto Wrappers + * @example + * // manually provides descriptor.proto (assumes google/protobuf/ namespace and .proto extension) + * protobuf.common("descriptor", descriptorJson); + * + * // manually provides a custom definition (uses my.foo namespace) + * protobuf.common("my/foo/bar.proto", myFooBarJson); + */ +function common(name, json) { + if (!commonRe.test(name)) { + name = "google/protobuf/" + name + ".proto"; + json = { nested: { google: { nested: { protobuf: { nested: json } } } } }; } + common[name] = json; } -module.exports = exports.default; - -/***/ }), - -/***/ "./src/constants.js": -/*!**************************!*\ - !*** ./src/constants.js ***! - \**************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { -"use strict"; +// Not provided because of limited use (feel free to discuss or to provide yourself): +// +// google/protobuf/descriptor.proto +// google/protobuf/source_context.proto +// google/protobuf/type.proto +// +// Stripped and pre-parsed versions of these non-bundled files are instead available as part of +// the repository or package within the google/protobuf directory. +common("any", { -Object.defineProperty(exports, "__esModule", { - value: true + /** + * Properties of a google.protobuf.Any message. + * @interface IAny + * @type {Object} + * @property {string} [typeUrl] + * @property {Uint8Array} [bytes] + * @memberof common + */ + Any: { + fields: { + type_url: { + type: "string", + id: 1 + }, + value: { + type: "bytes", + id: 2 + } + } + } }); -var LOG_INFO = exports.LOG_INFO = 0; -var LOG_WARN = exports.LOG_WARN = 1; -var LOG_ERROR = exports.LOG_ERROR = 2; -var LOG_FATAL = exports.LOG_FATAL = 3; - -var LOG_LEVEL_TO_STRING = exports.LOG_LEVEL_TO_STRING = { - LOG_INFO: 'I', - LOG_WARN: 'W', - LOG_ERROR: 'E', - LOG_FATAL: 'F' -}; -var LOG_STRING_TO_LEVEL = exports.LOG_STRING_TO_LEVEL = { - I: LOG_INFO, - W: LOG_WARN, - E: LOG_ERROR, - F: LOG_FATAL -}; - -// The report interval for empty reports used to sample the clock skew -var CLOCK_STATE_REFRESH_INTERVAL_MS = exports.CLOCK_STATE_REFRESH_INTERVAL_MS = 350; - -var LIGHTSTEP_APP_URL_PREFIX = exports.LIGHTSTEP_APP_URL_PREFIX = 'https://app.lightstep.com'; - -var JOIN_ID_PREFIX = exports.JOIN_ID_PREFIX = 'join:'; -var LS_META_EVENT_KEY = exports.LS_META_EVENT_KEY = 'lightstep.meta_event'; -var LS_META_PROPAGATION_KEY = exports.LS_META_PROPAGATION_KEY = 'lightstep.propagation_format'; -var LS_META_TRACE_KEY = exports.LS_META_TRACE_KEY = 'lightstep.trace_id'; -var LS_META_SPAN_KEY = exports.LS_META_SPAN_KEY = 'lightstep.span_id'; -var LS_META_TRACER_GUID_KEY = exports.LS_META_TRACER_GUID_KEY = 'lightstep.tracer_guid'; -var LS_META_EXTRACT = exports.LS_META_EXTRACT = 'lightstep.extract_span'; -var LS_META_INJECT = exports.LS_META_INJECT = 'lightstep.inject_span'; -var LS_META_SP_START = exports.LS_META_SP_START = 'lightstep.span_start'; -var LS_META_SP_FINISH = exports.LS_META_SP_FINISH = 'lightstep.span_finish'; -var LS_META_TRACER_CREATE = exports.LS_META_TRACER_CREATE = 'lightstep.tracer_create'; +var timeType; -var FORMAT_B3 = exports.FORMAT_B3 = 'format.b3'; +common("duration", { -/***/ }), + /** + * Properties of a google.protobuf.Duration message. + * @interface IDuration + * @type {Object} + * @property {number|Long} [seconds] + * @property {number} [nanos] + * @memberof common + */ + Duration: timeType = { + fields: { + seconds: { + type: "int64", + id: 1 + }, + nanos: { + type: "int32", + id: 2 + } + } + } +}); -/***/ "./src/imp/auth_imp.js": -/*!*****************************!*\ - !*** ./src/imp/auth_imp.js ***! - \*****************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { +common("timestamp", { -"use strict"; + /** + * Properties of a google.protobuf.Timestamp message. + * @interface ITimestamp + * @type {Object} + * @property {number|Long} [seconds] + * @property {number} [nanos] + * @memberof common + */ + Timestamp: timeType +}); +common("empty", { -Object.defineProperty(exports, "__esModule", { - value: true + /** + * Properties of a google.protobuf.Empty message. + * @interface IEmpty + * @memberof common + */ + Empty: { + fields: {} + } }); -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); // eslint-disable-next-line camelcase +common("struct", { + /** + * Properties of a google.protobuf.Struct message. + * @interface IStruct + * @type {Object} + * @property {Object.} [fields] + * @memberof common + */ + Struct: { + fields: { + fields: { + keyType: "string", + type: "Value", + id: 1 + } + } + }, -var _platform_abstraction_layer = __webpack_require__(/*! ../platform_abstraction_layer */ "./src/platform_abstraction_layer.js"); + /** + * Properties of a google.protobuf.Value message. + * @interface IValue + * @type {Object} + * @property {string} [kind] + * @property {0} [nullValue] + * @property {number} [numberValue] + * @property {string} [stringValue] + * @property {boolean} [boolValue] + * @property {IStruct} [structValue] + * @property {IListValue} [listValue] + * @memberof common + */ + Value: { + oneofs: { + kind: { + oneof: [ + "nullValue", + "numberValue", + "stringValue", + "boolValue", + "structValue", + "listValue" + ] + } + }, + fields: { + nullValue: { + type: "NullValue", + id: 1 + }, + numberValue: { + type: "double", + id: 2 + }, + stringValue: { + type: "string", + id: 3 + }, + boolValue: { + type: "bool", + id: 4 + }, + structValue: { + type: "Struct", + id: 5 + }, + listValue: { + type: "ListValue", + id: 6 + } + } + }, + + NullValue: { + values: { + NULL_VALUE: 0 + } + }, + + /** + * Properties of a google.protobuf.ListValue message. + * @interface IListValue + * @type {Object} + * @property {Array.} [values] + * @memberof common + */ + ListValue: { + fields: { + values: { + rule: "repeated", + type: "Value", + id: 1 + } + } + } +}); + +common("wrappers", { + + /** + * Properties of a google.protobuf.DoubleValue message. + * @interface IDoubleValue + * @type {Object} + * @property {number} [value] + * @memberof common + */ + DoubleValue: { + fields: { + value: { + type: "double", + id: 1 + } + } + }, + + /** + * Properties of a google.protobuf.FloatValue message. + * @interface IFloatValue + * @type {Object} + * @property {number} [value] + * @memberof common + */ + FloatValue: { + fields: { + value: { + type: "float", + id: 1 + } + } + }, + + /** + * Properties of a google.protobuf.Int64Value message. + * @interface IInt64Value + * @type {Object} + * @property {number|Long} [value] + * @memberof common + */ + Int64Value: { + fields: { + value: { + type: "int64", + id: 1 + } + } + }, + + /** + * Properties of a google.protobuf.UInt64Value message. + * @interface IUInt64Value + * @type {Object} + * @property {number|Long} [value] + * @memberof common + */ + UInt64Value: { + fields: { + value: { + type: "uint64", + id: 1 + } + } + }, + + /** + * Properties of a google.protobuf.Int32Value message. + * @interface IInt32Value + * @type {Object} + * @property {number} [value] + * @memberof common + */ + Int32Value: { + fields: { + value: { + type: "int32", + id: 1 + } + } + }, + + /** + * Properties of a google.protobuf.UInt32Value message. + * @interface IUInt32Value + * @type {Object} + * @property {number} [value] + * @memberof common + */ + UInt32Value: { + fields: { + value: { + type: "uint32", + id: 1 + } + } + }, + + /** + * Properties of a google.protobuf.BoolValue message. + * @interface IBoolValue + * @type {Object} + * @property {boolean} [value] + * @memberof common + */ + BoolValue: { + fields: { + value: { + type: "bool", + id: 1 + } + } + }, + + /** + * Properties of a google.protobuf.StringValue message. + * @interface IStringValue + * @type {Object} + * @property {string} [value] + * @memberof common + */ + StringValue: { + fields: { + value: { + type: "string", + id: 1 + } + } + }, + + /** + * Properties of a google.protobuf.BytesValue message. + * @interface IBytesValue + * @type {Object} + * @property {Uint8Array} [value] + * @memberof common + */ + BytesValue: { + fields: { + value: { + type: "bytes", + id: 1 + } + } + } +}); + +common("field_mask", { + + /** + * Properties of a google.protobuf.FieldMask message. + * @interface IDoubleValue + * @type {Object} + * @property {number} [value] + * @memberof common + */ + FieldMask: { + fields: { + paths: { + rule: "repeated", + type: "string", + id: 1 + } + } + } +}); + +/** + * Gets the root definition of the specified common proto file. + * + * Bundled definitions are: + * - google/protobuf/any.proto + * - google/protobuf/duration.proto + * - google/protobuf/empty.proto + * - google/protobuf/field_mask.proto + * - google/protobuf/struct.proto + * - google/protobuf/timestamp.proto + * - google/protobuf/wrappers.proto + * + * @param {string} file Proto file name + * @returns {INamespace|null} Root definition or `null` if not defined + */ +common.get = function get(file) { + return common[file] || null; +}; + + +/***/ }), + +/***/ "./node_modules/protobufjs/src/converter.js": +/*!**************************************************!*\ + !*** ./node_modules/protobufjs/src/converter.js ***! + \**************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +/** + * Runtime message from/to plain object converters. + * @namespace + */ +var converter = exports; + +var Enum = __webpack_require__(/*! ./enum */ "./node_modules/protobufjs/src/enum.js"), + util = __webpack_require__(/*! ./util */ "./node_modules/protobufjs/src/util.js"); + +/** + * Generates a partial value fromObject conveter. + * @param {Codegen} gen Codegen instance + * @param {Field} field Reflected field + * @param {number} fieldIndex Field index + * @param {string} prop Property reference + * @returns {Codegen} Codegen instance + * @ignore + */ +function genValuePartial_fromObject(gen, field, fieldIndex, prop) { + /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */ + if (field.resolvedType) { + if (field.resolvedType instanceof Enum) { gen + ("switch(d%s){", prop); + for (var values = field.resolvedType.values, keys = Object.keys(values), i = 0; i < keys.length; ++i) { + if (field.repeated && values[keys[i]] === field.typeDefault) gen + ("default:"); + gen + ("case%j:", keys[i]) + ("case %i:", values[keys[i]]) + ("m%s=%j", prop, values[keys[i]]) + ("break"); + } gen + ("}"); + } else gen + ("if(typeof d%s!==\"object\")", prop) + ("throw TypeError(%j)", field.fullName + ": object expected") + ("m%s=types[%i].fromObject(d%s)", prop, fieldIndex, prop); + } else { + var isUnsigned = false; + switch (field.type) { + case "double": + case "float": gen + ("m%s=Number(d%s)", prop, prop); // also catches "NaN", "Infinity" + break; + case "uint32": + case "fixed32": gen + ("m%s=d%s>>>0", prop, prop); + break; + case "int32": + case "sint32": + case "sfixed32": gen + ("m%s=d%s|0", prop, prop); + break; + case "uint64": + isUnsigned = true; + // eslint-disable-line no-fallthrough + case "int64": + case "sint64": + case "fixed64": + case "sfixed64": gen + ("if(util.Long)") + ("(m%s=util.Long.fromValue(d%s)).unsigned=%j", prop, prop, isUnsigned) + ("else if(typeof d%s===\"string\")", prop) + ("m%s=parseInt(d%s,10)", prop, prop) + ("else if(typeof d%s===\"number\")", prop) + ("m%s=d%s", prop, prop) + ("else if(typeof d%s===\"object\")", prop) + ("m%s=new util.LongBits(d%s.low>>>0,d%s.high>>>0).toNumber(%s)", prop, prop, prop, isUnsigned ? "true" : ""); + break; + case "bytes": gen + ("if(typeof d%s===\"string\")", prop) + ("util.base64.decode(d%s,m%s=util.newBuffer(util.base64.length(d%s)),0)", prop, prop, prop) + ("else if(d%s.length)", prop) + ("m%s=d%s", prop, prop); + break; + case "string": gen + ("m%s=String(d%s)", prop, prop); + break; + case "bool": gen + ("m%s=Boolean(d%s)", prop, prop); + break; + /* default: gen + ("m%s=d%s", prop, prop); + break; */ + } + } + return gen; + /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */ +} + +/** + * Generates a plain object to runtime message converter specific to the specified message type. + * @param {Type} mtype Message type + * @returns {Codegen} Codegen instance + */ +converter.fromObject = function fromObject(mtype) { + /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */ + var fields = mtype.fieldsArray; + var gen = util.codegen(["d"], mtype.name + "$fromObject") + ("if(d instanceof this.ctor)") + ("return d"); + if (!fields.length) return gen + ("return new this.ctor"); + gen + ("var m=new this.ctor"); + for (var i = 0; i < fields.length; ++i) { + var field = fields[i].resolve(), + prop = util.safeProp(field.name); + + // Map fields + if (field.map) { gen + ("if(d%s){", prop) + ("if(typeof d%s!==\"object\")", prop) + ("throw TypeError(%j)", field.fullName + ": object expected") + ("m%s={}", prop) + ("for(var ks=Object.keys(d%s),i=0;i>>0,m%s.high>>>0).toNumber(%s):m%s", prop, prop, prop, prop, isUnsigned ? "true": "", prop); + break; + case "bytes": gen + ("d%s=o.bytes===String?util.base64.encode(m%s,0,m%s.length):o.bytes===Array?Array.prototype.slice.call(m%s):m%s", prop, prop, prop, prop, prop); + break; + default: gen + ("d%s=m%s", prop, prop); + break; + } + } + return gen; + /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */ +} + +/** + * Generates a runtime message to plain object converter specific to the specified message type. + * @param {Type} mtype Message type + * @returns {Codegen} Codegen instance + */ +converter.toObject = function toObject(mtype) { + /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */ + var fields = mtype.fieldsArray.slice().sort(util.compareFieldsById); + if (!fields.length) + return util.codegen()("return {}"); + var gen = util.codegen(["m", "o"], mtype.name + "$toObject") + ("if(!o)") + ("o={}") + ("var d={}"); + + var repeatedFields = [], + mapFields = [], + normalFields = [], + i = 0; + for (; i < fields.length; ++i) + if (!fields[i].partOf) + ( fields[i].resolve().repeated ? repeatedFields + : fields[i].map ? mapFields + : normalFields).push(fields[i]); + + if (repeatedFields.length) { gen + ("if(o.arrays||o.defaults){"); + for (i = 0; i < repeatedFields.length; ++i) gen + ("d%s=[]", util.safeProp(repeatedFields[i].name)); + gen + ("}"); + } + + if (mapFields.length) { gen + ("if(o.objects||o.defaults){"); + for (i = 0; i < mapFields.length; ++i) gen + ("d%s={}", util.safeProp(mapFields[i].name)); + gen + ("}"); + } + + if (normalFields.length) { gen + ("if(o.defaults){"); + for (i = 0; i < normalFields.length; ++i) { + var field = normalFields[i], + prop = util.safeProp(field.name); + if (field.resolvedType instanceof Enum) gen + ("d%s=o.enums===String?%j:%j", prop, field.resolvedType.valuesById[field.typeDefault], field.typeDefault); + else if (field.long) gen + ("if(util.Long){") + ("var n=new util.Long(%i,%i,%j)", field.typeDefault.low, field.typeDefault.high, field.typeDefault.unsigned) + ("d%s=o.longs===String?n.toString():o.longs===Number?n.toNumber():n", prop) + ("}else") + ("d%s=o.longs===String?%j:%i", prop, field.typeDefault.toString(), field.typeDefault.toNumber()); + else if (field.bytes) { + var arrayDefault = "[" + Array.prototype.slice.call(field.typeDefault).join(",") + "]"; + gen + ("if(o.bytes===String)d%s=%j", prop, String.fromCharCode.apply(String, field.typeDefault)) + ("else{") + ("d%s=%s", prop, arrayDefault) + ("if(o.bytes!==Array)d%s=util.newBuffer(d%s)", prop, prop) + ("}"); + } else gen + ("d%s=%j", prop, field.typeDefault); // also messages (=null) + } gen + ("}"); + } + var hasKs2 = false; + for (i = 0; i < fields.length; ++i) { + var field = fields[i], + index = mtype._fieldsArray.indexOf(field), + prop = util.safeProp(field.name); + if (field.map) { + if (!hasKs2) { hasKs2 = true; gen + ("var ks2"); + } gen + ("if(m%s&&(ks2=Object.keys(m%s)).length){", prop, prop) + ("d%s={}", prop) + ("for(var j=0;j>>3){"); + + var i = 0; + for (; i < /* initializes */ mtype.fieldsArray.length; ++i) { + var field = mtype._fieldsArray[i].resolve(), + type = field.resolvedType instanceof Enum ? "int32" : field.type, + ref = "m" + util.safeProp(field.name); gen + ("case %i:", field.id); + + // Map fields + if (field.map) { gen + ("if(%s===util.emptyObject)", ref) + ("%s={}", ref) + ("var c2 = r.uint32()+r.pos"); + + if (types.defaults[field.keyType] !== undefined) gen + ("k=%j", types.defaults[field.keyType]); + else gen + ("k=null"); + + if (types.defaults[type] !== undefined) gen + ("value=%j", types.defaults[type]); + else gen + ("value=null"); + + gen + ("while(r.pos>>3){") + ("case 1: k=r.%s(); break", field.keyType) + ("case 2:"); + + if (types.basic[type] === undefined) gen + ("value=types[%i].decode(r,r.uint32())", i); // can't be groups + else gen + ("value=r.%s()", type); + + gen + ("break") + ("default:") + ("r.skipType(tag2&7)") + ("break") + ("}") + ("}"); + + if (types.long[field.keyType] !== undefined) gen + ("%s[typeof k===\"object\"?util.longToHash(k):k]=value", ref); + else gen + ("%s[k]=value", ref); + + // Repeated fields + } else if (field.repeated) { gen + + ("if(!(%s&&%s.length))", ref, ref) + ("%s=[]", ref); + + // Packable (always check for forward and backward compatiblity) + if (types.packed[type] !== undefined) gen + ("if((t&7)===2){") + ("var c2=r.uint32()+r.pos") + ("while(r.pos>> 0, (field.id << 3 | 4) >>> 0) + : gen("types[%i].encode(%s,w.uint32(%i).fork()).ldelim()", fieldIndex, ref, (field.id << 3 | 2) >>> 0); +} + +/** + * Generates an encoder specific to the specified message type. + * @param {Type} mtype Message type + * @returns {Codegen} Codegen instance + */ +function encoder(mtype) { + /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */ + var gen = util.codegen(["m", "w"], mtype.name + "$encode") + ("if(!w)") + ("w=Writer.create()"); + + var i, ref; + + // "when a message is serialized its known fields should be written sequentially by field number" + var fields = /* initializes */ mtype.fieldsArray.slice().sort(util.compareFieldsById); + + for (var i = 0; i < fields.length; ++i) { + var field = fields[i].resolve(), + index = mtype._fieldsArray.indexOf(field), + type = field.resolvedType instanceof Enum ? "int32" : field.type, + wireType = types.basic[type]; + ref = "m" + util.safeProp(field.name); + + // Map fields + if (field.map) { + gen + ("if(%s!=null&&Object.hasOwnProperty.call(m,%j)){", ref, field.name) // !== undefined && !== null + ("for(var ks=Object.keys(%s),i=0;i>> 0, 8 | types.mapKey[field.keyType], field.keyType); + if (wireType === undefined) gen + ("types[%i].encode(%s[ks[i]],w.uint32(18).fork()).ldelim().ldelim()", index, ref); // can't be groups + else gen + (".uint32(%i).%s(%s[ks[i]]).ldelim()", 16 | wireType, type, ref); + gen + ("}") + ("}"); + + // Repeated fields + } else if (field.repeated) { gen + ("if(%s!=null&&%s.length){", ref, ref); // !== undefined && !== null + + // Packed repeated + if (field.packed && types.packed[type] !== undefined) { gen + + ("w.uint32(%i).fork()", (field.id << 3 | 2) >>> 0) + ("for(var i=0;i<%s.length;++i)", ref) + ("w.%s(%s[i])", type, ref) + ("w.ldelim()"); + + // Non-packed + } else { gen + + ("for(var i=0;i<%s.length;++i)", ref); + if (wireType === undefined) + genTypePartial(gen, field, index, ref + "[i]"); + else gen + ("w.uint32(%i).%s(%s[i])", (field.id << 3 | wireType) >>> 0, type, ref); + + } gen + ("}"); + + // Non-repeated + } else { + if (field.optional) gen + ("if(%s!=null&&Object.hasOwnProperty.call(m,%j))", ref, field.name); // !== undefined && !== null + + if (wireType === undefined) + genTypePartial(gen, field, index, ref); + else gen + ("w.uint32(%i).%s(%s)", (field.id << 3 | wireType) >>> 0, type, ref); + + } + } + + return gen + ("return w"); + /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */ +} + + +/***/ }), + +/***/ "./node_modules/protobufjs/src/enum.js": +/*!*********************************************!*\ + !*** ./node_modules/protobufjs/src/enum.js ***! + \*********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +module.exports = Enum; + +// extends ReflectionObject +var ReflectionObject = __webpack_require__(/*! ./object */ "./node_modules/protobufjs/src/object.js"); +((Enum.prototype = Object.create(ReflectionObject.prototype)).constructor = Enum).className = "Enum"; + +var Namespace = __webpack_require__(/*! ./namespace */ "./node_modules/protobufjs/src/namespace.js"), + util = __webpack_require__(/*! ./util */ "./node_modules/protobufjs/src/util.js"); + +/** + * Constructs a new enum instance. + * @classdesc Reflected enum. + * @extends ReflectionObject + * @constructor + * @param {string} name Unique name within its namespace + * @param {Object.} [values] Enum values as an object, by name + * @param {Object.} [options] Declared options + * @param {string} [comment] The comment for this enum + * @param {Object.} [comments] The value comments for this enum + */ +function Enum(name, values, options, comment, comments) { + ReflectionObject.call(this, name, options); + + if (values && typeof values !== "object") + throw TypeError("values must be an object"); + + /** + * Enum values by id. + * @type {Object.} + */ + this.valuesById = {}; + + /** + * Enum values by name. + * @type {Object.} + */ + this.values = Object.create(this.valuesById); // toJSON, marker + + /** + * Enum comment text. + * @type {string|null} + */ + this.comment = comment; + + /** + * Value comment texts, if any. + * @type {Object.} + */ + this.comments = comments || {}; + + /** + * Reserved ranges, if any. + * @type {Array.} + */ + this.reserved = undefined; // toJSON + + // Note that values inherit valuesById on their prototype which makes them a TypeScript- + // compatible enum. This is used by pbts to write actual enum definitions that work for + // static and reflection code alike instead of emitting generic object definitions. + + if (values) + for (var keys = Object.keys(values), i = 0; i < keys.length; ++i) + if (typeof values[keys[i]] === "number") // use forward entries only + this.valuesById[ this.values[keys[i]] = values[keys[i]] ] = keys[i]; +} + +/** + * Enum descriptor. + * @interface IEnum + * @property {Object.} values Enum values + * @property {Object.} [options] Enum options + */ + +/** + * Constructs an enum from an enum descriptor. + * @param {string} name Enum name + * @param {IEnum} json Enum descriptor + * @returns {Enum} Created enum + * @throws {TypeError} If arguments are invalid + */ +Enum.fromJSON = function fromJSON(name, json) { + var enm = new Enum(name, json.values, json.options, json.comment, json.comments); + enm.reserved = json.reserved; + return enm; +}; + +/** + * Converts this enum to an enum descriptor. + * @param {IToJSONOptions} [toJSONOptions] JSON conversion options + * @returns {IEnum} Enum descriptor + */ +Enum.prototype.toJSON = function toJSON(toJSONOptions) { + var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false; + return util.toObject([ + "options" , this.options, + "values" , this.values, + "reserved" , this.reserved && this.reserved.length ? this.reserved : undefined, + "comment" , keepComments ? this.comment : undefined, + "comments" , keepComments ? this.comments : undefined + ]); +}; + +/** + * Adds a value to this enum. + * @param {string} name Value name + * @param {number} id Value id + * @param {string} [comment] Comment, if any + * @returns {Enum} `this` + * @throws {TypeError} If arguments are invalid + * @throws {Error} If there is already a value with this name or id + */ +Enum.prototype.add = function add(name, id, comment) { + // utilized by the parser but not by .fromJSON + + if (!util.isString(name)) + throw TypeError("name must be a string"); + + if (!util.isInteger(id)) + throw TypeError("id must be an integer"); + + if (this.values[name] !== undefined) + throw Error("duplicate name '" + name + "' in " + this); + + if (this.isReservedId(id)) + throw Error("id " + id + " is reserved in " + this); + + if (this.isReservedName(name)) + throw Error("name '" + name + "' is reserved in " + this); + + if (this.valuesById[id] !== undefined) { + if (!(this.options && this.options.allow_alias)) + throw Error("duplicate id " + id + " in " + this); + this.values[name] = id; + } else + this.valuesById[this.values[name] = id] = name; + + this.comments[name] = comment || null; + return this; +}; + +/** + * Removes a value from this enum + * @param {string} name Value name + * @returns {Enum} `this` + * @throws {TypeError} If arguments are invalid + * @throws {Error} If `name` is not a name of this enum + */ +Enum.prototype.remove = function remove(name) { + + if (!util.isString(name)) + throw TypeError("name must be a string"); + + var val = this.values[name]; + if (val == null) + throw Error("name '" + name + "' does not exist in " + this); + + delete this.valuesById[val]; + delete this.values[name]; + delete this.comments[name]; + + return this; +}; + +/** + * Tests if the specified id is reserved. + * @param {number} id Id to test + * @returns {boolean} `true` if reserved, otherwise `false` + */ +Enum.prototype.isReservedId = function isReservedId(id) { + return Namespace.isReservedId(this.reserved, id); +}; + +/** + * Tests if the specified name is reserved. + * @param {string} name Name to test + * @returns {boolean} `true` if reserved, otherwise `false` + */ +Enum.prototype.isReservedName = function isReservedName(name) { + return Namespace.isReservedName(this.reserved, name); +}; + + +/***/ }), + +/***/ "./node_modules/protobufjs/src/field.js": +/*!**********************************************!*\ + !*** ./node_modules/protobufjs/src/field.js ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +module.exports = Field; + +// extends ReflectionObject +var ReflectionObject = __webpack_require__(/*! ./object */ "./node_modules/protobufjs/src/object.js"); +((Field.prototype = Object.create(ReflectionObject.prototype)).constructor = Field).className = "Field"; + +var Enum = __webpack_require__(/*! ./enum */ "./node_modules/protobufjs/src/enum.js"), + types = __webpack_require__(/*! ./types */ "./node_modules/protobufjs/src/types.js"), + util = __webpack_require__(/*! ./util */ "./node_modules/protobufjs/src/util.js"); + +var Type; // cyclic + +var ruleRe = /^required|optional|repeated$/; + +/** + * Constructs a new message field instance. Note that {@link MapField|map fields} have their own class. + * @name Field + * @classdesc Reflected message field. + * @extends FieldBase + * @constructor + * @param {string} name Unique name within its namespace + * @param {number} id Unique id within its namespace + * @param {string} type Value type + * @param {string|Object.} [rule="optional"] Field rule + * @param {string|Object.} [extend] Extended type if different from parent + * @param {Object.} [options] Declared options + */ + +/** + * Constructs a field from a field descriptor. + * @param {string} name Field name + * @param {IField} json Field descriptor + * @returns {Field} Created field + * @throws {TypeError} If arguments are invalid + */ +Field.fromJSON = function fromJSON(name, json) { + return new Field(name, json.id, json.type, json.rule, json.extend, json.options, json.comment); +}; + +/** + * Not an actual constructor. Use {@link Field} instead. + * @classdesc Base class of all reflected message fields. This is not an actual class but here for the sake of having consistent type definitions. + * @exports FieldBase + * @extends ReflectionObject + * @constructor + * @param {string} name Unique name within its namespace + * @param {number} id Unique id within its namespace + * @param {string} type Value type + * @param {string|Object.} [rule="optional"] Field rule + * @param {string|Object.} [extend] Extended type if different from parent + * @param {Object.} [options] Declared options + * @param {string} [comment] Comment associated with this field + */ +function Field(name, id, type, rule, extend, options, comment) { + + if (util.isObject(rule)) { + comment = extend; + options = rule; + rule = extend = undefined; + } else if (util.isObject(extend)) { + comment = options; + options = extend; + extend = undefined; + } + + ReflectionObject.call(this, name, options); + + if (!util.isInteger(id) || id < 0) + throw TypeError("id must be a non-negative integer"); + + if (!util.isString(type)) + throw TypeError("type must be a string"); + + if (rule !== undefined && !ruleRe.test(rule = rule.toString().toLowerCase())) + throw TypeError("rule must be a string rule"); + + if (extend !== undefined && !util.isString(extend)) + throw TypeError("extend must be a string"); + + /** + * Field rule, if any. + * @type {string|undefined} + */ + this.rule = rule && rule !== "optional" ? rule : undefined; // toJSON + + /** + * Field type. + * @type {string} + */ + this.type = type; // toJSON + + /** + * Unique field id. + * @type {number} + */ + this.id = id; // toJSON, marker + + /** + * Extended type if different from parent. + * @type {string|undefined} + */ + this.extend = extend || undefined; // toJSON + + /** + * Whether this field is required. + * @type {boolean} + */ + this.required = rule === "required"; + + /** + * Whether this field is optional. + * @type {boolean} + */ + this.optional = !this.required; + + /** + * Whether this field is repeated. + * @type {boolean} + */ + this.repeated = rule === "repeated"; + + /** + * Whether this field is a map or not. + * @type {boolean} + */ + this.map = false; + + /** + * Message this field belongs to. + * @type {Type|null} + */ + this.message = null; + + /** + * OneOf this field belongs to, if any, + * @type {OneOf|null} + */ + this.partOf = null; + + /** + * The field type's default value. + * @type {*} + */ + this.typeDefault = null; + + /** + * The field's default value on prototypes. + * @type {*} + */ + this.defaultValue = null; + + /** + * Whether this field's value should be treated as a long. + * @type {boolean} + */ + this.long = util.Long ? types.long[type] !== undefined : /* istanbul ignore next */ false; + + /** + * Whether this field's value is a buffer. + * @type {boolean} + */ + this.bytes = type === "bytes"; + + /** + * Resolved type if not a basic type. + * @type {Type|Enum|null} + */ + this.resolvedType = null; + + /** + * Sister-field within the extended type if a declaring extension field. + * @type {Field|null} + */ + this.extensionField = null; + + /** + * Sister-field within the declaring namespace if an extended field. + * @type {Field|null} + */ + this.declaringField = null; + + /** + * Internally remembers whether this field is packed. + * @type {boolean|null} + * @private + */ + this._packed = null; + + /** + * Comment for this field. + * @type {string|null} + */ + this.comment = comment; +} + +/** + * Determines whether this field is packed. Only relevant when repeated and working with proto2. + * @name Field#packed + * @type {boolean} + * @readonly + */ +Object.defineProperty(Field.prototype, "packed", { + get: function() { + // defaults to packed=true if not explicity set to false + if (this._packed === null) + this._packed = this.getOption("packed") !== false; + return this._packed; + } +}); + +/** + * @override + */ +Field.prototype.setOption = function setOption(name, value, ifNotSet) { + if (name === "packed") // clear cached before setting + this._packed = null; + return ReflectionObject.prototype.setOption.call(this, name, value, ifNotSet); +}; + +/** + * Field descriptor. + * @interface IField + * @property {string} [rule="optional"] Field rule + * @property {string} type Field type + * @property {number} id Field id + * @property {Object.} [options] Field options + */ + +/** + * Extension field descriptor. + * @interface IExtensionField + * @extends IField + * @property {string} extend Extended type + */ + +/** + * Converts this field to a field descriptor. + * @param {IToJSONOptions} [toJSONOptions] JSON conversion options + * @returns {IField} Field descriptor + */ +Field.prototype.toJSON = function toJSON(toJSONOptions) { + var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false; + return util.toObject([ + "rule" , this.rule !== "optional" && this.rule || undefined, + "type" , this.type, + "id" , this.id, + "extend" , this.extend, + "options" , this.options, + "comment" , keepComments ? this.comment : undefined + ]); +}; + +/** + * Resolves this field's type references. + * @returns {Field} `this` + * @throws {Error} If any reference cannot be resolved + */ +Field.prototype.resolve = function resolve() { + + if (this.resolved) + return this; + + if ((this.typeDefault = types.defaults[this.type]) === undefined) { // if not a basic type, resolve it + this.resolvedType = (this.declaringField ? this.declaringField.parent : this.parent).lookupTypeOrEnum(this.type); + if (this.resolvedType instanceof Type) + this.typeDefault = null; + else // instanceof Enum + this.typeDefault = this.resolvedType.values[Object.keys(this.resolvedType.values)[0]]; // first defined + } + + // use explicitly set default value if present + if (this.options && this.options["default"] != null) { + this.typeDefault = this.options["default"]; + if (this.resolvedType instanceof Enum && typeof this.typeDefault === "string") + this.typeDefault = this.resolvedType.values[this.typeDefault]; + } + + // remove unnecessary options + if (this.options) { + if (this.options.packed === true || this.options.packed !== undefined && this.resolvedType && !(this.resolvedType instanceof Enum)) + delete this.options.packed; + if (!Object.keys(this.options).length) + this.options = undefined; + } + + // convert to internal data type if necesssary + if (this.long) { + this.typeDefault = util.Long.fromNumber(this.typeDefault, this.type.charAt(0) === "u"); + + /* istanbul ignore else */ + if (Object.freeze) + Object.freeze(this.typeDefault); // long instances are meant to be immutable anyway (i.e. use small int cache that even requires it) + + } else if (this.bytes && typeof this.typeDefault === "string") { + var buf; + if (util.base64.test(this.typeDefault)) + util.base64.decode(this.typeDefault, buf = util.newBuffer(util.base64.length(this.typeDefault)), 0); + else + util.utf8.write(this.typeDefault, buf = util.newBuffer(util.utf8.length(this.typeDefault)), 0); + this.typeDefault = buf; + } + + // take special care of maps and repeated fields + if (this.map) + this.defaultValue = util.emptyObject; + else if (this.repeated) + this.defaultValue = util.emptyArray; + else + this.defaultValue = this.typeDefault; + + // ensure proper value on prototype + if (this.parent instanceof Type) + this.parent.ctor.prototype[this.name] = this.defaultValue; + + return ReflectionObject.prototype.resolve.call(this); +}; + +/** + * Decorator function as returned by {@link Field.d} and {@link MapField.d} (TypeScript). + * @typedef FieldDecorator + * @type {function} + * @param {Object} prototype Target prototype + * @param {string} fieldName Field name + * @returns {undefined} + */ + +/** + * Field decorator (TypeScript). + * @name Field.d + * @function + * @param {number} fieldId Field id + * @param {"double"|"float"|"int32"|"uint32"|"sint32"|"fixed32"|"sfixed32"|"int64"|"uint64"|"sint64"|"fixed64"|"sfixed64"|"string"|"bool"|"bytes"|Object} fieldType Field type + * @param {"optional"|"required"|"repeated"} [fieldRule="optional"] Field rule + * @param {T} [defaultValue] Default value + * @returns {FieldDecorator} Decorator function + * @template T extends number | number[] | Long | Long[] | string | string[] | boolean | boolean[] | Uint8Array | Uint8Array[] | Buffer | Buffer[] + */ +Field.d = function decorateField(fieldId, fieldType, fieldRule, defaultValue) { + + // submessage: decorate the submessage and use its name as the type + if (typeof fieldType === "function") + fieldType = util.decorateType(fieldType).name; + + // enum reference: create a reflected copy of the enum and keep reuseing it + else if (fieldType && typeof fieldType === "object") + fieldType = util.decorateEnum(fieldType).name; + + return function fieldDecorator(prototype, fieldName) { + util.decorateType(prototype.constructor) + .add(new Field(fieldName, fieldId, fieldType, fieldRule, { "default": defaultValue })); + }; +}; + +/** + * Field decorator (TypeScript). + * @name Field.d + * @function + * @param {number} fieldId Field id + * @param {Constructor|string} fieldType Field type + * @param {"optional"|"required"|"repeated"} [fieldRule="optional"] Field rule + * @returns {FieldDecorator} Decorator function + * @template T extends Message + * @variation 2 + */ +// like Field.d but without a default value + +// Sets up cyclic dependencies (called in index-light) +Field._configure = function configure(Type_) { + Type = Type_; +}; + + +/***/ }), + +/***/ "./node_modules/protobufjs/src/index-light.js": +/*!****************************************************!*\ + !*** ./node_modules/protobufjs/src/index-light.js ***! + \****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var protobuf = module.exports = __webpack_require__(/*! ./index-minimal */ "./node_modules/protobufjs/src/index-minimal.js"); + +protobuf.build = "light"; + +/** + * A node-style callback as used by {@link load} and {@link Root#load}. + * @typedef LoadCallback + * @type {function} + * @param {Error|null} error Error, if any, otherwise `null` + * @param {Root} [root] Root, if there hasn't been an error + * @returns {undefined} + */ + +/** + * Loads one or multiple .proto or preprocessed .json files into a common root namespace and calls the callback. + * @param {string|string[]} filename One or multiple files to load + * @param {Root} root Root namespace, defaults to create a new one if omitted. + * @param {LoadCallback} callback Callback function + * @returns {undefined} + * @see {@link Root#load} + */ +function load(filename, root, callback) { + if (typeof root === "function") { + callback = root; + root = new protobuf.Root(); + } else if (!root) + root = new protobuf.Root(); + return root.load(filename, callback); +} + +/** + * Loads one or multiple .proto or preprocessed .json files into a common root namespace and calls the callback. + * @name load + * @function + * @param {string|string[]} filename One or multiple files to load + * @param {LoadCallback} callback Callback function + * @returns {undefined} + * @see {@link Root#load} + * @variation 2 + */ +// function load(filename:string, callback:LoadCallback):undefined + +/** + * Loads one or multiple .proto or preprocessed .json files into a common root namespace and returns a promise. + * @name load + * @function + * @param {string|string[]} filename One or multiple files to load + * @param {Root} [root] Root namespace, defaults to create a new one if omitted. + * @returns {Promise} Promise + * @see {@link Root#load} + * @variation 3 + */ +// function load(filename:string, [root:Root]):Promise + +protobuf.load = load; + +/** + * Synchronously loads one or multiple .proto or preprocessed .json files into a common root namespace (node only). + * @param {string|string[]} filename One or multiple files to load + * @param {Root} [root] Root namespace, defaults to create a new one if omitted. + * @returns {Root} Root namespace + * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid + * @see {@link Root#loadSync} + */ +function loadSync(filename, root) { + if (!root) + root = new protobuf.Root(); + return root.loadSync(filename); +} + +protobuf.loadSync = loadSync; + +// Serialization +protobuf.encoder = __webpack_require__(/*! ./encoder */ "./node_modules/protobufjs/src/encoder.js"); +protobuf.decoder = __webpack_require__(/*! ./decoder */ "./node_modules/protobufjs/src/decoder.js"); +protobuf.verifier = __webpack_require__(/*! ./verifier */ "./node_modules/protobufjs/src/verifier.js"); +protobuf.converter = __webpack_require__(/*! ./converter */ "./node_modules/protobufjs/src/converter.js"); + +// Reflection +protobuf.ReflectionObject = __webpack_require__(/*! ./object */ "./node_modules/protobufjs/src/object.js"); +protobuf.Namespace = __webpack_require__(/*! ./namespace */ "./node_modules/protobufjs/src/namespace.js"); +protobuf.Root = __webpack_require__(/*! ./root */ "./node_modules/protobufjs/src/root.js"); +protobuf.Enum = __webpack_require__(/*! ./enum */ "./node_modules/protobufjs/src/enum.js"); +protobuf.Type = __webpack_require__(/*! ./type */ "./node_modules/protobufjs/src/type.js"); +protobuf.Field = __webpack_require__(/*! ./field */ "./node_modules/protobufjs/src/field.js"); +protobuf.OneOf = __webpack_require__(/*! ./oneof */ "./node_modules/protobufjs/src/oneof.js"); +protobuf.MapField = __webpack_require__(/*! ./mapfield */ "./node_modules/protobufjs/src/mapfield.js"); +protobuf.Service = __webpack_require__(/*! ./service */ "./node_modules/protobufjs/src/service.js"); +protobuf.Method = __webpack_require__(/*! ./method */ "./node_modules/protobufjs/src/method.js"); + +// Runtime +protobuf.Message = __webpack_require__(/*! ./message */ "./node_modules/protobufjs/src/message.js"); +protobuf.wrappers = __webpack_require__(/*! ./wrappers */ "./node_modules/protobufjs/src/wrappers.js"); + +// Utility +protobuf.types = __webpack_require__(/*! ./types */ "./node_modules/protobufjs/src/types.js"); +protobuf.util = __webpack_require__(/*! ./util */ "./node_modules/protobufjs/src/util.js"); + +// Set up possibly cyclic reflection dependencies +protobuf.ReflectionObject._configure(protobuf.Root); +protobuf.Namespace._configure(protobuf.Type, protobuf.Service, protobuf.Enum); +protobuf.Root._configure(protobuf.Type); +protobuf.Field._configure(protobuf.Type); + + +/***/ }), + +/***/ "./node_modules/protobufjs/src/index-minimal.js": +/*!******************************************************!*\ + !*** ./node_modules/protobufjs/src/index-minimal.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var protobuf = exports; + +/** + * Build type, one of `"full"`, `"light"` or `"minimal"`. + * @name build + * @type {string} + * @const + */ +protobuf.build = "minimal"; + +// Serialization +protobuf.Writer = __webpack_require__(/*! ./writer */ "./node_modules/protobufjs/src/writer.js"); +protobuf.BufferWriter = __webpack_require__(/*! ./writer_buffer */ "./node_modules/protobufjs/src/writer_buffer.js"); +protobuf.Reader = __webpack_require__(/*! ./reader */ "./node_modules/protobufjs/src/reader.js"); +protobuf.BufferReader = __webpack_require__(/*! ./reader_buffer */ "./node_modules/protobufjs/src/reader_buffer.js"); + +// Utility +protobuf.util = __webpack_require__(/*! ./util/minimal */ "./node_modules/protobufjs/src/util/minimal.js"); +protobuf.rpc = __webpack_require__(/*! ./rpc */ "./node_modules/protobufjs/src/rpc.js"); +protobuf.roots = __webpack_require__(/*! ./roots */ "./node_modules/protobufjs/src/roots.js"); +protobuf.configure = configure; + +/* istanbul ignore next */ +/** + * Reconfigures the library according to the environment. + * @returns {undefined} + */ +function configure() { + protobuf.util._configure(); + protobuf.Writer._configure(protobuf.BufferWriter); + protobuf.Reader._configure(protobuf.BufferReader); +} + +// Set up buffer utility according to the environment +configure(); + + +/***/ }), + +/***/ "./node_modules/protobufjs/src/index.js": +/*!**********************************************!*\ + !*** ./node_modules/protobufjs/src/index.js ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var protobuf = module.exports = __webpack_require__(/*! ./index-light */ "./node_modules/protobufjs/src/index-light.js"); + +protobuf.build = "full"; + +// Parser +protobuf.tokenize = __webpack_require__(/*! ./tokenize */ "./node_modules/protobufjs/src/tokenize.js"); +protobuf.parse = __webpack_require__(/*! ./parse */ "./node_modules/protobufjs/src/parse.js"); +protobuf.common = __webpack_require__(/*! ./common */ "./node_modules/protobufjs/src/common.js"); + +// Configure parser +protobuf.Root._configure(protobuf.Type, protobuf.parse, protobuf.common); + + +/***/ }), + +/***/ "./node_modules/protobufjs/src/mapfield.js": +/*!*************************************************!*\ + !*** ./node_modules/protobufjs/src/mapfield.js ***! + \*************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +module.exports = MapField; + +// extends Field +var Field = __webpack_require__(/*! ./field */ "./node_modules/protobufjs/src/field.js"); +((MapField.prototype = Object.create(Field.prototype)).constructor = MapField).className = "MapField"; + +var types = __webpack_require__(/*! ./types */ "./node_modules/protobufjs/src/types.js"), + util = __webpack_require__(/*! ./util */ "./node_modules/protobufjs/src/util.js"); + +/** + * Constructs a new map field instance. + * @classdesc Reflected map field. + * @extends FieldBase + * @constructor + * @param {string} name Unique name within its namespace + * @param {number} id Unique id within its namespace + * @param {string} keyType Key type + * @param {string} type Value type + * @param {Object.} [options] Declared options + * @param {string} [comment] Comment associated with this field + */ +function MapField(name, id, keyType, type, options, comment) { + Field.call(this, name, id, type, undefined, undefined, options, comment); + + /* istanbul ignore if */ + if (!util.isString(keyType)) + throw TypeError("keyType must be a string"); + + /** + * Key type. + * @type {string} + */ + this.keyType = keyType; // toJSON, marker + + /** + * Resolved key type if not a basic type. + * @type {ReflectionObject|null} + */ + this.resolvedKeyType = null; + + // Overrides Field#map + this.map = true; +} + +/** + * Map field descriptor. + * @interface IMapField + * @extends {IField} + * @property {string} keyType Key type + */ + +/** + * Extension map field descriptor. + * @interface IExtensionMapField + * @extends IMapField + * @property {string} extend Extended type + */ + +/** + * Constructs a map field from a map field descriptor. + * @param {string} name Field name + * @param {IMapField} json Map field descriptor + * @returns {MapField} Created map field + * @throws {TypeError} If arguments are invalid + */ +MapField.fromJSON = function fromJSON(name, json) { + return new MapField(name, json.id, json.keyType, json.type, json.options, json.comment); +}; + +/** + * Converts this map field to a map field descriptor. + * @param {IToJSONOptions} [toJSONOptions] JSON conversion options + * @returns {IMapField} Map field descriptor + */ +MapField.prototype.toJSON = function toJSON(toJSONOptions) { + var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false; + return util.toObject([ + "keyType" , this.keyType, + "type" , this.type, + "id" , this.id, + "extend" , this.extend, + "options" , this.options, + "comment" , keepComments ? this.comment : undefined + ]); +}; + +/** + * @override + */ +MapField.prototype.resolve = function resolve() { + if (this.resolved) + return this; + + // Besides a value type, map fields have a key type that may be "any scalar type except for floating point types and bytes" + if (types.mapKey[this.keyType] === undefined) + throw Error("invalid key type: " + this.keyType); + + return Field.prototype.resolve.call(this); +}; + +/** + * Map field decorator (TypeScript). + * @name MapField.d + * @function + * @param {number} fieldId Field id + * @param {"int32"|"uint32"|"sint32"|"fixed32"|"sfixed32"|"int64"|"uint64"|"sint64"|"fixed64"|"sfixed64"|"bool"|"string"} fieldKeyType Field key type + * @param {"double"|"float"|"int32"|"uint32"|"sint32"|"fixed32"|"sfixed32"|"int64"|"uint64"|"sint64"|"fixed64"|"sfixed64"|"bool"|"string"|"bytes"|Object|Constructor<{}>} fieldValueType Field value type + * @returns {FieldDecorator} Decorator function + * @template T extends { [key: string]: number | Long | string | boolean | Uint8Array | Buffer | number[] | Message<{}> } + */ +MapField.d = function decorateMapField(fieldId, fieldKeyType, fieldValueType) { + + // submessage value: decorate the submessage and use its name as the type + if (typeof fieldValueType === "function") + fieldValueType = util.decorateType(fieldValueType).name; + + // enum reference value: create a reflected copy of the enum and keep reuseing it + else if (fieldValueType && typeof fieldValueType === "object") + fieldValueType = util.decorateEnum(fieldValueType).name; + + return function mapFieldDecorator(prototype, fieldName) { + util.decorateType(prototype.constructor) + .add(new MapField(fieldName, fieldId, fieldKeyType, fieldValueType)); + }; +}; + + +/***/ }), + +/***/ "./node_modules/protobufjs/src/message.js": +/*!************************************************!*\ + !*** ./node_modules/protobufjs/src/message.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +module.exports = Message; + +var util = __webpack_require__(/*! ./util/minimal */ "./node_modules/protobufjs/src/util/minimal.js"); + +/** + * Constructs a new message instance. + * @classdesc Abstract runtime message. + * @constructor + * @param {Properties} [properties] Properties to set + * @template T extends object = object + */ +function Message(properties) { + // not used internally + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + this[keys[i]] = properties[keys[i]]; +} + +/** + * Reference to the reflected type. + * @name Message.$type + * @type {Type} + * @readonly + */ + +/** + * Reference to the reflected type. + * @name Message#$type + * @type {Type} + * @readonly + */ + +/*eslint-disable valid-jsdoc*/ + +/** + * Creates a new message of this type using the specified properties. + * @param {Object.} [properties] Properties to set + * @returns {Message} Message instance + * @template T extends Message + * @this Constructor + */ +Message.create = function create(properties) { + return this.$type.create(properties); +}; + +/** + * Encodes a message of this type. + * @param {T|Object.} message Message to encode + * @param {Writer} [writer] Writer to use + * @returns {Writer} Writer + * @template T extends Message + * @this Constructor + */ +Message.encode = function encode(message, writer) { + return this.$type.encode(message, writer); +}; + +/** + * Encodes a message of this type preceeded by its length as a varint. + * @param {T|Object.} message Message to encode + * @param {Writer} [writer] Writer to use + * @returns {Writer} Writer + * @template T extends Message + * @this Constructor + */ +Message.encodeDelimited = function encodeDelimited(message, writer) { + return this.$type.encodeDelimited(message, writer); +}; + +/** + * Decodes a message of this type. + * @name Message.decode + * @function + * @param {Reader|Uint8Array} reader Reader or buffer to decode + * @returns {T} Decoded message + * @template T extends Message + * @this Constructor + */ +Message.decode = function decode(reader) { + return this.$type.decode(reader); +}; + +/** + * Decodes a message of this type preceeded by its length as a varint. + * @name Message.decodeDelimited + * @function + * @param {Reader|Uint8Array} reader Reader or buffer to decode + * @returns {T} Decoded message + * @template T extends Message + * @this Constructor + */ +Message.decodeDelimited = function decodeDelimited(reader) { + return this.$type.decodeDelimited(reader); +}; + +/** + * Verifies a message of this type. + * @name Message.verify + * @function + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ +Message.verify = function verify(message) { + return this.$type.verify(message); +}; + +/** + * Creates a new message of this type from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {T} Message instance + * @template T extends Message + * @this Constructor + */ +Message.fromObject = function fromObject(object) { + return this.$type.fromObject(object); +}; + +/** + * Creates a plain object from a message of this type. Also converts values to other types if specified. + * @param {T} message Message instance + * @param {IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + * @template T extends Message + * @this Constructor + */ +Message.toObject = function toObject(message, options) { + return this.$type.toObject(message, options); +}; + +/** + * Converts this message to JSON. + * @returns {Object.} JSON object + */ +Message.prototype.toJSON = function toJSON() { + return this.$type.toObject(this, util.toJSONOptions); +}; + +/*eslint-enable valid-jsdoc*/ + +/***/ }), + +/***/ "./node_modules/protobufjs/src/method.js": +/*!***********************************************!*\ + !*** ./node_modules/protobufjs/src/method.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +module.exports = Method; + +// extends ReflectionObject +var ReflectionObject = __webpack_require__(/*! ./object */ "./node_modules/protobufjs/src/object.js"); +((Method.prototype = Object.create(ReflectionObject.prototype)).constructor = Method).className = "Method"; + +var util = __webpack_require__(/*! ./util */ "./node_modules/protobufjs/src/util.js"); + +/** + * Constructs a new service method instance. + * @classdesc Reflected service method. + * @extends ReflectionObject + * @constructor + * @param {string} name Method name + * @param {string|undefined} type Method type, usually `"rpc"` + * @param {string} requestType Request message type + * @param {string} responseType Response message type + * @param {boolean|Object.} [requestStream] Whether the request is streamed + * @param {boolean|Object.} [responseStream] Whether the response is streamed + * @param {Object.} [options] Declared options + * @param {string} [comment] The comment for this method + * @param {Object.} [parsedOptions] Declared options, properly parsed into an object + */ +function Method(name, type, requestType, responseType, requestStream, responseStream, options, comment, parsedOptions) { + + /* istanbul ignore next */ + if (util.isObject(requestStream)) { + options = requestStream; + requestStream = responseStream = undefined; + } else if (util.isObject(responseStream)) { + options = responseStream; + responseStream = undefined; + } + + /* istanbul ignore if */ + if (!(type === undefined || util.isString(type))) + throw TypeError("type must be a string"); + + /* istanbul ignore if */ + if (!util.isString(requestType)) + throw TypeError("requestType must be a string"); + + /* istanbul ignore if */ + if (!util.isString(responseType)) + throw TypeError("responseType must be a string"); + + ReflectionObject.call(this, name, options); + + /** + * Method type. + * @type {string} + */ + this.type = type || "rpc"; // toJSON + + /** + * Request type. + * @type {string} + */ + this.requestType = requestType; // toJSON, marker + + /** + * Whether requests are streamed or not. + * @type {boolean|undefined} + */ + this.requestStream = requestStream ? true : undefined; // toJSON + + /** + * Response type. + * @type {string} + */ + this.responseType = responseType; // toJSON + + /** + * Whether responses are streamed or not. + * @type {boolean|undefined} + */ + this.responseStream = responseStream ? true : undefined; // toJSON + + /** + * Resolved request type. + * @type {Type|null} + */ + this.resolvedRequestType = null; + + /** + * Resolved response type. + * @type {Type|null} + */ + this.resolvedResponseType = null; + + /** + * Comment for this method + * @type {string|null} + */ + this.comment = comment; + + /** + * Options properly parsed into an object + */ + this.parsedOptions = parsedOptions; +} + +/** + * Method descriptor. + * @interface IMethod + * @property {string} [type="rpc"] Method type + * @property {string} requestType Request type + * @property {string} responseType Response type + * @property {boolean} [requestStream=false] Whether requests are streamed + * @property {boolean} [responseStream=false] Whether responses are streamed + * @property {Object.} [options] Method options + * @property {string} comment Method comments + * @property {Object.} [parsedOptions] Method options properly parsed into an object + */ + +/** + * Constructs a method from a method descriptor. + * @param {string} name Method name + * @param {IMethod} json Method descriptor + * @returns {Method} Created method + * @throws {TypeError} If arguments are invalid + */ +Method.fromJSON = function fromJSON(name, json) { + return new Method(name, json.type, json.requestType, json.responseType, json.requestStream, json.responseStream, json.options, json.comment, json.parsedOptions); +}; + +/** + * Converts this method to a method descriptor. + * @param {IToJSONOptions} [toJSONOptions] JSON conversion options + * @returns {IMethod} Method descriptor + */ +Method.prototype.toJSON = function toJSON(toJSONOptions) { + var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false; + return util.toObject([ + "type" , this.type !== "rpc" && /* istanbul ignore next */ this.type || undefined, + "requestType" , this.requestType, + "requestStream" , this.requestStream, + "responseType" , this.responseType, + "responseStream" , this.responseStream, + "options" , this.options, + "comment" , keepComments ? this.comment : undefined, + "parsedOptions" , this.parsedOptions, + ]); +}; + +/** + * @override + */ +Method.prototype.resolve = function resolve() { + + /* istanbul ignore if */ + if (this.resolved) + return this; + + this.resolvedRequestType = this.parent.lookupType(this.requestType); + this.resolvedResponseType = this.parent.lookupType(this.responseType); + + return ReflectionObject.prototype.resolve.call(this); +}; + + +/***/ }), + +/***/ "./node_modules/protobufjs/src/namespace.js": +/*!**************************************************!*\ + !*** ./node_modules/protobufjs/src/namespace.js ***! + \**************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +module.exports = Namespace; + +// extends ReflectionObject +var ReflectionObject = __webpack_require__(/*! ./object */ "./node_modules/protobufjs/src/object.js"); +((Namespace.prototype = Object.create(ReflectionObject.prototype)).constructor = Namespace).className = "Namespace"; + +var Field = __webpack_require__(/*! ./field */ "./node_modules/protobufjs/src/field.js"), + util = __webpack_require__(/*! ./util */ "./node_modules/protobufjs/src/util.js"); + +var Type, // cyclic + Service, + Enum; + +/** + * Constructs a new namespace instance. + * @name Namespace + * @classdesc Reflected namespace. + * @extends NamespaceBase + * @constructor + * @param {string} name Namespace name + * @param {Object.} [options] Declared options + */ + +/** + * Constructs a namespace from JSON. + * @memberof Namespace + * @function + * @param {string} name Namespace name + * @param {Object.} json JSON object + * @returns {Namespace} Created namespace + * @throws {TypeError} If arguments are invalid + */ +Namespace.fromJSON = function fromJSON(name, json) { + return new Namespace(name, json.options).addJSON(json.nested); +}; + +/** + * Converts an array of reflection objects to JSON. + * @memberof Namespace + * @param {ReflectionObject[]} array Object array + * @param {IToJSONOptions} [toJSONOptions] JSON conversion options + * @returns {Object.|undefined} JSON object or `undefined` when array is empty + */ +function arrayToJSON(array, toJSONOptions) { + if (!(array && array.length)) + return undefined; + var obj = {}; + for (var i = 0; i < array.length; ++i) + obj[array[i].name] = array[i].toJSON(toJSONOptions); + return obj; +} + +Namespace.arrayToJSON = arrayToJSON; + +/** + * Tests if the specified id is reserved. + * @param {Array.|undefined} reserved Array of reserved ranges and names + * @param {number} id Id to test + * @returns {boolean} `true` if reserved, otherwise `false` + */ +Namespace.isReservedId = function isReservedId(reserved, id) { + if (reserved) + for (var i = 0; i < reserved.length; ++i) + if (typeof reserved[i] !== "string" && reserved[i][0] <= id && reserved[i][1] > id) + return true; + return false; +}; + +/** + * Tests if the specified name is reserved. + * @param {Array.|undefined} reserved Array of reserved ranges and names + * @param {string} name Name to test + * @returns {boolean} `true` if reserved, otherwise `false` + */ +Namespace.isReservedName = function isReservedName(reserved, name) { + if (reserved) + for (var i = 0; i < reserved.length; ++i) + if (reserved[i] === name) + return true; + return false; +}; + +/** + * Not an actual constructor. Use {@link Namespace} instead. + * @classdesc Base class of all reflection objects containing nested objects. This is not an actual class but here for the sake of having consistent type definitions. + * @exports NamespaceBase + * @extends ReflectionObject + * @abstract + * @constructor + * @param {string} name Namespace name + * @param {Object.} [options] Declared options + * @see {@link Namespace} + */ +function Namespace(name, options) { + ReflectionObject.call(this, name, options); + + /** + * Nested objects by name. + * @type {Object.|undefined} + */ + this.nested = undefined; // toJSON + + /** + * Cached nested objects as an array. + * @type {ReflectionObject[]|null} + * @private + */ + this._nestedArray = null; +} + +function clearCache(namespace) { + namespace._nestedArray = null; + return namespace; +} + +/** + * Nested objects of this namespace as an array for iteration. + * @name NamespaceBase#nestedArray + * @type {ReflectionObject[]} + * @readonly + */ +Object.defineProperty(Namespace.prototype, "nestedArray", { + get: function() { + return this._nestedArray || (this._nestedArray = util.toArray(this.nested)); + } +}); + +/** + * Namespace descriptor. + * @interface INamespace + * @property {Object.} [options] Namespace options + * @property {Object.} [nested] Nested object descriptors + */ + +/** + * Any extension field descriptor. + * @typedef AnyExtensionField + * @type {IExtensionField|IExtensionMapField} + */ + +/** + * Any nested object descriptor. + * @typedef AnyNestedObject + * @type {IEnum|IType|IService|AnyExtensionField|INamespace} + */ +// ^ BEWARE: VSCode hangs forever when using more than 5 types (that's why AnyExtensionField exists in the first place) + +/** + * Converts this namespace to a namespace descriptor. + * @param {IToJSONOptions} [toJSONOptions] JSON conversion options + * @returns {INamespace} Namespace descriptor + */ +Namespace.prototype.toJSON = function toJSON(toJSONOptions) { + return util.toObject([ + "options" , this.options, + "nested" , arrayToJSON(this.nestedArray, toJSONOptions) + ]); +}; + +/** + * Adds nested objects to this namespace from nested object descriptors. + * @param {Object.} nestedJson Any nested object descriptors + * @returns {Namespace} `this` + */ +Namespace.prototype.addJSON = function addJSON(nestedJson) { + var ns = this; + /* istanbul ignore else */ + if (nestedJson) { + for (var names = Object.keys(nestedJson), i = 0, nested; i < names.length; ++i) { + nested = nestedJson[names[i]]; + ns.add( // most to least likely + ( nested.fields !== undefined + ? Type.fromJSON + : nested.values !== undefined + ? Enum.fromJSON + : nested.methods !== undefined + ? Service.fromJSON + : nested.id !== undefined + ? Field.fromJSON + : Namespace.fromJSON )(names[i], nested) + ); + } + } + return this; +}; + +/** + * Gets the nested object of the specified name. + * @param {string} name Nested object name + * @returns {ReflectionObject|null} The reflection object or `null` if it doesn't exist + */ +Namespace.prototype.get = function get(name) { + return this.nested && this.nested[name] + || null; +}; + +/** + * Gets the values of the nested {@link Enum|enum} of the specified name. + * This methods differs from {@link Namespace#get|get} in that it returns an enum's values directly and throws instead of returning `null`. + * @param {string} name Nested enum name + * @returns {Object.} Enum values + * @throws {Error} If there is no such enum + */ +Namespace.prototype.getEnum = function getEnum(name) { + if (this.nested && this.nested[name] instanceof Enum) + return this.nested[name].values; + throw Error("no such enum: " + name); +}; + +/** + * Adds a nested object to this namespace. + * @param {ReflectionObject} object Nested object to add + * @returns {Namespace} `this` + * @throws {TypeError} If arguments are invalid + * @throws {Error} If there is already a nested object with this name + */ +Namespace.prototype.add = function add(object) { + + if (!(object instanceof Field && object.extend !== undefined || object instanceof Type || object instanceof Enum || object instanceof Service || object instanceof Namespace)) + throw TypeError("object must be a valid nested object"); + + if (!this.nested) + this.nested = {}; + else { + var prev = this.get(object.name); + if (prev) { + if (prev instanceof Namespace && object instanceof Namespace && !(prev instanceof Type || prev instanceof Service)) { + // replace plain namespace but keep existing nested elements and options + var nested = prev.nestedArray; + for (var i = 0; i < nested.length; ++i) + object.add(nested[i]); + this.remove(prev); + if (!this.nested) + this.nested = {}; + object.setOptions(prev.options, true); + + } else + throw Error("duplicate name '" + object.name + "' in " + this); + } + } + this.nested[object.name] = object; + object.onAdd(this); + return clearCache(this); +}; + +/** + * Removes a nested object from this namespace. + * @param {ReflectionObject} object Nested object to remove + * @returns {Namespace} `this` + * @throws {TypeError} If arguments are invalid + * @throws {Error} If `object` is not a member of this namespace + */ +Namespace.prototype.remove = function remove(object) { + + if (!(object instanceof ReflectionObject)) + throw TypeError("object must be a ReflectionObject"); + if (object.parent !== this) + throw Error(object + " is not a member of " + this); + + delete this.nested[object.name]; + if (!Object.keys(this.nested).length) + this.nested = undefined; + + object.onRemove(this); + return clearCache(this); +}; + +/** + * Defines additial namespaces within this one if not yet existing. + * @param {string|string[]} path Path to create + * @param {*} [json] Nested types to create from JSON + * @returns {Namespace} Pointer to the last namespace created or `this` if path is empty + */ +Namespace.prototype.define = function define(path, json) { + + if (util.isString(path)) + path = path.split("."); + else if (!Array.isArray(path)) + throw TypeError("illegal path"); + if (path && path.length && path[0] === "") + throw Error("path must be relative"); + + var ptr = this; + while (path.length > 0) { + var part = path.shift(); + if (ptr.nested && ptr.nested[part]) { + ptr = ptr.nested[part]; + if (!(ptr instanceof Namespace)) + throw Error("path conflicts with non-namespace objects"); + } else + ptr.add(ptr = new Namespace(part)); + } + if (json) + ptr.addJSON(json); + return ptr; +}; + +/** + * Resolves this namespace's and all its nested objects' type references. Useful to validate a reflection tree, but comes at a cost. + * @returns {Namespace} `this` + */ +Namespace.prototype.resolveAll = function resolveAll() { + var nested = this.nestedArray, i = 0; + while (i < nested.length) + if (nested[i] instanceof Namespace) + nested[i++].resolveAll(); + else + nested[i++].resolve(); + return this.resolve(); +}; + +/** + * Recursively looks up the reflection object matching the specified path in the scope of this namespace. + * @param {string|string[]} path Path to look up + * @param {*|Array.<*>} filterTypes Filter types, any combination of the constructors of `protobuf.Type`, `protobuf.Enum`, `protobuf.Service` etc. + * @param {boolean} [parentAlreadyChecked=false] If known, whether the parent has already been checked + * @returns {ReflectionObject|null} Looked up object or `null` if none could be found + */ +Namespace.prototype.lookup = function lookup(path, filterTypes, parentAlreadyChecked) { + + /* istanbul ignore next */ + if (typeof filterTypes === "boolean") { + parentAlreadyChecked = filterTypes; + filterTypes = undefined; + } else if (filterTypes && !Array.isArray(filterTypes)) + filterTypes = [ filterTypes ]; + + if (util.isString(path) && path.length) { + if (path === ".") + return this.root; + path = path.split("."); + } else if (!path.length) + return this; + + // Start at root if path is absolute + if (path[0] === "") + return this.root.lookup(path.slice(1), filterTypes); + + // Test if the first part matches any nested object, and if so, traverse if path contains more + var found = this.get(path[0]); + if (found) { + if (path.length === 1) { + if (!filterTypes || filterTypes.indexOf(found.constructor) > -1) + return found; + } else if (found instanceof Namespace && (found = found.lookup(path.slice(1), filterTypes, true))) + return found; + + // Otherwise try each nested namespace + } else + for (var i = 0; i < this.nestedArray.length; ++i) + if (this._nestedArray[i] instanceof Namespace && (found = this._nestedArray[i].lookup(path, filterTypes, true))) + return found; + + // If there hasn't been a match, try again at the parent + if (this.parent === null || parentAlreadyChecked) + return null; + return this.parent.lookup(path, filterTypes); +}; + +/** + * Looks up the reflection object at the specified path, relative to this namespace. + * @name NamespaceBase#lookup + * @function + * @param {string|string[]} path Path to look up + * @param {boolean} [parentAlreadyChecked=false] Whether the parent has already been checked + * @returns {ReflectionObject|null} Looked up object or `null` if none could be found + * @variation 2 + */ +// lookup(path: string, [parentAlreadyChecked: boolean]) + +/** + * Looks up the {@link Type|type} at the specified path, relative to this namespace. + * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`. + * @param {string|string[]} path Path to look up + * @returns {Type} Looked up type + * @throws {Error} If `path` does not point to a type + */ +Namespace.prototype.lookupType = function lookupType(path) { + var found = this.lookup(path, [ Type ]); + if (!found) + throw Error("no such type: " + path); + return found; +}; + +/** + * Looks up the values of the {@link Enum|enum} at the specified path, relative to this namespace. + * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`. + * @param {string|string[]} path Path to look up + * @returns {Enum} Looked up enum + * @throws {Error} If `path` does not point to an enum + */ +Namespace.prototype.lookupEnum = function lookupEnum(path) { + var found = this.lookup(path, [ Enum ]); + if (!found) + throw Error("no such Enum '" + path + "' in " + this); + return found; +}; + +/** + * Looks up the {@link Type|type} or {@link Enum|enum} at the specified path, relative to this namespace. + * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`. + * @param {string|string[]} path Path to look up + * @returns {Type} Looked up type or enum + * @throws {Error} If `path` does not point to a type or enum + */ +Namespace.prototype.lookupTypeOrEnum = function lookupTypeOrEnum(path) { + var found = this.lookup(path, [ Type, Enum ]); + if (!found) + throw Error("no such Type or Enum '" + path + "' in " + this); + return found; +}; + +/** + * Looks up the {@link Service|service} at the specified path, relative to this namespace. + * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`. + * @param {string|string[]} path Path to look up + * @returns {Service} Looked up service + * @throws {Error} If `path` does not point to a service + */ +Namespace.prototype.lookupService = function lookupService(path) { + var found = this.lookup(path, [ Service ]); + if (!found) + throw Error("no such Service '" + path + "' in " + this); + return found; +}; + +// Sets up cyclic dependencies (called in index-light) +Namespace._configure = function(Type_, Service_, Enum_) { + Type = Type_; + Service = Service_; + Enum = Enum_; +}; + + +/***/ }), + +/***/ "./node_modules/protobufjs/src/object.js": +/*!***********************************************!*\ + !*** ./node_modules/protobufjs/src/object.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +module.exports = ReflectionObject; + +ReflectionObject.className = "ReflectionObject"; + +var util = __webpack_require__(/*! ./util */ "./node_modules/protobufjs/src/util.js"); + +var Root; // cyclic + +/** + * Constructs a new reflection object instance. + * @classdesc Base class of all reflection objects. + * @constructor + * @param {string} name Object name + * @param {Object.} [options] Declared options + * @abstract + */ +function ReflectionObject(name, options) { + + if (!util.isString(name)) + throw TypeError("name must be a string"); + + if (options && !util.isObject(options)) + throw TypeError("options must be an object"); + + /** + * Options. + * @type {Object.|undefined} + */ + this.options = options; // toJSON + + /** + * Parsed Options. + * @type {Array.>|undefined} + */ + this.parsedOptions = null; + + /** + * Unique name within its namespace. + * @type {string} + */ + this.name = name; + + /** + * Parent namespace. + * @type {Namespace|null} + */ + this.parent = null; + + /** + * Whether already resolved or not. + * @type {boolean} + */ + this.resolved = false; + + /** + * Comment text, if any. + * @type {string|null} + */ + this.comment = null; + + /** + * Defining file name. + * @type {string|null} + */ + this.filename = null; +} + +Object.defineProperties(ReflectionObject.prototype, { + + /** + * Reference to the root namespace. + * @name ReflectionObject#root + * @type {Root} + * @readonly + */ + root: { + get: function() { + var ptr = this; + while (ptr.parent !== null) + ptr = ptr.parent; + return ptr; + } + }, + + /** + * Full name including leading dot. + * @name ReflectionObject#fullName + * @type {string} + * @readonly + */ + fullName: { + get: function() { + var path = [ this.name ], + ptr = this.parent; + while (ptr) { + path.unshift(ptr.name); + ptr = ptr.parent; + } + return path.join("."); + } + } +}); + +/** + * Converts this reflection object to its descriptor representation. + * @returns {Object.} Descriptor + * @abstract + */ +ReflectionObject.prototype.toJSON = /* istanbul ignore next */ function toJSON() { + throw Error(); // not implemented, shouldn't happen +}; + +/** + * Called when this object is added to a parent. + * @param {ReflectionObject} parent Parent added to + * @returns {undefined} + */ +ReflectionObject.prototype.onAdd = function onAdd(parent) { + if (this.parent && this.parent !== parent) + this.parent.remove(this); + this.parent = parent; + this.resolved = false; + var root = parent.root; + if (root instanceof Root) + root._handleAdd(this); +}; + +/** + * Called when this object is removed from a parent. + * @param {ReflectionObject} parent Parent removed from + * @returns {undefined} + */ +ReflectionObject.prototype.onRemove = function onRemove(parent) { + var root = parent.root; + if (root instanceof Root) + root._handleRemove(this); + this.parent = null; + this.resolved = false; +}; + +/** + * Resolves this objects type references. + * @returns {ReflectionObject} `this` + */ +ReflectionObject.prototype.resolve = function resolve() { + if (this.resolved) + return this; + if (this.root instanceof Root) + this.resolved = true; // only if part of a root + return this; +}; + +/** + * Gets an option value. + * @param {string} name Option name + * @returns {*} Option value or `undefined` if not set + */ +ReflectionObject.prototype.getOption = function getOption(name) { + if (this.options) + return this.options[name]; + return undefined; +}; + +/** + * Sets an option. + * @param {string} name Option name + * @param {*} value Option value + * @param {boolean} [ifNotSet] Sets the option only if it isn't currently set + * @returns {ReflectionObject} `this` + */ +ReflectionObject.prototype.setOption = function setOption(name, value, ifNotSet) { + if (!ifNotSet || !this.options || this.options[name] === undefined) + (this.options || (this.options = {}))[name] = value; + return this; +}; + +/** + * Sets a parsed option. + * @param {string} name parsed Option name + * @param {*} value Option value + * @param {string} propName dot '.' delimited full path of property within the option to set. if undefined\empty, will add a new option with that value + * @returns {ReflectionObject} `this` + */ +ReflectionObject.prototype.setParsedOption = function setParsedOption(name, value, propName) { + if (!this.parsedOptions) { + this.parsedOptions = []; + } + var parsedOptions = this.parsedOptions; + if (propName) { + // If setting a sub property of an option then try to merge it + // with an existing option + var opt = parsedOptions.find(function (opt) { + return Object.prototype.hasOwnProperty.call(opt, name); + }); + if (opt) { + // If we found an existing option - just merge the property value + var newValue = opt[name]; + util.setProperty(newValue, propName, value); + } else { + // otherwise, create a new option, set it's property and add it to the list + opt = {}; + opt[name] = util.setProperty({}, propName, value); + parsedOptions.push(opt); + } + } else { + // Always create a new option when setting the value of the option itself + var newOpt = {}; + newOpt[name] = value; + parsedOptions.push(newOpt); + } + return this; +}; + +/** + * Sets multiple options. + * @param {Object.} options Options to set + * @param {boolean} [ifNotSet] Sets an option only if it isn't currently set + * @returns {ReflectionObject} `this` + */ +ReflectionObject.prototype.setOptions = function setOptions(options, ifNotSet) { + if (options) + for (var keys = Object.keys(options), i = 0; i < keys.length; ++i) + this.setOption(keys[i], options[keys[i]], ifNotSet); + return this; +}; + +/** + * Converts this instance to its string representation. + * @returns {string} Class name[, space, full name] + */ +ReflectionObject.prototype.toString = function toString() { + var className = this.constructor.className, + fullName = this.fullName; + if (fullName.length) + return className + " " + fullName; + return className; +}; + +// Sets up cyclic dependencies (called in index-light) +ReflectionObject._configure = function(Root_) { + Root = Root_; +}; + + +/***/ }), + +/***/ "./node_modules/protobufjs/src/oneof.js": +/*!**********************************************!*\ + !*** ./node_modules/protobufjs/src/oneof.js ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +module.exports = OneOf; + +// extends ReflectionObject +var ReflectionObject = __webpack_require__(/*! ./object */ "./node_modules/protobufjs/src/object.js"); +((OneOf.prototype = Object.create(ReflectionObject.prototype)).constructor = OneOf).className = "OneOf"; + +var Field = __webpack_require__(/*! ./field */ "./node_modules/protobufjs/src/field.js"), + util = __webpack_require__(/*! ./util */ "./node_modules/protobufjs/src/util.js"); + +/** + * Constructs a new oneof instance. + * @classdesc Reflected oneof. + * @extends ReflectionObject + * @constructor + * @param {string} name Oneof name + * @param {string[]|Object.} [fieldNames] Field names + * @param {Object.} [options] Declared options + * @param {string} [comment] Comment associated with this field + */ +function OneOf(name, fieldNames, options, comment) { + if (!Array.isArray(fieldNames)) { + options = fieldNames; + fieldNames = undefined; + } + ReflectionObject.call(this, name, options); + + /* istanbul ignore if */ + if (!(fieldNames === undefined || Array.isArray(fieldNames))) + throw TypeError("fieldNames must be an Array"); + + /** + * Field names that belong to this oneof. + * @type {string[]} + */ + this.oneof = fieldNames || []; // toJSON, marker + + /** + * Fields that belong to this oneof as an array for iteration. + * @type {Field[]} + * @readonly + */ + this.fieldsArray = []; // declared readonly for conformance, possibly not yet added to parent + + /** + * Comment for this field. + * @type {string|null} + */ + this.comment = comment; +} + +/** + * Oneof descriptor. + * @interface IOneOf + * @property {Array.} oneof Oneof field names + * @property {Object.} [options] Oneof options + */ + +/** + * Constructs a oneof from a oneof descriptor. + * @param {string} name Oneof name + * @param {IOneOf} json Oneof descriptor + * @returns {OneOf} Created oneof + * @throws {TypeError} If arguments are invalid + */ +OneOf.fromJSON = function fromJSON(name, json) { + return new OneOf(name, json.oneof, json.options, json.comment); +}; + +/** + * Converts this oneof to a oneof descriptor. + * @param {IToJSONOptions} [toJSONOptions] JSON conversion options + * @returns {IOneOf} Oneof descriptor + */ +OneOf.prototype.toJSON = function toJSON(toJSONOptions) { + var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false; + return util.toObject([ + "options" , this.options, + "oneof" , this.oneof, + "comment" , keepComments ? this.comment : undefined + ]); +}; + +/** + * Adds the fields of the specified oneof to the parent if not already done so. + * @param {OneOf} oneof The oneof + * @returns {undefined} + * @inner + * @ignore + */ +function addFieldsToParent(oneof) { + if (oneof.parent) + for (var i = 0; i < oneof.fieldsArray.length; ++i) + if (!oneof.fieldsArray[i].parent) + oneof.parent.add(oneof.fieldsArray[i]); +} + +/** + * Adds a field to this oneof and removes it from its current parent, if any. + * @param {Field} field Field to add + * @returns {OneOf} `this` + */ +OneOf.prototype.add = function add(field) { + + /* istanbul ignore if */ + if (!(field instanceof Field)) + throw TypeError("field must be a Field"); + + if (field.parent && field.parent !== this.parent) + field.parent.remove(field); + this.oneof.push(field.name); + this.fieldsArray.push(field); + field.partOf = this; // field.parent remains null + addFieldsToParent(this); + return this; +}; + +/** + * Removes a field from this oneof and puts it back to the oneof's parent. + * @param {Field} field Field to remove + * @returns {OneOf} `this` + */ +OneOf.prototype.remove = function remove(field) { + + /* istanbul ignore if */ + if (!(field instanceof Field)) + throw TypeError("field must be a Field"); + + var index = this.fieldsArray.indexOf(field); + + /* istanbul ignore if */ + if (index < 0) + throw Error(field + " is not a member of " + this); + + this.fieldsArray.splice(index, 1); + index = this.oneof.indexOf(field.name); + + /* istanbul ignore else */ + if (index > -1) // theoretical + this.oneof.splice(index, 1); + + field.partOf = null; + return this; +}; + +/** + * @override + */ +OneOf.prototype.onAdd = function onAdd(parent) { + ReflectionObject.prototype.onAdd.call(this, parent); + var self = this; + // Collect present fields + for (var i = 0; i < this.oneof.length; ++i) { + var field = parent.get(this.oneof[i]); + if (field && !field.partOf) { + field.partOf = self; + self.fieldsArray.push(field); + } + } + // Add not yet present fields + addFieldsToParent(this); +}; + +/** + * @override + */ +OneOf.prototype.onRemove = function onRemove(parent) { + for (var i = 0, field; i < this.fieldsArray.length; ++i) + if ((field = this.fieldsArray[i]).parent) + field.parent.remove(field); + ReflectionObject.prototype.onRemove.call(this, parent); +}; + +/** + * Decorator function as returned by {@link OneOf.d} (TypeScript). + * @typedef OneOfDecorator + * @type {function} + * @param {Object} prototype Target prototype + * @param {string} oneofName OneOf name + * @returns {undefined} + */ + +/** + * OneOf decorator (TypeScript). + * @function + * @param {...string} fieldNames Field names + * @returns {OneOfDecorator} Decorator function + * @template T extends string + */ +OneOf.d = function decorateOneOf() { + var fieldNames = new Array(arguments.length), + index = 0; + while (index < arguments.length) + fieldNames[index] = arguments[index++]; + return function oneOfDecorator(prototype, oneofName) { + util.decorateType(prototype.constructor) + .add(new OneOf(oneofName, fieldNames)); + Object.defineProperty(prototype, oneofName, { + get: util.oneOfGetter(fieldNames), + set: util.oneOfSetter(fieldNames) + }); + }; +}; + + +/***/ }), + +/***/ "./node_modules/protobufjs/src/parse.js": +/*!**********************************************!*\ + !*** ./node_modules/protobufjs/src/parse.js ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +module.exports = parse; + +parse.filename = null; +parse.defaults = { keepCase: false }; + +var tokenize = __webpack_require__(/*! ./tokenize */ "./node_modules/protobufjs/src/tokenize.js"), + Root = __webpack_require__(/*! ./root */ "./node_modules/protobufjs/src/root.js"), + Type = __webpack_require__(/*! ./type */ "./node_modules/protobufjs/src/type.js"), + Field = __webpack_require__(/*! ./field */ "./node_modules/protobufjs/src/field.js"), + MapField = __webpack_require__(/*! ./mapfield */ "./node_modules/protobufjs/src/mapfield.js"), + OneOf = __webpack_require__(/*! ./oneof */ "./node_modules/protobufjs/src/oneof.js"), + Enum = __webpack_require__(/*! ./enum */ "./node_modules/protobufjs/src/enum.js"), + Service = __webpack_require__(/*! ./service */ "./node_modules/protobufjs/src/service.js"), + Method = __webpack_require__(/*! ./method */ "./node_modules/protobufjs/src/method.js"), + types = __webpack_require__(/*! ./types */ "./node_modules/protobufjs/src/types.js"), + util = __webpack_require__(/*! ./util */ "./node_modules/protobufjs/src/util.js"); + +var base10Re = /^[1-9][0-9]*$/, + base10NegRe = /^-?[1-9][0-9]*$/, + base16Re = /^0[x][0-9a-fA-F]+$/, + base16NegRe = /^-?0[x][0-9a-fA-F]+$/, + base8Re = /^0[0-7]+$/, + base8NegRe = /^-?0[0-7]+$/, + numberRe = /^(?![eE])[0-9]*(?:\.[0-9]*)?(?:[eE][+-]?[0-9]+)?$/, + nameRe = /^[a-zA-Z_][a-zA-Z_0-9]*$/, + typeRefRe = /^(?:\.?[a-zA-Z_][a-zA-Z_0-9]*)(?:\.[a-zA-Z_][a-zA-Z_0-9]*)*$/, + fqTypeRefRe = /^(?:\.[a-zA-Z_][a-zA-Z_0-9]*)+$/; + +/** + * Result object returned from {@link parse}. + * @interface IParserResult + * @property {string|undefined} package Package name, if declared + * @property {string[]|undefined} imports Imports, if any + * @property {string[]|undefined} weakImports Weak imports, if any + * @property {string|undefined} syntax Syntax, if specified (either `"proto2"` or `"proto3"`) + * @property {Root} root Populated root instance + */ + +/** + * Options modifying the behavior of {@link parse}. + * @interface IParseOptions + * @property {boolean} [keepCase=false] Keeps field casing instead of converting to camel case + * @property {boolean} [alternateCommentMode=false] Recognize double-slash comments in addition to doc-block comments. + * @property {boolean} [preferTrailingComment=false] Use trailing comment when both leading comment and trailing comment exist. + */ + +/** + * Options modifying the behavior of JSON serialization. + * @interface IToJSONOptions + * @property {boolean} [keepComments=false] Serializes comments. + */ + +/** + * Parses the given .proto source and returns an object with the parsed contents. + * @param {string} source Source contents + * @param {Root} root Root to populate + * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted. + * @returns {IParserResult} Parser result + * @property {string} filename=null Currently processing file name for error reporting, if known + * @property {IParseOptions} defaults Default {@link IParseOptions} + */ +function parse(source, root, options) { + /* eslint-disable callback-return */ + if (!(root instanceof Root)) { + options = root; + root = new Root(); + } + if (!options) + options = parse.defaults; + + var preferTrailingComment = options.preferTrailingComment || false; + var tn = tokenize(source, options.alternateCommentMode || false), + next = tn.next, + push = tn.push, + peek = tn.peek, + skip = tn.skip, + cmnt = tn.cmnt; + + var head = true, + pkg, + imports, + weakImports, + syntax, + isProto3 = false; + + var ptr = root; + + var applyCase = options.keepCase ? function(name) { return name; } : util.camelCase; + + /* istanbul ignore next */ + function illegal(token, name, insideTryCatch) { + var filename = parse.filename; + if (!insideTryCatch) + parse.filename = null; + return Error("illegal " + (name || "token") + " '" + token + "' (" + (filename ? filename + ", " : "") + "line " + tn.line + ")"); + } + + function readString() { + var values = [], + token; + do { + /* istanbul ignore if */ + if ((token = next()) !== "\"" && token !== "'") + throw illegal(token); + + values.push(next()); + skip(token); + token = peek(); + } while (token === "\"" || token === "'"); + return values.join(""); + } + + function readValue(acceptTypeRef) { + var token = next(); + switch (token) { + case "'": + case "\"": + push(token); + return readString(); + case "true": case "TRUE": + return true; + case "false": case "FALSE": + return false; + } + try { + return parseNumber(token, /* insideTryCatch */ true); + } catch (e) { + + /* istanbul ignore else */ + if (acceptTypeRef && typeRefRe.test(token)) + return token; + + /* istanbul ignore next */ + throw illegal(token, "value"); + } + } + + function readRanges(target, acceptStrings) { + var token, start; + do { + if (acceptStrings && ((token = peek()) === "\"" || token === "'")) + target.push(readString()); + else + target.push([ start = parseId(next()), skip("to", true) ? parseId(next()) : start ]); + } while (skip(",", true)); + skip(";"); + } + + function parseNumber(token, insideTryCatch) { + var sign = 1; + if (token.charAt(0) === "-") { + sign = -1; + token = token.substring(1); + } + switch (token) { + case "inf": case "INF": case "Inf": + return sign * Infinity; + case "nan": case "NAN": case "Nan": case "NaN": + return NaN; + case "0": + return 0; + } + if (base10Re.test(token)) + return sign * parseInt(token, 10); + if (base16Re.test(token)) + return sign * parseInt(token, 16); + if (base8Re.test(token)) + return sign * parseInt(token, 8); + + /* istanbul ignore else */ + if (numberRe.test(token)) + return sign * parseFloat(token); + + /* istanbul ignore next */ + throw illegal(token, "number", insideTryCatch); + } + + function parseId(token, acceptNegative) { + switch (token) { + case "max": case "MAX": case "Max": + return 536870911; + case "0": + return 0; + } + + /* istanbul ignore if */ + if (!acceptNegative && token.charAt(0) === "-") + throw illegal(token, "id"); + + if (base10NegRe.test(token)) + return parseInt(token, 10); + if (base16NegRe.test(token)) + return parseInt(token, 16); + + /* istanbul ignore else */ + if (base8NegRe.test(token)) + return parseInt(token, 8); + + /* istanbul ignore next */ + throw illegal(token, "id"); + } + + function parsePackage() { + + /* istanbul ignore if */ + if (pkg !== undefined) + throw illegal("package"); + + pkg = next(); + + /* istanbul ignore if */ + if (!typeRefRe.test(pkg)) + throw illegal(pkg, "name"); + + ptr = ptr.define(pkg); + skip(";"); + } + + function parseImport() { + var token = peek(); + var whichImports; + switch (token) { + case "weak": + whichImports = weakImports || (weakImports = []); + next(); + break; + case "public": + next(); + // eslint-disable-line no-fallthrough + default: + whichImports = imports || (imports = []); + break; + } + token = readString(); + skip(";"); + whichImports.push(token); + } + + function parseSyntax() { + skip("="); + syntax = readString(); + isProto3 = syntax === "proto3"; + + /* istanbul ignore if */ + if (!isProto3 && syntax !== "proto2") + throw illegal(syntax, "syntax"); + + skip(";"); + } + + function parseCommon(parent, token) { + switch (token) { + + case "option": + parseOption(parent, token); + skip(";"); + return true; + + case "message": + parseType(parent, token); + return true; + + case "enum": + parseEnum(parent, token); + return true; + + case "service": + parseService(parent, token); + return true; + + case "extend": + parseExtension(parent, token); + return true; + } + return false; + } + + function ifBlock(obj, fnIf, fnElse) { + var trailingLine = tn.line; + if (obj) { + if(typeof obj.comment !== "string") { + obj.comment = cmnt(); // try block-type comment + } + obj.filename = parse.filename; + } + if (skip("{", true)) { + var token; + while ((token = next()) !== "}") + fnIf(token); + skip(";", true); + } else { + if (fnElse) + fnElse(); + skip(";"); + if (obj && (typeof obj.comment !== "string" || preferTrailingComment)) + obj.comment = cmnt(trailingLine) || obj.comment; // try line-type comment + } + } + + function parseType(parent, token) { + + /* istanbul ignore if */ + if (!nameRe.test(token = next())) + throw illegal(token, "type name"); + + var type = new Type(token); + ifBlock(type, function parseType_block(token) { + if (parseCommon(type, token)) + return; + + switch (token) { + + case "map": + parseMapField(type, token); + break; + + case "required": + case "optional": + case "repeated": + parseField(type, token); + break; + + case "oneof": + parseOneOf(type, token); + break; + + case "extensions": + readRanges(type.extensions || (type.extensions = [])); + break; + + case "reserved": + readRanges(type.reserved || (type.reserved = []), true); + break; + + default: + /* istanbul ignore if */ + if (!isProto3 || !typeRefRe.test(token)) + throw illegal(token); + + push(token); + parseField(type, "optional"); + break; + } + }); + parent.add(type); + } + + function parseField(parent, rule, extend) { + var type = next(); + if (type === "group") { + parseGroup(parent, rule); + return; + } + + /* istanbul ignore if */ + if (!typeRefRe.test(type)) + throw illegal(type, "type"); + + var name = next(); + + /* istanbul ignore if */ + if (!nameRe.test(name)) + throw illegal(name, "name"); + + name = applyCase(name); + skip("="); + + var field = new Field(name, parseId(next()), type, rule, extend); + ifBlock(field, function parseField_block(token) { + + /* istanbul ignore else */ + if (token === "option") { + parseOption(field, token); + skip(";"); + } else + throw illegal(token); + + }, function parseField_line() { + parseInlineOptions(field); + }); + parent.add(field); + + // JSON defaults to packed=true if not set so we have to set packed=false explicity when + // parsing proto2 descriptors without the option, where applicable. This must be done for + // all known packable types and anything that could be an enum (= is not a basic type). + if (!isProto3 && field.repeated && (types.packed[type] !== undefined || types.basic[type] === undefined)) + field.setOption("packed", false, /* ifNotSet */ true); + } + + function parseGroup(parent, rule) { + var name = next(); + + /* istanbul ignore if */ + if (!nameRe.test(name)) + throw illegal(name, "name"); + + var fieldName = util.lcFirst(name); + if (name === fieldName) + name = util.ucFirst(name); + skip("="); + var id = parseId(next()); + var type = new Type(name); + type.group = true; + var field = new Field(fieldName, id, name, rule); + field.filename = parse.filename; + ifBlock(type, function parseGroup_block(token) { + switch (token) { + + case "option": + parseOption(type, token); + skip(";"); + break; + + case "required": + case "optional": + case "repeated": + parseField(type, token); + break; + + /* istanbul ignore next */ + default: + throw illegal(token); // there are no groups with proto3 semantics + } + }); + parent.add(type) + .add(field); + } + + function parseMapField(parent) { + skip("<"); + var keyType = next(); + + /* istanbul ignore if */ + if (types.mapKey[keyType] === undefined) + throw illegal(keyType, "type"); + + skip(","); + var valueType = next(); + + /* istanbul ignore if */ + if (!typeRefRe.test(valueType)) + throw illegal(valueType, "type"); + + skip(">"); + var name = next(); + + /* istanbul ignore if */ + if (!nameRe.test(name)) + throw illegal(name, "name"); + + skip("="); + var field = new MapField(applyCase(name), parseId(next()), keyType, valueType); + ifBlock(field, function parseMapField_block(token) { + + /* istanbul ignore else */ + if (token === "option") { + parseOption(field, token); + skip(";"); + } else + throw illegal(token); + + }, function parseMapField_line() { + parseInlineOptions(field); + }); + parent.add(field); + } + + function parseOneOf(parent, token) { + + /* istanbul ignore if */ + if (!nameRe.test(token = next())) + throw illegal(token, "name"); + + var oneof = new OneOf(applyCase(token)); + ifBlock(oneof, function parseOneOf_block(token) { + if (token === "option") { + parseOption(oneof, token); + skip(";"); + } else { + push(token); + parseField(oneof, "optional"); + } + }); + parent.add(oneof); + } + + function parseEnum(parent, token) { + + /* istanbul ignore if */ + if (!nameRe.test(token = next())) + throw illegal(token, "name"); + + var enm = new Enum(token); + ifBlock(enm, function parseEnum_block(token) { + switch(token) { + case "option": + parseOption(enm, token); + skip(";"); + break; + + case "reserved": + readRanges(enm.reserved || (enm.reserved = []), true); + break; + + default: + parseEnumValue(enm, token); + } + }); + parent.add(enm); + } + + function parseEnumValue(parent, token) { + + /* istanbul ignore if */ + if (!nameRe.test(token)) + throw illegal(token, "name"); + + skip("="); + var value = parseId(next(), true), + dummy = {}; + ifBlock(dummy, function parseEnumValue_block(token) { + + /* istanbul ignore else */ + if (token === "option") { + parseOption(dummy, token); // skip + skip(";"); + } else + throw illegal(token); + + }, function parseEnumValue_line() { + parseInlineOptions(dummy); // skip + }); + parent.add(token, value, dummy.comment); + } + + function parseOption(parent, token) { + var isCustom = skip("(", true); + + /* istanbul ignore if */ + if (!typeRefRe.test(token = next())) + throw illegal(token, "name"); + + var name = token; + var option = name; + var propName; + + if (isCustom) { + skip(")"); + name = "(" + name + ")"; + option = name; + token = peek(); + if (fqTypeRefRe.test(token)) { + propName = token.substr(1); //remove '.' before property name + name += token; + next(); + } + } + skip("="); + var optionValue = parseOptionValue(parent, name); + setParsedOption(parent, option, optionValue, propName); + } + + function parseOptionValue(parent, name) { + if (skip("{", true)) { // { a: "foo" b { c: "bar" } } + var result = {}; + while (!skip("}", true)) { + /* istanbul ignore if */ + if (!nameRe.test(token = next())) + throw illegal(token, "name"); + + var value; + var propName = token; + if (peek() === "{") + value = parseOptionValue(parent, name + "." + token); + else { + skip(":"); + if (peek() === "{") + value = parseOptionValue(parent, name + "." + token); + else { + value = readValue(true); + setOption(parent, name + "." + token, value); + } + } + var prevValue = result[propName]; + if (prevValue) + value = [].concat(prevValue).concat(value); + result[propName] = value; + skip(",", true); + } + return result; + } + + var simpleValue = readValue(true); + setOption(parent, name, simpleValue); + return simpleValue; + // Does not enforce a delimiter to be universal + } + + function setOption(parent, name, value) { + if (parent.setOption) + parent.setOption(name, value); + } + + function setParsedOption(parent, name, value, propName) { + if (parent.setParsedOption) + parent.setParsedOption(name, value, propName); + } + + function parseInlineOptions(parent) { + if (skip("[", true)) { + do { + parseOption(parent, "option"); + } while (skip(",", true)); + skip("]"); + } + return parent; + } + + function parseService(parent, token) { + + /* istanbul ignore if */ + if (!nameRe.test(token = next())) + throw illegal(token, "service name"); + + var service = new Service(token); + ifBlock(service, function parseService_block(token) { + if (parseCommon(service, token)) + return; + + /* istanbul ignore else */ + if (token === "rpc") + parseMethod(service, token); + else + throw illegal(token); + }); + parent.add(service); + } + + function parseMethod(parent, token) { + // Get the comment of the preceding line now (if one exists) in case the + // method is defined across multiple lines. + var commentText = cmnt(); + + var type = token; + + /* istanbul ignore if */ + if (!nameRe.test(token = next())) + throw illegal(token, "name"); + + var name = token, + requestType, requestStream, + responseType, responseStream; + + skip("("); + if (skip("stream", true)) + requestStream = true; + + /* istanbul ignore if */ + if (!typeRefRe.test(token = next())) + throw illegal(token); + + requestType = token; + skip(")"); skip("returns"); skip("("); + if (skip("stream", true)) + responseStream = true; + + /* istanbul ignore if */ + if (!typeRefRe.test(token = next())) + throw illegal(token); + + responseType = token; + skip(")"); + + var method = new Method(name, type, requestType, responseType, requestStream, responseStream); + method.comment = commentText; + ifBlock(method, function parseMethod_block(token) { + + /* istanbul ignore else */ + if (token === "option") { + parseOption(method, token); + skip(";"); + } else + throw illegal(token); + + }); + parent.add(method); + } + + function parseExtension(parent, token) { + + /* istanbul ignore if */ + if (!typeRefRe.test(token = next())) + throw illegal(token, "reference"); + + var reference = token; + ifBlock(null, function parseExtension_block(token) { + switch (token) { + + case "required": + case "repeated": + case "optional": + parseField(parent, token, reference); + break; + + default: + /* istanbul ignore if */ + if (!isProto3 || !typeRefRe.test(token)) + throw illegal(token); + push(token); + parseField(parent, "optional", reference); + break; + } + }); + } + + var token; + while ((token = next()) !== null) { + switch (token) { + + case "package": + + /* istanbul ignore if */ + if (!head) + throw illegal(token); + + parsePackage(); + break; + + case "import": + + /* istanbul ignore if */ + if (!head) + throw illegal(token); + + parseImport(); + break; + + case "syntax": + + /* istanbul ignore if */ + if (!head) + throw illegal(token); + + parseSyntax(); + break; + + case "option": + + parseOption(ptr, token); + skip(";"); + break; + + default: + + /* istanbul ignore else */ + if (parseCommon(ptr, token)) { + head = false; + continue; + } + + /* istanbul ignore next */ + throw illegal(token); + } + } + + parse.filename = null; + return { + "package" : pkg, + "imports" : imports, + weakImports : weakImports, + syntax : syntax, + root : root + }; +} + +/** + * Parses the given .proto source and returns an object with the parsed contents. + * @name parse + * @function + * @param {string} source Source contents + * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted. + * @returns {IParserResult} Parser result + * @property {string} filename=null Currently processing file name for error reporting, if known + * @property {IParseOptions} defaults Default {@link IParseOptions} + * @variation 2 + */ + + +/***/ }), + +/***/ "./node_modules/protobufjs/src/reader.js": +/*!***********************************************!*\ + !*** ./node_modules/protobufjs/src/reader.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +module.exports = Reader; + +var util = __webpack_require__(/*! ./util/minimal */ "./node_modules/protobufjs/src/util/minimal.js"); + +var BufferReader; // cyclic + +var LongBits = util.LongBits, + utf8 = util.utf8; + +/* istanbul ignore next */ +function indexOutOfRange(reader, writeLength) { + return RangeError("index out of range: " + reader.pos + " + " + (writeLength || 1) + " > " + reader.len); +} + +/** + * Constructs a new reader instance using the specified buffer. + * @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`. + * @constructor + * @param {Uint8Array} buffer Buffer to read from + */ +function Reader(buffer) { + + /** + * Read buffer. + * @type {Uint8Array} + */ + this.buf = buffer; + + /** + * Read buffer position. + * @type {number} + */ + this.pos = 0; + + /** + * Read buffer length. + * @type {number} + */ + this.len = buffer.length; +} + +var create_array = typeof Uint8Array !== "undefined" + ? function create_typed_array(buffer) { + if (buffer instanceof Uint8Array || Array.isArray(buffer)) + return new Reader(buffer); + throw Error("illegal buffer"); + } + /* istanbul ignore next */ + : function create_array(buffer) { + if (Array.isArray(buffer)) + return new Reader(buffer); + throw Error("illegal buffer"); + }; + +var create = function create() { + return util.Buffer + ? function create_buffer_setup(buffer) { + return (Reader.create = function create_buffer(buffer) { + return util.Buffer.isBuffer(buffer) + ? new BufferReader(buffer) + /* istanbul ignore next */ + : create_array(buffer); + })(buffer); + } + /* istanbul ignore next */ + : create_array; +}; + +/** + * Creates a new reader using the specified buffer. + * @function + * @param {Uint8Array|Buffer} buffer Buffer to read from + * @returns {Reader|BufferReader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader} + * @throws {Error} If `buffer` is not a valid buffer + */ +Reader.create = create(); + +Reader.prototype._slice = util.Array.prototype.subarray || /* istanbul ignore next */ util.Array.prototype.slice; + +/** + * Reads a varint as an unsigned 32 bit value. + * @function + * @returns {number} Value read + */ +Reader.prototype.uint32 = (function read_uint32_setup() { + var value = 4294967295; // optimizer type-hint, tends to deopt otherwise (?!) + return function read_uint32() { + value = ( this.buf[this.pos] & 127 ) >>> 0; if (this.buf[this.pos++] < 128) return value; + value = (value | (this.buf[this.pos] & 127) << 7) >>> 0; if (this.buf[this.pos++] < 128) return value; + value = (value | (this.buf[this.pos] & 127) << 14) >>> 0; if (this.buf[this.pos++] < 128) return value; + value = (value | (this.buf[this.pos] & 127) << 21) >>> 0; if (this.buf[this.pos++] < 128) return value; + value = (value | (this.buf[this.pos] & 15) << 28) >>> 0; if (this.buf[this.pos++] < 128) return value; + + /* istanbul ignore if */ + if ((this.pos += 5) > this.len) { + this.pos = this.len; + throw indexOutOfRange(this, 10); + } + return value; + }; +})(); + +/** + * Reads a varint as a signed 32 bit value. + * @returns {number} Value read + */ +Reader.prototype.int32 = function read_int32() { + return this.uint32() | 0; +}; + +/** + * Reads a zig-zag encoded varint as a signed 32 bit value. + * @returns {number} Value read + */ +Reader.prototype.sint32 = function read_sint32() { + var value = this.uint32(); + return value >>> 1 ^ -(value & 1) | 0; +}; + +/* eslint-disable no-invalid-this */ + +function readLongVarint() { + // tends to deopt with local vars for octet etc. + var bits = new LongBits(0, 0); + var i = 0; + if (this.len - this.pos > 4) { // fast route (lo) + for (; i < 4; ++i) { + // 1st..4th + bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0; + if (this.buf[this.pos++] < 128) + return bits; + } + // 5th + bits.lo = (bits.lo | (this.buf[this.pos] & 127) << 28) >>> 0; + bits.hi = (bits.hi | (this.buf[this.pos] & 127) >> 4) >>> 0; + if (this.buf[this.pos++] < 128) + return bits; + i = 0; + } else { + for (; i < 3; ++i) { + /* istanbul ignore if */ + if (this.pos >= this.len) + throw indexOutOfRange(this); + // 1st..3th + bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0; + if (this.buf[this.pos++] < 128) + return bits; + } + // 4th + bits.lo = (bits.lo | (this.buf[this.pos++] & 127) << i * 7) >>> 0; + return bits; + } + if (this.len - this.pos > 4) { // fast route (hi) + for (; i < 5; ++i) { + // 6th..10th + bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0; + if (this.buf[this.pos++] < 128) + return bits; + } + } else { + for (; i < 5; ++i) { + /* istanbul ignore if */ + if (this.pos >= this.len) + throw indexOutOfRange(this); + // 6th..10th + bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0; + if (this.buf[this.pos++] < 128) + return bits; + } + } + /* istanbul ignore next */ + throw Error("invalid varint encoding"); +} + +/* eslint-enable no-invalid-this */ + +/** + * Reads a varint as a signed 64 bit value. + * @name Reader#int64 + * @function + * @returns {Long} Value read + */ + +/** + * Reads a varint as an unsigned 64 bit value. + * @name Reader#uint64 + * @function + * @returns {Long} Value read + */ + +/** + * Reads a zig-zag encoded varint as a signed 64 bit value. + * @name Reader#sint64 + * @function + * @returns {Long} Value read + */ + +/** + * Reads a varint as a boolean. + * @returns {boolean} Value read + */ +Reader.prototype.bool = function read_bool() { + return this.uint32() !== 0; +}; + +function readFixed32_end(buf, end) { // note that this uses `end`, not `pos` + return (buf[end - 4] + | buf[end - 3] << 8 + | buf[end - 2] << 16 + | buf[end - 1] << 24) >>> 0; +} + +/** + * Reads fixed 32 bits as an unsigned 32 bit integer. + * @returns {number} Value read + */ +Reader.prototype.fixed32 = function read_fixed32() { + + /* istanbul ignore if */ + if (this.pos + 4 > this.len) + throw indexOutOfRange(this, 4); + + return readFixed32_end(this.buf, this.pos += 4); +}; + +/** + * Reads fixed 32 bits as a signed 32 bit integer. + * @returns {number} Value read + */ +Reader.prototype.sfixed32 = function read_sfixed32() { + + /* istanbul ignore if */ + if (this.pos + 4 > this.len) + throw indexOutOfRange(this, 4); + + return readFixed32_end(this.buf, this.pos += 4) | 0; +}; + +/* eslint-disable no-invalid-this */ + +function readFixed64(/* this: Reader */) { + + /* istanbul ignore if */ + if (this.pos + 8 > this.len) + throw indexOutOfRange(this, 8); + + return new LongBits(readFixed32_end(this.buf, this.pos += 4), readFixed32_end(this.buf, this.pos += 4)); +} + +/* eslint-enable no-invalid-this */ + +/** + * Reads fixed 64 bits. + * @name Reader#fixed64 + * @function + * @returns {Long} Value read + */ + +/** + * Reads zig-zag encoded fixed 64 bits. + * @name Reader#sfixed64 + * @function + * @returns {Long} Value read + */ + +/** + * Reads a float (32 bit) as a number. + * @function + * @returns {number} Value read + */ +Reader.prototype.float = function read_float() { + + /* istanbul ignore if */ + if (this.pos + 4 > this.len) + throw indexOutOfRange(this, 4); + + var value = util.float.readFloatLE(this.buf, this.pos); + this.pos += 4; + return value; +}; + +/** + * Reads a double (64 bit float) as a number. + * @function + * @returns {number} Value read + */ +Reader.prototype.double = function read_double() { + + /* istanbul ignore if */ + if (this.pos + 8 > this.len) + throw indexOutOfRange(this, 4); + + var value = util.float.readDoubleLE(this.buf, this.pos); + this.pos += 8; + return value; +}; + +/** + * Reads a sequence of bytes preceeded by its length as a varint. + * @returns {Uint8Array} Value read + */ +Reader.prototype.bytes = function read_bytes() { + var length = this.uint32(), + start = this.pos, + end = this.pos + length; + + /* istanbul ignore if */ + if (end > this.len) + throw indexOutOfRange(this, length); + + this.pos += length; + if (Array.isArray(this.buf)) // plain array + return this.buf.slice(start, end); + return start === end // fix for IE 10/Win8 and others' subarray returning array of size 1 + ? new this.buf.constructor(0) + : this._slice.call(this.buf, start, end); +}; + +/** + * Reads a string preceeded by its byte length as a varint. + * @returns {string} Value read + */ +Reader.prototype.string = function read_string() { + var bytes = this.bytes(); + return utf8.read(bytes, 0, bytes.length); +}; + +/** + * Skips the specified number of bytes if specified, otherwise skips a varint. + * @param {number} [length] Length if known, otherwise a varint is assumed + * @returns {Reader} `this` + */ +Reader.prototype.skip = function skip(length) { + if (typeof length === "number") { + /* istanbul ignore if */ + if (this.pos + length > this.len) + throw indexOutOfRange(this, length); + this.pos += length; + } else { + do { + /* istanbul ignore if */ + if (this.pos >= this.len) + throw indexOutOfRange(this); + } while (this.buf[this.pos++] & 128); + } + return this; +}; + +/** + * Skips the next element of the specified wire type. + * @param {number} wireType Wire type received + * @returns {Reader} `this` + */ +Reader.prototype.skipType = function(wireType) { + switch (wireType) { + case 0: + this.skip(); + break; + case 1: + this.skip(8); + break; + case 2: + this.skip(this.uint32()); + break; + case 3: + while ((wireType = this.uint32() & 7) !== 4) { + this.skipType(wireType); + } + break; + case 5: + this.skip(4); + break; + + /* istanbul ignore next */ + default: + throw Error("invalid wire type " + wireType + " at offset " + this.pos); + } + return this; +}; + +Reader._configure = function(BufferReader_) { + BufferReader = BufferReader_; + Reader.create = create(); + BufferReader._configure(); + + var fn = util.Long ? "toLong" : /* istanbul ignore next */ "toNumber"; + util.merge(Reader.prototype, { + + int64: function read_int64() { + return readLongVarint.call(this)[fn](false); + }, + + uint64: function read_uint64() { + return readLongVarint.call(this)[fn](true); + }, + + sint64: function read_sint64() { + return readLongVarint.call(this).zzDecode()[fn](false); + }, + + fixed64: function read_fixed64() { + return readFixed64.call(this)[fn](true); + }, + + sfixed64: function read_sfixed64() { + return readFixed64.call(this)[fn](false); + } + + }); +}; + + +/***/ }), + +/***/ "./node_modules/protobufjs/src/reader_buffer.js": +/*!******************************************************!*\ + !*** ./node_modules/protobufjs/src/reader_buffer.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +module.exports = BufferReader; + +// extends Reader +var Reader = __webpack_require__(/*! ./reader */ "./node_modules/protobufjs/src/reader.js"); +(BufferReader.prototype = Object.create(Reader.prototype)).constructor = BufferReader; + +var util = __webpack_require__(/*! ./util/minimal */ "./node_modules/protobufjs/src/util/minimal.js"); + +/** + * Constructs a new buffer reader instance. + * @classdesc Wire format reader using node buffers. + * @extends Reader + * @constructor + * @param {Buffer} buffer Buffer to read from + */ +function BufferReader(buffer) { + Reader.call(this, buffer); + + /** + * Read buffer. + * @name BufferReader#buf + * @type {Buffer} + */ +} + +BufferReader._configure = function () { + /* istanbul ignore else */ + if (util.Buffer) + BufferReader.prototype._slice = util.Buffer.prototype.slice; +}; + + +/** + * @override + */ +BufferReader.prototype.string = function read_string_buffer() { + var len = this.uint32(); // modifies pos + return this.buf.utf8Slice + ? this.buf.utf8Slice(this.pos, this.pos = Math.min(this.pos + len, this.len)) + : this.buf.toString("utf-8", this.pos, this.pos = Math.min(this.pos + len, this.len)); +}; + +/** + * Reads a sequence of bytes preceeded by its length as a varint. + * @name BufferReader#bytes + * @function + * @returns {Buffer} Value read + */ + +BufferReader._configure(); + + +/***/ }), + +/***/ "./node_modules/protobufjs/src/root.js": +/*!*********************************************!*\ + !*** ./node_modules/protobufjs/src/root.js ***! + \*********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +module.exports = Root; + +// extends Namespace +var Namespace = __webpack_require__(/*! ./namespace */ "./node_modules/protobufjs/src/namespace.js"); +((Root.prototype = Object.create(Namespace.prototype)).constructor = Root).className = "Root"; + +var Field = __webpack_require__(/*! ./field */ "./node_modules/protobufjs/src/field.js"), + Enum = __webpack_require__(/*! ./enum */ "./node_modules/protobufjs/src/enum.js"), + OneOf = __webpack_require__(/*! ./oneof */ "./node_modules/protobufjs/src/oneof.js"), + util = __webpack_require__(/*! ./util */ "./node_modules/protobufjs/src/util.js"); + +var Type, // cyclic + parse, // might be excluded + common; // " + +/** + * Constructs a new root namespace instance. + * @classdesc Root namespace wrapping all types, enums, services, sub-namespaces etc. that belong together. + * @extends NamespaceBase + * @constructor + * @param {Object.} [options] Top level options + */ +function Root(options) { + Namespace.call(this, "", options); + + /** + * Deferred extension fields. + * @type {Field[]} + */ + this.deferred = []; + + /** + * Resolved file names of loaded files. + * @type {string[]} + */ + this.files = []; +} + +/** + * Loads a namespace descriptor into a root namespace. + * @param {INamespace} json Nameespace descriptor + * @param {Root} [root] Root namespace, defaults to create a new one if omitted + * @returns {Root} Root namespace + */ +Root.fromJSON = function fromJSON(json, root) { + if (!root) + root = new Root(); + if (json.options) + root.setOptions(json.options); + return root.addJSON(json.nested); +}; + +/** + * Resolves the path of an imported file, relative to the importing origin. + * This method exists so you can override it with your own logic in case your imports are scattered over multiple directories. + * @function + * @param {string} origin The file name of the importing file + * @param {string} target The file name being imported + * @returns {string|null} Resolved path to `target` or `null` to skip the file + */ +Root.prototype.resolvePath = util.path.resolve; + +/** + * Fetch content from file path or url + * This method exists so you can override it with your own logic. + * @function + * @param {string} path File path or url + * @param {FetchCallback} callback Callback function + * @returns {undefined} + */ +Root.prototype.fetch = util.fetch; + +// A symbol-like function to safely signal synchronous loading +/* istanbul ignore next */ +function SYNC() {} // eslint-disable-line no-empty-function + +/** + * Loads one or multiple .proto or preprocessed .json files into this root namespace and calls the callback. + * @param {string|string[]} filename Names of one or multiple files to load + * @param {IParseOptions} options Parse options + * @param {LoadCallback} callback Callback function + * @returns {undefined} + */ +Root.prototype.load = function load(filename, options, callback) { + if (typeof options === "function") { + callback = options; + options = undefined; + } + var self = this; + if (!callback) + return util.asPromise(load, self, filename, options); + + var sync = callback === SYNC; // undocumented + + // Finishes loading by calling the callback (exactly once) + function finish(err, root) { + /* istanbul ignore if */ + if (!callback) + return; + var cb = callback; + callback = null; + if (sync) + throw err; + cb(err, root); + } + + // Bundled definition existence checking + function getBundledFileName(filename) { + var idx = filename.lastIndexOf("google/protobuf/"); + if (idx > -1) { + var altname = filename.substring(idx); + if (altname in common) return altname; + } + return null; + } + + // Processes a single file + function process(filename, source) { + try { + if (util.isString(source) && source.charAt(0) === "{") + source = JSON.parse(source); + if (!util.isString(source)) + self.setOptions(source.options).addJSON(source.nested); + else { + parse.filename = filename; + var parsed = parse(source, self, options), + resolved, + i = 0; + if (parsed.imports) + for (; i < parsed.imports.length; ++i) + if (resolved = getBundledFileName(parsed.imports[i]) || self.resolvePath(filename, parsed.imports[i])) + fetch(resolved); + if (parsed.weakImports) + for (i = 0; i < parsed.weakImports.length; ++i) + if (resolved = getBundledFileName(parsed.weakImports[i]) || self.resolvePath(filename, parsed.weakImports[i])) + fetch(resolved, true); + } + } catch (err) { + finish(err); + } + if (!sync && !queued) + finish(null, self); // only once anyway + } + + // Fetches a single file + function fetch(filename, weak) { + + // Skip if already loaded / attempted + if (self.files.indexOf(filename) > -1) + return; + self.files.push(filename); + + // Shortcut bundled definitions + if (filename in common) { + if (sync) + process(filename, common[filename]); + else { + ++queued; + setTimeout(function() { + --queued; + process(filename, common[filename]); + }); + } + return; + } + + // Otherwise fetch from disk or network + if (sync) { + var source; + try { + source = util.fs.readFileSync(filename).toString("utf8"); + } catch (err) { + if (!weak) + finish(err); + return; + } + process(filename, source); + } else { + ++queued; + self.fetch(filename, function(err, source) { + --queued; + /* istanbul ignore if */ + if (!callback) + return; // terminated meanwhile + if (err) { + /* istanbul ignore else */ + if (!weak) + finish(err); + else if (!queued) // can't be covered reliably + finish(null, self); + return; + } + process(filename, source); + }); + } + } + var queued = 0; + + // Assembling the root namespace doesn't require working type + // references anymore, so we can load everything in parallel + if (util.isString(filename)) + filename = [ filename ]; + for (var i = 0, resolved; i < filename.length; ++i) + if (resolved = self.resolvePath("", filename[i])) + fetch(resolved); + + if (sync) + return self; + if (!queued) + finish(null, self); + return undefined; +}; +// function load(filename:string, options:IParseOptions, callback:LoadCallback):undefined + +/** + * Loads one or multiple .proto or preprocessed .json files into this root namespace and calls the callback. + * @function Root#load + * @param {string|string[]} filename Names of one or multiple files to load + * @param {LoadCallback} callback Callback function + * @returns {undefined} + * @variation 2 + */ +// function load(filename:string, callback:LoadCallback):undefined + +/** + * Loads one or multiple .proto or preprocessed .json files into this root namespace and returns a promise. + * @function Root#load + * @param {string|string[]} filename Names of one or multiple files to load + * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted. + * @returns {Promise} Promise + * @variation 3 + */ +// function load(filename:string, [options:IParseOptions]):Promise + +/** + * Synchronously loads one or multiple .proto or preprocessed .json files into this root namespace (node only). + * @function Root#loadSync + * @param {string|string[]} filename Names of one or multiple files to load + * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted. + * @returns {Root} Root namespace + * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid + */ +Root.prototype.loadSync = function loadSync(filename, options) { + if (!util.isNode) + throw Error("not supported"); + return this.load(filename, options, SYNC); +}; + +/** + * @override + */ +Root.prototype.resolveAll = function resolveAll() { + if (this.deferred.length) + throw Error("unresolvable extensions: " + this.deferred.map(function(field) { + return "'extend " + field.extend + "' in " + field.parent.fullName; + }).join(", ")); + return Namespace.prototype.resolveAll.call(this); +}; + +// only uppercased (and thus conflict-free) children are exposed, see below +var exposeRe = /^[A-Z]/; + +/** + * Handles a deferred declaring extension field by creating a sister field to represent it within its extended type. + * @param {Root} root Root instance + * @param {Field} field Declaring extension field witin the declaring type + * @returns {boolean} `true` if successfully added to the extended type, `false` otherwise + * @inner + * @ignore + */ +function tryHandleExtension(root, field) { + var extendedType = field.parent.lookup(field.extend); + if (extendedType) { + var sisterField = new Field(field.fullName, field.id, field.type, field.rule, undefined, field.options); + sisterField.declaringField = field; + field.extensionField = sisterField; + extendedType.add(sisterField); + return true; + } + return false; +} + +/** + * Called when any object is added to this root or its sub-namespaces. + * @param {ReflectionObject} object Object added + * @returns {undefined} + * @private + */ +Root.prototype._handleAdd = function _handleAdd(object) { + if (object instanceof Field) { + + if (/* an extension field (implies not part of a oneof) */ object.extend !== undefined && /* not already handled */ !object.extensionField) + if (!tryHandleExtension(this, object)) + this.deferred.push(object); + + } else if (object instanceof Enum) { + + if (exposeRe.test(object.name)) + object.parent[object.name] = object.values; // expose enum values as property of its parent + + } else if (!(object instanceof OneOf)) /* everything else is a namespace */ { + + if (object instanceof Type) // Try to handle any deferred extensions + for (var i = 0; i < this.deferred.length;) + if (tryHandleExtension(this, this.deferred[i])) + this.deferred.splice(i, 1); + else + ++i; + for (var j = 0; j < /* initializes */ object.nestedArray.length; ++j) // recurse into the namespace + this._handleAdd(object._nestedArray[j]); + if (exposeRe.test(object.name)) + object.parent[object.name] = object; // expose namespace as property of its parent + } + + // The above also adds uppercased (and thus conflict-free) nested types, services and enums as + // properties of namespaces just like static code does. This allows using a .d.ts generated for + // a static module with reflection-based solutions where the condition is met. +}; + +/** + * Called when any object is removed from this root or its sub-namespaces. + * @param {ReflectionObject} object Object removed + * @returns {undefined} + * @private + */ +Root.prototype._handleRemove = function _handleRemove(object) { + if (object instanceof Field) { + + if (/* an extension field */ object.extend !== undefined) { + if (/* already handled */ object.extensionField) { // remove its sister field + object.extensionField.parent.remove(object.extensionField); + object.extensionField = null; + } else { // cancel the extension + var index = this.deferred.indexOf(object); + /* istanbul ignore else */ + if (index > -1) + this.deferred.splice(index, 1); + } + } + + } else if (object instanceof Enum) { + + if (exposeRe.test(object.name)) + delete object.parent[object.name]; // unexpose enum values + + } else if (object instanceof Namespace) { + + for (var i = 0; i < /* initializes */ object.nestedArray.length; ++i) // recurse into the namespace + this._handleRemove(object._nestedArray[i]); + + if (exposeRe.test(object.name)) + delete object.parent[object.name]; // unexpose namespaces + + } +}; + +// Sets up cyclic dependencies (called in index-light) +Root._configure = function(Type_, parse_, common_) { + Type = Type_; + parse = parse_; + common = common_; +}; + + +/***/ }), + +/***/ "./node_modules/protobufjs/src/roots.js": +/*!**********************************************!*\ + !*** ./node_modules/protobufjs/src/roots.js ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +module.exports = {}; + +/** + * Named roots. + * This is where pbjs stores generated structures (the option `-r, --root` specifies a name). + * Can also be used manually to make roots available accross modules. + * @name roots + * @type {Object.} + * @example + * // pbjs -r myroot -o compiled.js ... + * + * // in another module: + * require("./compiled.js"); + * + * // in any subsequent module: + * var root = protobuf.roots["myroot"]; + */ + + +/***/ }), + +/***/ "./node_modules/protobufjs/src/rpc.js": +/*!********************************************!*\ + !*** ./node_modules/protobufjs/src/rpc.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** + * Streaming RPC helpers. + * @namespace + */ +var rpc = exports; + +/** + * RPC implementation passed to {@link Service#create} performing a service request on network level, i.e. by utilizing http requests or websockets. + * @typedef RPCImpl + * @type {function} + * @param {Method|rpc.ServiceMethod,Message<{}>>} method Reflected or static method being called + * @param {Uint8Array} requestData Request data + * @param {RPCImplCallback} callback Callback function + * @returns {undefined} + * @example + * function rpcImpl(method, requestData, callback) { + * if (protobuf.util.lcFirst(method.name) !== "myMethod") // compatible with static code + * throw Error("no such method"); + * asynchronouslyObtainAResponse(requestData, function(err, responseData) { + * callback(err, responseData); + * }); + * } + */ + +/** + * Node-style callback as used by {@link RPCImpl}. + * @typedef RPCImplCallback + * @type {function} + * @param {Error|null} error Error, if any, otherwise `null` + * @param {Uint8Array|null} [response] Response data or `null` to signal end of stream, if there hasn't been an error + * @returns {undefined} + */ + +rpc.Service = __webpack_require__(/*! ./rpc/service */ "./node_modules/protobufjs/src/rpc/service.js"); + + +/***/ }), + +/***/ "./node_modules/protobufjs/src/rpc/service.js": +/*!****************************************************!*\ + !*** ./node_modules/protobufjs/src/rpc/service.js ***! + \****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +module.exports = Service; + +var util = __webpack_require__(/*! ../util/minimal */ "./node_modules/protobufjs/src/util/minimal.js"); + +// Extends EventEmitter +(Service.prototype = Object.create(util.EventEmitter.prototype)).constructor = Service; + +/** + * A service method callback as used by {@link rpc.ServiceMethod|ServiceMethod}. + * + * Differs from {@link RPCImplCallback} in that it is an actual callback of a service method which may not return `response = null`. + * @typedef rpc.ServiceMethodCallback + * @template TRes extends Message + * @type {function} + * @param {Error|null} error Error, if any + * @param {TRes} [response] Response message + * @returns {undefined} + */ + +/** + * A service method part of a {@link rpc.Service} as created by {@link Service.create}. + * @typedef rpc.ServiceMethod + * @template TReq extends Message + * @template TRes extends Message + * @type {function} + * @param {TReq|Properties} request Request message or plain object + * @param {rpc.ServiceMethodCallback} [callback] Node-style callback called with the error, if any, and the response message + * @returns {Promise>} Promise if `callback` has been omitted, otherwise `undefined` + */ + +/** + * Constructs a new RPC service instance. + * @classdesc An RPC service as returned by {@link Service#create}. + * @exports rpc.Service + * @extends util.EventEmitter + * @constructor + * @param {RPCImpl} rpcImpl RPC implementation + * @param {boolean} [requestDelimited=false] Whether requests are length-delimited + * @param {boolean} [responseDelimited=false] Whether responses are length-delimited + */ +function Service(rpcImpl, requestDelimited, responseDelimited) { + + if (typeof rpcImpl !== "function") + throw TypeError("rpcImpl must be a function"); + + util.EventEmitter.call(this); + + /** + * RPC implementation. Becomes `null` once the service is ended. + * @type {RPCImpl|null} + */ + this.rpcImpl = rpcImpl; + + /** + * Whether requests are length-delimited. + * @type {boolean} + */ + this.requestDelimited = Boolean(requestDelimited); + + /** + * Whether responses are length-delimited. + * @type {boolean} + */ + this.responseDelimited = Boolean(responseDelimited); +} + +/** + * Calls a service method through {@link rpc.Service#rpcImpl|rpcImpl}. + * @param {Method|rpc.ServiceMethod} method Reflected or static method + * @param {Constructor} requestCtor Request constructor + * @param {Constructor} responseCtor Response constructor + * @param {TReq|Properties} request Request message or plain object + * @param {rpc.ServiceMethodCallback} callback Service callback + * @returns {undefined} + * @template TReq extends Message + * @template TRes extends Message + */ +Service.prototype.rpcCall = function rpcCall(method, requestCtor, responseCtor, request, callback) { + + if (!request) + throw TypeError("request must be specified"); + + var self = this; + if (!callback) + return util.asPromise(rpcCall, self, method, requestCtor, responseCtor, request); + + if (!self.rpcImpl) { + setTimeout(function() { callback(Error("already ended")); }, 0); + return undefined; + } + + try { + return self.rpcImpl( + method, + requestCtor[self.requestDelimited ? "encodeDelimited" : "encode"](request).finish(), + function rpcCallback(err, response) { + + if (err) { + self.emit("error", err, method); + return callback(err); + } + + if (response === null) { + self.end(/* endedByRPC */ true); + return undefined; + } + + if (!(response instanceof responseCtor)) { + try { + response = responseCtor[self.responseDelimited ? "decodeDelimited" : "decode"](response); + } catch (err) { + self.emit("error", err, method); + return callback(err); + } + } + + self.emit("data", response, method); + return callback(null, response); + } + ); + } catch (err) { + self.emit("error", err, method); + setTimeout(function() { callback(err); }, 0); + return undefined; + } +}; + +/** + * Ends this service and emits the `end` event. + * @param {boolean} [endedByRPC=false] Whether the service has been ended by the RPC implementation. + * @returns {rpc.Service} `this` + */ +Service.prototype.end = function end(endedByRPC) { + if (this.rpcImpl) { + if (!endedByRPC) // signal end to rpcImpl + this.rpcImpl(null, null, null); + this.rpcImpl = null; + this.emit("end").off(); + } + return this; +}; + + +/***/ }), + +/***/ "./node_modules/protobufjs/src/service.js": +/*!************************************************!*\ + !*** ./node_modules/protobufjs/src/service.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +module.exports = Service; + +// extends Namespace +var Namespace = __webpack_require__(/*! ./namespace */ "./node_modules/protobufjs/src/namespace.js"); +((Service.prototype = Object.create(Namespace.prototype)).constructor = Service).className = "Service"; + +var Method = __webpack_require__(/*! ./method */ "./node_modules/protobufjs/src/method.js"), + util = __webpack_require__(/*! ./util */ "./node_modules/protobufjs/src/util.js"), + rpc = __webpack_require__(/*! ./rpc */ "./node_modules/protobufjs/src/rpc.js"); + +/** + * Constructs a new service instance. + * @classdesc Reflected service. + * @extends NamespaceBase + * @constructor + * @param {string} name Service name + * @param {Object.} [options] Service options + * @throws {TypeError} If arguments are invalid + */ +function Service(name, options) { + Namespace.call(this, name, options); + + /** + * Service methods. + * @type {Object.} + */ + this.methods = {}; // toJSON, marker + + /** + * Cached methods as an array. + * @type {Method[]|null} + * @private + */ + this._methodsArray = null; +} + +/** + * Service descriptor. + * @interface IService + * @extends INamespace + * @property {Object.} methods Method descriptors + */ + +/** + * Constructs a service from a service descriptor. + * @param {string} name Service name + * @param {IService} json Service descriptor + * @returns {Service} Created service + * @throws {TypeError} If arguments are invalid + */ +Service.fromJSON = function fromJSON(name, json) { + var service = new Service(name, json.options); + /* istanbul ignore else */ + if (json.methods) + for (var names = Object.keys(json.methods), i = 0; i < names.length; ++i) + service.add(Method.fromJSON(names[i], json.methods[names[i]])); + if (json.nested) + service.addJSON(json.nested); + service.comment = json.comment; + return service; +}; + +/** + * Converts this service to a service descriptor. + * @param {IToJSONOptions} [toJSONOptions] JSON conversion options + * @returns {IService} Service descriptor + */ +Service.prototype.toJSON = function toJSON(toJSONOptions) { + var inherited = Namespace.prototype.toJSON.call(this, toJSONOptions); + var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false; + return util.toObject([ + "options" , inherited && inherited.options || undefined, + "methods" , Namespace.arrayToJSON(this.methodsArray, toJSONOptions) || /* istanbul ignore next */ {}, + "nested" , inherited && inherited.nested || undefined, + "comment" , keepComments ? this.comment : undefined + ]); +}; + +/** + * Methods of this service as an array for iteration. + * @name Service#methodsArray + * @type {Method[]} + * @readonly + */ +Object.defineProperty(Service.prototype, "methodsArray", { + get: function() { + return this._methodsArray || (this._methodsArray = util.toArray(this.methods)); + } +}); + +function clearCache(service) { + service._methodsArray = null; + return service; +} + +/** + * @override + */ +Service.prototype.get = function get(name) { + return this.methods[name] + || Namespace.prototype.get.call(this, name); +}; + +/** + * @override + */ +Service.prototype.resolveAll = function resolveAll() { + var methods = this.methodsArray; + for (var i = 0; i < methods.length; ++i) + methods[i].resolve(); + return Namespace.prototype.resolve.call(this); +}; + +/** + * @override + */ +Service.prototype.add = function add(object) { + + /* istanbul ignore if */ + if (this.get(object.name)) + throw Error("duplicate name '" + object.name + "' in " + this); + + if (object instanceof Method) { + this.methods[object.name] = object; + object.parent = this; + return clearCache(this); + } + return Namespace.prototype.add.call(this, object); +}; + +/** + * @override + */ +Service.prototype.remove = function remove(object) { + if (object instanceof Method) { + + /* istanbul ignore if */ + if (this.methods[object.name] !== object) + throw Error(object + " is not a member of " + this); + + delete this.methods[object.name]; + object.parent = null; + return clearCache(this); + } + return Namespace.prototype.remove.call(this, object); +}; + +/** + * Creates a runtime service using the specified rpc implementation. + * @param {RPCImpl} rpcImpl RPC implementation + * @param {boolean} [requestDelimited=false] Whether requests are length-delimited + * @param {boolean} [responseDelimited=false] Whether responses are length-delimited + * @returns {rpc.Service} RPC service. Useful where requests and/or responses are streamed. + */ +Service.prototype.create = function create(rpcImpl, requestDelimited, responseDelimited) { + var rpcService = new rpc.Service(rpcImpl, requestDelimited, responseDelimited); + for (var i = 0, method; i < /* initializes */ this.methodsArray.length; ++i) { + var methodName = util.lcFirst((method = this._methodsArray[i]).resolve().name).replace(/[^$\w_]/g, ""); + rpcService[methodName] = util.codegen(["r","c"], util.isReserved(methodName) ? methodName + "_" : methodName)("return this.rpcCall(m,q,s,r,c)")({ + m: method, + q: method.resolvedRequestType.ctor, + s: method.resolvedResponseType.ctor + }); + } + return rpcService; +}; + + +/***/ }), + +/***/ "./node_modules/protobufjs/src/tokenize.js": +/*!*************************************************!*\ + !*** ./node_modules/protobufjs/src/tokenize.js ***! + \*************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +module.exports = tokenize; + +var delimRe = /[\s{}=;:[\],'"()<>]/g, + stringDoubleRe = /(?:"([^"\\]*(?:\\.[^"\\]*)*)")/g, + stringSingleRe = /(?:'([^'\\]*(?:\\.[^'\\]*)*)')/g; + +var setCommentRe = /^ *[*/]+ */, + setCommentAltRe = /^\s*\*?\/*/, + setCommentSplitRe = /\n/g, + whitespaceRe = /\s/, + unescapeRe = /\\(.?)/g; + +var unescapeMap = { + "0": "\0", + "r": "\r", + "n": "\n", + "t": "\t" +}; + +/** + * Unescapes a string. + * @param {string} str String to unescape + * @returns {string} Unescaped string + * @property {Object.} map Special characters map + * @memberof tokenize + */ +function unescape(str) { + return str.replace(unescapeRe, function($0, $1) { + switch ($1) { + case "\\": + case "": + return $1; + default: + return unescapeMap[$1] || ""; + } + }); +} + +tokenize.unescape = unescape; + +/** + * Gets the next token and advances. + * @typedef TokenizerHandleNext + * @type {function} + * @returns {string|null} Next token or `null` on eof + */ + +/** + * Peeks for the next token. + * @typedef TokenizerHandlePeek + * @type {function} + * @returns {string|null} Next token or `null` on eof + */ + +/** + * Pushes a token back to the stack. + * @typedef TokenizerHandlePush + * @type {function} + * @param {string} token Token + * @returns {undefined} + */ + +/** + * Skips the next token. + * @typedef TokenizerHandleSkip + * @type {function} + * @param {string} expected Expected token + * @param {boolean} [optional=false] If optional + * @returns {boolean} Whether the token matched + * @throws {Error} If the token didn't match and is not optional + */ + +/** + * Gets the comment on the previous line or, alternatively, the line comment on the specified line. + * @typedef TokenizerHandleCmnt + * @type {function} + * @param {number} [line] Line number + * @returns {string|null} Comment text or `null` if none + */ + +/** + * Handle object returned from {@link tokenize}. + * @interface ITokenizerHandle + * @property {TokenizerHandleNext} next Gets the next token and advances (`null` on eof) + * @property {TokenizerHandlePeek} peek Peeks for the next token (`null` on eof) + * @property {TokenizerHandlePush} push Pushes a token back to the stack + * @property {TokenizerHandleSkip} skip Skips a token, returns its presence and advances or, if non-optional and not present, throws + * @property {TokenizerHandleCmnt} cmnt Gets the comment on the previous line or the line comment on the specified line, if any + * @property {number} line Current line number + */ + +/** + * Tokenizes the given .proto source and returns an object with useful utility functions. + * @param {string} source Source contents + * @param {boolean} alternateCommentMode Whether we should activate alternate comment parsing mode. + * @returns {ITokenizerHandle} Tokenizer handle + */ +function tokenize(source, alternateCommentMode) { + /* eslint-disable callback-return */ + source = source.toString(); + + var offset = 0, + length = source.length, + line = 1, + commentType = null, + commentText = null, + commentLine = 0, + commentLineEmpty = false, + commentIsLeading = false; + + var stack = []; + + var stringDelim = null; + + /* istanbul ignore next */ + /** + * Creates an error for illegal syntax. + * @param {string} subject Subject + * @returns {Error} Error created + * @inner + */ + function illegal(subject) { + return Error("illegal " + subject + " (line " + line + ")"); + } + + /** + * Reads a string till its end. + * @returns {string} String read + * @inner + */ + function readString() { + var re = stringDelim === "'" ? stringSingleRe : stringDoubleRe; + re.lastIndex = offset - 1; + var match = re.exec(source); + if (!match) + throw illegal("string"); + offset = re.lastIndex; + push(stringDelim); + stringDelim = null; + return unescape(match[1]); + } + + /** + * Gets the character at `pos` within the source. + * @param {number} pos Position + * @returns {string} Character + * @inner + */ + function charAt(pos) { + return source.charAt(pos); + } + + /** + * Sets the current comment text. + * @param {number} start Start offset + * @param {number} end End offset + * @param {boolean} isLeading set if a leading comment + * @returns {undefined} + * @inner + */ + function setComment(start, end, isLeading) { + commentType = source.charAt(start++); + commentLine = line; + commentLineEmpty = false; + commentIsLeading = isLeading; + var lookback; + if (alternateCommentMode) { + lookback = 2; // alternate comment parsing: "//" or "/*" + } else { + lookback = 3; // "///" or "/**" + } + var commentOffset = start - lookback, + c; + do { + if (--commentOffset < 0 || + (c = source.charAt(commentOffset)) === "\n") { + commentLineEmpty = true; + break; + } + } while (c === " " || c === "\t"); + var lines = source + .substring(start, end) + .split(setCommentSplitRe); + for (var i = 0; i < lines.length; ++i) + lines[i] = lines[i] + .replace(alternateCommentMode ? setCommentAltRe : setCommentRe, "") + .trim(); + commentText = lines + .join("\n") + .trim(); + } + + function isDoubleSlashCommentLine(startOffset) { + var endOffset = findEndOfLine(startOffset); + + // see if remaining line matches comment pattern + var lineText = source.substring(startOffset, endOffset); + // look for 1 or 2 slashes since startOffset would already point past + // the first slash that started the comment. + var isComment = /^\s*\/{1,2}/.test(lineText); + return isComment; + } + + function findEndOfLine(cursor) { + // find end of cursor's line + var endOffset = cursor; + while (endOffset < length && charAt(endOffset) !== "\n") { + endOffset++; + } + return endOffset; + } + + /** + * Obtains the next token. + * @returns {string|null} Next token or `null` on eof + * @inner + */ + function next() { + if (stack.length > 0) + return stack.shift(); + if (stringDelim) + return readString(); + var repeat, + prev, + curr, + start, + isDoc, + isLeadingComment = offset === 0; + do { + if (offset === length) + return null; + repeat = false; + while (whitespaceRe.test(curr = charAt(offset))) { + if (curr === "\n") { + isLeadingComment = true; + ++line; + } + if (++offset === length) + return null; + } + + if (charAt(offset) === "/") { + if (++offset === length) { + throw illegal("comment"); + } + if (charAt(offset) === "/") { // Line + if (!alternateCommentMode) { + // check for triple-slash comment + isDoc = charAt(start = offset + 1) === "/"; + + while (charAt(++offset) !== "\n") { + if (offset === length) { + return null; + } + } + ++offset; + if (isDoc) { + setComment(start, offset - 1, isLeadingComment); + } + ++line; + repeat = true; + } else { + // check for double-slash comments, consolidating consecutive lines + start = offset; + isDoc = false; + if (isDoubleSlashCommentLine(offset)) { + isDoc = true; + do { + offset = findEndOfLine(offset); + if (offset === length) { + break; + } + offset++; + } while (isDoubleSlashCommentLine(offset)); + } else { + offset = Math.min(length, findEndOfLine(offset) + 1); + } + if (isDoc) { + setComment(start, offset, isLeadingComment); + } + line++; + repeat = true; + } + } else if ((curr = charAt(offset)) === "*") { /* Block */ + // check for /** (regular comment mode) or /* (alternate comment mode) + start = offset + 1; + isDoc = alternateCommentMode || charAt(start) === "*"; + do { + if (curr === "\n") { + ++line; + } + if (++offset === length) { + throw illegal("comment"); + } + prev = curr; + curr = charAt(offset); + } while (prev !== "*" || curr !== "/"); + ++offset; + if (isDoc) { + setComment(start, offset - 2, isLeadingComment); + } + repeat = true; + } else { + return "/"; + } + } + } while (repeat); + + // offset !== length if we got here + + var end = offset; + delimRe.lastIndex = 0; + var delim = delimRe.test(charAt(end++)); + if (!delim) + while (end < length && !delimRe.test(charAt(end))) + ++end; + var token = source.substring(offset, offset = end); + if (token === "\"" || token === "'") + stringDelim = token; + return token; + } + + /** + * Pushes a token back to the stack. + * @param {string} token Token + * @returns {undefined} + * @inner + */ + function push(token) { + stack.push(token); + } + + /** + * Peeks for the next token. + * @returns {string|null} Token or `null` on eof + * @inner + */ + function peek() { + if (!stack.length) { + var token = next(); + if (token === null) + return null; + push(token); + } + return stack[0]; + } + + /** + * Skips a token. + * @param {string} expected Expected token + * @param {boolean} [optional=false] Whether the token is optional + * @returns {boolean} `true` when skipped, `false` if not + * @throws {Error} When a required token is not present + * @inner + */ + function skip(expected, optional) { + var actual = peek(), + equals = actual === expected; + if (equals) { + next(); + return true; + } + if (!optional) + throw illegal("token '" + actual + "', '" + expected + "' expected"); + return false; + } + + /** + * Gets a comment. + * @param {number} [trailingLine] Line number if looking for a trailing comment + * @returns {string|null} Comment text + * @inner + */ + function cmnt(trailingLine) { + var ret = null; + if (trailingLine === undefined) { + if (commentLine === line - 1 && (alternateCommentMode || commentType === "*" || commentLineEmpty)) { + ret = commentIsLeading ? commentText : null; + } + } else { + /* istanbul ignore else */ + if (commentLine < trailingLine) { + peek(); + } + if (commentLine === trailingLine && !commentLineEmpty && (alternateCommentMode || commentType === "/")) { + ret = commentIsLeading ? null : commentText; + } + } + return ret; + } + + return Object.defineProperty({ + next: next, + peek: peek, + push: push, + skip: skip, + cmnt: cmnt + }, "line", { + get: function() { return line; } + }); + /* eslint-enable callback-return */ +} + + +/***/ }), + +/***/ "./node_modules/protobufjs/src/type.js": +/*!*********************************************!*\ + !*** ./node_modules/protobufjs/src/type.js ***! + \*********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +module.exports = Type; + +// extends Namespace +var Namespace = __webpack_require__(/*! ./namespace */ "./node_modules/protobufjs/src/namespace.js"); +((Type.prototype = Object.create(Namespace.prototype)).constructor = Type).className = "Type"; + +var Enum = __webpack_require__(/*! ./enum */ "./node_modules/protobufjs/src/enum.js"), + OneOf = __webpack_require__(/*! ./oneof */ "./node_modules/protobufjs/src/oneof.js"), + Field = __webpack_require__(/*! ./field */ "./node_modules/protobufjs/src/field.js"), + MapField = __webpack_require__(/*! ./mapfield */ "./node_modules/protobufjs/src/mapfield.js"), + Service = __webpack_require__(/*! ./service */ "./node_modules/protobufjs/src/service.js"), + Message = __webpack_require__(/*! ./message */ "./node_modules/protobufjs/src/message.js"), + Reader = __webpack_require__(/*! ./reader */ "./node_modules/protobufjs/src/reader.js"), + Writer = __webpack_require__(/*! ./writer */ "./node_modules/protobufjs/src/writer.js"), + util = __webpack_require__(/*! ./util */ "./node_modules/protobufjs/src/util.js"), + encoder = __webpack_require__(/*! ./encoder */ "./node_modules/protobufjs/src/encoder.js"), + decoder = __webpack_require__(/*! ./decoder */ "./node_modules/protobufjs/src/decoder.js"), + verifier = __webpack_require__(/*! ./verifier */ "./node_modules/protobufjs/src/verifier.js"), + converter = __webpack_require__(/*! ./converter */ "./node_modules/protobufjs/src/converter.js"), + wrappers = __webpack_require__(/*! ./wrappers */ "./node_modules/protobufjs/src/wrappers.js"); + +/** + * Constructs a new reflected message type instance. + * @classdesc Reflected message type. + * @extends NamespaceBase + * @constructor + * @param {string} name Message name + * @param {Object.} [options] Declared options + */ +function Type(name, options) { + Namespace.call(this, name, options); + + /** + * Message fields. + * @type {Object.} + */ + this.fields = {}; // toJSON, marker + + /** + * Oneofs declared within this namespace, if any. + * @type {Object.} + */ + this.oneofs = undefined; // toJSON + + /** + * Extension ranges, if any. + * @type {number[][]} + */ + this.extensions = undefined; // toJSON + + /** + * Reserved ranges, if any. + * @type {Array.} + */ + this.reserved = undefined; // toJSON + + /*? + * Whether this type is a legacy group. + * @type {boolean|undefined} + */ + this.group = undefined; // toJSON + + /** + * Cached fields by id. + * @type {Object.|null} + * @private + */ + this._fieldsById = null; + + /** + * Cached fields as an array. + * @type {Field[]|null} + * @private + */ + this._fieldsArray = null; + + /** + * Cached oneofs as an array. + * @type {OneOf[]|null} + * @private + */ + this._oneofsArray = null; + + /** + * Cached constructor. + * @type {Constructor<{}>} + * @private + */ + this._ctor = null; +} + +Object.defineProperties(Type.prototype, { + + /** + * Message fields by id. + * @name Type#fieldsById + * @type {Object.} + * @readonly + */ + fieldsById: { + get: function() { + + /* istanbul ignore if */ + if (this._fieldsById) + return this._fieldsById; + + this._fieldsById = {}; + for (var names = Object.keys(this.fields), i = 0; i < names.length; ++i) { + var field = this.fields[names[i]], + id = field.id; + + /* istanbul ignore if */ + if (this._fieldsById[id]) + throw Error("duplicate id " + id + " in " + this); + + this._fieldsById[id] = field; + } + return this._fieldsById; + } + }, + + /** + * Fields of this message as an array for iteration. + * @name Type#fieldsArray + * @type {Field[]} + * @readonly + */ + fieldsArray: { + get: function() { + return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields)); + } + }, + + /** + * Oneofs of this message as an array for iteration. + * @name Type#oneofsArray + * @type {OneOf[]} + * @readonly + */ + oneofsArray: { + get: function() { + return this._oneofsArray || (this._oneofsArray = util.toArray(this.oneofs)); + } + }, + + /** + * The registered constructor, if any registered, otherwise a generic constructor. + * Assigning a function replaces the internal constructor. If the function does not extend {@link Message} yet, its prototype will be setup accordingly and static methods will be populated. If it already extends {@link Message}, it will just replace the internal constructor. + * @name Type#ctor + * @type {Constructor<{}>} + */ + ctor: { + get: function() { + return this._ctor || (this.ctor = Type.generateConstructor(this)()); + }, + set: function(ctor) { + + // Ensure proper prototype + var prototype = ctor.prototype; + if (!(prototype instanceof Message)) { + (ctor.prototype = new Message()).constructor = ctor; + util.merge(ctor.prototype, prototype); + } + + // Classes and messages reference their reflected type + ctor.$type = ctor.prototype.$type = this; + + // Mix in static methods + util.merge(ctor, Message, true); + + this._ctor = ctor; + + // Messages have non-enumerable default values on their prototype + var i = 0; + for (; i < /* initializes */ this.fieldsArray.length; ++i) + this._fieldsArray[i].resolve(); // ensures a proper value + + // Messages have non-enumerable getters and setters for each virtual oneof field + var ctorProperties = {}; + for (i = 0; i < /* initializes */ this.oneofsArray.length; ++i) + ctorProperties[this._oneofsArray[i].resolve().name] = { + get: util.oneOfGetter(this._oneofsArray[i].oneof), + set: util.oneOfSetter(this._oneofsArray[i].oneof) + }; + if (i) + Object.defineProperties(ctor.prototype, ctorProperties); + } + } +}); + +/** + * Generates a constructor function for the specified type. + * @param {Type} mtype Message type + * @returns {Codegen} Codegen instance + */ +Type.generateConstructor = function generateConstructor(mtype) { + /* eslint-disable no-unexpected-multiline */ + var gen = util.codegen(["p"], mtype.name); + // explicitly initialize mutable object/array fields so that these aren't just inherited from the prototype + for (var i = 0, field; i < mtype.fieldsArray.length; ++i) + if ((field = mtype._fieldsArray[i]).map) gen + ("this%s={}", util.safeProp(field.name)); + else if (field.repeated) gen + ("this%s=[]", util.safeProp(field.name)); + return gen + ("if(p)for(var ks=Object.keys(p),i=0;i} [oneofs] Oneof descriptors + * @property {Object.} fields Field descriptors + * @property {number[][]} [extensions] Extension ranges + * @property {number[][]} [reserved] Reserved ranges + * @property {boolean} [group=false] Whether a legacy group or not + */ + +/** + * Creates a message type from a message type descriptor. + * @param {string} name Message name + * @param {IType} json Message type descriptor + * @returns {Type} Created message type + */ +Type.fromJSON = function fromJSON(name, json) { + var type = new Type(name, json.options); + type.extensions = json.extensions; + type.reserved = json.reserved; + var names = Object.keys(json.fields), + i = 0; + for (; i < names.length; ++i) + type.add( + ( typeof json.fields[names[i]].keyType !== "undefined" + ? MapField.fromJSON + : Field.fromJSON )(names[i], json.fields[names[i]]) + ); + if (json.oneofs) + for (names = Object.keys(json.oneofs), i = 0; i < names.length; ++i) + type.add(OneOf.fromJSON(names[i], json.oneofs[names[i]])); + if (json.nested) + for (names = Object.keys(json.nested), i = 0; i < names.length; ++i) { + var nested = json.nested[names[i]]; + type.add( // most to least likely + ( nested.id !== undefined + ? Field.fromJSON + : nested.fields !== undefined + ? Type.fromJSON + : nested.values !== undefined + ? Enum.fromJSON + : nested.methods !== undefined + ? Service.fromJSON + : Namespace.fromJSON )(names[i], nested) + ); + } + if (json.extensions && json.extensions.length) + type.extensions = json.extensions; + if (json.reserved && json.reserved.length) + type.reserved = json.reserved; + if (json.group) + type.group = true; + if (json.comment) + type.comment = json.comment; + return type; +}; + +/** + * Converts this message type to a message type descriptor. + * @param {IToJSONOptions} [toJSONOptions] JSON conversion options + * @returns {IType} Message type descriptor + */ +Type.prototype.toJSON = function toJSON(toJSONOptions) { + var inherited = Namespace.prototype.toJSON.call(this, toJSONOptions); + var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false; + return util.toObject([ + "options" , inherited && inherited.options || undefined, + "oneofs" , Namespace.arrayToJSON(this.oneofsArray, toJSONOptions), + "fields" , Namespace.arrayToJSON(this.fieldsArray.filter(function(obj) { return !obj.declaringField; }), toJSONOptions) || {}, + "extensions" , this.extensions && this.extensions.length ? this.extensions : undefined, + "reserved" , this.reserved && this.reserved.length ? this.reserved : undefined, + "group" , this.group || undefined, + "nested" , inherited && inherited.nested || undefined, + "comment" , keepComments ? this.comment : undefined + ]); +}; + +/** + * @override + */ +Type.prototype.resolveAll = function resolveAll() { + var fields = this.fieldsArray, i = 0; + while (i < fields.length) + fields[i++].resolve(); + var oneofs = this.oneofsArray; i = 0; + while (i < oneofs.length) + oneofs[i++].resolve(); + return Namespace.prototype.resolveAll.call(this); +}; + +/** + * @override + */ +Type.prototype.get = function get(name) { + return this.fields[name] + || this.oneofs && this.oneofs[name] + || this.nested && this.nested[name] + || null; +}; + +/** + * Adds a nested object to this type. + * @param {ReflectionObject} object Nested object to add + * @returns {Type} `this` + * @throws {TypeError} If arguments are invalid + * @throws {Error} If there is already a nested object with this name or, if a field, when there is already a field with this id + */ +Type.prototype.add = function add(object) { + + if (this.get(object.name)) + throw Error("duplicate name '" + object.name + "' in " + this); + + if (object instanceof Field && object.extend === undefined) { + // NOTE: Extension fields aren't actual fields on the declaring type, but nested objects. + // The root object takes care of adding distinct sister-fields to the respective extended + // type instead. + + // avoids calling the getter if not absolutely necessary because it's called quite frequently + if (this._fieldsById ? /* istanbul ignore next */ this._fieldsById[object.id] : this.fieldsById[object.id]) + throw Error("duplicate id " + object.id + " in " + this); + if (this.isReservedId(object.id)) + throw Error("id " + object.id + " is reserved in " + this); + if (this.isReservedName(object.name)) + throw Error("name '" + object.name + "' is reserved in " + this); + + if (object.parent) + object.parent.remove(object); + this.fields[object.name] = object; + object.message = this; + object.onAdd(this); + return clearCache(this); + } + if (object instanceof OneOf) { + if (!this.oneofs) + this.oneofs = {}; + this.oneofs[object.name] = object; + object.onAdd(this); + return clearCache(this); + } + return Namespace.prototype.add.call(this, object); +}; + +/** + * Removes a nested object from this type. + * @param {ReflectionObject} object Nested object to remove + * @returns {Type} `this` + * @throws {TypeError} If arguments are invalid + * @throws {Error} If `object` is not a member of this type + */ +Type.prototype.remove = function remove(object) { + if (object instanceof Field && object.extend === undefined) { + // See Type#add for the reason why extension fields are excluded here. + + /* istanbul ignore if */ + if (!this.fields || this.fields[object.name] !== object) + throw Error(object + " is not a member of " + this); + + delete this.fields[object.name]; + object.parent = null; + object.onRemove(this); + return clearCache(this); + } + if (object instanceof OneOf) { + + /* istanbul ignore if */ + if (!this.oneofs || this.oneofs[object.name] !== object) + throw Error(object + " is not a member of " + this); + + delete this.oneofs[object.name]; + object.parent = null; + object.onRemove(this); + return clearCache(this); + } + return Namespace.prototype.remove.call(this, object); +}; + +/** + * Tests if the specified id is reserved. + * @param {number} id Id to test + * @returns {boolean} `true` if reserved, otherwise `false` + */ +Type.prototype.isReservedId = function isReservedId(id) { + return Namespace.isReservedId(this.reserved, id); +}; + +/** + * Tests if the specified name is reserved. + * @param {string} name Name to test + * @returns {boolean} `true` if reserved, otherwise `false` + */ +Type.prototype.isReservedName = function isReservedName(name) { + return Namespace.isReservedName(this.reserved, name); +}; + +/** + * Creates a new message of this type using the specified properties. + * @param {Object.} [properties] Properties to set + * @returns {Message<{}>} Message instance + */ +Type.prototype.create = function create(properties) { + return new this.ctor(properties); +}; + +/** + * Sets up {@link Type#encode|encode}, {@link Type#decode|decode} and {@link Type#verify|verify}. + * @returns {Type} `this` + */ +Type.prototype.setup = function setup() { + // Sets up everything at once so that the prototype chain does not have to be re-evaluated + // multiple times (V8, soft-deopt prototype-check). + + var fullName = this.fullName, + types = []; + for (var i = 0; i < /* initializes */ this.fieldsArray.length; ++i) + types.push(this._fieldsArray[i].resolve().resolvedType); + + // Replace setup methods with type-specific generated functions + this.encode = encoder(this)({ + Writer : Writer, + types : types, + util : util + }); + this.decode = decoder(this)({ + Reader : Reader, + types : types, + util : util + }); + this.verify = verifier(this)({ + types : types, + util : util + }); + this.fromObject = converter.fromObject(this)({ + types : types, + util : util + }); + this.toObject = converter.toObject(this)({ + types : types, + util : util + }); + + // Inject custom wrappers for common types + var wrapper = wrappers[fullName]; + if (wrapper) { + var originalThis = Object.create(this); + // if (wrapper.fromObject) { + originalThis.fromObject = this.fromObject; + this.fromObject = wrapper.fromObject.bind(originalThis); + // } + // if (wrapper.toObject) { + originalThis.toObject = this.toObject; + this.toObject = wrapper.toObject.bind(originalThis); + // } + } + + return this; +}; + +/** + * Encodes a message of this type. Does not implicitly {@link Type#verify|verify} messages. + * @param {Message<{}>|Object.} message Message instance or plain object + * @param {Writer} [writer] Writer to encode to + * @returns {Writer} writer + */ +Type.prototype.encode = function encode_setup(message, writer) { + return this.setup().encode(message, writer); // overrides this method +}; + +/** + * Encodes a message of this type preceeded by its byte length as a varint. Does not implicitly {@link Type#verify|verify} messages. + * @param {Message<{}>|Object.} message Message instance or plain object + * @param {Writer} [writer] Writer to encode to + * @returns {Writer} writer + */ +Type.prototype.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); +}; + +/** + * Decodes a message of this type. + * @param {Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Length of the message, if known beforehand + * @returns {Message<{}>} Decoded message + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {util.ProtocolError<{}>} If required fields are missing + */ +Type.prototype.decode = function decode_setup(reader, length) { + return this.setup().decode(reader, length); // overrides this method +}; + +/** + * Decodes a message of this type preceeded by its byte length as a varint. + * @param {Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {Message<{}>} Decoded message + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {util.ProtocolError} If required fields are missing + */ +Type.prototype.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof Reader)) + reader = Reader.create(reader); + return this.decode(reader, reader.uint32()); +}; + +/** + * Verifies that field values are valid and that required fields are present. + * @param {Object.} message Plain object to verify + * @returns {null|string} `null` if valid, otherwise the reason why it is not + */ +Type.prototype.verify = function verify_setup(message) { + return this.setup().verify(message); // overrides this method +}; + +/** + * Creates a new message of this type from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object to convert + * @returns {Message<{}>} Message instance + */ +Type.prototype.fromObject = function fromObject(object) { + return this.setup().fromObject(object); +}; + +/** + * Conversion options as used by {@link Type#toObject} and {@link Message.toObject}. + * @interface IConversionOptions + * @property {Function} [longs] Long conversion type. + * Valid values are `String` and `Number` (the global types). + * Defaults to copy the present value, which is a possibly unsafe number without and a {@link Long} with a long library. + * @property {Function} [enums] Enum value conversion type. + * Only valid value is `String` (the global type). + * Defaults to copy the present value, which is the numeric id. + * @property {Function} [bytes] Bytes value conversion type. + * Valid values are `Array` and (a base64 encoded) `String` (the global types). + * Defaults to copy the present value, which usually is a Buffer under node and an Uint8Array in the browser. + * @property {boolean} [defaults=false] Also sets default values on the resulting object + * @property {boolean} [arrays=false] Sets empty arrays for missing repeated fields even if `defaults=false` + * @property {boolean} [objects=false] Sets empty objects for missing map fields even if `defaults=false` + * @property {boolean} [oneofs=false] Includes virtual oneof properties set to the present field's name, if any + * @property {boolean} [json=false] Performs additional JSON compatibility conversions, i.e. NaN and Infinity to strings + */ + +/** + * Creates a plain object from a message of this type. Also converts values to other types if specified. + * @param {Message<{}>} message Message instance + * @param {IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ +Type.prototype.toObject = function toObject(message, options) { + return this.setup().toObject(message, options); +}; + +/** + * Decorator function as returned by {@link Type.d} (TypeScript). + * @typedef TypeDecorator + * @type {function} + * @param {Constructor} target Target constructor + * @returns {undefined} + * @template T extends Message + */ + +/** + * Type decorator (TypeScript). + * @param {string} [typeName] Type name, defaults to the constructor's name + * @returns {TypeDecorator} Decorator function + * @template T extends Message + */ +Type.d = function decorateType(typeName) { + return function typeDecorator(target) { + util.decorateType(target, typeName); + }; +}; + + +/***/ }), + +/***/ "./node_modules/protobufjs/src/types.js": +/*!**********************************************!*\ + !*** ./node_modules/protobufjs/src/types.js ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** + * Common type constants. + * @namespace + */ +var types = exports; + +var util = __webpack_require__(/*! ./util */ "./node_modules/protobufjs/src/util.js"); + +var s = [ + "double", // 0 + "float", // 1 + "int32", // 2 + "uint32", // 3 + "sint32", // 4 + "fixed32", // 5 + "sfixed32", // 6 + "int64", // 7 + "uint64", // 8 + "sint64", // 9 + "fixed64", // 10 + "sfixed64", // 11 + "bool", // 12 + "string", // 13 + "bytes" // 14 +]; + +function bake(values, offset) { + var i = 0, o = {}; + offset |= 0; + while (i < values.length) o[s[i + offset]] = values[i++]; + return o; +} + +/** + * Basic type wire types. + * @type {Object.} + * @const + * @property {number} double=1 Fixed64 wire type + * @property {number} float=5 Fixed32 wire type + * @property {number} int32=0 Varint wire type + * @property {number} uint32=0 Varint wire type + * @property {number} sint32=0 Varint wire type + * @property {number} fixed32=5 Fixed32 wire type + * @property {number} sfixed32=5 Fixed32 wire type + * @property {number} int64=0 Varint wire type + * @property {number} uint64=0 Varint wire type + * @property {number} sint64=0 Varint wire type + * @property {number} fixed64=1 Fixed64 wire type + * @property {number} sfixed64=1 Fixed64 wire type + * @property {number} bool=0 Varint wire type + * @property {number} string=2 Ldelim wire type + * @property {number} bytes=2 Ldelim wire type + */ +types.basic = bake([ + /* double */ 1, + /* float */ 5, + /* int32 */ 0, + /* uint32 */ 0, + /* sint32 */ 0, + /* fixed32 */ 5, + /* sfixed32 */ 5, + /* int64 */ 0, + /* uint64 */ 0, + /* sint64 */ 0, + /* fixed64 */ 1, + /* sfixed64 */ 1, + /* bool */ 0, + /* string */ 2, + /* bytes */ 2 +]); + +/** + * Basic type defaults. + * @type {Object.} + * @const + * @property {number} double=0 Double default + * @property {number} float=0 Float default + * @property {number} int32=0 Int32 default + * @property {number} uint32=0 Uint32 default + * @property {number} sint32=0 Sint32 default + * @property {number} fixed32=0 Fixed32 default + * @property {number} sfixed32=0 Sfixed32 default + * @property {number} int64=0 Int64 default + * @property {number} uint64=0 Uint64 default + * @property {number} sint64=0 Sint32 default + * @property {number} fixed64=0 Fixed64 default + * @property {number} sfixed64=0 Sfixed64 default + * @property {boolean} bool=false Bool default + * @property {string} string="" String default + * @property {Array.} bytes=Array(0) Bytes default + * @property {null} message=null Message default + */ +types.defaults = bake([ + /* double */ 0, + /* float */ 0, + /* int32 */ 0, + /* uint32 */ 0, + /* sint32 */ 0, + /* fixed32 */ 0, + /* sfixed32 */ 0, + /* int64 */ 0, + /* uint64 */ 0, + /* sint64 */ 0, + /* fixed64 */ 0, + /* sfixed64 */ 0, + /* bool */ false, + /* string */ "", + /* bytes */ util.emptyArray, + /* message */ null +]); + +/** + * Basic long type wire types. + * @type {Object.} + * @const + * @property {number} int64=0 Varint wire type + * @property {number} uint64=0 Varint wire type + * @property {number} sint64=0 Varint wire type + * @property {number} fixed64=1 Fixed64 wire type + * @property {number} sfixed64=1 Fixed64 wire type + */ +types.long = bake([ + /* int64 */ 0, + /* uint64 */ 0, + /* sint64 */ 0, + /* fixed64 */ 1, + /* sfixed64 */ 1 +], 7); + +/** + * Allowed types for map keys with their associated wire type. + * @type {Object.} + * @const + * @property {number} int32=0 Varint wire type + * @property {number} uint32=0 Varint wire type + * @property {number} sint32=0 Varint wire type + * @property {number} fixed32=5 Fixed32 wire type + * @property {number} sfixed32=5 Fixed32 wire type + * @property {number} int64=0 Varint wire type + * @property {number} uint64=0 Varint wire type + * @property {number} sint64=0 Varint wire type + * @property {number} fixed64=1 Fixed64 wire type + * @property {number} sfixed64=1 Fixed64 wire type + * @property {number} bool=0 Varint wire type + * @property {number} string=2 Ldelim wire type + */ +types.mapKey = bake([ + /* int32 */ 0, + /* uint32 */ 0, + /* sint32 */ 0, + /* fixed32 */ 5, + /* sfixed32 */ 5, + /* int64 */ 0, + /* uint64 */ 0, + /* sint64 */ 0, + /* fixed64 */ 1, + /* sfixed64 */ 1, + /* bool */ 0, + /* string */ 2 +], 2); + +/** + * Allowed types for packed repeated fields with their associated wire type. + * @type {Object.} + * @const + * @property {number} double=1 Fixed64 wire type + * @property {number} float=5 Fixed32 wire type + * @property {number} int32=0 Varint wire type + * @property {number} uint32=0 Varint wire type + * @property {number} sint32=0 Varint wire type + * @property {number} fixed32=5 Fixed32 wire type + * @property {number} sfixed32=5 Fixed32 wire type + * @property {number} int64=0 Varint wire type + * @property {number} uint64=0 Varint wire type + * @property {number} sint64=0 Varint wire type + * @property {number} fixed64=1 Fixed64 wire type + * @property {number} sfixed64=1 Fixed64 wire type + * @property {number} bool=0 Varint wire type + */ +types.packed = bake([ + /* double */ 1, + /* float */ 5, + /* int32 */ 0, + /* uint32 */ 0, + /* sint32 */ 0, + /* fixed32 */ 5, + /* sfixed32 */ 5, + /* int64 */ 0, + /* uint64 */ 0, + /* sint64 */ 0, + /* fixed64 */ 1, + /* sfixed64 */ 1, + /* bool */ 0 +]); + + +/***/ }), + +/***/ "./node_modules/protobufjs/src/util.js": +/*!*********************************************!*\ + !*** ./node_modules/protobufjs/src/util.js ***! + \*********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** + * Various utility functions. + * @namespace + */ +var util = module.exports = __webpack_require__(/*! ./util/minimal */ "./node_modules/protobufjs/src/util/minimal.js"); + +var roots = __webpack_require__(/*! ./roots */ "./node_modules/protobufjs/src/roots.js"); + +var Type, // cyclic + Enum; + +util.codegen = __webpack_require__(/*! @protobufjs/codegen */ "./node_modules/@protobufjs/codegen/index.js"); +util.fetch = __webpack_require__(/*! @protobufjs/fetch */ "./node_modules/@protobufjs/fetch/index.js"); +util.path = __webpack_require__(/*! @protobufjs/path */ "./node_modules/@protobufjs/path/index.js"); + +/** + * Node's fs module if available. + * @type {Object.} + */ +util.fs = util.inquire("fs"); + +/** + * Converts an object's values to an array. + * @param {Object.} object Object to convert + * @returns {Array.<*>} Converted array + */ +util.toArray = function toArray(object) { + if (object) { + var keys = Object.keys(object), + array = new Array(keys.length), + index = 0; + while (index < keys.length) + array[index] = object[keys[index++]]; + return array; + } + return []; +}; + +/** + * Converts an array of keys immediately followed by their respective value to an object, omitting undefined values. + * @param {Array.<*>} array Array to convert + * @returns {Object.} Converted object + */ +util.toObject = function toObject(array) { + var object = {}, + index = 0; + while (index < array.length) { + var key = array[index++], + val = array[index++]; + if (val !== undefined) + object[key] = val; + } + return object; +}; + +var safePropBackslashRe = /\\/g, + safePropQuoteRe = /"/g; + +/** + * Tests whether the specified name is a reserved word in JS. + * @param {string} name Name to test + * @returns {boolean} `true` if reserved, otherwise `false` + */ +util.isReserved = function isReserved(name) { + return /^(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)$/.test(name); +}; + +/** + * Returns a safe property accessor for the specified property name. + * @param {string} prop Property name + * @returns {string} Safe accessor + */ +util.safeProp = function safeProp(prop) { + if (!/^[$\w_]+$/.test(prop) || util.isReserved(prop)) + return "[\"" + prop.replace(safePropBackslashRe, "\\\\").replace(safePropQuoteRe, "\\\"") + "\"]"; + return "." + prop; +}; + +/** + * Converts the first character of a string to upper case. + * @param {string} str String to convert + * @returns {string} Converted string + */ +util.ucFirst = function ucFirst(str) { + return str.charAt(0).toUpperCase() + str.substring(1); +}; + +var camelCaseRe = /_([a-z])/g; + +/** + * Converts a string to camel case. + * @param {string} str String to convert + * @returns {string} Converted string + */ +util.camelCase = function camelCase(str) { + return str.substring(0, 1) + + str.substring(1) + .replace(camelCaseRe, function($0, $1) { return $1.toUpperCase(); }); +}; + +/** + * Compares reflected fields by id. + * @param {Field} a First field + * @param {Field} b Second field + * @returns {number} Comparison value + */ +util.compareFieldsById = function compareFieldsById(a, b) { + return a.id - b.id; +}; + +/** + * Decorator helper for types (TypeScript). + * @param {Constructor} ctor Constructor function + * @param {string} [typeName] Type name, defaults to the constructor's name + * @returns {Type} Reflected type + * @template T extends Message + * @property {Root} root Decorators root + */ +util.decorateType = function decorateType(ctor, typeName) { + + /* istanbul ignore if */ + if (ctor.$type) { + if (typeName && ctor.$type.name !== typeName) { + util.decorateRoot.remove(ctor.$type); + ctor.$type.name = typeName; + util.decorateRoot.add(ctor.$type); + } + return ctor.$type; + } + + /* istanbul ignore next */ + if (!Type) + Type = __webpack_require__(/*! ./type */ "./node_modules/protobufjs/src/type.js"); + + var type = new Type(typeName || ctor.name); + util.decorateRoot.add(type); + type.ctor = ctor; // sets up .encode, .decode etc. + Object.defineProperty(ctor, "$type", { value: type, enumerable: false }); + Object.defineProperty(ctor.prototype, "$type", { value: type, enumerable: false }); + return type; +}; + +var decorateEnumIndex = 0; + +/** + * Decorator helper for enums (TypeScript). + * @param {Object} object Enum object + * @returns {Enum} Reflected enum + */ +util.decorateEnum = function decorateEnum(object) { + + /* istanbul ignore if */ + if (object.$type) + return object.$type; + + /* istanbul ignore next */ + if (!Enum) + Enum = __webpack_require__(/*! ./enum */ "./node_modules/protobufjs/src/enum.js"); + + var enm = new Enum("Enum" + decorateEnumIndex++, object); + util.decorateRoot.add(enm); + Object.defineProperty(object, "$type", { value: enm, enumerable: false }); + return enm; +}; + + +/** + * Sets the value of a property by property path. If a value already exists, it is turned to an array + * @param {Object.} dst Destination object + * @param {string} path dot '.' delimited path of the property to set + * @param {Object} value the value to set + * @returns {Object.} Destination object + */ +util.setProperty = function setProperty(dst, path, value) { + function setProp(dst, path, value) { + var part = path.shift(); + if (path.length > 0) { + dst[part] = setProp(dst[part] || {}, path, value); + } else { + var prevValue = dst[part]; + if (prevValue) + value = [].concat(prevValue).concat(value); + dst[part] = value; + } + return dst; + } + + if (typeof dst !== "object") + throw TypeError("dst must be an object"); + if (!path) + throw TypeError("path must be specified"); + + path = path.split("."); + return setProp(dst, path, value); +}; + +/** + * Decorator root (TypeScript). + * @name util.decorateRoot + * @type {Root} + * @readonly + */ +Object.defineProperty(util, "decorateRoot", { + get: function() { + return roots["decorated"] || (roots["decorated"] = new (__webpack_require__(/*! ./root */ "./node_modules/protobufjs/src/root.js"))()); + } +}); + + +/***/ }), + +/***/ "./node_modules/protobufjs/src/util/longbits.js": +/*!******************************************************!*\ + !*** ./node_modules/protobufjs/src/util/longbits.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +module.exports = LongBits; + +var util = __webpack_require__(/*! ../util/minimal */ "./node_modules/protobufjs/src/util/minimal.js"); + +/** + * Constructs new long bits. + * @classdesc Helper class for working with the low and high bits of a 64 bit value. + * @memberof util + * @constructor + * @param {number} lo Low 32 bits, unsigned + * @param {number} hi High 32 bits, unsigned + */ +function LongBits(lo, hi) { + + // note that the casts below are theoretically unnecessary as of today, but older statically + // generated converter code might still call the ctor with signed 32bits. kept for compat. + + /** + * Low bits. + * @type {number} + */ + this.lo = lo >>> 0; + + /** + * High bits. + * @type {number} + */ + this.hi = hi >>> 0; +} + +/** + * Zero bits. + * @memberof util.LongBits + * @type {util.LongBits} + */ +var zero = LongBits.zero = new LongBits(0, 0); + +zero.toNumber = function() { return 0; }; +zero.zzEncode = zero.zzDecode = function() { return this; }; +zero.length = function() { return 1; }; + +/** + * Zero hash. + * @memberof util.LongBits + * @type {string} + */ +var zeroHash = LongBits.zeroHash = "\0\0\0\0\0\0\0\0"; + +/** + * Constructs new long bits from the specified number. + * @param {number} value Value + * @returns {util.LongBits} Instance + */ +LongBits.fromNumber = function fromNumber(value) { + if (value === 0) + return zero; + var sign = value < 0; + if (sign) + value = -value; + var lo = value >>> 0, + hi = (value - lo) / 4294967296 >>> 0; + if (sign) { + hi = ~hi >>> 0; + lo = ~lo >>> 0; + if (++lo > 4294967295) { + lo = 0; + if (++hi > 4294967295) + hi = 0; + } + } + return new LongBits(lo, hi); +}; + +/** + * Constructs new long bits from a number, long or string. + * @param {Long|number|string} value Value + * @returns {util.LongBits} Instance + */ +LongBits.from = function from(value) { + if (typeof value === "number") + return LongBits.fromNumber(value); + if (util.isString(value)) { + /* istanbul ignore else */ + if (util.Long) + value = util.Long.fromString(value); + else + return LongBits.fromNumber(parseInt(value, 10)); + } + return value.low || value.high ? new LongBits(value.low >>> 0, value.high >>> 0) : zero; +}; + +/** + * Converts this long bits to a possibly unsafe JavaScript number. + * @param {boolean} [unsigned=false] Whether unsigned or not + * @returns {number} Possibly unsafe number + */ +LongBits.prototype.toNumber = function toNumber(unsigned) { + if (!unsigned && this.hi >>> 31) { + var lo = ~this.lo + 1 >>> 0, + hi = ~this.hi >>> 0; + if (!lo) + hi = hi + 1 >>> 0; + return -(lo + hi * 4294967296); + } + return this.lo + this.hi * 4294967296; +}; + +/** + * Converts this long bits to a long. + * @param {boolean} [unsigned=false] Whether unsigned or not + * @returns {Long} Long + */ +LongBits.prototype.toLong = function toLong(unsigned) { + return util.Long + ? new util.Long(this.lo | 0, this.hi | 0, Boolean(unsigned)) + /* istanbul ignore next */ + : { low: this.lo | 0, high: this.hi | 0, unsigned: Boolean(unsigned) }; +}; + +var charCodeAt = String.prototype.charCodeAt; + +/** + * Constructs new long bits from the specified 8 characters long hash. + * @param {string} hash Hash + * @returns {util.LongBits} Bits + */ +LongBits.fromHash = function fromHash(hash) { + if (hash === zeroHash) + return zero; + return new LongBits( + ( charCodeAt.call(hash, 0) + | charCodeAt.call(hash, 1) << 8 + | charCodeAt.call(hash, 2) << 16 + | charCodeAt.call(hash, 3) << 24) >>> 0 + , + ( charCodeAt.call(hash, 4) + | charCodeAt.call(hash, 5) << 8 + | charCodeAt.call(hash, 6) << 16 + | charCodeAt.call(hash, 7) << 24) >>> 0 + ); +}; + +/** + * Converts this long bits to a 8 characters long hash. + * @returns {string} Hash + */ +LongBits.prototype.toHash = function toHash() { + return String.fromCharCode( + this.lo & 255, + this.lo >>> 8 & 255, + this.lo >>> 16 & 255, + this.lo >>> 24 , + this.hi & 255, + this.hi >>> 8 & 255, + this.hi >>> 16 & 255, + this.hi >>> 24 + ); +}; + +/** + * Zig-zag encodes this long bits. + * @returns {util.LongBits} `this` + */ +LongBits.prototype.zzEncode = function zzEncode() { + var mask = this.hi >> 31; + this.hi = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0; + this.lo = ( this.lo << 1 ^ mask) >>> 0; + return this; +}; + +/** + * Zig-zag decodes this long bits. + * @returns {util.LongBits} `this` + */ +LongBits.prototype.zzDecode = function zzDecode() { + var mask = -(this.lo & 1); + this.lo = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0; + this.hi = ( this.hi >>> 1 ^ mask) >>> 0; + return this; +}; + +/** + * Calculates the length of this longbits when encoded as a varint. + * @returns {number} Length + */ +LongBits.prototype.length = function length() { + var part0 = this.lo, + part1 = (this.lo >>> 28 | this.hi << 4) >>> 0, + part2 = this.hi >>> 24; + return part2 === 0 + ? part1 === 0 + ? part0 < 16384 + ? part0 < 128 ? 1 : 2 + : part0 < 2097152 ? 3 : 4 + : part1 < 16384 + ? part1 < 128 ? 5 : 6 + : part1 < 2097152 ? 7 : 8 + : part2 < 128 ? 9 : 10; +}; + + +/***/ }), + +/***/ "./node_modules/protobufjs/src/util/minimal.js": +/*!*****************************************************!*\ + !*** ./node_modules/protobufjs/src/util/minimal.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(global) { +var util = exports; + +// used to return a Promise where callback is omitted +util.asPromise = __webpack_require__(/*! @protobufjs/aspromise */ "./node_modules/@protobufjs/aspromise/index.js"); + +// converts to / from base64 encoded strings +util.base64 = __webpack_require__(/*! @protobufjs/base64 */ "./node_modules/@protobufjs/base64/index.js"); + +// base class of rpc.Service +util.EventEmitter = __webpack_require__(/*! @protobufjs/eventemitter */ "./node_modules/@protobufjs/eventemitter/index.js"); + +// float handling accross browsers +util.float = __webpack_require__(/*! @protobufjs/float */ "./node_modules/@protobufjs/float/index.js"); + +// requires modules optionally and hides the call from bundlers +util.inquire = __webpack_require__(/*! @protobufjs/inquire */ "./node_modules/@protobufjs/inquire/index.js"); + +// converts to / from utf8 encoded strings +util.utf8 = __webpack_require__(/*! @protobufjs/utf8 */ "./node_modules/@protobufjs/utf8/index.js"); + +// provides a node-like buffer pool in the browser +util.pool = __webpack_require__(/*! @protobufjs/pool */ "./node_modules/@protobufjs/pool/index.js"); + +// utility to work with the low and high bits of a 64 bit value +util.LongBits = __webpack_require__(/*! ./longbits */ "./node_modules/protobufjs/src/util/longbits.js"); + +/** + * Whether running within node or not. + * @memberof util + * @type {boolean} + */ +util.isNode = Boolean(typeof global !== "undefined" + && global + && global.process + && global.process.versions + && global.process.versions.node); + +/** + * Global object reference. + * @memberof util + * @type {Object} + */ +util.global = util.isNode && global + || typeof window !== "undefined" && window + || typeof self !== "undefined" && self + || this; // eslint-disable-line no-invalid-this + +/** + * An immuable empty array. + * @memberof util + * @type {Array.<*>} + * @const + */ +util.emptyArray = Object.freeze ? Object.freeze([]) : /* istanbul ignore next */ []; // used on prototypes + +/** + * An immutable empty object. + * @type {Object} + * @const + */ +util.emptyObject = Object.freeze ? Object.freeze({}) : /* istanbul ignore next */ {}; // used on prototypes + +/** + * Tests if the specified value is an integer. + * @function + * @param {*} value Value to test + * @returns {boolean} `true` if the value is an integer + */ +util.isInteger = Number.isInteger || /* istanbul ignore next */ function isInteger(value) { + return typeof value === "number" && isFinite(value) && Math.floor(value) === value; +}; + +/** + * Tests if the specified value is a string. + * @param {*} value Value to test + * @returns {boolean} `true` if the value is a string + */ +util.isString = function isString(value) { + return typeof value === "string" || value instanceof String; +}; + +/** + * Tests if the specified value is a non-null object. + * @param {*} value Value to test + * @returns {boolean} `true` if the value is a non-null object + */ +util.isObject = function isObject(value) { + return value && typeof value === "object"; +}; + +/** + * Checks if a property on a message is considered to be present. + * This is an alias of {@link util.isSet}. + * @function + * @param {Object} obj Plain object or message instance + * @param {string} prop Property name + * @returns {boolean} `true` if considered to be present, otherwise `false` + */ +util.isset = + +/** + * Checks if a property on a message is considered to be present. + * @param {Object} obj Plain object or message instance + * @param {string} prop Property name + * @returns {boolean} `true` if considered to be present, otherwise `false` + */ +util.isSet = function isSet(obj, prop) { + var value = obj[prop]; + if (value != null && obj.hasOwnProperty(prop)) // eslint-disable-line eqeqeq, no-prototype-builtins + return typeof value !== "object" || (Array.isArray(value) ? value.length : Object.keys(value).length) > 0; + return false; +}; + +/** + * Any compatible Buffer instance. + * This is a minimal stand-alone definition of a Buffer instance. The actual type is that exported by node's typings. + * @interface Buffer + * @extends Uint8Array + */ + +/** + * Node's Buffer class if available. + * @type {Constructor} + */ +util.Buffer = (function() { + try { + var Buffer = util.inquire("buffer").Buffer; + // refuse to use non-node buffers if not explicitly assigned (perf reasons): + return Buffer.prototype.utf8Write ? Buffer : /* istanbul ignore next */ null; + } catch (e) { + /* istanbul ignore next */ + return null; + } +})(); + +// Internal alias of or polyfull for Buffer.from. +util._Buffer_from = null; + +// Internal alias of or polyfill for Buffer.allocUnsafe. +util._Buffer_allocUnsafe = null; + +/** + * Creates a new buffer of whatever type supported by the environment. + * @param {number|number[]} [sizeOrArray=0] Buffer size or number array + * @returns {Uint8Array|Buffer} Buffer + */ +util.newBuffer = function newBuffer(sizeOrArray) { + /* istanbul ignore next */ + return typeof sizeOrArray === "number" + ? util.Buffer + ? util._Buffer_allocUnsafe(sizeOrArray) + : new util.Array(sizeOrArray) + : util.Buffer + ? util._Buffer_from(sizeOrArray) + : typeof Uint8Array === "undefined" + ? sizeOrArray + : new Uint8Array(sizeOrArray); +}; + +/** + * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`. + * @type {Constructor} + */ +util.Array = typeof Uint8Array !== "undefined" ? Uint8Array /* istanbul ignore next */ : Array; + +/** + * Any compatible Long instance. + * This is a minimal stand-alone definition of a Long instance. The actual type is that exported by long.js. + * @interface Long + * @property {number} low Low bits + * @property {number} high High bits + * @property {boolean} unsigned Whether unsigned or not + */ + +/** + * Long.js's Long class if available. + * @type {Constructor} + */ +util.Long = /* istanbul ignore next */ util.global.dcodeIO && /* istanbul ignore next */ util.global.dcodeIO.Long + || /* istanbul ignore next */ util.global.Long + || util.inquire("long"); + +/** + * Regular expression used to verify 2 bit (`bool`) map keys. + * @type {RegExp} + * @const + */ +util.key2Re = /^true|false|0|1$/; + +/** + * Regular expression used to verify 32 bit (`int32` etc.) map keys. + * @type {RegExp} + * @const + */ +util.key32Re = /^-?(?:0|[1-9][0-9]*)$/; + +/** + * Regular expression used to verify 64 bit (`int64` etc.) map keys. + * @type {RegExp} + * @const + */ +util.key64Re = /^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/; + +/** + * Converts a number or long to an 8 characters long hash string. + * @param {Long|number} value Value to convert + * @returns {string} Hash + */ +util.longToHash = function longToHash(value) { + return value + ? util.LongBits.from(value).toHash() + : util.LongBits.zeroHash; +}; + +/** + * Converts an 8 characters long hash string to a long or number. + * @param {string} hash Hash + * @param {boolean} [unsigned=false] Whether unsigned or not + * @returns {Long|number} Original value + */ +util.longFromHash = function longFromHash(hash, unsigned) { + var bits = util.LongBits.fromHash(hash); + if (util.Long) + return util.Long.fromBits(bits.lo, bits.hi, unsigned); + return bits.toNumber(Boolean(unsigned)); +}; + +/** + * Merges the properties of the source object into the destination object. + * @memberof util + * @param {Object.} dst Destination object + * @param {Object.} src Source object + * @param {boolean} [ifNotSet=false] Merges only if the key is not already set + * @returns {Object.} Destination object + */ +function merge(dst, src, ifNotSet) { // used by converters + for (var keys = Object.keys(src), i = 0; i < keys.length; ++i) + if (dst[keys[i]] === undefined || !ifNotSet) + dst[keys[i]] = src[keys[i]]; + return dst; +} + +util.merge = merge; + +/** + * Converts the first character of a string to lower case. + * @param {string} str String to convert + * @returns {string} Converted string + */ +util.lcFirst = function lcFirst(str) { + return str.charAt(0).toLowerCase() + str.substring(1); +}; + +/** + * Creates a custom error constructor. + * @memberof util + * @param {string} name Error name + * @returns {Constructor} Custom error constructor + */ +function newError(name) { + + function CustomError(message, properties) { + + if (!(this instanceof CustomError)) + return new CustomError(message, properties); + + // Error.call(this, message); + // ^ just returns a new error instance because the ctor can be called as a function + + Object.defineProperty(this, "message", { get: function() { return message; } }); + + /* istanbul ignore next */ + if (Error.captureStackTrace) // node + Error.captureStackTrace(this, CustomError); + else + Object.defineProperty(this, "stack", { value: new Error().stack || "" }); + + if (properties) + merge(this, properties); + } + + (CustomError.prototype = Object.create(Error.prototype)).constructor = CustomError; + + Object.defineProperty(CustomError.prototype, "name", { get: function() { return name; } }); + + CustomError.prototype.toString = function toString() { + return this.name + ": " + this.message; + }; + + return CustomError; +} + +util.newError = newError; + +/** + * Constructs a new protocol error. + * @classdesc Error subclass indicating a protocol specifc error. + * @memberof util + * @extends Error + * @template T extends Message + * @constructor + * @param {string} message Error message + * @param {Object.} [properties] Additional properties + * @example + * try { + * MyMessage.decode(someBuffer); // throws if required fields are missing + * } catch (e) { + * if (e instanceof ProtocolError && e.instance) + * console.log("decoded so far: " + JSON.stringify(e.instance)); + * } + */ +util.ProtocolError = newError("ProtocolError"); + +/** + * So far decoded message instance. + * @name util.ProtocolError#instance + * @type {Message} + */ + +/** + * A OneOf getter as returned by {@link util.oneOfGetter}. + * @typedef OneOfGetter + * @type {function} + * @returns {string|undefined} Set field name, if any + */ + +/** + * Builds a getter for a oneof's present field name. + * @param {string[]} fieldNames Field names + * @returns {OneOfGetter} Unbound getter + */ +util.oneOfGetter = function getOneOf(fieldNames) { + var fieldMap = {}; + for (var i = 0; i < fieldNames.length; ++i) + fieldMap[fieldNames[i]] = 1; + + /** + * @returns {string|undefined} Set field name, if any + * @this Object + * @ignore + */ + return function() { // eslint-disable-line consistent-return + for (var keys = Object.keys(this), i = keys.length - 1; i > -1; --i) + if (fieldMap[keys[i]] === 1 && this[keys[i]] !== undefined && this[keys[i]] !== null) + return keys[i]; + }; +}; + +/** + * A OneOf setter as returned by {@link util.oneOfSetter}. + * @typedef OneOfSetter + * @type {function} + * @param {string|undefined} value Field name + * @returns {undefined} + */ + +/** + * Builds a setter for a oneof's present field name. + * @param {string[]} fieldNames Field names + * @returns {OneOfSetter} Unbound setter + */ +util.oneOfSetter = function setOneOf(fieldNames) { + + /** + * @param {string} name Field name + * @returns {undefined} + * @this Object + * @ignore + */ + return function(name) { + for (var i = 0; i < fieldNames.length; ++i) + if (fieldNames[i] !== name) + delete this[fieldNames[i]]; + }; +}; + +/** + * Default conversion options used for {@link Message#toJSON} implementations. + * + * These options are close to proto3's JSON mapping with the exception that internal types like Any are handled just like messages. More precisely: + * + * - Longs become strings + * - Enums become string keys + * - Bytes become base64 encoded strings + * - (Sub-)Messages become plain objects + * - Maps become plain objects with all string keys + * - Repeated fields become arrays + * - NaN and Infinity for float and double fields become strings + * + * @type {IConversionOptions} + * @see https://developers.google.com/protocol-buffers/docs/proto3?hl=en#json + */ +util.toJSONOptions = { + longs: String, + enums: String, + bytes: String, + json: true +}; + +// Sets up buffer utility according to the environment (called in index-minimal) +util._configure = function() { + var Buffer = util.Buffer; + /* istanbul ignore if */ + if (!Buffer) { + util._Buffer_from = util._Buffer_allocUnsafe = null; + return; + } + // because node 4.x buffers are incompatible & immutable + // see: https://github.com/dcodeIO/protobuf.js/pull/665 + util._Buffer_from = Buffer.from !== Uint8Array.from && Buffer.from || + /* istanbul ignore next */ + function Buffer_from(value, encoding) { + return new Buffer(value, encoding); + }; + util._Buffer_allocUnsafe = Buffer.allocUnsafe || + /* istanbul ignore next */ + function Buffer_allocUnsafe(size) { + return new Buffer(size); + }; +}; + +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) + +/***/ }), + +/***/ "./node_modules/protobufjs/src/verifier.js": +/*!*************************************************!*\ + !*** ./node_modules/protobufjs/src/verifier.js ***! + \*************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +module.exports = verifier; + +var Enum = __webpack_require__(/*! ./enum */ "./node_modules/protobufjs/src/enum.js"), + util = __webpack_require__(/*! ./util */ "./node_modules/protobufjs/src/util.js"); + +function invalid(field, expected) { + return field.name + ": " + expected + (field.repeated && expected !== "array" ? "[]" : field.map && expected !== "object" ? "{k:"+field.keyType+"}" : "") + " expected"; +} + +/** + * Generates a partial value verifier. + * @param {Codegen} gen Codegen instance + * @param {Field} field Reflected field + * @param {number} fieldIndex Field index + * @param {string} ref Variable reference + * @returns {Codegen} Codegen instance + * @ignore + */ +function genVerifyValue(gen, field, fieldIndex, ref) { + /* eslint-disable no-unexpected-multiline */ + if (field.resolvedType) { + if (field.resolvedType instanceof Enum) { gen + ("switch(%s){", ref) + ("default:") + ("return%j", invalid(field, "enum value")); + for (var keys = Object.keys(field.resolvedType.values), j = 0; j < keys.length; ++j) gen + ("case %i:", field.resolvedType.values[keys[j]]); + gen + ("break") + ("}"); + } else { + gen + ("{") + ("var e=types[%i].verify(%s);", fieldIndex, ref) + ("if(e)") + ("return%j+e", field.name + ".") + ("}"); + } + } else { + switch (field.type) { + case "int32": + case "uint32": + case "sint32": + case "fixed32": + case "sfixed32": gen + ("if(!util.isInteger(%s))", ref) + ("return%j", invalid(field, "integer")); + break; + case "int64": + case "uint64": + case "sint64": + case "fixed64": + case "sfixed64": gen + ("if(!util.isInteger(%s)&&!(%s&&util.isInteger(%s.low)&&util.isInteger(%s.high)))", ref, ref, ref, ref) + ("return%j", invalid(field, "integer|Long")); + break; + case "float": + case "double": gen + ("if(typeof %s!==\"number\")", ref) + ("return%j", invalid(field, "number")); + break; + case "bool": gen + ("if(typeof %s!==\"boolean\")", ref) + ("return%j", invalid(field, "boolean")); + break; + case "string": gen + ("if(!util.isString(%s))", ref) + ("return%j", invalid(field, "string")); + break; + case "bytes": gen + ("if(!(%s&&typeof %s.length===\"number\"||util.isString(%s)))", ref, ref, ref) + ("return%j", invalid(field, "buffer")); + break; + } + } + return gen; + /* eslint-enable no-unexpected-multiline */ +} + +/** + * Generates a partial key verifier. + * @param {Codegen} gen Codegen instance + * @param {Field} field Reflected field + * @param {string} ref Variable reference + * @returns {Codegen} Codegen instance + * @ignore + */ +function genVerifyKey(gen, field, ref) { + /* eslint-disable no-unexpected-multiline */ + switch (field.keyType) { + case "int32": + case "uint32": + case "sint32": + case "fixed32": + case "sfixed32": gen + ("if(!util.key32Re.test(%s))", ref) + ("return%j", invalid(field, "integer key")); + break; + case "int64": + case "uint64": + case "sint64": + case "fixed64": + case "sfixed64": gen + ("if(!util.key64Re.test(%s))", ref) // see comment above: x is ok, d is not + ("return%j", invalid(field, "integer|Long key")); + break; + case "bool": gen + ("if(!util.key2Re.test(%s))", ref) + ("return%j", invalid(field, "boolean key")); + break; + } + return gen; + /* eslint-enable no-unexpected-multiline */ +} + +/** + * Generates a verifier specific to the specified message type. + * @param {Type} mtype Message type + * @returns {Codegen} Codegen instance + */ +function verifier(mtype) { + /* eslint-disable no-unexpected-multiline */ + + var gen = util.codegen(["m"], mtype.name + "$verify") + ("if(typeof m!==\"object\"||m===null)") + ("return%j", "object expected"); + var oneofs = mtype.oneofsArray, + seenFirstField = {}; + if (oneofs.length) gen + ("var p={}"); + + for (var i = 0; i < /* initializes */ mtype.fieldsArray.length; ++i) { + var field = mtype._fieldsArray[i].resolve(), + ref = "m" + util.safeProp(field.name); + + if (field.optional) gen + ("if(%s!=null&&m.hasOwnProperty(%j)){", ref, field.name); // !== undefined && !== null + + // map fields + if (field.map) { gen + ("if(!util.isObject(%s))", ref) + ("return%j", invalid(field, "object")) + ("var k=Object.keys(%s)", ref) + ("for(var i=0;i} + * @const + */ +var wrappers = exports; + +var Message = __webpack_require__(/*! ./message */ "./node_modules/protobufjs/src/message.js"); + +/** + * From object converter part of an {@link IWrapper}. + * @typedef WrapperFromObjectConverter + * @type {function} + * @param {Object.} object Plain object + * @returns {Message<{}>} Message instance + * @this Type + */ + +/** + * To object converter part of an {@link IWrapper}. + * @typedef WrapperToObjectConverter + * @type {function} + * @param {Message<{}>} message Message instance + * @param {IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + * @this Type + */ + +/** + * Common type wrapper part of {@link wrappers}. + * @interface IWrapper + * @property {WrapperFromObjectConverter} [fromObject] From object converter + * @property {WrapperToObjectConverter} [toObject] To object converter + */ + +// Custom wrapper for Any +wrappers[".google.protobuf.Any"] = { + + fromObject: function(object) { + + // unwrap value type if mapped + if (object && object["@type"]) { + // Only use fully qualified type name after the last '/' + var name = object["@type"].substring(object["@type"].lastIndexOf("/") + 1); + var type = this.lookup(name); + /* istanbul ignore else */ + if (type) { + // type_url does not accept leading "." + var type_url = object["@type"].charAt(0) === "." ? + object["@type"].substr(1) : object["@type"]; + // type_url prefix is optional, but path seperator is required + if (type_url.indexOf("/") === -1) { + type_url = "/" + type_url; + } + return this.create({ + type_url: type_url, + value: type.encode(type.fromObject(object)).finish() + }); + } + } + + return this.fromObject(object); + }, + + toObject: function(message, options) { + + // Default prefix + var googleApi = "type.googleapis.com/"; + var prefix = ""; + var name = ""; + + // decode value if requested and unmapped + if (options && options.json && message.type_url && message.value) { + // Only use fully qualified type name after the last '/' + name = message.type_url.substring(message.type_url.lastIndexOf("/") + 1); + // Separate the prefix used + prefix = message.type_url.substring(0, message.type_url.lastIndexOf("/") + 1); + var type = this.lookup(name); + /* istanbul ignore else */ + if (type) + message = type.decode(message.value); + } + + // wrap value if unmapped + if (!(message instanceof this.ctor) && message instanceof Message) { + var object = message.$type.toObject(message, options); + var messageName = message.$type.fullName[0] === "." ? + message.$type.fullName.substr(1) : message.$type.fullName; + // Default to type.googleapis.com prefix if no prefix is used + if (prefix === "") { + prefix = googleApi; + } + name = prefix + messageName; + object["@type"] = name; + return object; + } + + return this.toObject(message, options); + } +}; + + +/***/ }), + +/***/ "./node_modules/protobufjs/src/writer.js": +/*!***********************************************!*\ + !*** ./node_modules/protobufjs/src/writer.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +module.exports = Writer; + +var util = __webpack_require__(/*! ./util/minimal */ "./node_modules/protobufjs/src/util/minimal.js"); + +var BufferWriter; // cyclic + +var LongBits = util.LongBits, + base64 = util.base64, + utf8 = util.utf8; + +/** + * Constructs a new writer operation instance. + * @classdesc Scheduled writer operation. + * @constructor + * @param {function(*, Uint8Array, number)} fn Function to call + * @param {number} len Value byte length + * @param {*} val Value to write + * @ignore + */ +function Op(fn, len, val) { + + /** + * Function to call. + * @type {function(Uint8Array, number, *)} + */ + this.fn = fn; + + /** + * Value byte length. + * @type {number} + */ + this.len = len; + + /** + * Next operation. + * @type {Writer.Op|undefined} + */ + this.next = undefined; + + /** + * Value to write. + * @type {*} + */ + this.val = val; // type varies +} + +/* istanbul ignore next */ +function noop() {} // eslint-disable-line no-empty-function + +/** + * Constructs a new writer state instance. + * @classdesc Copied writer state. + * @memberof Writer + * @constructor + * @param {Writer} writer Writer to copy state from + * @ignore + */ +function State(writer) { + + /** + * Current head. + * @type {Writer.Op} + */ + this.head = writer.head; + + /** + * Current tail. + * @type {Writer.Op} + */ + this.tail = writer.tail; + + /** + * Current buffer length. + * @type {number} + */ + this.len = writer.len; + + /** + * Next state. + * @type {State|null} + */ + this.next = writer.states; +} + +/** + * Constructs a new writer instance. + * @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`. + * @constructor + */ +function Writer() { + + /** + * Current length. + * @type {number} + */ + this.len = 0; + + /** + * Operations head. + * @type {Object} + */ + this.head = new Op(noop, 0, 0); + + /** + * Operations tail + * @type {Object} + */ + this.tail = this.head; + + /** + * Linked forked states. + * @type {Object|null} + */ + this.states = null; + + // When a value is written, the writer calculates its byte length and puts it into a linked + // list of operations to perform when finish() is called. This both allows us to allocate + // buffers of the exact required size and reduces the amount of work we have to do compared + // to first calculating over objects and then encoding over objects. In our case, the encoding + // part is just a linked list walk calling operations with already prepared values. +} + +var create = function create() { + return util.Buffer + ? function create_buffer_setup() { + return (Writer.create = function create_buffer() { + return new BufferWriter(); + })(); + } + /* istanbul ignore next */ + : function create_array() { + return new Writer(); + }; +}; + +/** + * Creates a new writer. + * @function + * @returns {BufferWriter|Writer} A {@link BufferWriter} when Buffers are supported, otherwise a {@link Writer} + */ +Writer.create = create(); + +/** + * Allocates a buffer of the specified size. + * @param {number} size Buffer size + * @returns {Uint8Array} Buffer + */ +Writer.alloc = function alloc(size) { + return new util.Array(size); +}; + +// Use Uint8Array buffer pool in the browser, just like node does with buffers +/* istanbul ignore else */ +if (util.Array !== Array) + Writer.alloc = util.pool(Writer.alloc, util.Array.prototype.subarray); + +/** + * Pushes a new operation to the queue. + * @param {function(Uint8Array, number, *)} fn Function to call + * @param {number} len Value byte length + * @param {number} val Value to write + * @returns {Writer} `this` + * @private + */ +Writer.prototype._push = function push(fn, len, val) { + this.tail = this.tail.next = new Op(fn, len, val); + this.len += len; + return this; +}; + +function writeByte(val, buf, pos) { + buf[pos] = val & 255; +} + +function writeVarint32(val, buf, pos) { + while (val > 127) { + buf[pos++] = val & 127 | 128; + val >>>= 7; + } + buf[pos] = val; +} + +/** + * Constructs a new varint writer operation instance. + * @classdesc Scheduled varint writer operation. + * @extends Op + * @constructor + * @param {number} len Value byte length + * @param {number} val Value to write + * @ignore + */ +function VarintOp(len, val) { + this.len = len; + this.next = undefined; + this.val = val; +} + +VarintOp.prototype = Object.create(Op.prototype); +VarintOp.prototype.fn = writeVarint32; + +/** + * Writes an unsigned 32 bit value as a varint. + * @param {number} value Value to write + * @returns {Writer} `this` + */ +Writer.prototype.uint32 = function write_uint32(value) { + // here, the call to this.push has been inlined and a varint specific Op subclass is used. + // uint32 is by far the most frequently used operation and benefits significantly from this. + this.len += (this.tail = this.tail.next = new VarintOp( + (value = value >>> 0) + < 128 ? 1 + : value < 16384 ? 2 + : value < 2097152 ? 3 + : value < 268435456 ? 4 + : 5, + value)).len; + return this; +}; + +/** + * Writes a signed 32 bit value as a varint. + * @function + * @param {number} value Value to write + * @returns {Writer} `this` + */ +Writer.prototype.int32 = function write_int32(value) { + return value < 0 + ? this._push(writeVarint64, 10, LongBits.fromNumber(value)) // 10 bytes per spec + : this.uint32(value); +}; + +/** + * Writes a 32 bit value as a varint, zig-zag encoded. + * @param {number} value Value to write + * @returns {Writer} `this` + */ +Writer.prototype.sint32 = function write_sint32(value) { + return this.uint32((value << 1 ^ value >> 31) >>> 0); +}; + +function writeVarint64(val, buf, pos) { + while (val.hi) { + buf[pos++] = val.lo & 127 | 128; + val.lo = (val.lo >>> 7 | val.hi << 25) >>> 0; + val.hi >>>= 7; + } + while (val.lo > 127) { + buf[pos++] = val.lo & 127 | 128; + val.lo = val.lo >>> 7; + } + buf[pos++] = val.lo; +} + +/** + * Writes an unsigned 64 bit value as a varint. + * @param {Long|number|string} value Value to write + * @returns {Writer} `this` + * @throws {TypeError} If `value` is a string and no long library is present. + */ +Writer.prototype.uint64 = function write_uint64(value) { + var bits = LongBits.from(value); + return this._push(writeVarint64, bits.length(), bits); +}; + +/** + * Writes a signed 64 bit value as a varint. + * @function + * @param {Long|number|string} value Value to write + * @returns {Writer} `this` + * @throws {TypeError} If `value` is a string and no long library is present. + */ +Writer.prototype.int64 = Writer.prototype.uint64; + +/** + * Writes a signed 64 bit value as a varint, zig-zag encoded. + * @param {Long|number|string} value Value to write + * @returns {Writer} `this` + * @throws {TypeError} If `value` is a string and no long library is present. + */ +Writer.prototype.sint64 = function write_sint64(value) { + var bits = LongBits.from(value).zzEncode(); + return this._push(writeVarint64, bits.length(), bits); +}; + +/** + * Writes a boolish value as a varint. + * @param {boolean} value Value to write + * @returns {Writer} `this` + */ +Writer.prototype.bool = function write_bool(value) { + return this._push(writeByte, 1, value ? 1 : 0); +}; + +function writeFixed32(val, buf, pos) { + buf[pos ] = val & 255; + buf[pos + 1] = val >>> 8 & 255; + buf[pos + 2] = val >>> 16 & 255; + buf[pos + 3] = val >>> 24; +} + +/** + * Writes an unsigned 32 bit value as fixed 32 bits. + * @param {number} value Value to write + * @returns {Writer} `this` + */ +Writer.prototype.fixed32 = function write_fixed32(value) { + return this._push(writeFixed32, 4, value >>> 0); +}; + +/** + * Writes a signed 32 bit value as fixed 32 bits. + * @function + * @param {number} value Value to write + * @returns {Writer} `this` + */ +Writer.prototype.sfixed32 = Writer.prototype.fixed32; + +/** + * Writes an unsigned 64 bit value as fixed 64 bits. + * @param {Long|number|string} value Value to write + * @returns {Writer} `this` + * @throws {TypeError} If `value` is a string and no long library is present. + */ +Writer.prototype.fixed64 = function write_fixed64(value) { + var bits = LongBits.from(value); + return this._push(writeFixed32, 4, bits.lo)._push(writeFixed32, 4, bits.hi); +}; + +/** + * Writes a signed 64 bit value as fixed 64 bits. + * @function + * @param {Long|number|string} value Value to write + * @returns {Writer} `this` + * @throws {TypeError} If `value` is a string and no long library is present. + */ +Writer.prototype.sfixed64 = Writer.prototype.fixed64; + +/** + * Writes a float (32 bit). + * @function + * @param {number} value Value to write + * @returns {Writer} `this` + */ +Writer.prototype.float = function write_float(value) { + return this._push(util.float.writeFloatLE, 4, value); +}; + +/** + * Writes a double (64 bit float). + * @function + * @param {number} value Value to write + * @returns {Writer} `this` + */ +Writer.prototype.double = function write_double(value) { + return this._push(util.float.writeDoubleLE, 8, value); +}; + +var writeBytes = util.Array.prototype.set + ? function writeBytes_set(val, buf, pos) { + buf.set(val, pos); // also works for plain array values + } + /* istanbul ignore next */ + : function writeBytes_for(val, buf, pos) { + for (var i = 0; i < val.length; ++i) + buf[pos + i] = val[i]; + }; + +/** + * Writes a sequence of bytes. + * @param {Uint8Array|string} value Buffer or base64 encoded string to write + * @returns {Writer} `this` + */ +Writer.prototype.bytes = function write_bytes(value) { + var len = value.length >>> 0; + if (!len) + return this._push(writeByte, 1, 0); + if (util.isString(value)) { + var buf = Writer.alloc(len = base64.length(value)); + base64.decode(value, buf, 0); + value = buf; + } + return this.uint32(len)._push(writeBytes, len, value); +}; + +/** + * Writes a string. + * @param {string} value Value to write + * @returns {Writer} `this` + */ +Writer.prototype.string = function write_string(value) { + var len = utf8.length(value); + return len + ? this.uint32(len)._push(utf8.write, len, value) + : this._push(writeByte, 1, 0); +}; + +/** + * Forks this writer's state by pushing it to a stack. + * Calling {@link Writer#reset|reset} or {@link Writer#ldelim|ldelim} resets the writer to the previous state. + * @returns {Writer} `this` + */ +Writer.prototype.fork = function fork() { + this.states = new State(this); + this.head = this.tail = new Op(noop, 0, 0); + this.len = 0; + return this; +}; + +/** + * Resets this instance to the last state. + * @returns {Writer} `this` + */ +Writer.prototype.reset = function reset() { + if (this.states) { + this.head = this.states.head; + this.tail = this.states.tail; + this.len = this.states.len; + this.states = this.states.next; + } else { + this.head = this.tail = new Op(noop, 0, 0); + this.len = 0; + } + return this; +}; + +/** + * Resets to the last state and appends the fork state's current write length as a varint followed by its operations. + * @returns {Writer} `this` + */ +Writer.prototype.ldelim = function ldelim() { + var head = this.head, + tail = this.tail, + len = this.len; + this.reset().uint32(len); + if (len) { + this.tail.next = head.next; // skip noop + this.tail = tail; + this.len += len; + } + return this; +}; + +/** + * Finishes the write operation. + * @returns {Uint8Array} Finished buffer + */ +Writer.prototype.finish = function finish() { + var head = this.head.next, // skip noop + buf = this.constructor.alloc(this.len), + pos = 0; + while (head) { + head.fn(head.val, buf, pos); + pos += head.len; + head = head.next; + } + // this.head = this.tail = null; + return buf; +}; + +Writer._configure = function(BufferWriter_) { + BufferWriter = BufferWriter_; + Writer.create = create(); + BufferWriter._configure(); +}; + + +/***/ }), + +/***/ "./node_modules/protobufjs/src/writer_buffer.js": +/*!******************************************************!*\ + !*** ./node_modules/protobufjs/src/writer_buffer.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +module.exports = BufferWriter; + +// extends Writer +var Writer = __webpack_require__(/*! ./writer */ "./node_modules/protobufjs/src/writer.js"); +(BufferWriter.prototype = Object.create(Writer.prototype)).constructor = BufferWriter; + +var util = __webpack_require__(/*! ./util/minimal */ "./node_modules/protobufjs/src/util/minimal.js"); + +/** + * Constructs a new buffer writer instance. + * @classdesc Wire format writer using node buffers. + * @extends Writer + * @constructor + */ +function BufferWriter() { + Writer.call(this); +} + +BufferWriter._configure = function () { + /** + * Allocates a buffer of the specified size. + * @function + * @param {number} size Buffer size + * @returns {Buffer} Buffer + */ + BufferWriter.alloc = util._Buffer_allocUnsafe; + + BufferWriter.writeBytesBuffer = util.Buffer && util.Buffer.prototype instanceof Uint8Array && util.Buffer.prototype.set.name === "set" + ? function writeBytesBuffer_set(val, buf, pos) { + buf.set(val, pos); // faster than copy (requires node >= 4 where Buffers extend Uint8Array and set is properly inherited) + // also works for plain array values + } + /* istanbul ignore next */ + : function writeBytesBuffer_copy(val, buf, pos) { + if (val.copy) // Buffer values + val.copy(buf, pos, 0, val.length); + else for (var i = 0; i < val.length;) // plain array values + buf[pos++] = val[i++]; + }; +}; + + +/** + * @override + */ +BufferWriter.prototype.bytes = function write_bytes_buffer(value) { + if (util.isString(value)) + value = util._Buffer_from(value, "base64"); + var len = value.length >>> 0; + this.uint32(len); + if (len) + this._push(BufferWriter.writeBytesBuffer, len, value); + return this; +}; + +function writeStringBuffer(val, buf, pos) { + if (val.length < 40) // plain js is faster for short strings (probably due to redundant assertions) + util.utf8.write(val, buf, pos); + else if (buf.utf8Write) + buf.utf8Write(val, pos); + else + buf.write(val, pos); +} + +/** + * @override + */ +BufferWriter.prototype.string = function write_string_buffer(value) { + var len = util.Buffer.byteLength(value); + this.uint32(len); + if (len) + this._push(writeStringBuffer, len, value); + return this; +}; + + +/** + * Finishes the write operation. + * @name BufferWriter#finish + * @function + * @returns {Buffer} Finished buffer + */ + +BufferWriter._configure(); + + +/***/ }), + +/***/ "./node_modules/webpack/buildin/global.js": +/*!***********************************!*\ + !*** (webpack)/buildin/global.js ***! + \***********************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +var g; + +// This works in non-strict mode +g = (function() { + return this; +})(); + +try { + // This works if eval is allowed (see CSP) + g = g || Function("return this")() || (1, eval)("this"); +} catch (e) { + // This works if the window reference is available + if (typeof window === "object") g = window; +} + +// g can still be undefined, but nothing to do about it... +// We return undefined, instead of nothing here, so it's +// easier to handle this case. if(!global) { ...} + +module.exports = g; + + +/***/ }), + +/***/ "./package.json": +/*!**********************!*\ + !*** ./package.json ***! + \**********************/ +/*! exports provided: name, version, main, types, browser, engines, scripts, license, repository, dependencies, devDependencies, default */ +/***/ (function(module) { + +module.exports = {"name":"lightstep-tracer","version":"0.30.2","main":"index.js","types":"index.d.ts","browser":"browser.js","engines":{"node":">=8.0.0"},"scripts":{"release":"./scripts/release.sh","release:prepare":"./scripts/release-prepare.sh","test":"rm -f test/results/*.json && node node_modules/mocha/bin/mocha -c test/unittest_node.js","version":"make build && git add -A dist"},"license":"MIT","repository":{"type":"git","url":"http://github.com/lightstep/lightstep-tracer-javascript.git"},"dependencies":{"async":"1.5.0","eventemitter3":"1.1.1","google-protobuf":"3.6.1","hex2dec":"1.0.1","long":"^4.0.0","opentracing":"^0.14.4","protobufjs":"^6.10.2","source-map-support":"0.3.3","thrift":"0.13.0"},"devDependencies":{"babel-cli":"6.14.0","babel-core":"^6.26.3","babel-loader":"7","babel-plugin-add-module-exports":"^1.0.0","babel-plugin-check-es2015-constants":"6.7.2","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-es2015-arrow-functions":"6.5.2","babel-plugin-transform-es2015-block-scoped-functions":"6.6.5","babel-plugin-transform-es2015-block-scoping":"^6.26.0","babel-plugin-transform-es2015-classes":"6.6.5","babel-plugin-transform-es2015-computed-properties":"6.6.5","babel-plugin-transform-es2015-destructuring":"6.6.5","babel-plugin-transform-es2015-duplicate-keys":"6.6.4","babel-plugin-transform-es2015-literals":"6.5.0","babel-plugin-transform-es2015-modules-commonjs":"6.7.4","babel-plugin-transform-es2015-object-super":"6.6.5","babel-plugin-transform-es2015-parameters":"6.7.0","babel-plugin-transform-es2015-spread":"^6.6.5","babel-plugin-transform-es2015-sticky-regex":"6.5.0","babel-plugin-transform-es2015-template-literals":"6.6.5","babel-plugin-transform-es2015-unicode-regex":"6.5.0","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-polyfill":"6.3.14","babel-preset-es2015":"6.3.13","chai":"3.4.1","clone":"1.0.2","colors":"1.1.2","eslint":"^6.8.0","eslint-config-airbnb":"^18.0.1","eslint-plugin-import":"^2.20.0","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-react":"^7.18.0","express":"^4.16.3","fetch-mock":"^9.2.1","istanbul":"^0.4.5","mocha":"^7.1.2","package-json":"^6.5.0","shelljs":"0.5.3","sinon":"^9.0.1","sprintf-js":"1.0.3","underscore":"1.8.3","watch-trigger":"0.0.5","webpack":"^4.25.1","webpack-cli":"^3.1.2"}}; + +/***/ }), + +/***/ "./src/_each.js": +/*!**********************!*\ + !*** ./src/_each.js ***! + \**********************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _each; +// Underscore.js-like wrapper to iterate object key-values. Note that even for completely +// internal objects, packages may modify default Object prototypes and properties +// (e.g. Ember.js) so it's almost never safe to assume a particular object can +// iterated with for-in. +// TODO: remove this function and replace with Object.keys, Object.values, ... (spread) or other. +function _each(obj, cb) { + if (!obj) { + return; + } + // eslint-disable-next-line no-restricted-syntax + for (var key in obj) { + if (hasOwnProperty.call(obj, key)) { + cb(obj[key], key); + } + } +} +module.exports = exports.default; + +/***/ }), + +/***/ "./src/constants.js": +/*!**************************!*\ + !*** ./src/constants.js ***! + \**************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var LOG_INFO = exports.LOG_INFO = 0; +var LOG_WARN = exports.LOG_WARN = 1; +var LOG_ERROR = exports.LOG_ERROR = 2; +var LOG_FATAL = exports.LOG_FATAL = 3; + +var LOG_LEVEL_TO_STRING = exports.LOG_LEVEL_TO_STRING = { + LOG_INFO: 'I', + LOG_WARN: 'W', + LOG_ERROR: 'E', + LOG_FATAL: 'F' +}; +var LOG_STRING_TO_LEVEL = exports.LOG_STRING_TO_LEVEL = { + I: LOG_INFO, + W: LOG_WARN, + E: LOG_ERROR, + F: LOG_FATAL +}; + +// The report interval for empty reports used to sample the clock skew +var CLOCK_STATE_REFRESH_INTERVAL_MS = exports.CLOCK_STATE_REFRESH_INTERVAL_MS = 350; + +var LIGHTSTEP_APP_URL_PREFIX = exports.LIGHTSTEP_APP_URL_PREFIX = 'https://app.lightstep.com'; + +var JOIN_ID_PREFIX = exports.JOIN_ID_PREFIX = 'join:'; + +var LS_META_EVENT_KEY = exports.LS_META_EVENT_KEY = 'lightstep.meta_event'; +var LS_META_PROPAGATION_KEY = exports.LS_META_PROPAGATION_KEY = 'lightstep.propagation_format'; +var LS_META_TRACE_KEY = exports.LS_META_TRACE_KEY = 'lightstep.trace_id'; +var LS_META_SPAN_KEY = exports.LS_META_SPAN_KEY = 'lightstep.span_id'; +var LS_META_TRACER_GUID_KEY = exports.LS_META_TRACER_GUID_KEY = 'lightstep.tracer_guid'; +var LS_META_EXTRACT = exports.LS_META_EXTRACT = 'lightstep.extract_span'; +var LS_META_INJECT = exports.LS_META_INJECT = 'lightstep.inject_span'; +var LS_META_SP_START = exports.LS_META_SP_START = 'lightstep.span_start'; +var LS_META_SP_FINISH = exports.LS_META_SP_FINISH = 'lightstep.span_finish'; +var LS_META_TRACER_CREATE = exports.LS_META_TRACER_CREATE = 'lightstep.tracer_create'; + +var FORMAT_B3 = exports.FORMAT_B3 = 'format.b3'; + +/***/ }), + +/***/ "./src/imp/auth_imp.js": +/*!*****************************!*\ + !*** ./src/imp/auth_imp.js ***! + \*****************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); // eslint-disable-next-line camelcase + + +var _platform_abstraction_layer = __webpack_require__(/*! ../platform_abstraction_layer */ "./src/platform_abstraction_layer.js"); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -18713,53 +29379,6 @@ module.exports = { /***/ }), -/***/ "./src/imp/propagator.js": -/*!*******************************!*\ - !*** ./src/imp/propagator.js ***! - \*******************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var UnsupportedPropagator = function () { - function UnsupportedPropagator(tracer, name) { - _classCallCheck(this, UnsupportedPropagator); - - this._tracer = tracer; - this._name = name; - } - - _createClass(UnsupportedPropagator, [{ - key: "inject", - value: function inject(spanContext, carrier) { - this._tracer._error("Unsupported format: " + this._name); - return null; - } - }, { - key: "extract", - value: function extract(carrier) { - this._tracer._error("Unsupported format: " + this._name); - } - }]); - - return UnsupportedPropagator; -}(); - -exports.default = UnsupportedPropagator; -module.exports = exports.default; - -/***/ }), - /***/ "./src/imp/propagator_b3.js": /*!**********************************!*\ !*** ./src/imp/propagator_b3.js ***! @@ -18991,6 +29610,234 @@ module.exports = exports.default; /***/ }), +/***/ "./src/imp/propagator_envoy.js": +/*!*************************************!*\ + !*** ./src/imp/propagator_envoy.js ***! + \*************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(Buffer) { + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _protobufjs = __webpack_require__(/*! protobufjs */ "./node_modules/protobufjs/index.js"); + +var _protobufjs2 = _interopRequireDefault(_protobufjs); + +var _long = __webpack_require__(/*! long */ "./node_modules/long/src/long.js"); + +var _long2 = _interopRequireDefault(_long); + +var _each2 = __webpack_require__(/*! ../_each */ "./src/_each.js"); + +var _each3 = _interopRequireDefault(_each2); + +var _span_context_imp = __webpack_require__(/*! ./span_context_imp */ "./src/imp/span_context_imp.js"); + +var _span_context_imp2 = _interopRequireDefault(_span_context_imp); + +var _propagator_ls = __webpack_require__(/*! ./propagator_ls */ "./src/imp/propagator_ls.js"); + +var _propagator_ls2 = _interopRequireDefault(_propagator_ls); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +// const jsonDescriptor = require('./util/BinaryCarrier.json'); + +var CARRIER_ENVOY_HEADER_KEY = 'x-ot-span-context'; + +var BINARY_PROTO = { + nested: { + lightstep: { + options: { go_package: 'lightsteppb' }, + nested: { + BinaryCarrier: { + fields: { + deprecated_text_ctx: { + rule: 'repeated', + type: 'bytes', + id: 1 + }, + basic_ctx: { type: 'BasicTracerCarrier', id: 2 } + } + }, + BasicTracerCarrier: { + fields: { + trace_id: { type: 'fixed64', id: 1 }, + span_id: { type: 'fixed64', id: 2 }, + sampled: { type: 'bool', id: 3 }, + baggage_items: { keyType: 'string', type: 'string', id: 4 } + } + } + } + } + } +}; + +var EnvoyPropagator = function (_LightStepPropagator) { + _inherits(EnvoyPropagator, _LightStepPropagator); + + function EnvoyPropagator(tracer) { + _classCallCheck(this, EnvoyPropagator); + + var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(EnvoyPropagator).call(this, tracer)); + + _this._tracer = tracer; + _this._envoyHeaderKey = CARRIER_ENVOY_HEADER_KEY; + _this._carrierPb = _protobufjs2.default.Root.fromJSON(BINARY_PROTO); + return _this; + } + + _createClass(EnvoyPropagator, [{ + key: 'inject', + value: function inject(spanContext, carrier) { + if (!carrier) { + this._tracer._error('Unexpected null carrier in call to inject'); + return; + } + if (typeof carrier !== 'object') { + this._tracer._error('Unexpected \'' + typeof carrier + '\' FORMAT_BINARY carrier in call to inject'); + return; + } + + var basicContext = { + span_id: _long2.default.fromString(spanContext._guid, 16), + trace_id: _long2.default.fromString(spanContext._traceGUID, 16), + sampled: true, + baggage_items: {} + }; + spanContext.forEachBaggageItem(function (key, value) { + basicContext.baggage_items[key] = value; + }); + + var binaryCarrier = this._carrierPb.lookupType('BinaryCarrier'); + + var payload = { + basic_ctx: basicContext + }; + + var err = binaryCarrier.verify(payload); + if (err) { + this._tracer._error('Invalid Span Context: ' + err); + return null; + } + var msg = binaryCarrier.create(payload); + var buffer = binaryCarrier.encode(msg).finish(); + var bufferString = _protobufjs2.default.util.base64.encode(buffer, 0, buffer.length); + carrier[this._envoyHeaderKey] = bufferString; + + return carrier; + } + }, { + key: 'extract', + value: function extract(carrier) { + var _this2 = this; + + // Iterate over the contents of the carrier and set the properties + // accordingly. + var foundFields = 0; + var spanGUID = null; + var traceGUID = null; + var sampled = true; + + if (carrier[this._envoyHeaderKey] === undefined) { + // This is not an error per se, there was simply no SpanContext + // in the carrier. + return null; + } + + // Decode context + var binaryData = Buffer.from(carrier[this._envoyHeaderKey], 'base64'); + var binaryCarrier = this._carrierPb.lookupType('BinaryCarrier'); + var msg = binaryCarrier.decode(binaryData); + var basicContext = msg.basic_ctx.toJSON(); + + if (basicContext === undefined) { + // This is not an error per se, there was simply no SpanContext + // in the carrier. + return null; + } + + // Validate span context + (0, _each3.default)(basicContext, function (value, key) { + key = key.toLowerCase(); + if (key === 'baggage_items') { + // We will address baggage after span context is verified + return; + } + + switch (key) { + case 'trace_id': + foundFields++; + traceGUID = _long2.default.fromValue(value).toString(16); + break; + case 'span_id': + foundFields++; + spanGUID = _long2.default.fromValue(value).toString(16); + break; + case 'sampled': + switch (value) { + case 0: + case '0': + case false: + case 'false': + sampled = false; + break; + default: + sampled = true; + break; + } + break; + default: + _this2._tracer._error('Unrecognized carrier key \'' + key + '\'. Ignoring.'); + break; + } + }); + + if (foundFields === 0) { + // This is not an error per se, there was simply no SpanContext + // in the carrier. + return null; + } + if (foundFields < 2) { + // A partial SpanContext suggests some sort of data corruption. + this._tracer._error('Only found a partial SpanContext: ' + carrier); + return null; + } + + var spanContext = new _span_context_imp2.default(spanGUID, traceGUID, sampled); + + if (basicContext.baggage_items !== undefined) { + (0, _each3.default)(basicContext.baggage_items, function (value, key) { + spanContext.setBaggageItem(key.toLowerCase(), value); + }); + } + + return spanContext; + } + }]); + + return EnvoyPropagator; +}(_propagator_ls2.default); + +exports.default = EnvoyPropagator; +module.exports = exports.default; +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/buffer/index.js */ "./node_modules/buffer/index.js").Buffer)) + +/***/ }), + /***/ "./src/imp/propagator_ls.js": /*!**********************************!*\ !*** ./src/imp/propagator_ls.js ***! @@ -19922,10 +30769,6 @@ var _report_imp = __webpack_require__(/*! ./report_imp */ "./src/imp/report_imp. var _report_imp2 = _interopRequireDefault(_report_imp); -var _propagator = __webpack_require__(/*! ./propagator */ "./src/imp/propagator.js"); - -var _propagator2 = _interopRequireDefault(_propagator); - var _propagator_ls = __webpack_require__(/*! ./propagator_ls */ "./src/imp/propagator_ls.js"); var _propagator_ls2 = _interopRequireDefault(_propagator_ls); @@ -20018,7 +30861,7 @@ var Tracer = function (_opentracing$Tracer) { _this._propagators = {}; _this._propagators[_this._opentracing.FORMAT_HTTP_HEADERS] = new _propagator_ls2.default(_this); _this._propagators[_this._opentracing.FORMAT_TEXT_MAP] = new _propagator_ls2.default(_this); - _this._propagators[_this._opentracing.FORMAT_BINARY] = new _propagator2.default(_this, _this._opentracing.FORMAT_BINARY); + _this._propagators[_this._opentracing.FORMAT_BINARY] = new _propagator_ls2.default(_this, _this._opentracing.FORMAT_BINARY); if (opts && opts.propagators) { _this._propagators = _extends({}, _this._propagators, opts.propagators); @@ -21580,6 +32423,10 @@ var _propagator_dd = __webpack_require__(/*! ./imp/propagator_dd */ "./src/imp/p var _propagator_dd2 = _interopRequireDefault(_propagator_dd); +var _propagator_envoy = __webpack_require__(/*! ./imp/propagator_envoy */ "./src/imp/propagator_envoy.js"); + +var _propagator_envoy2 = _interopRequireDefault(_propagator_envoy); + var _span_context_imp = __webpack_require__(/*! ./imp/span_context_imp */ "./src/imp/span_context_imp.js"); var _span_context_imp2 = _interopRequireDefault(_span_context_imp); @@ -21593,6 +32440,7 @@ var library = { LightStepPropagator: _propagator_ls2.default, B3Propagator: _propagator_b2.default, DDPropagator: _propagator_dd2.default, + EnvoyPropagator: _propagator_envoy2.default, SpanContext: _span_context_imp2.default }; diff --git a/dist/lightstep-tracer.js.map b/dist/lightstep-tracer.js.map index f95af072..5d87d3ec 100644 --- a/dist/lightstep-tracer.js.map +++ b/dist/lightstep-tracer.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://lightstep/webpack/universalModuleDefinition","webpack://lightstep/webpack/bootstrap","webpack://lightstep/./node_modules/base64-js/index.js","webpack://lightstep/./node_modules/buffer/index.js","webpack://lightstep/./node_modules/eventemitter3/index.js","webpack://lightstep/./node_modules/google-protobuf/google-protobuf.js","webpack://lightstep/./node_modules/google-protobuf/google/protobuf/descriptor_pb.js","webpack://lightstep/./node_modules/google-protobuf/google/protobuf/timestamp_pb.js","webpack://lightstep/./node_modules/hex2dec/index.js","webpack://lightstep/./node_modules/ieee754/index.js","webpack://lightstep/./node_modules/isarray/index.js","webpack://lightstep/./node_modules/opentracing/lib/binary_carrier.js","webpack://lightstep/./node_modules/opentracing/lib/constants.js","webpack://lightstep/./node_modules/opentracing/lib/ext/tags.js","webpack://lightstep/./node_modules/opentracing/lib/functions.js","webpack://lightstep/./node_modules/opentracing/lib/global_tracer.js","webpack://lightstep/./node_modules/opentracing/lib/index.js","webpack://lightstep/./node_modules/opentracing/lib/mock_tracer/index.js","webpack://lightstep/./node_modules/opentracing/lib/mock_tracer/mock_context.js","webpack://lightstep/./node_modules/opentracing/lib/mock_tracer/mock_report.js","webpack://lightstep/./node_modules/opentracing/lib/mock_tracer/mock_span.js","webpack://lightstep/./node_modules/opentracing/lib/mock_tracer/mock_tracer.js","webpack://lightstep/./node_modules/opentracing/lib/noop.js","webpack://lightstep/./node_modules/opentracing/lib/reference.js","webpack://lightstep/./node_modules/opentracing/lib/span.js","webpack://lightstep/./node_modules/opentracing/lib/span_context.js","webpack://lightstep/./node_modules/opentracing/lib/tracer.js","webpack://lightstep/(webpack)/buildin/global.js","webpack://lightstep/./src/_each.js","webpack://lightstep/./src/constants.js","webpack://lightstep/./src/imp/auth_imp.js","webpack://lightstep/./src/imp/coerce.js","webpack://lightstep/./src/imp/generated_proto/collector_pb.js","webpack://lightstep/./src/imp/generated_proto/google/api/annotations_pb.js","webpack://lightstep/./src/imp/generated_proto/google/api/http_pb.js","webpack://lightstep/./src/imp/globals.js","webpack://lightstep/./src/imp/log_builder.js","webpack://lightstep/./src/imp/log_record_imp.js","webpack://lightstep/./src/imp/platform/browser/crouton_thrift.js","webpack://lightstep/./src/imp/platform/browser/generated/thrift_all.js","webpack://lightstep/./src/imp/platform/browser/options_parser.js","webpack://lightstep/./src/imp/platform/browser/platform_browser.js","webpack://lightstep/./src/imp/platform/browser/thrift.js","webpack://lightstep/./src/imp/platform/browser/transport_httpproto.js","webpack://lightstep/./src/imp/platform/browser/transport_httpthrift.js","webpack://lightstep/./src/imp/platform/browser/util.js","webpack://lightstep/./src/imp/propagator.js","webpack://lightstep/./src/imp/propagator_b3.js","webpack://lightstep/./src/imp/propagator_dd.js","webpack://lightstep/./src/imp/propagator_ls.js","webpack://lightstep/./src/imp/report_imp.js","webpack://lightstep/./src/imp/runtime_imp.js","webpack://lightstep/./src/imp/span_context_imp.js","webpack://lightstep/./src/imp/span_imp.js","webpack://lightstep/./src/imp/tracer_imp.js","webpack://lightstep/./src/imp/util/clock_state.js","webpack://lightstep/./src/imp/util/util.js","webpack://lightstep/./src/lib.js","webpack://lightstep/./src/platform_abstraction_layer.js","webpack://lightstep/./src/plugins/instrument_document_load.js","webpack://lightstep/./src/plugins/instrument_fetch.js","webpack://lightstep/./src/plugins/instrument_xhr.js","webpack://lightstep/./src/plugins/log_to_console.js"],"names":["_each","obj","cb","key","hasOwnProperty","call","LOG_INFO","LOG_WARN","LOG_ERROR","LOG_FATAL","LOG_LEVEL_TO_STRING","LOG_STRING_TO_LEVEL","I","W","E","F","CLOCK_STATE_REFRESH_INTERVAL_MS","LIGHTSTEP_APP_URL_PREFIX","JOIN_ID_PREFIX","LS_META_EVENT_KEY","LS_META_PROPAGATION_KEY","LS_META_TRACE_KEY","LS_META_SPAN_KEY","LS_META_TRACER_GUID_KEY","LS_META_EXTRACT","LS_META_INJECT","LS_META_SP_START","LS_META_SP_FINISH","LS_META_TRACER_CREATE","FORMAT_B3","proto","require","AuthImp","accessToken","_accessToken","length","Auth","access_token","authProto","setAccessToken","toString","toNumber","toBoolean","value","Number","jspb","goog","global","Function","google_protobuf_timestamp_pb","google_api_annotations_pb","exportSymbol","lightstep","collector","SpanContext","opt_data","Message","initialize","inherits","DEBUG","COMPILED","displayName","GENERATE_TO_OBJECT","prototype","toObject","opt_includeInstance","includeInstance","msg","f","traceId","getFieldWithDefault","spanId","baggageMap","getBaggageMap","undefined","$jspbMessageInstance","deserializeBinary","bytes","reader","BinaryReader","deserializeBinaryFromReader","nextField","isEndGroup","field","getFieldNumber","readUint64String","setTraceId","setSpanId","readMessage","message","Map","readString","skipField","serializeBinary","writer","BinaryWriter","serializeBinaryToWriter","getResultBuffer","getTraceId","parseInt","writeUint64String","getSpanId","getLength","writeString","setProto3StringIntField","opt_noLazyCreate","getMapField","clearBaggageMap","clear","KeyValue","oneofGroups_","ValueCase","VALUE_NOT_SET","STRING_VALUE","INT_VALUE","DOUBLE_VALUE","BOOL_VALUE","JSON_VALUE","getValueCase","computeOneofCase","stringValue","intValue","doubleValue","boolValue","jsonValue","setKey","setStringValue","readInt64String","setIntValue","readDouble","setDoubleValue","readBool","setBoolValue","setJsonValue","getKey","getField","writeInt64String","writeDouble","writeBool","setProto3StringField","getStringValue","setOneofField","clearStringValue","hasStringValue","getIntValue","clearIntValue","hasIntValue","getDoubleValue","clearDoubleValue","hasDoubleValue","getBoolValue","clearBoolValue","hasBoolValue","getJsonValue","clearJsonValue","hasJsonValue","Log","repeatedFields_","timestamp","getTimestamp","Timestamp","fieldsList","toObjectList","getFieldsList","setTimestamp","addFields","writeMessage","writeRepeatedMessage","getWrapperField","setWrapperField","clearTimestamp","hasTimestamp","getRepeatedWrapperField","setFieldsList","setRepeatedWrapperField","opt_value","opt_index","addToRepeatedWrapperField","clearFieldsList","Reference","relationship","spanContext","getSpanContext","readEnum","setRelationship","setSpanContext","getRelationship","writeEnum","Relationship","CHILD_OF","FOLLOWS_FROM","setProto3EnumField","clearSpanContext","hasSpanContext","Span","operationName","referencesList","getReferencesList","startTimestamp","getStartTimestamp","durationMicros","tagsList","getTagsList","logsList","getLogsList","setOperationName","addReferences","setStartTimestamp","setDurationMicros","addTags","addLogs","getOperationName","getDurationMicros","setReferencesList","clearReferencesList","clearStartTimestamp","hasStartTimestamp","setTagsList","clearTagsList","setLogsList","clearLogsList","Reporter","reporterId","setReporterId","getReporterId","MetricsSample","name","setName","getName","InternalMetrics","countsList","getCountsList","gaugesList","getGaugesList","addCounts","addGauges","setCountsList","clearCountsList","setGaugesList","clearGaugesList","getAccessToken","ReportRequest","reporter","getReporter","auth","getAuth","spansList","getSpansList","timestampOffsetMicros","internalMetrics","getInternalMetrics","setReporter","setAuth","addSpans","setTimestampOffsetMicros","setInternalMetrics","getTimestampOffsetMicros","clearReporter","hasReporter","clearAuth","hasAuth","setSpansList","clearSpansList","clearInternalMetrics","hasInternalMetrics","Command","disable","devMode","setDisable","setDevMode","getDisable","getDevMode","setProto3BooleanField","ReportResponse","commandsList","getCommandsList","receiveTimestamp","getReceiveTimestamp","transmitTimestamp","getTransmitTimestamp","errorsList","getRepeatedField","warningsList","infosList","addCommands","setReceiveTimestamp","setTransmitTimestamp","addErrors","addWarnings","addInfos","getErrorsList","writeRepeatedString","getWarningsList","getInfosList","setCommandsList","clearCommandsList","clearReceiveTimestamp","hasReceiveTimestamp","clearTransmitTimestamp","hasTransmitTimestamp","setErrorsList","setField","addToRepeatedField","clearErrorsList","setWarningsList","clearWarningsList","setInfosList","clearInfosList","object","extend","exports","google_api_http_pb","google_protobuf_descriptor_pb","google","api","http","ExtensionFieldInfo","HttpRule","MethodOptions","extensionsBinary","ExtensionFieldBinaryInfo","extensions","Http","rulesList","getRulesList","fullyDecodeReservedExpansion","addRules","setFullyDecodeReservedExpansion","getFullyDecodeReservedExpansion","setRulesList","clearRulesList","PatternCase","PATTERN_NOT_SET","GET","PUT","POST","DELETE","PATCH","CUSTOM","getPatternCase","selector","get","put","post","pb_delete","patch","custom","getCustom","CustomHttpPattern","body","responseBody","additionalBindingsList","getAdditionalBindingsList","setSelector","setGet","setPut","setPost","setDelete","setPatch","setCustom","setBody","setResponseBody","addAdditionalBindings","getSelector","getBody","getResponseBody","getGet","clearGet","hasGet","getPut","clearPut","hasPut","getPost","clearPost","hasPost","getDelete","clearDelete","hasDelete","getPatch","clearPatch","hasPatch","setOneofWrapperField","clearCustom","hasCustom","setAdditionalBindingsList","clearAdditionalBindingsList","kind","path","setKind","setPath","getKind","getPath","PackageGlobals","options","opts","val","module","constants","coerce","LogBuilder","runtime","_runtime","_record","LogRecord","timestamp_micros","_platform","nowMicros","runtime_guid","span_guid","stable_name","level","thread_id","filename","line_number","stack_frames","payload_json","error_flag","_addLogRecord","micros","num","error","guid","stableName","flag","data","_encodePayload","payloadJSON","JSON","stringify","_ignored","googleProtobufTimestampPB","LogRecordImp","logFieldKeyHardLimit","logFieldValueHardLimit","timestampMicros","fields","Error","stack","_logFieldKeyHardLimit","_logFieldValueHardLimit","_timestampMicros","_fields","_keysOverLimit","_valuesOverLimit","_clearOverLimits","thriftFields","keyStr","getFieldKey","valStr","getFieldValue","push","Key","Value","substr","Object","getOwnPropertyNames","e","log","ts","secs","Math","floor","nanos","setSeconds","setNanos","keyValues","keyValue","crouton_thrift","Thrift","args","TProtocolException","TProtocolExceptionType","UNKNOWN","read","write","NamedCounter","Name","Runtime","start_micros","group_name","attrs","TraceJoinId","TraceKey","SpanRecord","trace_guid","span_name","join_ids","oldest_micros","youngest_micros","attributes","log_records","Timing","receive_micros","transmit_micros","SampleCount","count","int64_value","double_value","Metrics","counts","gauges","span_records","timestamp_offset_micros","counters","internal_logs","internal_metrics","commands","timing","util","hostScriptElement","WorkerGlobalScope","self","isBrowser","scripts","document","getElementsByTagName","urlQueryParameters","defaults","vars","qi","window","location","href","indexOf","slice","hashes","replace","split","i","hash","decodeURIComponent","parseScriptElementOptions","browserOpts","dataset","componentName","component_name","collectorHost","collector_host","collectorPort","collector_port","collectorPath","collector_path","collectorEncryption","collector_encryption","enable","verbosity","init","init_global_tracer","xhr_instrumentation","instrument_page_load","parseScriptElementOptionsNoop","parseURLQueryOptions","params","lightstep_verbosity","lightstep_log_to_console","log_to_console","parseURLQueryOptionsNoop","optionsParser","kRuntimeGUIDCookiePrefix","kSessionIDCookieKey","kCookieTimeToLiveSeconds","nowMicrosImp","performance","now","navigationStart","start","Date","PlatformBrowser","groupName","cookieKey","encodeURIComponent","uuid","cookie","_generateLongUUID","sessionID","p0","abs","random","p1","addEventListener","imp","tracerOpts","sessionStorage","parse","getItem","setItem","lib","initGlobalTracer","opentracing","Tracer","TransportBrowser","_host","_port","_path","_encryption","detached","report","done","_reportAJAX","reportProto","toProto","protocol","url","xhr","XMLHttpRequest","responseType","open","setRequestHeader","onreadystatechange","readyState","err","resp","status","response","exception","serialized","send","_reportAsyncScript","payload","toThrift","responseText","authJSON","reportJSON","elem","createElement","async","defer","src","type","hostElem","appendChild","ttl","domain","secure","arguments","newCookie","toUTCString","cookieNoop","UnsupportedPropagator","tracer","_tracer","_name","carrier","_error","CARRIER_B3_TRACER_STATE_PREFIX","B3Propagator","_carrierPrefix","traceGUID","_guid","_sampled","forEachBaggageItem","_baggagePrefix","CARRIER_DD_TRACER_STATE_PREFIX","DDPropagator","foundFields","spanGUID","sampled","toLowerCase","suffix","setBaggageItem","CARRIER_TRACER_STATE_PREFIX","CARRIER_BAGGAGE_PREFIX","LightStepPropagator","_traceGUID","ReportImp","oldestMicros","youngestMicros","spanRecords","internalLogs","_oldestMicros","_youngestMicros","_spanRecords","_internalLogs","_counters","_timestampOffsetMicros","span","_runtimeGUID","thriftCounters","thriftSpanRecords","spanRecord","_toThrift","_toProto","metricSample","converter","packageObject","RuntimeImp","runtimeGUID","startMicros","_startMicros","_componentName","_attributes","thriftAttrs","tracerVersion","version","tracerPlatform","tracerPlatformVersion","commandLine","hostname","hexToDec","tracerTags","ttag","reporterTags","allTags","concat","reporterProto","SpanContextImp","_baggage","_upperTraceGUID","SpanImp","_tracerImp","_ctx","_operationName","getBaggageItem","keyValuePairs","_tags","argumentType","tsMicros","record","getLogFieldKeyHardLimit","getLogFieldValueHardLimit","_log_records","emit","finishTime","end","console","assert","_ended","_beginMicros","_endMicros","_errorFlag","parent_span_guid","urlPrefix","setEndMicros","shouldSendMetaSpan","getTags","startSpan","tags","finish","_addSpanRecord","logs","logRecord","logThrift","getNumKeysOverLimit","getNumValuesOverLimit","spanContextProto","spanProto","startSeconds","startNanos","logProto","parentSpanGUID","strValue","strKey","tag","ref","parentSpanContext","ClockState","globals","DEFAULT_COLLECTOR_HOSTNAME","DEFAULT_COLLECTOR_PORT_TLS","DEFAULT_COLLECTOR_PORT_PLAIN","DEFAULT_COLLECTOR_PATH","MAX_INTERNAL_LOGS","_singleton","_delegateEventEmitterMethods","setOptions","override_runtime_guid","_plugins","_options","_optionDescs","_makeOptionsTable","_opentracing","opentracing_module","_auth","logger","warn","_warn","_transport","override_transport","_propagators","FORMAT_HTTP_HEADERS","FORMAT_TEXT_MAP","FORMAT_BINARY","propagators","_reportingLoopActive","_first_report_has_run","_reportYoungestMicros","_reportTimer","_reportErrorStreak","_lastVisibleErrorMillis","_skippedVisibleErrors","_activeRootSpanSet","_activeRootSpan","_flushIsActive","addPlugin","addPlatformPlugins","setPlatformOptions","transport","_info","_useClockState","disable_clock_skew_correction","_clockState","localStoreGet","localStoreSet","_setupReportOnExit","startPlugins","_ee","methodName","apply","addOption","min","max","defaultValue","_printToConsole","bind","parentCtxImp","references","REFERENCE_CHILD_OF","REFERENCE_FOLLOWS_FROM","context","referencedContext","generateTraceGUIDForRootSpan","spanCtx","generateUUID","spanImp","default_span_tags","setBeginMicros","setParentGUID","k","v","format","meta_event_reporting","inject","sc","extract","disabled","_flushReport","userOptions","desc","modified","unchanged","_setOptionInternal","keys","forEach","_initReportingDataIfNeeded","_startReportingLoop","optionsString","newValue","_debug","valueType","oldValue","platformTags","log_field_key_hard_limit","log_field_value_hard_limit","pluginSet","plugins","plugin","addOptions","_setActiveRootSpanToYoungest","jsonString","buffer","ArrayBuffer","view","Uint8Array","code","charCodeAt","arr","String","fromCharCode","b","unused","countersAllZero","_internalAddSpanRecord","max_span_records","index","spans","currentInternalLogs","toAdd","_pushInternalLog","maxErrorsToEmpty","clear_span_buffer_consecutive_errors","numSpansToDrop","max_consecutive_errors","spans_dropped","disable_report_on_exit","finalFlushOnce","finalFlush","unflushed_spans","buffer_youngest_micros","onBeforeExit","disable_reporting_loop","stopReportingOnce","stopReporting","_stopReportingLoop","loop","_enqueueNextReport","delay","delay_initial_report_millis","detachedTimeout","clearTimeout","reportInterval","max_reporting_interval_millis","isReady","backOff","basis","jitter","manual","clockReady","clockOffsetMicros","offsetMicros","offset_micros","active_samples","activeSampleCount","ready","_buffersAreEmpty","_clearBuffers","ensureConnection","timestampOffset","originMicros","res","destinationMicros","reportWindowSeconds","errString","last_report_seconds_ago","_restoreRecords","getSpanRecords","getInternalLogs","getCounters","_clearSpanRecordsIfMaxErrors","streak","spans_reported","addSample","seconds","errors","disable_meta_event_reporting","nextVisible","error_throttle_millis","s","method","silent","kMaxOffsetAge","kStoredSamplesTTLMicros","_nowMicros","_localStoreGet","_localStoreSet","_samples","_currentOffsetMicros","_currentOffsetAge","storedData","samples","update","receiveMicros","transmitMicros","latestDelayMicros","MAX_VALUE","latestOffsetMicros","shift","delayMicros","minDelayMicros","bestOffsetMicros","sample","pow","sqrt","kSGATE","Util","callback","timer","setTimeout","unref","shouldSendSpan","library","initLibrary","Platform","ThriftTransport","ProtoTransport","thrift","InstrumentPageLoad","_inited","_span","tracerImp","currentOptions","_ensureSpanStarted","_handleReadyStateChange","addActiveRootSpan","state","_addTimingSpans","logEvent","removeActiveRootSpan","nav","dst","p","item","description","suffixes","parentImp","setTag","navigator","userAgent","_copyNavigatorProperties","childOf","requestStart","responseStart","responseEnd","domLoading","domInteractive","proxiedFetch","fetch","getCookies","cookies","parts","getResponseHeaders","result","entries","headers","pair","InstrumentFetch","_enabled","_isValidContext","_proxyInited","_internalExclusions","_handleOptions","_addServiceHostToExclusions","on","current","serviceHost","fetch_instrumentation","_instrumentFetch","escapeRegExp","str","host","port","set","RegExp","input","request","Request","_shouldTrace","parsed","URL","origin","pathname","search","include_cookies","_shouldAddHeadersToRequest","headersCarrier","event","openPayload","then","ok","statusText","catch","some","ex","test","fetch_url_exclusion_patterns","fetch_url_inclusion_patterns","inc","fetch_url_header_exclusion_patterns","fetch_url_header_inclusion_patterns","proxied","raw","getAllResponseHeaders","InstrumentXHR","_instrumentSetRequestHeader","_instrumentOpen","_instrumentSend","header","__requestHeaders","asyncArg","user","password","__tracer_span","__tracer_url","url_pathname","Array","len","lenStr","data_length","xhr_url_exclusion_patterns","xhr_url_inclusion_patterns","xhr_url_header_exclusion_patterns","xhr_url_header_inclusion_patterns","LogToConsole","_optionsCb","_logAddedCb","_handleLogAdded","removeListener","enabled"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;ACVA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,kDAA0C,gCAAgC;AAC1E;AACA;;AAEA;AACA;AACA;AACA,gEAAwD,kBAAkB;AAC1E;AACA,yDAAiD,cAAc;AAC/D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAyC,iCAAiC;AAC1E,wHAAgH,mBAAmB,EAAE;AACrI;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;;AAGA;AACA;;;;;;;;;;;;;AClFY;;AAEZ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kCAAkC,SAAS;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAA0C,UAAU;AACpD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;ACtJA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEY;;AAEZ,aAAa,mBAAO,CAAC,oDAAW;AAChC,cAAc,mBAAO,CAAC,gDAAS;AAC/B,cAAc,mBAAO,CAAC,gDAAS;;AAE/B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,mDAAmD;AACxE;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,uCAAuC,SAAS;AAChD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;;AAEA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD,EAAE;AAClD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,eAAe;AACvC;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,wBAAwB,QAAQ;AAChC;AACA,qBAAqB,eAAe;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD,OAAO;AAC9D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD,OAAO;AAC9D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA,GAAG;AACH;AACA,eAAe,SAAS;AACxB;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,mBAAmB,SAAS;AAC5B;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,YAAY;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,gBAAgB;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;;AC5vDa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;;AAEzB;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,0DAA0D,OAAO;AACjE;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,yCAAyC,SAAS;AAClD;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA,eAAe,YAAY;AAC3B;;AAEA;AACA,2DAA2D;AAC3D,+DAA+D;AAC/D,mEAAmE;AACnE;AACA,0DAA0D,SAAS;AACnE;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;;AAEA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;A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,6DAA6D,eAAe,qBAAqB,6BAA6B,uCAAuC,uCAAuC,mDAAmD,+DAA+D,uCAAuC,+BAA+B,gBAAgB,2BAA2B;;;;;;;;;;;;;AC5W5e;AACA;AACA;AACA,cAAc,mBAAmB;AACjC;AACA;AACA;AACA;;AAEA,WAAW,mBAAO,CAAC,0EAAiB;AACpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA,0BAA0B,cAAc;AACxC,WAAW,kBAAkB;AAC7B;AACA;AACA,WAAW,yCAAyC;AACpD,YAAY;AACZ,cAAc,qBAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,WAAW,gBAAgB;AAC3B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,yCAAyC;AACpD,WAAW,mBAAmB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,yCAAyC;AACpD,WAAW,mBAAmB;AAC9B,cAAc,qBAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,mBAAmB,mDAAmD;AACtE;AACA;;;AAGA,YAAY,mDAAmD;AAC/D;AACA;AACA;;;AAGA;AACA,WAAW,4CAA4C;AACvD,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;;AAIA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA,0BAA0B,cAAc;AACxC,WAAW,kBAAkB;AAC7B;AACA;AACA,WAAW,2CAA2C;AACtD,YAAY;AACZ,cAAc,qBAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,WAAW,gBAAgB;AAC3B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,2CAA2C;AACtD,WAAW,mBAAmB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,2CAA2C;AACtD,WAAW,mBAAmB;AAC9B,cAAc,qBAAqB;AACnC;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,OAAO;AAC3B;;;AAGA,YAAY,OAAO;AACnB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,OAAO;AAC3B;;;AAGA,YAAY,OAAO;AACnB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,eAAe;AACnC;;;AAGA,YAAY,eAAe;AAC3B;AACA;AACA;;;AAGA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,eAAe;AACnC;;;AAGA,YAAY,eAAe;AAC3B;AACA;AACA;;;AAGA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,eAAe;AACnC;;;AAGA,YAAY,eAAe;AAC3B;AACA;AACA;;;AAGA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,mBAAmB,+CAA+C;AAClE;AACA;;;AAGA,YAAY,+CAA+C;AAC3D;AACA;AACA;;;AAGA;AACA,WAAW,wCAAwC;AACnD,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,mBAAmB,mDAAmD;AACtE;AACA;;;AAGA,YAAY,mDAAmD;AAC/D;AACA;AACA;;;AAGA;AACA,WAAW,4CAA4C;AACvD,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,mBAAmB,sDAAsD;AACzE;AACA;;;AAGA,YAAY,sDAAsD;AAClE;AACA;AACA;;;AAGA;AACA,WAAW,+CAA+C;AAC1D,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,mBAAmB,oDAAoD;AACvE;AACA;;;AAGA,YAAY,oDAAoD;AAChE;AACA;AACA;;;AAGA;AACA,WAAW,6CAA6C;AACxD,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,mBAAmB,mCAAmC;AACtD;AACA;;;AAGA,YAAY,6CAA6C;AACzD;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,mBAAmB,sCAAsC;AACzD;AACA;;;AAGA,YAAY,gDAAgD;AAC5D;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,OAAO;AAC3B;;;AAGA,YAAY,OAAO;AACnB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;;AAIA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA,0BAA0B,cAAc;AACxC,WAAW,kBAAkB;AAC7B;AACA;AACA,WAAW,uCAAuC;AAClD,YAAY;AACZ,cAAc,qBAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,WAAW,gBAAgB;AAC3B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,uCAAuC;AAClD,WAAW,mBAAmB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,uCAAuC;AAClD,WAAW,mBAAmB;AAC9B,cAAc,qBAAqB;AACnC;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA,0BAA0B,cAAc;AACxC,WAAW,kBAAkB;AAC7B;AACA;AACA,WAAW,sDAAsD;AACjE,YAAY;AACZ,cAAc,qBAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,WAAW,gBAAgB;AAC3B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,sDAAsD;AACjE,WAAW,mBAAmB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,sDAAsD;AACjE,WAAW,mBAAmB;AAC9B,cAAc,qBAAqB;AACnC;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,OAAO;AAC3B;;;AAGA,YAAY,OAAO;AACnB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,OAAO;AAC3B;;;AAGA,YAAY,OAAO;AACnB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,mBAAmB,6CAA6C;AAChE;AACA;;;AAGA,YAAY,uDAAuD;AACnE;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;;AAIA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA,0BAA0B,cAAc;AACxC,WAAW,kBAAkB;AAC7B;AACA;AACA,WAAW,qDAAqD;AAChE,YAAY;AACZ,cAAc,qBAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,WAAW,gBAAgB;AAC3B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,qDAAqD;AAChE,WAAW,mBAAmB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,qDAAqD;AAChE,WAAW,mBAAmB;AAC9B,cAAc,qBAAqB;AACnC;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,OAAO;AAC3B;;;AAGA,YAAY,OAAO;AACnB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,OAAO;AAC3B;;;AAGA,YAAY,OAAO;AACnB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,OAAO;AAC3B;;;AAGA,YAAY,OAAO;AACnB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,mBAAmB,oDAAoD;AACvE;AACA;;;AAGA,YAAY,oDAAoD;AAChE;AACA;AACA;;;AAGA;AACA,WAAW,6CAA6C;AACxD,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,mBAAmB,oDAAoD;AACvE;AACA;;;AAGA,YAAY,oDAAoD;AAChE;AACA;AACA;;;AAGA;AACA,WAAW,6CAA6C;AACxD,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,mBAAmB,+CAA+C;AAClE;AACA;;;AAGA,YAAY,+CAA+C;AAC3D;AACA;AACA;;;AAGA;AACA,WAAW,wCAAwC;AACnD,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,mBAAmB,mDAAmD;AACtE;AACA;;;AAGA,YAAY,mDAAmD;AAC/D;AACA;AACA;;;AAGA;AACA,WAAW,4CAA4C;AACvD,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,mBAAmB,8DAA8D;AACjF;AACA;;;AAGA,YAAY,8DAA8D;AAC1E;AACA;AACA;;;AAGA;AACA,WAAW,uDAAuD;AAClE,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,mBAAmB,oDAAoD;AACvE;AACA;;;AAGA,YAAY,oDAAoD;AAChE;AACA;AACA;;;AAGA;AACA,WAAW,6CAA6C;AACxD,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,mBAAmB,sCAAsC;AACzD;AACA;;;AAGA,YAAY,gDAAgD;AAC5D;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,mBAAmB,6DAA6D;AAChF;AACA;;;AAGA,YAAY,6DAA6D;AACzE;AACA;AACA;;;AAGA;AACA,WAAW,sDAAsD;AACjE,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,eAAe;AACnC;;;AAGA,YAAY,eAAe;AAC3B;AACA;AACA;;;AAGA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;;AAIA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA,0BAA0B,cAAc;AACxC,WAAW,kBAAkB;AAC7B;AACA;AACA,WAAW,6CAA6C;AACxD,YAAY;AACZ,cAAc,qBAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;;AAEA,4CAA4C,cAAc;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,WAAW,gBAAgB;AAC3B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,6CAA6C;AACxD,WAAW,mBAAmB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,6CAA6C;AACxD,WAAW,mBAAmB;AAC9B,cAAc,qBAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,mBAAmB,mDAAmD;AACtE;AACA;;;AAGA,YAAY,mDAAmD;AAC/D;AACA;AACA;;;AAGA;AACA,WAAW,4CAA4C;AACvD,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA,QAAQ,OAAO,6BAA6B,iBAAiB,gCAAgC;AAC7F;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,QAAQ,OAAO,6BAA6B,iBAAiB,gCAAgC;AAC7F;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;;AAGA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA,0BAA0B,cAAc;AACxC,WAAW,kBAAkB;AAC7B;AACA;AACA,WAAW,4CAA4C;AACvD,YAAY;AACZ,cAAc,qBAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,WAAW,gBAAgB;AAC3B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,4CAA4C;AACvD,WAAW,mBAAmB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA,6BAA6B,kDAAkD;AAC/E;AACA;AACA;AACA,6BAA6B,iDAAiD;AAC9E;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,4CAA4C;AACvD,WAAW,mBAAmB;AAC9B,cAAc,qBAAqB;AACnC;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,kDAAkD;AACnE;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,iDAAiD;AAClE;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,OAAO;AAC3B;;;AAGA,YAAY,OAAO;AACnB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,OAAO;AAC3B;;;AAGA,YAAY,OAAO;AACnB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,kDAAkD;AACtE;;;AAGA,YAAY,kDAAkD;AAC9D;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,iDAAiD;AACrE;;;AAGA,YAAY,iDAAiD;AAC7D;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,OAAO;AAC3B;;;AAGA,YAAY,OAAO;AACnB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,OAAO;AAC3B;;;AAGA,YAAY,OAAO;AACnB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,OAAO;AAC3B;;;AAGA,YAAY,OAAO;AACnB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,OAAO;AAC3B;;;AAGA,YAAY,OAAO;AACnB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,OAAO;AAC3B;;;AAGA,YAAY,OAAO;AACnB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,mBAAmB,oCAAoC;AACvD;AACA;;;AAGA,YAAY,8CAA8C;AAC1D;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;;AAIA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA,0BAA0B,cAAc;AACxC,WAAW,kBAAkB;AAC7B;AACA;AACA,WAAW,4CAA4C;AACvD,YAAY;AACZ,cAAc,qBAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,WAAW,gBAAgB;AAC3B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,4CAA4C;AACvD,WAAW,mBAAmB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,4CAA4C;AACvD,WAAW,mBAAmB;AAC9B,cAAc,qBAAqB;AACnC;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,OAAO;AAC3B;;;AAGA,YAAY,OAAO;AACnB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,mBAAmB,oCAAoC;AACvD;AACA;;;AAGA,YAAY,8CAA8C;AAC1D;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;;AAIA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA,0BAA0B,cAAc;AACxC,WAAW,kBAAkB;AAC7B;AACA;AACA,WAAW,2CAA2C;AACtD,YAAY;AACZ,cAAc,qBAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,WAAW,gBAAgB;AAC3B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,2CAA2C;AACtD,WAAW,mBAAmB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,2CAA2C;AACtD,WAAW,mBAAmB;AAC9B,cAAc,qBAAqB;AACnC;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA,0BAA0B,cAAc;AACxC,WAAW,kBAAkB;AAC7B;AACA;AACA,WAAW,6DAA6D;AACxE,YAAY;AACZ,cAAc,qBAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,WAAW,gBAAgB;AAC3B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,6DAA6D;AACxE,WAAW,mBAAmB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,6DAA6D;AACxE,WAAW,mBAAmB;AAC9B,cAAc,qBAAqB;AACnC;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,OAAO;AAC3B;;;AAGA,YAAY,OAAO;AACnB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,OAAO;AAC3B;;;AAGA,YAAY,OAAO;AACnB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,OAAO;AAC3B;;;AAGA,YAAY,OAAO;AACnB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,mBAAmB,wDAAwD;AAC3E;AACA;;;AAGA,YAAY,wDAAwD;AACpE;AACA;AACA;;;AAGA;AACA,WAAW,iDAAiD;AAC5D,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,mBAAmB,mCAAmC;AACtD;AACA;;;AAGA,YAAY,6CAA6C;AACzD;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,mBAAmB,qEAAqE;AACxF;AACA;;;AAGA,YAAY,qEAAqE;AACjF;AACA;AACA;;;AAGA;AACA,WAAW,8DAA8D;AACzE,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,eAAe;AACnC;;;AAGA,YAAY,eAAe;AAC3B;AACA;AACA;;;AAGA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;;AAIA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA,0BAA0B,cAAc;AACxC,WAAW,kBAAkB;AAC7B;AACA;AACA,WAAW,gDAAgD;AAC3D,YAAY;AACZ,cAAc,qBAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,WAAW,gBAAgB;AAC3B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,gDAAgD;AAC3D,WAAW,mBAAmB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,gDAAgD;AAC3D,WAAW,mBAAmB;AAC9B,cAAc,qBAAqB;AACnC;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,OAAO;AAC3B;;;AAGA,YAAY,OAAO;AACnB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,OAAO;AAC3B;;;AAGA,YAAY,OAAO;AACnB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,mBAAmB,wCAAwC;AAC3D;AACA;;;AAGA,YAAY,kDAAkD;AAC9D;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;;AAIA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA,0BAA0B,cAAc;AACxC,WAAW,kBAAkB;AAC7B;AACA;AACA,WAAW,8CAA8C;AACzD,YAAY;AACZ,cAAc,qBAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,WAAW,gBAAgB;AAC3B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,8CAA8C;AACzD,WAAW,mBAAmB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,8CAA8C;AACzD,WAAW,mBAAmB;AAC9B,cAAc,qBAAqB;AACnC;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,OAAO;AAC3B;;;AAGA,YAAY,OAAO;AACnB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,mBAAmB,qDAAqD;AACxE;AACA;;;AAGA,YAAY,qDAAqD;AACjE;AACA;AACA;;;AAGA;AACA,WAAW,8CAA8C;AACzD,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,mBAAmB,sCAAsC;AACzD;AACA;;;AAGA,YAAY,gDAAgD;AAC5D;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;;AAIA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA,0BAA0B,cAAc;AACxC,WAAW,kBAAkB;AAC7B;AACA;AACA,WAAW,6CAA6C;AACxD,YAAY;AACZ,cAAc,qBAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,WAAW,gBAAgB;AAC3B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,6CAA6C;AACxD,WAAW,mBAAmB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,QAAQ;AACrC;AACA;AACA;AACA,6BAA6B,QAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,6CAA6C;AACxD,WAAW,mBAAmB;AAC9B,cAAc,qBAAqB;AACnC;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,OAAO;AAC3B;;;AAGA,YAAY,OAAO;AACnB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,OAAO;AAC3B;;;AAGA,YAAY,OAAO;AACnB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,OAAO;AAC3B;;;AAGA,YAAY,OAAO;AACnB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,mBAAmB,qCAAqC;AACxD;AACA;;;AAGA,YAAY,+CAA+C;AAC3D;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,sCAAsC,yBAAyB;AAC/D,YAAY;AACZ;AACA;AACA,oBAAoB,QAAQ;AAC5B;;;AAGA,YAAY,QAAQ;AACpB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,sCAAsC,yBAAyB;AAC/D,YAAY;AACZ;AACA;AACA,oBAAoB,QAAQ;AAC5B;;;AAGA,YAAY,QAAQ;AACpB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;;AAIA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA,0BAA0B,cAAc;AACxC,WAAW,kBAAkB;AAC7B;AACA;AACA,WAAW,mCAAmC;AAC9C,YAAY;AACZ,cAAc,qBAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4CAA4C,cAAc;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,WAAW,gBAAgB;AAC3B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,mCAAmC;AAC9C,WAAW,mBAAmB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA,6BAA6B,QAAQ;AACrC;AACA;AACA;AACA,6BAA6B,QAAQ;AACrC;AACA;AACA;AACA,6BAA6B,QAAQ;AACrC;AACA;AACA;AACA,6BAA6B,gDAAgD;AAC7E;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA,6BAA6B,QAAQ;AACrC;AACA;AACA;AACA,6BAA6B,QAAQ;AACrC;AACA;AACA;AACA,6BAA6B,QAAQ;AACrC;AACA;AACA;AACA,6BAA6B,QAAQ;AACrC;AACA;AACA;AACA,6BAA6B,QAAQ;AACrC;AACA;AACA;AACA,6BAA6B,QAAQ;AACrC;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,mCAAmC;AAC9C,WAAW,mBAAmB;AAC9B,cAAc,qBAAqB;AACnC;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,gDAAgD;AACjE;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,OAAO;AAC3B;;;AAGA,YAAY,OAAO;AACnB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,OAAO;AAC3B;;;AAGA,YAAY,OAAO;AACnB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,sCAAsC,yBAAyB;AAC/D,YAAY;AACZ;AACA;AACA,oBAAoB,QAAQ;AAC5B;;;AAGA,YAAY,QAAQ;AACpB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,sCAAsC,yBAAyB;AAC/D,YAAY;AACZ;AACA;AACA,oBAAoB,QAAQ;AAC5B;;;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ACnB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,OAAO;AAC3B;;;AAGA,YAAY,OAAO;AACnB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,mBAAmB,mDAAmD;AACtE;AACA;;;AAGA,YAAY,mDAAmD;AAC/D;AACA;AACA;;;AAGA;AACA,WAAW,4CAA4C;AACvD,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA,QAAQ,OAAO,6BAA6B,iBAAiB,gCAAgC;AAC7F;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,QAAQ,OAAO,6BAA6B,iBAAiB,gCAAgC;AAC7F;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;;AAGA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA,0BAA0B,cAAc;AACxC,WAAW,kBAAkB;AAC7B;AACA;AACA,WAAW,sCAAsC;AACjD,YAAY;AACZ,cAAc,qBAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4CAA4C,cAAc;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,WAAW,gBAAgB;AAC3B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,sCAAsC;AACjD,WAAW,mBAAmB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,QAAQ;AACrC;AACA;AACA;AACA,6BAA6B,QAAQ;AACrC;AACA;AACA;AACA,6BAA6B,QAAQ;AACrC;AACA;AACA;AACA,6BAA6B,QAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,sCAAsC;AACjD,WAAW,mBAAmB;AAC9B,cAAc,qBAAqB;AACnC;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,sCAAsC,yBAAyB;AAC/D,YAAY;AACZ;AACA;AACA,oBAAoB,QAAQ;AAC5B;;;AAGA,YAAY,QAAQ;AACpB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,sCAAsC,yBAAyB;AAC/D,YAAY;AACZ;AACA;AACA,oBAAoB,QAAQ;AAC5B;;;AAGA,YAAY,QAAQ;AACpB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,sCAAsC,yBAAyB;AAC/D,YAAY;AACZ;AACA;AACA,oBAAoB,QAAQ;AAC5B;;;AAGA,YAAY,QAAQ;AACpB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,sCAAsC,yBAAyB;AAC/D,YAAY;AACZ;AACA;AACA,oBAAoB,QAAQ;AAC5B;;;AAGA,YAAY,QAAQ;AACpB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,mBAAmB,mDAAmD;AACtE;AACA;;;AAGA,YAAY,mDAAmD;AAC/D;AACA;AACA;;;AAGA;AACA,WAAW,4CAA4C;AACvD,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA,QAAQ,OAAO,6BAA6B,iBAAiB,gCAAgC;AAC7F;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,QAAQ,OAAO,6BAA6B,iBAAiB,gCAAgC;AAC7F;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;;AAGA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA,0BAA0B,cAAc;AACxC,WAAW,kBAAkB;AAC7B;AACA;AACA,WAAW,oCAAoC;AAC/C,YAAY;AACZ,cAAc,qBAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4CAA4C,cAAc;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,WAAW,gBAAgB;AAC3B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,oCAAoC;AAC/C,WAAW,mBAAmB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,0CAA0C;AACvE;AACA;AACA;AACA,6BAA6B,QAAQ;AACrC;AACA;AACA;AACA,6BAA6B,2CAA2C;AACxE;AACA;AACA;AACA,6BAA6B,QAAQ;AACrC;AACA;AACA;AACA,6BAA6B,QAAQ;AACrC;AACA;AACA;AACA,6BAA6B,QAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,oCAAoC;AAC/C,WAAW,mBAAmB;AAC9B,cAAc,qBAAqB;AACnC;AACA;AACA;AACA,iBAAiB,0CAA0C;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,2CAA2C;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,0CAA0C;AAC9D;;;AAGA,YAAY,0CAA0C;AACtD;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,sCAAsC,yBAAyB;AAC/D,YAAY;AACZ;AACA;AACA,oBAAoB,QAAQ;AAC5B;;;AAGA,YAAY,QAAQ;AACpB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,2CAA2C;AAC/D;;;AAGA,YAAY,2CAA2C;AACvD;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,sCAAsC,yBAAyB;AAC/D,YAAY;AACZ;AACA;AACA,oBAAoB,QAAQ;AAC5B;;;AAGA,YAAY,QAAQ;AACpB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,sCAAsC,yBAAyB;AAC/D,YAAY;AACZ;AACA;AACA,oBAAoB,QAAQ;AAC5B;;;AAGA,YAAY,QAAQ;AACpB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,sCAAsC,yBAAyB;AAC/D,YAAY;AACZ;AACA;AACA,oBAAoB,QAAQ;AAC5B;;;AAGA,YAAY,QAAQ;AACpB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,mBAAmB,mDAAmD;AACtE;AACA;;;AAGA,YAAY,mDAAmD;AAC/D;AACA;AACA;;;AAGA;AACA,WAAW,4CAA4C;AACvD,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA,QAAQ,OAAO,6BAA6B,iBAAiB,gCAAgC;AAC7F;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,QAAQ,OAAO,6BAA6B,iBAAiB,gCAAgC;AAC7F;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;;AAGA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA,0BAA0B,cAAc;AACxC,WAAW,kBAAkB;AAC7B;AACA;AACA,WAAW,oCAAoC;AAC/C,YAAY;AACZ,cAAc,qBAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;;AAEA,4CAA4C,cAAc;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,WAAW,gBAAgB;AAC3B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,oCAAoC;AAC/C,WAAW,mBAAmB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,oCAAoC;AAC/C,WAAW,mBAAmB;AAC9B,cAAc,qBAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,mBAAmB,mDAAmD;AACtE;AACA;;;AAGA,YAAY,mDAAmD;AAC/D;AACA;AACA;;;AAGA;AACA,WAAW,4CAA4C;AACvD,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA,QAAQ,OAAO,6BAA6B,iBAAiB,gCAAgC;AAC7F;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,QAAQ,OAAO,6BAA6B,iBAAiB,gCAAgC;AAC7F;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;;AAGA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA,0BAA0B,cAAc;AACxC,WAAW,kBAAkB;AAC7B;AACA;AACA,WAAW,mCAAmC;AAC9C,YAAY;AACZ,cAAc,qBAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4CAA4C,cAAc;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,WAAW,gBAAgB;AAC3B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,mCAAmC;AAC9C,WAAW,mBAAmB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,QAAQ;AACrC;AACA;AACA;AACA,6BAA6B,QAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,mCAAmC;AAC9C,WAAW,mBAAmB;AAC9B,cAAc,qBAAqB;AACnC;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,sCAAsC,yBAAyB;AAC/D,YAAY;AACZ;AACA;AACA,oBAAoB,QAAQ;AAC5B;;;AAGA,YAAY,QAAQ;AACpB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,sCAAsC,yBAAyB;AAC/D,YAAY;AACZ;AACA;AACA,oBAAoB,QAAQ;AAC5B;;;AAGA,YAAY,QAAQ;AACpB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,mBAAmB,mDAAmD;AACtE;AACA;;;AAGA,YAAY,mDAAmD;AAC/D;AACA;AACA;;;AAGA;AACA,WAAW,4CAA4C;AACvD,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA,QAAQ,OAAO,6BAA6B,iBAAiB,gCAAgC;AAC7F;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,QAAQ,OAAO,6BAA6B,iBAAiB,gCAAgC;AAC7F;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;;AAGA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA,0BAA0B,cAAc;AACxC,WAAW,kBAAkB;AAC7B;AACA;AACA,WAAW,wCAAwC;AACnD,YAAY;AACZ,cAAc,qBAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4CAA4C,cAAc;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,WAAW,gBAAgB;AAC3B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,wCAAwC;AACnD,WAAW,mBAAmB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,QAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,wCAAwC;AACnD,WAAW,mBAAmB;AAC9B,cAAc,qBAAqB;AACnC;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,sCAAsC,yBAAyB;AAC/D,YAAY;AACZ;AACA;AACA,oBAAoB,QAAQ;AAC5B;;;AAGA,YAAY,QAAQ;AACpB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,mBAAmB,mDAAmD;AACtE;AACA;;;AAGA,YAAY,mDAAmD;AAC/D;AACA;AACA;;;AAGA;AACA,WAAW,4CAA4C;AACvD,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA,QAAQ,OAAO,6BAA6B,iBAAiB,gCAAgC;AAC7F;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,QAAQ,OAAO,6BAA6B,iBAAiB,gCAAgC;AAC7F;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;;AAGA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA,0BAA0B,cAAc;AACxC,WAAW,kBAAkB;AAC7B;AACA;AACA,WAAW,sCAAsC;AACjD,YAAY;AACZ,cAAc,qBAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4CAA4C,cAAc;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,WAAW,gBAAgB;AAC3B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,sCAAsC;AACjD,WAAW,mBAAmB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,QAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,sCAAsC;AACjD,WAAW,mBAAmB;AAC9B,cAAc,qBAAqB;AACnC;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,sCAAsC,yBAAyB;AAC/D,YAAY;AACZ;AACA;AACA,oBAAoB,QAAQ;AAC5B;;;AAGA,YAAY,QAAQ;AACpB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,mBAAmB,mDAAmD;AACtE;AACA;;;AAGA,YAAY,mDAAmD;AAC/D;AACA;AACA;;;AAGA;AACA,WAAW,4CAA4C;AACvD,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA,QAAQ,OAAO,6BAA6B,iBAAiB,gCAAgC;AAC7F;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,QAAQ,OAAO,6BAA6B,iBAAiB,gCAAgC;AAC7F;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;;AAGA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA,0BAA0B,cAAc;AACxC,WAAW,kBAAkB;AAC7B;AACA;AACA,WAAW,qCAAqC;AAChD,YAAY;AACZ,cAAc,qBAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4CAA4C,cAAc;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,WAAW,gBAAgB;AAC3B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,qCAAqC;AAChD,WAAW,mBAAmB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,QAAQ;AACrC;AACA;AACA;AACA,6BAA6B,sDAAsD;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,qCAAqC;AAChD,WAAW,mBAAmB;AAC9B,cAAc,qBAAqB;AACnC;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,sDAAsD;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,sCAAsC,yBAAyB;AAC/D,YAAY;AACZ;AACA;AACA,oBAAoB,QAAQ;AAC5B;;;AAGA,YAAY,QAAQ;AACpB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,sDAAsD;AAC1E;;;AAGA,YAAY,sDAAsD;AAClE;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,mBAAmB,mDAAmD;AACtE;AACA;;;AAGA,YAAY,mDAAmD;AAC/D;AACA;AACA;;;AAGA;AACA,WAAW,4CAA4C;AACvD,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA,QAAQ,OAAO,6BAA6B,iBAAiB,gCAAgC;AAC7F;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,QAAQ,OAAO,6BAA6B,iBAAiB,gCAAgC;AAC7F;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;;AAGA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA,0BAA0B,cAAc;AACxC,WAAW,kBAAkB;AAC7B;AACA;AACA,WAAW,2CAA2C;AACtD,YAAY;AACZ,cAAc,qBAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,WAAW,gBAAgB;AAC3B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,2CAA2C;AACtD,WAAW,mBAAmB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA,6BAA6B,YAAY;AACzC;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,2CAA2C;AACtD,WAAW,mBAAmB;AAC9B,cAAc,qBAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,qBAAqB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA,0BAA0B,cAAc;AACxC,WAAW,kBAAkB;AAC7B;AACA;AACA,WAAW,oDAAoD;AAC/D,YAAY;AACZ,cAAc,qBAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,WAAW,gBAAgB;AAC3B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,oDAAoD;AAC/D,WAAW,mBAAmB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA,6BAA6B,QAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,oDAAoD;AAC/D,WAAW,mBAAmB;AAC9B,cAAc,qBAAqB;AACnC;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,OAAO;AAC3B;;;AAGA,YAAY,OAAO;AACnB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,sCAAsC,yBAAyB;AAC/D,YAAY;AACZ;AACA;AACA,oBAAoB,QAAQ;AAC5B;;;AAGA,YAAY,QAAQ;AACpB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,mBAAmB,4DAA4D;AAC/E;AACA;;;AAGA,YAAY,4DAA4D;AACxE;AACA;AACA;;;AAGA;AACA,WAAW,qDAAqD;AAChE,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,OAAO;AAC3B;;;AAGA,YAAY,OAAO;AACnB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,OAAO;AAC3B;;;AAGA,YAAY,OAAO;AACnB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,OAAO;AAC3B;;;AAGA,YAAY,OAAO;AACnB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,OAAO;AAC3B;;;AAGA,YAAY,OAAO;AACnB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,qBAAqB;AACzC;;;AAGA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,OAAO;AAC3B;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,YAAY;AAChC;AACA;;;AAGA,YAAY,qBAAqB;AACjC;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,OAAO;AAC3B;;;AAGA,YAAY,OAAO;AACnB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;;AAIA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA,0BAA0B,cAAc;AACxC,WAAW,kBAAkB;AAC7B;AACA;AACA,WAAW,sCAAsC;AACjD,YAAY;AACZ,cAAc,qBAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,WAAW,gBAAgB;AAC3B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,sCAAsC;AACjD,WAAW,mBAAmB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,sCAAsC;AACjD,WAAW,mBAAmB;AAC9B,cAAc,qBAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA,0BAA0B,cAAc;AACxC,WAAW,kBAAkB;AAC7B;AACA;AACA,WAAW,+CAA+C;AAC1D,YAAY;AACZ,cAAc,qBAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,WAAW,gBAAgB;AAC3B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,+CAA+C;AAC1D,WAAW,mBAAmB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,eAAe;AAC5C;AACA;AACA;AACA,6BAA6B,eAAe;AAC5C;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,+CAA+C;AAC1D,WAAW,mBAAmB;AAC9B,cAAc,qBAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,eAAe;AACnC;;;AAGA,YAAY,eAAe;AAC3B;AACA;AACA;;;AAGA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,eAAe;AACnC;;;AAGA,YAAY,eAAe;AAC3B;AACA;AACA;;;AAGA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,OAAO;AAC3B;;;AAGA,YAAY,OAAO;AACnB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,OAAO;AAC3B;;;AAGA,YAAY,OAAO;AACnB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,eAAe;AACnC;;;AAGA,YAAY,eAAe;AAC3B;AACA;AACA;;;AAGA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,mBAAmB,uDAAuD;AAC1E;AACA;;;AAGA,YAAY,uDAAuD;AACnE;AACA;AACA;;;AAGA;AACA,WAAW,gDAAgD;AAC3D,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;;AAIA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA,0BAA0B,cAAc;AACxC,WAAW,kBAAkB;AAC7B;AACA;AACA,WAAW,yCAAyC;AACpD,YAAY;AACZ,cAAc,qBAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,WAAW,gBAAgB;AAC3B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,yCAAyC;AACpD,WAAW,mBAAmB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,yCAAyC;AACpD,WAAW,mBAAmB;AAC9B,cAAc,qBAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA,0BAA0B,cAAc;AACxC,WAAW,kBAAkB;AAC7B;AACA;AACA,WAAW,oDAAoD;AAC/D,YAAY;AACZ,cAAc,qBAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,WAAW,gBAAgB;AAC3B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,oDAAoD;AAC/D,WAAW,mBAAmB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,eAAe;AAC5C;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,oDAAoD;AAC/D,WAAW,mBAAmB;AAC9B,cAAc,qBAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,eAAe;AACnC;;;AAGA,YAAY,eAAe;AAC3B;AACA;AACA;;;AAGA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,OAAO;AAC3B;;;AAGA,YAAY,OAAO;AACnB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,OAAO;AAC3B;;;AAGA,YAAY,OAAO;AACnB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,OAAO;AAC3B;;;AAGA,YAAY,OAAO;AACnB;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,mBAAmB,4DAA4D;AAC/E;AACA;;;AAGA,YAAY,4DAA4D;AACxE;AACA;AACA;;;AAGA;AACA,WAAW,qDAAqD;AAChE,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;;;;;;;;;;;;ACjzRA;AACA;AACA;AACA,cAAc,mBAAmB;AACjC;AACA;AACA;AACA;;AAEA,WAAW,mBAAO,CAAC,0EAAiB;AACpC;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA,0BAA0B,cAAc;AACxC,WAAW,kBAAkB;AAC7B;AACA;AACA,WAAW,iCAAiC;AAC5C,YAAY;AACZ,cAAc,qBAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,WAAW,gBAAgB;AAC3B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,iCAAiC;AAC5C,WAAW,mBAAmB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,iCAAiC;AAC5C,WAAW,mBAAmB;AAC9B,cAAc,qBAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,OAAO;AAC3B;;;AAGA,YAAY,OAAO;AACnB;AACA;AACA;;;AAGA;AACA;AACA,YAAY;AACZ;AACA;AACA,oBAAoB,OAAO;AAC3B;;;AAGA,YAAY,OAAO;AACnB;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC9MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iCAAiC,QAAQ;AACzC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mCAAmC,QAAQ;AAC3C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;ACnGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,QAAQ,WAAW;;AAEnB;AACA;AACA;AACA,QAAQ,WAAW;;AAEnB;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,QAAQ,WAAW;;AAEnB;AACA;AACA,QAAQ,UAAU;;AAElB;AACA;;;;;;;;;;;;ACnFA,iBAAiB;;AAEjB;AACA;AACA;;;;;;;;;;;;;ACJa;AACb,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,0C;;;;;;;;;;;;ACfa;AACb,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qC;;;;;;;;;;;;AC9Da;AACb,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gC;;;;;;;;;;;;AC3Ga;AACb,8CAA8C,cAAc;AAC5D,gBAAgB,mBAAO,CAAC,gEAAa;AACrC,kBAAkB,mBAAO,CAAC,gEAAa;AACvC,aAAa,mBAAO,CAAC,sDAAQ;AAC7B;AACA;AACA;AACA,WAAW,YAAY;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qC;;;;;;;;;;;;ACnCa;AACb;AACA;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACD,8CAA8C,cAAc;AAC5D,eAAe,mBAAO,CAAC,0DAAU;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yC;;;;;;;;;;;;ACvEa;AACb;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D,uBAAuB,mBAAO,CAAC,0EAAkB;AACjD;AACA,WAAW,mBAAO,CAAC,8DAAY;AAC/B;AACA,WAAW,mBAAO,CAAC,sDAAQ;AAC3B,kBAAkB,mBAAO,CAAC,gEAAa;AACvC;AACA,aAAa,mBAAO,CAAC,sDAAQ;AAC7B;AACA,qBAAqB,mBAAO,CAAC,sEAAgB;AAC7C;AACA,eAAe,mBAAO,CAAC,0DAAU;AACjC;AACA,oBAAoB,mBAAO,CAAC,0EAAe;AAC3C;AACA,SAAS,mBAAO,CAAC,wEAAiB;AAClC,SAAS,mBAAO,CAAC,gEAAa;AAC9B,SAAS,mBAAO,CAAC,gEAAa;AAC9B;AACA;AACA,iC;;;;;;;;;;;;ACzBa;AACb,8CAA8C,cAAc;AAC5D,qBAAqB,mBAAO,CAAC,kFAAgB;AAC7C;AACA,kBAAkB,mBAAO,CAAC,4EAAa;AACvC;AACA,oBAAoB,mBAAO,CAAC,gFAAe;AAC3C;AACA,iC;;;;;;;;;;;;ACRa;AACb;AACA;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACD,8CAA8C,cAAc;AAC5D,kBAAkB,mBAAO,CAAC,yDAAU;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,wC;;;;;;;;;;;;ACpCa;AACb,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,uC;;;;;;;;;;;;AC5Ca;AACb;AACA;AACA;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACD,8CAA8C,cAAc;AAC5D,kBAAkB,mBAAO,CAAC,yDAAU;AACpC,qBAAqB,mBAAO,CAAC,kFAAgB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,oBAAoB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,qC;;;;;;;;;;;;ACtGa;AACb;AACA;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACD,8CAA8C,cAAc;AAC5D;AACA,kBAAkB,mBAAO,CAAC,yDAAU;AACpC,oBAAoB,mBAAO,CAAC,gFAAe;AAC3C,kBAAkB,mBAAO,CAAC,4EAAa;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,gBAAgB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,uC;;;;;;;;;;;;AC9Ea;AACb,8CAA8C,cAAc;AAC5D,aAAa,mBAAO,CAAC,sDAAQ;AAC7B,qBAAqB,mBAAO,CAAC,sEAAgB;AAC7C,eAAe,mBAAO,CAAC,0DAAU;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gC;;;;;;;;;;;;AChBa;AACb,8CAA8C,cAAc;AAC5D,aAAa,mBAAO,CAAC,sDAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,YAAY;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,YAAY;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,qC;;;;;;;;;;;;AC1Ca;AACb,8CAA8C,cAAc;AAC5D,WAAW,mBAAO,CAAC,sDAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,IAAI;AACnB;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA,YAAY;AACZ;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,qCAAqC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,gC;;;;;;;;;;;;AC9Ma;AACb,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,wC;;;;;;;;;;;;ACpCa;AACb,8CAA8C,cAAc;AAC5D,gBAAgB,mBAAO,CAAC,gEAAa;AACrC,WAAW,mBAAO,CAAC,sDAAQ;AAC3B,aAAa,mBAAO,CAAC,sDAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA,eAAe,OAAO;AACtB,eAAe,YAAY;AAC3B,gBAAgB,KAAK;AACrB;AACA;AACA,iCAAiC,cAAc;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,YAAY;AAC5B;AACA;AACA;AACA,gBAAgB,OAAO;AACvB,gBAAgB,IAAI;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,oBAAoB;AACzE;AACA,gBAAgB,OAAO;AACvB,gBAAgB,IAAI;AACpB;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,kC;;;;;;;;;;;AClJA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;AACD;AACA;AACA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","file":"lightstep-tracer.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"lightstep\"] = factory();\n\telse\n\t\troot[\"lightstep\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/lib.js\");\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n for (var i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","'use strict';\n\n//\n// We store our EE objects in a plain object whose properties are event names.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// `~` to make sure that the built-in object properties are not overridden or\n// used as an attack vector.\n// We also assume that `Object.create(null)` is available when the event name\n// is an ES6 Symbol.\n//\nvar prefix = typeof Object.create !== 'function' ? '~' : false;\n\n/**\n * Representation of a single EventEmitter function.\n *\n * @param {Function} fn Event handler to be called.\n * @param {Mixed} context Context for function execution.\n * @param {Boolean} once Only emit once\n * @api private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Minimal EventEmitter interface that is molded against the Node.js\n * EventEmitter interface.\n *\n * @constructor\n * @api public\n */\nfunction EventEmitter() { /* Nothing to set */ }\n\n/**\n * Holds the assigned EventEmitters by name.\n *\n * @type {Object}\n * @private\n */\nEventEmitter.prototype._events = undefined;\n\n/**\n * Return a list of assigned event listeners.\n *\n * @param {String} event The events that should be listed.\n * @param {Boolean} exists We only need to know if there are listeners.\n * @returns {Array|Boolean}\n * @api public\n */\nEventEmitter.prototype.listeners = function listeners(event, exists) {\n var evt = prefix ? prefix + event : event\n , available = this._events && this._events[evt];\n\n if (exists) return !!available;\n if (!available) return [];\n if (available.fn) return [available.fn];\n\n for (var i = 0, l = available.length, ee = new Array(l); i < l; i++) {\n ee[i] = available[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Emit an event to all registered event listeners.\n *\n * @param {String} event The name of the event.\n * @returns {Boolean} Indication if we've emitted an event.\n * @api public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events || !this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if ('function' === typeof listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Register a new EventListener for the given event.\n *\n * @param {String} event Name of the event.\n * @param {Functon} fn Callback function.\n * @param {Mixed} context The context of the function.\n * @api public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n var listener = new EE(fn, context || this)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events) this._events = prefix ? {} : Object.create(null);\n if (!this._events[evt]) this._events[evt] = listener;\n else {\n if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [\n this._events[evt], listener\n ];\n }\n\n return this;\n};\n\n/**\n * Add an EventListener that's only called once.\n *\n * @param {String} event Name of the event.\n * @param {Function} fn Callback function.\n * @param {Mixed} context The context of the function.\n * @api public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n var listener = new EE(fn, context || this, true)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events) this._events = prefix ? {} : Object.create(null);\n if (!this._events[evt]) this._events[evt] = listener;\n else {\n if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [\n this._events[evt], listener\n ];\n }\n\n return this;\n};\n\n/**\n * Remove event listeners.\n *\n * @param {String} event The event we want to remove.\n * @param {Function} fn The listener that we need to find.\n * @param {Mixed} context Only remove listeners matching this context.\n * @param {Boolean} once Only remove once listeners.\n * @api public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events || !this._events[evt]) return this;\n\n var listeners = this._events[evt]\n , events = [];\n\n if (fn) {\n if (listeners.fn) {\n if (\n listeners.fn !== fn\n || (once && !listeners.once)\n || (context && listeners.context !== context)\n ) {\n events.push(listeners);\n }\n } else {\n for (var i = 0, length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn\n || (once && !listeners[i].once)\n || (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) {\n this._events[evt] = events.length === 1 ? events[0] : events;\n } else {\n delete this._events[evt];\n }\n\n return this;\n};\n\n/**\n * Remove all listeners or only the listeners for the specified event.\n *\n * @param {String} event The event want to remove all listeners for.\n * @api public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n if (!this._events) return this;\n\n if (event) delete this._events[prefix ? prefix + event : event];\n else this._events = prefix ? {} : Object.create(null);\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// This function doesn't apply anymore.\n//\nEventEmitter.prototype.setMaxListeners = function setMaxListeners() {\n return this;\n};\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","var $jscomp={scope:{},getGlobal:function(a){return\"undefined\"!=typeof window&&window===a?a:\"undefined\"!=typeof global?global:a}};$jscomp.global=$jscomp.getGlobal(this);$jscomp.initSymbol=function(){$jscomp.global.Symbol||($jscomp.global.Symbol=$jscomp.Symbol);$jscomp.initSymbol=function(){}};$jscomp.symbolCounter_=0;$jscomp.Symbol=function(a){return\"jscomp_symbol_\"+a+$jscomp.symbolCounter_++};\n$jscomp.initSymbolIterator=function(){$jscomp.initSymbol();$jscomp.global.Symbol.iterator||($jscomp.global.Symbol.iterator=$jscomp.global.Symbol(\"iterator\"));$jscomp.initSymbolIterator=function(){}};$jscomp.makeIterator=function(a){$jscomp.initSymbolIterator();$jscomp.initSymbol();$jscomp.initSymbolIterator();var b=a[Symbol.iterator];if(b)return b.call(a);var c=0;return{next:function(){return cb;)--c in this?this[--a]=this[c]:delete this[a];return this};$jscomp.array.copyWithin$install=function(){$jscomp.array.installHelper_(\"copyWithin\",$jscomp.array.copyWithin)};\n$jscomp.array.fill=function(a,b,c){var d=this.length||0;0>b&&(b=Math.max(0,d+b));if(null==c||c>d)c=d;c=Number(c);0>c&&(c=Math.max(0,d+c));for(b=Number(b||0);b>>0;if(0===a)return 32;var b=0;0===(a&4294901760)&&(a<<=16,b+=16);0===(a&4278190080)&&(a<<=8,b+=8);0===(a&4026531840)&&(a<<=4,b+=4);0===(a&3221225472)&&(a<<=2,b+=2);0===(a&2147483648)&&b++;return b};$jscomp.math.imul=function(a,b){a=Number(a);b=Number(b);var c=a&65535,d=b&65535;return c*d+((a>>>16&65535)*d+c*(b>>>16&65535)<<16>>>0)|0};$jscomp.math.sign=function(a){a=Number(a);return 0===a||isNaN(a)?a:0a&&-.25a&&-.25a?-b:b};$jscomp.math.acosh=function(a){a=Number(a);return Math.log(a+Math.sqrt(a*a-1))};$jscomp.math.asinh=function(a){a=Number(a);if(0===a)return a;var b=Math.log(Math.abs(a)+Math.sqrt(a*a+1));return 0>a?-b:b};\n$jscomp.math.atanh=function(a){a=Number(a);return($jscomp.math.log1p(a)-$jscomp.math.log1p(-a))/2};$jscomp.math.hypot=function(a,b,c){a=Number(a);b=Number(b);var d,e,f,g=Math.max(Math.abs(a),Math.abs(b));for(d=2;dg){a/=g;b/=g;f=a*a+b*b;for(d=2;da?-b:b};$jscomp.math.cbrt=function(a){if(0===a)return a;a=Number(a);var b=Math.pow(Math.abs(a),1/3);return 0>a?-b:b};$jscomp.number=$jscomp.number||{};$jscomp.number.isFinite=function(a){return\"number\"!==typeof a?!1:!isNaN(a)&&Infinity!==a&&-Infinity!==a};$jscomp.number.isInteger=function(a){return $jscomp.number.isFinite(a)?a===Math.floor(a):!1};\n$jscomp.number.isNaN=function(a){return\"number\"===typeof a&&isNaN(a)};$jscomp.number.isSafeInteger=function(a){return $jscomp.number.isInteger(a)&&Math.abs(a)<=$jscomp.number.MAX_SAFE_INTEGER};$jscomp.number.EPSILON=function(){return Math.pow(2,-52)}();$jscomp.number.MAX_SAFE_INTEGER=function(){return 9007199254740991}();$jscomp.number.MIN_SAFE_INTEGER=function(){return-9007199254740991}();$jscomp.object=$jscomp.object||{};\n$jscomp.object.assign=function(a,b){for(var c=1;cd||1114111=d?b+=String.fromCharCode(d):(d-=65536,b+=String.fromCharCode(d>>>10&1023|55296),b+=String.fromCharCode(d&1023|56320))}return b};\n$jscomp.string.repeat=function(a){var b=$jscomp.checkStringArgs(this,null,\"repeat\");if(0>a||1342177279>>=1)b+=b;return c};$jscomp.string.repeat$install=function(){String.prototype.repeat||(String.prototype.repeat=$jscomp.string.repeat)};\n$jscomp.string.codePointAt=function(a){var b=$jscomp.checkStringArgs(this,null,\"codePointAt\"),c=b.length;a=Number(a)||0;if(0<=a&&ad||56319a||57343=e};\n$jscomp.string.startsWith$install=function(){String.prototype.startsWith||(String.prototype.startsWith=$jscomp.string.startsWith)};$jscomp.string.endsWith=function(a,b){var c=$jscomp.checkStringArgs(this,a,\"endsWith\");a+=\"\";void 0===b&&(b=c.length);for(var d=Math.max(0,Math.min(b|0,c.length)),e=a.length;0=e};$jscomp.string.endsWith$install=function(){String.prototype.endsWith||(String.prototype.endsWith=$jscomp.string.endsWith)};\nvar COMPILED=!0,goog=goog||{};goog.global=this;goog.isDef=function(a){return void 0!==a};goog.exportPath_=function(a,b,c){a=a.split(\".\");c=c||goog.global;a[0]in c||!c.execScript||c.execScript(\"var \"+a[0]);for(var d;a.length&&(d=a.shift());)!a.length&&goog.isDef(b)?c[d]=b:c=c[d]?c[d]:c[d]={}};\ngoog.define=function(a,b){var c=b;COMPILED||(goog.global.CLOSURE_UNCOMPILED_DEFINES&&Object.prototype.hasOwnProperty.call(goog.global.CLOSURE_UNCOMPILED_DEFINES,a)?c=goog.global.CLOSURE_UNCOMPILED_DEFINES[a]:goog.global.CLOSURE_DEFINES&&Object.prototype.hasOwnProperty.call(goog.global.CLOSURE_DEFINES,a)&&(c=goog.global.CLOSURE_DEFINES[a]));goog.exportPath_(a,c)};goog.DEBUG=!0;goog.LOCALE=\"en\";goog.TRUSTED_SITE=!0;goog.STRICT_MODE_COMPATIBLE=!1;goog.DISALLOW_TEST_ONLY_CODE=COMPILED&&!goog.DEBUG;\ngoog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING=!1;goog.provide=function(a){if(!COMPILED&&goog.isProvided_(a))throw Error('Namespace \"'+a+'\" already declared.');goog.constructNamespace_(a)};goog.constructNamespace_=function(a,b){if(!COMPILED){delete goog.implicitNamespaces_[a];for(var c=a;(c=c.substring(0,c.lastIndexOf(\".\")))&&!goog.getObjectByName(c);)goog.implicitNamespaces_[c]=!0}goog.exportPath_(a,b)};goog.VALID_MODULE_RE_=/^[a-zA-Z_$][a-zA-Z0-9._$]*$/;\ngoog.module=function(a){if(!goog.isString(a)||!a||-1==a.search(goog.VALID_MODULE_RE_))throw Error(\"Invalid module identifier\");if(!goog.isInModuleLoader_())throw Error(\"Module \"+a+\" has been loaded incorrectly.\");if(goog.moduleLoaderState_.moduleName)throw Error(\"goog.module may only be called once per module.\");goog.moduleLoaderState_.moduleName=a;if(!COMPILED){if(goog.isProvided_(a))throw Error('Namespace \"'+a+'\" already declared.');delete goog.implicitNamespaces_[a]}};goog.module.get=function(a){return goog.module.getInternal_(a)};\ngoog.module.getInternal_=function(a){if(!COMPILED)return goog.isProvided_(a)?a in goog.loadedModules_?goog.loadedModules_[a]:goog.getObjectByName(a):null};goog.moduleLoaderState_=null;goog.isInModuleLoader_=function(){return null!=goog.moduleLoaderState_};\ngoog.module.declareLegacyNamespace=function(){if(!COMPILED&&!goog.isInModuleLoader_())throw Error(\"goog.module.declareLegacyNamespace must be called from within a goog.module\");if(!COMPILED&&!goog.moduleLoaderState_.moduleName)throw Error(\"goog.module must be called prior to goog.module.declareLegacyNamespace.\");goog.moduleLoaderState_.declareLegacyNamespace=!0};\ngoog.setTestOnly=function(a){if(goog.DISALLOW_TEST_ONLY_CODE)throw a=a||\"\",Error(\"Importing test-only code into non-debug environment\"+(a?\": \"+a:\".\"));};goog.forwardDeclare=function(a){};COMPILED||(goog.isProvided_=function(a){return a in goog.loadedModules_||!goog.implicitNamespaces_[a]&&goog.isDefAndNotNull(goog.getObjectByName(a))},goog.implicitNamespaces_={\"goog.module\":!0});\ngoog.getObjectByName=function(a,b){for(var c=a.split(\".\"),d=b||goog.global,e;e=c.shift();)if(goog.isDefAndNotNull(d[e]))d=d[e];else return null;return d};goog.globalize=function(a,b){var c=b||goog.global,d;for(d in a)c[d]=a[d]};goog.addDependency=function(a,b,c,d){if(goog.DEPENDENCIES_ENABLED){var e;a=a.replace(/\\\\/g,\"/\");for(var f=goog.dependencies_,g=0;e=b[g];g++)f.nameToPath[e]=a,f.pathIsModule[a]=!!d;for(d=0;b=c[d];d++)a in f.requires||(f.requires[a]={}),f.requires[a][b]=!0}};\ngoog.ENABLE_DEBUG_LOADER=!0;goog.logToConsole_=function(a){goog.global.console&&goog.global.console.error(a)};goog.require=function(a){if(!COMPILED){goog.ENABLE_DEBUG_LOADER&&goog.IS_OLD_IE_&&goog.maybeProcessDeferredDep_(a);if(goog.isProvided_(a))return goog.isInModuleLoader_()?goog.module.getInternal_(a):null;if(goog.ENABLE_DEBUG_LOADER){var b=goog.getPathFromDeps_(a);if(b)return goog.writeScripts_(b),null}a=\"goog.require could not find: \"+a;goog.logToConsole_(a);throw Error(a);}};\ngoog.basePath=\"\";goog.nullFunction=function(){};goog.abstractMethod=function(){throw Error(\"unimplemented abstract method\");};goog.addSingletonGetter=function(a){a.getInstance=function(){if(a.instance_)return a.instance_;goog.DEBUG&&(goog.instantiatedSingletons_[goog.instantiatedSingletons_.length]=a);return a.instance_=new a}};goog.instantiatedSingletons_=[];goog.LOAD_MODULE_USING_EVAL=!0;goog.SEAL_MODULE_EXPORTS=goog.DEBUG;goog.loadedModules_={};goog.DEPENDENCIES_ENABLED=!COMPILED&&goog.ENABLE_DEBUG_LOADER;\ngoog.DEPENDENCIES_ENABLED&&(goog.dependencies_={pathIsModule:{},nameToPath:{},requires:{},visited:{},written:{},deferred:{}},goog.inHtmlDocument_=function(){var a=goog.global.document;return null!=a&&\"write\"in a},goog.findBasePath_=function(){if(goog.isDef(goog.global.CLOSURE_BASE_PATH))goog.basePath=goog.global.CLOSURE_BASE_PATH;else if(goog.inHtmlDocument_())for(var a=goog.global.document.getElementsByTagName(\"SCRIPT\"),b=a.length-1;0<=b;--b){var c=a[b].src,d=c.lastIndexOf(\"?\"),d=-1==d?c.length:\nd;if(\"base.js\"==c.substr(d-7,7)){goog.basePath=c.substr(0,d-7);break}}},goog.importScript_=function(a,b){(goog.global.CLOSURE_IMPORT_SCRIPT||goog.writeScriptTag_)(a,b)&&(goog.dependencies_.written[a]=!0)},goog.IS_OLD_IE_=!(goog.global.atob||!goog.global.document||!goog.global.document.all),goog.importModule_=function(a){goog.importScript_(\"\",'goog.retrieveAndExecModule_(\"'+a+'\");')&&(goog.dependencies_.written[a]=!0)},goog.queuedModules_=[],goog.wrapModule_=function(a,b){return goog.LOAD_MODULE_USING_EVAL&&\ngoog.isDef(goog.global.JSON)?\"goog.loadModule(\"+goog.global.JSON.stringify(b+\"\\n//# sourceURL=\"+a+\"\\n\")+\");\":'goog.loadModule(function(exports) {\"use strict\";'+b+\"\\n;return exports});\\n//# sourceURL=\"+a+\"\\n\"},goog.loadQueuedModules_=function(){var a=goog.queuedModules_.length;if(0\\x3c/script>')},goog.appendScriptSrcNode_=function(a){var b=goog.global.document,\nc=b.createElement(\"script\");c.type=\"text/javascript\";c.src=a;c.defer=!1;c.async=!1;b.head.appendChild(c)},goog.writeScriptTag_=function(a,b){if(goog.inHtmlDocument_()){var c=goog.global.document;if(!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING&&\"complete\"==c.readyState){if(/\\bdeps.js$/.test(a))return!1;throw Error('Cannot write \"'+a+'\" after document load');}var d=goog.IS_OLD_IE_;void 0===b?d?(d=\" onreadystatechange='goog.onScriptLoad_(this, \"+ ++goog.lastNonModuleScriptIndex_+\")' \",c.write('\n//\n// Note: relies on the global hostScriptElement variable defined above.\n//\nfunction parseScriptElementOptions(opts, browserOpts) {\n if (!hostScriptElement) {\n return;\n }\n\n let { dataset } = hostScriptElement;\n\n let accessToken = dataset.access_token;\n if (typeof accessToken === 'string' && accessToken.length > 0) {\n opts.access_token = accessToken;\n }\n\n let componentName = dataset.component_name;\n if (typeof componentName === 'string' && componentName.length > 0) {\n opts.component_name = componentName;\n }\n\n let collectorHost = dataset.collector_host;\n if (typeof collectorHost === 'string' && collectorHost.length > 0) {\n opts.collector_host = collectorHost;\n }\n let collectorPort = dataset.collector_port;\n if (collectorPort) {\n opts.collector_port = parseInt(collectorPort, 10);\n }\n let collectorPath = dataset.collector_path;\n if (typeof collectorPath === 'string' && collectorPath.length > 0) {\n opts.collector_path = collectorPath;\n }\n let collectorEncryption = dataset.collector_encryption;\n if (collectorEncryption) {\n opts.collector_encryption = collectorEncryption;\n }\n\n let { enable } = dataset;\n if (typeof enable === 'string') {\n if (enable === 'true') {\n opts.enable = true;\n } else if (enable === 'false') {\n opts.enable = false;\n }\n }\n let { verbosity } = dataset;\n if (typeof verbosity === 'string') {\n opts.verbosity = parseInt(verbosity, 10);\n }\n\n let init = dataset.init_global_tracer;\n if (typeof init === 'string') {\n if (init === 'true') {\n browserOpts.init_global_tracer = true;\n } else if (init === 'false') {\n browserOpts.init_global_tracer = false;\n }\n }\n\n // NOTE: this is a little inelegant as this is hard-coding support for a\n // \"plug-in\" option.\n if (typeof dataset.xhr_instrumentation === 'string' && dataset.xhr_instrumentation === 'true') {\n opts.xhr_instrumentation = true;\n }\n\n if (typeof dataset.instrument_page_load === 'string' && dataset.instrument_page_load === 'true') {\n opts.instrument_page_load = true;\n }\n}\n\nfunction parseScriptElementOptionsNoop(opts, browserOpts) {\n\n}\n\n// Parses options out of the current URL query string. The query parameters use\n// the 'lightstep_' prefix to reduce the chance of collision with\n// application-specific query parameters.\n//\n// This mechanism is particularly useful for debugging purposes as it does not\n// require any code or configuration changes.\n//\nfunction parseURLQueryOptions(opts) {\n let params = urlQueryParameters();\n if (params.lightstep_verbosity) {\n try {\n opts.verbosity = parseInt(params.lightstep_verbosity, 10);\n } catch (_ignored) { /* Ignored */ }\n }\n if (params.lightstep_log_to_console) {\n opts.log_to_console = true;\n }\n}\n\nfunction parseURLQueryOptionsNoop(opts) {\n return {};\n}\n\nmodule.exports = {\n parseScriptElementOptions : util.isBrowser() ? parseScriptElementOptions : parseScriptElementOptionsNoop,\n parseURLQueryOptions : util.isBrowser() ? parseURLQueryOptions : parseURLQueryOptionsNoop,\n};\n","const optionsParser = require('./options_parser.js');\nconst util = require('./util');\n\nconst kRuntimeGUIDCookiePrefix = 'lightstep_guid';\nconst kSessionIDCookieKey = 'lightstep_session_id';\nconst kCookieTimeToLiveSeconds = 7 * 24 * 60 * 60;\n\nlet nowMicrosImp = (function () {\n // Is a hi-res timer available?\n if (window.performance\n && window.performance.now\n && window.performance.timing\n && window.performance.timing.navigationStart) {\n let start = performance.timing.navigationStart;\n return function () {\n return Math.floor((start + performance.now()) * 1000.0);\n };\n }\n // The low-res timer is the best we can do\n return function () {\n return Date.now() * 1000.0;\n };\n}());\n\nclass PlatformBrowser {\n name() {\n return 'browser';\n }\n\n nowMicros() {\n return nowMicrosImp();\n }\n\n // Return the GUID to use for the runtime. The intention is to reuse the\n // GUID so that logically a single browser session looks like a single\n // runtime.\n runtimeGUID(groupName) {\n // Account for the groupName in the same that multiple apps or services\n // are running on the same domain (and should not share the same\n // runtime GUID).\n let cookieKey = encodeURIComponent(`${kRuntimeGUIDCookiePrefix}/${groupName}`);\n let uuid = util.cookie(cookieKey) || this._generateLongUUID();\n util.cookie(cookieKey, uuid, kCookieTimeToLiveSeconds, '/');\n\n // Also create a session ID as well to give the server more information\n // to coordinate with.\n let sessionID = util.cookie(kSessionIDCookieKey) || this._generateLongUUID();\n util.cookie(kSessionIDCookieKey, sessionID, kCookieTimeToLiveSeconds, '/');\n\n return uuid;\n }\n\n generateUUID() {\n return this._generateLongUUID();\n }\n\n _generateLongUUID() {\n /* eslint-disable no-bitwise */\n let p0 = `00000000${Math.abs((Math.random() * 0xFFFFFFFF) | 0).toString(16)}`.substr(-8);\n let p1 = `00000000${Math.abs((Math.random() * 0xFFFFFFFF) | 0).toString(16)}`.substr(-8);\n return `${p0}${p1}`;\n /* eslint-enable no-bitwise */\n }\n\n onBeforeExit(...args) {\n // This will result in the final report not being made in non-browser\n // environments like React Native. Flush should be called explicitly in\n // those environments\n if (util.isBrowser()) {\n window.addEventListener('beforeunload', ...args);\n }\n }\n\n plugins(opts) {\n return [\n require('../../../plugins/instrument_xhr'),\n require('../../../plugins/instrument_fetch'),\n require('../../../plugins/instrument_document_load'),\n ];\n }\n\n options(imp) {\n let tracerOpts = {};\n let browserOpts = {};\n optionsParser.parseScriptElementOptions(tracerOpts, browserOpts);\n optionsParser.parseURLQueryOptions(tracerOpts, browserOpts);\n return tracerOpts;\n }\n\n static initLibrary(lib) {\n let tracerOpts = {};\n let browserOpts = {};\n optionsParser.parseScriptElementOptions(tracerOpts, browserOpts);\n\n if (browserOpts.init_global_tracer) {\n PlatformBrowser.initGlobalTracer(lib, tracerOpts);\n }\n }\n\n static initGlobalTracer(lib, opts) {\n if (typeof window !== 'object') {\n return;\n }\n if (typeof window.opentracing !== 'object') {\n return;\n }\n opentracing.initGlobalTracer(new lib.Tracer(opts)); // eslint-disable-line no-undef\n }\n\n tracerTags() {\n return {\n 'lightstep.tracer_platform' : 'browser',\n };\n }\n\n // There's no way to truly \"fatal\" on the browser; the best approximation\n // is an Error exception.\n fatal(message) {\n throw new Error(message);\n }\n\n localStoreGet(key) {\n try {\n if (!window.sessionStorage) {\n return null;\n }\n } catch (_ignored) {\n // Accessing `sessionStorage` or `localStorage` in an `